В данном руководстве мы рассмотрим процесс создания чат-бота для ВКонтакте, который может быть добавлен не только в сообщения группы, но и в групповую беседу.
Бот будет способен отслеживать сообщения в беседе и отвечать на них, если они содержат определенные ключевые слова, фразы или фрагменты текста. Как и обычные пользователи, боты могут отправлять не только текстовые сообщения, но и медиафайлы, такие как изображения или видеоролики.
Применение бота ограничено только вашей фантазией. Вы можете использовать его не только для общения, но и, например, научить его присылать заказы из интернет-магазина в беседу с сотрудниками. Бот также способен отслеживать различные события, такие как редактирование сообщений, информацию о пользователе, наличие медиафайлов и т.д.
Ниже представлены шаги для создания бота:
Создание сообщества:
- Зарегистрируйте группу на платформе ВКонтакте, если у вас еще нет группы.
- Укажите тип сообщества, например, “Группа по интересам”.
- Задайте название и тематику сообщества.
Создание ключей доступа:
- Перейдите в настройки сообщества и выберите раздел “Работа с API”.
- Создайте новый ключ доступа.
- Отметьте галочкой опцию для отслеживания сообщений.
Настройка Callback API:
- Перейдите на вкладку “Callback API”.
- Выберите версию API (например, 5.89).
- Разрешите входящие сообщения.
- Включите функцию сообщений для возможности общения с ботом.
- Разрешите добавление бота в беседы.
Настройка доступа к переписке:
- Установите опцию для доступа бота ко всей переписке в настройках участников беседы. Это может сделать только администратор беседы.
Получение ключей и настройка скрипта:
- Получите 3 секретных ключа: ключ доступа, секретный ключ и строку, которую должен вернуть сервер.
- Замените строки с ключами в предоставленном PHP-коде бота.
- Сохраните скрипт на вашем хостинге (например, по адресу http://site.ru/bot.php).
- Укажите этот адрес в настройках бота на вкладке “Callback API”.
<?php
$confirmationToken = '<Your confirmation token>';
$secretKey = '<Your secret key>';
// Function for sending messages
function vk_msg_send($peer_id, $text, $attachment = '') {
$request_params = array(
'message' => $text,
'attachment' => $attachment,
'peer_id' => $peer_id,
'access_token' => '<Your 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')); // Get data from VK
if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0) {
return;
}
switch ($data->type) {
case 'confirmation':
echo $confirmationToken; // If VK requests confirmation, output the confirmation token
break;
case 'message_new':
// If it's a new message event, get the message text
$message_text = $data->object->text;
$peer_id = $data->object->peer_id;
$message_text = mb_strtolower($message_text, 'UTF-8'); // Convert the text to lowercase
// If the message contains the substring "привет" (hello), send a greeting message
if (strpos($message_text, "привет") !== false) {
vk_msg_send($peer_id, "Привет");
}
echo 'ok'; // Always notify the server that the message has been received with the response "ok"
break;
}
?>
В переписанном коде замените <Ваш токен подтверждения>, <Ваш секретный ключ> и <Ваш токен доступа> соответствующими значениями для вашего бота ВКонтакте. Этот код обрабатывает получение сообщений, проверку на наличие определенного ключевого слова (в данном случае “privet”) и отправку ответного сообщения.
В предоставленном PHP-коде бота можно также отправлять медиафайлы. Для этого в переменную $attachment необходимо передать код файла, который можно получить из адресной строки.