Documentation

Bridge API

vk

VK Community

VK в Bridge сейчас доступен как vk_community: подключение по community access token и group id/short name, входящие события через Callback API и единый outbound API. Уже подтверждены inbound text/photo/voice/document и outbound text/photo/video/document/voice.

provider: vkchannel_type: vk_communityupdated: 2026-05-06

Connect

Как проходит подключение

Клиент подключает канал в кабинете. После статуса connected входящие события идут в webhook, а outbound API начинает принимать отправку в этот канал.

  1. Шаг 1

    Пользователь создает VK-канал в /my/channels.

  2. Шаг 2

    Пользователь вставляет community token и ID, короткое имя или ссылку сообщества.

  3. Шаг 3

    Bridge валидирует сообщество и показывает webhook URL.

  4. Шаг 4

    Пользователь копирует confirmation string из VK Callback API и сохраняет ее в Bridge.

  5. Шаг 5

    Пользователь вставляет URL в VK Callback API, нажимает подтверждение и получает confirmation callback.

  6. Шаг 6

    После confirmation Bridge переводит канал в connected и включает message_new для найденного callback server.

Inbound

Что приходит из канала

Text

Работает

message.type = text, message.text содержит текст входящего сообщения из VK Callback API message_new.

Sender metadata

Частично

first_name, last_name, username/screen_name, display_name, avatar подтягиваются best-effort через users.get. phone обычно недоступен.

Reply and forwarded context

Частично

Bridge best-effort извлекает message.reply_to из reply_message и message.forwarded из fwd_messages. Если пользователь добавил comment к пересылке, comment остается в message.text, а исходный текст forwarded message приходит в message.forwarded.message.text. Reply и forwarded marker уже подтверждены на prod smoke.

Media

Частично

Bridge уже best-effort нормализует photo, video, audio, voice, sticker, document из VK Callback API, сохраняет файлы в storage и отдает их через signed /v1/attachments/:id URL. На prod уже подтверждены text, photo, voice и document.

Outbound

Что можно отправлять через API

Для outbound используйте POST /v1/messages, bearer API key со scope messages:send, channel_id подключенного канала и provider chat id из inbound webhook.

Text

Работает

POST /v1/messages с content.type = text отправляет сообщение через VK messages.send в peer_id, который приходит в data.chat.external_id.

Reply to message

Частично

Bridge уже прокидывает reply_to.provider_message_id в VK messages.send(reply_to = ...); provider-side send подтвержден на prod smoke.

Media

Частично

Bridge уже отправляет media через unified API: photo идет через VK photo upload flow, voice - через audio_message upload flow, video и document/file - через VK docs upload flow. Несколько вложений отправляются последовательно в рамках одного API-запроса.

Проверка

Что уже проверено

Проверено

  • Community token connect с явной валидацией ID/short name и выдачей webhook URL для VK Callback API.
  • Ручное сохранение confirmation string из VK в Bridge перед подтверждением callback URL.
  • Inbound text через webhook message.inbound по VK Callback API message_new.
  • Inbound reply/forwarded marker, включая forward с комментарием в message.forwarded.message.text.
  • Inbound media: photo, voice, document через Bridge storage и публичные signed attachment URL.
  • Outbound text через /v1/messages и VK messages.send.
  • Outbound media: photo, video, document/file, voice.
  • Multiple attachments в одном /v1/messages запросе.

Что осталось

  • Audio и sticker outbound для VK пока не поддержаны как отдельные provider-semantic типы.
  • VK animation/GIF outbound пока не подтвержден отдельным prod smoke.
  • Delete/revoke, read receipts и reactions для VK.

API notes

Практические заметки для интеграции

Пример recipient

123456789

Для ответа используйте data.chat.external_id из inbound webhook: это VK peer_id.

Current transport mode для vk_community - Callback API.

Group ID в этом connector лучше считать обязательным: используйте numeric id, club..., short name или ссылку сообщества.

Community token должен иметь права на сообщения сообщества.

Confirmation string Bridge не генерирует: ее нужно взять из VK Callback API и сохранить в Bridge до нажатия кнопки подтверждения в VK.

Для inbound callback Bridge дополнительно пытается гидрировать полный VK message через messages.getByConversationMessageId или messages.getById, чтобы добрать reply_message, fwd_messages и media metadata, если исходный callback пришел обрезанным.

Для пересылки с комментарием в VK message.text хранит именно comment пользователя, а текст исходного forwarded message выносится в message.forwarded.message.text.

VK media inbound уже подтвержден на prod для photo, voice и document: Bridge скачивает file-like вложения, сохраняет их в storage и отдает через signed attachment URL.

VK media outbound уже подтвержден на prod для photo, video, document/file и voice. voice идет через audio_message upload flow, audio и sticker сейчас явно не поддержаны.

Channels

Сравнить с другими каналами