2016-03-31 9 views
0

Ich benutze sipml5 mit Freeswitch und ich muss erkennen, wenn Anruf automatisch beantwortet werden soll. Der einzige Teil, wo ich bekommen kann, ist es SIP-Invite-Nachricht:Wie lese ich Call-Info Header von Invite Nachricht mit sipml5

recv=INVITE sip:[email protected]:50598;transport=ws;intercom=true SIP/2.0 
Via: SIP/2.0/WSS IP;branch=z9hG4bKd451.8dc49598935d4ebdf937de014cf1d922.0 
From: "Device QuickCall"<sip:[email protected]>;tag=68rtr6c12v9em 
To: <sip:[email protected]:50598;transport=ws> 
Contact: <sip:[email protected]:11000> 
Call-ID: dcd8fb4d69f0850840a743c152f4f7358a21-quickcall 
CSeq: 89383073 INVITE 
Content-Type: application/sdp 
Content-Length: 882 
Record-Route: <sip:IP;transport=ws;r2=on;lr=on;ftag=68rtr6c12v9em> 
Record-Route: <sip:IP;r2=on;lr=on;ftag=68rtr6c12v9em> 
Via: SIP/2.0/UDP 37.157.194.240:11000;rport=11000;received=IP;branch=z9hG4bKSNmDFvya0ceaQ 
Max-Forwards: 50 
Call-Info: answer-after=0;answer-after=0 
User-Agent: 2600hz 
Allow: INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY,PUBLISH,SUBSCRIBE 
Supported: path,replaces 
Allow-Events: talk,hold,conference,presence,as-feature-event,dialog,line-seize,call-info,sla,include-session-description,presence.winfo,message-summary,refer 
Content-Disposition: session 
Remote-Party-ID: privacy=off;party=calling;screen=yes;privacy=off 

v=0 
o=FreeSWITCH 1459415113 1459415114 IN IP4 37.157.194.240 
s=FreeSWITCH 
c=IN IP4 37.157.194.240 
t=0 0 
a=msid-semantic: WMS W2YlkINCSBwtCldHnD3FYpIuFQW9iaH5 
m=audio 23162 RTP/SAVPF 0 101 13 
a=rtpmap:0 PCMU/8000 
a=rtpmap:101 telephone-event/8000 
a=fingerprint:sha-256 03:8E:7D:14:E6:88:F1:75:55:70:40:E5:7F:07:9F:9F:C5:38:43:59:FB:EF:4D:70:0C:C7:F7:24:FC:7B:54:AB 
a=rtcp-mux 
a=rtcp:23162 IN IP4 37.157.194.240 
a=ssrc:1258116307 cname:2vgd3UFMl25Od8lq 
a=ssrc:1258116307 msid:W2YlkINCSBwtCldHnD3FYpIuFQW9iaH5 a0 
a=ssrc:1258116307 mslabel:W2YlkINCSBwtCldHnD3FYpIuFQW9iaH5 
a=ssrc:1258116307 label:W2YlkINCSBwtCldHnD3FYpIuFQW9iaH5a0 
a=ice-ufrag:CfWquvL0by0kyxfq 
a=ice-pwd:SmtM6ZoiRjWVi8cKdZ1ykDom 
a=candidate:8660741513 1 udp 659136 IP 23162 typ host generation 0 
a=candidate:8660741513 2 udp 659136 IP 23162 typ host generation 0 
a=ptime:20 

Mein VoIP-Telefon erkennt es von Call-Info-Header:

Call-Info: answer-after=0;answer-after=0 

Gibt es eine Möglichkeit, wie man Zugang Call-Info-Header mit sipml5?

Antwort

1

Ich brauchte auch einen SIP-Header-Wert für etwas ähnliches in einem Projekt mit SIPml5. Was ich getan habe, ist ein bisschen ein Hack, aber es funktioniert: Alle SIP-Signalisierungsnachrichten werden in der Browser-Konsole protokolliert (wenn die Debug-Ebene auf "Info" gesetzt ist).

Also habe ich gefunden und geändert, dass Debug-Funktion in SIPml5-Bibliothek alle eingehende SIP-Nachrichten (unabhängig von der Debug-Ebene) zu empfangen. Sie können die Funktion finden, indem Sie nach diesem suchen: function tsk_utils_log_info.

Die neue Funktion wie folgt aussieht:

function tsk_utils_log_info(s_msg){ 
     if (s_msg.indexOf('recv=') === 0) 
     { 
      CatchWebrtcSignaling(s_msg); 
     } 

     common_public.PutToDebugLog(3, 'WRTC, EVENT, ' + s_msg); 
     if (window.console && (__i_debug_level >= 4)) { 
      window.console.info(s_msg); 
     } 
} 

Jetzt habe ich alle eingehenden SIP-Nachrichten in Funktion erhalten CatchWebrtcSignaling(msg), wo ich die Nachricht analysieren kann und jeden SIP-Header Wert.

Sie können entweder machen diese Änderung in SIPml5-api.js Datei oder Sie können den Quellcode von github, machen den Wechsel herunterladen und minify/build SIPml5-api.js, von „release.sh“ aus dem Hauptverzeichnis der Ausführung .

+0

Ich habe mich entschieden, sip.js anstelle von sipml5 zu verwenden - es ist viel einfacher, solche Sachen ohne schmutzige Hacks zu machen. Danke trotzdem. – emte