как настроить кнопку «Начать» в боте мессенджера facebook и когда отправлять приветственное сообщение

"Начало работы"

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

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

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


person kanth    schedule 27.06.2016    source источник
comment
Предоставьте больше информации о том, что вы сделали. И сначала поищите в Интернете учебные пособия. Один из них называется «Как начать работу с ботами Facebook Messenger».   -  person Galya    schedule 28.06.2016
comment
Я следовал принятому ответу, но до сих пор не могу иметь кнопку «Начать» на экране приветствия. Кто-нибудь может помочь?   -  person Kong Hantrakool    schedule 29.08.2016


Ответы (10)


Сделайте вызов 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

Скриншот почтальона

person Vaibhav Bansal    schedule 01.07.2016
comment
Это работает. Вы изменили токен доступа на свой. - person barryjones; 25.09.2016
comment
Я не могу просматривать в приложении Facebook Messenger для Android. - person Suhas Bachewar; 06.12.2016

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

{ 
  "get_started":{
    "payload":"GET_STARTED_PAYLOAD"
  }
}
person Neha Creado    schedule 07.09.2017

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

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

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

Из документов FB Messenger:

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

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

спасибо за ценные комментарии, после некоторого обходного пути это решение работает в соответствии с рекомендациями 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"
}
person kanth    schedule 30.06.2016
comment
Это возвращает (#100) В параметре \call_to_actions[0]\ обнаружены недопустимые ключи \message\ - person Kev; 15.07.2016
comment
это потому, что это сообщение не является свойством call_to_actions. Удалить сообщение о свойствах - person Carmela; 10.08.2016

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

person user2322082    schedule 28.06.2016

В 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
person Danny Sullivan    schedule 23.04.2017

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

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

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

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

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

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

person MithooG    schedule 12.01.2018

На мой взгляд, лучшим решением является использование 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()
}

Платформы.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')
    }
}

Это, в свою очередь, вызывает платформы.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)
    ])
}

Платформы.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
            }
        ]
    }
}

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

person PirateApp    schedule 17.11.2016

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

  • Нажмите на thread_settings API

    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": [
        {
          "payload": "Start"
        }
      ]
    }
  • В результате API выдаст следующее:
    {
        "result": "Successfully added new_thread's CTAs"
    }
person Zameer Ansari    schedule 03.12.2017

Очень простое решение, просто откройте в терминале и перейдите в папку вашего хоста (у меня /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 в приведенном выше примере кода.

person Akhmad    schedule 01.02.2019