Вы сейчас просматриваете Создание чат-бота ВКонтакте: Руководство по добавлению в сообщения группы и групповую беседу
Чат бот для VK

Создание чат-бота ВКонтакте: Руководство по добавлению в сообщения группы и групповую беседу

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

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

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

Ниже представлены шаги для создания бота:

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

    • Зарегистрируйте группу на платформе ВКонтакте, если у вас еще нет группы.
    • Укажите тип сообщества, например, “Группа по интересам”.
    • Задайте название и тематику сообщества.
  2. Создание ключей доступа:

    • Перейдите в настройки сообщества и выберите раздел “Работа с API”.
    • Создайте новый ключ доступа.
    • Отметьте галочкой опцию для отслеживания сообщений.
  3. Настройка Callback API:

    • Перейдите на вкладку “Callback API”.
    • Выберите версию API (например, 5.89).
    • Разрешите входящие сообщения.
    • Включите функцию сообщений для возможности общения с ботом.
    • Разрешите добавление бота в беседы.
  4. Настройка доступа к переписке:

    • Установите опцию для доступа бота ко всей переписке в настройках участников беседы. Это может сделать только администратор беседы.
  5. Получение ключей и настройка скрипта:

    • Получите 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 необходимо передать код файла, который можно получить из адресной строки.

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