Свои каналы переписки | Napulse

Свои каналы переписки

Через конструктор можно подключить мессенджер или сервис переписки, которого нет среди встроенных (VK, Telegram, Umnico, чат на сайте). Канал описывается, а не программируется: CRM сама ведёт дубли, привязку к диалогам и карточкам, отправку с повторами, «прочитано» и эхо своих сообщений. Описание говорит только, где в данных сервиса лежит каждое поле.

Где найти: Интеграции → Создать интеграцию → Канал переписки, затем вкладка Канал внутри интеграции. Подключение, секрет, адрес постбэка и журнал общие с интеграцией. Функцию включает администратор Napulse.

Что описывается

  1. Входящие. Путь в JSON вебхука к каждому полю ($.message.id), условия «это сообщение» и «это эхо» через {если …}, ветка и ответ на сообщение.
  2. Исходящие. Действие интеграции, которое отправляет сообщение, и пути к номеру сообщения и ошибке в ответе. Действие объявляет нужные параметры: text, message_id, provider_user_id, conversation_id, reply_to, thread_key, attachment_url и другие.
  3. Статусы. Как сервис сообщает «доставлено», «прочитано», «ошибка».
  4. Медиа. Где в событии лежат файлы и с каких доменов их можно скачивать: только из разрешённых в интеграции. Отправка файла: ссылкой, отдельным действием загрузки или никак. Файл до 25 МБ, html и svg не принимаются.
  5. Личность клиента. Где номер, телефон, логин, имя.
  6. Служебное. Условие «игнорировать», список событий для вебхука с несколькими событиями, ветки, история, обновление токена.
  7. Проверка и Версии. См. ниже.

Описание хранится с версиями. Откат создаёт новую версию со старым содержимым.

Без вебхуков и токены

  • Опрос. На вкладке «Расписания» заведите расписание с приёмником «Сообщения канала». Ответ разбирается как вебхук, дубли и правила те же.
  • История. Кнопка «Догрузить историю» с глубиной и пределом сообщений. Повторный запуск дублей не создаёт. Роботу и уведомлениям история не идёт.
  • Ветки. Значение из поля ветки становится отдельным диалогом той же карточки, ответ уходит в эту же ветку.
  • Токен. Расписание с приёмником «Токен канала» запускает действие обновления. Значение становится секретом интеграции и нигде не показывается. Такое действие нельзя вызвать кнопкой, виджетом, роботом или через MCP. Если сервис отзывает прежний токен при каждом запросе, тестовый вызов этого действия потратит рабочий токен.

Проверка и включение

Вкладка «Проверка»
Рис. 1. Прогон примера и сохранённые примеры

Статус Что происходит
Черновик, Выключен Вебхук обрабатывается как обычный постбэк, отправки нет
Тестовый режим Разбор и журнал работают, диалоги и отправка только в тестовом проекте: администратор включает его флагом channels.custom_descriptions_test:<id проекта>
Включён Канал работает в проекте

На вкладке Проверка:

  • «Прогнать пример» принимает настоящий вебхук и показывает результат: сообщение, статус или причину отказа. В диалоги ничего не пишется, наружу ничего не уходит, файлы не скачиваются.
  • Сохранённые примеры проверяются при каждом сохранении. Упавший пример не даёт включить канал. Уберите из примеров настоящие имена, телефоны и почту: они видны всем, кто видит вкладку.
  • «Не понял»: события, которые описание не разобрало. Сообщение не теряется: тело сохранено, его можно взять как пример и «Разобрать снова» после правки описания.
  • Состояние канала: последнее входящее, последняя отправка, ошибка, срок токена.

«Включить в рабочий проект» могут только владелец и сотрудник с правом «Управлять подключениями проекта», и только после успешного прогона текущей версии. Правка работающего канала возвращает его в тестовый режим, а описание с ошибками в черновик.

Сбои

Ошибка в описании не роняет CRM: событие попадает в «Не понял». При ошибке или истёкшем сроке токена канал становится красным, ответственный получает уведомление.

Менеджер видит причину, если сообщение не ушло, и текст остаётся в поле. Сбой сети, 429 и 5xx повторяются через 1 и 4 секунды, 4xx и ошибка в ответе не повторяются. При тайм-ауте повтора нет: сообщение могло дойти. Одна отправка с повторами считается за один сбой интеграции, пять сбоев подряд её выключают.

Что остаётся кодом

Нестандартные протоколы (длинные соединения, бинарные форматы) описанием не собираются: для них нужен модуль в коде Napulse.