Facebook Messenger

Afin de configurer le canal pour Facebook Messenger, vous aurez besoin des éléments suivants :
  • Un compte de développeur Facebook

  • Une application Facebook

  • Une page Facebook

  • Un jeton d'accès à la page

  • Un ID de clé secrète d'application

  • Une URL de webhook

  • Un jeton de vérification

Pour exécuter votre assistant numérique (ou une brique autonome) sur Facebook Messenger, vous devez tout d'abord configurer une page et une application Facebook. Pour en savoir plus, reportez-vous à la documentation de la plate-forme de messagerie Facebook.

Voici en quelques mots comment cela fonctionne. La page Facebook héberge votre assistant numérique. Les utilisateurs discutent avec l'assistant numérique via cette page lorsqu'ils utilisent la fenêtre de discussion dans un navigateur de bureau. Lorsqu'ils utilisent un appareil mobile, les utilisateurs interagissent avec l'assistant numérique directement via Facebook Messenger. Dans ce scénario, l'application Facebook permet à l'assistant numérique d'obtenir les messages gérés par Facebook Messenger.

Pour créer un canal Facebook Messenger, vous devez disposer d'artefacts générés par Oracle Digital Assistant et par Facebook Messenger.

Vous aurez besoin que Oracle Digital Assistant fournissent les éléments suivants :

  • URL de webhook connectant l'assistant numérique à Facebook Messenger
  • jeton de vérification permettant à Facebook Messenger d'identifier l'assistant numérique

Vous aurez besoin que Facebook Messenger fournissent les éléments suivants :

  • jeton d'accès à la page
  • ID de clé secrète d'application

Comme vous avez besoin de transférer ces artefacts entre Digital Assistant et Facebook Messenger, vous devez basculer entre ces deux plates-formes pendant la configuration du canal.

Etape 1 : configuration de Facebook Messenger

Commencez par générer la clé secrète d'application et le jeton d'accès à la page dans Facebook Messenger.

  1. Connectez-vous au compte de développeur Facebook.
  2. Créez l'application Facebook que vous utiliserez pour le canal :
    1. Dans votre navigateur, accédez à https://developers.facebook.com/apps/.
    2. Sélectionnez l'onglet Mes applications et cliquez sur Créer une application.
    3. Sur la page Détails de l'application de l'assistant Créer une application, entrez le nom que vous souhaitez utiliser pour l'application et l'adresse électronique que vous souhaitez utiliser comme contact pour l'application. Cliquez ensuite sur Suivant.
    4. Sur la page Cas d'emploi, sous Filtrer par, sélectionnez Messagerie métier. Sélectionnez ensuite Interagir avec les clients sur Messenger à partir de Meta, puis cliquez sur Suivant.
    5. Cliquez sur les autres pages de l'assistant, puis sur la page Présentation, cliquez sur Créer une application.
  3. Une fois l'application créée, sélectionnez-la (à gauche de la page Mes applications), puis, dans la section Paramètres d'application, sélectionnez De base.
  4. Copiez la valeur du champ Clé secrète d'application et collez-la à un endroit pratique sur votre système.

    Vous aurez besoin de la clé secrète d'application pour terminer votre configuration du canal Facebook.

  5. Dans la section Page Application, cliquez sur Créer une page.
  6. Sur la page Créer une page, renseignez les champs requis, puis cliquez sur Créer une page.
    Remarque

    Le nom de page doit contenir le nom de l'application.
  7. Générez un jeton d'accès :
    1. Sélectionnez Outils > Explorateur d'API de graphique.
    2. Dans la section Jeton d'accès de la page, pour Application bêta, sélectionnez le nom de votre application.
    3. Pour le champ Utilisateur ou Page, sélectionnez Obtenir un jeton.
    4. Dans la section Droits d'accès, cliquez sur Ajouter une autorisation et sélectionnez les droits d'accès suivants :
      • business_management
      • pages_manage_metadata
      • pages_messaging
      • pages_show_list
    5. Cliquez sur Générer un jeton d'accès.
  8. Copiez le jeton d'accès et collez-le dans un emplacement approprié.

    Vous utiliserez ce jeton, qui autorise l'application Facebook à accéder à l'API de messagerie de Facebook, pour terminer la définition de votre canal dans Digital Assistant.

Etape 2 : création du canal dans Digital Assistant

