twilio python出站拨号

twilio python出站拨号,twilio,python-3.5,Twilio,Python 3.5,我正在尝试使用运行Twilio的笔记本电脑,使用Python3拨打地面线路,并进行语音对话。这是最简单的用例 这是我在笔记本电脑上运行的python代码 def test_voice_command_inline(self): '''calls landline from laptop via twilio''' twilio_client = twilio.rest.Client(self.twilio_account_sid,

我正在尝试使用运行Twilio的笔记本电脑,使用Python3拨打地面线路,并进行语音对话。这是最简单的用例

这是我在笔记本电脑上运行的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。我只是想开始说话。然而,TwilioRESTAPI要求我输入一个webhook url,该url返回TwiML来指导调用流。当TwiML完成处理后,呼叫就会挂断。我不需要webhook,但我需要一个

我在webhook代码中尝试了各种方法,试图让已经连接的调用继续。我试着从我的webhook返回空白TwiML,这会立即导致挂断。我还试着从webhook内部拨打了陆地电话号码。由于rest api已连接该调用,因此尝试从webhook重新拨打该号码会导致忙状态。看看我在webhook中可以使用的所有TwiML动词,没有一个看起来适合我的需要


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

这里是Twilio开发者evangelist

当您需要时,Twilio正在设置我们的服务器和to号码之间的呼叫。您提供的from号码只是该呼叫的被叫号码

为了将您使用REST API拨打的电话连接到另一部电话,您需要从TwiML_url返回TwiML,然后输入另一个号码。当前您的TwiML只是一个空的,但它应该是这样的:

<Response>
  <Dial><Number>OTHER_NUMBER</Number></Dial>
</Response>
如果希望它是动态的,也可以用Python代码编写。这就是你使用你提到的声音回应的地方。重要的是,您正在进行的调用的第二段应该由从URL返回的TwiML控制


如果有帮助,请告诉我。

嗨,菲尔,谢谢你的回复。根据您的反馈,我重新编写了我的问题,并添加了一些澄清。我们看到了不同的行为。在上面的代码中,当我运行twilio_client.calls.create时,在运行webhook之前会连接调用。这是意外的行为吗?我尝试了你的建议,加入到webhook中,但由于电话已经连接,Twilio以忙碌状态拒绝了电话。请参阅编辑文章中的屏幕截图。我的笔记本电脑正在运行Ubuntu 16.04,我的VPS也是如此。我使用的是twilio版本6.7.1So,所发生的事情是您从笔记本电脑向twilio发出了API请求。该API请求导致Twilio拨打固定电话。这在Twilio和固定电话之间创建了一个呼叫,而不是在笔记本电脑和固定电话之间。一旦你拿起固定电话并接受提示,Twilio需要知道下一步该怎么做。我建议使用,以便将电话连接到另一个号码,而不是同一个号码。如果你想用笔记本电脑打电话,你会想退房的。