@andrey_levushkin

Не работает бот сообщества ВК — не отвечает на сообщение. Что делать?

Настроил бота по официальной инструкции ВК, события сохраняются, но не отправляется итоговое сообщение. Может я что-то не так в скрипте сделал?
Инструкция ВК: https://vk.com/dev/callback_api
Мой скрипт:
<?php 

if (!isset($_REQUEST)) { 
return; 
} 

//Строка для подтверждения адреса сервера из настроек Callback API 
$confirmation_token = 'токенизнастроек'; 

//Ключ доступа сообщества 
$token = 'токенмоегосообщества'; 

//Получаем и декодируем уведомление 
$data = json_decode(file_get_contents('php://input')); 

//Проверяем, что находится в поле "type" 
switch ($data->type) { 
//Если это уведомление для подтверждения адреса... 
case 'confirmation': 
//...отправляем строку для подтверждения 
echo $confirmation_token; 
break; 

//Если это уведомление о новом сообщении... 
case 'message_new': 
//...получаем id его автора 
$user_id = $data->object->user_id; 
//затем с помощью users.get получаем данные об авторе 
$user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token={$token}&v=5.85")); 

//и извлекаем из ответа его имя 
$user_name = $user_info->response[0]->first_name; 

//С помощью messages.send отправляем ответное сообщение 
$request_params = array( 
'message' => "Hello, {$user_name}!", 
'user_id' => $user_id, 
'access_token' => $token, 
'v' => '5.85' 
); 

$get_params = http_build_query($request_params); 

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

//Возвращаем "ok" серверу Callback API 

echo('ok'); 

break; 

} 
?>
  • Вопрос задан
  • 2134 просмотра
Решения вопроса 1
@StockholmSyndrome
//...получаем id его автора 
$user_id = $data->object->user_id;
у объекта сообщения нет свойства user_id, начиная с версии 5.80, поэтому нужно так:
$user_id = $data->object->from_id;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
asof
@asof
Может кому пригодится, бот не отвечал пока не добавил 'random_id' => rand(5,15) в $request_params.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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