Переадресация вызовов 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
Другие вопросы по тегам