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

голоса
8

Начать

пытался посылать запрос на этот адрес

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

Но не получилось.

Задан 27/06/2016 в 07:32
источник пользователем
На других языках...                            


10 ответов

голоса
2

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

Ответил 28/06/2016 в 14:27
источник пользователем

голоса
3

спасибо за ценные замечания, после некоторого обходного нашел это решение работает, в соответствии с руководящими принципами 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"
}
Ответил 30/06/2016 в 07:26
источник пользователем

голоса
13

Сделайте 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"

Ref: Facebook мессенджер получить кнопку начала

Почтальон screentshot

Ответил 01/07/2016 в 20:22
источник пользователем

голоса
0

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

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

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

Ответил 17/11/2016 в 16:24
источник пользователем

голоса
4

Можно установить его успешно, но не видя его, потому что у вас уже есть существующий разговор с страницы facebook.

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

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

Из Docs FB Messenger:

Есть определенные условия, видеть экран приветствия и кнопку Начало работы:

  • Они только оказывается первый раз, когда пользователь взаимодействует со страницей на Посланника
  • Только администраторы / разработчик / тестеры приложения можно увидеть, когда приложение находится в режиме разработки
  • Ваше приложение должно быть подписаны постбэков на вашем webhook
Ответил 16/04/2017 в 17:33
источник пользователем

голоса
2

Существует библиотека в НОМ , который оборачивает функциональность 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
Ответил 23/04/2017 в 06:24
источник пользователем

голоса
3

Тока формат, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN

{ "Get_started": { "полезная нагрузка": "GET_STARTED_PAYLOAD"}}

Ответил 07/09/2017 в 12:23
источник пользователем

голоса
0

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

  • Хит thread_settingsAPI

    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 должен дать следующее в результате:
    {
        «Результат»: «успешно добавлен new_thread в СТА»
    }
Ответил 03/12/2017 в 07:30
источник пользователем

голоса
1

Отправить запрос на запись с помощью маркеров доступа к странице

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

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

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

Facebok Docs: Начало работы Кнопки

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

Ответил 12/01/2018 в 20:56
источник пользователем

голоса
0

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

Ответил 01/02/2019 в 17:41
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more