我的 facebook 应用程序无法接收网页 webhook

如何解决我的 facebook 应用程序无法接收网页 webhook

我尝试制作一个机器人来响应客户的消息和评论

Webhook 仅在用户页面聊天时发送,但当用户回复或发布时,我无法收到任何 Webhook。 我有pages_manage_Metadata”权限,并设置了我的代码以接收页面 webhook,如下所示:

app.post("/webhook",(req,res) => {
let body = req.body;
//const page_id=process.env.page_id;

// Checks if this is an event from a page subscription
if (body.object === "page") {
// Iterates over each entry - there may be multiple if batched
body.entry.forEach(function(entry) {
  if (entry.messaging) {
    // Gets the body of the webhook event
    let webhookEvent = entry.messaging[0];
    console.log(webhookEvent);

    // Get the sender PSID
    let senderPsid = webhookEvent.sender.id;
    console.log("Sender PSID: " + senderPsid);

    // Check if the event is a message or postback and
    // pass the event to the appropriate handler function
    if (webhookEvent.message) {
      handleMessage(senderPsid,webhookEvent.message);
    } else if (webhookEvent.postback) {
      handlePostback(senderPsid,webhookEvent.postback);
    }
  } else if (entry.changes) {
    let webhookEvent = entry.changes[0];
    console.log("webhookEvent=",webhookEvent);
    if (webhookEvent.field === "Feed") {
      console.log("Feed");

      let comment_id;
      let comment = webhookEvent.value;
      let comment_type = comment.item;

      if (comment_type == "post") {
        comment_id = comment.post_id;
        console.log("detect post");
      } else if (comment_type == "comment") {
        comment_id = comment.comment_id;
        console.log("detect comment");
      } else if (comment_type == "status") {
        comment_id = comment.post_id;
        console.log("detect status");
      }

      console.log("comment_id: " + comment_id);

      let message = comment.message;
      console.log("message: " + message);

      let user_id = comment.from.id;
      console.log("user_id: " + user_id);
      console.log(
        "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
      );
      send_private_reply(comment_id);
      processComments(comment_id,comment_type,user_id,message);
    }
  }
});

// Returns a '200 OK' response to all requests
res.status(200).send("EVENT_RECEIVED");
} else if (body.object === "user") {
body.entry.forEach(function(entry) {
  console.log(
    "user event---------------------------------------------------"
  );
  console.log("Facebook request body:",body);
  console.log("entry.changes=",entry.changes);
  res.status(200).send("EVENT_RECEIVED");
});
} else {
 // Returns a '404 Not Found' if event is not from a page subscription
 console.log("enent not found$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
 res.sendStatus(404);
 }
});

更多信息:

  1. 点击仪表板中的“测试”按钮时,我可以收到网络钩子,如 https://developers.facebook.com/docs/graph-api/webhooks/getting-started#configure-webhooks-product

  2. 当我的应用程序处于开发模式时,我成功订阅https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/

    中记录的提要字段

那么如何解决这个问题?

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?