Создание бота вк 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 для ВКонтакте

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

Сперва нам нужно создать сообщество. Думаю, с этим справится каждый.

Затем мы заходим в настройки сообщества и выбираем пункт «API usage» и нажимаем на кнопку «Create token».

image

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

image

И вот мы получили заветный токен. Его, кстати, нужно сохранить в надёжное место и никому не показывать. Теперь можно приступать к коду.

image

Мы будем писать код на языке PHP, поэтому можно скачать Visual Studio code или PHPStorm. В принципе, код можно писать и в блокноте, только это будет не удобно. После кода мы перейдём к дальнейшей настройке группы.

Итак, для начала нам нужно получить информацию о входящем сообщении и перевести её из формата JSON в понятный для PHP.

В переменной data теперь к нас находится массив с сообщением, ID пользователя и ID чата.
«А что за „json_decode(file_get_contents(‘php://input’))“, — спросите вы.

file_get_contents('php://input')

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

Думаю, легко понять что написано в запросе, если иметь минимальные знания в английском языке.

Ну а „json_decode()“ — функция, которая переводит вышеприведённый JSON в массив, с которым может работать PHP.

Теперь напишем код, который смотрит какое событие произошло, и если к нам пришло новое сообщение, то сравнивает сообщение, с теми, на которые у нас есть ответ и смотрит ID чата.

type) < case 'confirmation': echo $confirmation_token; break; case 'message_new': $message_text = $data ->object -> text; $message_text = $data -> object -> peer_id; if ($message_text == "привет") < // что-то происходит >if ($message_text == "пока") < // что-то происходит >echo 'ok'; break; > ?> 

Теперь нам нужно как-то отвечать на эти сообщения. Для этого напишем простую функцию.

 $text, 'peer_id' => $peer_id, 'access_token' => "TOKEN", 'v' => '5.87' ); $get_params = http_build_query($request_params); file_get_contents('https://api.vk.com/method/messages.send?'. $get_params); > ?> 

Что же тут происходит? Здесь мы строим запрос к API VK (документацию рекомендую почитать) с текстом сообщения, ID чата и токеном, который мы создали ранее, и отправляем его на сервер ВК.

Теперь соединим эти куски кода и напишем реакции бота на то или иное сообщение.

 $text, 'peer_id' => $peer_id, 'access_token' => "TOKEN", 'v' => '5.87' ); $get_params = http_build_query($request_params); file_get_contents('https://api.vk.com/method/messages.send?'. $get_params); > $data = json_decode(file_get_contents('php://input')); switch ($data->type) < case 'confirmation': echo $confirmation_token; break; case 'message_new': $message_text = $data ->object -> text; $chat_id = $data -> object -> peer_id; if ($message_text == "привет") < vk_msg_send($chat_id, "Привет, я бот, который говорит две фразы."); >if ($message_text == "пока") < vk_msg_send($chat_id, "Пока. Если захочешь с кем-то поговорить, то у тебя есть бот, который говорит две фразы."); >echo 'ok'; break; > ?> 

«Хорошо, а зачем нам писать ‘ok’ после отправки сообщения?»

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

Теперь перейдём к настройке группы.

Заходим в настройки и выбираем версию API 5.87 (можно, конечно, и более новые версии, но лучше иметь единство версий API).

image

Из этого же раздела берём строку, которую должен вернуть сервер, и подставляем её в переменную confirmation_token.

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

Потом выбираем о каких событиях в сообществе нам будет сообщать ВКонтакте. Нам нужны только входящие сообщения.

image

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

image

Так как это моя первая публикация на Хабре, я хочу получить замечания по статье и дальше только совершенствоваться.

Источник

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.

Простое решение для создания бота ВКонтакте при помощи PHP.

License

LukasAndreano/VKBotAPI

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

Простое решение для создания бота ВКонтакте.

Чтобы начать создавать своего бота подключите библиотеку, укажите токен сообщества и используемую версию API

 require_once 'vk.php'; $vk = new VK('ТокенСДоступомКСообщениямСообщества', '5.131'); $data = json_decode(file_get_contents('php://input'));

При первом подключении VK отправит подтверждение и бот отправит ключ CallBack:

if ($data->type == 'confirmation') < exit(Ключ CallBack); >

Чтобы отправить сообщение пользователю, выполните:

// $peer_id - ID диалога с пользователем (можно использовать $from_id, однако если бот состоит в беседе, то нужно использовать $peer_id) $vk->SendMessage($peer_id, "Текст сообщения");

Вы также можете прикрепить к сообщению, например, фотографию:

$vk->SendMessage($peer_id, "Текст сообщения", "photo-196997982_457239020");

Для отправки сообщения более чем одному человеку, используйте:

$vk->SendMessages("6098838, 291457291, 390511105", "Текст сообщения");

