2016-04-16 7 views
1

У меня есть общий вопрос относительно установки «бота» в платформе Facebook Messenger. Если я правильно понимаю архитектуру, я могу создать приложение в качестве разработчика, добавить функцию Messenger и связать 1 страницу с функцией Messenger. Означает ли это, что мне нужно приложение для каждой страницы? Или я мог бы создать «бот-сервер», обслуживающий несколько/разных страниц от разных пользователей?Настройка платформы Facebook Messenger

ответ

4

Да, у вас может быть один робот, обслуживающий несколько страниц. Вам просто нужно установить < token> для разных страниц в вызове API, here - это настройка для страницы. От documentation:

Графический API требует токенов доступа к странице для управления страницами Facebook. Они уникальны для каждой страницы, администратора и приложения и имеют срок действия.

+0

Означает ли это, что пользователь будет видеть новый разговор для каждой страницы и что этот разговор можно полностью настроить в зависимости от контекста страницы? –

+0

Да, у вас нет отдельного чата «бот». Вы должны «подписаться» на определенную страницу, а затем в каждом сообщении с facebook вы должны установить токен для этой страницы. – fritak

+0

Рекомендуется проверить подпись запроса, чтобы убедиться, что обратный вызов поступает со страницы facebook. Здесь используется приложение Secret, поэтому убедитесь, что вы учитываете это при обслуживании нескольких страниц. –

0

Fritak верный. Вы можете использовать одно приложение для нескольких страниц. Для каждой страницы вам нужно будет подписаться на эту страницу на эту страницу и создать маркер доступа к странице специально для этой страницы. На вашем веб-узле вам нужно будет отличить обратные вызовы для конкретной страницы.

+1

Как отличить этот обратный вызов от разных страниц? Идет ли идентификатор страницы с каждым звонком? – Rusty

0

При получении запроса, необходимо отобразить входящий идентификатор страницы в маркер доступа, как описано в этом ответе: How can I use the same bot on multiple facebook pages using bot framework

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, 
    })