【问题标题】:twilio python outbound dialtwilio python 外拨拨号
【发布时间】:2018-08-06 08:14:49
【问题描述】:

我正在尝试使用我的笔记本电脑(运行 Twilio)使用 python 3 拨打固定电话并进行语音对话。这是最简单的用例。

这是我在笔记本电脑上运行的 python 代码。

def test_voice_command_inline(self):
    '''calls landline from laptop via twilio'''

    twilio_client = twilio.rest.Client(self.twilio_account_sid,
                                        self.twilio_auth_token)
    vps_url = self.get_vps_url()

    twilio_voice_call = twilio_client.calls.create(
        from_=self.twilio_phone_number,
        to=self.land_line_number,
        url=vps_url
        )

当我运行此代码时,我的固定电话响了,我接听了它。通话已接通。接下来,Twilio 提示我按下一个键来“执行我的代码”(又名 webhook)

由于我已经有一个连接的呼叫,我不需要 webhook。我只想开始说话。但是,Twilio rest api 要求我放入一个返回 TwiML 的 webhook url 以指导调用流。当 TwiML 完成处理时,呼叫被挂断。我不需要 webhook,但我必须拥有一个。

我在 webhook 代码中尝试了各种方法,试图让已经连接的调用继续。我尝试从我的 webhook 返回空白 TwiML,这会导致立即挂断。我还尝试从 webhook 中拨打固定电话号码。由于其余 api 已连接呼叫,因此尝试从 webhook 重拨号码导致忙状态 (Twilio console)。查看我可以在 webhook 中使用的所有 TwiML 动词,没有一个看起来适合我的需要。

我一定错过了一些简单的东西。为什么我不能使用上面的代码在我的笔记本电脑和我的固定电话(或任何其他电话)之间进行语音通话?

【问题讨论】:

    标签: twilio python-3.5


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    当您make an outbound call using the REST API 时,Twilio 正在我们的服务器和to 号码之间建立呼叫。您提供的 from 号码就是呼叫的 callerId。

    为了将您使用 REST API 进行的呼叫连接到另一部手机,您需要从您的 twiml_url 那个 dials 另一个号码返回 TwiML。目前你的 TwiML 只是一个空的 <Response> 但它应该是这样的:

    <Response>
      <Dial><Number>OTHER_NUMBER</Number></Dial>
    </Response>
    

    如果您希望它是动态的,这也可以由 Python 代码写出。那就是您使用您提到的VoiceResponse 的地方。重要的是,您正在进行的调用的第二段应该由从您的 URL 返回的 TwiML 控制。

    让我知道这是否有帮助。

    【讨论】:

    • 您好菲尔,感谢您的回复。根据您的反馈,我改写了我的问题并添加了一些说明。我们看到了不同的行为。在上面的代码中,当我运行 twilio_client.calls.create() 时,调用在 webhook 运行之前连接。这是意外的行为吗?我尝试了将 添加到 webhook 中的建议,但由于呼叫已连接,因此 Twilio 以忙碌状态拒绝了呼叫(请参阅编辑后的帖子中的屏幕截图)我的笔记本电脑运行 Ubuntu 16.04,我的 VPS 也是如此。我正在使用 twilio 版本 6.7.1
    • 所以,您已经从笔记本电脑向 Twilio 发出了 API 请求。该 API 请求导致 Twilio 拨打固定电话。这在 Twilio 和您的固定电话之间创建了一个呼叫,而不是在您的笔记本电脑和您的固定电话之间。一旦您拿起固定电话(并接受提示),Twilio 就需要知道接下来该做什么。我建议使用&lt;Dial&gt; 将呼叫连接到另一个号码,而不是同一个号码。如果您想通过笔记本电脑拨打电话,请查看Twilio Client
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多