Есть ли 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)
Другие вопросы по тегам