> Расположение: Исходящие вебхуки
> Краткое содержание: Настройки исходящих вебхуков Пачки и список доступных типов событий: сообщения, реакции, нажатия кнопок, заполнение форм, изменение участников чатов и пространства, отправка ссылок
> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://dev.pachca.com/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ.


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

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

![Вкладка Исходящий Webhook в настройках бота](/images/outgoing-webhook.png)

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


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

- **Webhook URL** — адрес, на который Пачка отправляет события
- **Signing secret** — секрет для проверки подписи запроса. Подробнее — в разделе [Безопасность и обработчик](/guides/webhook/handler)
- **Сохранять историю событий** — бот сохраняет все исходящие вебхуки в очередь, и их можно получить через API. Подробнее — в разделе [Поллинг](/guides/webhook/polling)
- **Игнорировать свои сообщения** — не получать вебхуки о сообщениях, отправленных самим ботом. Предотвращает зацикливание, когда бот реагирует на собственные сообщения. Нажатия кнопок обрабатываются всегда, вне зависимости от этой настройки

## Сообщения

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

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

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

- **О любых сообщениях** — все новые сообщения, включая треды
- **Сообщения, начинающиеся с команд** — только сообщения, начинающиеся с указанных команд (например, `/help`, `/deploy`). Команды начинаются с `/` и пишутся на английском. Полезно, если вы не хотите получать поток событий, а вам нужно вызвать сценарий только по требованию пользователя

#### MessageWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"message"`
  Значения: `message` — Для сообщений всегда message
- `id: integer, int32` (required) — Идентификатор сообщения. Пример: `1245817`
- `event: string` (required) — Тип события
  Значения: `new` — Создание, `update` — Обновление, `delete` — Удаление
- `entity_type: string` (required) — Тип сущности, к которой относится сообщение
  Значения: `discussion` — Беседа или канал, `thread` — Тред, `user` — Пользователь
- `entity_id: integer, int32` (required) — Идентификатор сущности, к которой относится сообщение. Пример: `5678`
- `content: string` (required) — Текст сообщения. Пример: `"Текст сообщения"`
- `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345`
- `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"`
- `url: string` (required) — Прямая ссылка на сообщение. Пример: `"https://pachca.com/chats/1245817/messages/5678"`
- `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Пример: `9012`
- `parent_message_id: integer, int32` — Идентификатор сообщения, к которому написан ответ. Пример: `3456`
- `thread: object` — Объект с параметрами треда
  - `message_id: integer, int32` (required) — Идентификатор сообщения, к которому был создан тред. Пример: `12345`
  - `message_chat_id: integer, int32` (required) — Идентификатор чата сообщения, к которому был создан тред. Пример: `67890`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`


## Реакции

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

#### ReactionWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"reaction"`
  Значения: `reaction` — Для реакций всегда reaction
- `event: string` (required) — Тип события
  Значения: `new` — Создание, `delete` — Удаление
- `chat_id: integer, int32` (required) — Идентификатор чата, в котором находится сообщение. Поле всегда присутствует в payload. В редких случаях (например, если сообщение было удалено к моменту отправки вебхука) может быть `null`.. Пример: `9012`
- `message_id: integer, int32` (required) — Идентификатор сообщения, к которому относится реакция. Пример: `1245817`
- `code: string` (required) — Emoji символ реакции. Пример: `"👍"`
- `name: string` (required) — Название реакции. Пример: `"thumbsup"`
- `user_id: integer, int32` (required) — Идентификатор пользователя, который добавил или удалил реакцию. Пример: `2345`
- `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`


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

Вебхук отправляется при нажатии `Data`-кнопки в сообщении от бота. После получения вы можете [отредактировать сообщение](PUT /messages/{id}) — например, изменить или удалить кнопки — или [отправить новое](POST /messages) как ответ пользователю. Подробнее — в разделе [Кнопки в сообщениях](/guides/buttons).

#### ButtonWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"button"`
  Значения: `button` — Для кнопки всегда button
- `event: string` (required) — Тип события. Пример: `"click"`
  Значения: `click` — Нажатие кнопки
- `message_id: integer, int32` (required) — Идентификатор сообщения, к которому относится кнопка. Пример: `1245817`
- `trigger_id: string` (required) — Уникальный идентификатор события. Время жизни — 3 секунды. Может быть использован, например, для открытия представления пользователю. Пример: `"a1b2c3d4-5e6f-7g8h-9i10-j11k12l13m14"`
- `data: string` (required) — Данные нажатой кнопки. Пример: `"button_data"`
- `user_id: integer, int32` (required) — Идентификатор пользователя, который нажал кнопку. Пример: `2345`
- `chat_id: integer, int32` (required) — Идентификатор чата, в котором была нажата кнопка. Пример: `9012`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`


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

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

> Поле `chat_id` фиксируется в момент **открытия** формы (нажатия кнопки), а не её отправки — если форма провисела открытой длительное время, поле всё равно ссылается на чат с кнопкой. Для форм, открытых до выкатки этого изменения, `chat_id` может приходить как `null`, потому что чат не был зафиксирован при открытии.


#### ViewSubmitWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"view"`
  Значения: `view` — Для формы всегда view
