希望通过 Twilio 使用我们的 Cisco SPA504G IP 电话调用电话。我们有 4 条 Twilio 电话线路/号码,我们希望使用它们在实体电话上调用和接听电话。
编辑的问题:
我在这里发现了一个有趣的帖子:https://ertw.com/blog/2013/11/05/using-an-ip-phone-with-twilio/
这是我为了让电话响起而采取的步骤,但我听不到声音:/
我刚刚购买:http://www.amazon.com/Grandstream-GXP1620-Medium-Business-Device/dp/B00VUU8EZM
已将手机连接到我的路由器。我将 10000-20000 范围内的所有流量端口转发到电话。我也将端口5060端口转发到手机上。
- 上传了以下 xml 文件:
<Response> <Say>Testing</Say> <Dial> <Sip> sip:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="05696c6b60344537312b30342b3737342b3c3d" rel="noreferrer noopener nofollow">[email protected]</a> </Sip> </Dial> </Response>
可以在以下位置找到:http://antnam.com/voip.xml
我调用我的互联网提供商,现在我有一个静态 IP 地址,因此 24.51.221.98 永远不会改变。
我配置了我的 twilio 号码 (855) 804-0420 来执行 GET @ http://antnam.com/voip.xml
当我调用 (855) 804-0420 时,我可以听到连接到我的路由器的电话(VoIP 电话)响起!好消息是我可以调用我在第 1 步购买的手机了!
接听电话后,我无法收听语音:/。我可能做错了什么?
总而言之,一切都很好,我只是听不到任何东西。就好像通话处于静音状态一样。我是否缺少打开更多端口?
最佳答案
听起来这可能只是一个 NAT 穿越问题;如果是,请移动或删除此问题,因为只有在您对此客户端进行编程时这才相关。关于这个问题有大量信息(例如 here 是一篇优秀的文章,当我用 google 搜索“voip nat traversal”时,它作为第一个结果出现),但这里有一个快速摘要:
为什么 NAT 会导致 VoIP 出现问题
大多数 VoIP 协议(protocol)使用一个端口(例如本例中的 5060)上的数据流来协商连接信息,其中包括用于接收音频/RTP 流量的套接字(IP 地址和端口);关于套接字的协商,有两件事可能是意外的:
- 它可以是任何 IP 地址和端口组合,而不仅仅是 VoIP 设备本身上的 IP 地址和端口组合。因此,您可能有一个 VoIP 服务器,该服务器在另一台主机上协商套接字,该主机不属于 SIP 对话的一部分,并且可能位于 NAT 后面
- 协商是在 OSI 应用层(第 7 层)完成的,因此通常不会受到在第 3 层和第 4 层运行的 NAT 进程的影响
如何诊断由于 NAT 导致的音频丢失
如果您能够捕获数据包(最好在 WAN 和 LAN 端口上捕获数据包,这样您就可以看到 VoIP 设备在 NAT 之前和之后的流量),您就可以看到问题所在:只需查找包含 SDP 的数据包有效负载(例如,如果您在 UDP 5060 上执行 SIP,只需过滤该端口,您就会看到包含 SDP 有效负载的 INVITE 请求和 200 OK 响应);深入到 c(连接信息)和 m(媒体描述)行,它们应如下所示:
c=IN IP4 192.168.1.114
m=audio 6094 RTP/AVP 0 8 101
如果您在 WAN 端口上看到类似的内容,则意味着您的 VoIP 设备正在请求在 192.168.1.114:6094 上发送音频; IP 地址是私有(private)地址,无法通过互联网路由;该端口只是我随机选择的一个,但您看到的端口需要打开并转发到您的设备
如何修复
这个问题有多种解决方案,所有这些解决方案都可以归结为将您的设备发出的私有(private) IP 地址重写为您设备的流量经过 NAT 输出的公共(public) IP 地址,以便远程设备解析时SDP 中的连接信息行,它具有用于将音频流量发送到的有效的、公共(public)可路由的 IP 地址,以及通过 NAT 连接到您的设备的 UDP 端口。有时 VoIP 设备本身可以处理重写(例如,您可以在其配置中静态地告诉设备其公共(public) IP 是什么,或者它可以从 STUN 等协议(protocol)中发现它),有时重写是由防火墙/路由器完成的正在执行 NAT(对此有多种名称,例如 SIP ALG 或 SIP Fixup)。 不幸的是,由于不同路由器和防火墙的 NAT 实现存在差异,没有任何解决方案能够保证 100% 正常工作;如果您在同一防火墙后面有多台设备,则让它进行重写将仅适用于其中一台。
就您而言:
您提到了 2 种不同的 VoIP 设备:Cisco SPA504G 和 Grandstream GXP1620。两种设备的数据表均表示它们支持 STUN,因此我开始在其配置中查找 STUN 设置或任何其他引用 NAT 遍历的内容。另外,请确保转发到设备的端口是它使用的端口,这通常只是配置中的另一个项目,称为“RTP 基本端口”或“RTP 范围”之类的内容
关于twilio - 使用 Twilio 通过 Cisco SPA504G IP 电话调用/接听电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35686867/