cercato richiesta invio a questo URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Ma non ha funzionato.
cercato richiesta invio a questo URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Ma non ha funzionato.
è necessario eseguire un comando ricciolo appropriato per configurarlo. controllare questo link fuori e guardare il loro esempio. https://developers.facebook.com/docs/messenger-platform/implementation#send_api
grazie per i preziosi commenti, dopo qualche soluzione pensano che questa soluzione di lavoro, secondo le linee guida di Facebook
necessario inviare una richiesta POST indipendente per questo URL solo una volta
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
postino utilizzati per inviare richiesta come questo
qui
Se il pulsante Inizia è stata impostata correttamente, si otterrà la seguente risposta
{
"result": "Successfully added new_thread's CTAs"
}
Effettuare una chiamata POST API JSON corpo come di seguito.
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"
Una soluzione migliore a mio parere è quello di utilizzare il Framework Microsoft Bot e usare il suo / FirstRun per inviare il tasto Messenger iniziare
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()
}
Il platforms.firstRun appare come mostrato di seguito
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')
}
}
Questo a sua volta chiama 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)
])
}
Il platforms.facebook.sendThread sembra come mostrato di seguito // Chiamate il grafico API di Facebook per modificare le impostazioni 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 })
}
});
})
}
Si noti la facebookTemplates.getStarted (), che ha in realtà il JSON per iniziare che appare come mostrato di seguito
templates.getStarted = function () {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
Architettura codice completamente innesto per eseguire una prima operazione di esecuzione per tutte le piattaforme Chatbot. Funziona perfettamente sul mio bot QUI
E 'possibile impostare con successo, ma non si è visto perché si dispone già di una conversazione esistente con la pagina facebook.
Dopo aver impostato con successo il filo "Get Started", si vedrà soltanto se si elimina il tuo thread di conversazione esistente e iniziare uno nuovo.
Operazioni preliminari pulsante viene visualizzato solo quando si interagisce con la pagina facebook per la prima volta, quindi se avete in precedenza messaged pagina, non sarà in grado di vedere "Get Started" a meno che non si elimina il filo dal vostro client Facebook Messenger ( sia in modalità mobile o desktop).
Dalle Docs FB Messenger:
Ci sono alcune condizioni di vedere la schermata di benvenuto e il pulsante per iniziare:
- Essi sono resi solo la prima volta che l'utente interagisce con la pagina su Messenger
- Solo gli amministratori / sviluppatori / tester del app può vedere quando l'applicazione è in modalità di sviluppo
- La vostra applicazione deve essere sottoscritto postback sul tuo webhook
C'è una biblioteca di NPM che avvolge la funzionalità del POST / DELETE azioni qui: 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
Il formato attuale è, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{ "Get_started": { "payload": "GET_STARTED_PAYLOAD"}}
Nel nostro caso, la seguente ha funzionato:
Colpire thread_settingsl'API
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>
Passato il seguente esempio JSON
{
"setting_type": "call_to_actions",
"Thread_state": "new_thread",
"call_to_actions": [
{
"Payload": "Start"
}
]
}
{
"Risultato": "CTA di new_thread aggiunto con successo"
}
Invia una richiesta di Post con il tuo token di accesso pagina
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
con i seguenti dati
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Facebok Documenti: Get Started pulsante
Spero che questo nuovo metodo di risolvere il problema. Non dimenticare di eliminare i messaggi inviati prima utilizzando Facebook Web per visualizzare il pulsante in azione.
Soluzione molto semplice, basta aprire nel terminale e vai al tuo percorso della cartella host (nella mia /var/www/html/booking/public/facebookbot) e incollare il seguente codice:
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"
e premere invio, assicuratevi di mettere il token di accesso corretto, anche si può riconoscere quando il pulsante premuto introduttiva dal carico utile che è GET_STARTED_PAYLOAD nel codice di esempio sopra.