我正在使用Node.js和Kirm / Sip模块向Twilio SIP Trunk发送SIP请求,我正在尝试在收到“180 Ringing”响应后取消呼叫。
问题是发送了[CANCEL] SIP请求,但是服务器从不回复状态“200正在取消”,而是回复TCP [ACK]并且呼叫仍然响铃..
取消请求是来自邀请请求的副本,但更改了方法和CSec方法。
邀请请求:
INVITE sip:123456789@sample.pstn.ie1.twilio.com SIP/2.0
From: <sip:test@sample.pstn.ie1.twilio.com>;tag=168502
To: <sip:123456789@sample.pstn.ie1.twilio.com>
Call-ID: 284466
CSeq: 969240 INVITE
Content-Type: application/sdp
Contact: <sip:test@192.168.61.4>
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:123456789@sample.pstn.ie1.twilio.com",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 sip:123456789@sample.pstn.ie1.twilio.com SIP/2.0
CSeq: 969240 CANCEL
Call-ID: 284466
From: <sip:test@sample.pstn.ie1.twilio.com>;tag=168502
To: <sip:123456789@sample.pstn.ie1.twilio.com>
Via: SIP/2.0/TCP 192.168.61.4:61244;branch=z9hG4bK847573
Content-Length: 0
所有想法?
由于
答案 0 :(得分:2)
应该设置接收180 Ringing To-tag。 在180 Ringing To标题中查找它。 类似于&#34; To :; tag = 9273782374&#34;是预期的。
您需要将CANCEL请求与INVITE事务匹配,以便在CANCEL请求中设置To标记。
CANCEL sip:123456789@sample.pstn.ie1.twilio.com SIP/2.0
CSeq: 969240 CANCEL
Call-ID: 284466
From: <sip:test@sample.pstn.ie1.twilio.com>;tag=168502
To: <sip:123456789@sample.pstn.ie1.twilio.com>;tag=missingToTag
Via: SIP/2.0/TCP 192.168.61.4:61244;branch=z9hG4bK847573
Content-Length: 0
答案 1 :(得分:0)
我为此苦了一段时间,当我看到这篇文章时就解决了。
您必须确保“收件人:”字段中的标签是在邀请请求的ACK后 返回的标签。
流程如下: