我使用SIP协议拨打GSM号码。
当我无法访问被叫号码时,我会收到SIP错误响应。
但在两种情况下,SIP不响应任何ERROR代码。
当无法重新呼叫号码时,某些GSM运营商会提供自动远程秘书服务。在这种情况下,呼叫似乎没问题。
当被叫号码不再使用时,某些GSM Opeartors会提供默认消息,其中包含一个自动代理,上面写着“此号码已不再使用......等”。此外,在这种情况下,没有返回的SIP错误代码。
我很快就遇到了自动应答代理问题。怎么能 明白在被叫号码的另一边,有“真实的 人类“不是”自动“答录机?”
为什么GSM操作员不会返回任何代码,表明“这是一台自动应答机”或“数字不再是avalibale”?为什么没有SIP响应代码呢?或者它有吗?
答案 0 :(得分:3)
对于第一个使用语音信箱/远程保密/自动应答代理的情况,您将无法使用SIP来区分呼叫。相反,你必须让一些过程监听媒体流(RTP)并尝试检测人与录音之间的差异。一个例子是Asterisk's AMD application,但请注意,这不是一门精确的科学。
对于第二种情况,您收到有关未使用号码等的录音消息,通常会将其作为进度音提供,在SIP的情况下,作为183会话进度响应收到。关键的一点是,在没有应答呼叫的情况下,您可以通过呼叫获得音频(使用SIP 2xx响应)。这一点是呼叫者不应该收费来收听录制的错误消息。许多PSTN运营商将以相同的方式提供振铃指示,因此如果您想要检测正在进行的呼叫与收到错误指示的呼叫之间的差异,您需要捕获并处理不是的RTP音频流。一件容易的事。
答案 1 :(得分:2)
RFC5359具有SIP服务示例。只需查看文档或点击下面的URL进行检查即可。 http://tools.ietf.org/html/rfc5359
请看下面的网址。有可用的SIP响应代码。 http://en.wikipedia.org/wiki/List_of_SIP_response_codes
它可以帮助您检查响应。