За живота си не мога да накарам Twilio да изпълни twiml инструкциите в рамките на Flask.redirect. Не виждам нищо нередно, когато изпълнявам заявката чрез Postman, така че какво пропускам? Мога също да видя пренасочването в конзолните изходи от Flask.
Очакваното поведение е, че когато се отговори на изходящо повикване (CallStatus == 'in-progress'), повикването се пренасочва към поздравително съобщение. Това, което наистина се случва, е, че обаждането продължава 5 секунди——което е дефинирано в dial(), за да се гарантира, че Twilio има достатъчно време за реакция——и прекъсване.
Дори се опитах да включа много дълъг глагол за пауза от 100 секунди във върнатия отговор в рамките на greeting(), но това просто беше игнорирано.
И така... какво пропускам? Всякакви идеи ще бъдат оценени.
@app.route("/call/dail/<number>", methods=['POST'])
def dial(number):
call = client.calls.create(
status_callback='http://<tunnel>.ngrok.io/call/status_update',
status_callback_method='GET',
status_callback_event=['initiated', 'answered', 'completed'],
twiml='<Response><Pause length="5"/></Response>',
to=number,
from_=from_number
)
return call.sid
@app.route("/call/status_update", methods=['GET'])
def call_status_update():
called_number = request.values.get("Called")
callsid = request.values.get("CallSid")
callstatus = request.values.get("CallStatus")
if callstatus == 'in-progress':
return redirect(url_for('greeting'))
return "Waiting for someone to pickup..."
@app.route("/call/greeting", methods=['GET', 'POST'])
def greeting():
response = VoiceResponse()
wait_message = 'This is a greeting.'
response.say(wait_message)
return Response(str(response), 200, mimetype="application/xml")