Renseignez les champs de la boîte de dialogue Créer un canal en fournissant les clés Jeton d'accès à la page et Clé secrète d'application de Facebook.
  1. Dans Digital Assistant, cliquez sur Canaux dans le menu de gauche, puis sélectionnez Utilisateurs.
  2. Cliquez ensuite sur Ajouter un canal pour ouvrir la boîte de dialogue Créer un canal.

  3. Nommez votre canal.

  4. Choisissez Facebook Messenger comme type de canal.

  5. Dans le champ Jeton d'accès à la page, collez le jeton d'accès à la page que vous avez généré précédemment lors de la procédure de configuration de Facebook Messenger.

  6. Dans le champ Clé secrète d'application, collez la clé secrète d'application que vous avez copiée précédemment lors de la procédure de configuration de Facebook Messenger.

  7. Cliquez sur Créer.

  8. Sur la page Canaux, copiez à la fois le jeton de vérification et l'URL de webhook, et collez-les dans un emplacement approprié de votre système. Vous en aurez besoin pour configurer le webhook Facebook.
    Description de l'image fb-channel-complete.png ci-après
    Description de l'illustration fb-channel-complete.png

Etape 3 : configuration du webhook Facebook Messenger

Dans Facebook Messenger, définissez l'URL de callback à l'aide de l'URL de webhook générée par Digital Assistant à l'étape précédente.

  1. Dans la console Facebook Messenger, accédez au projet que vous avez initialement créé pour le webhook.
  2. Sélectionnez Paramètres de l'API Messenger pour ouvrir la page Configuration de l'API Messenger.
  3. Dans le champ URL de callback, collez l'URL de webhook obtenue à partir de la page Canaux de l'assistant numérique.
  4. Dans le champ Vérifier le jeton de la console Messenger, collez le jeton de vérification à partir de la page Canaux de l'assistant numérique.
  5. Dans la section Champs de webhook, sélectionnez les événements de callback messages et messaging_postbacks.
  6. Cliquez sur Vérifier et enregistrer.
  7. Abonnez-vous à la page :
    1. Dans la section Générer des jetons d'accès de la page Configuration de l'API Messenger, sélectionnez la page Facebook de votre canal.
    2. Cliquez sur Ajouter un abonnement.
    3. Dans la boîte de dialogue Modifier les abonnements de page, vérifiez que les options messages et messaging_postbacks sont sélectionnées et cliquez sur Confirmer.

Etape 4 : activation du canal Facebook

Une fois la configuration terminée, vous êtes prêt à activer le canal Facebook.

  • Dans Digital Assistant, sélectionnez le canal et activez l'option Canal activé.
  • Cliquez sur icône de la liste déroulante Acheminer vers... et sélectionnez l'assistant numérique ou la brique à associer au canal.

Vous pouvez maintenant tester le bot via le canal.

Etape 5 : test du bot sur Facebook Messenger

Après avoir configuré le canal Facebook et la messagerie, vous pouvez tester votre bot à l'aide de votre page Facebook, de Facebook Messenger (https://www.messenger.com/) et de l'application Facebook Messenger sur votre appareil.

  1. Accédez à https://www.messenger.com/.
  2. Dans l'interface Messenger, saisissez le nom de la page à rechercher.
  3. Commencez à discuter avec votre assistant numérique (ou votre brique autonome).

Menu fixe

Facebook Messenger vous permet de créer un menu fixe à côté de son champ Message. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/ pour plus d'informations sur cette fonctionnalité.

L'exemple ci-dessous illustre les éléments de menu fixe "Order Pizza" et "Order Pasta" :



Création d'un élément de menu fixe

Pour ajouter des éléments de menu Facebook fixe à un assistant numérique ou à une brique autonome, procédez comme suit :

  1. Assurez-vous que tous les prérequis sont en place, y compris un bouton de mise en route.

    Ces prérequis sont répertoriés ici : https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/#requirements.

  2. Ajoutez une action pour chaque élément de menu dans le tableau call_to_actions du menu Facebook fixe, comme décrit dans la procédure générale à l'adresse https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/#set_menu.
  3. Définissez les éléments de menu fixe à l'aide d'un appel POST vers l'API de plate-forme Messenger.

    L'URI de demande est https://graph.facebook.com/v2.6/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>, où <PAGE_ACCESS_TOKEN> est le jeton d'accès à la page de votre application Facebook.

