Проблема с Callback api в вк
Делаю бота для группы, запросы идут, а сообщение нет и как вывести $data, чтобы я мог на нее посмотреть?
<?php
$token = 'токен';
$confirmation_token = 'конфтокен';
if (!isset($_REQUEST)) {
return;
}
$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;
// $message = $data->object->text;
$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;
$request_params = array(
'message' => "Hello, {$user_name}!",
'user_id' => $user_id,
'access_token' => $token,
'v' => '5.107'
);
$get_params = http_build_query($request_params);
file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
echo('ok');
break;
}
Ответы (1 шт):
Автор решения: Иван Недзвецкий
→ Ссылка
Для метода messages.send надо обязательно указывать аргумент random_id=0 без него сообщение не отправится.
Вывести значение $data можно например в файл
file_put_contents("callback.log", date("[d-m-Y H:i:s] ").json_encode($data)."\n", FILE_APPEND);
В этом примере создастся callback.log в папке со скриптом
Кроме того ваш код надо дополнить логированием ошибок в случае если вызов API завершился неудачно, например так:
$request_params = array(
'message' => "Hello, {$user_name}!",
'user_id' => $user_id,
'access_token' => $token,
'random_id' => '0',
'v' => '5.107'
);
$get_params = http_build_query($request_params);
$context = stream_context_create(array(
'http' => array('ignore_errors' => true),
));
$res = file_get_contents('https://api.vk.com/method/messages.send?' . $get_params, false, $context);
$responseData = json_decode($res);
if (!$responseData || isset($responseData['error'])) {
file_put_contents("callback.log", date('[d-m-Y H:i:s] ') . "messages.send: response: " . $res . "\n", FILE_APPEND);
}