sip - 当 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 响应的文档都会有所帮助。
解决方案
所有官方 rfc 定义的响应都列在iana.org,Internet 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 系列中看到的特定代码,如果我是正确的,通常表明传输层有错误。
推荐阅读
- rust - 如何在有条件地修改外部选项时返回对选项内部值的引用
- c# - 从 dapper 中的多个查询返回可枚举的结果
- json-deserialization - com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_ARRAY 令牌中反序列化“Todo”实例
- ros - 将 ROS 发布者缓冲区设置为 1 并将订阅者缓冲区设置为 1000 是否足够并且仍然不会丢失任何消息
- azure - Azure 管道运行时替换表达式
- .net-core - 有没有更好的方法在 Startup 类的 ConfigureServices 方法中注入所有依赖项
- ssl - Celery - [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败
- api-gateway - 使用 Kubernetes 的 Kong 数据库版本的文档很少
- python - 基于字典值映射将多索引数据帧与自身合并
- sql - 错误:记录类型尚未注册