- Saved searches
- Use saved searches to filter your results more quickly
- VKCOM/bot-example-php
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- КАК СОЗДАТЬ БОТ ВК НА PHP (ИНСТРУКЦИЯ)
- Что будет уметь наш бот?
- Начинаем создавать бота
- Как создать бота в ВК (кодинг на php)
- Чего нельзя делать ботам
- Читайте также
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
VKCOM/bot-example-php
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Пример простого бота для ВКонтакте на PHP. Обработка событий с использованием Callback API, голосовые сообщения с помощью Яндекс SpeechKit.
Сообщество бота: https://vk.com/botexample. Бот отправляет в ответ на любое сообщение картинку и голосовое сообщение с именем собеседника.
Подготовка к использованию
Укажите свои данные в config.php. Ключ доступа к API и код подтверждения для Callback API Вы можете получить в настройках сообщества. Подробнее о получении ключа доступа для Яндекс SpeechKit можно прочитать здесь.
Обработка событий Callback API. В нашем примере обрабатываются два события:
- confirmation — уведомление для подтверждения адреса сервера;
- new_message — уведомление о входящем сообщении.
Подробную информацию о типах событий и формате уведомлений Вы найдёте в документации ВК API.
Отправка сообщений с вложениями.
Функции для работы с методами API ВКонтакте
Функции для работы с API Яндекс SpeechKit для генерация голосовых сообщений.
КАК СОЗДАТЬ БОТ ВК НА PHP (ИНСТРУКЦИЯ)
Продолжаем цикл статей посвященный написанию чат-ботов для социальных сетей на php. Прошлый раз мы создавали бота для Телеграм, а в этот раз я расскажу как сделать аналогичного бота для ВКонтакте. Забегая вперед скажу, что сегодня мы не будем использовать ВКшный PHP SDK и наш бот будет состоять лишь из одного файла (про SDK поговорим в другой раз).
Также, как и в случае с Телеграмм ботом нам потребуются минимальные навыки программирования на php, хостинг и ssl сертификат. Готовы? Приступим!
Что будет уметь наш бот?
Возможности бота ограничены лишь фантазией программиста (благо api вк многое позволяет), поэтому для примера наш бот будет уметь лишь самое простое, а именно:
- Отправлять уведомления при вступлении в сообщество;
- Отвечать в случае если пользователь отправил ЛС в чат группы;
- Отправлять уведомление в момент когда пользователь покидает группу.
Начинаем создавать бота
Прежде чем начнем писать код, создадим ключи доступа для нашего бота. Для этого перейдем в Управление сообществом, выберем справа «Работа с API» и нажмем на «Создать ключ».
Во всплывающем окне отметим галочками права доступа. В нашем случае достаточно лишь поставить галочку напротив пункта «Разрешить приложению доступ к сообщениям сообщества«, но имейте ввиду, что для более крутых ботов стоит ставить галки напротив всех пунктов сразу. Подтвердим действие нажатием по кнопке «Создать».
Далее нам предложат подтвердить действие через мобильное уведомления в приложении ВК или по СМС. Я выбрал второе. Получил код по СМС и ввел его.
Далее ВКонтакте генерирует для нас длинный проверочный ключ (token). Запишем его куда-нибудь (например в блокнот). В дальнейшем он нам понадобится для написания кода.
Теперь перейдем во вкладку Callback API->Настройки сервера. Здесь нас интересуют сразу 3 вещи: Адрес, Строка, которую должен вернуть сервер и Секретный ключ. Адрес пока пропустим (в целом вы можете сразу его заполнить если определились с тем, где будет лежать основной файл нашего php-бота, но поскольку сам файл еще не создан, то ВК будет ругаться, ибо сразу после ввода url соцсеть отправляет POST-запрос на проверку доступности бота по указанному адресу). Скопируем значение напротив «Строка, которую должен вернуть сервер» (confirmationToken). (в нашем случае это tt32e1. Придумает Секретный ключ (secretKey). Не забываем нажать «Сохранить».
Итак, на выходе у нас должны быть где-то записаны 3 вещи:
Теперь можно приступить к написанию php кода.
Как создать бота в ВК (кодинг на php)
Начинаем писать файл нашего бота ВКонтакте. Назовем его vk_bot.php. Напомню, что код необходимо писать в кодировке UTF-8 (без BOOM).
Определимся с константами:
if (!isset($_REQUEST))
// Строка, которую должен вернуть сервер (См. Callback API->Настройки сервера)
$confirmationToken = ‘tt32e1’;
// Ключ доступа сообщества (длинная строчка которую получили нажав «создать ключ»)
$token = ‘тутбудетмногобуквицифр’;
// Секретный ключ. (Задаем в Callback API->Настройки сервера)
$secretKey = ‘testKeyMyBot’;
Теперь проверим поступившие данные:
// Получаем и декодируем уведомление
$data = json_decode(file_get_contents(‘php://input’));
// проверяем secretKey
if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, ‘confirmation’) !== 0)
Используя switch проверим, что находится в поле «type» (какое событие сработало и в зависимости от этого сформируем ответ).
// Проверяем, что находится в поле «type»
switch ($data->type) // Запрос для подтверждения адреса сервера (посылает ВК)
case ‘confirmation’:
echo $confirmationToken; // отправляем строку для подтверждения адреса
break;
// Если это уведомление о новом сообщении.
case ‘message_new’:
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents(«https://api.vk.com/method/users.get?user_ids=&v=5.0»));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response[0]->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
‘message’ => «, Ваше сообщение получено!
В ближайшее время админ группы на него ответит.»,
‘user_id’ => $userId,
‘access_token’ => $token,
‘v’ => ‘5.0’
);
$get_params = http_build_query($request_params);
file_get_contents(‘https://api.vk.com/method/messages.send?’. $get_params);
echo(‘ok’); // Возвращаем «ok» серверу Callback API
break;
>
Небольшое пояснение:
Когда юзер отправляет сообщение в чат с группой срабатывает событие. Событие представляет собой JSON, имеющий следующую структуру:
В зависимости от того, что нам пришло в type, мы можем понять, какая структура будет у объекта object. Полный список возможных событий см. в официальной справке ВКонтакте.
Итак, на данный момент мы научили нашего бота 2-м вещам: корректно отвечать роботу ВК на проверочный запрос, а также автоматически отправлять пользователю уведомление в случае, если он отправит любой текст.
Теперь можно закачать наш с вами файл на сервер и заполнить в настройках адрес (если не сделали этого ранее).
Кроме этого необходимо перейти во вкладку «Типы событий» и поставить галочку напротив «Входящие сообщения».
Теперь можем проверить работу:
Как видим — все пашет. По сути у нас уже получилось сделать бота в вк. Давайте его немного прокачаем.
Добавим в конструкцию case еще 2 условия. Первое — отправит уведомлений в случае если человек вступил в нашу группу:
// Сработало событие — человек вступил в группу
case ‘group_join’:
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents(«https://api.vk.com/method/users.get?user_ids=&v=5.0»));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response[0]->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
‘message’ => «Добро пожаловать в группу, !»,
‘user_id’ => $userId,
‘access_token’ => $token,
‘v’ => ‘5.0’
);
$get_params = http_build_query($request_params);
file_get_contents(‘https://api.vk.com/method/messages.send?’. $get_params);
echo(‘ok’); // Возвращаем «ok» серверу Callback API
break;
Второе — аналогичное уведомление, но только в момент, когда человек покинет сообщество:
// Сработало событие — человек покинул группу
case ‘group_leave’:
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents(«https://api.vk.com/method/users.get?user_ids=&v=5.0»));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response[0]->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
‘message’ => «, нам очень жаль, что вы покинули нашу группу!»,
‘user_id’ => $userId,
‘access_token’ => $token,
‘v’ => ‘5.0’
);
$get_params = http_build_query($request_params);
file_get_contents(‘https://api.vk.com/method/messages.send?’. $get_params);
echo(‘ok’); // Возвращаем «ok» серверу Callback API
break;
Не забудем добавить соответсвтующие галочки напротив нужных нам событий в настройках группы:
Чего нельзя делать ботам
Не лишним будет процитировать один из разделов справки ВК:
Любой пользователь с базовыми навыками программирования может создать чат-бота ВКонтакте. Ботов можно написать для разных целей: от поиска рецептов до обработки фотографий. Их возможности ограничены только Вашей фантазией и правилами, которые мы разработали для того, чтобы боты использовались только в благих целях.
Прежде чем продолжить работу с бот-платформой, убедитесь, что все руководители сообщества ознакомлены с этими правилами. За их нарушение сообщество может быть заблокировано.
Ботам запрещено:
требовать подписку на сообщество, отметки «Нравится» и репосты;
рассылать рекламу, в том числе ссылки на аккаунты сообщества в других сервисах;
нарушать Правила пользования сайтом ВКонтакте.
Теперь вы знаете как создавать своего бота в ВК. Исходники урока можно скачать тут. В следующий раз поговорим о работе с PHP SDK для вк-ботов. Если у вас остались вопросы — задавайте в комментах. И не забываем репостить и лайкать эту статью)
Читайте также
Как в Laravel создать подключение к БД в runtime Бывают ситуации, например, когда предопределённых в конфиге Laravel подключений к базам данных не достаточно и возникает потребность создавать подключения динамически…
Особенности http_build_query в PHP Казалось бы http_build_query — простая функция, однако, имеет некоторые особенности. Нельзя однозначно сказать что это баг, скорее просто недокументированная фича,…
Cлучайные числа с плавающей точкой в PHP Стандартные библиотеки PHP умеют генерировать только целые случайные числа. Однако, возникают задачи где нужно не целое рандомное число с максимально…