> For the complete documentation index, see [llms.txt](https://chatme-ai-4.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chatme-ai-4.gitbook.io/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/rassylki-v-whatsapp-or-slot-notification.md).

# Рассылки в WhatsApp| Слот Notification

## Назначение и общая информация

Слот Notification предназначен для отправки рассылочных сообщений. Слот позволяет отправить сообщение в случае, когда Чат с Собеседником еще не создан, или Чат создан, но Агенту нельзя писать в Чат первым после определенного таймаута (ограничение некоторых каналов).Слот Notification принимает Запрос на рассылку с данными для рассылки из внешней системы (CRM, например), формирует и отправляет запрос в Канал Проекта, затем получает ответ из Конечный канал и в зависимости от полученного статуса рассылки Общение переходит в один из Подслотов.Корректный Запрос на рассылку через Слот Notification создаст Чат, если его нет в Платформа, даже в случае, когда Собеседника не существует в Конечный канал (например, номер телефона адресата в Запрос на рассылку корректный, но человек не зарегистрирован в WhatsApp)Слот Notification является комплексным Слотом и не может существовать без трех Дочерний слотов Notification fail,  Notification no account и Notification success, которые начинают собственные ветки, в которые будет осуществлен переход  после получения статуса рассылки.Добавить другие дочерние слоты невозможно.

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-8SNwkXvIiF/ac89ba0117ffe55539ef0c5d89764ea0b8c5c667fef10b04d42df4548f5677098c51f65efb4015154fb580417fd71f1b0b2c308b51201e7a6a8847141d73c86a6e786da09287018ae88877e34baa927abcbe683616adb9899421d74e63a928a13386af97)

Подслот Notification fail предназначен для продолжения Сценарий агента, если не удалось отправить рассылку в Конечный канал.&#x20;

Подслот Notification no account предназначен для продолжения Сценарий агента после рассылки, которая была успешно отправлена в Конечный канал, но Конечный канал сообщил, что получатель не найден (например, у получателя нет аккаунта WhatsApp при рассылках через WhatsApp).

Подслот Notification success предназначен для продолжения Сценарий агента после рассылки, которая была успешно отправлена в Конечный канал и был получен успешный статус либо ответ Собеседника.

