Свои каналы переписки
Через конструктор можно подключить мессенджер или сервис переписки, которого нет среди встроенных (VK, Telegram, Umnico, чат на сайте). Канал описывается, а не программируется: CRM сама ведёт дубли, привязку к диалогам и карточкам, отправку с повторами, «прочитано» и эхо своих сообщений. Описание говорит только, где в данных сервиса лежит каждое поле.
Где найти: Интеграции → Создать интеграцию → Канал переписки, затем вкладка Канал внутри интеграции. Подключение, секрет, адрес постбэка и журнал общие с интеграцией. Функцию включает администратор Napulse.
Что описывается
- Входящие. Путь в JSON вебхука к каждому полю (
$.message.id), условия «это сообщение» и «это эхо» через{если …}, ветка и ответ на сообщение. - Исходящие. Действие интеграции, которое отправляет сообщение, и пути к номеру сообщения и ошибке в ответе. Действие объявляет нужные параметры:
text,message_id,provider_user_id,conversation_id,reply_to,thread_key,attachment_urlи другие. - Статусы. Как сервис сообщает «доставлено», «прочитано», «ошибка».
- Медиа. Где в событии лежат файлы и с каких доменов их можно скачивать: только из разрешённых в интеграции. Отправка файла: ссылкой, отдельным действием загрузки или никак. Файл до 25 МБ, html и svg не принимаются.
- Личность клиента. Где номер, телефон, логин, имя.
- Служебное. Условие «игнорировать», список событий для вебхука с несколькими событиями, ветки, история, обновление токена.
- Проверка и Версии. См. ниже.
Описание хранится с версиями. Откат создаёт новую версию со старым содержимым.
Без вебхуков и токены
- Опрос. На вкладке «Расписания» заведите расписание с приёмником «Сообщения канала». Ответ разбирается как вебхук, дубли и правила те же.
- История. Кнопка «Догрузить историю» с глубиной и пределом сообщений. Повторный запуск дублей не создаёт. Роботу и уведомлениям история не идёт.
- Ветки. Значение из поля ветки становится отдельным диалогом той же карточки, ответ уходит в эту же ветку.
- Токен. Расписание с приёмником «Токен канала» запускает действие обновления. Значение становится секретом интеграции и нигде не показывается. Такое действие нельзя вызвать кнопкой, виджетом, роботом или через MCP. Если сервис отзывает прежний токен при каждом запросе, тестовый вызов этого действия потратит рабочий токен.
Проверка и включение

Рис. 1. Прогон примера и сохранённые примеры
| Статус | Что происходит |
|---|---|
| Черновик, Выключен | Вебхук обрабатывается как обычный постбэк, отправки нет |
| Тестовый режим | Разбор и журнал работают, диалоги и отправка только в тестовом проекте: администратор включает его флагом channels.custom_descriptions_test:<id проекта> |
| Включён | Канал работает в проекте |
На вкладке Проверка:
- «Прогнать пример» принимает настоящий вебхук и показывает результат: сообщение, статус или причину отказа. В диалоги ничего не пишется, наружу ничего не уходит, файлы не скачиваются.
- Сохранённые примеры проверяются при каждом сохранении. Упавший пример не даёт включить канал. Уберите из примеров настоящие имена, телефоны и почту: они видны всем, кто видит вкладку.
- «Не понял»: события, которые описание не разобрало. Сообщение не теряется: тело сохранено, его можно взять как пример и «Разобрать снова» после правки описания.
- Состояние канала: последнее входящее, последняя отправка, ошибка, срок токена.
«Включить в рабочий проект» могут только владелец и сотрудник с правом «Управлять подключениями проекта», и только после успешного прогона текущей версии. Правка работающего канала возвращает его в тестовый режим, а описание с ошибками в черновик.
Сбои
Ошибка в описании не роняет CRM: событие попадает в «Не понял». При ошибке или истёкшем сроке токена канал становится красным, ответственный получает уведомление.
Менеджер видит причину, если сообщение не ушло, и текст остаётся в поле. Сбой сети, 429 и 5xx повторяются через 1 и 4 секунды, 4xx и ошибка в ответе не повторяются. При тайм-ауте повтора нет: сообщение могло дойти. Одна отправка с повторами считается за один сбой интеграции, пять сбоев подряд её выключают.
Что остаётся кодом
Нестандартные протоколы (длинные соединения, бинарные форматы) описанием не собираются: для них нужен модуль в коде Napulse.