2016-06-27 17 views
6

"Get Started"come configurare "Get Started" pulsante Facebook Messenger Bot e quando inviare il messaggio di benvenuto

provato l'invio di una richiesta a questo url

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

ma non ha funzionato.

+0

Fornisci maggiori informazioni su ciò che hai fatto. E cerca prima sul Web per esercitazioni. Ce n'è uno chiamato "Come iniziare con Facebook Messenger Bots". – Galya

+0

Ho seguito la risposta accettata ma non riesco ancora ad avere il pulsante "Inizia" nella schermata di benvenuto. Qualcuno può aiutare? –

risposta

3

grazie per i preziosi commenti, dopo qualche soluzione alternativa pensa che questa soluzione di lavoro, come da linee guida di Facebook

necessità di 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

utilizzato postino per inviare una richiesta come questa here

Se il pulsante Get Started è stata impostata correttamente, si otterrà la seguente risposta

{ 
    "result": "Successfully added new_thread's CTAs" 
} 
+0

Che restituisce "(# 100) Chiavi non valide \" messaggio \ "trovato in param \" call_to_actions [0] \ " – Kev

+0

è perché" messaggio "non è una proprietà di" call_to_actions ". Rimuovi la proprietà" messaggio " – Carmela

+0

Che cosa succede se hai inviato il post più di una volta ??? –

12

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" 

Rif: Facebook messenger get started button

Postman screentshot

+2

Ancora non funziona per me –

+0

Funziona. Hai modificato il token di accesso con il tuo. – barryjones

+2

Non riesco a visualizzare su Facebook Messenger app Android –

0

Una soluzione migliore a mio parere è quello di utilizzare il Framework Microsoft Bot e usare il suo/FirstRun per inviare il tasto messaggero 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() 
} 

Le piattaforme.firstRun si presenta 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 appare come illustrato di seguito // Richiama 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 il ​​facebookTemplates.getStarted(), che in realtà ha 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 di codice completamente collegabile per l'esecuzione di un'operazione di prima esecuzione su tutte le piattaforme di chatbot. Funziona perfettamente sul mio robot HERE

3

È possibile impostarlo correttamente, ma non lo si vede perché si dispone già di una conversazione esistente con la pagina di Facebook.

Dopo aver impostato correttamente il thread "Inizia", ​​lo vedrai solo se elimini il thread di conversazione esistente e ne inizi uno nuovo.

Il pulsante di avvio viene visualizzato solo quando si interagisce con la pagina di Facebook per la prima volta, quindi se la pagina è stata precedentemente messaggistica, non sarà possibile visualizzare "Guida introduttiva" a meno che non si cancelli il thread dal Client di Facebook Messenger (mobile o desktop).

Dal FB Messenger Docs:

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 dell'app possono vederlo quando l'app è in modalità di sviluppo
  • L'app deve essere sottoscritta ai postback sul tuo w ebhook
2

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 
0

Nel nostro caso, i seguenti lavorato:

  • Hit la thread_settings 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" 
     } 
     ] 
    } 
  • L'API deve fornire le seguenti come risultato:
 
    { 
     "result": "Successfully added new_thread's CTAs" 
    } 
0

invia una richiesta POST utilizzando l'accesso pagina di token di

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 Button

Spero che questo nuovo metodo risolva il tuo problema. Non dimenticare di cancellare i messaggi inviati prima usando Facebook Web per vedere il pulsante in azione.

Problemi correlati