Есть ли Twilio webhook, который информирует меня о пользователях, которые вешают трубку, прежде чем быть в очереди
У меня есть веб-хук "входящий звонок" для приложения контакт-центра, над которым я работаю, и он в основном говорит собеседнику несколько слов ("Добро пожаловать в компанию и т. Д."), А затем добавляет их в очередь вызовов.,
Я могу добавить дополнительные веб-хуки для событий 'action' и 'wait' для очереди, которые позволяют мне проверять ход вызова в очереди, однако я изо всех сил пытаюсь найти способ обработки вызовов, которые зависают до входа в очередь. Примером может служить случай, когда кто-то вешает трубку, когда система говорит "Добро пожаловать в компанию и т. Д.".
Я знаю, что могу автоматически добавить их в очередь и воспроизвести приветственное сообщение в веб-хуке 'wait url', однако это сообщение будет повторяться в цикле.
1 ответ
Twilio разработчик евангелист здесь.
Вы можете получить webhooks для статусов звонков входящих звонков. Вам просто нужно добавить URL к вашему номеру телефона для "Изменение статуса звонка".
После завершения вызова вы получите веб-крючок, позволяющий отслеживать его ход.
В качестве альтернативы, как вы сказали, вы можете воспроизвести сообщение как часть waitUrl
когда <Enqueue>
Звонок Вам не нужно будет повторять это, вы можете вернуть TwiML как ответ наwaitUrl
, Это TwiML может включать <Redirect>
так что вы можете прочитать приветственное сообщение, а затем перенаправить, например, в список воспроизведения музыки, который затем зациклится.
Дайте мне знать, если это поможет.
Более простой способ с моей стороны, как здесь закодировано, - использовать цикл while и запрашивать twilio api для статуса вызова из call
sid
account_sid = os.environ.get('TWILIO_ACCOUNT_SID')
auth_token = os.environ.get('TWILIO__AUTH_TOKEN')
client = Client(account_sid, auth_token)
while True:
r = client.calls(sid).fetch()
c = to_dict(r)
print(f'{datetime.now().strftime("%Y%m%d_%H%M%S")} from={c["from"]} to={c["to"]} status={c["status"]}')
# ts . . .
stop = c["status"] not in ['queued', 'ringing', 'in-progress'] # stop by :completed
if stop: break
time.sleep(3)