V
V
Vladislav Grishchenko2018-03-31 17:21:21
PHP
Vladislav Grishchenko, 2018-03-31 17:21:21

Why does the Timeout was reached error occur in callback api in VK?

Good day! There was such a problem: it gives an error

timeout was reached
when requesting confirmation of the link in the callback api. The code is written in PHP. What to do in this situation?
Whole code:
//Строка для подтверждения адреса сервера из настроек Callback API
$confirmationToken = '12345678';

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

// Secret key
$secretKey = '1234567890123456';

//Получаем и декодируем уведомление
$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 его автора
        $userId = $data->object->user_id;
        //затем с помощью users.get получаем данные об авторе
        $userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.73"));

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

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

        $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={$userId}&v=5.73"));

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

        //С помощью messages.send и токена сообщества отправляем ответное сообщение
        $request_params = array(
            'message' => "Добро пожаловать в наше сообщество, {$user_name}!<br>" .
                            "Если у Вас возникнут вопросы, то вы всегда можете обратиться к администраторам сообщества.<br>" .
                            "Их контакты можно найти в соответсвующем разделе группы.<br>" .
                            "Хорошего дня!",
            'user_id' => $userId,
            'access_token' => $token,
            'v' => '5.73'
        );

        $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_leave':
        //...получаем id ушедшего участника
        $userId = $data->object->user_id;

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

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

        //С помощью messages.send и токена сообщества отправляем ответное сообщение
        $request_params = array(
            'message' => "{$user_name}, нам очень жаль прощаться с вами <br>" .
                            "Мы всегда будем ждать Вас в нашем уютном клубе.<br>" .
                            "Если возникли вопросы - свяжитесь с администратором сообщества<br>" ,
            'user_id' => $userId,
            'access_token' => $token,
            'v' => '5.73'
        );

        $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

1 answer(s)
D
Dimonchik, 2018-03-31
@dimonchik2013

little code
but the logs will save you
timeout - if cho - this is when the answer is not waiting

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question