I have several facebook pages and I would like to run the same bot on each page. I am using the bot framework and everything works perfectly for one page now. How do I assoc
Each page needs its own facebook application. Once you have created your applications you can link them to the same bot but they will use a different page token in case that you are validating the signature in your code and probably you want to use a different url for each of them.
The way I would handle this is to deploy the same Bot backend on a different server. By this, I will have the same backend source but different webhook URL. This makes each Bot, though similar functionality, can be isolated and maintained separately. This is extremely an important design consideration when building a Bot because it can potentially have a lot of conversations.
To answer your question, yes it's possible by just passing the page token and validation token for every request and change it when a user converse with the other page - but I don't recommend doing it this way.
When you call the Facebook Send API, you pass a page access token through the access_token
parameter. You can specify which page to direct your message by modifying this access token. To know which page initiated the message, you can access the id
field of the entry of the message post.
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
...
You would then need to maintain an object mapping page ids to the access token associated with each page id:
const accessTokens = {
myPageId1: 'myPageAccessToken1',
myPageId2: 'myPageAccessToken2',
}
Then when sending the response, just specify the corresponding page 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
Hope this helps
You can subscribe same app to multiple pages. Once the facebook app is subscribed the messenger associated with that app would be associated with the page.
https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/ this api is used to add facebook application to a page