Перейти к основному содержанию
Полный каталог, сформированный на основе схемы, см. в всех примерах.

Что это такое

Обработка событий завершения звонков, записи и транскрипции в WhatsApp.

Перед началом работы

  • Создайте публичный эндпоинт HTTPS в вашем приложении.
  • Настройте эндпоинт Webhook в YCloud для необходимых типов событий.
  • Надежно сохраните секретный ключ подписи эндпоинта.
  • Обеспечьте идемпотентность обработки событий.

Как это работает

YCloud отправляет запрос HTTP POST при возникновении события. Проверьте подпись, надежно сохраните событие, верните ответ 2xx и выполняйте длительные операции асинхронно.

Запрос

В приведенных ниже сценариях показаны запросы, отправляемые на ваш Webhook URL. Используйте id события как идентификатор доставки, а type — для маршрутизации полезной нагрузки.

Ответ

Возвращайте статус 2xx после принятия события.
Сведения о настройке эндпоинта, проверке подписи и механизме повторных попыток см. в разделе Настройка Webhook.
Как бизнес, так и пользователь WhatsApp могут завершить звонок в любой момент. Когда бизнес или пользователь WhatsApp завершает звонок, вы получаете Webhook Call Terminate:

Звонок завершен

Запрос

Ответ

Подтвердите доставку после надежного сохранения события.

Пояснение

Маршрутизируйте событие по type, дедуплицируйте его по id и переносите медленные или подверженные сбоям задачи в асинхронный обработчик.

Сбой звонка

Запрос

Ответ

Подтвердите доставку после надежного сохранения события.

Пояснение

Маршрутизируйте событие по type, дедуплицируйте его по id и переносите медленные или подверженные сбоям задачи в асинхронный обработчик.

Запись звонка доступна

Для звонка, инициированного через API с включенной записью, whatsapp.call.recording.updated сообщает о доступности записи или о неустранимой ошибке обработки.

Запрос

Ответ

Подтвердите доставку после надежного сохранения события.

Пояснение

Используйте callingRecording.wacid для идентификации звонка и phoneId для идентификации номера телефона компании. Скачивайте mediaAssetId только тогда, когда status имеет значение AVAILABLE. Обработка записи отделена от результата завершения звонка. В случае FAILED проверьте error.code и error.retryable. См. раздел записи и транскрипции.

Сбой транскрипции звонка

Для звонка, инициированного через API с включенной транскрипцией, whatsapp.call.transcription.updated сообщает о доступности транскрипции или о неустранимой ошибке обработки.

Запрос

Ответ

Подтвердите доставку после надежного сохранения события.

Пояснение

Считывайте callingTranscription, а не callingRecording. В этом примере status имеет значение FAILED, а error.retryable равно false. Не пытайтесь скачать ресурс с ошибкой. При результате AVAILABLE для скачивания используется mediaAssetId; результат транскрипции не зависит от результата записи и статуса завершения звонка.