twilio python出站拨号

时间:2018-02-26 19:37:21

标签: twilio python-3.5

我正在尝试使用我的笔记本电脑(运行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)

由于我已经有联系电话,因此我不需要网络连接。我只是想开始说话。但是,Twilio rest api 需要我放入一个webhook url,它返回TwiML以指示呼叫流程。当TwiML完成处理时,呼叫挂断。我不需要webhook,但我需要有一个。

我在webhook代码中尝试了各种各样的东西,试图让已连接的呼叫继续。我尝试从我的webhook中返回空白的TwiML,这会导致立即挂断。我也试过从webhook里面拨打陆线号码。由于其余的api已经连接了呼叫,因此尝试从webhook重新拨打该号码会导致忙碌状态(How to Build Your First Slack Bot with Python : fullstackpython.com)。看看我可以在webhook中使用的所有TwiML动词,没有一个看起来适合我的需要。

我一定很遗憾。为什么我不能使用上面的代码在我的笔记本电脑和我的固定电话(或任何其他电话)之间进行语音通话?

1 个答案:

答案 0 :(得分: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控制。

让我知道这是否有帮助。