希望通过Twilio使用我们的思科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到手机。
找到<Response> <Say>Testing</Say> <Dial> <Sip> sip:line1@24.51.221.98 </Sip> </Dial> </Response>
我打电话给我的互联网提供商,现在我有一个静态IP地址,因此24.51.221.98永远不会改变。
我配置了我的twilio号码(855)804-0420来执行GET @ http://antnam.com/voip.xml
当我拨打(855)804-0420时,我可以听到连接到我的路由器(voip phone)的手机铃声!好消息我可以拨打我在第1步购买的手机!
接听电话后,我无法听到声音:/。我可能做错了什么?
总之,一切都很好,我只是听不到任何声音。好像呼叫是静音的。我错过了打开更多端口吗?
答案 0 :(得分:3)
听起来这可能只是一个NAT遍历问题;如果是,请移动或删除此问题,因为这只有在您编程此客户端时才有意义。有很多关于这个问题的信息(例如here是一篇很棒的文章,作为我google“voip nat traversal”时的第一个结果,但是这里有一个快速摘要:
大多数VoIP协议在一个端口上使用数据流(例如在这种情况下为5060)来协商连接信息,其中包括用于接收音频/ RTP流量的套接字(IP地址和端口);有关套接字协商的两件事可能是意料之外的事情:
如果您能够获取数据包捕获(理想情况下,在WAN和LAN端口上,以便您可以在NAT之前和之后看到您的VoIP设备的流量),您可以看到问题在于:只查找包含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地址是私人地址,不能通过互联网路由;该端口只是我随机挑选的端口,但您看到的端口需要打开并转发到您的设备
这个问题有各种各样的解决方案,这些解决方案都归结为将您的设备提供的私有IP地址重写为您的设备的流量正在NAT上的公共IP地址,以便在远程设备解析时SDP中的连接信息行,它具有一个有效的,可公共路由的IP地址,用于发送音频流量,以及一个NAT设备NAT端口。有时VoIP设备本身可以处理重写(例如,你可以静态告诉设备在其配置中它的公共IP是什么,或者它可以从像STUN这样的协议发现它),有时重写是由防火墙/路由器完成的。正在做NAT(有各种各样的名称,如SIP ALG或SIP Fixup)。 不幸的是,由于各种路由器和防火墙的NAT实施方式存在差异,因此无法保证100%的解决方案无法正常工作。如果你在同一个防火墙后面有多个设备,那么重写它只适用于其中一个。
您提到了两种不同的VoIP设备,一种是Cisco SPA504G,另一种是Grandstream GXP1620。两个设备的数据表都说它们支持STUN,所以我开始查看其配置中的STUN设置或其他任何引用NAT遍历的内容。此外,请确保您转发到设备的端口是它使用的端口,这通常只是配置中的另一个项目,称为“RTP基本端口”或“RTP范围”
答案 1 :(得分:1)
我还要确保你使用公共眩晕服务器(例如stun.sipgate.net
)启用stun注意:STUN在TCP和UDP端口3478上运行。
这是必需的,因为手机需要在sip数据包中发送外部IP。没有击晕它将发送内部IP,远端sip设备将尝试在那里发送数据。