Erreur de menu persistant nestede dans Facebook Messenger

J’essaie d’append un menu persistant NESTED à mon chatbot. Facebook a une limite de 3 boutons, mais vous pouvez avoir un bouton nested avec un maximum de 5 boutons.

C’est l’erreur que je reçois quand je lance mon code

erreur de corps de réponse

type: ‘OAuthException’,

Erreur: {message: ‘(# 100) Des clés non valides “call_to_actions” ont été trouvées dans le paramètre “call_to_actions [0]”.’, Code: 100}

Voici mon code:

function addPersistentMenu(){ request({ url: "https://graph.facebook.com/v2.6/me/thread_settings", qs: {access_token: token}, method: "POST", json:{ setting_type : "call_to_actions", thread_state : "existing_thread", call_to_actions : [ { type: "nested", title: "Menu Item One", call_to_actions: [ { type: "postback", title: "Nested Item One", payload: "NESTED_ONE" }, { type: "postback", title: "Nested Item Two", payload: "NESTED_TWO" } ] }, { type: "postback", title: "Menu Item Two", payload: "TWO" }, { type: "postback", title: "Menu Item Three", payload: "THREE" } ] } }, function(error, response, body) { if(error){ console.log('sending error') console.log('Error sending messages: ', error) }else if(response.body.error){ console.log('response body error') console.log('Error: ', response.body.error) } }); } 

Lorsque je supprime le bouton nested, le menu persistant apparaît. Je ne suis donc pas sûr de l’erreur. Mon code est assez similaire à l’exemple posté par facebook dans leur doc de menu persistant . Je programme en utilisant node.js, hébergé sur heroku et j’ai modélisé ma fonction de menu d’après le code trouvé ici .

Question: Quelqu’un a-t-il fait cela en utilisant un nœud Webjournal en utilisant le paquet de requêtes npm pour envoyer des requêtes à Messenger? Comment puis-je append mon menu persistant nested et que signifie cette erreur?

Edit: Lorsque j’utilise un POST CURL direct via le terminal à l’aide de la commande exacte de la documentation du menu persistant, le menu persistant nested est ajouté. Je ne sais pas quoi append à ma version webhook de nodejs de cette requête pour la faire fonctionner.

C’est la commande CURL:

 curl -X POST -H "Content-Type: application/json" -d '{ "persistent_menu":[ { "locale":"default", "composer_input_disabled":true, "call_to_actions":[ { "title":"My Account", "type":"nested", "call_to_actions":[ { "title":"Pay Bill", "type":"postback", "payload":"PAYBILL_PAYLOAD" }, { "title":"History", "type":"postback", "payload":"HISTORY_PAYLOAD" }, { "title":"Contact Info", "type":"postback", "payload":"CONTACT_INFO_PAYLOAD" } ] }, { "type":"web_url", "title":"Latest News", "url":"http://petershats.parseapp.com/hat-news", "webview_height_ratio":"full" } ] }, { "locale":"zh_CN", "composer_input_disabled":false } ] }' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR_ACCESS_TOKEN_HERE" 

    L’API de Facebook Messenger a été mise à jour pour les menus persistants nesteds. Le style ‘call_to_actions’ semble toujours fonctionner pour un menu non nested.

    Un menu nested nécessite cependant un appel d’API différent. La différence semble être que l’URL doit se trouver dans le “profil de messagerie” plutôt que dans “thread_settings”. Un gestionnaire ‘get_started’ est également requirejs pour une raison quelconque. Enfin, le tableau json s’appelle ‘persistent_menu’.

    J’ai mis à jour l’exemple de bot sur gitub. Tapez ‘add menu’ et ‘remove menu’ pour voir apparaître / disparaître le menu persistant. Un rechargement de page ou deux peuvent être requirejs sur certains navigateurs.

    Voici un code de nodejs bâclé qui devrait faire l’affaire.

      function addPersistentMenu(){ request({ url: 'https://graph.facebook.com/v2.6/me/messenger_profile', qs: { access_token: PAGE_ACCESS_TOKEN }, method: 'POST', json:{ "get_started":{ "payload":"GET_STARTED_PAYLOAD" } } }, function(error, response, body) { console.log(response) if (error) { console.log('Error sending messages: ', error) } else if (response.body.error) { console.log('Error: ', response.body.error) } }) request({ url: 'https://graph.facebook.com/v2.6/me/messenger_profile', qs: { access_token: PAGE_ACCESS_TOKEN }, method: 'POST', json:{ "persistent_menu":[ { "locale":"default", "composer_input_disabled":true, "call_to_actions":[ { "title":"My Account", "type":"nested", "call_to_actions":[ { "title":"Pay Bill", "type":"postback", "payload":"PAYBILL_PAYLOAD" }, { "title":"History", "type":"postback", "payload":"HISTORY_PAYLOAD" }, { "title":"Contact Info", "type":"postback", "payload":"CONTACT_INFO_PAYLOAD" } ] }, { "type":"web_url", "title":"Latest News", "url":"http://foxnews.com", "webview_height_ratio":"full" } ] }, { "locale":"zh_CN", "composer_input_disabled":false } ] } }, function(error, response, body) { console.log(response) if (error) { console.log('Error sending messages: ', error) } else if (response.body.error) { console.log('Error: ', response.body.error) } }) }