Как создать чат-бота ВКонтакте

Как создать чат-бота ВКонтакте

10 августа 2021 PHP

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

Сфера применения бота ограничивается только вашей фантазией, с ним можно не только общаться, но и например, научить его присылать заказы из интернет-магазина в беседу с сотрудниками. Так же бот может отслеживать не только новые сообщения, но и множество других событий, например, когда сообщение редактируется, кто именно его написал, содержится ли в нем медиа и т.д.

Создание сообщества

Боты ВКонтакте работают от имени сообществ, поэтому если у вас нет группы, регистрируем ее в разделе Сообщества → Создать сообщество.

Создание сообщества ВКонтакте

Укажите тип сообщества, например «Группа по интересам».

Тип сообщества

Укажите название и тематику сообщества.

Название сообщества

Создание ключей доступа

После того, как сообщество будет создано, перейдите в его настройки по ссылке «Управление» с его главной страницы. Здесь есть iphone

Главная страница сообщества

Выберите меню «Работа с API» и создайте новый ключ.

Работа с API

Пока что для бота нам хватит отслеживать только сообщения, поэтому отметьте галочкой этот пункт.

Создание ключа доступа

Созданный ключ можно увидеть на вкладке «Ключи доступа».

Ключи доступа

Перейдите на вкладку CallBack API. Выберите версию 5.89. Вы можете выбрать и самую последнюю, но учтите, что передаваемые параметры там будут несколько другие, чем в приведенном ниже коде. Поле адрес пока оставьте пустым. Придумайте любой секретный ключ. Так же вам понадобится код из поля «Строка, которую должен вернуть сервер».

Callback API

На вкладке типы событий отметьте входящие сообщения.

Типы событий

Дли того, чтобы боту можно было написать в группе, включите функцию сообщений.

Сообщения

Разрешите добавлять бота в беседы.

Настройки для бота

После добавления бота в беседу, он может принимать сообщения, которые адресованы только ему. Чтобы бот смог отслеживать все сообщения устанавливаем опцию в настройках участников. Сделать это может только администратор беседы.

Доступ ко всей переписке

Итак, после всех манипуляций вы должны получить 3 секретных ключа:

  • Ключ доступа
  • Секретный ключ
  • Строка, которую должен вернуть сервер

PHP-код чат-бота

Замените в коде строки с ключами на полученные и сохраните его на вашем хостинге, например по адресу http://site.ru/bot.php

Затем укажите этот адрес в настройках бота на вкладке Callback API (то, что пропустили на предыдущем шаге настроек).

<?php
$confirmationToken = '<Строка, которую должен вернуть сервер>';
$secretKey = '<Секретный ключ>';	

// Функция отправляющая сообщения
function vk_msg_send($peer_id, $text){
	
	$request_params = array(
      'message' => $text,
	  'attachment' => $attachment,
      'peer_id' => $peer_id,
      'access_token' => '<Ключ доступа>',
      'v' => '5.89'
    );
	
	$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')); // Получаем данные с ВК

if(strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0) {
	return;
}

switch ($data->type) {  
	case 'confirmation': 
		echo $confirmationToken; // Если ВК запрашивает подтверждение, то выводим код подтверждения 
	break;  
		
	case 'message_new':
		// Если событие нового сообщения, то получаем его текст
		$message_text = $data->object->text;
		$peer_id = $data->object->peer_id;
		
		$message_text = mb_strtolower($message_text, 'UTF-8'); // Переводим текст к нижнему регистру
		
		// Если сообщение содержит подстроку привет, отправляем сообщение
		if(strpos($message_text, "привет") !== false){
			vk_msg_send($peer_id, "Привет");
		}
		
		echo 'ok'; // Обязательно уведомляем сервер, что сообщение получено, текстом ok
	break;
}
?>

Бот так же может отправлять медиафайлы. Для этого в переменную $attachment передаем код файла. Получить его можно из адресной строки, например так:

Код медиафайла ВКонтакте
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Остались вопросы по статье? Задайте их прямо сейчас!
Похожие записи
Файл менеджер PHP одним файлом

Очень нужная и удобная вещь phpFileManager. Это полноценный инструмент для управления файловой системой из одного файла с множеством функций и поддержкой русского языка. Это инструмент, предназначенный для быстрого управления файлами, а также для проверки конфигурации и безопасности PHP-сервера. Единственный PHP-файл Читать далее

Простая интеграция Яндекс.Кассы на PHP

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

Вывод постов из Instagram на сайт с помощью API

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

PHP классы, объекты, методы

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

Удалить значение из массива на PHP

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

Создание чат-бота для Viber

В этой статье рассмотрим как создать простого чат-бота для Viber, который будет принимать и отправлять сообщения в чат. Шаг 1 Итак, для начала необходимо зарегистрироваться в сервисе Viber Admin Panel по этой ссылке. Шаг 2 Создаём бота. Для этого заполняем Читать далее

6 комментариев на «Как создать чат-бота ВКонтакте»

  1. Арс:

    Ваш бот не работает к сожалению(

  2. Антон:

    Работает. Делайте все по инструкции.

  3. Вадим:

    Добрый день.
    Переменная $attachment откуда берется?

  4. Антон:

    Изначально она пустая. Но в нее можно передать ссылку на медиафайл. Читайте в конце статьи.

  5. Александр:

    Запрос возвращает ошибку 500 (Internal Server Error)

  6. Александр:

    А все, я понял. У меня протокол HTTP, а надо протокол HTTPS.

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

*

code