A
A
andrey_levushkin2018-10-15 16:32:40
PHP
andrey_levushkin, 2018-10-15 16:32:40

The VK community bot does not work - does not respond to the message. What to do?

I set up the bot according to the official instructions of VK, the events are saved, but the final message is not sent. Maybe I did something wrong in the script?
VK instruction: https://vk.com/dev/callback_api
My script:

<?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; 

} 
?>

Answer the question

In order to leave comments, you need to log in

2 answer(s)
S
Stockholm Syndrome, 2018-10-16
@andrey_levushkin

//...получаем id его автора 
$user_id = $data->object->user_id;
the message object does not have a property user_idsince version 5.80, so you need to do this:
$user_id = $data->object->from_id;

A
asof, 2019-01-09
@asof

Maybe someone will come in handy, the bot did not answer until he added 'random_id' => rand(5,15) to $request_params.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question