@@ -80,7 +80,7 @@ class SIPUAHelper extends EventManager {
8080 return false ;
8181 }
8282
83- Call findCall (String id){
83+ Call findCall (String id) {
8484 return _calls[id];
8585 }
8686
@@ -155,18 +155,29 @@ class SIPUAHelper extends EventManager {
155155 .addAllEventHandlers (_options ()['eventHandlers' ] as EventManager );
156156 }
157157 _calls[event.id] =
158- Call (event.id, session, CallStateEnum .CALL_INITIATION );
158+ Call (event.id, session, CallStateEnum .CALL_INITIATION );
159159 _notifyCallStateListeners (
160160 event, CallState (CallStateEnum .CALL_INITIATION ));
161161 });
162162
163+ this ._ua.on (EventNewMessage (), (EventNewMessage event) {
164+ logger.debug ('newMessage => ' + event.toString ());
165+ //Only notify incoming message to listener
166+ if (event.message.direction == 'incoming' ) {
167+ SIPMessageRequest message = new SIPMessageRequest (
168+ event.message, event.originator, event.request);
169+ _notifyNewMessageListeners (message);
170+ }
171+ });
172+
163173 _ua.start ();
164174 } catch (event, s) {
165175 logger.error (event.toString (), null , s);
166176 }
167177 }
168-
169- Map <String , Object > buildCallOptions ([bool voiceonly = false ]) => _options (voiceonly);
178+
179+ Map <String , Object > buildCallOptions ([bool voiceonly = false ]) =>
180+ _options (voiceonly);
170181
171182 Map <String , Object > _options ([bool voiceonly = false ]) {
172183 // Register callbacks to desired call events
@@ -249,19 +260,7 @@ class SIPUAHelper extends EventManager {
249260
250261 var _defaultOptions = {
251262 'eventHandlers' : eventHandlers,
252- 'pcConfig' : {
253- 'iceServers' : [
254- {'url' : 'stun:stun.l.google.com:19302' },
255- /*
256- * turn server configuration example.
257- {
258- 'url': 'turn:123.45.67.89:3478',
259- 'username': 'change_to_real_user',
260- 'credential': 'change_to_real_secret'
261- },
262- */
263- ]
264- },
263+ 'pcConfig' : {'iceServers' : _uaSettings.iceServers},
265264 'mediaConstraints' : {
266265 'audio' : true ,
267266 'video' : voiceonly
@@ -343,6 +342,12 @@ class SIPUAHelper extends EventManager {
343342 listener.callStateChanged (call, state);
344343 });
345344 }
345+
346+ void _notifyNewMessageListeners (SIPMessageRequest msg) {
347+ _sipUaHelperListeners.forEach ((listener) {
348+ listener.onNewMessage (msg);
349+ });
350+ }
346351}
347352
348353enum CallStateEnum {
@@ -490,10 +495,19 @@ class TransportState {
490495 TransportState (this .state, {this .cause});
491496}
492497
498+ class SIPMessageRequest {
499+ dynamic request;
500+ String originator;
501+ Message message;
502+ SIPMessageRequest (this .message, this .originator, this .request);
503+ }
504+
493505abstract class SipUaHelperListener {
494506 void transportStateChanged (TransportState state);
495507 void registrationStateChanged (RegistrationState state);
496508 void callStateChanged (Call call, CallState state);
509+ //For SIP new messaga coming
510+ void onNewMessage (SIPMessageRequest msg);
497511}
498512
499513class UaSettings {
@@ -505,4 +519,14 @@ class UaSettings {
505519 String authorizationUser;
506520 String password;
507521 String displayName;
522+
523+ List <Map <String , String >> iceServers = [
524+ {'url' : 'stun:stun.l.google.com:19302' },
525+ // turn server configuration example.
526+ // {
527+ // 'url': 'turn:123.45.67.89:3478',
528+ // 'username': 'change_to_real_user',
529+ // 'credential': 'change_to_real_secret'
530+ // },
531+ ];
508532}
0 commit comments