Задать вопрос
@adrenalinruslan

Отправляет и отправляет сообщение, почему он не отстает?

Я слышал, что после того как получил запрос от ВКонтакте, необходимо ему ответить Ok, чтобы он отстал от тебя. Но, у меня не отстает. Я делаю бота ВК, и ВК постоянно отправляет один и тот же запрос мне на сайт....

/*

*/

class Group {
	public function __construct($params = [], $data = []) {
		$this->token = $params->token;
		$this->version = $params->version;
		$this->data = $data;
	}

	public function reply($message = null) {
		return $this->sendMessage($this->data->object->message->peer_id, $message);
	}
}	

/*

*/

$group = new Group($CONFIGURATION->GROUP, json_decode(file_get_contents("php://input")));

/*

*/

echo 'Ok';

/*

*/

switch($group->data->type) {
	case 'confirmation': {
		echo $CONFIGURATION->GROUP->CONFIRMATION;
		break;
	}
	case 'message_new': {
		echo 'Ok';
		
		$group->reply('Hello world!');

		echo 'Ok';
		
		break;
	}
}

/*

*/

echo 'Ok';
  • Вопрос задан
  • 139 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 3
@Runnin
Беседа по vk_api, вступай - https://vk.cc/8WE9bL
Лови. Эта функция отправляет ok и обрывает соединение с ВК, чтобы он думал, что скрипт закончил выполнение.
function sendOK() {
        set_time_limit(0);
        ini_set('display_errors', 'Off');

        // для Nginx
        if (is_callable('fastcgi_finish_request')) {
            echo 'ok';
            session_write_close();
            fastcgi_finish_request();
            return True;
        }
        // для Apache
        ignore_user_abort(true);

        ob_start();
        header('Content-Encoding: none');
        header('Content-Length: 2');
        header('Connection: close');
        echo 'ok';
        ob_end_flush();
        flush();
        return True;
    }

by https://github.com/digitalstars/simplevk
Ответ написан
@dmalapsh
Все правильно ВК чекает ответ, он должен быть "ок", но по коду видно что даже если ни чего не выполнится, он получит ответ "окок". Вообщем нужно убрать лишний вывод строки, "ок" должно быть выведено единожды. А еще там должно быть маленькими буквами
Ответ написан
Noizefan
@Noizefan
Вообще, с точки зрения трушности архитектуринга твой код должен быть готов к таким трудностям. Иначе зачем есть такой код?
Ответ написан
Ваш ответ на вопрос

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

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