Le menu fixe

Ce document explique comment programmer l’ajout du menu fixe dans votre expérience Messenger.

Menu fixe imbriqué

L’application Messenger from Meta pour Android (versions 276 et ultérieures) ne prendra plus en charge les menus fixes imbriqués. Les Pages contenant des éléments de menu imbriqués s’afficheront sous la forme de listes simples sur toutes les surfaces (web, iOS et Android [versions 276 et ultérieures]). Nous pensons que les utilisateurs et utilisatrices de Messenger bénéficieront ainsi d’une expérience encore plus satisfaisante. Dans la version 8.0 de l’API Graph, les API Messenger Profile et Custom User Settings ne prendront plus en charge les menus imbriqués. Cette modification importante prendra effet sous deux ans pour toutes les versions.

Fonctionnement

Grâce au menu fixe, vous pouvez créer et envoyer un menu contenant les principales caractéristiques de votre entreprise (comme les heures d’ouverture, les adresses de vos magasins et les produits que vous proposez), qui sera toujours visible dans la conversation Messenger que vous entretenez avec une personne.

Quand quelqu’un clique sur un élément du menu, une notification webhook postback est envoyée à votre serveur. La notification webhook contient des informations sur l’élément et sur la personne qui l’a sélectionné. La sélection de l’élément déclenche l’ouverture d’une fenêtre de messagerie standard. Vous disposez de 24 heures pour répondre à la personne.

Si des Commandes sont définies, elles seront prioritaires sur le menu fixe.

Conditions requises

Pour que le menu fixe apparaisse, les conditions suivantes doivent être vérifiées :

  • L’utilisateur·ice doit exécuter Messenger v106 ou une version supérieure sur iOS ou Android.
  • La Page Facebook à laquelle le bot Messenger est abonné doit être publiée.
  • Le bot Messenger doit être défini sur « Public » dans les paramètres de l’application.
  • Le bot Messenger doit disposer de l’autorisation pages_messaging.
  • Un bouton Démarrer doit être défini pour le bot Messenger.

Boutons pris en charge

Le menu fixe se compose d’un ensemble de boutons. Les types de boutons suivants sont pris en charge dans le menu fixe :

Configuration du menu fixe

Pour configurer le menu fixe, envoyez une requête POST à l’API Messenger Profile pour définir la propriété persistent_menu du profil de votre bot Messenger.

Pour remplacer le menu imbriqué devenu obsolète, nous autorisons jusqu’à 20 boutons dans l’ensemble call_to_actions de l’API Graph 8.0 et versions ultérieures.

{
    "persistent_menu": [
        {
            "locale": "default",
            "composer_input_disabled": false,
            "call_to_actions": [
                {
                    "type": "postback",
                    "title": "Talk to an agent",
                    "payload": "CARE_HELP"
                },
                {
                    "type": "postback",
                    "title": "Outfit suggestions",
                    "payload": "CURATION"
                },
                {
                    "type": "web_url",
                    "title": "Shop now",
                    "url": "https://www.originalcoastclothing.com/",
                    "webview_height_ratio": "full"
                }
            ]
        }
    ]
}

Menu fixe imbriqué

Cette fonctionnalité n’est plus prise en charge dans la version 8.0 et les versions ultérieures.

Désactivation de l’éditeur

Vous pouvez désactiver l’éditeur pour faire du menu fixe l’unique manière d’interagir avec votre bot Messenger. Cette opération est utile si un objectif ou un ensemble précis d’options est défini pour votre bot.

Pour ce faire, définissez "composer_input_disabled":true lorsque vous créez le menu fixe.

Localisation

Vous pouvez définir le texte par défaut d’un bouton du menu fixe, ainsi que sa traduction. Ce texte s’affichera en fonction des paramètres régionaux de l’utilisateur·ice.

Pour cela, spécifiez un objet distinct dans l’ensemble persistent_menu pour chaque paramètre régional. Pour spécifier le paramètre régional de chaque objet, définissez la propriété locale sur un paramètre régional pris en charge:

{
  "locale":"default",
  "call_to_actions":[...]
},
{
  "locale: "zh_CN",
  "call_to_actions":[...]
}

Menu au niveau utilisateur

Nouvelle fonctionnalité

Le 4 décembre 2019, nous avons apporté des améliorations au menu fixe en prenant en charge les modifications dynamiques afin de personnaliser les conversations.

Vous pouvez remplacer le menu fixe au niveau Page par un paramètre au niveau utilisateur. Votre application pourra ainsi contrôler de manière dynamique les éléments suivants :

  • Les boutons d’incitation à l’action du menu destiné à l’utilisateur·ice
  • La visibilité de l’éditeur·ice par l’utilisateur·ice

Un autre point de terminaison intitulé custom_user_settings est utilisé pour activer ou désactiver le paramètre au niveau utilisateur. Ce point de terminaison prend en charge les appels POST, GET et DELETE.

