Бот для сообщества ВКонтакте

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




Настройка Callback API для бота сообщества ВКонтакте

Подготовка серверной части к подключению

Callback API — это инструмент для отслеживания активности пользователей в Вашем сообществе ВКонтакте. С его помощью Вы можете реализовать новые полезные функции, например:

  • Бота для отправки мгновенных ответов на поступающие сообщения.
  • Систему автоматической модерации контента.
  • Сервис для сбора и обработки показателей вовлеченности аудитории.

Чтобы начать использовать Callback API, подключите свой сервер в настройках сообщества и выберите типы событий, данные о которых требуется получать (например, новые комментарии и новые фотографии). Когда в сообществе произойдет событие выбранного типа, ВКонтакте отправит на Ваш сервер запрос в формате JSON с основной информацией об объекте, вызвавшем событие (например, добавленный комментарий). Вам больше не нужно делать регулярные запросы к API, чтобы отслеживать обновления — теперь Вы будете получать их мгновенно.

Инструкция по подключению подробно описана в отличной документации для разработчиков ВКонтакте.

Разберем её подробнее, для начала мы должны иметь выделенный сервер, я рекомендую использовать хостинг firstvds, наш тестовый сервер мы расположим именно там, так же по промокоду 648336027 вы получите неплохую скидку.

Для работы с callback API ВКонтакте рекомендует использовать протокол https, инструкцию по бесплатной получении сертификата cloudflare и настройки сервера вы сможете найти в статье Бесплатный SSL сертификат CloudFlare.

По окончании настройки сервера вы должны иметь рабочий web-сервер, на который мы загрузим скрипт нашего бота.



Настройка сообщества ВКонтакте

Генерация ключа доступа

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

Далее спустимся в раздел «Работа с API» -> «Ключи доступа«.

Для создания ключа необходимо нажать «Создать ключ» и выбрать необходимые права, которые мы предоставим нашему боту.

В нашем случае нам хватит доступа к сообщениям сообщества.

Сохраним данный ключ, он нам понадобится при настройке backend.

Настройка callback API

Теперь мы должны связать наш сервер и сообщество, для этого мы должны указать данные нашего сервера и создать секретный ключ. Для этого нам необходимо перейти в раздел управления сообщества и спуститься во вкладку «Работа с API».

Дальше наступает очень важный момент, нам необходимо ввести адрес нашего сервера и придумать секретный ключ, в качестве ключа выступает любая строка, а в качестве адреса, соотвественно, адрес к php скрипту на сервере.

Введем секретный ключ и нажимаем «Сохранить», после мы должны получить соответствующее уведомление о успешной установке ключа. Кнопку «Подтвердить» напротив поля с адресом сервера не нажимаем.

Заданный Вами секретный ключ будет передаваться с каждым уведомлением от сервера в отдельном поле secret. Это позволит Вам достоверно определять, что уведомление пришло именно от нашего сервера.

Также мы должны запомнить код, который должен вернуть сервер, запишите его, он нам понадобится при настройке backend.

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

Важным моментом в работе бота сообщества, является ответы на пользовательские сообщения и различные события, для того, чтобы мы могли взаимодействовать с пользователем от имени сообщества, нам необходимо указать какие именно события мы хотим получать.  Так как мы собираемся отслеживать входящие сообщения, вступления в сообщества и выход из него, то нам необходимо установить соответствующие галочки. Для этого перейдем во вкладку «Управление сообществом«.






Далее спустимся в раздел «Работа с API» -> «Типы событий«.

Установите необходимые пункты в данном разделе.

Настройка backend бот ВКонтакте

Следующим этапом мы должны создать специальный скрипт, который будем принимать запросы от callback API вконтакте и определенным образом реагировать на события. Создадим, например, php-скрипт handler.php, адрес к этом скрипту, после настройки backend, мы должны указать в настройках сообщества.

Обратите внимание на значения следующих переменных:

В confirmationToken хранится код, которые сервер должен вернуть, в нашем случае:

token хранит в себе ключ доступа, который мы генерировали в главе «Генерация ключа доступа»

secretKey мы задавали в разделе управления сообщества callback API.




Итоговый код выглядит следующим образом (handler.php):





После того как вы загрузите код, вы должны вернуться в раздел «Управление сообществом» -> «Работа с API» -> «Callback API», ввести адрес до скрипта и нажать «Подтвердить»

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

Дополнительные возможности

Реализация приветствия при вступлении в сообщество ВКонтакте

На данном этапе мы уже имеем настроенный сервер и обработчик бота, все возможные события указаны в документации, она хорошо написана, рекомендую с ней ознакомиться.

Мы будем отлавливать событие group_join, для этого в операторе switch создадим новый раздел. Мы не будем рассматривать join_type подробно, так как у нас открытая группа, но вы можете обрабатывать этот параметр на ваше усмотрение.

Полный код обработчика бота ВКонтакте с функцией приветственного сообщения:

Реализация прощания с участником после того, как он покинул сообщество

Реализация идентичная, в конкретном случае мы обрабатываем group_leave





Полный листинг кода:




4 Комментарии “Бот для сообщества ВКонтакте

  1. Спасибо большое, все крайне подробно и понятно написано! Уже смог сам написать первый бот)

    1. Спасибо за отзыв, мои данные есть в разделе контакты, если будут вопросы — пишите 🙂

  2. Обратите внимание: после получения уведомления Ваш сервер должен возвращать строку «ok» и статус HTTP 200. Если сервер несколько раз подряд вернет ошибку, Callback API временно перестанет отправлять на него уведомления.

    «Когда в сообществе произойдет событие выбранного типа, ВКонтакте отправит на Ваш сервер запрос с данными в формате JSON с основной информацией об объекте, вызвавшем событие (например, добавленный комментарий). В ответ на каждый такой запрос Ваш сервер должен отправить строку «ok». »

    Если он ответит еще чем-то, например выдаст мусор или notice, error, то это работать не будет. По возможности отключайте вывод ошибок для скрипта в php.
    php:
    ini_set(‘error_reporting’, 0);
    ini_set(‘display_errors’, 0);

    .htaccess:
    php_flag display_errors off

  3. Если бот отправляет бесконечное количество сообщений в ответ, то необходимо убедиться, что скрипт на сервере сохранен в кодировке UTF8 без BOM, иначе сервер будет слать в ответ на VK API следующее: п»їok , а это в свою очередь не является ответом ok. В данной ситуации добавляется BOM метка, её необходимо убрать.

Добавить комментарий

Ваш e-mail не будет опубликован.