Я пытаюсь настроить чат-бота fb messenger, но не могу проверить URL обратного вызова webhook. Каждый раз, когда я пытаюсь проверить это, я получаю это сообщение об ошибке — URL не может быть проверен. Ответ не соответствует запросу, ожидаемое значение = ‘1596214014’, получено = »
Вот скриншот:
Вот php, который я использую —
<?php
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token === 'token_my_token') {
echo $challenge;
}
Я также пытался
echo $_GET['hub_challenge'];
и просто
echo file_get_contents('php://input');
Все это приводит к тому же сообщению об ошибке, что и выше. На самом деле, насколько я могу судить, Facebook не отправляет запрос GET на мой сервер или не содержит никаких данных. Может кто-нибудь сказать, если я делаю что-то не так или есть настройки, которые мне нужно изменить, чтобы Facebook правильно отправлял данные?
Изменить — при проверке журналов доступа это то, что я нахожу, похоже, что Facebook не отправляет никаких данных в запросе на получение.
2a03:2880:1010:dffb:face:b00c:0:8000 - - [19/Apr/2016:20:50:06 +0000] "GET /wp-content/plugins/applications/fbmessenger.php HTTP/1.0" 200 - "-" "facebookplatform/1.0 (+http://developers.facebook.com)
Спасибо
просто попробуйте мой код, и он сработает.
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token === 'Your's app token') {
echo $challenge;
}
//Token of app
$row = "Token";$input = json_decode(file_get_contents('php://input'), true);
//Receive user
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
//User's message
$message = $input['entry'][0]['messaging'][0]['message']['text'];//Where the bot will send message
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$row;$ch = curl_init($url);
//Answer to the message adds 1
if($message)
{
$jsonData = '{
"recipient":{
"id":"'.$sender.'"},
"message":{
"text":"'.$message. ' 1' .'"}
}';
};$json_enc = $jsonData;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_enc);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);
}
Не могли бы вы попробовать мой API? https://github.com/Fritak/messenger-platform
Если вы установите его как в примере, он должен работать:
// This is just an example, this method of getting request is not safe!
$stream = file_get_contents("php://input");
$request = empty($stream)? $_REQUEST : $stream;
$bot = new \fritak\MessengerPlatform(
['accessToken' => 'token_for_app',
'webhookToken' => 'my_secret_token',
'facebookApiUrl' => 'https://graph.facebook.com/v2.6/me/' //2.6 is minimum
], $request);
if($bot->checkSubscribe())
{
print $bot->request->getChallenge();
exit;
}
Если нет, проблема где-то между Facebook и скриптом, а не в самом PHP. Перейти проверить настройки Apache и т. Д.
Ну, проблема может быть на стороне Facebook, у них были некоторые проблемы за последние несколько дней …
Есть только этот код в вашем php-файле: (fbmessenger.php)
<?php
// header('HTTP/1.1 200 OK');
/* GET ALL VARIABLES GET & POST */
foreach ($_REQUEST AS $key => $value){
$message .= "$key => $value ($_SERVER[REQUEST_METHOD])\n";
}
$input = file_get_contents("php://input");
$array = print_r(json_decode($input, true), true);
file_put_contents('fbmessenger.txt', $message.$array."\nREQUEST_METHOD: $_SERVER[REQUEST_METHOD]\n----- Request Date: ".date("d.m.Y H:i:s")." IP: $_SERVER[REMOTE_ADDR] -----\n\n", FILE_APPEND);
echo $_REQUEST['hub_challenge'];
У вас будут запросы, сохраненные в файле с именем «fbmessenger.txt» в том же каталоге.
Обратите внимание, что по какой-то странной причине вам может потребоваться несколько раз
получить одобрение & спасен! (Я должен был нажать «сохранить» 8-9 раз, прежде чем FB
одобренная ссылка)
Убедитесь, что вы используете соединение https (SSL), и после того, как ваше соединение установлено, проверьте ваш токен с помощью «hub_verify_token», чтобы убедиться, что запрос поступает от fb.