Главная · Справка · Подключение бота ВКонтакте: ключ доступа и Callback API

Подключение бота ВКонтакте: ключ доступа и Callback API

Бот ВКонтакте подключается в двух местах. В «Управлении» сообщества вы включаете сообщения, создаёте ключ доступа и настраиваете Callback API, в ЧБТ — заводите канал с тремя значениями из ВКонтакте. Главное отличие от Telegram и MAX: адрес сервера ЧБТ сам не прописывает, его вставляете вы. Ниже — пять шагов в удобном порядке, что ЧБТ делает с каждым полем и как по признакам найти ошибку.

Что понадобится и в каком порядке

  • Права администратора сообщества. Ключи доступа и Callback API открываются в «Управлении» только администратору.
  • Бот в ЧБТ. Подойдёт любой тариф, включая Бесплатный: за канал ВКонтакте отдельно не платят. Если в боте уже работает Telegram или MAX, VK добавляется к нему же, и сценарий остаётся общим.
  • Две вкладки рядом: «Управление» сообщества и раздел «Каналы» в ЧБТ.

Порядок важен из-за одной детали. Строку подтверждения ЧБТ должен получить в момент создания канала, а адрес сервера появляется только после создания. Поэтому путь такой: ВКонтакте (шаги 1–3) → ЧБТ (шаг 4) → снова ВКонтакте (шаг 5).

Шаг 1. Сообщения и возможности ботов

  1. «Управление» → «Сообщения» → переключатель «Сообщения сообщества» в положение «Включены». Пока он выключен, в сообществе нет кнопки «Написать», и в ЧБТ не приходит ни одного сообщения.
  2. В том же разделе откройте «Настройки для бота»: «Возможности ботов» — «Включены», плюс галочка «Добавить кнопку «Начать»».

Зачем второй пункт. Кнопки под ответами ЧБТ отправляет как клавиатуру бота, а ВКонтакте принимает её только от сообществ с включёнными возможностями ботов: без них текстовые ответы уходят, а сообщения с кнопками — нет. Кнопка «Начать» к тому же даёт вход в сценарий: её нажатие ЧБТ считает командой /start.

Шаг 2. Ключ доступа с одним правом

«Управление» → «Работа с API» → вкладка «Ключи доступа» → «Создать ключ». В списке прав отметьте «Сообщения сообщества», остальные боту ЧБТ не нужны. Этим ключом ЧБТ делает три вещи: отправляет от имени сообщества ответы и рассылки, гасит индикатор ожидания на нажатой кнопке и при первом сообщении узнаёт имя и фамилию собеседника для карточки контакта.

Скопируйте ключ сразу после создания и держите до шага 4 — он пойдёт в поле «Токен». В ЧБТ ключ хранится в зашифрованном виде и в кабинете больше не показывается ни вам, ни команде.

Шаг 3. Callback API: версия, строка подтверждения, секрет

«Работа с API» → вкладка «Callback API». Здесь нужны три настройки, поле «Адрес» пока оставьте пустым.

  • «Версия API» — самая новая из списка. Ответы ЧБТ отправляет по версии 5.199, а входящее сообщение ищет внутри события в поле message. На старых версиях ВКонтакте присылает событие в прежнем формате, без этого поля, и ЧБТ его пропускает — без ошибки, просто тишина.
  • «Строка, которую должен вернуть сервер» — короткий код, который ВКонтакте выдал вашему сообществу. Скопируйте его целиком, без пробелов по краям.
  • «Секретный ключ» — по желанию. Придумайте строку из латиницы и цифр: ВКонтакте будет прикладывать её к каждому событию, а ЧБТ — сверять, и запрос с чужим секретом сценарий не запустит. Запишите секрет, он понадобится в ЧБТ.

Шаг 4. Форма «ВКонтакте» в ЧБТ

В боте ЧБТ откройте «Каналы». В блоке «Подключить новый канал» у карточки «ВКонтакте» нажмите «Подключить» — раскроется короткая подсказка и форма:

