Asterisk和Twilio的弹性SIP中继(入站故障排除)

时间:2015-06-21 03:05:28

标签: asterisk twilio sip freepbx

我已经在这几天了,似乎无法将来电路由到用户分机。然而,拨打电话和内部SIP分机拨号都可以正常工作,当拨打与我为域设置和配置的Twilio Elastic SIP干线相关联的号码时,我得到一个"所有电路都忙碌"来自我的航空公司的消息。

该系统是在Ubuntu 14.04上运行的全新安装的FreePBX 12.0.68,内部SIP扩展拨号和中继上的出站呼叫正常工作。 Asterisk的Twilio中继配置取自herehere

type=peer
secret=xxxxxxxxxxxxxxxxxxx
username=xxxxxxxxxxxxxxx
host=xxxxxxxxx.pstn.twilio.com
dtmfmode=rfc2833
canreinvite=no
disallow=all
allow=ulaw
insecure=port,invite
fromuser=xxxxxxxxxxx
fromdomain=xxxxxxxxx.pstn.twilio.com
context=incoming

这是Twilio和服务器之间的TCP / UDP流量

Source          Destination     Protocal  Info
10x.xxx.xx.xxx  10x.xxx.xxx.xx  UDP       Source port: 5060  Destination port: 5060
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.2     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.3     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.0     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.0     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
54.172.60.0     10x.xxx.xxx.xx  SIP/SDP   Request: INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com 
10x.xxx.xx.xxx  10x.xxx.xxx.xx  UDP       Source port: 5060  Destination port: 5060

这里是INVITE UDP流

INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com SIP/2.0
Record-Route: <sip:54.172.60.0:5060;lr;ftag=11540065_6772d868_144031e0-db91-45e9-ae85-6de18ed14b19>
From: <sip:+16xxxxxxxxx@sip.us1.twilio.com;pstn-params=808481808882;cpc=ordinary>;tag=11540065_6772d868_144031e0-db91-45e9-ae85-6de18ed14b19
To: <sip:+14xxxxxxxxx@xxx.xxxxx.com;user=phone>
CSeq: 25149 INVITE
Max-Forwards: 132
Accept: application/sdp,application/isup,application/dtmf,application/dtmf-relay,multipart/mixed
Session-Expires: 1800
Min-SE: 90
Content-Disposition: session;handling=required
Diversion: sip:+14xxxxxxxxx@public-vip.us1.twilio.com;reason=unconditional
Call-ID: 33939be232ba77b26300353ace17928c@0.0.0.0
Via: SIP/2.0/UDP 54.172.60.0:5060;branch=z9hG4bKdf6c.854803a7.0
Via: SIP/2.0/UDP 172.18.18.39:5060;branch=z9hG4bK144031e0-db91-45e9-ae85-6de18ed14b19_6772d868_287964010429808
Contact: <sip:+16xxxxxxxxx@172.18.18.39:5060;transport=udp>
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE
User-Agent: Twilio Gateway
X-Twilio-AccountSid: ACaa6e5a9a0d40b2b12751f33b612ebf6e
X-Twilio-ApiVersion: 2010-04-01
Content-Type: application/sdp
X-Twilio-CallSid: CAcc7d0e0603fea476fdaa1c94d9243104
Content-Length: 233

v=0
o=- 412164138 412164138 IN IP4 54.172.60.23
s=SIP Media Capabilities
c=IN IP4 54.172.60.23
t=0 0
m=audio 11590 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=ptime:20
INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com SIP/2.0
Record-Route: <sip:54.172.60.0:5060;lr;ftag=11540065_6772d868_144031e0-db91-45e9-ae85-6de18ed14b19>
From: <sip:+16xxxxxxxxx@sip.us1.twilio.com;pstn-params=808481808882;cpc=ordinary>;tag=11540065_6772d868_144031e0-db91-45e9-ae85-6de18ed14b19
To: <sip:+14xxxxxxxxx@xxx.xxxxx.com;user=phone>
CSeq: 25149 INVITE
Max-Forwards: 132
Accept: application/sdp,application/isup,application/dtmf,application/dtmf-relay,multipart/mixed
Session-Expires: 1800
Min-SE: 90
Content-Disposition: session;handling=required
Diversion: sip:+14xxxxxxxxx@public-vip.us1.twilio.com;reason=unconditional
Call-ID: 33939be232ba77b26300353ace17928c@0.0.0.0
Via: SIP/2.0/UDP 54.172.60.0:5060;branch=z9hG4bKdf6c.854803a7.0
Via: SIP/2.0/UDP 172.18.18.39:5060;branch=z9hG4bK144031e0-db91-45e9-ae85-6de18ed14b19_6772d868_287964010429808
Contact: <sip:+16xxxxxxxxx@172.18.18.39:5060;transport=udp>
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE
User-Agent: Twilio Gateway
X-Twilio-AccountSid: ACaa6e5a9a0d40b2b12751f33b612ebf6e
X-Twilio-ApiVersion: 2010-04-01
Content-Type: application/sdp
X-Twilio-CallSid: CAcc7d0e0603fea476fdaa1c94d9243104
Content-Length: 233