Где «6098838, 291457291, 390511105» — ID пользователей, которым необходимо отправить сообщение (максимальное количество ID — 100 штук). К сообщениям также можно прикрепить, например, фотографию.

Если Вы хотите отправить сообщения с клавитурой, то выполните:

$vk->SendButton($peer_id, "Текст сообщения", [[$btn]], true);

Где $btn — кнопка, которую необходимо отправить (подробнее про кнопки ниже). После кнопок укажите true или false — параметр, который отвечает за показ inline кнопок. Если указано значение true, то кнопки будут отображаться прямо в сообщении. При значении false кнопки будут находиться под полем ввода.

Для использований двух и более кнопок, используйте: Если Вы хотите отправить сообщения с клавитурой, то выполните:

$vk->SendButton($peer_id, "Текст сообщения", [[$btn, $btn1, $btn2], [$btn3, $btn4, $btn5]], true);
[$btn, $btn1, $btn2] — Первый ряд кнопок (максиальное количество рядов: 10, а количество кнопок в ряду: 4). Каждый новый ряд указывается в квадратных скобках и отделяется от предыдущего запятой.

Сообщения с клавиатурой также поддерживают прикрепление документов (например, фотографий):

$vk->SendButton($peer_id, "Текст сообщения", [[$btn]], true, "photo-196997982_457239020");

Для отправки сообщения с кнопкой и вложением (по желанию) сразу нескольким пользователям (до 100 человек), используйте:

$vk->SendUsersButton($user_ids, "Текст сообщения", [[$btn]], true, "photo-196997982_457239020");

Где $user_ids — список пользователей, которым необходимо отправить сообщения. Пример: 6098838, 291457291, 390511105

Библиотека поддерживает отправку клавиатуры. Поддерживаемые виды кнопок:

  • Text (обычная кнопка с действием или без)
  • Link (кнопка, которая открывает ссылку при нажатии)
  • Location (кнопка, при нажатии на которую пользователь отправляет свою геолокацию)
  • CallBack (кнопка, которая позволяет без отправки сообщения от пользователя получить уведомление о нажатии на кнопку и выполнить необходимое действие)
$button = ["text", ["payload" => "start"], "Текст кнопки", "green"];

Где Payload — действие, которое будет совершено при нажатии на кнопку, green — цвет кнопки. Поддерживаемые цвета:

  • Red (negative, красный цвет)
  • Green (positive, зеленый цвет)
  • White (secondary, белый/серый цвет)
  • Blue (primary, синий цвет)
$button = ["link", "Текст кнопки", "https://vk.com/"];

Кнопка открывает указанную ссылку при нажатии, однако она не способна совершать действия (payload’ы)

Кнопка открывает окно выбора геолокации и отправляет ее боту.

$button = ["callback", ["type" => 'show_snackbar', "text" => 'Привет мир!'], "Текст кнопки", "green"];

Где show_snackbar — тип действия, которое будет совершено при нажатии на кнопку. Доступные варианты:

  • show_snackbar — отображение уведомления (доступно с мобильных устройств)
  • open_link — открыть ссылку. При этом «text» => ‘Привет мир!’ необходимо заменить на «link» => ‘ссылка’
  • open_app — открыть VK Mini App. При этом «text» => ‘Привет мир!’ необходимо заменить на «app_id» => ‘id приложения’, «owner_id» => ‘id владельца’, «hash» => ‘хэш’

Благодаря Payload’ам кнопки не являются бесполезными. Они могут, например, открывать другие меню или выполнять другие команды. После нажатия на кнопку она отправляет запрос с данными, благодаря которым бот и понимает, что была нажата та или иная кнопка:

if (isset($data->object->message->payload)) < $payload = json_decode($data->object->message->payload, true); > else < $payload = null; > $payload = $payload['command'];

Таким образом можно определить, что пользователь начал диалог по стартовой кнопке, например:

Реакции на действия пользователя в сообществе

Предположим, что пользователь поставил лайк на запись, а Вы хотите его отблагодарить (необходимо включить: Записи на стене -> Добавление лайка):

if ($data->type == 'like_add') < $vk->sendMessage($from_id, "$first_name, спасибо за лайк!"); >

Реакция на репост записи (необходимо включить: Записи на стене -> Репост):

if ($data->type == 'wall_repost') < $vk->sendMessage($from_id, "$first_name, спасибо за репост!"); >

Если Вам важен ID поста, который репостнул человек, то он хранится в переменной $post_id. Таким образом можно добавить реакцию на конкретный пост:

Реакция на комментарий записи сообщества (необходимо включить: Записи на стене -> Добавление):

if ($data->type == 'wall_reply_new') < $vk->sendMessage($from_id, "$first_name, спасибо за комментарий!"); >

About

Простое решение для создания бота ВКонтакте при помощи PHP.

Источник

Читайте также:  Tools php event about
Оцените статью