Блог о Backend и Highload

Яркий тренд IT-индустрии добрался и до социальной сети «ВКонтакте»: ещё в прошлом году многие разработчики стали создавать ботов для различных мессенджеров и социальных сетей. Далее мы рассмотрим сам процесс создания бота и самые частые «подводные камни». Стоит сразу заметить, что статья рассчитана на PHP-программистов, уже работавших с API ВКонтакте.

И, конечно, вот примеры существующих ботов: «Бот Гифак», «Бот Максим» и «Бот Генератор Стихов».

Стоит ли заниматься созданием бота?
Ответ на этот вопрос целиком и полностью зависит от ваших целей.

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

Расплачиваться за меньший объем работы приходится почти полной невозможностью монетизации. Когда вы создаёте сайт, то можете, например, разместить контекстную рекламу. Как реализовать подобное с ботом? Конечно, позднее администрация ВКонтакте может добавить возможность простого заработка для ботов, но мы не думаем, что это произойдет в ближайшее время. Лучший интернет-маркетинг.

Как работает бот ВКонтакте?
Принцип работы любого бота — получить сообщение от пользователя, сформировать ответ и отправить его обратно.

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

На момент написания статьи получение сообщений проще всего реализовывать на основе Callback API. Работает оно следующим образом: вы подписываетесь на определенные типы событий, а когда они происходят, ВКонтакте отправляет HTTP-запрос с данными о произошедшем событии на заданный вами URL. Лучшее продвижение.

Независимо от того, собираетесь ли вы взаимодействовать с этим событием, в ответ на запрос нужно вывести HTTP-статус «ok», его код равен 200. Если этого не произойдет, сервер ВКонтакте будет считать, что уведомление не получено и продолжит отправлять его с некоторой периодичностью, а потом временно прекратит отправку уведомлений.

ПРИМЕЧАНИЕ Если вы не знакомы с работой Callback API, рекомендуем изучить документацию перед продолжением чтения статьи.

Ответ пользователю мы будем отправлять методом messages.send с ключом доступа сообщества. Получить его можно на странице настроек сообщества, рядом с вкладкой Callback API.

С токенами сообщества и связаны «подводные камни». Во-первых, один ключ имеет ограничение: 3 запроса в секунду. Решается это выпуском новых ключей — их число неограниченно, а значит можно забыть о лимитах. Во-вторых, новый ключ сообщества может оказаться недействительным, тогда любой запрос приведет к ошибке «Access denied». Защититься от этого можно лишь проверяя каждый новый ключ в рабочем приложении.
evilinside.ru