2011-10-03 102 views
1

我想了解我的软电话如何发出BYE挂断,以便我可以在其他地方重新创建它。以下是ZoIPer发送到运行SIP信令软件的服务器的数据包。openSIPs 403“Externa SIP域禁止”错误

我想建立这个字符串,并成功挂断某人,但我总是得到400,403,407,481和503错误。问题是我无法确定Route标题中“did”的值来自何处,并且也不知道Via标题中“branch”值来自哪里。每个其他参数都由Asterisk公开给我使用,而不是这两个。

如何确定“做”和“分支”?

此外,此示例使用代理授权,但对于简短调用,此行由ZoIPer省略。

BYE sip:[email protected] SIP/2.0 
Via: SIP/2.0/UDP 192.168.1.183:5060;branch=z9hGda4bK-d8754z-678f2d4d1e5-1---d8754z- 
Max-Forwards: 70 
Route: <sip:sipHost;lr;ftag=733a98721;did=c0f.22438545> 
Contact: <sip:[email protected]:5060;transport=UDP> 
To: <sip:[email protected];transport=UDP>;tag=as4f57c9b8a 
From: <sip:[email protected];transport=UDP>;tag=733a98721 
Call-ID: Nzg1ZTEyYTg4NasdlkSZLK3j10. 
CSeq: 3 BYE 
Proxy-Authorization: Digest username="bobby",realm="TomTest.voip.snohio.net",nonce="4e8a1b1700005997e6b1d8732be4b4c01f56d27a6d2dd80b",uri="sip:[email protected]:5060",response="3dbb0f4cbb0000c7786975cf043e6898",algorithm=MD5 
User-Agent: Zoiper rev.11137 
Content-Length: 0 

谢谢。

回答

1

branchBYE交易的标识符。它必须从z9hG4bK开始,并且是全球唯一的,否则其确切格式由执行者自行决定。在请求中,无论用户代理发送请求,都会添加branch参数。在你的情况下,Zoiper会计算它。

大多数SIP报头可以携带任意参数,这里ftagdid是这样的参数的例子。根据IANA registry,它们不是任何SIP RFC的一部分,所以可能意味着什么。它看起来是Asterisk内部的东西。您最好的选择是保留Route标题。

对于BYE的重要部分是在FromTo报头中的Call-IDtag参数。得到这些错误,你会得到一个481 Call/Transaction Does Not Exist响应。

如果您的Authorization(403)或Proxy-Authorization(407)凭据不正确,您将得到403和407响应。

503响应表示您的代理太忙而无法处理您的请求。

+0

谢谢。是的,我最终在RFC中找到了Magic Cookie前缀。此外,我刚刚放下了did标签,并开始工作......一点点。如果我正确地设置了我的买入,我似乎只是终止了我的呼叫的一条腿,这意味着出站腿_出现在另一个用户身上,但线路已经死亡。 – kmarks2