Чат-бот для ВКонтакте начинается не с кнопки в настройках сообщества. За ним стоит связка из трёх частей: сообщество, от имени которого идёт переписка, скрипт, который получает события, и логика ответов, которую вы придумали. Документация VK формулирует это прямо: для создания бота нужны сообщество, сервер и логика.
Дальше начинается то, о чём статьи-обзоры обычно молчат. Бот не пишет клиенту первым, пока тот не разрешил сообщения. На клавиатуре помещается ограниченное число кнопок. Подпись кнопки обрезается. Заявка сама в отдел продаж не приезжает.
Я собрал в одном месте всё, что задаёт рамку, в которой работает чат-бот для ВКонтакте: возможности из официальной документации, шесть шагов настройки, три пути сборки с честной ценой каждого и список мест, где боты тихо теряют заявки. Все технические подробности сверены с документацией VK для разработчиков.
Каждую неделю разбираю, что из автоматизации реально окупается у небольших компаний. Если тема близка, оставайтесь на связи.
Что умеет чат-бот для ВКонтакте прямо сейчас
Возможности бота задаёт платформа: что она даёт, то и можно собрать, чего не даёт, того не соберёт никакой конструктор.
Бот получает события, а переписку целиком не видит. ВКонтакте присылает вашему скрипту отдельные уведомления: новое входящее сообщение, ответ бота, редактирование сообщения, разрешение переписки, запрет переписки, набор текста собеседником, прочтение сообщения, нажатие на кнопку. Каждое событие приходит в виде JSON с типом, объектом и идентификатором сообщества.
Два события стоит запомнить отдельно, потому что на них держится вся законная рассылка. Событие о разрешении сообщений приходит, когда человек нажал кнопку «Разрешить сообщения» или просто написал сообществу первым. Обратное приходит, когда он передумал. Между этими двумя точками сообщество имеет право писать человеку, вне их - нет.
Бот отвечает методом отправки сообщения. Текст одного сообщения ограничен 9000 знаками. К нему прикладываются фотографии, видео, аудио, файлы, записи со стены, товары, опросы. За один вызов можно указать до сотни получателей, если работаете ключом сообщества, - на этом строятся аккуратные рассылки по тем, кто уже разрешил переписку.
Бот показывает кнопки. Клавиатура описывается строкой JSON и прикладывается к сообщению. Кнопки бывают шести типов, и это гораздо больше, чем «текст и ссылка»:
- текстовая отправляет от имени человека ту фразу, что написана на кнопке;
- callback ничего не отправляет в чат: вашему серверу приходит событие о нажатии, а надпись на кнопке меняется на курсор ожидания;
- ссылка открывает внешний адрес;
- геопозиция открывает окно выбора места, и координаты приходят вам в объекте сообщения;
- VK Pay открывает окно оплаты с заранее заданными параметрами платежа;
- мини-приложение открывает приложение или игру внутри ВКонтакте.
Разница между текстовой кнопкой и callback выглядит косметической, а на деле меняет вид переписки. Текстовая засоряет диалог фразами вроде «Узнать цену», «Назад», «Ещё раз» от лица клиента. Callback оставляет чат чистым и позволяет редактировать то же самое сообщение вместо отправки нового.
Бот работает в беседах, но с уровнем доступа. Сразу после добавления в беседу боту выдаётся уровень «Только упоминания»: он видит обращения к себе и ответы на свои сообщения и может писать в беседу. Полный доступ ко всей переписке выдаёт любой администратор беседы. Права администратора даёт создатель беседы или админ, у которого есть право назначать администраторов, и тогда бот дополнительно получает объект беседы и список участников.
Чего платформа не даёт. Переписку, к которой боту не выдали доступ, он не видит. Человеку, который не разрешал сообщения, написать нельзя. Звонков платформа ботам не даёт вовсе; комментарии под постами приходят только при отдельной подписке на эти события; смысл фразы, которой нет в вашем сценарии, бот не угадывает.
Что приготовить до первого шага
Сообщество. Подойдёт любое ваше сообщество: группа, встреча или публичная страница. Отдельную сущность создавать не нужно: чат-бот для ВКонтакте работает внутри уже существующего сообщества. Стоит проверить описание и обложку: сообщество - это точка входа, и человек сначала видит его, а уже потом первое сообщение бота.
Доступ администратора. Все настройки бота лежат в управлении сообществом. Если вы работаете с сообществом клиента, доступ к управлению нужен заранее, иначе дело встанет на первом же шаге.
Ключ доступа. Это строка, которой ваш скрипт представляется платформе. Ключ доступа сообщества выдаётся бессрочно, в отличие от пользовательского, срок действия которого час. Отсюда правило: ключ сообщества хранится на сервере и никогда не попадает в публичный репозиторий, в текст статьи или в переписку. Узнав ключ, посторонний сможет писать от имени вашего сообщества.
Решение о способе получения событий. Их два, и от выбора зависит, нужен ли вам публичный адрес. Разница описана в шаге 4, но подумать о ней стоит заранее: это единственное место, где нельзя обойтись настройками в интерфейсе.
Место для заявки. Самый пропускаемый пункт. Пока не решено, куда бот кладёт результат разговора, любая настройка бессмысленна: диалоги будут, заявок не будет. Общий чат менеджеров - плохое место, в нём заявки тонут между сообщениями. Подробнее об этом в шаге 6.
Решите, что бот делает вместо человека
Одно действие, которое можно посчитать: заявка, запись, ответ на типовой вопрос.Включите сообщения и возможности ботов
Две галочки в управлении сообществом, без них клавиатура не покажется.Создайте ключ доступа и выдайте права
Отметьте только те права, которые боту нужны, и храните ключ на сервере.Выберите Callback API или Long Poll
Первый шлёт события вам, второй держит очередь у себя до вашего запроса.Соберите клавиатуру и первые ответы
Кнопки в пределах лимитов, тексты короче экрана, обязательный выход к человеку.Проверьте на людях и подключите заявки
Пять посторонних проходят сценарий, заявка падает туда, где работает менеджер.
Шаг 1. Решите, что бот делает вместо человека
Первый шаг не технический, и его чаще всего пропускают. Чат-бот для ВКонтакте без названного действия превращается в автоответчик, который здоровается и передаёт разговор человеку, - работы при этом столько же, сколько у настоящего бота.
Формулировка проверяется одним вопросом: можно ли это нажать кнопкой и посчитать за неделю. «Повысить вовлечённость» нажать нельзя. «Оставить номер», «выбрать время визита», «узнать статус заказа» - можно.
У сообщества есть особенность, которой нет у мессенджеров: человек попадает в переписку из разных мест площадки. Кнопка «Написать сообщение» под описанием, комментарий под записью, ссылка из рекламной записи, товар в каталоге сообщества. Пришедший из рекламы про ремонт холодильников уже назвал тему, и спрашивать его «чем помочь» незачем: первое сообщение имеет смысл делать разным хотя бы для двух-трёх главных входов.
Одно действие на один сценарий. Два разных финала в голове означают два сценария с общей точкой входа. Разведите их на первом экране, и обе ветки станут вдвое короче. Как устроен сам разговор, по каким блокам он раскладывается и в каких местах обрывается, подробно разобрано в статье про сценарий чат-бота. Это работа на бумаге, и делается она до всякой настройки.
Шаг 2. Включите сообщения и возможности ботов
Обе настройки лежат в управлении сообществом и занимают минуту. Пока они выключены, чат-бот для ВКонтакте формально существует, но клавиатуру не покажет и сообщения не примет.
- Откройте сообщество и перейдите в Управление - Сообщения. Включите сообщения сообществ и сохраните изменения. Пока они выключены, писать сообществу нельзя вообще.
- Перейдите в Управление - Сообщения - Настройки для бота и включите Возможности ботов. Это отдельный переключатель, и именно он разрешает клавиатуру.
- Там же поставьте галочку Добавить кнопку «Начать», если хотите, чтобы человек, открывший диалог, видел первую кнопку вместо пустого поля ввода. Для большинства сценариев это полезно: пустой чат чаще закрывают, чем заполняют.
Если бот должен работать в беседах, в том же разделе включите разрешение добавлять сообщество в беседы. После этого в сообществе появится кнопка приглашения в беседу. Помните про уровни доступа: по умолчанию бот видит только обращения к себе.
Частая ошибка на этом шаге. Настройки включены, а бот молчит, потому что сообщения сообществ так и остались выключенными. Проверяется за пять секунд: напишите сообществу с личной страницы и посмотрите, доходит ли сообщение.
Шаг 3. Создайте ключ доступа и выдайте права
Ключом доступа чат-бот для ВКонтакте представляется платформе. Он нужен и для отправки сообщений, и для получения событий через очередь. Порядок такой:
- Откройте сообщество, где вы администратор.
- Управление - Дополнительно - Работа с API.
- Нажмите Создать ключ, отметьте права доступа и подтвердите выбор.
Права отмечайте по одному правилу: только то, без чего бот не работает. Для переписки нужны сообщения, для работы с товарами - товары. Ключ, которому выданы все права разом, в случае утечки отдаёт постороннему всё сообщество разом.
Ключей можно создать несколько, с разными правами. Это удобнее, чем кажется: тестовый скрипт работает на своём ключе, боевой на своём, и при подозрении на утечку удаляется только один. После удаления ключ немедленно перестаёт работать.
Как хранить. Ключ - это пароль, у которого нет логина. Хранить его следует в переменной окружения на сервере или в хранилище секретов. Не в коде, не в репозитории, не в скриншоте настроек, который вы отправляете подрядчику. Если ключ где-то засветился, удалите его в том же разделе и создайте новый: это минута работы против переписки от имени вашего сообщества чужими руками.
Запросы к платформе идут по защищённому протоколу, а ключ передаётся в заголовке авторизации. Формат данных в запросе - обычные параметры формы; JSON в теле запроса платформа сейчас не принимает, и это регулярно ломает первые попытки тех, кто привык к другим API.
Шаг 4. Выберите Callback API или Long Poll
Это единственное место, где нужно принять инженерное решение: чат-бот для ВКонтакте узнаёт о событиях одним из двух способов. Разберём оба по делу.
Callback API: платформа стучится к вам
Вы указываете в настройках сообщества адрес своего скрипта и отмечаете события, которые хотите получать. Дальше при каждом событии платформа отправляет на этот адрес отдельный запрос с JSON внутри.
Одно требование ломает больше всего первых запусков: ваш скрипт обязан на каждый запрос ответить строкой ok. Пустой ответ с кодом 200 не годится, JSON тоже; нужна именно эта строка. Если её нет, платформа считает доставку неудачной и повторяет попытку.
Это по сути вебхук: чужая система сама зовёт ваш адрес, когда что-то произошло. Отсюда требования: публичный адрес, действующий сертификат, сервер, который отвечает быстро и не падает. Если события нужны из бесед, версия API на стороне вашего сервера должна быть не ниже 5.80.
Кому подходит. Боевым ботам с заметным потоком сообщений и тем, у кого уже есть сервер с доменом. События приходят мгновенно, лишних запросов нет.
Long Poll: вы спрашиваете сами
Очередь событий хранится на стороне ВКонтакте. Включается в том же разделе: Управление - Дополнительно - Работа с API - вкладка Long Poll API - Включено. Там же отмечаются типы событий.
Дальше скрипт получает адрес сервера, ключ сессии и номер последнего события, после чего в цикле запрашивает новые события с параметром ожидания. ВКонтакте советует ставить ожидание в 25 секунд: часть прокси-серверов обрывает соединение после тридцати. Максимум - 90 секунд.
Отдельно стоит заложить обработку трёх служебных ответов: история событий устарела и нужно продолжить с новым номером, истёк срок ключа сессии, данные потеряны и нужны новые ключ и номер. Скрипт, который их не обрабатывает, тихо перестаёт получать сообщения через несколько часов работы и выглядит «сломавшимся без причины».
Кому подходит. Первому боту, прототипу, боту на машине без внешнего адреса. Публичный адрес и сертификат не нужны совсем.
Что выбрать
| Вопрос | Callback API | Long Poll |
|---|---|---|
| Нужен публичный адрес и сертификат | да | нет |
| Кто инициирует обмен | платформа | ваш скрипт |
Обязательный ответ ok | да | нет |
| Задержка события | мгновенно | до нескольких секунд |
| Сложность первого запуска | выше | ниже |
Набор событий у обоих способов одинаковый, и структура событий совпадает. Это важное свойство: начав с очереди, вы потом переедете на вебхуки, не переписывая логику обработки, - меняется только способ доставки.
Шаг 5. Соберите клавиатуру и напишите первые ответы
Лимиты выглядят щедрыми на бумаге и очень тесными в жизни. Именно на них чат-бот для ВКонтакте спотыкается в первый раз, ещё до встречи с живым клиентом, поэтому разберём их по порядку.
Два вида клавиатуры. Обычная располагается под полем ввода и остаётся на экране; в неё помещается до 40 кнопок, сгруппированных в 10 рядов по 5 кнопок. Встроенная показывается прямо в сообщении и заметно меньше: до 10 кнопок, до 6 рядов по 5. Обычную можно настроить так, чтобы она пряталась после первого нажатия.
Подпись кнопки - до 40 знаков, и это не то же самое, что «поместится 40 знаков». Текст выравнивается по центру и обрезается, если не влезает в ширину кнопки. А ширина зависит от того, сколько кнопок стоит в ряду: строка делится поровну. Три кнопки в ряду на телефоне - это три коротких слова, не три фразы.
Служебные данные кнопки - до 255 знаков строкой JSON. В них передаётся то, что нужно вашему скрипту: номер экрана, выбранная услуга, идентификатор товара. Строка обязана быть описанием объекта, то есть начинаться и заканчиваться фигурными скобками. Ошибка в формате даёт при отправке ответ об ошибке клавиатуры, и сообщение не уходит вовсе.
Два типа кнопок с особыми правилами. Кнопка геопозиции требует, чтобы в её ряду было не больше двух кнопок. Оплата через VK Pay обязана стоять единственной в своём ряду. Нарушите - метод отправки вернёт ошибку.
Цвет кнопки - это её роль в разговоре. Платформа задаёт четыре роли: основное действие, обычная кнопка, опасное действие или отмена, согласие или подтверждение. Если покрасить всё в цвет основного действия, человек перестаёт видеть, где главный путь.
Теперь тексты. Правила короткие:
- Первое сообщение снимает три немых вопроса: кто со мной говорит, что тут можно получить и долго ли это. Укладывается в две-три строки.
- Бот честно называет себя ботом. Попытка выдать его за живого сотрудника ломается на третьем сообщении и оставляет осадок.
- Выход к человеку виден с любого экрана. Слова «оператор», «человек», «менеджер» должны переключать на живого сотрудника на любом шаге, включая те, где вы этого не ждали.
- Тупик закрыт. Если человек написал текст, который сценарий не разобрал, бот честно сообщает об этом и предлагает выбор: нажать кнопку из списка или переключиться на сотрудника. Молчание читается как поломка.
Подробный разбор того, что чаще всего ломается уже после запуска, собран отдельно в материале про ошибки чат-бота.
Шаг 6. Проверьте на людях и подключите заявки
Проверку на людях делают до запуска. Позовите пять человек, которые не участвовали в написании: пусть пройдут путь от первого сообщения до целевого действия. Вы увидите три вещи, которых не видно изнутри: где они жмут не ту кнопку, где перечитывают текст дважды и где просто закрывают переписку.
Отдельно прогоните три ломающих сценария: человек пишет свободным текстом вместо нажатия кнопки, человек уходит на середине и возвращается через сутки, человек требует живого сотрудника на первом же шаге.
Куда падает заявка. Это определяет, будет ли от бота толк вообще: чат-бот для ВКонтакте может безупречно вести диалог и не принести при этом ни одной обработанной заявки. Диалог закончился, человек оставил номер и выбрал время - дальше начинается работа менеджера, и она должна начинаться сама. Заявка, упавшая в общий чат сообщества, теряется между сообщениями через час.
Рабочий вариант - заявка становится карточкой в учётной системе с полями: что человек хотел, что выбрал, какой телефон оставил, откуда пришёл. Тогда менеджер работает со списком задач, и ни одна не растворяется в ленте сообщений. Поэтому бот приёма заявок почти всегда собирают сразу с интеграцией чат-бота с CRM, ещё до первых обращений.
Сбор контакта - это персональные данные. Телефон, имя и любые сведения о человеке требуют согласия на обработку по статье 9 закона «О персональных данных». В переписке это решается явным шагом: бот говорит, зачем берёт номер, и человек подтверждает кнопкой. Молчаливого согласия здесь не бывает.
Что смотреть в первую неделю. Сколько разговоров начато и сколько дошло до целевого действия. На каком экране обрывается больше всего диалогов. Сколько раз сработал выход к человеку. Этих чисел хватает, чтобы понять, что чинить.
Три пути сборки: конструктор, свой бот, бот с ИИ-ответами
Чат-бот для ВКонтакте собирается тремя способами, и выбирают между ними по тому, что должно происходить внутри диалога. Размер бюджета здесь вторичен.
Путь 1. Конструктор без кода
Готовая платформа, где сценарий собирается мышкой: экраны, кнопки, переходы, простые условия. Подключение к сообществу занимает минуты, править сценарий может маркетолог.
Кому подходит. Сценариям на два-три десятка экранов без расчётов: ответы на типовые вопросы, запись, квалификация обращения, прогрев подписчиков.
Чем платите. Ограничениями конструктора: возможно ровно то, что задумал его автор, и обойти это нельзя. Зависимостью от посредника, через которого идёт переписка и у которого лежат ваши данные. Подпиской, которая платится ежемесячно и обычно растёт вместе с числом диалогов. И невозможностью переезда: на другой платформе сценарий собирают заново.
Путь 2. Свой бот на API
Здесь чат-бот для ВКонтакте пишется как скрипт на вашем сервере: он получает события и отвечает вызовами методов платформы. Никакого посредника между вами и ВКонтакте.
Кому подходит. Когда нужны интеграции с вашими системами: проверить остаток на складе, посчитать стоимость по своим правилам, создать сделку в учётной системе, свериться с расписанием мастеров. И когда нужен контроль над данными переписки.
Чем платите. Нужен разработчик - и не только на запуск, но и на поддержку: платформа меняется, сервер требует присмотра, ошибки надо ловить. Первый запуск идёт дольше, чем в конструкторе. Зато потолка возможностей практически нет, и ежемесячный платёж не растёт от числа диалогов.
Путь 3. Бот с ИИ-ответами по базе знаний
Поверх сценария работает языковая модель: она понимает вопрос, заданный обычными словами, и отвечает по вашим материалам - прайсу, условиям доставки, описанию услуг, частым вопросам.
Кому подходит. Когда клиенты пишут текстом вместо нажатия кнопок; когда вопросов слишком много, чтобы разложить их по кнопкам; когда ответ зависит от контекста разговора.
Чем платите. База знаний должна быть собрана и поддерживаться в актуальном виде, иначе модель уверенно повторит устаревшие условия. Ответы надо ограничивать рамкой, чтобы модель отвечала по документам и не выходила за их пределы. Нужен способ проверять, что она отвечает правильно, - выборочное чтение диалогов в первые недели обязательно. И решение дороже в сборке, чем сценарий на кнопках.
Рабочая связка обычно гибридная. Сценарий держит рамку разговора и целевое действие, модель закрывает свободные вопросы внутри этой рамки, а спорные случаи уходят человеку. Такой бот не «умнее» сценария - он просто не ломается на формулировке, которой вы не предусмотрели.
Если вы сравниваете площадки между собой, соседние разборы дают ту же логику для других мессенджеров: чат-бот для WhatsApp и Telegram-бот для бизнеса. Устройство разговора там одинаковое, отличаются правила площадки и лимиты.
Где чат-бот для ВКонтакте упирается в потолок
Свободный текст. Кнопки держат короткий понятный путь. Человек, который пишет «а если холодильник гудит но морозит», в этот путь не попадает. Сценарий на кнопках ответит повторным вопросом, и половина таких разговоров закончится ничем.
Длинный контекст. Клиент спросил про доставку, затем про оплату и вернулся к доставке с уточнением «а во вторник так же?». Сценарий не помнит, о чём шла речь три сообщения назад, если вы не запрограммировали это отдельно.
Расчёты и проверки. Стоимость по своим правилам, остаток на складе, свободное время мастера, статус заказа. Всё это лежит в ваших системах, до которых конструктор не дотягивается, и требует соединения с ними.
Ответственные темы. Медицинские заключения, юридические оценки, точные финансовые расчёты. Бот записывает на приём и отвечает на организационные вопросы, а решения оставляет специалисту. Ограничение здесь не техническое, а простое житейское: цена ошибки несопоставима с экономией на разговоре.
Признак, что потолок достигнут, простой. Вы ловите себя на том, что добавляете в сценарий двадцать пятую ветку ради редкого случая, а доля разговоров с выходом к человеку не падает. Значит, дело не в ветках.
Что такое бот по своей сути и чем он отличается от рассылки, разобрано отдельно в материале что такое чат-бот - полезно прочитать до того, как выбирать платформу.
Шесть мест, где чат-бот для ВКонтакте теряет клиентов
Все шесть почти не видны изнутри: переписка выглядит нормальной, а заявок нет. Чат-бот для ВКонтакте при этом исправно работает, и в этом вся трудность.
- Переключатели включены наполовину. Сообщения сообществ и возможности ботов - это две разные настройки в разных местах управления. Включённые возможности ботов при выключенных сообщениях не дают ничего, и первым делом при любой жалобе на молчащего бота смотрят именно сюда.
- Пустой первый экран. Человек открыл диалог и увидел поле ввода без единой подсказки. Галочка «Добавить кнопку "Начать"» ставится в настройках для бота и превращает пустой экран в понятное начало разговора.
- Клавиатура собрана для монитора. Ряд из четырёх-пяти кнопок на телефоне превращается в столько же обрезанных слов: ширина делится между кнопками поровну, подпись выравнивается по центру и режется по границе. Две кнопки в ряду читаются всегда.
- Попытка писать тем, кто не разрешал переписку. Право написать человеку появляется только после того, как он нажал «Разрешить сообщения» или обратился к сообществу сам. Подписчики сообщества и разрешившие переписку - разные списки, и рассылка строится строго по второму.
- Молчание в беседе. Бота добавили в рабочий чат, он отвечает через раз. Причина в уровне доступа: сразу после добавления ему видны только обращения к нему самому, а полный доступ администратор беседы выдаёт отдельным действием.
- Заявка падает в общий чат сообщества. Через час она лежит под двадцатью сообщениями. Результат разговора должен становиться строкой в списке со статусом и ответственным, иначе разговоры идут, а работы с ними нет.
Седьмое место не входит в список, потому что относится не к боту: сообщество без описания, без обложки и с последним постом годовой давности. Бот в нём работает исправно, а доверия к нему нет.
Где вы сейчас
- Сообщество есть, бота нет. Начинайте с шага 1 и шага 2: назовите целевое действие и включите две галочки. Первая рабочая версия собирается в конструкторе за вечер, и её уже можно мерить.
- Бот собран в конструкторе, диалоги идут, заявок мало. Смотрите раздел про шесть мест потери: почти всегда дело в тупиках и в том, куда падает результат. Тексты виноваты реже всего.
- Заявки есть, но теряются между чатами. Вопрос здесь про приёмник заявок: ему нужно место с полями и статусами. Смотрите шаг 6.
- Клиенты пишут свободным текстом, кнопки не спасают. Кнопочная логика исчерпана, и дальше помогает только модель, отвечающая по вашим материалам внутри прежней рамки. Тот же самый выбор на другой площадке показан в разборе про чат-бот в MAX.
Чек-лист
- Целевое действие бота названо одним глаголом, и у него есть продолжение на вашей стороне: кто получает результат и в какой срок.
- В сообществе включены сообщения и пункт «Возможности ботов», проверено живым сообщением с личной страницы.
- Ключ доступа создан с минимально необходимыми правами и хранится на сервере, вне кода и вне переписки.
- Способ получения событий выбран, и обработаны служебные ответы: подтверждение для вебхуков или три состояния очереди для Long Poll.
- Клавиатура укладывается в лимиты, подписи кнопок читаются на телефоне, а кнопки геопозиции и оплаты стоят по своим правилам.
- С любого экрана видно выход к человеку, и непонятный текст получает ответ вместо молчания.
- Заявка падает в место с полями и статусами, а согласие на обработку персональных данных берётся явным шагом.
Источники
- «Чат-боты. Быстрый старт», документация VK для разработчиков: состав бота, настройки сообщества, ключ доступа, уровни доступа в беседах - https://dev.vk.ru/ru/api/bots/getting-started
- Bots Long Poll API, раздел документации VK: подключение, параметр ожидания, служебные ответы - https://dev.vk.ru/ru/api/bots-long-poll/getting-started
- «Клавиатура» в документации VK: типы и лимиты клавиатур, типы кнопок, длины подписи и служебных данных - https://dev.vk.ru/ru/api/bots/development/keyboard
- «События в сообществах», справочник VK: полный список событий Callback API и Bots Long Poll API - https://dev.vk.ru/ru/api/community-events/json-schema
- Метод messages.send в документации VK: права доступа, random_id, длина сообщения, число получателей - https://dev.vk.ru/ru/method/messages.send
- «Ключи доступа. Общие сведения», документация VK: типы ключей и сроки их действия - https://dev.vk.ru/ru/api/access-token/getting-started
- Федеральный закон от 27.07.2006 N 152-ФЗ «О персональных данных», статья 9 о согласии субъекта на обработку данных - https://www.consultant.ru/document/cons_doc_LAW_61801/6c94959bc017ac80140621762d2ac59f6006b08c/