Les configurations existantes pour le menu fixe au niveau Page s’appliquent au niveau utilisateur. La principale différence réside dans le fait qu’un paramètre psid est nécessaire pour indiquer l’utilisateur ou l’utilisatrice concerné·e par ce remplacement.

REMARQUE : la mise à jour du menu fixe au niveau utilisateur s’effectue en temps réel tandis que la mise à jour du menu fixe au niveau Page peut prendre jusqu’à 24 heures.

Les paramètres au niveau utilisateur sont limités à 10 appels par utilisateur·ice toutes les 10 minutes.

Exemple de requête POST

Cette requête permettra de remplacer les paramètres actuels au niveau Page pour cet utilisateur•ou cette utilisatrice.

curl -X POST -H "Content-Type: application/json" -d '{
  "psid": "<PSID>",
  "persistent_menu": [
        {
            "locale": "default",
            "composer_input_disabled": false,
            "call_to_actions": [
                {
                    "type": "postback",
                    "title": "Talk to an agent",
                    "payload": "CARE_HELP"
                },
                {
                    "type": "postback",
                    "title": "Outfit suggestions",
                    "payload": "CURATION"
                },
                {
                    "type": "web_url",
                    "title": "Shop now",
                    "url": "https://www.originalcoastclothing.com/",
                    "webview_height_ratio": "full"
                }
            ]
        }
    ]
}' "https://graph.facebook.com/v19.0/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"

Exemple de requête GET

Cette requête permet de récupérer les paramètres actuels au niveau Page et utilisateur. S’il n’existe aucun paramètre au niveau utilisateur, seuls les paramètres au niveau Page sont renvoyés.

curl -X GET "https://graph.facebook.com/v19.0/me/custom_user_settings?psid=<PSID>&access_token=<PAGE_ACCESS_TOKEN>"

Résultat

{
    "data": [
      {
        "user_level_persistent_menu": [
            {
              "locale": "default",
              "composer_input_disabled": false,
              "call_to_actions": [
                  {
                      "type": "postback",
                      "title": "Talk to an agent",
                      "payload": "CARE_HELP"
                  },
                  {
                      "type": "postback",
                      "title": "Outfit suggestions",
                      "payload": "CURATION"
                  },
                  {
                      "type": "web_url",
                      "title": "Shop now",
                      "url": "https://www.originalcoastclothing.com/",
                      "webview_height_ratio": "full"
                  }
              ]
            }
        ],
        "page_level_persistent_menu": [
          Original Page Menu...
        ]  
      }
  ]
}

Exemple de requête DELETE

Cette requête permet de supprimer les paramètres au niveau de l’utilisateur·ice sans toucher au menu au niveau de la Page, s’il est défini.

curl -X DELETE 'https://graph.facebook.com/v19.0/me/custom_user_settings?psid=<PSID>&params=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'

Désactivation du menu fixe

Dans certains cas, il convient de désactiver le menu fixe de votre bot dans le plugin de discussion. Pour ce faire, ajoutez "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"] lors de la configuration de votre menu fixe :

Exemple de charge utile de l’API Messenger Profile

{
  "persistent_menu":[
    {
      "locale":"default",
      "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
      "composer_input_disabled": false,      
      "call_to_actions":[
        {
          "title":"My Account",
          "type":"postback",
          "payload":"PAYBILL_PAYLOAD"
        }
      ]
    }
  ]
}

Recommandations

De même que les boutons, les éléments de menu peuvent entraîner une webview ou un renvoi. Gardez à l’esprit que le menu de second niveau n’est pas pris en charge.

Utilisez le menu comme des points d’entrée dans les fonctionnalités de votre bot.

Choisissez des libellés clairs pour les boutons : c’est grâce au menu que les utilisateur·ices découvriront les fonctionnalités de votre bot. Ce menu leur indique instantanément à quoi le bot pourra leur être utile à l’avenir.

Choisissez avec soin les principales fonctions de votre bot et essayez de limiter le nombre d’éléments de menu à 5 pour une expérience d’utilisation optimale.

Ne prévoyez pas d’inclure des données spécifiques aux utilisateur·ices dans le menu : bien qu’il puisse être localisé, il est identique pour toutes les personnes qui l’utilisent.

N’incluez pas dans le menu un bouton « Menu » destiné à envoyer à l’utilisateur·ice un message contenant un menu. Il vous suffit d’inclure ce contenu directement dans le menu : c’est à cela qu’il sert !

N’incluez pas d’actions génériques telles que « redémarrer » dans le menu.

N’utilisez pas la place dont vous disposez dans le menu principal pour des informations secondaires de type « colophon » sur les conditions d’utilisation, la politique de confidentialité, la mention « conçu par », au détriment des fonctionnalités principales de votre bot.

Assistance pour les équipes chargées du développement