首页 > 解决方案 > 当 SIP 代理无法到达端点时,状态代码 477 的适当 SIP 响应

问题描述

在一个实现中,我遇到了 freeswitch 充当代理的情况。它在前面的调度程序服务器关闭时生成 477,因为我无法在任何我认为将原因保持为“发送失败”的 sip 草稿中找到 477(基于参考:http://opensips-open-sip-server。 1449251.n2.nabble.com/SIP-2-0-477-Send-failed-477-TM-Route-td7595929.html)。不确定它是否符合运营商支持的标准。任何 sip 477 响应的文档都会有所帮助。

标签: sipfreeswitchsip-server

解决方案


所有官方 rfc 定义的响应都列在iana.orgInternet Assigned Numbers Authority

你可以在这里找到列表

rfc3261 明确允许任何应用程序(或新的 rfc)扩展 SIP 并使用新代码。它还允许对您定义的响应代码以及预定义的响应代码使用任何自定义原因...

来自 rfc3261,关于原因短语第 7.2 节响应

虽然本规范建议了原因短语的特定措辞,但实现可以选择其他文本,例如,在请求的 Accept-Language 标头字段中指示的语言中。

来自 rfc3261,关于status-code :在 SIP 的 BNF 中, status-code的使用没有限制。

有关 SIP 协议,请参阅第 25 节增强 BNF

Status-Code     =  Informational
               /   Redirection
               /   Success
               /   Client-Error
               /   Server-Error
               /   Global-Failure
               /   extension-code
extension-code  =  3DIGIT

上面的重要部分是extension-code = 3DIGIT,这意味着可以使用任何 3 位数字(当然,仅从 100 到 699)。

PS:477 是在 kamailio、opensips、ser、openser 系列中看到的特定代码,如果我是正确的,通常表明传输层有错误。


推荐阅读