来自facebook messenger机器人的空消息

时间:2017-08-13 16:58:36

标签: php facebook facebook-messenger facebook-messenger-bot

我按照指南从here

构建了一个facebook messenger bot

但在我的软件中,我总是收到一个空洞的回复。

这是我的机器人代码:



    define('PAGE_TOKEN',"xxx");
    define('VERIFY_TOKEN',"xxx");

    if(isset($_GET['hub_mode']) && isset($_GET['hub_challenge']) && isset($_GET['hub_verify_token'])) {
        if($_GET['hub_verify_token']==VERIFY_TOKEN && $_GET['hub_mode']=='subscribe') {
            echo $_GET['hub_challenge'];
        }
    }

    $input = json_decode(file_get_contents('php://input'), true);
    // Get the Senders Graph ID
    $sender = $input['entry'][0]['messaging'][0]['sender']['id'];
    // Get the returned message
    $message = $input['entry'][0]['messaging'][0]['message']['text'];

    error_log($input);
    error_log($sender);
    error_log($message);

验证阶段很好,但是当我在我的error_log文件中向我的机器人发送一个消息时,我发现只有空值:



    [Sun Aug 13 17:35:49.617919 2017] [:error] [pid 22501] [client 173.252.124.11:18834]
    [Sun Aug 13 17:35:49.617951 2017] [:error] [pid 22501] [client 173.252.124.11:18834]
    [Sun Aug 13 17:35:49.617972 2017] [:error] [pid 22501] [client 173.252.124.11:18834]

这里还有我的access_log:



    173.252.124.30 - - [13/Aug/2017:17:35:48 +0200] "POST /webhook HTTP/1.1" 301 3621 "-" "-"
    173.252.124.11 - - [13/Aug/2017:17:35:49 +0200] "GET /webhook/ HTTP/1.1" 200 328 "-" "-"

为什么 $ input 变量一直是空的?

1 个答案:

答案 0 :(得分:3)

173.252.124.30 - - [13/Aug/2017:17:35:48 +0200] "POST /webhook HTTP/1.1" 301 3621 "-" "-"
173.252.124.11 - - [13/Aug/2017:17:35:49 +0200] "GET /webhook/ HTTP/1.1" 200 328 "-" "-"

您的服务器使用301重定向应答POST请求,以便客户端(Facebook)必须接下来发出GET请求,因此您不会再看到POST数据。

看到第一个网址是/webhook,并被重定向到/webhook/,这可能只是一个自动的斜杠重定向,一旦指定了带有斜杠的正确网址,就应该修复您的应用设置即将开始。