Zakonoposlushniy
@Zakonoposlushniy

Как настроить бота в вк через Callback API?

Всех приветствую!

Решил попробовать подключить бота в вк для ответа на сообщения в группе.
Я в php не просветлённый, поэтому следовал инструкции из интернета.

1) Создал токен
2) Создал на хостинге ПХПшынй файл и закинул туда этот код
<?php
$confirmation_token = 'c0e26d59';
$token = '42bbc6b599960c9cf798641696b70e60be1931fd57d1ad75f33a3b86ea700efeedca7db2be8580be643b8';
$data = json_decode(file_get_contents('php://input'));
switch ($data->type){
    case 'confirmation':
        echo $confirmation_token;
        break;
    case 'message_new':
        $user_id = $data->object->user_id;
        $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&v=5.0")); 
        $user_name = $user_info->response[0]->first_name;
        $message = $data->object->body;
        $messages_array = [
            'Соощение 1' => "Ответ бота на сообщение",
            'Сообщение 2' => "Ответ бота на сообщение",
            'Сообщение 3' => "Ответ бота на сообщение"
        ];
        foreach($messages_array as $k => $v){
            if($message == $k){$otwet = $v;}
        }
        $request_params = [
            'message' => "Hello, {$user_name}!", 
            'user_id' => $user_id, 
            'access_token' => $token, 
            'v' => '5.0' 
        ];
        $get_params = http_build_query($request_params);
        file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
        echo('ok');
        break;
        return false;
}
?>

В руководстве говорилось, что для подтверждения адреса сервера, на него будет направлен POST-запрос, содержащий JSON:
{"type":"confirmation","group_id":144819215}
И сервер должен вернуть эту строку
c0e26d59

В общем всё сделал как в руководстве, но бот не работает.

Может быть проблема в том, что у меня не подключен SSL сертификат к хостингу ?
Или я что-то не так сделал ?

Благодарю за помощь.
  • Вопрос задан
  • 1538 просмотров
Пригласить эксперта
Ответы на вопрос 2
mrMazai
@mrMazai
WebDeveloper
SSL обязателен, причем не самоподписной.
Для проверки разделите задачу на две части:
1) Прием сообщения от ВК, оно приходит без ключей, на указанный вами адрес вебхука.
$IN = json_decode(file_get_contents('php://input'), TRUE);
Сохраните приходящий массив, посмотрите, что в нем.

2) Отправка сообщения.
$request_params = array(
'message' => $OUT['MSG'],
'user_id' => $IN['FROM_ID'],
'access_token' => $token,
'v' => '5.63'
);

$get_params = http_build_query($request_params);
$log = file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);

// Сохраните значение $log, в нем будет ответ ВК и соответственно, можно будет посмотреть, что ему не нравится.

//Возвращаем "ok" серверу Callback API
echo('ok');

Если нужно помочь сохранять ответы или подробности, пишите.
Ответ написан
Комментировать
APTEMOH
@APTEMOH
Пишу чат ботов, телеграм ботов, ботов во вконтакте
Ларчик просто открывался echo('ok');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы