Перейти к основному содержанию

Что это такое

Подпишитесь на whatsapp.meta_business_agent.handover.updated. Вы получаете это событие, когда YCloud обрабатывает поддерживаемый обратный вызов передачи/управления для созданного через API Meta Business Agent. Оно сообщает о передаче управления, а не о результатах назначения в Inbox или пользовательского сообщения о передаче диалога. В отличие от двух событий Echo, это событие намеренно сохраняет объект whatsappMetaBusinessAgent, поскольку метаданные агента и управления являются частью контракта передачи управления.

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

  1. Подключите агента через Public REST API.
  2. Подпишите активную конечную точку Webhook в том же аккаунте на whatsapp.meta_business_agent.handover.updated.
  3. Проверяйте YCloud-Signature по необработанному телу запроса, надежно принимайте каждое событие и обрабатывайте его идемпотентно.
Агенты, созданные через консоль, не отправляют этот клиентский Webhook. Синхронизация их Inbox представляет собой отдельный процесс.
Инструкции по настройке конечной точки см. в разделе Настройка Webhook.

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

Во всех примерах используются подстановочные идентификаторы. Маршрутизируйте по внешнему свойству type и считывайте whatsappMetaBusinessAgent, а не whatsappMessage, whatsappEchoMessage или data. Устраняйте дубликаты повторных доставок с помощью внешнего поля id. Вложенное свойство timestamp является целым числом в миллисекундах Unix; createTime представляет собой строку в формате RFC 3339.
  • controlState в настоящее время имеет значение APP_CONTROL_TAKEN для поддерживаемых обратных вызовов передачи управления агентом API.
  • consumerPhoneNumber берется из sender.phone_number обратного вызова передачи управления и нормализуется до формата E.164, если номер корректен. Это не рабочий номер компании и не phoneNumberId.
  • Текущий контракт передачи управления не предоставляет recipientUserId или parentRecipientUserId. Отсутствующие идентификационные данные клиента не восстанавливаются из соседнего обратного вызова сообщения.
  • В приведенном ниже примере control_passed поле actor определяет ID приложения предыдущего владельца, а не принимающего сотрудника.
  • reason является необязательными метаданными провайдера. Работайте с ним как со свободной строкой, а не фиксированным перечислением enum.
  • Это не уведомление для каждого запроса take, release, Set Live или Set Draft. Обратные вызовы управления, обработанные, пока агент находится в статусе Draft, игнорируются.
Полезная нагрузка не генерирует фиктивную личность клиента. Поле consumerPhoneNumber опускается, если обратный вызов не содержит корректного номера телефона, и никакой BSUID не выводится из соседних сообщений. phoneNumberId обозначает бизнес-номер, который может обслуживать множество клиентов.
Не рассматривайте это событие как подтверждение того, что сотрудник был назначен или что пользовательское сообщение о передаче диалога было отправлено или доставлено.

Запрос

YCloud отправляет эти тела JSON в запросах HTTP POST на настроенный вами URL-адрес Webhook.

Ответ

Возвращайте ответ 2xx после надежного сохранения события. Длительные операции выполняйте асинхронно.

Агент передает управление вашему приложению

Запрос

APP_CONTROL_TAKEN сообщает о передаче управления, а не о назначении сотрудника в Inbox или доставке пользовательского сообщения о передаче диалога. В этом примере actor обозначает ID приложения предыдущего владельца.

Ответ

Пояснение

Используйте consumerPhoneNumber, чтобы сопоставить переход управления с клиентом, когда это поле присутствует. Не делайте выводов о назначении в Inbox или доставке сообщения на основании этого события.

Связанные примеры