我有几个 facebook 页面,我想在每个页面上运行相同的机器人。我正在使用机器人框架,现在一切都可以完美地在一页上运行。如何关联多个页面?
5 回答
当您调用 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,
})
Sorry if my answer is late
You can very well handle all your page traffic through just one bot backend
- Create an fb app and select product as messenger
- Add webook config pointing to your bot
- Select all the pages you want to associate one by one And keep the page access token handy.
- Go and search page id in your fb page and keep it handy
- Either in constant or dB maintain page access token against the page I’d
- When you get a callback on webhook you get a page entry and Id== page id
- Based on page I’d have your business logic
- Call send api using page access token which you have stored againtst the page id
Hope this helps
您可以将同一应用订阅到多个页面。订阅 facebook 应用程序后,与该应用程序关联的信使将与页面关联。
https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/此api用于将facebook应用程序添加到页面
每个页面都需要自己的 facebook 应用程序。创建应用程序后,您可以将它们链接到同一个机器人,但它们将使用不同的页面令牌,以防您验证代码中的签名并且您可能希望对它们中的每一个使用不同的 url。
我处理这个问题的方法是在不同的服务器上部署相同的 Bot 后端。这样,我将拥有相同的后端源但不同的 webhook URL。这使得每个 Bot 虽然功能相似,但可以单独隔离和维护。在构建 Bot 时,这是一个非常重要的设计考虑因素,因为它可能会进行大量对话。
要回答您的问题,是的,可以通过为每个请求传递页面令牌和验证令牌并在用户与其他页面交谈时更改它 - 但我不建议这样做。