我试图了解我的软电话如何将BYE发布到挂机中,以便我可以在其他地方重新创建它。下面是ZoIPer发送给运行SIP信令软件的服务器的数据包。
我正在尝试构建此字符串并成功挂断某人,但我总是得到400,403,407,481和503错误。问题是我无法确定Route标头中“did”的值来自何处,也不知道Via标头中“branch”值的来源。所有其他参数都由Asterisk公开供我消费,而不是这两个参数。
如何确定“已做”和“分支”?
此外,此示例使用代理授权,但对于短调用,ZoIPer会省略此行。
BYE sip:user1@astHost 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:user2@192.168.1.183:5060;transport=UDP>
To: <sip:user1@mydomain;transport=UDP>;tag=as4f57c9b8a
From: <sip:user2@mydomain;transport=UDP>;tag=733a98721
Call-ID: Nzg1ZTEyYTg4NasdlkSZLK3j10.
CSeq: 3 BYE
Proxy-Authorization: Digest username="bobby",realm="TomTest.voip.snohio.net",nonce="4e8a1b1700005997e6b1d8732be4b4c01f56d27a6d2dd80b",uri="sip:103@74.115.42.220:5060",response="3dbb0f4cbb0000c7786975cf043e6898",algorithm=MD5
User-Agent: Zoiper rev.11137
Content-Length: 0
感谢。
答案 0 :(得分:1)
branch
是BYE
交易的标识符。它必须以z9hG4bK
开头并且是全球唯一的,否则其精确格式由实施者自行决定。在请求中,无论用户代理发送请求,都会添加branch
参数。在您的情况下,Zoiper将计算它。
大多数SIP标头可能带有任意参数,此处ftag
和did
是此类参数的示例。根据{{3}},它们不属于任何SIP RFC,所以可能意味着什么。它看起来像是Asterisk内部的东西。最好的办法是单独留下Route
标题。
对于BYE
,重要部分包括Call-ID
和tag
标头中的From
和To
参数。如果出现这些错误,您将收到481 Call/Transaction Does Not Exist
回复。
如果您的Authorization
(403)或Proxy-Authorization
(407)凭据不正确,您将收到403和407回复。
503响应表示您的代理太忙而无法处理您的请求。