Twilio - 拨打电话,发出指令,再次拨打电话,发出不同的指令

Twilio - making call, giving instructions, making call again, giving different instructions

这里是编码新手。我正在尝试制作一个应用程序来拨打号码并提供一组说明,这部分很简单。挂断电话后,我想再次致电并提供一组不同的说明。在测试是否可行时,我只给自己打电话并播放 DTMF 音调,这样我就可以听到它正在按我需要的方式运行。我正在尝试将指令作为变量传递给 TwiML,这样我就不必编写多个函数来执行类似的指令。但是,XML 不会采用这样的变量。我知道我包含的代码是完全错误的,但是有没有一种方法可以执行我想要获得的操作。

def dial_numbers(code):
    
    client.calls.create(to=numberToCall, from_=TWILIO_PHONE_NUMBER, twiml='<Response> <Play digits=code></Play> </Response>')

if __name__ == "__main__":
    dial_numbers("1234")
    dial_numbers("2222")

我从问题中了解到:您需要定义一个函数来将 Twilio 指令发送到调用吗?

  1. 为了播放数字音调,您需要从 Twilio 导入 from twilio.twiml.voice_response import Play, VoiceResponse 并为其创建 XML 命令。
  2. 简单方法: 然后你创建一个 POST 请求到 Twilio Echo XML service 并将其作为 URL 放入调用函数
  3. 艰难的方法: 有一个替代方案 - 使用 Flask 或 FastAPI 框架作为 Web 服务器并通过 DDNS 服务(如 ngrok)创建全局 link,如果你有兴趣 there is official manual.

试试这个:

def dial_numbers(number_to_call, number_from, digit_code):
    from twilio.twiml.voice_response import Play, VoiceResponse # Import response module
    import urllib.parse # Import urllib to create url for new xml file

    response = VoiceResponse() # Create VoiceResponse instance
    response.play('', digits=digit_code) # Create xml string of the digit code

    url_of_xml = "http://twimlets.com/echo?Twiml=" # Now use twimlet echo service to create simple xml
    string_to_add = urllib.parse.quote(str(response)) # Encode xml code to the url
    url_of_xml = url_of_xml + string_to_add # Add our xml code to the service

    client.calls.create(to=number_to_call, from_=number_from, url=url_of_xml) # Make a call


dial_numbers(number_to_call = numberToCall, number_from = TWILIO_PHONE_NUMBER, digit_code = "1234")