Для разработчиков

Настройка и типы событий

Все настройки исходящего вебхука собраны на вкладке Исходящий Webhook в настройках бота.

Вкладка Исходящий Webhook в настройках бота

Общие настройки

  • Webhook URL — адрес, на который Пачка отправляет события
  • Signing secret — секрет для проверки подписи запроса. Подробнее — в разделе Безопасность и обработчик
  • Сохранять историю событий — бот сохраняет все исходящие вебхуки в очередь, и их можно получить через API. Подробнее — в разделе Поллинг
  • Игнорировать свои сообщения — не получать вебхуки о сообщениях, отправленных самим ботом. Предотвращает зацикливание, когда бот реагирует на собственные сообщения. Нажатия кнопок обрабатываются всегда, вне зависимости от этой настройки

Webhook URL можно задать не только здесь, но и программно — это удобно для автоматизации (например, n8n регистрирует свой адрес сам):

Чтобы отключить вебхук, передайте пустую строку в outgoing_url.

Сообщения

В настройках доступны два отдельных пункта:

  • Новые сообщения — создание сообщений в чатах, где состоит бот, и в тредах этих чатов
  • Редактирование и удаление сообщений — изменение текста, файлов или удаление сообщений в чатах, где состоит бот, и в тредах этих чатов

Для новых сообщений доступны два режима отслеживания:

  • О любых сообщениях — все новые сообщения, включая треды
  • Сообщения, начинающиеся с команд — только сообщения, начинающиеся с указанных команд (например, /help, /deploy). Команды начинаются с / и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя
Режим «О любых сообщениях» присылает событие и для сообщений без текста, например только с файлом или картинкой. Режим «Сообщения, начинающиеся с команд» для них не сработает, потому что команда определяется по первому слову текста, которого в таком сообщении нет.
MessageWebhookPayloadobject
Payload содержит только основные поля сообщения: текст, автора, чат, ответ и тред. По payload нельзя определить, есть ли у сообщения вложение: у сообщения без текста (например, только с файлом) поле content придёт пустой строкой. Вложения, реакции, кнопки, информацию о пересланном сообщении и другие поля получите методом GETИнформация о сообщении по полю id. Для события delete сообщение уже удалено, поэтому добрать его по id не получится.

Реакции

Вебхук отправляется при добавлении или удалении реакции на сообщение в чате, где состоит бот.

ReactionWebhookPayloadobject
Payload содержит все данные реакции. Если нужен контекст, получите сообщение методом GETИнформация о сообщении по message_id или автора методом GETИнформация о сотруднике по user_id.

Нажатие кнопок

Вебхук отправляется при нажатии Data-кнопки в сообщении от бота. После получения вы можете PUTотредактировать сообщение — например, изменить или удалить кнопки — или POSTотправить новое как ответ пользователю. Подробнее — в разделе Кнопки в сообщениях.

ButtonWebhookPayloadobject
Payload содержит данные нажатой кнопки. Полное сообщение получите методом GETИнформация о сообщении по message_id.

Заполнение формы

Вебхук отправляется при отправке пользователем заполненной формы (представления). Подробнее об обработке результатов — в разделе Обработка форм.

Поле chat_id фиксируется в момент открытия формы (нажатия кнопки), а не её отправки — если форма провисела открытой длительное время, поле всё равно ссылается на чат с кнопкой. Для форм, открытых до выкатки этого изменения, chat_id может приходить как null, потому что чат не был зафиксирован при открытии.
ViewSubmitWebhookPayloadobject
Payload содержит все заполненные поля формы в data, дополнительных запросов не требуется. При необходимости получите автора методом GETИнформация о сотруднике по user_id.

Изменение участников чатов

Вебхук отправляется при изменении состава участников чатов, где состоит бот, и в тредах этих чатов.

ChatMemberWebhookPayloadobject
Payload содержит только идентификаторы. Полные данные сотрудников получите методом GETИнформация о сотруднике по каждому user_id, а сам чат — методом GETИнформация о чате по chat_id.

Изменение участников пространства

Вебхук отправляется при добавлении, удалении или приостановке участников пространства. Не требует добавления бота в чат.

CompanyMemberWebhookPayloadobject
Payload содержит только идентификаторы сотрудников. Полные данные получите методом GETИнформация о сотруднике по каждому user_id.

Отправка ссылок

Вебхук отправляется при появлении ссылки на один из доменов, указанных в настройках Unfurl-бота. Для получения таких событий необходимо создать специального Unfurl-бота. После получения вы можете воспользоваться методом POSTUnfurl (разворачивание ссылок) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе Разворачивание ссылок.

LinkSharedWebhookPayloadobject
Payload содержит обнаруженные ссылки. Полное сообщение получите методом GETИнформация о сообщении по message_id.

Видеозвонки

Вебхук отправляется для видеозвонков в чатах, где состоит бот, и в тредах этих чатов. Поле event в payload различает три события: started (звонок начался), finished (звонок завершился) и recording_ready (запись готова). Набор полей payload зависит от события.

VideoCallWebhookPayloadobject
Для события finished payload содержит список участников с временем подключения и выхода, для recording_ready — ссылку на файл записи, её размер и длительность. Полные данные участников получите методом GETИнформация о сотруднике по каждому user_id, а чат — методом GETИнформация о чате по chat_id.