Próbowałem wysyłając zapytanie na ten adres URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Ale nie działa.
Próbowałem wysyłając zapytanie na ten adres URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Ale nie działa.
trzeba uruchomić odpowiednią komendę curl go skonfigurować. sprawdź ten link na zewnątrz i spojrzeć na ich przykładzie. https://developers.facebook.com/docs/messenger-platform/implementation#send_api
dzięki za cenne uwagi, po jakimś obejście uznał ten roztwór roboczy, zgodnie z wytycznymi facebook
trzeba wysłać niezależną żądanie POST do tego adresu URL tylko raz
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Używane listonosz wysłać prośbę jak to
tutaj
Jeśli przycisk Get Started został pomyślnie ustawiony, otrzymasz następującą odpowiedź
{
"result": "Successfully added new_thread's CTAs"
}
Nawiązywanie połączenia POST API JSON ciała jak poniżej.
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"
Lepszym rozwiązaniem moim zdaniem jest użycie Framework Microsoft Bot i używać jej / FIRSTRUN wysłać przycisk komunikatora zacząć
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 wygląda jak pokazano poniżej
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')
}
}
To z kolei wywołuje 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 wygląda jak pokazano poniżej // Wywołuje Facebook graph api do zmiany ustawień bot
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 })
}
});
})
}
Zauważ facebookTemplates.getStarted (), że faktycznie ma json dla zacząć który wygląda jak pokazano poniżej
templates.getStarted = function () {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
Całkowicie wtykowy architektura kod do wykonywania pierwszej operacji run na wszystkich platformach chatbota. Działa doskonale na moim bot TUTAJ
Możliwe jest ustawienie go pomyślnie, ale nie widzą, bo masz już istniejącą rozmowę z stronie facebook.
Po pomyślnym ustawieniu „Pierwsze kroki” gwint, można go zobaczyć tylko jeśli usunąć istniejący wątek rozmowy i rozpocząć nowy.
Zacznij przycisk jest widoczny tylko wtedy, gdy są interakcje ze stroną facebook po raz pierwszy, więc jeśli wcześniej messaged stronę, nie będzie w stanie zobaczyć „Pierwsze kroki”, jeśli nie usunąć wątek z klientem Facebook Messenger ( albo przenośny lub stacjonarny).
Istnieją pewne warunki, widząc na ekranie powitalnym oraz przycisk zacząć:
- Są one renderowane tylko za pierwszym razem użytkownik komunikuje się ze stroną o Messenger
- Tylko administratorzy / programiści / testerzy aplikacji można go zobaczyć, gdy aplikacja jest w trybie rozwoju
- Twoja aplikacja musi być zapisany do postbacks na webhook
Jest to biblioteka w KMP że zawija funkcjonalność POST / DELETE czynności tutaj: 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
Obecny format jest https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{ "Get_started" { "ładunek": ""}} GET_STARTED_PAYLOAD
W naszym przypadku, dodaje pracował:
Hit thread_settingsAPI
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>
Przeszły następujące próbka JSON
{
"setting_type": "call_to_actions",
"Thread_state": "new_thread"
"call_to_actions": [
{
"Ładunek": "Start"
}
]
}
{
„Wynik”: „Pomyślnie dodano new_thread za wezwania do działania”
}
Wysłać żądanie POST za pomocą strony dostępu do tokena
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
z następującymi danymi
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Facebok Docs: Pierwsze kroki Przycisk
Nadzieję, że ta nowa metoda rozwiązywania problemu. Nie zapomnij usunąć wysłane wiadomości najpierw używając Facebook Web, aby zobaczyć przycisk w akcji.
Bardzo proste rozwiązanie, po prostu otwarty w terminalu i przejdź do lokalizacji folderu gospodarza (w kopalni /var/www/html/booking/public/facebookbot) i wklej następujący kod:
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"
i naciśnij enter, upewnij się, aby umieścić prawidłowy token dostępu, również można rozpoznać, gdy zaczynamy wciśnięty z ładunkiem, który jest GET_STARTED_PAYLOAD w powyższym przykładzie kodu.