Facebook Messenger

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

  • Une page Facebook

  • Une application 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 une page Facebook qui héberge votre bot. La description, les images et la page de garde que vous ajoutez à cette page permettront aux utilisateurs d'identifier votre bot.

  3. Créez ensuite l'application Facebook à lier à cette page. Comme il s'agit d'une application Messenger, choisissez Applications pour Messenger, puis cliquez sur Créer un ID d'application.
    Description de l'image setup-fbapp.png
    Description de l'illustration setup-fbapp.png

    Si vous n'avez pas sélectionné l'option Applications pour Messenger dans cette boîte de dialogue (par exemple, si vous créez une application de test), cliquez sur Ajouter un produit dans la barre de navigation de gauche, choisissez Messenger sur la page Configuration de produit, puis cliquez sur Mise en route.
    Description de l'image add-product.png
    Description de l'illustration add-product.png

  4. Sur la page Tableau de bord de l'application Facebook, copiez la clé secrète de l'application et collez-la dans un emplacement approprié de votre système.
    Description de l'image facebook-dashboard.png
    Description de l'image facebook-dashboard.png

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

  5. Dans le tableau de bord de votre application, générez le jeton d'accès à la page en sélectionnant votre page Facebook.
    Description de l'image page-access-token.png
    Description de l'illustration page-access-token.png

  6. 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.

Remarque

Les modifications apportées à l'API de profil utilisateur Facebook nécessitent que vous demandiez désormais des droits d'accès pour certains champs de profil utilisateur de toutes les applications Facebook créées avant ou après le 26 juillet 2018. Sans les droits d'accès suivants, le nom utilisateur est renseigné avec une chaîne numérique aléatoire.
  • pages_messaging

  • pages_user_locale

  • pages_user_timezone

Si vous avez créé l'application avant le 26 juillet, vous avez jusqu'au 29 janvier 2019 pour appliquer les droits d'accès. Si vous avez créé votre application après le 26 juillet 2018, vous devez ajouter ces droits d'accès dès que possible. Vous pouvez les définir dans la section Contrôle app pour Messenger de la page Messenger.

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. Sélectionnez le type de canal Facebook Messenger.
    Description de l'image create-channel-dialog-started.png
    Description de l'illustration create-channel-dialog-started.png

  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
    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 Facebook Messenger, assurez-vous que vous avez sélectionné le projet que vous avez initialement créé pour le webhook.



  2. Cliquez sur Messenger, puis choisissez Paramètres.
    Description de l'image fb-navbar.png
    Description de l'illustration fb-navbar.png

  3. Cliquez sur S'abonner aux événements pour ouvrir la boîte de dialogue Nouvel abonnement de page.

  4. Copiez l'URL de webhook obtenue à partir de la page Canaux de Digital Assistant et collez-la dans le champ d'URL de callback de la boîte de dialogue Nouvel abonnement de page.

  5. Copiez le jeton de vérification généré par Digital Assistant et collez-le dans le champ du jeton de vérification.

  6. Sous Champs d'abonnement, sélectionnez les événements de callback messages et messaging_postbacks.

    L'événement messages est déclenché chaque fois qu'un utilisateur envoie un message à votre page Facebook.

  7. Cliquez sur Vérifier et enregistrer.
  8. Abonnez-vous à la page :
    1. Dans la section Webhooks des paramètres Messenger, sélectionnez la page Facebook de votre assistant numérique (ou de votre brique autonome).

    2. Cliquez sur S'abonner.

    .

    Conseil :

    Vous devrez peut-être arrêter et redémarrer le webhook en cliquant sur Se désabonner, puis sur S'abonner.

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

Une fois la configuration du canal Facebook et de la messagerie terminée, 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 téléphone (Il s'agit d'une image de l'icône de l'application Facebook.). Une fois que vous avez localisé votre bot dans la recherche, vous êtes prêt à discuter. Vous pouvez voir les modifications apportées au flux de dialogue en temps réel.
Description de l'image test-bot.png
Description de l'illustration test-bot.png

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.