Jak skonfigurować „Pierwsze kroki” przycisk na facebook messenger bot i kiedy wysłać wiadomość powitalną

głosy
8

Zaczynać

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.

Utwórz 27/06/2016 o 07:32
źródło użytkownik
W innych językach...                            


10 odpowiedzi

głosy
2

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

Odpowiedział 28/06/2016 o 14:27
źródło użytkownik

głosy
3

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"
}
Odpowiedział 30/06/2016 o 07:26
źródło użytkownik

głosy
13

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"

Ref: Facebook Messenger rozpoczęła się przycisk

listonosz screentshot

Odpowiedział 01/07/2016 o 20:22
źródło użytkownik

głosy
0

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

Odpowiedział 17/11/2016 o 16:24
źródło użytkownik

głosy
4

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).

Z Dokumentów FB Messenger:

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
Odpowiedział 16/04/2017 o 17:33
źródło użytkownik

głosy
2

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
Odpowiedział 23/04/2017 o 06:24
źródło użytkownik

głosy
3

Obecny format jest https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN

{ "Get_started" { "ładunek": ""}} GET_STARTED_PAYLOAD

Odpowiedział 07/09/2017 o 12:23
źródło użytkownik

głosy
0

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"
        }
      ]
    }
  • API przekazuje następujące w wyniku:
    {
        „Wynik”: „Pomyślnie dodano new_thread za wezwania do działania”
    }
Odpowiedział 03/12/2017 o 07:30
źródło użytkownik

głosy
1

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.

Odpowiedział 12/01/2018 o 20:56
źródło użytkownik

głosy
0

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.

Odpowiedział 01/02/2019 o 17:41
źródło użytkownik

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