Исходящий Webhook

Исходящие вебхуки позволяют вам получать информацию о событиях в вашем пространстве в реальном времени. Это могут быть новые сообщения, реакции, чаты, участники и тд.

Вебхук представляет собой JSON объект, отправляемый в момент наступления события на указанный в настройках бота URL, содержащий небольшое количество информации, которой достаточно для написания автоматизаций. Если требуется получить больше информации об объектах, указанных в JSON - вы можете воспользоваться API и получить полную информацию.

Каждый исходящий вебхук защищён с помощью подписи, основанной на хешировании содержимого. Подробнее об этом, а также о других методах проверки подлинности исходящего вебхука, вы можете прочитать в блоке Безопасность.

Как получать Webhook

Все настройки исходящих вебхуков находятся в чат-ботах. Создавая нового бота, вы получаете возможность указать Webhook URL и выбрать те события, которые вы хотите получать.

Большинство типов событий потребуют добавления бота в чаты. Именно по этим чатам и по отправленным ботом сообщениям вы будете получать события. Есть глобальные события (например, Изменение состава участников пространства), которые не требуют добавления бота в чат.

ПРИМЕЧАНИЕ

О том, как создать бота и добавить его в чаты, вы можете прочитать в статье https://www.pachca.com/articles/webhook

Новые сообщения

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

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

MessageWebhookPayloadobject

Добавление и удаление реакций

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

ReactionWebhookPayloadobject

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

Данный вебхук отправляется при нажатии Data-кнопки в сообщении от бота. После получения этого вебхука вы можете воспользоваться методом Редактирование сообщения и изменить/удалить кнопки у сообщения или отправить Новое сообщение как реакцию пользователю.

Подробнее о работе с кнопками в ботах вы можете прочитать в статье https://www.pachca.com/articles/knopki-v-chat-botah

ButtonWebhookPayloadobject

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

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

ChatMemberWebhookPayloadobject

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

Данный вебхук отправляется при изменении состава участников пространства, включая изменение состояния участников (смотреть на значение поля event).

CompanyMemberWebhookPayloadobject

Безопасность

Каждый исходящий вебхук защищён с помощью подписи, основанной на хешировании содержимого. Подпись HMAC с использованием алгоритма SHA256 вычисляется из тела запроса и передаётся в заголовке Pachca-Signature.

В теле вебхука также содержится поле webhook_timestamp — метка времени в формате UNIX, указывающая момент отправки вебхука. Рекомендуется проверять, что это значение находится в пределах одной минуты от времени получения запроса, чтобы предотвратить атаки повторной отправки (replay attacks).

Пример исходящего вебхука (новое сообщение)

Для проверки подписи необходимо вычислить её самостоятельно, используя секрет вебхука Signing secret, который доступен в настройках бота во вкладке «Исходящий webhook». Рекомендуется использовать сырой (raw) контент тела запроса для вычисления хеша, так как при JSON-парсинге содержимое может быть изменено.

Вычисление и сравнение подписи

Кроме проверки подписи, также рекомендуется валидировать IP-адреса отправителя.

IP-адрес Пачки: 37.200.70.177