Настроил бота по официальной инструкции ВК. Сервер успешно подтвердил, входящие сообщения регистрируются но не могу получить имя пользователя и отправить сообщение. Настроил логирование входящих и исходящих запросов с сохранением в БД. По ним можно отследить что ответа от сервера ВК нет. Подскажите в чем проблема?
Кот бота:
<?php
if (!isset($_REQUEST)) { return; }
$test = true;
//Подключение к БД
$hostname = "localhost";
$username = "пользователь";
$password = "пароль";
$database = "бд";
$table_log_query = "таблица";
//== Подключенние к БД ==
$dbh = new PDO("mysql:host=$hostname; dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
function log_query($dir, $data) {
global $table_log_query, $dbh;
$stmt = $dbh->prepare("INSERT INTO $table_log_query (dir, time, json) VALUES (:pdir, :ptime, :pjson)");
$stmt ->bindparam(":pdir", $dir);
$stmt ->bindparam(":ptime", time());
$stmt ->bindparam(":pjson", serialize($data));
$stmt->execute();
}
//Строка для подтверждения адреса сервера из настроек Callback API
$api_v = '5.92';
$confirmation_token = 'токенизнастроек';
$token = 'токенсообщества';
$secretKey = 'секретный ключ';
//Получаем и сохраняем уведомление в БД
$data = json_decode(file_get_contents('php://input'));
if ($test) log_query("in",$data);
switch ($data->type) {
case 'confirmation':
echo $confirmation_token;
break;
case 'message_new':
$peer_id = $data->object->peer_id;
//Получаем текст сообщения
$message_origin = $data->object->text;
$message = mb_strtolower($message_origin);
//Имя автора
$user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$peer_id}&access_token={$token}&v={$api_v}"));
$user_name = $user_info->response[0]->first_name;
if ($test) log_query("usr",$user_info);
$message = $message . ' ' . $user_name;
//Ответы
$request_params = [
'user_id' => $peer_id,
'random_id' => round(time() / 43),
'message' => $message,
'access_token' => $token,
'v' => $api_v
];
//Получаем и сохраняем уведомление в БД
$get_params = http_build_query($request_params);
$error = json_decode(file_get_contents('https://api.vk.com/method/messages.send?'. $get_params));
if ($test) {
log_query("out",$get_params);
log_query("err",$error);
}
echo('ok');
break;
return false;
}
?>
При этом если отправить сообщение боту то в БД появиться следующий лог: