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