Задать вопрос
@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';
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой 8 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Вообще, с точки зрения трушности архитектуринга твой код должен быть готов к таким трудностям. Иначе зачем есть такой код?
Ответ написан
Ваш ответ на вопрос

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

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