@Kilkaz

Бот в вк не отвечает на поступающие сообщения?

Взял с хабр вот такой кодик, закинул его на свой сервер apache (рабочий), создал группу в вк, настроил все как надо. В настройках сервера (вк) проверил адрес, все нормально (проверило). Запрос json сервер принимает и обрабатывает, отсылает ok вк, а на вступление в сообщество и сообщения не реагирует. Я в программировании полный ноль, не судите строго ))), может это связано с API, если кому не жалко, киньте рабочий код, проверю со своими токенами (заодно проверю, может это с сервером что-то, хотя возвращает значения хз)))

<?php

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

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

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

// Secret key
$secretKey = '----';

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

// проверяем secretKey
if(strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0)
return;

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

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

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

//С помощью messages.send и токена сообщества отправляем ответное сообщение
$request_params = array(
'message' => "{$user_name}, ваше сообщение зарегистрировано!
".
"Мы постараемся ответить в ближайшее время.",
'random_id' => rand(5,15)
'user_id' => $userId,
'access_token' => $token,
'v' => '5.81'

);

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

// Если это уведомление о вступлении в группу
case 'group_join':
//...получаем id нового участника
$userId = $data->object->user_id;

//затем с помощью users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$use..."));

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

//С помощью messages.send и токена сообщества отправляем ответное сообщение
$request_params = array(
'message' => "Добро пожаловать в наше сообщество МГТУ им. Баумана ИУ5 2016, {$user_name}!
" .
"Если у Вас возникнут вопросы, то вы всегда можете обратиться к администраторам сообщества.
" .
"Их контакты можно найти в соответсвующем разделе группы.
" .
"Успехов в учёбе!",
'random_id' => rand(5,15)
'user_id' => $userId,
'access_token' => $token,
'v' => '5.81'
);

$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;
}
?>
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы