У меня есть несколько страниц в Facebook, и я хотел бы запустить одного и того же бота на каждой странице. Я использую бот-фреймворк, и теперь все отлично работает на одной странице. Как связать несколько страниц?
Как я могу использовать одного и того же бота на нескольких страницах 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
...
Затем вам нужно будет поддерживать идентификаторы страниц сопоставления объектов с токеном доступа, связанным с каждым идентификатором страницы:
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,
})
Извините, если мой ответ запоздал
Вы можете очень хорошо обрабатывать весь трафик своей страницы с помощью всего одного бэкэнда бота.
- Создайте приложение fb и выберите продукт в качестве мессенджера
- Добавьте конфигурацию веб-книги, указывающую на вашего бота
- Выберите все страницы, которые вы хотите связать, одну за другой и держите токен доступа к странице под рукой.
- Найдите идентификатор страницы на своей странице в Facebook и держите его под рукой.
- Либо в константе, либо в дБ поддерживать токен доступа к странице на странице, которую я бы
- Когда вы получаете обратный вызов на веб-хуке, вы получаете запись страницы и идентификатор == идентификатор страницы
- На основе страницы у меня будет ваша бизнес-логика
- Вызовите send api, используя токен доступа к странице, который вы сохранили в соответствии с идентификатором страницы.
Надеюсь это поможет
Вы можете подписаться на одно и то же приложение на несколько страниц. После подписки на приложение facebook мессенджер, связанный с этим приложением, будет связан со страницей.
https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/ этот API используется для добавления приложения facebook на страницу
Для каждой страницы нужно свое приложение facebook. После того, как вы создали свои приложения, вы можете связать их с одним и тем же ботом, но они будут использовать другой токен страницы в случае, если вы проверяете подпись в своем коде и, возможно, хотите использовать разные URL-адреса для каждого из них.
Я бы справился с этим, развернув тот же бэкенд бота на другом сервере. Таким образом, у меня будет тот же бэкэнд-источник, но другой URL-адрес веб-перехватчика. Благодаря этому каждый бот, несмотря на схожие функции, может быть изолирован и поддерживаться отдельно. Это чрезвычайно важное соображение при разработке бота, потому что потенциально он может вести много разговоров.
Чтобы ответить на ваш вопрос, да, это возможно, просто передав токен страницы и токен проверки для каждого запроса и изменив его, когда пользователь общается с другой страницей, но я не рекомендую делать это таким образом.