Eléments de menu fixe pour un assistant numérique

Voici le format de l'appel POST vers l'API de plate-forme Messenger permettant d'ajouter des éléments de menu Facebook fixe pour un assistant numérique :

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"menu item display name",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"utterance that contains the skill's invocation name\"}}"
            }
          ]
    }
  ]
}

Pour la charge utile, vous utilisez une action system.textReceived qui transmet une variation de Facebook Messenger à l'assistant numérique via une variable system.text. La variation doit contenir le nom d'appel de la brique cible (c'est-à-dire, un appel explicite) afin de garantir un acheminement correct.

Voici un exemple de création de deux éléments de menu fixe pour votre brique dans Facebook Messenger (Order Pizza et Order Pasta) :

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"Order Pizza",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"Order pizza from Pizza Joe \"}"
            },
            {
              "title":"Order Pasta",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"Order pasta from Pizza Joe \"}"
            }
          ]
    }
  ]
}

Eléments de menu fixe pour une brique autonome

Voici le format de l'appel POST vers l'API de plate-forme Messenger permettant d'ajouter des éléments de menu Facebook fixe pour une brique autonome :

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"menu item display name",
              "type":"postback",
              "payload":"{\"action\":\"action name\",\"variables\": {}"
            }
          ]
    }
  ]
}

La charge utile est le nom de l'événement mis en correspondance avec le flux à déclencher dans le flux de dialogue de la brique.

Vous devez ensuite référencer cette action dans le menu fixe Facebook.

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"Help",
              "type":"postback",
              "payload":"{\"action\":\"help\",\"variables\": {}"
            }
          ]
    }
  ]
}

Fonctionnalités prises en charge

Les canaux Facebook Messenger de Digital Assistant prennent en charge les fonctionnalités suivantes :

  • texte (envoi et réception),
  • images (envoi et réception),
  • fichiers (envoi et réception),
  • emojis (envoi et réception),
  • localisation, mais en phase d'abandon (envoi et réception),
  • liens,
  • postbacks,
  • demandes de localisation,
  • propriétés personnalisées,
  • composants de carrousel,
  • composants de liste.

Si vous ciblez votre brique sur plusieurs canaux avec des fonctionnalités et une syntaxe de formatage différentes, vous pouvez utiliser le balisage HTML de base dans vos messages. Si vous le faites, ce balisage sera automatiquement converti au format de balisage de Facebook Messenger lorsque le message sera transmis au canal. Cela est particulièrement utile si vous ciblez vos compétences sur d'autres canaux en plus de Facebook Messenger. Reportez-vous à Formatage de texte enrichi dans les canaux.

Contraintes imposées aux messages

Les canaux Facebook Messenger de Digital Assistant présentent les contraintes de message suivantes :

  • Messages texte
    • Longueur maximale du message texte : 640 caractères. Si la longueur est supérieure à 640, le texte est divisé en plusieurs messages.
    • Longueur maximale du libellé d'action de texte : 20 caractères
    • Types d'action de texte autorisés : postback, appel, URL
    • Nombre maximal d'actions de texte : 3. S'il existe davantage d'actions de texte, le message est converti en plusieurs cartes horizontales, le même texte étant utilisé en tant que titre sur chacune d'elles. Chaque carte contient jusqu'à 3 actions.
  • Cartes horizontales
    • Longueur maximale du titre : 80 caractères
    • Longueur maximale de la description : 80 caractères
    • Longueur maximale du libellé d'action de carte : 20 caractères
    • Nombre maximal de cartes : 10
    • Nombre maximal d'actions de carte : 3. Si le nombre d'actions de carte dépasse 3, la carte est dupliquée pour afficher les actions de carte restantes.
    • Nombre minimal d'actions de carte : 0
    • Nombre maximal d'actions de liste de cartes : 0
    • Au moins une description, une image ou une action requise ? : oui
    • Types d'action de carte autorisés : postback, appel, URL, partage.
    • Types d'action de liste de cartes autorisés : N/A
  • Cartes verticales
    • Non pris en charge
  • Messages de pièce jointe
    • Pris en charge ? : oui
    • Actions de pièce jointe autorisées ? : non
  • Boutons d'action
    • Longueur maximale du libellé d'action globale : 20 caractères
    • Nombre maximal d'actions globales : 11
    • Types d'action globale autorisés : postback

