Я не могу, хоть убей, заставить Twilio выполнять инструкции twiml в Flask.redirect. Я не вижу ничего плохого, когда выполняю запрос через Postman, так что мне не хватает? Я также вижу перенаправление в выходных данных консоли из Flask.
Ожидаемое поведение заключается в том, что при ответе на исходящий вызов (CallStatus == 'in-progress') вызов перенаправляется на приветственное сообщение. Что действительно происходит, так это то, что звонок длится 5 секунд - что определяется в dial (), чтобы Twilio успевал среагировать - и вешает трубку.
Я даже попытался включить глагол очень длинной паузы в 100 секунд в ответ, возвращаемый с помощью Hello (), но это было просто проигнорировано.
Итак ... что мне не хватает? Любые идеи будут оценены.
@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")