Рассылки в WhatsApp| Слот Notification
Last updated
Last updated
Слот Notification предназначен для отправки рассылочных сообщений. Слот позволяет отправить сообщение в случае, когда Чат с Собеседником еще не создан, или Чат создан, но Агенту нельзя писать в Чат первым после определенного таймаута (ограничение некоторых каналов).Слот Notification принимает Запрос на рассылку с данными для рассылки из внешней системы (CRM, например), формирует и отправляет запрос в Канал Проекта, затем получает ответ из Конечный канал и в зависимости от полученного статуса рассылки Общение переходит в один из Подслотов.Корректный Запрос на рассылку через Слот Notification создаст Чат, если его нет в Платформа, даже в случае, когда Собеседника не существует в Конечный канал (например, номер телефона адресата в Запрос на рассылку корректный, но человек не зарегистрирован в WhatsApp)Слот Notification является комплексным Слотом и не может существовать без трех Дочерний слотов Notification fail, Notification no account и Notification success, которые начинают собственные ветки, в которые будет осуществлен переход после получения статуса рассылки.Добавить другие дочерние слоты невозможно.
Подслот Notification fail предназначен для продолжения Сценарий агента, если не удалось отправить рассылку в Конечный канал.
Подслот Notification no account предназначен для продолжения Сценарий агента после рассылки, которая была успешно отправлена в Конечный канал, но Конечный канал сообщил, что получатель не найден (например, у получателя нет аккаунта WhatsApp при рассылках через WhatsApp).
Подслот Notification success предназначен для продолжения Сценарий агента после рассылки, которая была успешно отправлена в Конечный канал и был получен успешный статус либо ответ Собеседника.
360dialog (Whatsapp)
Номер телефона в формате
phone_number
Поле типа “текст”;
От 10 до 18 цифр (от 11 до 19 с учетом +);
Допускается знак + в начале.
В виду особенностей работы 360dialog, порядок получения статусов-ответов на рассылку может быть спутан, либо статусы прийти после ответа собеседника, поэтому для перехода в ветку Notification success учитываем первое из следующих событий, поступившее из канала после отправки рассылки
статус sent на рассылку
статус delivered на рассылку
статус read на рассылку
Сообщение собеседника
Проверка наличия Чата в Whatsapp (360dialog) 360dialog предоставляет специальный метод, позволяющий проверить наличие аккаунта:
Если метод возвращает информацию об отсутствии аккаунта, то Сценарий агента идет по ветке Подслота Notification no account:
в Контекстная переменная notification_raw_status записывается {‘description’:’no account on <номер телефона\ключевой идентификатор собеседника>’, ‘channel_response’: тело ответа от канала as is (объект) }(если application/json = объект, если text = str; в иных cлучаях записывается null).
в Контекстная переменная notification_status записывается ‘no_account’.
В выгрузке истории сообщений будет записано Check account <номер телефона>: No account.
Если аккаунт найден, то выполняется рассылка.
Номер телефона в формате
phone_number
Поле типа “текст”;
От 10 до 18 цифр (от 11 до 19 с учетом +);
Допускается знак + в начале.
POST <https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'> headers: {"Content-Type": "application/json"} body: { "phone_number": "79291642944", "is_urgent": true }
В виду особенностей работы Edna, порядок получения статусов-ответов на рассылку может быть спутан, либо статусы прийти после ответа собеседника, поэтому для перехода в ветку Notification success учитываем первое из следующих событий, поступившее из канала после отправки рассылки
статус sent на рассылку
статус delivered на рассылку
статус read на рассылку
Сообщение собеседника
В случае, если в поле Content слота указаны данные несуществующего или несогласованного шаблона рассылки и при этом:
нет Активный диалог с получателем рассылки: в ответе придет: ‘status’: ‘UNDELIVERED’, ‘error’: ‘not-template-match’, произойдет выход в Notification fail.
есть Активный диалог: получателю придет текст, указанный в поле Content и произойдет выход в Notification success
Проверка наличия Чата в Whatsapp (360dialog) 360dialog предоставляет специальный метод, позволяющий проверить наличие аккаунта:
Если метод возвращает информацию об отсутствии аккаунта, то Сценарий агента идет по ветке Подслота Notification no account:
в Контекстная переменная notification_raw_status записывается {‘description’:’no account on <номер телефона\ключевой идентификатор собеседника>’, ‘channel_response’: тело ответа от канала as is (объект) }(если application/json = объект, если text = str; в иных cлучаях записывается null).
в Контекстная переменная notification_status записывается ‘no_account’.
В выгрузке истории сообщений будет записано Check account <номер телефона>: No account.
Если аккаунт найден, то выполняется рассылка.
Номер телефона в формате
phone_number
Поле типа “текст”;
От 10 до 18 цифр (от 11 до 19 с учетом +);
Допускается знак + в начале.
POST <https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'> headers: {"Content-Type": "application/json","Authorization: 3cb81e05cf1679e1af9e5d9164ab89"}Токен авторизации берется из личного кабинета Chat2Deskbody: { "phone_number": "79291642944", "is_urgent": true }
На данный момент в канале Chat2Desk не реализован метод проверки наличия аккаунта WhatsApp. Если на указанном номере нет зарегистрированного аккаунта WhatsApp, Сценарий агента идет по ветке Notification fail
Настройки Слота отличаются в зависимости от Конечный канал, подробную информацию том, как создать Слот Notification и настроить рассылки в разных Конечный канал читайте в статьях:
Рассылки в 360dialog Рассылки в Edna Pulse Рассылки в Edna Chat Center Рассылки в Chat2Desk
Запрос на рассылку должен обязательно включать идентификатор Собеседника в конечном канале на первом уровне JSON-а, случае c WhatsApp, это номер телефона. По этому идентификатору Платформа вычислит Чат или в случае, если он не существует, создаст новый Чат для отправки запроса. Название ключа зависит от Конечный канал.
Формат идентификатора:
поле типа “текст”;
От 10 до 18 цифр (от 11 до 19 с учетом +);
Допускается знак + в начале.
Запрос на рассылку может быть срочным или несрочным (параметр "is_urgent"):
значение true — для срочного Запрос на рассылку — выполняется незамедлительно и прерывает Активный диалог.
значение false — для несрочного Запрос на рассылку — выполняется после закрытия Диалога.
если ключ is_urgent не найден, используется значение по умолчанию false.
Запрос на рассылку должен быть POST-запросом с валидным телом JSON и заголовком "Content-Type": "application/json"
Лимит на запросы на рассылку по умолчанию — 20 запросов в секунду на Компания. Лимит можно изменить через техподдержку.
Пример Запрос на рассылку в 360dialog (Whatsapp): POST <http://localhost:10040/notification/13::9de6d0fbc9a547659457a0f7a0e21eda/chat> headers: {"Content-Type": "application/json"} body: { "phone_number": "79291642944", "is_urgent": true, "extra": { "foo": 42 } }
Пример Запрос на рассылку в Edna Chat Center и Edna Pulse : POST <https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'> headers: {"Content-Type": "application/json"} body: { "phone_number": "79291642944", "is_urgent": true }
Пример Запрос на рассылку в Chat2Desk: POST <https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'> headers: {"Content-Type": "application/json", "Authorization: 3cb81e05cf1679e1af9e5d9164ab89"} Токен авторизации берется из личного кабинета Chat2Desk body: { "phone_number": "79291642944", "is_urgent": true }
Работа слота начинается с момента получения Платформа Запрос на рассылку из внешней системы.
В процессе обработки входящего запроса на рассылку выполняется ряд операций. По итогу выполнения операций вы можете получить один из указанных в таблице статусов:
HTTP status: 429
Превышение Лимит на запросы на рассылку для Компания
HTTP status: 405
Запрос на рассылку не с POST-методом
HTTP status: 400
в Запрос на рассылку нет заголовка content-type: application/json
невалидный JSON в теле Запрос на рассылку
HTTP status: 404
Не найдена Компания, связанная с Идентификатор рассылки (он содержится в вебхуке в поле Chatbot webhook)
HTTP status: 400 invalid BODY: “status”: “Recipient ID not found or invalid.”
идентификатор Собеседника не был найден или он невалидный
HTTP status: 404 Not Found BODY: “status”: “Notification not found”
нет обученного Агента со Слотом с таким вебхуком
HTTP status: 404 Not Found BODY: “status”: “There is no active channel for received event”
Канал Проекта данного слота Notification удален\неактивен
HTTP status: 200 OK BODY: “status”: “Accepted for execution” “task_id”:
Запрос на рассылку поставлен в очередь на выполнение
Далее слот Notification выполняет отправку запроса на рассылку в выбранный в поле Destination Channel Конечный канал.
В случае Chat2Desk:
Если в настройках канала указан ID оператора, то в тело запроса на рассылку подставляется поле operator_id, пример:
{ ... "operator_id": 123}
Если в настройках канала не указан ID оператора, то в тело запроса на рассылку подставляется поле open_dialog со значением false:, при этом новый Диалог в Платформа не открывается. Пример: { ... "open_dialog": false
По итогу выполнения данного шага вы можете получить один из указанных в таблице результатов:
Не удалось составить запрос по какой-либо причине, например, не удалось спарсить и создать переменную, которая используется в id шаблона
{‘description’:’failed to build request’}
‘failed’
переход в ветку Notification fail
Edna Chat Center,Edna Pulse,360dialog (Whatsapp),360dialog (cloud),Chat2Desk
Конечный канал принял запрос и ответил успешным ответом
{‘description’:’received by channel’, ‘channel_response’: тело ответа от канала (объект)}(если application/json = объект, если text = str; в иных cлучаях записывается null).
‘sent’
Агент ожидает статуса обработки рассылки от Конечный канал
Edna Chat Center,Edna Pulse,360dialog (Whatsapp),360dialog (cloud),Chat2Desk
{‘description’:’channel error <код ответа> ’channel_response’: тело ответа от канала}Если в ответе на запуск рассылки пришел JSON-объект, то в ’channel_response’ сохраняется этот JSON-объект. Если в ответе пришел текст, то сохраняется текст. В ином случае сохраняется None.
‘failed’
переход в ветку Notification fail
Edna Chat Center,Edna Pulse,360dialog (Whatsapp),360dialog (cloud),Chat2Desk
{‘description’:’channel inaccessible’}
‘failed’
переход в ветку Notification fail
Edna Chat Center,Edna Pulse,360dialog (Whatsapp),360dialog (cloud),Chat2Desk
{‘status’: ‘UNDELIVERED’, ‘error’: ‘not-template-match’}
переход в ветку Notification fail
Edna Chat Center,Edna Pulse
получателю придет текст, указанный в поле Content, переход в ветку Notification success
Edna Chat Center,Edna Pulse
После того как Конечный канал принял запрос на рассылку, происходит переход в один из Подслотов:
Переход в ветку Notification Fail
{‘description’:’channel couldn’t sent message’, ‘channel_response’: тело ответа от канала}Если в ответе на запуск рассылки пришел JSON-объект, то в ’channel_response’ сохраняется этот JSON-объект. Если в ответе пришел текст, то сохраняется текст. В ином случае сохраняется None
‘failed’
Edna Chat Center,Chat2Desk,Edna Pulse,360dialog (Whatsapp),360dialog (cloud)
Переход в ветку Notification no account
Отсутствие аккаунта на данном идентификаторе Собеседника (в случае WhatsApp — номере телефона)
не создается в Контекст Чата
‘no_account’
360dialog (Whatsapp),360dialog (cloud)
Переход в ветку Notification no account
Отсутствие аккаунта на данном идентификаторе Собеседника (в случае WhatsApp — номере телефона)
{‘description’:’no account on <номер телефона\ключевой идентификатор собеседника>’, ‘channel_response’: тело ответа от канала as is (объект)} (если application/json = объект, если text = str; в иных cлучаях записывается null).
‘no_account’
Edna Chat Center,Chat2Desk,Edna Pulse
Переход в ветку Notification Success
Получение статуса отправки, доставки или прочтения сообщения Собеседником
{‘description’:’success’,‘channel_response’: тело ответа от канала (объект)} (если application/json = объект, если text = str; в иных cлучаях записывается null).
‘delivered’
Edna Chat Center,Chat2Desk,Edna Pulse,360dialog (Whatsapp),360dialog (cloud)
Переход в ветку Notification Success
получение Сообщение собеседника
{‘description’:’success’, ‘channel_response’: тело принятного запроса от канала (объект), откуда распарсили текст Сообщение собеседника} (если application/json = объект, если text = str; в иных cлучаях записывается null).
‘delivered’
Edna Chat Center,Chat2Desk,Edna Pulse,360dialog (Whatsapp),360dialog (cloud)
Из-за особенностей 360dialog, если до ответа а на рассылку попытается отправить новые сообщения методом обычной отправки, а не рассылки (если после а Notification success стоят ы Text, Attachment, Button Menu), то канал ответит ошибкой и не примет их.
Реализация а позволяет прописать в поле Content текст, не соответствующий согласованному шаблону рассылки. При отправке рассылки с таким сообщением, если есть Активный диалог, то придет текст и success, а если такого нет, то ошибка и ветка failed
Из-за особенностей Edna, если до ответа Собеседника на рассылку Агент попытается отправить новые сообщения методом обычной отправки, а не рассылки (если после а Notification success стоят Слоты Text, Attachment, Button Menu), то канал ответит ошибкой и не примет их.
Слот Notification собирает запрос в Конечный канал из параметров на вкладке Destination и идентификатора собеседника (phone_number).
Запрос в ушел, но в ответ получен response с кодом 4хх или 5хх
Не удалось выполнить запрос в (канал недоступен, пинг не идет и т.д.)
В поле Content слота указаны данные несуществующего или несогласованного шаблона рассылки, при этом нет с получателем рассылки
В поле Content слота указаны данные несуществующего или несогласованного шаблона рассылки, при этом есть с получателем рассылки
Любые проблемы, относящиеся к данной конкретной задаче на рассылку, кроме отсутствия аккаунта на данном идентификаторе а