2017-04-10 73 views
0

我正在使用Node.js和Kirm/Sip模塊向Twilio SIP中繼發送SIP請求,我試圖在收到'180 Ringing'響應後取消呼叫。SIP CANCEL請求永遠不會獲得200取消響應

的問題是,[取消] SIP請求被髮送,但服務器從未與狀態「200取消」像它應該,而是用TCP [ACK]回覆和呼叫保持振鈴回覆..

取消請求是Invite請求的副本,但更改了Method和CSec方法。

INVITE請求:

INVITE sip:[email protected] SIP/2.0 
From: <sip:[email protected]>;tag=168502 
To: <sip:[email protected]> 
Call-ID: 284466 
CSeq: 969240 INVITE 
Content-Type: application/sdp 
Contact: <sip:[email protected]> 
Via: SIP/2.0/TCP 192.168.61.4:61244;branch=z9hG4bK847573 
Content-Length: 363 
Proxy-Authorization: Digest realm="sip.twilio.com",username="test",nonce="XXXX",uri="sip:[email protected]",nc=00000001,cnonce="XXXXXXX",qop=auth,opaque="XXXXXXX",response="XXXXXXX" 

v=0 
o=- 3700480907 3700480907 IN IP4 192.168.61.4 
s=pjmedia 
b=AS:84 
t=0 0 
a=X-nat:0 
m=audio 4012 RTP/AVP 123 8 0 101 
c=IN IP4 192.168.61.4 
b=TIAS:64000 
a=rtcp:4013 IN IP4 192.168.61.4 
a=sendrecv 
a=rtpmap:123 opus/48000/2 
a=fmtp:123 maxplaybackrate=16000 
a=rtpmap:8 PCMA/8000 
a=rtpmap:0 PCMU/8000 
a=rtpmap:101 telephone-event/8000 
a=fmtp:101 0-16 

CANCEL請求:

CANCEL sip:[email protected] SIP/2.0 
CSeq: 969240 CANCEL 
Call-ID: 284466 
From: <sip:[email protected]>;tag=168502 
To: <sip:[email protected]> 
Via: SIP/2.0/TCP 192.168.61.4:61244;branch=z9hG4bK847573 
Content-Length: 0 

所以任何想法?

謝謝

+0

您的取消看起來非常有效。這是實際的消息。我假設INVITE中沒有路由頭。如果它實際上是INVITE,那麼也複製到CANCEL。 – Sudhansu

回答

2

當收到180響鈴到標籤應設置。 在180 Ringing To header中查找它。 預計會出現類似「To:; tag = 9273782374」的情況。

您需要匹配CANCEL請求和INVITE事務,所以要在CANCEL請求中設置標籤。

CANCEL sip:[email protected] SIP/2.0 
CSeq: 969240 CANCEL 
Call-ID: 284466 
From: <sip:[email protected]>;tag=168502 
To: <sip:[email protected]>;tag=missingToTag 
Via: SIP/2.0/TCP 192.168.61.4:61244;branch=z9hG4bK847573 
Content-Length: 0 
+0

謝謝你的回覆, 我從振鈴響應複製的標籤,現在看起來是這樣的: '要:;標籤= 09200453_6772d868_d8b44d32-4e1b -4175-ace9-487bbf2a27f6' 但仍然沒有得到取消回覆 – amamdouh

+0

我很抱歉。標記答案看起來很糟糕。我覺得你發送的取消請求是好的。這個問題必須在別的地方。 請看rfc的第52頁:https://www.ietf.org/rfc/rfc3261.txt – user3760296