v=0
o=- 412164138 412164138 IN IP4 54.172.60.23
s=SIP Media Capabilities
c=IN IP4 54.172.60.23
t=0 0
m=audio 11590 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=ptime:20
INVITE sip:+14xxxxxxxxx@xxx.xxxxx.com SIP/2.0
Record-Route: <sip:54.172.60.0:5060;lr;ftag=11540065_6772d868_144031e0-db91-45e9-ae85-6de18ed14b19>
From: <sip:+16xxxxxxxxx@sip.us1.twilio.com;pstn-params=808481808882;cpc=ordinary>;tag=11540065_6772d868_144031e0-db91-45e9-ae85-6de18ed14b19
To: <sip:+14xxxxxxxxx@xxx.xxxxx.com;user=phone>
CSeq: 25149 INVITE
Max-Forwards: 132
Accept: application/sdp,application/isup,application/dtmf,application/dtmf-relay,multipart/mixed
Session-Expires: 1800
Min-SE: 90
Content-Disposition: session;handling=required
Diversion: sip:+14xxxxxxxxx@public-vip.us1.twilio.com;reason=unconditional
Call-ID: 33939be232ba77b26300353ace17928c@0.0.0.0
Via: SIP/2.0/UDP 54.172.60.0:5060;branch=z9hG4bKdf6c.854803a7.0
Via: SIP/2.0/UDP 172.18.18.39:5060;branch=z9hG4bK144031e0-db91-45e9-ae85-6de18ed14b19_6772d868_287964010429808
Contact: <sip:+16xxxxxxxxx@172.18.18.39:5060;transport=udp>
Allow: INVITE,ACK,CANCEL,OPTIONS,BYE
User-Agent: Twilio Gateway
X-Twilio-AccountSid: ACaa6e5a9a0d40b2b12751f33b612ebf6e
X-Twilio-ApiVersion: 2010-04-01
Content-Type: application/sdp
X-Twilio-CallSid: CAcc7d0e0603fea476fdaa1c94d9243104
Content-Length: 233

v=0
o=- 412164138 412164138 IN IP4 54.172.60.23
s=SIP Media Capabilities
c=IN IP4 54.172.60.23
t=0 0
m=audio 11590 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=ptime:20

我还在FreePBX界面中配置了传入路由,DID Number设置为我的Twilio号码,Destination直接设置为用户的SIP分机,相应的客户端正在运行并准备就绪接听电话。我已经同时使用了netstattcpdump这对我来说看起来像是从Twilio和FreePBX发送的INVITE请求只是不正确路由它?

1 个答案:

答案 0 :(得分:2)

我读到你有一个NAT问题 - 我仍然想把这个发布给那些也遇到类似问题的人。

我已经从我的几个PBX系统以及我们的一些客户的ViciDIAL开源拨号器配置中正常运行了我的Twilio Elastic SIP干线。我有一点时间看似与OP描述的相同的东西。

当然,我只测试了PBX上的入站 - 我尝试了几种不同的配置排列,直到我确切地确定了使用Twilio而不是世界上任何其他SIP提供商的问题。

首先,我唯一的星号设置:

[twilio]
host=xxxxxxx.pstn.twilio.com
type=friend
dtmfmode=rfc4733
canreinivite=no
insecure=port,invite

[twilio1]
type=friend
insecure=port,invite
host=54.172.60.0
dtmfmode=rfc4733
canreinivite=no

[twilio2]
type=friend
insecure=port,invite
host=54.172.60.1
dtmfmode=rfc4733
canreinivite=no

......等等,您将用于入境的每个Twilio IP,因为您永远不知道它将使用哪个附近的地理IP。 (我会注意到星号日志显示通过IP依赖于你的地理区域进行循环调用)。

您可以在我的星号日志中看到一个示例,其中我只使用(twilio_phone)替换我的twilio电话号码以获取隐私:http://pastebin.com/rXz7cY39

另一个主要区别:

入站路线(DID&#39; s)必须使用前导+符号声明,这在我的经验中并不常见

因此,使用twilio时,您必须将所有可能的IP包含为中继,并且在拨出和创建入站路由时也包括+之前的数字

希望这对任何努力实施的人都有帮助!