Webhooks¶
Получайте события из диалогов Hotline в виде POST-запросов в формате JSON для интеграции с вашими системами.
Платная функция
Использование Webhooks и REST API доступны только для премиум пользователей Hotline. Для приобретения платной версии системы обратитесь в нашу службу поддержки.
Возможности¶
Модуль Webhooks позволяет:
- Отслеживать системные события — создание, закрытие и повторное открытие диалогов, получение и отправку сообщений.
- Обрабатывать собственные команды — как стандартные
/mark,/info, так и ваши собственные/invoice,/userи любые другие. - Возвращать ответы в топики — результаты вызова команд могут быть показаны прямо в топиках с клиентами.
Настройка¶
Webhooks настраиваются через установочного бота @hotlinetg_bot в параметре WEBHOOKS подключения.
Формат конфигурации: JSON-объект, где ключи — URL-адреса ваших скриптов, а значения — массивы событий для отслеживания:
Пример JSON-конфигурации¶
{
"https://someapiserver.com/webhooks/test-hook1": [
"dialog_created",
"dialog_reopened",
"dialog_closed",
"message_received",
"message_sent",
"message_intercepted"
],
"https://someapiserver.com/webhooks/test-hook2": [
"/mark", "/info",
"/invoice", "/client"
]
}
Несколько адресов
Можно указать несколько URL для разных наборов событий — например, один для получения событий о сообщениях и диалогах, а другой для обработки своих команд.
Системные события¶
Автоматические уведомления о событиях в диалогах. Отправляются без ожидания ответа от вашего сервера.
Доступные события для диалогов¶
| Событие | Описание |
|---|---|
dialog_created |
Cоздание нового диалога в системе. Часто используется для подсчета новых диалогов, отправки приветствий, получения дополнительной информации о клиенте или создания записи в клиенсткой базе. |
dialog_reopened |
Повторное открытие диалога после закрытия. Полезно для отслеживания повторных обращений. |
dialog_closed |
Закрытие диалога оператором или автоматически. Используется для финализации тикетов, отправки опросов или расчета закрывающих метрик. |
Доступные события для сообщений¶
| Событие | Описание |
|---|---|
message_received |
Получение любого входящего сообщения от клиента. Используется для записи и анализа содержимого, например обучения AI-моделей. |
message_sent |
Отправка сообщения клиенту. Полезно для контроля качества ответов и расчета времени реакции операторов. |
message_intercepted |
Исходящее сообщение клиенту с паралллеьной сессии (например, с другой сессии аккаунта). Используется для синхронизации данных между системами. |
Варианты использования¶
- Отправка автоматических сообщений по таймауту после начала диалога
- Контроль времени ответа операторов на обращения
- Проверка сообщений на соответствие политикам компании
- Сбор данных для внешней аналитики
- Запись диалогов для обучения AI-моделей
- Дублирование сообщений в корпоративную базу данных
Пример запроса: Повторное открытие диалога¶
{
"event_type": "dialog_reopened",
"timestamp": "2025-10-09 00:24:55",
"instance_id": "13209946874612345",
"data": {
"chat_id": -1002146012345,
"thread_id": 5602541568,
"topic_id": 5343,
"topic_link": "https://t.me/c/2146012345/5343",
"user_id": 5339212345,
"frontend_chat_id": 5339212345,
"frontend_topic_id": null,
"frontend_topic_link": null,
"frontend_user_id": 6406751371,
"chat_type": "private",
"title": "Some User Name",
"department": "default"
},
"api_key": "pQTngMZLh0NmAh"
}
Пример запроса: Отправленное сообщение¶
{
"event_type": "message_sent",
"timestamp": "2025-10-09 00:21:57",
"instance_id": "132099468746812345",
"data": {
"backend_chat_id": -1002146012345,
"backend_thread_id": 5602541568,
"backend_message_id": 6171918336,
"sender_user_id": 5339212345,
"frontend_user_id": 640675123,
"frontend_message_id": 3260022784,
"text": "test message",
"content_type": "messageText",
"department": "default",
"backend_reply_message_id": 0
},
"api_key": "pQTngMZLh0NmAh"
}
Кастомные команды¶
События о вызове команд операторами. Ваш сервер может логировать соответствующее событие и вернуть ответ, который будет показан в топике диалога.
- Укажите в JSON-конфиге стандартные команды системы:
/info,/mark,/close - Задайте собственные команды:
/invoice,/client,/order - Возвращайте результат выполнения в виде текста или JSON, если нужно
Варианты использования¶
- Расширение
/infoдополнительной информацией о клиенте из другой CRM - Логирование смены статусов через
/markдля аналитики - Создание счета командой
/invoiceс возвратом ссылки - Получение данных о клиенте из базы данных по
/user - Автоматизация бизнес-процессов по триггеру команд
Пример запроса: Команда /mark¶
{
"event_type": "/mark",
"timestamp": "2025-10-08 20:41:20",
"instance_id": "132099468746812345",
"data": {
"command_data": "deal",
"chat_id": -1002146012345,
"topic_id": 5,
"topic_link": "https://t.me/c/2146012345/5",
"message_id": 5850,
"reply_message_id": null,
"sender_user_id": 123456,
"user_id": 7890123,
"frontend_chat_id": 7890123,
"frontend_thread_id": null
},
"api_key": "pQTngMZLh0NmAh"
}
Формат ответа¶
Ваш сервер может вернуть результат в виде обычного текста или JSON с узлами message или error.
Успешное выполнение:
{
"message": "Deal created: http://internal.domain.com/crm/deals/76238",
"status": "ok"
}
Ошибка выполнения:
{
"error": "User 12345678 not found in our database"
}
Текстовый ответ:
Можно вернуть просто текст с поддержкой Markdown v2:
✅ Invoice №12345 created
Total: 1500
Link: https://intranet.example.com/invoice/12345
Другие узлы JSON игнорируются
В случае JSON ответа Хотлайн обрабатывает только узлы message и error.
Безопасность¶
Все запросы от Hotline содержат поле api_key соответствующего подключения для проверки отправителя.
- Проверяйте
api_keyна вашей стороне - Настройте фильтрацию по IP прокси-сервера Hotline
- Используйте HTTPS для Webhooks URL
Практические сценарии¶
-
Интеграция с CRM
Автоматически создавайте лиды при начале диалога, обновляйте статусы сделок через
/mark, загружайте полную информацию о клиенте по/user -
Продвинутая аналитика
Собирайте все сообщения и события в свою аналитическую систему для детального анализа работы операторов и качества обслуживания
-
AI-ассистенты
Записывайте диалоги в базу для обучения AI, создавайте команды вроде
/hintдля генерации ответов на основе контекста -
Автоматизация документов
Генерируйте счета, договоры, коммерческие предложения по команде с автоматическим заполнением данных клиента
-
Контроль качества
Отслеживайте время ответа операторов, проверяйте сообщения на запрещенные слова, получайте алерты при долгом отсутствии ответа
-
Резервное копирование
Сохраняйте все диалоги в собственную базу данных для архивирования или миграции в другие системы
Советы по отладке¶
- Используйте сервисы для тестирования Webhooks: postman.com, requestbin.com
- Логируйте все входящие запросы на вашем сервере
- Возвращайте корректный HTTP-статус ответа (должен быть
200 OK) - Следите за таймаутом — ответ должен приходить быстро (рекомендуется до 3 секунд)
- Обрабатывайте ошибки gracefully и возвращайте понятные сообщения
Используйте тестовые подключения
Для отладки создайте тестовое подключение, чтобы было проще конролировать входящий поток событий и отлаживать события с разными свойствами.
Ограничения¶
- Таймаут ответа для команд — рекомендуется не более 3 секунд
- Размер ответа — до 4096 символов (ограничение Telegram)
- Повторные попытки — при недоступности вашего сервера запрос может быть повторен
- Rate limits — при большом потоке событий учитывайте возможности вашего сервера
Поддержка¶
По вопросам настройки вебхуков, подключения платной подписки обращайтесь в службу поддержки @hotlinetg_support