Как я могу использовать одного и того же бота на нескольких страницах Facebook, используя бот-фреймворк

У меня есть несколько страниц в Facebook, и я хотел бы запустить одного и того же бота на каждой странице. Я использую бот-фреймворк, и теперь все отлично работает на одной странице. Как связать несколько страниц?


person PirateApp    schedule 16.01.2017    source источник


Ответы (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,
     })
person Danny Sullivan    schedule 14.04.2017
comment
@UriAbramson Да, дайте мне знать, если у вас есть вопросы по его реализации. - person Danny Sullivan; 19.09.2017
comment
Это решение не будет работать с Bot Framework. - person Alexander; 16.07.2018
comment
Что, если бы вы делали это для страниц, которые не принадлежали вам в качестве промежуточного программного обеспечения? Есть ли способ сделать это, не заходя и не получая этот pageAccessToken вручную? - person syntakks; 09.03.2019
comment
@syntakks Я не верю, что будет способ отправлять сообщения от имени страниц, которые вам не принадлежат. Вам понадобится токен доступа. - person Danny Sullivan; 09.03.2019

Извините, если мой ответ запоздал

Вы можете очень хорошо обрабатывать весь трафик своей страницы с помощью всего одного бэкэнда бота.

  1. Создайте приложение fb и выберите продукт в качестве мессенджера
  2. Добавьте конфигурацию веб-книги, указывающую на вашего бота
  3. Выберите все страницы, которые вы хотите связать, одну за другой и держите токен доступа к странице под рукой.
  4. Найдите идентификатор страницы на своей странице в Facebook и держите его под рукой.
  5. Либо в константе, либо в дБ поддерживать токен доступа к странице на странице, которую я бы
  6. Когда вы получаете обратный вызов на веб-хуке, вы получаете запись страницы и идентификатор == идентификатор страницы
  7. На основе страницы у меня будет ваша бизнес-логика
  8. Вызовите send api, используя токен доступа к странице, который вы сохранили в соответствии с идентификатором страницы.

Надеюсь это поможет

person Community    schedule 15.12.2018

Вы можете подписаться на одно и то же приложение на несколько страниц. После подписки на приложение facebook мессенджер, связанный с этим приложением, будет связан со страницей.

https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/ этот API используется для добавления приложения facebook на страницу

person vishva    schedule 25.10.2017

Для каждой страницы нужно свое приложение facebook. После того, как вы создали свои приложения, вы можете связать их с одним и тем же ботом, но они будут использовать другой токен страницы в случае, если вы проверяете подпись в своем коде и, возможно, хотите использовать разные URL-адреса для каждого из них.

person Andrés Andrade    schedule 16.01.2017
comment
у меня есть одобренное приложение facebook, я хочу использовать этого бота для страницы, которой я не владею, у меня есть идентификатор этой страницы и номер токена, но я не могу использовать своего бота. как это сделать? - person talhatahir; 16.06.2017
comment
это неправильно, вы МОЖЕТЕ использовать одно приложение на любом количестве страниц. вам не нужно отдельное приложение для каждой страницы. - person luschn; 19.02.2018
comment
@luschn вы можете опубликовать одно и то же приложение FB более чем на одной странице FB. Но если я что-то упустил: проблема в том, что коннектору FB bot framework нужны настройки для страницы FB, а также для приложения. Поэтому нет возможности связать его с несколькими страницами. - person Ed Y; 14.03.2018
comment
конечно, вы можете установить одного бота на несколько страниц. единственное, что вы не можете сделать, это настроить один бот на несколько URL-адресов обратного вызова, вот и все. - person luschn; 14.03.2018

Я бы справился с этим, развернув тот же бэкенд бота на другом сервере. Таким образом, у меня будет тот же бэкэнд-источник, но другой URL-адрес веб-перехватчика. Благодаря этому каждый бот, несмотря на схожие функции, может быть изолирован и поддерживаться отдельно. Это чрезвычайно важное соображение при разработке бота, потому что потенциально он может вести много разговоров.

Чтобы ответить на ваш вопрос, да, это возможно, просто передав токен страницы и токен проверки для каждого запроса и изменив его, когда пользователь общается с другой страницей, но я не рекомендую делать это таким образом.

person Alvin Reyes    schedule 11.08.2017