Reputation: 211
I am trying to get the current call's 'To' and 'From' numbers in Twilio. I am using the Twilio IVR system example at https://www.twilio.com/docs/voice/tutorials/ivr-phone-tree-python-flask.
This is my current code:
rom twilio.twiml.voice_response import VoiceResponse
from ivr_phone_tree_python import app
from ivr_phone_tree_python.view_helpers import twiml
@app.route('/ivr/welcome', methods=['POST'])
def welcome():
response = VoiceResponse()
# TODO
# get current calls to and from numbers here
# query subaccounts and main account and find which account the caller is calling based on the To number
with response.gather(
num_digits=1, action=url_for('menu'), method="POST"
) as g:
g.say(message="Thanks for calling the E T Phone Home Service. " +
"Please press 1 for directions." +
"Press 2 for a list of planets to call.", loop=3)
return twiml(response)
@app.route('/ivr/menu', methods=['POST'])
def menu():
selected_option = request.form['Digits']
option_actions = {'1': _give_instructions,
'2': _list_planets}
if option_actions.has_key(selected_option):
response = VoiceResponse()
option_actions[selected_option](response)
return twiml(response)
return _redirect_welcome()
@app.route('/ivr/planets', methods=['POST'])
def planets():
selected_option = request.form['Digits']
option_actions = {'2': "+12024173378",
'3': "+12027336386",
"4": "+12027336637"}
if selected_option in option_actions:
response = VoiceResponse()
response.dial(option_actions[selected_option])
return twiml(response)
return _redirect_welcome()
# private methods
def _give_instructions(response):
response.say("To get to your extraction point, get on your bike and go " +
"down the street. Then Left down an alley. Avoid the police" +
" cars. Turn left into an unfinished housing development." +
"Fly over the roadblock. Go past the moon. Soon after " +
"you will see your mother ship.",
voice="alice", language="en-GB")
response.say("Thank you for calling the E T Phone Home Service - the " +
"adventurous alien's first choice in intergalactic travel")
response.hangup()
return response
def _list_planets(response):
with response.gather(
numDigits=1, action=url_for('planets'), method="POST"
) as g:
g.say("To call the planet Broh doe As O G, press 2. To call the " +
"planet DuhGo bah, press 3. To call an oober asteroid " +
"to your location, press 4. To go back to the main menu " +
" press the star key.",
voice="alice", language="en-GB", loop=3)
return response
def _redirect_welcome():
response = VoiceResponse()
response.say("Returning to the main menu", voice="alice", language="en-GB")
response.redirect(url_for('welcome'))
return twiml(response)
If I wanted to use this IVR structure for all my subaccounts when I update to a paid account, would ngrok https output and post it to all subaccounts on my Twilio dashboard? That is the reason I want to know who the To and From callers are in the IVR call, so that I can distinguish which subaccount they are calling (and use the callers number for other reasons).
Upvotes: 0
Views: 217
Reputation: 535
To get the To and From number, you would do something as follows request.POST['From']
and request.POST['To']
this is how you would do it in Django, you'll need to modify for flask. ngrok is a way for you to host your localhost website on the web so Twilio can communicate with it. You need to update the ngrok url Twilio needs to watch for, either manually in Twilio dashboard or through Twilio api. Also look into a TwilioML App.
Upvotes: 1