2016-10-13 4 views
0

Я столкнулся с проблемой с помощью Facebook Webhook для фида, в то время как сообщения работают отлично. За одно сообщение я продолжаю получать несколько уведомлений от Facebook. Я уже поднял ошибку с Facebook, и их команда говорит, что мой сервер не отправляет 200 OK статус HTTP. Кроме того, в их док я обнаружил, чтоПолучение нескольких уведомлений в сети для Facebook Feed

«Ваш webhook обратный вызов всегда должен возвращать ответ 200 OK HTTP при вызове Facebook. Несоблюдение этого правила может привести к вашей webhook быть отписался от Посланника платформы.»

Мой код выглядит следующим образом:

<?php 
$challenge = $_REQUEST['hub_challenge']; 
$verify_token = $_REQUEST['hub_verify_token']; 

if ($verify_token === 'password') 
{ 
echo $challenge; 

} 

/*........RECEIVING INPUT FROM fACEBOOK.........*/ 
$input = json_decode(file_get_contents('php://input') , true); 
error_log(print_r($input, true)); 

/*after this i am calling AI and then replying back*/ 

Есть ли способ, чтобы отправить обратно 200 OK статус перед вызовом AI в PHP.

+0

Я попытался создать фиктивный запрос из [link] (http://requestmaker.com), и я получаю 200 в качестве статуса. – Sudhir

+0

PHP отвечает по умолчанию 200, если там нет серьезных ошибок, препятствующих этому (например, ошибка внутреннего сервера, что приведет к 500.) Включите правильное ведение журнала ошибок, а затем проверьте доступ и журнал ошибок, чтобы узнать, как на фактические запросы, на которые ссылается Facebook, отвечает ваш скрипт. – CBroe

+0

У меня есть журнал ошибок на каждом шаге, и все шаги выполняются красиво и в срок. – Sudhir

ответ

0

Для обхода проблемы я сохранил уведомление в БД и для каждого уведомления я проверяю существующие данные (временную метку, senderId, post) в БД для устранения дубликата сообщения.

Если у кого-то есть лучший вариант с точки зрения сложности, пожалуйста, дайте нам знать.