versucht, Senden an diese URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Aber hat nicht funktioniert.
versucht, Senden an diese URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Aber hat nicht funktioniert.
Sie haben einen entsprechenden curl Befehl ausführen um es einzurichten. überprüfen Sie diesen Link und schauen sich ihrem Beispiel. https://developers.facebook.com/docs/messenger-platform/implementation#send_api
Dank für die wertvollen Kommentare, fand Arbeits diese Lösung nach einigem Problem zu umgehen, wie pro Facebook-Richtlinien
brauchen eine unabhängige POST-Anfrage an diese URL senden nur einmal
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
gebrauchter Postbote Anfrage wie folgt senden
hier
Wenn die Erste-Taste erfolgreich gesetzt wurde, werden Sie die folgende Antwort erhalten
{
"result": "Successfully added new_thread's CTAs"
}
Machen Sie einen POST-Aufruf API JSON Körper wie unten.
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"
Eine bessere Lösung ist meiner Meinung nach der Microsoft Bot-Framework verwenden und seine / FirstRun verwendet die Boten loszulegen Taste 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
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
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 // Ruft die Facebook Graph API 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 die facebookTemplates.getStarted (), dass tatsächlich die json hat für den Einstieg, die wie unten aussieht gezeigt
templates.getStarted = function () {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
Komplett steckbare Code Architektur einen ersten Laufbetrieb in allen chatbot Plattformen durchzuführen. Funktioniert perfekt auf meinem bietet HIER
Es ist möglich, dass Sie es erfolgreich festgelegt, sondern sehen es nicht, weil Sie bereits über ein Gespräch mit der Facebook-Seite haben.
Nach dem erfolgreichen „Get Started“ Thread Einstellung, werden Sie sehen, es nur, wenn Sie Ihre bestehende Konversations-Thread löschen und eine neue starten.
Erste Schritte Schaltfläche wird nur angezeigt, wenn Sie mit der Facebook-Seite zum ersten Mal interagieren, so dass, wenn Sie zuvor die Seite angeschrieben haben, werden Sie nicht in der Lage sein, „Erste Schritte“, um zu sehen, wenn Sie den Faden von Ihrem Facebook-Messenger-Client löschen ( entweder mobil oder Desktop).
Aus den FB Messenger Text & Tabellen:
Es gibt bestimmte Voraussetzungen, um den Begrüßungsbildschirm zu sehen und die Schritte Taste Get:
- Sie werden gemacht nur das erste Mal, wenn der Benutzer mit der Seite interagiert auf Messenger
- Nur Administratoren / Entwickler / Tester der App kann es sehen, wenn die App im Entwicklungsmodus ist
- Ihre App muss auf Postbacks auf Ihrem Webhook abonniert werden
Es gibt eine Bibliothek in npm, die die Funktionalität des POST Wraps / DELETE Aktionen hier: 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
Das aktuelle Format ist, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{ "Get_started": { "Nutzlast": "GET_STARTED_PAYLOAD"}}
In unserem Fall folgende gearbeitet:
Hit der thread_settingsAPI
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>
Bestehen die folgende Beispiel JSON
{
"Setting_type": "call_to_actions",
"Thread_state": "new_thread",
"Call_to_actions": [
{
"Nutzlast": "Start"
}
]
}
{
„Ergebnis“: „Erfolgreich in new_thread der CTAs“
}
Senden Sie eine Post-Anforderung mit Ihrer Seite Zugriffstoken
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
mit folgenden Daten
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Facebok Docs: Get Taste gestartet
Hoffen, dass diese neue Methode, um Ihr Problem zu lösen. Vergessen Sie nicht gesendeten Nachrichten zuerst mit Facebook Web sehen Schaltfläche in Aktion zu löschen.
Sehr einfache Lösung, öffnen Sie einfach im Terminal und gehen Sie zu Ihrem Host - Ordner (in Mine /var/www/html/booking/public/facebookbot) und fügen Sie den folgenden Code:
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 Ihre korrekte Zugriffstoken setzen, auch Sie können erkennen, wenn Ihr die ersten Schritte Taste von Nutzlast gedrückt, die GET_STARTED_PAYLOAD in obigen Codebeispiel ist.