g3r*_*rv4 21
正如下面已经指出的那样,Twilio现在可以作为SIP干线运行,您可以访问https://www.twilio.com/docs/sip-trunking了解更多信息.
这是折旧!!! 你应该使用TWILIO自己的SIP TRUNKING ......在这里阅读
Twilio不能用作SIP中继......它针对的是想要通过其服务构建应用程序的开发人员.但是,没有什么可以阻止您构建一个应用程序,让您通过Twilio发出传出呼叫并通过星号接收来自它们的呼叫.您将需要一个HTTP服务器来返回Twilio所需的XML.
它有三个步骤:
这应该非常简单......假设您有一个twilio帐户,只需访问https://www.twilio.com/user/account/sip/domains并设置域名.我有一个动态IP,所以我使用了一个凭证列表(并将在第二步中使用它).如果您有静态IP,我会完全使用它.我假设你把你的域称为"示例",所以我将谈论域example.sip.twilio.com
作为语音URL,您应该将一个指向您的Web服务器的URL(是的,您需要一个......但它可以是一个便宜的URL)到一个可以处理其请求的URL.在第三步,我会告诉你它应该返回什么.
您需要做的第一件事是在sip.conf文件中添加一个设备
[twilio]
type = peer
username = myusername
remotesecret = mypassword
host = example.sip.twilio.com
qualify = no
Run Code Online (Sandbox Code Playgroud)
然后,在您的extensions.conf上使用它(我使用前缀88表示twilio ...所以如果我拨打8818881231235它将通过twilio拨打(888)123-1235在美国)
exten => _88.,1,Dial(SIP/${EXTEN:2}@twilio)
Run Code Online (Sandbox Code Playgroud)
就是这样......当你拨打它时,你会达到twilio.
Twilio将调用您在第一步设置的URL.它做了一个HTTP POST,它有一个名为To的参数,带有你的Asterisk调用的URL ...所以,如果你拨打8818881231235,你会进入To参数
sip:18881231235@example.sip.twilio.com
Run Code Online (Sandbox Code Playgroud)
您应该获取该参数并提取数字,然后返回
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial callerId="+18881231234">
<Number>18881231235</Number>
</Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)
如果你使用PHP,你可以做这样的事情
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial callerId="+18881231234">
<Number><?php preg_match('/:([0-9]+)@/', $_POST['To'], $matches); echo $matches[1]; ?></Number>
</Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)
Aaaand就是这样,你现在正在使用Twilio作为主叫来拨打电话.
接收来自Twilio的电话更容易(当您想出一些事情时).首先,您应该为他们要求您列入白名单的每个IP设置一个设备,因此您应该添加sip.conf
[twiliocaller](!)
context = fromtwilio
type = peer
qualify=no
allowguest=yes
[twilioip-1](twiliocaller)
host=107.21.222.153
[twilioip-2](twiliocaller)
host=107.21.211.20
[twilioip-3](twiliocaller)
host=107.21.231.147
[twilioip-4](twiliocaller)
host=54.236.81.101
[twilioip-5](twiliocaller)
host=54.236.96.128
[twilioip-6](twiliocaller)
host=54.236.97.29
[twilioip-7](twiliocaller)
host=54.236.97.135
[twilioip-8](twiliocaller)
host=54.232.85.81
[twilioip-9](twiliocaller)
host=54.232.85.82
[twilioip-10](twiliocaller)
host=54.232.85.84
[twilioip-11](twiliocaller)
host=54.232.85.85
[twilioip-12](twiliocaller)
host=54.228.219.168
[twilioip-13](twiliocaller)
host=54.228.233.229
[twilioip-14](twiliocaller)
host=176.34.236.224
[twilioip-15](twiliocaller)
host=176.34.236.247
[twilioip-16](twiliocaller)
host=46.137.219.1
[twilioip-17](twiliocaller)
host=46.137.219.3
[twilioip-18](twiliocaller)
host=46.137.219.35
[twilioip-19](twiliocaller)
host=46.137.219.135
[twilioip-20](twiliocaller)
host=54.249.244.21
[twilioip-21](twiliocaller)
host=54.249.244.24
[twilioip-22](twiliocaller)
host=54.249.244.27
[twilioip-23](twiliocaller)
host=54.249.244.28
Run Code Online (Sandbox Code Playgroud)
您需要设置一个号码来呼叫您的Asterisk.假设您的Asterisk的域名是sip.example.com,并且您希望twilio响铃扩展100,那么您需要返回一些内容
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Sip>sip:100@sip.example.com</Sip>
</Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)
你不需要使用服务器这个b/c twilio有twimlets ...所以,使用echo twimlet,你可以设置你的号码指向 http://twimlets.com/echo?Twiml=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3CResponse%3E%3CDial%3E%3CSip%3Esip%3A100%40sip.example.com%3C%2FSip%3E%3C%2FDial%3E%3C%2FResponse%3E&
Aaand就是这样......你应该在来自twilio的上下文中处理分机100处的来电.
更新:正如xinit在评论中所指出的,twilio可能会从任何IP呼叫你...甚至你的域名(example.sip.twilio.com)指向...所以你想要[twilio]
通过添加来更新你的设备它是模板.现在看起来应该是这样的
[twilio](twiliocaller)
type = peer
username = myusername
remotesecret = mypassword
host = example.sip.twilio.com
qualify = no
Run Code Online (Sandbox Code Playgroud)
如果您对我的工作方式感兴趣,请查看我所做的这些博客文章.从他们复制了很多来调整这个答案.
归档时间: |
|
查看次数: |
16749 次 |
最近记录: |