Extensions de canal Facebook Messenger

Pour les canaux Facebook Messenger, vous pouvez étendre les fonctionnalités des composants de réponse commune avec des fonctions propres à Facebook.

Pour accéder aux extensions, utilisez l'élément channelCustomProperties des métadonnées du composant Common Response et définissez les propriétés appropriées. Le format du code est le suivant :

...
            channelCustomProperties:
            - channel: "facebook"
              properties:
                PROPERTY_NAME: "PROPERTY_VALUE"
...

Les propriétés personnalisées disponibles pour les canaux Facebook Messenger sont les suivantes :

Nom de la propriété Valeurs autorisées Applicable à... Description
top_element_style
  • compact
  • large
Eléments de réponse avec les attributs suivants :
  • type: "cards"
  • cardLayout: "vertical"
Détermine le mode d'affichage de l'image de la première carte. Pour plus de détails, reportez-vous à https://developers.facebook.com/docs/messenger-platform/send-messages/template/list/#cover_image.

Si cette propriété n'est pas indiquée, Oracle Digital Assistant la définit par défaut sur compact, ce qui est l'inverse de la valeur par défaut de Facebook.

image_aspect_ratio
  • horizontal
  • square
Eléments de réponse avec les attributs suivants :
  • type: "cards"
  • cardLayout: "horizontal"
Rapport hauteur/largeur utilisé pour afficher les images. Valeur par défaut : horizontal (1.91:1). square définit le rapport hauteur/largeur sur 1:1. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/reference/template/generic#attachment
sharable
  • true
  • false
Eléments de réponse de type cards. Définissez cette option sur true afin d'activer le bouton de partage natif dans Messenger pour le message de modèle. Valeur par défaut : false. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/reference/template/generic#attachment
webview_height_ratio
  • compact
  • tall
  • full
Il existe deux possibilités :
  • Une carte où la propriété "url" est indiquée
  • Une action"type": "url"
Hauteur de la vue Web qui est ouverte lorsque le bouton URL est touché ou hauteur de la carte lorsque la propriété d'URL spécifiée est touchée. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/reference/buttons/url#properties
messenger_extensions
  • true
  • false
Il existe deux possibilités :
  • Une carte où la propriété "url" est indiquée
  • Une action"type": "url"
Les extensions Messenger vous permettent d'intégrer de manière étroite les expériences de la vue Web avec l'expérience Messenger en rendant les fonctionnalités ajoutées accessibles dans la vue Web. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/reference/messenger-extensions-sdk
fallback_url URL valide Il existe deux possibilités :
  • Une carte où la propriété "url" est indiquée
  • Une action"type": "url"
URL à utiliser sur les clients ne prenant pas en charge les extensions de Messenger. S'il n'est pas défini, le paramètre url sera utilisé comme solution de secours. Il peut être spécifié uniquement si messenger_extensions est défini sur True. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/reference/buttons/url#properties
webview_share_button
  • hide
Il existe deux possibilités :
  • Une carte où la propriété "url" est indiquée
  • Une action"type": "url"
Définissez cette option sur hide pour désactiver le bouton de partage dans la vue Web (pour les informations sensibles). Cela n'a aucune incidence sur les partages initiés par le développeur à l'aide des extensions.
share_contents Le format suivant est utilisé dans l'API d'envoi Facebook Messenger
  • Une action"type": "share"
Message que le destinataire du partage doit voir, si différent de celui auquel ce bouton est associé. Reportez-vous à https://developers.facebook.com/docs/messenger-platform/reference/buttons/share#properties

Voici un exemple des propriétés personnalisées définies au niveau de l'élément de réponse (top_element_style) et au niveau des cartes (webview_height_ratio et fallback_url) :

responseItems:
  - type: "cards"
    cardLayout: "vertical"
    cards:
      - title: "${pizzas.name}"
        description: "${pizzas.description}"
        imageUrl: "${pizzas.image}"
        url: "${pizzas.moreInfo}"
        iteratorVariable: "pizzas"
        channelCustomProperties:
          - channel: "facebook"
            properties:
              webview_height_ratio: "compact"
              fallback_url: "http://www.oracle.com"
    channelCustomProperties:
      - channel: "facebook"
        properties:
          top_element_style: "large"
...

Pour obtenir des informations plus générales sur channelCustomProperties, reportez-vous à Extensions propres à un canal.