<table><thead><tr><th>Поддерживаемый канал</th><th>Иконка в шапке слота</th><th>Ключевой идентификатор собеседника в конечном канале</th><th>Ключ идентификатора в теле запроса на рассылку</th><th>Валидация Идентификатор собеседника в запросе на рассылку</th><th>Пример входящего запроса на рассылку</th><th>Notification success</th><th>Notification fail</th><th>Notification no account</th><th>Поддержка метода проверки наличия аккаунта Проверка наличия Чата в Whatsapp (360dialog) 360dialog предоставляет специальный метод, позволяющий проверить наличие аккаунта: 1. Если метод возвращает информацию об отсутствии аккаунта, то Сценарий идет по ветке Подслота Notification no account: 1. в Контекстная переменная notification_raw_status записывается {‘description’:’no account on &#x3C;номер телефона\ключевой идентификатор собеседника>’, ‘channel_response’: тело ответа от канала as is (объект) }(если application/json = объект, если text = str; в иных cлучаях записывается null). 2. в Контекстная переменная notification_status записывается ‘no_account’. 3. В выгрузке истории сообщений будет записано Check account &#x3C;номер телефона>: No account. 2. Если аккаунт найден, то выполняется рассылка. Проверка наличия Чата в Whatsapp (360dialog) 360dialog предоставляет специальный метод, позволяющий проверить наличие аккаунта: 1. Если метод возвращает информацию об отсутствии аккаунта, то Сценарий идет по ветке Подслота Notification no account: 1. в Контекстная переменная notification_raw_status записывается {‘description’:’no account on &#x3C;номер телефона\ключевой идентификатор собеседника>’, ‘channel_response’: тело ответа от канала as is (объект) }(если application/json = объект, если text = str; в иных cлучаях записывается null). 2. в Контекстная переменная notification_status записывается ‘no_account’. 3. В выгрузке истории сообщений будет записано Check account &#x3C;номер телефона>: No account. 2. Если аккаунт найден, то выполняется рассылка.</th></tr></thead><tbody><tr><td>360dialog (Whatsapp)</td><td><img src="https://codahosted.io/docs/QZi0KPCnEG/blobs/bl-Lsvwz_pnph/9a72649269fe5e87d5b92fd749c84a0e9c9a74c806de7446de27edf87a341332ce222e7d5246ac5c8562ad2bdc3f405a953d23967b2a586051b984d9629a1ffd0c3c0728608a11f32a55562741b174c8dc5b0e01b7123b347bc2fa40e55d3a279b8cd3ef" alt="wa.PNG"></td><td>Номер телефона в формате</td><td>phone_number</td><td><ol><li>Поле типа “текст”;</li><li>От 10 до 18 цифр (от 11 до 19 с учетом +);</li><li>Допускается знак + в начале.</li></ol></td><td><pre><code>POST &#x3C;URL>headers: {"Content-Type": "application/json"}body: {"phone_number": "79291642944","is_urgent": true,"extra": {"foo": 42}}
</code></pre></td><td><p>В виду особенностей работы 360dialog, порядок получения статусов-ответов на рассылку может быть спутан, либо статусы прийти после ответа собеседника, поэтому для перехода в ветку Notification success учитываем первое из следующих событий, поступившее из канала после отправки рассылки</p><ul><li>статус sent на рассылку</li><li>статус delivered на рассылку</li><li>статус read на рассылку</li><li>Сообщение собеседника</li></ul><p>Из-за особенностей 360dialog, если до ответа Собеседника на рассылку Агент попытается отправить новые сообщения методом обычной отправки, а не рассылки (если после Подслота Notification success  стоят Слоты Text, Attachment, Button Menu), то канал ответит ошибкой и не примет их.</p></td><td>Реализация Слота позволяет прописать в поле Content текст, не соответствующий согласованному шаблону рассылки. При отправке рассылки с таким сообщением, если есть Активный диалог, то придет текст и success, а если такого нет, то ошибка и ветка failed</td><td></td><td><p>Проверка наличия Чата в Whatsapp (360dialog)  <br>360dialog предоставляет специальный метод, позволяющий проверить наличие аккаунта:</p><ol><li>Если метод возвращает информацию об отсутствии аккаунта, то  Сценарий агента идет по ветке Подслота Notification no account:</li><li><p></p><ol><li>в Контекстная переменная notification_raw_status записывается<br>{‘description’:’no account on &#x3C;номер телефона\ключевой идентификатор собеседника>’,<br>‘channel_response’: тело ответа от канала as is (объект)<br>}(если application/json = объект, если text = str; в иных cлучаях записывается null).</li><li>в Контекстная переменная notification_status записывается  ‘no_account’.</li><li>В выгрузке истории сообщений будет записано Check account &#x3C;номер телефона>: No account.</li></ol></li><li>Если аккаунт найден, то выполняется рассылка.</li></ol></td></tr><tr><td>Edna Pulse</td><td><img src="https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-YRov2W1Uaa/50278b7a38376fa202e4f7e3bdc0df366e981e8dc6943df2a6d702d04702ef49efab013797e528b97275d72566492b5179ee14a565aae4af39f5b93d3d5efa46b3837d0ae3c3d4d166f7e4a3713db463e96296263e1f6231e9b15e9ac0e2db0716ecac01" alt="image.png"></td><td>Номер телефона в формате</td><td>phone_number</td><td><ol><li>Поле типа “текст”;</li><li>От 10 до 18 цифр (от 11 до 19 с учетом +);</li><li>Допускается знак + в начале.</li></ol></td><td>POST &#x3C;https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'><br>headers: {"Content-Type": "application/json"}<br>body: {<br>"phone_number": "79291642944",<br>"is_urgent": true<br>}</td><td><p>В виду особенностей работы Edna, порядок получения статусов-ответов на рассылку может быть спутан, либо статусы прийти после ответа собеседника, поэтому для перехода в ветку Notification success учитываем первое из следующих событий, поступившее из канала после отправки рассылки</p><ul><li>статус sent на рассылку</li><li>статус delivered на рассылку</li><li>статус read на рассылку</li><li>Сообщение собеседника</li></ul><p>Из-за особенностей Edna, если до ответа Собеседника на рассылку Агент попытается отправить новые сообщения методом обычной отправки, а не рассылки (если после Подслота Notification success  стоят Слоты Text, Attachment, Button Menu), то канал ответит ошибкой и не примет их.</p></td><td><p>В случае, если в поле Content слота указаны данные несуществующего или несогласованного шаблона рассылки и при этом:</p><ul><li>нет Активный диалог с получателем рассылки: в ответе придет: ‘status’: ‘UNDELIVERED’, ‘error’: ‘not-template-match’, произойдет выход в Notification fail.</li><li>есть Активный диалог: получателю придет текст, указанный в поле Content и произойдет выход в Notification success</li></ul></td><td></td><td><p>Проверка наличия Чата в Whatsapp (360dialog)  <br>360dialog предоставляет специальный метод, позволяющий проверить наличие аккаунта:</p><ol><li>Если метод возвращает информацию об отсутствии аккаунта, то  Сценарий агента идет по ветке Подслота Notification no account:</li><li><p></p><ol><li>в Контекстная переменная notification_raw_status записывается<br>{‘description’:’no account on &#x3C;номер телефона\ключевой идентификатор собеседника>’,<br>‘channel_response’: тело ответа от канала as is (объект)<br>}(если application/json = объект, если text = str; в иных cлучаях записывается null).</li><li>в Контекстная переменная notification_status записывается  ‘no_account’.</li><li>В выгрузке истории сообщений будет записано Check account &#x3C;номер телефона>: No account.</li></ol></li><li>Если аккаунт найден, то выполняется рассылка.</li></ol></td></tr><tr><td>Chat2Desk</td><td><img src="https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-Y3USFG9Z5t/ddb96b8ced001627ca06bb6f0e5a3996f5c6374bdd892381dd40019db4a589b63d2877d64c7ef3feb465c51a446fe9f82e7a2dc11e1e5d5c1f736860c7d0602447c7152833db0f2c42c9fc5fa013adbe91d7de8892b9e89b747e0bd448919bcd4c52b380" alt="image.png"></td><td>Номер телефона в формате</td><td>phone_number</td><td><ol><li>Поле типа “текст”;</li><li>От 10 до 18 цифр (от 11 до 19 с учетом +);</li><li>Допускается знак + в начале.</li></ol></td><td>POST &#x3C;https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'><br>headers: {"Content-Type": "application/json","Authorization: 3cb81e05cf1679e1af9e5d9164ab89"}Токен авторизации берется из личного кабинета Chat2Deskbody: {<br>"phone_number": "79291642944",<br>"is_urgent": true<br>}</td><td></td><td></td><td>На данный момент в канале Chat2Desk не реализован метод проверки наличия аккаунта WhatsApp. Если на указанном номере нет зарегистрированного аккаунта WhatsApp, Сценарий агента идет по ветке Notification fail</td><td></td></tr></tbody></table>

\ <br>

## Создание и настройки слота

Настройки Слота отличаются в зависимости от Конечный канал, подробную информацию том, как создать Слот Notification и настроить рассылки в разных Конечный канал читайте в статьях:

[Рассылки в 360dialog](/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/rassylki-v-whatsapp-or-slot-notification/rassylki-v-360dialog.md)\
[Рассылки в Edna Pulse](/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/rassylki-v-whatsapp-or-slot-notification/rassylki-v-edna-pulse.md)\
[Рассылки в Edna Chat Center](/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/rassylki-v-whatsapp-or-slot-notification/rassylki-v-edna-chat-center.md)\
[Рассылки в Chat2Desk](/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/rassylki-v-whatsapp-or-slot-notification/rassylki-v-chat2desk.md)

## Запрос на рассылку на вебхук слота Notification

1. Запрос на рассылку должен обязательно включать идентификатор Собеседника в конечном канале на первом уровне JSON-а, случае c WhatsApp, это номер телефона. По этому идентификатору Платформа вычислит Чат или в случае, если он не существует, создаст новый Чат для отправки запроса. Название ключа зависит от Конечный канал.
2. 1. Формат идентификатора:
   2. 1. поле типа “текст”;
      2. От 10 до 18 цифр (от 11 до 19 с учетом +);
      3. Допускается знак + в начале.
3. Запрос на рассылку может быть срочным или несрочным (параметр "is\_urgent"):
4. 1. значение true — для срочного Запрос на рассылку — выполняется незамедлительно и прерывает Активный диалог.
   2. значение false — для несрочного Запрос на рассылку — выполняется после закрытия Диалога.
   3. если ключ is\_urgent не найден, используется значение по умолчанию false.
5. Запрос на рассылку должен быть POST-запросом с валидным телом JSON и заголовком "Content-Type": "application/json"
6. Лимит на запросы на рассылку по умолчанию — 20 запросов в секунду на Компания. Лимит можно изменить через техподдержку.
7. Пример Запрос на рассылку в 360dialog (Whatsapp):\
   POST <[http://localhost:10040/notification/13::9de6d0fbc9a547659457a0f7a0e21eda/chat>\\](http://localhost:10040/notification/13::9de6d0fbc9a547659457a0f7a0e21eda/chat>\\)
   headers: {"Content-Type": "application/json"}\
   body: {\
   "phone\_number": "79291642944",\
   "is\_urgent": true,\
   "extra": {\
   "foo": 42\
   }\
   }
8. Пример Запрос на рассылку в Edna Chat Center и Edna Pulse :\
   POST <[https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'>\\](https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'>\\)
   headers: {"Content-Type": "application/json"}\
   body: {\
   "phone\_number": "79291642944",\
   "is\_urgent": true\
   }
9. Пример Запрос на рассылку в Chat2Desk:\
   POST <[https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'>\\](https://admin.chatme.ai/api/notification/42282::0a04b116e59032ef014d649602cc0b54/chat'>\\)
   headers: {"Content-Type": "application/json",\
   "Authorization: 3cb81e05cf1679e1af9e5d9164ab89"}\
   Токен авторизации берется из личного кабинета Chat2Desk\
   body: {\
   "phone\_number": "79291642944",\
   "is\_urgent": true\
   }

## Работа слота

Работа слота начинается с момента получения Платформа Запрос на рассылку из внешней системы.

### 1. Обработка входящего запроса на рассылку

В процессе обработки входящего запроса на рассылку выполняется ряд операций. По итогу выполнения операций вы можете получить один из указанных в таблице статусов:

| Ответ, полученный на запроса на рассылку                                                                | Расшифровка ответа                                                                                                                    |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| HTTP status: 429                                                                                        | Превышение  Лимит на запросы на рассылку для Компания                                                                                 |
| HTTP status: 405                                                                                        | Запрос на рассылку не с POST-методом                                                                                                  |
| HTTP status: 400                                                                                        | <ul><li>в Запрос на рассылку нет заголовка content-type: application/json</li><li>невалидный JSON в теле Запрос на рассылку</li></ul> |
| HTTP status: 404                                                                                        | Не найдена  Компания, связанная с Идентификатор рассылки  (он содержится в вебхуке в поле Chatbot webhook)                            |
| <p>HTTP status: 400 invalid<br>BODY:<br>“status”: “Recipient ID not found or invalid.”</p>              | идентификатор Собеседника не был найден или он невалидный                                                                             |
| <p>HTTP status: 404 Not Found<br>BODY:<br>“status”: “Notification not found”</p>                        | нет обученного Агента со Слотом с таким вебхуком                                                                                      |
| <p>HTTP status: 404 Not Found<br>BODY:<br>“status”: “There is no active channel for received event”</p> | Канал Проекта данного слота Notification удален\неактивен                                                                             |
| <p>HTTP status: 200 OK<br>BODY:<br>“status”: “Accepted for execution”<br>“task\_id”:  </p>              | Запрос на рассылку поставлен в очередь на выполнение                                                                                  |

### 2. Выполнение задачи на рассылку

1. Слот Notification собирает запрос в Конечный канал из параметров на вкладке Destination  и идентификатора собеседника (phone\_number).\
   ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-aPAt12wNYc/ea8740a583c7a0ed1163990cd2331ccf092df25299deb4dd4d6249a5211e92d033d3a5697461dd49200695fe757b7b7573054893a7d4d2cc868a36823a26fe8247a3f6a2e22757cf12ab5cfa12a36595d71a40f4d3b7e184471054472f620ba313dc7a35)
2. Далее слот Notification выполняет отправку запроса на рассылку в выбранный в поле Destination Channel Конечный канал.
3. 1. В случае Chat2Desk:
   2. 1. Если в настройках канала указан ID оператора, то в тело запроса на рассылку подставляется поле operator\_id, пример:
      2. { ... "operator\_id": 123}
      3. Если в настройках канала не указан ID оператора, то в тело запроса на рассылку подставляется поле open\_dialog со значением false:, при этом новый Диалог в Платформа не открывается. Пример:\
         {\
         &#x20;...\
         &#x20;"open\_dialog": false
4. По итогу выполнения данного шага вы можете получить один из указанных в таблице результатов:

| Событие                                                                                                                                         | Что записывается в переменную notification\_raw\_status                                                                                                                                                                                                                             | Что записывается в переменную notification\_status | Переход по Сценарию Агента                                                              | Канал                                                                        |
| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| Не удалось составить запрос по какой-либо причине, например, не удалось спарсить и создать переменную, которая используется в id шаблона        | {‘description’:’failed to build request’}                                                                                                                                                                                                                                           | ‘failed’                                           | переход в ветку Notification fail                                                       | Edna Chat Center,Edna Pulse,360dialog (Whatsapp),360dialog (cloud),Chat2Desk |
| Конечный канал принял запрос и ответил успешным ответом                                                                                         | <p>{‘description’:’received by channel’,<br>‘channel\_response’: тело ответа от канала (объект)}(если application/json = объект, если text = str; в иных cлучаях записывается null).</p>                                                                                            | ‘sent’                                             | Агент ожидает статуса обработки рассылки от Конечный канал                              | Edna Chat Center,Edna Pulse,360dialog (Whatsapp),360dialog (cloud),Chat2Desk |
| Запрос в Конечный канал ушел, но в ответ получен response с кодом 4хх или 5хх                                                                   | {‘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 |
| В поле Content слота указаны данные несуществующего или несогласованного  шаблона рассылки, при этом нет Активный диалог с получателем рассылки | {‘status’: ‘UNDELIVERED’, ‘error’: ‘not-template-match’}                                                                                                                                                                                                                            |                                                    | переход в ветку Notification fail                                                       | Edna Chat Center,Edna Pulse                                                  |
| В поле Content слота указаны данные несуществующего или несогласованного  шаблона рассылки, при этом естьАктивный диалог с получателем рассылки |                                                                                                                                                                                                                                                                                     |                                                    | получателю придет текст, указанный в поле Content, переход в ветку Notification success | Edna Chat Center,Edna Pulse                                                  |

<br>

### 3. Переход в ветки подслотов и ответы из канала

После того как Конечный канал принял запрос на рассылку, происходит переход в один из Подслотов:

| Переход в Подслот                       | Причины                                                                                                                            | Что записывается в переменную notification\_raw\_status                                                                                                                                                                                                                                 | Что записывается в переменную notification\_status | Канал                                                                        |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------- |
| Переход в ветку 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) |
