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é.
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"
Le format actuel est, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{ "Commencer":{ "charge utile": "GET_STARTED_PAYLOAD" } }
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
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"
}
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.
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
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
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
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.
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" } ] }
{ "result": "Les CTA de new_thread ont été ajoutés avec succès" }