2

我正在尝试用 PHP 构建一个测试信使机器人。我的网络挂钩设置完美,甚至页面订阅也正确完成。但是,我的机器人不响应 Messenger 中的任何文本。我曾尝试更改应用程序 ID、页面 ID,以确保其中是否存在任何问题。我还尝试了各种方法,包括此处概述的基本 curl: Facebook 聊天机器人(PHP webhook)发送多个回复

并尝试了 2 个不同的 php 库: https://github.com/Fritak/messenger-platform https://github.com/pimax/fb-messenger-php

我没有遇到 PHP 错误,挑战在 Facebook 结束时仍然成功。我的 SSL 证书很好,但我无法让机器人响应。

对此的任何帮助将不胜感激。

4

5 回答 5

1

检查 CURL 是否安装正确。试试这个简单的要点,https: //gist.github.com/visitdigital/58c71acb123870d1ac2ec714d7536587

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

// Set this Verify Token Value on your Facebook App 
if ($verify_token === 'YOURVERIFYTOKEN') {
  echo $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'];

//API Url and Access Token, generate this token value on your Facebook App Page

$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=ACCESSTOKEN';
//Initiate cURL.
$ch = curl_init($url);
//The JSON data.
$jsonData = '{
    "recipient":{
        "id":"' . $sender . '"
    }, 
    "message":{
        "text":"The message you want to return"
    }
}';

//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);

//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);

//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

//Execute the request but first check if the message is not empty.
if(!empty($input['entry'][0]['messaging'][0]['message'])){
  $result = curl_exec($ch);
}
于 2016-04-25T13:54:30.110 回答
0

当您接收消息时,您需要自己发送响应(请参阅文档)。

我不知道你如何为 pimax API 做到这一点,抱歉,但对于我的 API,你可以这样做:

// Messenger is calling your URL, someone is sending a message...
$messages = $bot->getMessagesReceived();

// Now you need an ID
$userToSendMessage = $messages[0]->messaging[0]->sender->id;

// Send answer
$bot->sendMessage($userToSendMessage, 'Hi!');
于 2016-04-15T22:20:02.777 回答
0

您可以检查以下内容。

  1. 您是该页面的管理员,并且您仅从管理员帐户发送消息。
  2. 您是否收到您在脚本上发送的消息,将这些消息记录在某个文件中以进行检查?
  3. 在您的页面帐户上,fb 是否会给您一些警告,例如您的页面未收到消息。如果没有,则 msg 已成功发送给您问题在于您的回复。
  4. 确保您在创建 webhook 时创建的令牌放置正确。
  5. 您是否复制了生成的令牌。

另外请发送您的代码。

于 2016-06-18T19:24:45.743 回答
0

我遇到了同样的问题,答案是我的网络服务器正在重定向请求(在 url 的末尾添加了一个斜杠)。

于 2016-09-11T11:14:21.567 回答
0

1-验证 cURL 是否正确安装在您的计算机中
2-尝试在终端中使用以下代码手动发送它,确保输入您的访问令牌和收件人的 ID。我和你有同样的问题。虽然我的电脑(windows)上安装了cURL,但它不会发送请求。当我换成linux时它工作得很好。
试试看。

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient": {
    "id": "USER_ID"
  },
  "message": {
    "text": "hello, world!"
  }
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
于 2017-02-18T16:30:25.463 回答