我有几个facebook页面,我想在每个页面上运行相同的bot。我正在使用机器人框架,现在一切都适用于一页。如何与多个页面关联?
答案 0 :(得分:8)
当您调用Facebook Send API时,您会通过access_token
参数传递页面访问令牌。您可以通过修改此访问令牌来指定指向邮件的页面。要知道哪个页面启动了邮件,您可以访问邮件条目的id
字段。
app.post('/webhook', (req, res) => {
const data = req.body
// Make sure this is a page subscription
if (data.object === 'page') {
// Iterate over each entry
data.entry.forEach((pageEntry) => {
// get the pageId
const pageId = pageEntry.id
...
然后,您需要维护对象映射页面ID到与每个页面ID关联的访问令牌:
const accessTokens = {
myPageId1: 'myPageAccessToken1',
myPageId2: 'myPageAccessToken2',
}
然后在发送响应时,只需指定相应的页面access_token
const callSendAPI = (pageId, messageData) =>
rp({
uri: 'https://graph.facebook.com/v2.8/me/messages',
qs: { access_token: accessTokens[pageId] },
method: 'POST',
body: messageData,
json: true,
})
答案 1 :(得分:4)
对不起,如果我的回答迟到了
您可以仅通过一个漫游器后端很好地处理所有页面流量
希望这会有所帮助
答案 2 :(得分:2)
您可以将同一个应用订阅到多个页面。订阅Facebook应用程序后,与该应用程序关联的信使将与该页面相关联。
https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/此api用于将Facebook应用程序添加到页面
答案 3 :(得分:0)
每个页面都需要自己的facebook应用程序。创建应用程序后,您可以将它们链接到同一个机器人,但是如果您在代码中验证签名并且可能希望为每个机制使用不同的URL,则它们将使用不同的页面令牌。