问题描述
我正在尝试使用 Twilio 实现呼叫转移的自动化。当用户拨打 Twilio 号码时,它会播放一些欢迎消息,然后它应该调用外部 API,该 API 将返回 Twilio 应该拨打该号码的电话号码。我正在尝试使用这个 TwiML。这是我的 TwiML bin 文档
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Pause length="1"/>
<Say voice="Polly.Joanna"> Welcome
</Say>
<Dial> HERE THE NUMBER SHOULD COME THAT API WILL RETURN
</Dial>
</Response>
例如 https://getmynumber/samplenumber
是将返回数字的 URL。如何使用 TwiML 实现这一目标?
是否可以在 TwiML 中定义变量?因为如果我可以使用 <Redirect>
标签将数字保存到该变量中,我可以轻松实现这一点。
有可能吗?
解决方法
仅使用 TwiML Bin 会很困难,但您可以尝试以下操作:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Pause length="1"/>
<Say voice="Polly.Joanna">Welcome</Say>
<Dial>{{Number}}</Dial>
</Response>
然后通过以下方式调用它:https://<your TwiML Bin URL>/...?Number=+123456789
这个passes custom values into a TwiML Bin,这里Number
。
如果您确实需要调用 API 来获取要拨打的号码,您将需要某种端点来形成 TwiML,例如Twilio 函数或任何其他端点。
Python 版本可能如下所示:
from twilio.twiml.voice_response import VoiceResponse
response = VoiceResponse()
response.pause(length=1)
response.say('Welcome')
number = '+123456789' # Here you would do an API call
response.dial(number)
print(response)
以上基本上是 creates the TwiML 您在 TwiML Bin 中但使用 Python。您需要将其包装在端点中才能被调用和返回。当然,您还需要添加逻辑以通过 API 检索号码。