gpt4 book ai didi

sip - 如何使用 Twilio 作为 Asterisk 的 SIP 中继来调用和接听电话?

转载 作者:行者123 更新时间:2023-12-04 09:03:58 31 4
gpt4 key购买 nike

我有一个 Twilio 帐户,它有一个数字(比如说 8881231234),我有一个 Asterisk 框。我想将 Twilio 用作 Asterisk 中继,以便能够以他们的费率调用电话并在我的 Asterisk 上接听来自该号码的电话。

我还没有找到任何将 Asterisk 与 Twilio 互连的规范。是否可以设置 Asterisk,以便每个拨出电话都通过 Twilio 路由,并让我的 8881231234 号码上的调用在我的 SIP 电话上响铃?

最佳答案

正如下面所指出的,Twilio 现在可以作为 SIP 中继工作,您可以访问 https://www.twilio.com/docs/sip-trunking了解更多信息。

这已弃用!!!您应该使用 TWILIO 自己的 SIP 中继... READ HERE
Twilio 不能用作 SIP 中继……它面向希望在其服务上构建应用程序的开发人员。但是,没有什么能阻止您构建一个应用程序,该应用程序允许您通过 Twilio 调用电话并在 Asterisk 上接听他们的电话。您将需要一个 HTTP 服务器来返回 Twilio 所需的 XML。
通过 Twilio 调用电话
它分为三个步骤:

  • 在 twilio 创建域并设置用户
  • 设置您的 Asterisk,以便当您调用一个号码时,它会到达 twilio
  • 处理 twilio 的请求并返回 TwiML (一种特殊的 XML,在他们的网站上有很好的记录)。他们有几乎所有语言的 SDK,但我将保持这个响应语言不可知,只处理 TwiML

  • 在 twilio 创建域
    这应该很简单...假设您有一个 twilio 帐户,只需转到 https://www.twilio.com/user/account/sip/domains并设置域。我有一个动态 ip,所以我使用了一个凭证列表(并将在第二步中使用它)。如果你有静态IP,我会完全使用它。我将假设您将您的域称为“示例”,所以我将讨论域 example.sip.twilio.com
    作为语音 URL,您应该将指向您的 Web 服务器的 URL(是的,您需要一个......但它可以是一个便宜的)到一个可以处理他们请求的 URL。在第三步中,我将向您展示它应该返回的确切内容。
    设置您的 Asterisk,以便当您调用一个号码时,它会到达 twilio
    您需要做的第一件事是在您的 上添加一个设备。 sip.conf 文件
    [twilio]
    type = peer
    username = myusername
    remotesecret = mypassword
    host = example.sip.twilio.com
    qualify = no
    然后,在您的 上extensions.conf 只需使用它(我为 twilio 使用前缀 88...所以如果我调用 8818881231235,它将通过 twilio 在美国调用 (888) 123-1235)
    exten => _88.,1,Dial(SIP/${EXTEN:2}@twilio)
    就是这样...当您调用该电话时,您会到达 twilio。
    处理 twilio 的请求并返回 TwiML
    Twilio 将调用您在第一步中设置的 url。它执行一个 HTTP POST,其参数名为 使用您的 Asterisk 调用的 URL...所以,如果您调用 8818881231235,您将进入 范围
    sip:18881231235@example.sip.twilio.com
    您应该获取该参数并提取数字,然后返回
    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
    <Dial callerId="+18881231234">
    <Number>18881231235</Number>
    </Dial>
    </Response>
    如果你使用 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>
    就是这样,您现在使用 Twilio 作为中继来调用电话。
    接听来自 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
    您需要设置一个号码来调用您的 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>
    你不需要使用服务器,因为这个 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&就是这样……您应该在 fromtwilio 的上下文中处理分机 100 的来电。
    更新:正如 xinit 所指出的那样在评论中,twilio 可能会从任何 ip 给您打电话...甚至是您的域 (example.sip.twilio.com) 指向的那个...所以您想要更新您的 [twilio]设备通过添加它的模板。现在应该是这样的
    [twilio](twiliocaller)
    type = peer
    username = myusername
    remotesecret = mypassword
    host = example.sip.twilio.com
    qualify = no

    如果您对我如何做到这一点感兴趣,请查看我所做的这些博客文章。从他们那里复制了很多来调整这个答案。
    Making calls from home to twilio
    Receiving calls from twilio

    关于sip - 如何使用 Twilio 作为 Asterisk 的 SIP 中继来调用和接听电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848222/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com