web-dev-qa-db-fra.com

comment configurer le bouton "Commencer" dans facebook messenger bot et quand envoyer un message de bienvenue

"Commencer"

essayé d'envoyer une demande à cette URL 

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

Mais ça n'a pas marché.

9
kanth

Effectuez un appel POST au corps JSON de l'API comme indiqué ci-dessous.

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"

Réf: Bouton de démarrage de Facebook Messenger

Postman screentshot

14
Vaibhav Bansal

Le format actuel est, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN

{ "Commencer":{ "charge utile": "GET_STARTED_PAYLOAD" } }

4
Neha Creado

Il est possible que vous l'ayez configurée avec succès, mais que vous ne la voyiez pas car vous avez déjà une conversation en cours avec la page facebook.

Après avoir défini avec succès le fil "Get Started", vous ne le verrez que si vous supprimez votre fil de conversation existant et en démarrez un nouveau. 

Le bouton Démarrer ne s'affiche que lorsque vous interagissez avec la page facebook pour la première fois. Par conséquent, si vous avez déjà envoyé un message à la page, vous ne pourrez pas voir "Démarrer" à moins de supprimer le fil de votre client Facebook Messenger soit mobile ou de bureau). 

Depuis le Docs Messenger FB:

Pour voir l'écran de bienvenue et le bouton Get Started, certaines conditions sont nécessaires:

  • Ils ne sont rendus que lors de la première interaction de l'utilisateur avec la page sur Messenger. 
  • Seuls les administrateurs/développeurs/testeurs de l'application peuvent la voir lorsque l'application est en mode de développement.
  • Votre application doit être abonnée à des publications sur votre compte Webhook
4
Jon Church

merci pour vos précieux commentaires, après que quelques solutions de contournement aient trouvé cette solution opérationnelle, conformément aux directives de Facebook

besoin d'envoyer une demande POST indépendante à cette URL uniquement UNE FOIS 

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

facteur utilisé pour envoyer une demande comme celle-ci ici

Si le bouton Get Started a été défini avec succès, vous obtiendrez la réponse suivante

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

Envoyer une demande de publication à l'aide de votre jeton d'accès à la page

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

avec les données suivantes

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

Facebok Docs:Bouton d'initialisation

J'espère que cette nouvelle méthode résoudra votre problème. N'oubliez pas de supprimer les messages envoyés en utilisant d'abord Facebook Web pour voir le bouton en action.

2
MithooG

Il existe une bibliothèque dans npm qui enveloppe la fonctionnalité des actions POST/DELETE ici: 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

vous devez exécuter une commande curl appropriée pour le configurer. vérifiez ce lien et regardez leur exemple. https://developers.facebook.com/docs/messenger-platform/implementation#send_api

2
user2322082

Une meilleure solution, à mon avis, consiste à utiliser le Microsoft Bot Framework et à utiliser son/firstRun pour envoyer le bouton de démarrage du messager.

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 ressemble à l'illustration ci-dessous

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

Ceci appelle à son tour 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 se présente comme ci-dessous// Appelle l'API graphique de Facebook pour modifier les paramètres du 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 })
                }
            });
    })
}

Notez le facebookTemplates.getStarted (), qui a en fait le json pour démarrer qui ressemble à celui montré ci-dessous

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

Architecture de code entièrement enfichable pour effectuer une première opération sur toutes les plateformes de chatbot. Fonctionne parfaitement sur mon bot ICI

0
PirateApp

Solution très simple, ouvrez simplement dans le terminal et allez à l’emplacement de votre dossier d’hôte, (dans le mien /var/www/html/booking/public/facebookbot) et collez le code suivant:

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"

et appuyez sur Entrée, assurez-vous de mettre votre jeton d'accès correct, vous pouvez également reconnaître lorsque votre bouton de mise en route a été pressé à partir de données utiles GET_STARTED_PAYLOAD dans l'exemple de code ci-dessus. 

0
Akhmad

Dans notre cas, ce qui suit a fonctionné:

  • Hit l'API thread_settings

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

  • Passé l'exemple suivant JSON

 {
 "setting_type": "call_to_actions", 
 "thread_state": "new_thread", 
 "call_to_actions": [
 {
 "charge utile": "Démarrer" 
 } 
 ] 
 } 
  • L'API doit donner le résultat suivant:
 {
 "result": "Les CTA de new_thread ont été ajoutés avec succès" 
 } 
0
student