2016-03-31 2 views
0

Я использую sipml5 с freeswitch, и мне нужно определить, когда на вызов должен быть дан ответ автоматически. Единственная часть, где я могу получить его от это SIP сообщение приглашения:Как читать заголовок Call-Info из сообщения Invite с помощью 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 заголовок:

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

Есть ли способ, как получить доступ к Call-Info заголовок используя sipml5?

ответ

1

Мне также нужно было получить значение заголовка SIP для чего-то подобного в проекте с использованием SIPml5. Что я сделал, это немного взломать, но он работает: все сообщения сигнализации 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); 
     } 
} 

Теперь я получаю все входящие сообщения SIP в функции CatchWebrtcSignaling(msg), где я могу разобрать сообщение и получить любое значение заголовков SIP.

Вы можете либо внести это изменение в файл SIPml5-api.js, либо загрузить исходный код с github, внести изменения и минимизировать/создать SIPml5-api.js, выполнив «release.sh» из основного каталога ,

+0

Я решил использовать sip.js вместо sipml5 - гораздо проще делать такие вещи без грязных хаков. но все равно спасибо. – emte

Смежные вопросы