PHP回复Facebook Webhook API

时间:2017-06-13 15:10:29

标签: php wordpress facebook http-headers webhooks

Facebook最近对Leadgen Webhooks进行了更改,你要对每个进入的领先者提出“200 OK”回复,否则他们将继续用这个领先优势为你打电话。问题是,他们没有提到是否有办法做到这一点,我一直试图发送回复,但到目前为止都没有成功。

到目前为止我尝试过:

status_header(200);

http_response_code(200);

header[$_SERVER['SERVER_PROTOCOL'] . ' 200 OK']

header[$_SERVER['SERVER_PROTOCOL'] . ' 200 OK', true, 200);

function handle_200() {
    status_header(200);
    header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');
    error_log('test'); // This never even runs
}
add_action('send_headers', 'handle_200', 1);

以上都没有奏效。我还检查过以确保在我尝试更改状态标头时,通过使用headers_sent()检查并且返回FALSE来发送当前标头。

我还尝试检查是否可以通过以下任何一种方式查看状态标题:

error_log(print_r(getallheaders(), true));
error_log(print_r(headers_list(), true));

但是既没有打印状态标题,但是如果我要做header('foo: bar')之类的事情,那么会在标题列表中看到。

我完全失去了,任何指向正确方向的帮助都会非常感激。

话虽如此,可能有必要提一下,这个脚本是在Wordpress环境的主题功能中运行的。此外,脚本本身(我正在进行这些更改)在ob_start()ob_end_clean()内运行(不确定是否相关)。

编辑:我刚刚发现,当我导致致命错误导致我的脚本过早结束时,Facebook会收到200 OK响应(具有讽刺意味)。这让我觉得问题是因为在ob_startob_end_clean()中运行脚本。这会延迟标题响应吗?

编辑2:这仍然没有得到解决。我有一个临时解决方案,它可以在35%的时间内成功发送响应。我正处于从webhook获取线索,从线索中检索信息然后执行SQL查询以检查之前是否已收到该线索的情况,如果有,exit(200)。就这么简单,如何为已经存在的潜在客户花费时间?它不会!然而,我的服务器(根据Facebook的广告工具)仍有50%的时间超时(没有回复)?有些东西没有加起来。

0 个答案:

没有答案