Создание бота ВК на inline кнопках и обновление на версию API 5.103+ подробная инструкция и примеры
Статьи / PHP
На днях вышла новая версия API VK 5.103, а с ней и пришли inline кнопки, это те же самые кнопки, но которые прикрепляются к сообщению, пример ниже:
Если Вы использовали версию ниже 5.103, то после смены, на версию 5.103 и выше, ваш бот перестанет отвечать на сообщения в 100% случаях, все потому, что был добавлен новый объект
client_infoJson версии 5.102 и ниже:
Ответ с версии 5.103
Если раньше мы писали что бы получить ID беседы так:
$peer_id = $data->object->peer_id;
То теперь нужно делать так:
$peer_id = $data->object->message->peer_id;
А в объекте client_info теперь храниться информация какой тип клавиатуры поддерживается и поддерживается ли она вообще
А теперь по порядку, хватит теории, пора создать нового бота с новым типом кнопок, для начала качаем последнюю версию библиотеки
simplevk-master.rar
Загружаем содержимое на сервер и создаем рядом с папкой simplevk файл с любым названием, пусть это будет
bot.phpПишем в файл следующий код (Использую Sublime Text):
<?php
require_once('simplevk-master/autoload.php'); // Подключение библиотеки
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс
use DigitalStar\vk_api\VkApiException; // Обработка ошибок
const VK_KEY = "ВАШ ТОКЕН СООБЩЕСТВА"; // Токен сообщества
const CONFIRM_STR = "df0d1eb6"; // Тот самый ключ из сообщества
const VERSION = "5.103"; // Версия API VK
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(CONFIRM_STR);
$data = json_decode(file_get_contents('php://input')); //Получает и декодирует JSON пришедший из ВК
$vk->sendOK(); //Говорим vk, что мы приняли callback
$peer_id = $data->object->message->peer_id;
$vk->sendMessage($peer_id, "Работаю!");
Для тех кто впервые на нашем сайте, токен можно получить в настройках сообщества:
Не забудьте сразу включить сообщения и возможности бота
Обычно на этом шаге проблем ни у кого не возникало, теперь самое главное, внимательно!
Нужно подключить к нашему сообществу обработчик (Наш скрипт) который будет принимать CallBack. Делается это очень просто. Нужно указать полный путь к файлу
bot.php Что бы убедится что Вы указываете правильный путь, можно просто вставить ее в бразуер и перейти, вы увидите надпись ok, если совсем ничего не получилось, пишите в комментарии, поможем!
Пишем нашему боту что бы убедиться что все работает:
Все работает. Теперь давайте допишем код и добавим кнопки к сообщению. Используя библиотеку, используем функцию
sendButton ()$text1 = $vk->buttonText('Название 1', 'red', ['command' => 'btn_1']);
$text2 = $vk->buttonText('Название 2', 'green', ['command' => 'btn_2']);
$text3 = $vk->buttonText('Название 3', 'blue', ['command' => 'btn_3']);
$vk->sendButton($peer_id, "Работаю!", [[$text1, $text2, $text3]]);
Пишем нашему боту:
Кнопки появились, это хорошо, давайте сделаем теперь их inline кнопками, для этого достаточно передать 1 параметр в функцию
sendButton ()$vk->sendButton($peer_id, "Работаю!", [[$text1, $text2, $text3]], true);
Inline кнопки поддерживаются только в мобильном приложении (на сегодняшний день) заходим с телефона и отправляем любое сообщение:
Как видим кнопки прикрепляются за сообщением, что с этим делать решать только Вам. Ниже можно скачать архив с исходным кодом. А у меня на этом все :-)
А как работать с кнопками, мы писали в другой статье
Остались вопросы? Пиши в комментарии!
lesson_kotoff_net.rar