sip_ua 1.1.0 copy "sip_ua: ^1.1.0" to clipboard
sip_ua: ^1.1.0 copied to clipboard

A SIP UA stack for Flutter/Dart, based on flutter-webrtc, support iOS/Android/Destkop/Web.

dart-sip-ua #

Financial Contributors on Open Collective pub package slack

A dart-lang version of the SIP UA stack, ported from JsSIP.

Overview #

  • Use pure dart-lang
  • SIP over WebSocket && TCP (use real SIP in your flutter mobile, desktop, web apps)
  • Audio/video calls (flutter-webrtc) and instant messaging
  • Support with standard SIP servers such as OpenSIPS, Kamailio, Asterisk, 3CX and FreeSWITCH.
  • Support RFC2833 or INFO to send DTMF.

Currently supported platforms #

  • ✅ iOS
  • ✅ Android
  • ✅ Web
  • ✅ macOS
  • ✅ Windows
  • ✅ Linux
  • ❌ Fuchsia

Install #

Android #

  • Proguard rules:
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }

-keep class com.cloudwebrtc.webrtc.** {*;}
-keep class org.webrtc.** {*;}

Quickstart #

Run example:

Register with SIP server:

  • Asterisk
  • FreeSWITCH
  • OpenSIPS
  • 3CX
  • Kamailio
  • or add your server example.

FAQ's OR ISSUES #

expand

Server not configured for DTLS/SRTP #

WEBRTC_SET_REMOTE_DESCRIPTION_ERROR: Failed to set remote offer sdp: Called with SDP without DTLS fingerprint.

Your server is not sending a DTLS fingerprint inside the SDP when inviting the sip_ua client to start a call.

WebRTC uses encryption by Default, all WebRTC communications (audio, video, and data) are encrypted using DTLS and SRTP, ensuring secure communication. Your PBX must be configured to use DTLS/SRTP when calling sip_ua.

Why isn't there a UDP connection option? #

This package uses a WS or TCP connection for the signalling processs to initiate or terminate a session (sip messages). Once the session is connected WebRTC transmits the actual media (audio/video) over UDP.

If anyone actually still wants to use UDP for the signalling process, feel free to submit a PR with the large amount of work needed to set it up, packet order checking, error checking, reliability timeouts, flow control, security etc etc.

SIP/2.0 488 Not acceptable here #

The codecs on your PBX server don't match the codecs used by WebRTC

  • opus (payload type 111, 48kHz, 2 channels)
  • red (payload type 63, 48kHz, 2 channels)
  • G722 (payload type 9, 8kHz, 1 channel)
  • ILBC (payload type 102, 8kHz, 1 channel)
  • PCMU (payload type 0, 8kHz, 1 channel)
  • PCMA (payload type 8, 8kHz, 1 channel)
  • CN (payload type 13, 8kHz, 1 channel)
  • telephone-event (payload type 110, 48kHz, 1 channel for wideband, 8000Hz, 1 channel for narrowband)

NOTE #

Thanks to the original authors of JsSIP for providing the JS version, which makes it possible to port the dart-lang.

Sponsors #

The first version was sponsored by Suretec Systems Ltd. T/A SureVoIP.

Contributing #

The project is inseparable from the contributors of the community.

License #

dart-sip-ua is released under the MIT license.

131
likes
130
points
1.95k
downloads

Publisher

verified publisherflutter-webrtc.org

Weekly Downloads

A SIP UA stack for Flutter/Dart, based on flutter-webrtc, support iOS/Android/Destkop/Web.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

bloc, collection, crypto, flutter_webrtc, intl, logger, path, random_string, sdp_transform, text, uuid, web

More

Packages that depend on sip_ua