it-swarm.com.de

wie man die "Erste Schritte" -Schaltfläche in Facebook Messenger Bot einrichtet und wann eine Willkommensnachricht gesendet wird

"Loslegen"

es wurde versucht, eine Anfrage an diese URL zu senden 

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

Hat aber nicht funktioniert.

9
kanth

Führen Sie einen POST -Aufruf an den API-JSON-Body wie folgt aus.

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 wird gestartet

Postman screentshot

14
Vaibhav Bansal

Das aktuelle Format ist https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN

{ "loslegen":{ "Nutzlast": "GET_STARTED_PAYLOAD" } }

4
Neha Creado

Es ist möglich, dass Sie es erfolgreich eingerichtet haben, es aber nicht sehen, weil Sie bereits eine Konversation mit der Facebook-Seite haben.

Nachdem Sie den Thread "Erste Schritte" erfolgreich eingerichtet haben, wird er nur angezeigt, wenn Sie Ihren vorhandenen Konversationsthread löschen und einen neuen starten. 

Die Schaltfläche "Erste Schritte" wird nur angezeigt, wenn Sie zum ersten Mal mit der Facebook-Seite interagieren. Wenn Sie die Seite bereits zuvor benachrichtigt haben, können Sie "Erste Schritte" nur sehen, wenn Sie den Thread von Ihrem Facebook Messenger-Client löschen ( entweder mobil oder Desktop). 

Von den FB Messenger-Dokumenten:

Es gibt bestimmte Bedingungen, um den Begrüßungsbildschirm und die Schaltfläche Erste Schritte anzuzeigen:

  • Sie werden nur gerendert, wenn der Benutzer zum ersten Mal mit der Seite in Messenger interagiert 
  • Nur Admins/Developers/Tester der App können es sehen, wenn sich die App im Entwicklungsmodus befindet
  • Ihre App muss Postbacks auf Ihrem Webhook abonniert haben
4
Jon Church

vielen Dank für die wertvollen Kommentare. Nach einigen Workarounds hat diese Lösung gemäß den Facebook-Richtlinien funktioniert

sie müssen nur einmal eine unabhängige POST Anforderung an diese URL senden 

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

postman verwendet, um eine Anfrage wie diese zu senden hier

Wenn die Schaltfläche "Erste Schritte" erfolgreich festgelegt wurde, erhalten Sie die folgende Antwort

{
  "result": "Successfully added new_thread's CTAs"
}
3
kanth

Senden Sie eine Post-Anfrage mit Ihrem Seitenzugriffstoken

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

mit folgenden Daten

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

Facebok-Dokumente:Schaltfläche "Erste Schritte"

Hoffen Sie, dass diese neue Methode Ihr Problem löst. Vergessen Sie nicht, gesendete Nachrichten zuerst mit Facebook Web zu löschen, um die Schaltfläche in Aktion zu sehen.

2
MithooG

In npm gibt es eine Bibliothek, die die Funktionalität der POST/DELETE-Aktionen hier einschließt: 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
2
Danny Sullivan

sie müssen einen entsprechenden curl-Befehl ausführen, um ihn einzurichten. Schauen Sie sich diesen Link an und schauen Sie sich das Beispiel an. https://developers.facebook.com/docs/messenger-platform/implementation#send_api

2
user2322082

Eine bessere Lösung ist meiner Meinung nach die Verwendung des Microsoft Bot Framework und dessen/firstRun, um den Messenger-Startknopf zu senden

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()
}

Die platforms.firstRun sieht wie folgt aus

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')
    }
}

Dies wiederum ruft platforms.facebook.firstRun auf

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)
    ])
}

Die platforms.facebook.sendThread sieht wie folgt aus: __.// Ruft die API-API von Facebook auf, um die Bot-Einstellungen zu ändern

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 })
                }
            });
    })
}

Beachten Sie das facebookTemplates.getStarted (), das den Json für den Start hat, der wie unten gezeigt aussieht

templates.getStarted = function () {
    return {
        setting_type: "call_to_actions",
        thread_state: "new_thread",
        call_to_actions: [
            {
                payload: payloads.FACEBOOK_GET_STARTED
            }
        ]
    }
}

Vollständig steckbare Code-Architektur für die Durchführung eines ersten Durchlaufs auf allen Chatbot-Plattformen. Funktioniert perfekt auf meinem Bot HIER

0
PirateApp

Sehr einfache Lösung, öffnen Sie einfach das Terminal und gehen Sie zu Ihrem Host-Ordner (in meinem /var/www/html/booking/public/facebookbot), und fügen Sie den folgenden Code ein:

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"

und drücken Sie die Eingabetaste. Stellen Sie sicher, dass Sie Ihr korrektes Zugriffstoken eingeben. Außerdem erkennen Sie möglicherweise, wenn Sie auf die Schaltfläche "Erste Schritte" aus der Payload drücken. Dies ist GET_STARTED_PAYLOAD im obigen Codebeispiel. 

0
Akhmad

In unserem Fall hat folgendes funktioniert:

  • Treffen Sie die thread_settings-API

    https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>

  • Bestanden das folgende Beispiel-JSON

 {
 "setting_type": "call_to_actions", 
 "thread_state": "new_thread", 
 "call_to_actions": [
 {
 "Nutzlast": "Start" 
 } 
 ] 
 } 
  • Die API muss als Ergebnis Folgendes angeben:
 {
 "result": "CTAs von new_thread wurden erfolgreich hinzugefügt" 
 } 
0
student