it-swarm.com.ru

как настроить кнопку "Начать" в боте Facebook Messenger и когда отправить приветственное сообщение

"Начать"

попытался отправить запрос на этот URL 

https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN

Но не сработало.

9
kanth

Сделайте POST вызов тела API JSON, как показано ниже.

curl -X POST -H "Content-Type: application/json" -d '{
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
 {
  "payload":"USER_DEFINED_PAYLOAD"
 }
]
}' "https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"

Ссылка: Кнопка начала мессенджера Facebook

Почтальон скриншот

14
Vaibhav Bansal

Текущий формат: https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN

{ "начать":{ "Полезная нагрузка": "GET_STARTED_PAYLOAD" } }

4
Neha Creado

Возможно, вы установили его успешно, но не видите его, потому что у вас уже есть разговор со страницей Facebook.

После успешной настройки цепочки «Начало работы» вы увидите ее, только если удалите существующую цепочку бесед и начнете новую. 

Кнопка «Начать» отображается только при первом взаимодействии со страницей Facebook, поэтому, если вы ранее отправили сообщение на эту страницу, вы не сможете увидеть «Начало работы», если не удалите тему из своего клиента Facebook Messenger ( или мобильный или настольный компьютер). 

Из Документы FB Messenger:

Существуют определенные условия для просмотра экрана приветствия и кнопки «Начало работы»:

  • Они отображаются только при первом взаимодействии пользователя со страницей в Messenger. 
  • Только администраторы/разработчики/тестеры приложения могут видеть его, когда приложение находится в режиме разработки
  • Ваше приложение должно быть подписано на постбэки на вашем веб-крюке
4
Jon Church

спасибо за ценные комментарии, после некоторого обходного пути это решение работает согласно рекомендациям Facebook

нужно отправлять независимый запрос POST на этот URL только ОДИН РАЗ 

https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN

использовал почтальон, чтобы отправить запрос, как это здесь

Если кнопка «Начало работы» была успешно установлена, вы получите следующий ответ

{
  "result": "Successfully added new_thread's CTAs"
}
3
kanth

Отправьте запрос на публикацию, используя свой токен доступа к странице

https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN

со следующими данными

{ 
  "get_started":{
     "payload":"<GET_STARTED_PAYLOAD>"
   }
}

Документы Facebok:Кнопка «Начать»

Надеюсь, что этот новый метод решит вашу проблему. Не забудьте сначала удалить отправленные сообщения, используя Facebook Web, чтобы увидеть кнопку в действии.

2
MithooG

В npm есть библиотека, которая оборачивает функциональность действий POST/DELETE здесь: https://www.npmjs.com/package/fb-get-started-button

$ npm install -g fb-get-started-button

$ fb-get-started-button add <YOUR PAGE ACCESS TOKEN>
Adding "Get Started" button with the payload "GET_STARTED"
Successfully added new_thread's CTAs

$ fb-get-started-button remove <YOUR PAGE ACCESS TOKEN>
Removing "Get Started" button
Successfully deleted all new_thread's CTAs
2
Danny Sullivan

вы должны выполнить соответствующую команду curl, чтобы настроить ее. проверьте эту ссылку и посмотрите на их пример. https://developers.facebook.com/docs/messenger-platform/implementation#send_api

2
user2322082

На мой взгляд, лучшим решением является использование Microsoft Bot Framework и использование его/firstRun для отправки кнопки начала работы мессенджера.

function firstRun(session) {
  console.log('This user is running our bot the first time')
  createUser(session)
  platforms.firstRun(session.message.user.id, session.message.address.channelId)
    .then((values) => {
      for (let value of values) {
        if (value.data.firstName && value.data.lastName) {
          session.userData.user.profile = value.data
        }
      }
    })
    .catch((errors => {
      console.log(errors);
    }))
  reply(session)
  session.endDialog()
}

Platforms.firstRun выглядит так, как показано ниже

platforms.firstRun = function (userId, channel) {
    switch (channel) {
        case platforms.channels.emulator:
            return Promise.reject('none')
        case platforms.channels.facebook:
            return platforms.facebook.firstRun(userId)
        case platforms.channels.skype:
            return Promise.reject('none')
        default:
            return Promise.reject('none')
    }
}

Это, в свою очередь, вызывает platform.facebook.firstRun

platforms.facebook.firstRun = function (userId) {
    return Promise.all([
        platforms.facebook.sendThread(facebookTemplates.greet(), 'Greeting'),
        platforms.facebook.sendThread(facebookTemplates.getStarted(), 'Get Started'),
        platforms.facebook.sendThread(facebookTemplates.getPersistentMenu(), 'Persistent Menu'),
        platforms.facebook.sendThread(facebookTemplates.getDomainWhitelisting(), 'Domain Whitelisting'),
        platforms.facebook.getProfile(userId)
    ])
}

Platforms.facebook.sendThread выглядит так, как показано ниже// Вызывает API графика Facebook для изменения настроек бота.

platforms.facebook.sendThread = function (template, cmd) {

    return new Promise((resolve, reject) => {
        // Start the request
        request({
            url: platforms.facebook.GRAPH_BASE_URI + '/me/thread_settings?access_token=' + endpoints.FACEBOOK_PAGE_ACCESS_TOKEN,
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            form: template
        },
            function (error, response, body) {
                if (!error && response.statusCode == 200) {
                    // Print out the response body
                    resolve({ status: response.statusCode, data: body })
                } else {
                    // TODO: Handle errors
                    reject({ status: response.statusCode, data: error })
                }
            });
    })
}

Обратите внимание на facebookTemplates.getStarted (), который на самом деле имеет JSON для начала, который выглядит так, как показано ниже

templates.getStarted = function () {
    return {
        setting_type: "call_to_actions",
        thread_state: "new_thread",
        call_to_actions: [
            {
                payload: payloads.FACEBOOK_GET_STARTED
            }
        ]
    }
}

Полностью подключаемая архитектура кода для выполнения операции первого запуска на всех платформах чат-ботов. Отлично работает на моем боте ЗДЕСЬ

0
PirateApp

Очень простое решение, просто откройте в терминале и перейдите в папку вашего хоста (в моем /var/www/html/booking/public/facebookbot) и вставьте следующий код:

curl -X POST -H "Content-type: application/json" -d '{ 
    "setting-type":"call_to_actions",
    "thread_state":"new_thread",
  "get_started":{
     "payload":"GET_STARTED_PAYLOAD"
   }
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR_ACCESS_TOKEN"

и нажмите клавишу ввода, убедитесь, что вы указали правильный токен доступа, также вы можете узнать, когда нажата кнопка начала работы из полезной нагрузки, которая в приведенном выше примере кода представляет собой GET_STARTED_PAYLOAD. 

0
Akhmad

В нашем случае сработало следующее:

  • Хит API thread_settings

    https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>

  • Передал следующий образец JSON

 {
 "setting_type": "call_to_actions", 
 "thread_state": "new_thread", 
 "call_to_actions": [
 {
 «Полезная нагрузка»: «Старт» 
 } 
 ] 
 } 
  • В результате API должен предоставить следующее:
 {
 "result": "Успешно добавлены CTA new_thread" 
 } 
0
student