2016-03-31 81 views
0

我使用帶有freeswitch的sipml5,並且需要檢測何時應自動應答呼叫。在那裏我可以得到它的唯一部分是SIP邀請消息:如何使用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 

我的VOIP電話檢測到它從呼叫信息標題:

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

有什麼辦法如何訪問呼叫信息頭部使用sipml5?

回答

1

我還需要爲使​​用SIPml5的項目中類似的東西獲取SIP標頭的值。 我做了什麼,有點破解,但它有效:所有SIP信令消息都記錄到瀏覽器控制檯(如果調試級別設置爲「信息」)。

因此,我發現並更改了SIPml5庫中的調試功能,以接收所有傳入的SIP消息(不管調試級別如何)。您可以通過搜索以下內容來找到該功能:function tsk_utils_log_info

新功能看起來像:

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); 
     } 
} 

現在我收到的功能CatchWebrtcSignaling(msg)所有傳入的SIP消息,我可以解析消息,並得到任何SIP報頭值。

您可以在SIPml5-api.js文件中進行此更改,也可以從github下載源代碼,通過在主目錄中執行「release.sh」進行更改並縮小/構建SIPml5-api.js 。

+0

我已經決定使用sip.js而不是sipml5--這種做法更容易,而且沒有骯髒的黑客攻擊。但無論如何感謝。 – emte