#twilio #twilio-api #twilio-twiml #twilio-click-to-call #twimlet
Вопрос:
<?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-й номер принял вызов, то он не должен говорить текстовое сообщение, которое находится в последней строке
Также я хочу реализовать транскрибирование и обратный вызов транскрибирования с помощью TwiML. Итак, пожалуйста, помогите мне, как нам с этим поступить?
Ответ №1:
Чтобы выполнить этот поток, вы не можете выполнить все в одном ответе TwiML. Вместо этого вам нужно будет указать <Dial>
URL-адрес элемента в action
атрибуте, чтобы после завершения первого вызова 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"
к <Dial>
и это означает, что нам нужно приложение, которое также сможет отвечать на HTTP-запросы /complete
. Нам также нужно, чтобы это было приложение, а не статический ответ, так как нам нужно выяснить, был ли получен ответ на вызов или нет, и решить, что делать дальше и каким TwiML отвечать.
Мы можем это сделать, потому что один из параметров, который Twilio отправляет на URL-адрес действия, таков DialCallStatus
. Этот параметр может быть «завершено», «занято», «нет ответа», «не удалось» или «отменено», и это говорит вам о том, что произошло при первом вызове.
Итак, в вашем случае вы захотите проверить DialCallStatus
и, если оно «завершено», вам не нужно возвращать следующее <Say>
и <Dial>
. Однако, если DialCallStatus
это один из других статусов, вы хотите вернуть следующий <Say>
и <Dial>
. Это <Dial>
должно включать другой 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
Комментарии:
1. Здравствуйте @philnash, спасибо за это разъяснение. Я новичок в этом twilio и хотел бы знать, как получить/задать URL-адрес действия. Также у меня есть еще одно сомнение, например, можем ли мы напрямую использовать TwiML Bin для переадресации вызовов, голосовой почты, транскрипции?
2. URL-адрес действия задан в XML, см. Пример в моем ответе. Вы можете использовать ячейки TwiML для статических ответов TwiML, но для создания динамических ответов, например, когда вам нужно отвечать по-разному в зависимости от статуса вызова, вам потребуется какое-то приложение. Если у вас его нет, вы можете изучить функции Twilio.
3. Я не уверен, на каком языке вы строите — на данный момент я просто пытаюсь использовать TwiML. Здесь после только нужно проверить, какой язык подходит
4. Вы можете создавать на любом языке, на котором хотите, вам просто нужно уметь отвечать на HTTP-запросы и возвращать XML.
5. Еще одно, что я хотел бы знать, это то, что я в основном использую это приложение для просмотра всего статуса, который приходит из Twilio. В основном ищу — 1) Я хочу переслать записанные звонки, голосовые сообщения, расшифрованные данные в приложение ( front.com ) — поддерживает ли Twilio эту интеграцию? Потому что впереди я получаю ответы в чате Twilio один на один-так что предпочитаю для всех. Если это позволяет показывать записи спереди, как мы можем это сделать?