CallbackAPI Incorrect response text
Бот при запросе выдает ошибку, и отвечает на сообщение несколько раз.
Вот код бота:
<?php
if (!isset($_REQUEST)) {
return;
}
$confirmation_token = '******';
$token = '************************';
$data = json_decode(file_get_contents('php://input'));
switch ($data->type) :
case 'confirmation':
echo $confirmation_token;
break;
case 'message_new':
$msgtext = $data->object->message->text;
$user_id = $data->object->message->from_id;
if ($msgtext == "Начать"){
$request_params = array(
'message' => "Сообщение",
'user_id' => $user_id,
'access_token' => $token,
'v' => '5.103',
'random_id' => rand(20,2000000000)
);
$get_params = http_build_query($request_params);
file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
}
echo('ok');
break;
endswitch;
?>
Ошибка:
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Thu, 12 Mar 2020 17:52:45 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
Strict-Transport-Security: max-age=31536000;
Что не так в моем коде?
Ответы (1 шт):
Автор решения: Слава Носков
→ Ссылка
header('HTTP/1.1 200 OK');
echo('ok');
В начале кода еще поставь ob_start();
<?php
error_reporting(E_ALL);
ob_start();
function messagesSend($msg)
{
global $from_id, $config;
$methods = array(
'message' => $msg,
'user_id' => $from_id,
'access_token' => $config['token'],
'v' => 5.103
);
$methods = http_build_query($methods);
file_put_contents('https://api.vk.com/method/messages.send?' . $methods);
}
$config = array(
'token' => null,
'confirmation' => null,
'secret' => null
);
$vkAnswer = file_get_contents('php://input');
$vkAnswer = json_decode($vkAnswer);
switch($vkAnswer->type)
{
case 'confirmation':
exit($config['confirmation']);
break;
case 'message_new':
$from_id = $vkAnswer->object->message->from_id;
$text = $vkAnswer->object->message->text;
header('HTTP/1.1 200 OK');
echo('ok');
$messages = array(
'сообщение' => array(
'message' => 'ответ'
),
'nullmsg' => array(
'message' => 'не известное сообщение'
)
);
if(isset($messages[$text]))
{
messagesSend($messages[$text]['message']);
}
else
{
messagesSend($messages['nullmsg']['message']);
}
break;
default:
header('HTTP/1.1 200 OK');
echo('ok');
break;
}
?>