Переадресация вызовов Twilio по очереди - как отключиться, если человек поднимает звонок
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say> Connecting call to Pinto </Say>
<Dial record ="record-from-answer" timeout="10" hangupOnStar ="true">
<Number>XXXXXXXX</Number>
</Dial>
<Say> Pinto is not picking up the call, now connecting call to Management </Say>
<Dial record ="record-from-answer" timeout="10" hangupOnStar ="true">
<Number>XXXXXXXX</Number>
</Dial>
<Say> No one is picking up right now. Please text us at +12022171828 </Say>
</Response>
Выше показаны потоки переадресации вызовов по очереди.
Я ищу здесь: если 1-й пользователь присутствовал на вызове, он не должен инициировать вызов на 2-й номер, а также не должен говорить текстовое сообщение, которое находится в последней строке. Если 1-й пользователь отключился, перенаправьте вызов на 2-й номер - если 2-й номер не принимает вызов, он должен сказать текстовое сообщение, которое находится на последней строке, если 1-й пользователь отключился, затем перенаправить вызов на 2-й номер - если 2-й номер принял вызов, он не должен говорить текстовое сообщение, которое находится на последней строке
Также я хочу реализовать обратный вызов Transcribe & Transcribe с помощью TwiML. Итак, пожалуйста, помогите мне, как нам с этим делать?
1 ответ
Чтобы выполнить этот поток, вы не можете выполнить все в одном ответе TwiML. Вместо этого вам нужно будет предоставить элемент с URL-адресом в атрибуте, чтобы после завершения первого вызова Twilio создавал веб-перехватчик, чтобы узнать, что делать дальше.
Итак, ваш первый ответ TwiML должен выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say> Connecting call to Pinto </Say>
<Dial record="record-from-answer" timeout="10" hangupOnStar="true" action="/complete">
<Number>XXXXXXXX</Number>
</Dial>
</Response>
Выше я добавил
action="/complete"
к, и это означает, что нам нужно приложение, чтобы иметь возможность отвечать на HTTP-запросы к
/complete
также. Нам также нужно, чтобы это было приложение, а не статический ответ, поскольку нам нужно выяснить, был ли получен ответ на вызов, и решить, что делать дальше и каким TwiML отвечать.
Мы можем это сделать, потому что одним из параметров, которые Twilio отправляет URL-адресу действия, является . Этот параметр может быть «завершен», «занят», «нет ответа», «сбой» или «отменен», и он сообщает вам, что произошло в первом вызове.
Итак, в вашем случае вы захотите проверить, и если он "завершен", вам не нужно возвращать следующий и. Если, однако,
DialCallStatus
один из других статусов, вы хотите вернуть следующий
<Say>
а также . Это должно включать еще один
action
URL, который делает такой же выбор в конце второго
<Dial>
.
Я не уверен, на каком языке вы строите, но идея псевдокода будет выглядеть так:
post '/complete' do
if params["DialCallStatus"] != "completed"
return "<Response><Hangup/></Response>"
else
return "<Response><Say>Pinto is not picking up the call, now connecting call to Management</Say><Dial ....></Response>"
end
end