调用 URL 以获取电话号码以使用 TwiML 转发 Twilio 呼叫

问题描述

我正在尝试使用 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 检索号码。