sip_ua 1.1.0
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 #
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:
- dart-sip-ua-example
- or add your 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.
- SureVoIP - Sponsor
- CloudWebRTC - Original Author
- Robert Sutton - Contributor
- Gavin Henry - Contributor
- Perondas - Contributor
- Mikael Wills - Contributor
License #
dart-sip-ua is released under the MIT license.