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

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

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 отправляющий сообщения с сайта

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

Отправка формы без перезагрузки страницы на PHP и Ajax

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

Вывести на PHP месяц и день недели на русском

Довольно часто приходится сталкиваться с выводом названий месяцев и дней недели по-русски. При чем в различных вариантах, к примеру с полным названием или сокращенным, с большой буквы или с маленькой. Можно воспользоваться одним из этих 2 вариантов для вывода даты Читать далее

Парсер яндекс погоды на PHP

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

Как встроить видео с YouTube канала на сайт

Для вывода списка видеозаписей из канала или плейлиста YouTube на сайте можно воспользоваться этим полностью рабочим решением на PHP. С помощью этой функции можно получить все необходимые данные видеозаписей: название, изображение и идентификатор видео. Вам понадобится идентификатор канала или плейлиста. Читать далее

Курсы доллара и евро с сайта Центробанка на PHP

Парсер получает курсы доллара и евро с сайта Центробанка каждые 24 часа и записывает их в файл кеша /log/course.txt Скрипт полностью готов к работе и не требует каких-либо дополнительных настроек. <? function loadCourse(){ define("tsCourse","15:00:00"); # Время смены курса центральным банком Читать далее

Календарь на PHP и Ajax

Пример календаря на PHP и Ajax с переключением месяцев. Можно использовать как заготовку для решения любых задач. Я использовал его для создания плагина календаря мероприятий на WordPress. Скрипт использует процедурный подход, но имеет разделенную структуру с шаблоном , что довольно Читать далее

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

  1. Арс:

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

  2. Антон:

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

  3. Вадим:

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

  4. Антон:

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

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

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

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

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

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