пытался отправить запрос на этот URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Но не сработало.
пытался отправить запрос на этот URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Но не сработало.
Сделайте вызов 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
Текущий формат: https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{
"get_started":{
"payload":"GET_STARTED_PAYLOAD"
}
}
Возможно, вы успешно установили его, но не видите, потому что у вас уже есть беседа со страницей facebook.
После успешной настройки ветки «Начало работы» вы увидите ее только в том случае, если удалите существующую ветку беседы и запустите новую.
Кнопка «Начать» отображается только тогда, когда вы взаимодействуете со страницей Facebook в первый раз, поэтому, если вы ранее отправляли сообщение на страницу, вы не сможете увидеть «Начать», пока не удалите ветку из своего клиента Facebook Messenger ( либо мобильный, либо настольный).
Существуют определенные условия для отображения экрана приветствия и кнопки «Начать»:
- Они отображаются только при первом взаимодействии пользователя со Страницей в Messenger.
- Только администраторы/разработчики/тестеры приложения могут видеть его, когда приложение находится в режиме разработки.
- Ваше приложение должно быть подписано на постбэки на вашем вебхуке
спасибо за ценные комментарии, после некоторого обходного пути это решение работает в соответствии с рекомендациями 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"
}
вам нужно запустить соответствующую команду curl, чтобы настроить ее. проверьте эту ссылку и посмотрите на их пример. https://developers.facebook.com/docs/messenger-platform/implementation#send_api
В 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
Отправьте запрос на публикацию, используя токен доступа к странице.
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
со следующими данными
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Документы Facebook: Кнопка «Начать»
Надеюсь, что этот новый метод решит вашу проблему. Не забудьте сначала удалить отправленные сообщения с помощью Facebook Web, чтобы увидеть кнопку в действии.
На мой взгляд, лучшим решением является использование 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
}
]
}
}
Полностью подключаемая архитектура кода для выполнения операции первого запуска на всех платформах чат-ботов. Отлично работает на моем боте ЗДЕСЬ
В нашем случае сработало следующее:
Нажмите на 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" } ] }
{ "result": "Successfully added new_thread's CTAs" }
Очень простое решение, просто откройте в терминале и перейдите в папку вашего хоста (у меня /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 в приведенном выше примере кода.