Facebook Messenger 平台设置
Facebook Messenger Platform Setup
我有一个关于在 Facebook Messenger 平台中设置 "bot" 的一般性问题。
如果我正确理解架构,我可以创建一个应用程序作为开发人员添加 Messenger 功能并将 1 Page 与 Messenger 功能相关联。
这是否意味着每个页面都需要一个应用程序?
或者我可以创建一个 "bot backend" 为来自不同用户的多个/不同页面提供服务吗?
是的,您可以让一个机器人服务多个页面。您只需在 API 调用中为不同页面设置 <token>,here is setup for a page. From documentation:
Graph API requires Page access tokens to manage Facebook Pages. They are unique to each Page, admin and app and have an expiration time.
Fritak 是正确的。您可以将一个应用程序用于多个页面。对于每个页面,您必须将应用程序订阅到该页面,并专门为该页面生成一个页面访问令牌。在您的 webhook 中,您必须区分特定页面的回调。
当您收到请求时,您需要将传入页面 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
...
const accessTokens = {
myPageId1: 'myPageAccessToken1',
myPageId2: 'myPageAccessToken2',
}
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,
})
我有一个关于在 Facebook Messenger 平台中设置 "bot" 的一般性问题。 如果我正确理解架构,我可以创建一个应用程序作为开发人员添加 Messenger 功能并将 1 Page 与 Messenger 功能相关联。 这是否意味着每个页面都需要一个应用程序? 或者我可以创建一个 "bot backend" 为来自不同用户的多个/不同页面提供服务吗?
是的,您可以让一个机器人服务多个页面。您只需在 API 调用中为不同页面设置 <token>,here is setup for a page. From documentation:
Graph API requires Page access tokens to manage Facebook Pages. They are unique to each Page, admin and app and have an expiration time.
Fritak 是正确的。您可以将一个应用程序用于多个页面。对于每个页面,您必须将应用程序订阅到该页面,并专门为该页面生成一个页面访问令牌。在您的 webhook 中,您必须区分特定页面的回调。
当您收到请求时,您需要将传入页面 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
...
const accessTokens = {
myPageId1: 'myPageAccessToken1',
myPageId2: 'myPageAccessToken2',
}
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,
})