Бот VK API. Не реагирует на сообщения

153
23 ноября 2021, 17:00

Хочу перейти на последнюю версию VK API (5.103), но бот не реагирует на сообщения, узнал, что в этой версии надо добавлять объект client_info, но как это сделать? Буду очень признателен, если поможете. Желательно ориентироваться на мой код:

<?php
    //ключ группы, который мы должны вернуть серверу VK API
    $group_token = 'beb...';
    //функция отправки сообщений
    function vk_msg_send($randomID, $peer_id, $text_msg){
        $randomID = rand().time();
        //запрашиваем и отправляем параметры серверу
        $request_params_msg = array(
            'message' => $text_msg,
            'random_id' => $randomID,
            'peer_id' => $peer_id,
            'access_token' => "access_group_token",
            'v' => '5.103'
        );
        $get_params_msg = http_build_query($request_params_msg);
        file_get_contents('https://api.vk.com/method/messages.send?'. $get_params_msg);
    }
    /*создаём переменную, в которой будем получать данные (запрос) от пользователя (через VK API) в виде JSON-файла и декодировать (переводить) их в обычный php  
     *в дальнейшем трансформируем (производим какие-то действия с этими данными), переводим обратно в JSON-формат и отправляем их VK API, а он уже формирует окончательный ответ для пользователя
     */
    $data = json_decode(file_get_contents('php://input'));
    //ловим тип данных (события), которые нам отправляет сервер VK API
    switch ($data->type) {
        //отправляем ответ VK API на запрос 'confirmation' в виде нашего ключа из переменной "group_token" для установки связи с сервером
        case 'confirmation':
            echo $group_token;
        break;
        /*подключаемся к событию "message_new"
         *ловим и проверяем сообщения
         */
        case 'message_new':
            $message_text = $data -> object -> text;
            $chat_id = $data -> object -> peer_id;
            $id_random = $data -> object -> random_id;
            // если переменная "message_text" (сообщение пользователя) будет равна указанному нами строковому значению, тогда мы будем отправлять пользователю строковый ответ через переменную "chat_id"
            if ($message_text == "привет" || $message_text == "Привет"){
                vk_msg_send($id_random, $chat_id, "Привет");
            }
            else if ($message_text == "пока" || $message_text == "Пока"){
                vk_msg_send($id_random, $chat_id, "Пока");
            }
            else {
                vk_msg_send($id_random, $chat_id, "Ты что-то сказал?");
            }
            //отвечаем этим сообщением на все запросы сервера VK API, чтобы подтвердить, что всё сработало верно и всё ОК
            echo 'ok';
        break;
    }
?>
Answer 1

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

$rand = rand(0000000000, 9999999999).time("Ymd");
Функция:
function vk_send($method, $request) {
    $get_params = http_build_query($request);
    json_decode(file_get_contents(VK_API_ENDPOINT.$method.$get_params.'&access_token='.VK_API_TOKEN.'&v='.VK_API_VERSION));
    echo('ok');
}

при этом запрос такой:

$userId = $data->object->peer_id;
            $request_params = array(
                'random_id' => $rand,
                'user_id' => $userId,
                'message' => "Привет"
            );
            //Отправление сообщения
            vk_send('messages.send?', $request_params);

У меня работает.

READ ALSO
Yii2, как очистить кэш(disk cache)

Yii2, как очистить кэш(disk cache)

Я заливаю обновления стилей и JS на production, очищаю папки frontend/web/assets и frontend/runtime/cache, очищаю кэш который на сервере, убираю кэш через консоль php yii cache/flush-all,...

94
В DiDOM не получается получить данные

В DiDOM не получается получить данные

Не получается спарсить ссылку на изображение или просто получить доступ к img или даже к figure Находит только пустые пробелыВ дочерних элементах...

90
Объясните что за параметр в REST api?

Объясните что за параметр в REST api?

У меня есть пример инструкция по созданию REST ApiЯ не понимаю что за обязательный параметр мне нужно обрабатывать

264
Нужна помощь. Ошибка в коде

Нужна помощь. Ошибка в коде

После того как внес верстку в битрикс, мне указывает ошибкуВидимо все в том что, я неправильно расположил синтаксис

248