- `event: string` (required) — Тип события. Пример: `"submit"`
  Значения: `submit` — Отправка формы
- `callback_id: string` (required) — Идентификатор обратного вызова, указанный при открытии представления. Пример: `"timeoff_request_form"`
- `private_metadata: string` (required) — Приватные метаданные, указанные при открытии представления. Пример: `"{'timeoff_id':4378}"`
- `chat_id: integer, int32` (required) — Идентификатор чата, в котором было нажатие кнопки, открывшей форму. Значение фиксируется в момент **открытия** формы, а не отправки — если форма провисела открытой длительное время, `chat_id` всё равно ссылается на чат с кнопкой. Поле всегда присутствует в payload. Для форм, открытых до выкатки этого изменения, `chat_id` придёт как `null` — такие формы постепенно вымоются по TTL сохранённого представления (30 дней).. Пример: `9012`
- `user_id: integer, int32` (required) — Идентификатор пользователя, который отправил форму. Пример: `1235523`
- `data: Record<string, object>` (required) — Данные заполненных полей представления. Ключ — `action_id` поля, значение — введённые данные
  **Структура значений Record:**
  - Тип значения: `any`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1755075544`


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

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

#### ChatMemberWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"chat_member"`
  Значения: `chat_member` — Для участника чата всегда chat_member
- `event: string` (required) — Тип события
  Значения: `add` — Добавление, `remove` — Удаление
- `chat_id: integer, int32` (required) — Идентификатор чата, в котором изменился состав участников. Пример: `9012`
- `thread_id: integer, int32` — Идентификатор треда. Пример: `5678`
- `user_ids: array of integer` (required) — Массив идентификаторов пользователей, с которыми произошло событие. Пример: `[2345,6789]`
- `created_at: date-time` (required) — Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`


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

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

#### CompanyMemberWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"company_member"`
  Значения: `company_member` — Для участника пространства всегда company_member
- `event: string` (required) — Тип события
  Значения: `invite` — Приглашение, `confirm` — Подтверждение, `update` — Обновление, `suspend` — Приостановка, `activate` — Активация, `delete` — Удаление
- `user_ids: array of integer` (required) — Массив идентификаторов пользователей, с которыми произошло событие. Пример: `[2345,6789]`
- `created_at: date-time` (required) — Дата и время события (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2025-05-15T14:30:00.000Z"`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1747574400`


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

Вебхук отправляется при появлении ссылки на один из доменов, указанных в настройках Unfurl-бота. Для получения таких событий необходимо создать специального Unfurl-бота. После получения вы можете воспользоваться методом [Unfurl (разворачивание ссылок)](POST /messages/{id}/link_previews) и создать предпросмотр ссылки в сообщении. Подробнее — в разделе [Разворачивание ссылок](/guides/link-previews).

#### LinkSharedWebhookPayload

- `type: string` (required) — Тип объекта. Пример: `"message"`
  Значения: `message` — Для разворачивания ссылок всегда message
- `event: string` (required) — Тип события. Пример: `"link_shared"`
  Значения: `link_shared` — Обнаружена ссылка на отслеживаемый домен
- `chat_id: integer, int32` (required) — Идентификатор чата, в котором обнаружена ссылка. Пример: `23438`
- `message_id: integer, int32` (required) — Идентификатор сообщения, содержащего ссылку. Пример: `268092`
- `links: array of object` (required) — Массив обнаруженных ссылок на отслеживаемые домены
  - `url: string` (required) — URL ссылки. Пример: `"https://example.com/page1"`
  - `domain: string` (required) — Домен ссылки. Пример: `"example.com"`
  - `skip: boolean` (required) — Признак того, что автор сообщения скрыл превью для этой ссылки. Если `true` — бот не должен создавать превью. Пример: `false`
- `user_id: integer, int32` (required) — Идентификатор отправителя сообщения. Пример: `2345`
- `created_at: date-time` (required) — Дата и время создания сообщения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. Пример: `"2024-09-18T19:53:14.000Z"`
- `webhook_timestamp: integer, int32` (required) — Дата и время отправки вебхука (UTC+0) в формате UNIX. Пример: `1726685594`



## Связанные разделы

- [Безопасность и обработчик](/guides/webhook/handler)
- [Поллинг](/guides/webhook/polling)
- [Кнопки в сообщениях](/guides/buttons)