Поле формыЧто вписать
«Название канала»Необязательно. Удобно, если сообществ несколько: по названию их легко различить в списке каналов.
«Токен»Ключ доступа из шага 2. Единственное обязательное поле.
«VK: строка подтверждения»Строка из Callback API (шаг 3). С пустым полем адрес не подтвердится.
«VK: секретный ключ»Тот же секрет, что в Callback API. Если секрет в VK не задавали, оставьте поле пустым.

Нажмите «Подключить ВКонтакте». Кабинет перейдёт на «Обзор» бота — вернитесь в «Каналы». В строке нового канала после слова «ВКонтакте» стоит плашка с адресом, например app.chbt.io/webhook/vk/57, где число — номер канала в ЧБТ. Это адрес сервера для ВКонтакте.

Статус «Работает» появляется у VK-канала сразу и сам по себе ничего не доказывает: при подключении ЧБТ не обращается к ВКонтакте и ключ не проверяет. Настоящая проверка — сообщение с личной страницы, о нём ниже.

Шаг 5. Адрес сервера и типы событий

  1. Вернитесь во вкладку «Callback API». В поле «Адрес» вставьте адрес из «Каналов», дописав в начале https://: получится https://app.chbt.io/webhook/vk/57 с вашим номером канала.
  2. Нажмите «Подтвердить». ВКонтакте пришлёт на адрес проверочный запрос, ЧБТ ответит строкой из поля «VK: строка подтверждения», и сервер получит статус «подтверждён».
  3. Перейдите в «Типы событий» и включите два. «Входящее сообщение» (message_new) — через него ЧБТ узнаёт и о тексте, и о нажатии «Начать». Событие callback-кнопки (message_event) — через него приходят нажатия кнопок-веток. Остальные типы можно не трогать.

Что ЧБТ делает с запросами ВКонтакте

Все события сообщества приходят на адрес канала, и ЧБТ разбирает их по порядку. Знать это не обязательно, но так проще понять признаки ошибок из следующего раздела.

  1. Проверка адреса. На запрос подтверждения ЧБТ отвечает строкой, сохранённой в канале. Если поле было пустым, ответ — «ok», и ВКонтакте адрес не подтверждает.
  2. Сверка секрета. Если в канале задан секрет, запрос без него или с другим секретом ЧБТ не обрабатывает, но отвечает «ok» — для ВКонтакте событие выглядит доставленным. Если секрет в канале пустой, сверки нет. Сверка идёт после подтверждения адреса, поэтому «подтверждён» в Callback API ещё не значит, что секреты совпали.
  3. Отбор событий. В сценарий попадают только входящие сообщения и нажатия callback-кнопок. «Начать» превращается в команду /start, нажатие кнопки-ветки — в выбор этой кнопки. На остальные события ЧБТ отвечает «ok» и ничего не делает.
  4. Кнопка отпускается сразу. На нажатие кнопки-ветки ЧБТ отвечает ВКонтакте ещё до запуска сценария, чтобы у человека не крутился индикатор ожидания.
  5. Очередь и повторы. Событие сначала сохраняется в очередь и только потом ВКонтакте получает «ok». Если VK не дождался ответа и прислал то же событие ещё раз, ЧБТ узнаёт повтор, и сценарий второй раз не запускается.
  6. Ответ. Сообщение уходит от имени сообщества: текст и до 10 кнопок, по две в ряд. Подпись кнопки длиннее 40 символов обрезается. Кнопка-ссылка открывает адрес, кнопка-ветка продолжает сценарий. Если ВКонтакте отправку отклонил, в «Диалогах» у ответа бота появляется пометка «не доставлено», а при наведении на неё — текст ошибки от ВКонтакте.

Проверка после подключения

  1. Убедитесь, что сценарий включён: в «Сценариях» на его карточке плашка «Включён», а не «Черновик».
  2. С личной страницы — своей или коллеги, не из интерфейса администратора сообщества — откройте сообщения сообщества. Если эта страница сообществу раньше не писала, увидите кнопку «Начать»: нажмите её, затем отправьте любой текст.
  3. В ЧБТ откройте «Диалоги». Правильная картина: диалог подписан именем и фамилией этой страницы, в нём ваши сообщения и ответы бота без пометки «не доставлено». Нажмите кнопку-ветку в ответе — индикатор на кнопке гаснет сразу, следом приходит продолжение.

