我目前正在尝试构建一个 Python 应用程序,允许从我的 Raspberry Pi 拨打我的手机。理想情况下,该应用程序应允许在电话用户和连接到 Jabra 扬声器的 raspberry 用户之间创建双向交互式对话(作为标准电话呼叫)。 我首先按照外呼教程进行操作:
def make_call():
account_sid = "ACXXX"
auth_token = "07XXX"
client = Client(account_sid, auth_token)
call = client.calls.create(
url="https://handler.twilio.com/twiml/EHXXXX",
to="+123456789",
from_="+987654321"
)
上面的代码让我的手机响铃,所以我猜我的 Twilio 帐户已正确设置。然而,当我接听电话时,电话突然停止了。 从文档中,我还尝试将我的 TwiML 指令更改为:
在通话过程中,您可以使用 TwiML 的动词将当前呼叫者连接到另一方。 下面的例子展示了最基本的用法:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>415-123-4567</Dial>
</Response>
如果拨打 415-123-4567 的一方接听电话,则双方可以进行通信,直至一方挂断电话。
这会给我的手机创建一个新的呼叫,要求我结束第一个呼叫来接听第二个呼叫,但仍然直接挂断。 我的用例可能存在什么问题? Twilio 本身是否处理双向对话?该解决方案是否比这更复杂,需要我从 Jabra 中提取音频并将其传输到 Twilio(反之亦然)? 预先感谢您的帮助!
您的呼叫正在断开,因为 TwiML 指令已成功完成。如果您想避免这种情况,可以使用
<Pause />
标签来延迟断开连接事件。
这将为您提供更多 使用 Python 修改正在进行的调用的新指令:
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client
# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)
call = client.calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
.update(twiml='<Response><Say>Ahoy there</Say></Response>')
print(call.to)