Home > Mobile >  Twilio - making call, giving instructions, making call again, giving different instructions
Twilio - making call, giving instructions, making call again, giving different instructions

Time:03-19

New to coding here. I am trying to make an application to call a number and give a set of instructions, this part is easy. After the call hangs up I would like to call again and give a different set of instructions. While testing to see if it's possible I am only calling myself and playing DTMF tones so I can hear that it is functioning as I need. I am trying to pass the instructions to TwiML as a variable so I don't have to write multiple functions to perform similar instructions. However, XML doesn't take variables like that. I know the code I have included is completely wrong but is there a method to perform the action I am trying to get.

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")

CodePudding user response:

As I understand from the question: do you need to define a function to send Twilio instructions to the call?

  1. In order to play digit tones, you need to import from twilio.twiml.voice_response import Play, VoiceResponse from Twilio and create XML command for it.
  2. EASY WAY: And then you create a POST request to the Twilio Echo XML service and put it as URL into call function
  3. HARD WAY: There is an alternative - to use Flask or FastAPI framework as a web server and create a global link via DDNS service like ngrok, if you are interested there is official manual.

Try this one:

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")

  • Related