Если что-то пошло иначе, найдите свой признак в таблице ниже. Полный чеклист по порядку, вместе со сценарием и тарифом, — «Бот ВКонтакте молчит».

Ошибки подключения и их признаки

Что видноПочемуЧто сделать
«Подтвердить» не срабатывает, строка точно вернаяАдрес без https://, с опечаткой или с номером удалённого канала — проверочный запрос не доходит до вашего канала в ЧБТСкопировать адрес заново из строки канала в «Каналах»
«Подтвердить» не срабатывает, адрес верныйВ канале пустая или неточная строка подтверждения: лишний пробел, строка от другого сообществаПодключить канал заново с точной строкой, вписать новый адрес
Сервер подтверждён, в «Диалогах» пустоНе включено «Входящее сообщение», не совпал секрет или выбрана старая версия APIШаги 3 и 5; секрет — одинаковый в обоих местах или пустой в обоих
Сообщение в «Диалогах» есть, у ответа бота «не доставлено»ВКонтакте отклонил отправку: у ключа нет права «Сообщения сообщества», ключ удалён или человек запретил сообщения от сообществаНавести на пометку и прочитать текст ошибки; ключ без права — создать новый и подключить канал заново
Статус канала «Ошибка» с текстом «токен бота отклонён (401 Unauthorized)»Ключ удалён или отозван во ВКонтакте. ЧБТ ставит этот статус при первой неудачной отправке и пишет владельцу на почту, если уведомление «Статус ботов» не выключеноНовый ключ → канал заново → новый адрес в Callback API
Текстовые ответы приходят, сообщения с кнопками — нетВыключены «Возможности ботов»Шаг 1
Нет кнопки «Начать»Не отмечено «Добавить кнопку «Начать»» или страница уже писала сообществуШаг 1; тест со страницы, которая сообществу ещё не писала
На кнопке-ветке крутится индикатор, ответа нетНажатие не дошло до ЧБТ или ЧБТ не смог на него ответить: не включено событие callback-кнопки, не совпал секрет, у ключа нет права на сообщенияШаги 2, 3 и 5
Индикатор гаснет, продолжения нет; или бот отвечает на «Начать» и молчит на текстПодключение работает, дело в сценарииРаздел «Сторона ЧБТ» в чеклисте

Смена ключа, строки или секрета

Поля VK-канала после подключения не редактируются. Чтобы сменить ключ, строку подтверждения или секрет, удалите канал в «Каналах» (меню канала → «Удалить») и подключите заново. Учтите: вместе с каналом удаляется его переписка в «Диалогах», а контакты и их теги остаются. У нового канала другой номер, значит, и другой адрес — впишите его в Callback API и подтвердите ещё раз, иначе ВКонтакте продолжит слать события на старый адрес, которого больше нет.

Кнопка «Переустановить webhook» в строке VK-канала ничего не меняет во ВКонтакте: она только возвращает каналу статус «Работает». Адрес, типы событий и секрет в Callback API правятся вручную.

Частые вопросы

Секретный ключ обязателен?
Нет. Если поле «VK: секретный ключ» в ЧБТ пустое, секрет не сверяется. Если заполнено — в Callback API должна стоять та же строка, иначе ЧБТ отвечает ВКонтакте «ok», но событие не обрабатывает. Надёжнее всего одинаковый секрет в обоих местах или пустой в обоих.

Канал в статусе «Работает», а бот молчит. Как так?
У VK-канала статус «Работает» ставится при создании: ЧБТ в этот момент не обращается к ВКонтакте и ключ не проверяет. На «Ошибка» статус меняется, только когда ВКонтакте отклонит ключ при отправке сообщения. Проверяйте подключение сообщением с личной страницы и смотрите «Диалоги».

Какое событие включить, чтобы бот отвечал на комментарии?
Никакое: бот ЧБТ работает только в сообщениях сообщества. События о комментариях, записях на стене и вступлениях ЧБТ принимает, отвечает ВКонтакте «ok» и не обрабатывает, так что включать их незачем.

Создать бота бесплатно