我正在尝试使用我的笔记本电脑(运行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动词,没有一个看起来适合我的需要。
我一定很遗憾。为什么我不能使用上面的代码在我的笔记本电脑和我的固定电话(或任何其他电话)之间进行语音通话?
答案 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控制。
让我知道这是否有帮助。