siprix_voip_sdk 1.0.10 copy "siprix_voip_sdk: ^1.0.10" to clipboard
siprix_voip_sdk: ^1.0.10 copied to clipboard

Siprix VoIP SDK plugin for embedding voice-over-IP (VoIP) audio/video calls based on SIP/RTP protocols into Flutter applications.

siprix_voip_sdk #

Siprix VoIP SDK plugin for embedding voice-over-IP (VoIP) audio/video calls based on SIP/RTP protocols into Flutter applications. It contains native SIP client implementations for 5 platforms: Android, iOS, MacOS, Windows, Linux and unified API for all them.

Plugin implements ready to use SIP VoIP Client with ability to:

  • Add multiple SIP accounts
  • Send/receive multiple calls (Audio and Video)
  • Manage calls with: hold, mute microphone/camera, play sound to call from file, send/receive DTMF,...
  • Join calls to conference, blind and attended transfer
  • Secure SIP signaling (using TLS) and call media (using SRTP)
  • Detect network changes and automatically update registration/switch and restore call(s) media
  • Echo cancelation and noise suppression
  • Create BLF/Presence subscriptions and monitor state of remote extension(s)
  • Ready to use models for fast and easy UI creating
  • Embedded CallKit support in iOS version of plugin

Usage #

Add dependency in pubspec.yaml #

dependencies:
  siprix_voip_sdk: ^1.0.3
  provider: ^6.1.1
copied to clipboard

Add imports #

import 'package:provider/provider.dart';

import 'package:siprix_voip_sdk/accounts_model.dart';
import 'package:siprix_voip_sdk/network_model.dart';
import 'package:siprix_voip_sdk/calls_model.dart';
import 'package:siprix_voip_sdk/cdrs_model.dart';
import 'package:siprix_voip_sdk/devices_model.dart';
import 'package:siprix_voip_sdk/logs_model.dart';
import 'package:siprix_voip_sdk/siprix_voip_sdk.dart';
copied to clipboard

Prepare models #

void main() async {
  AccountsModel accountsModel = AccountsModel();
  CallsModel callsModel = CallsModel(accountsModel);
  runApp(
    MultiProvider(providers:[
      ChangeNotifierProvider(create: (context) => accountsModel),
      ChangeNotifierProvider(create: (context) => callsModel),
    ],
    child: const MyApp(),
  ));
}
copied to clipboard

Init SDK #

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    _initializeSiprix();
  }

  void _initializeSiprix([LogsModel? logsModel]) async {
    InitData iniData = InitData();
    iniData.license  = "...license-credentials...";
    iniData.logLevelFile = LogLevel.info;
    //iniData.enableCallKit = true; <- uncomment if required
    SiprixVoipSdk().initialize(iniData, logsModel);
  }
copied to clipboard

Build UI, add accounts/calls #

Widget buildBody() {
    final accounts = context.watch<AccountsModel>();
    final calls = context.watch<CallsModel>();
    return Column(children: [
      ListView.separated(shrinkWrap: true,
        itemCount: accounts.length,
        separatorBuilder: (BuildContext context, int index) => const Divider(height: 1),
        itemBuilder: (BuildContext context, int index) {
          AccountModel acc = accounts[index];
          return
            ListTile(title: Text(acc.uri, style: Theme.of(context).textTheme.titleSmall),
                subtitle: Text(acc.regText),
                tileColor: Colors.blue
            );
        },
      ),
      ElevatedButton(onPressed: _addAccount, child: const Icon(Icons.add_card)),
      ElevatedButton(onPressed: _addCall, child: const Icon(Icons.add_call)),
      ...
}

void _addAccount() {
    AccountModel account = AccountModel();
    account.sipServer = "192.168.0.122";
    account.sipExtension = "1016";
    account.sipPassword = "12345";
    account.expireTime = 300;
    context.read<AccountsModel>().addAccount(account)
      .catchError(showSnackBar);
}


void _addCall() {
    final accounts = context.read<AccountsModel>();
    if(accounts.selAccountId==null) return;

    CallDestination dest = CallDestination("1012", accounts.selAccountId!, false);

    context.read<CallsModel>().invite(dest)
      .catchError(showSnackBar);
}
  
  
copied to clipboard

More detailed integration guide

Please contact support@siprix-voip.com if you have technical questions.

Limitations #

Siprix doesn't provide VoIP services, but in the same time doesn't have backend limitations and can connect to any SIP (Server) PBX or make direct calls between clients. For testing app you need an account(s) credentials from a SIP service provider(s). Some features may be not supported by all SIP providers.

Attached Siprix SDK works in trial mode and has limited call duration - it drops call after 60sec. Upgrading to a paid license removes this restriction, enabling calls of any length.

Please contact sales@siprix-voip.com for more details.

More resources #

Product web site: siprix-voip.com

Manual: docs.siprix-voip.com

Screenshots #

5
likes
0
points
322
downloads

Publisher

verified publishersiprix-voip.com

Weekly Downloads

2024.10.07 - 2025.04.21

Siprix VoIP SDK plugin for embedding voice-over-IP (VoIP) audio/video calls based on SIP/RTP protocols into Flutter applications.

Homepage
Repository (GitHub)
View/report issues

Topics

#sip #voip #call

Documentation

Documentation

License

unknown (license)

Dependencies

flutter, intl, siprix_voip_sdk_android, siprix_voip_sdk_ios, siprix_voip_sdk_linux, siprix_voip_sdk_macos, siprix_voip_sdk_platform_interface, siprix_voip_sdk_windows

More

Packages that depend on siprix_voip_sdk