Slack

Voici ce qui se produit lorsque vous utilisez Slack en tant que canal pour votre assistant numérique (ou votre compétence autonome) :

  • Slack héberge votre assistant numérique par l'intermédiaire d'une application Slack.
  • Les utilisateurs clavardent avec votre assistant numérique au moyen de l'application Slack dans l'interface utilisateur de Slack.

Dans la documentation du développeur d'applications Slack, voir Création d'applications Slack.

Ci-dessous figurent les étapes de création d'un canal Slack pour Digital Assistant.

Note

Les compétences et les assistants numériques que vous exposez au moyen des canaux Slack peuvent également être inclus dans les clavardages en groupe. Voir Clavardages en groupe.

Étape 1 : Obtenir un espace de travail Slack

Pour rendre votre assistant numérique (ou robot autonome) disponible dans Slack, vous devez disposer d'un espace de travail Slack dans lequel vous êtes autorisé à créer une application Slack.

Si vous n'avez pas cet espace à votre disposition, vous pouvez en créer un. Voir la page Créer un nouvel espace de travail de Slack.

Étape 2 : Créer une application Slack

  1. Allez à la page Your Apps (Vos applications) de Slack.

  2. Cliquez sur Créer une application Slack, puis sélectionnez À partir de zéro.

  3. Dans la boîte de dialogue Create a Slack App (Créer une application Slack), remplissez les champs App Name (Nom de l'application) et Espace de travail Slack de développement, puis cliquez sur Create App (Créer une application).

    Une fois l'application créée, la page d'informations de base associée apparaît.

  4. Faites défiler la page vers le bas jusqu'à la section App Credentials (Données d'identification de l'application) et notez les valeurs des champs Client ID (ID client), Client Secret (Clé secrète client) et Signing Secret (Clé secrète de signature).

    Vous aurez besoin de ces données d'identification pour configurer le canal dans Digital Assistant.

Étape 3 : Ajouter des étendues OAuth pour l'application Slack

Vous ajoutez des étendues OAuth pour les autorisations que vous voulez accorder au robot et à l'utilisateur.

  1. Dans la section Features (Fonctions), sélectionnez OAuth and Permissions (OAuth et autorisations) dans la barre de navigation de gauche de la console Web de l'application Slack.

  2. Faites défiler la page jusqu'à la section Scopes (Étendues).

  3. Les étendues appartiennent aux catégories suivantes :
    • Étendues de jeton de robot
    • Étendues de jeton d'utilisateur
  4. Dans la section Bot Token Scopes (Étendues de jeton de robot), ajoutez les étendues correspondant aux autorisations de niveau robot que vous voulez accorder. Au minimum, les étendues de jeton de robot suivantes sont requises :

    • chat:write
    • im:history
    • users:read

    Selon les fonctions de la compétence, d'autres étendues peuvent être requises. Par exemple, les portées suivantes sont requises pour l'utilisation des fichiers joints :

    • files:read
    • files:write
  5. Dans la section User Token Scopes (Étendues de jeton d'utilisateur), ajoutez les étendues correspondant aux autorisations de niveau utilisateur que vous voulez accorder. Les étendues de jeton d'utilisateur suivantes sont requises :

    • files:read
    • files:write

Selon les exigences de votre robot, vous devrez peut-être ajouter d'autres étendues.

Étape 4 : Ajouter l'application à l'espace de travail

  1. Retournez en haut de la page OAuth & Permissions (OAuth et autorisations).

  2. Dans la section OAuth Jetons et URL de redirection, cliquez sur Ininstaller dans l'espace de travail.

    Une page s'affiche, indiquant ce que l'application pourra faire.

  3. Au bas de la page, cliquez sur Allow (Permettre).

Une fois cette étape terminée, vous pourrez voir l'application dans votre espace de travail Slack en sélectionnant Apps (Applications) dans la barre de navigation de gauche.

Étape 5 : Créer un canal dans Digital Assistant

  1. Dans Digital Assistant, cliquez sur Channels (Canaux) dans le menu de gauche, puis sélectionnez Users (Utilisateurs).

  2. Cliquez sur + Channel (Canal) pour ouvrir la boîte de dialogue Create Channel (Créer un canal).

  3. Donnez un nom à votre canal.

  4. Choisissez le type de canal Slack.

  5. Indiquez dans les champs Client ID (ID client), Client Secret (Clé secrète client) et Signing Secret (Clé secrète de signature) les valeurs obtenues lors de la création de votre application Slack.

    Vous pouvez obtenir ces valeurs dans la page de paramètres de votre application Slack.

  6. Si vous configurez le canal pour les clavardages en groupe et que vous voulez que les messages accèdent au groupe sans mentionner le nom de l'application Slack, sélectionnez Autoriser les messages sans mention d'application dans le clavardage en groupe.
  7. Cliquez sur Create (Créer).

  8. Dans la page Channels (Canaux), copiez l'URL du webhook et collez-la à un endroit pratique sur votre système. Vous en aurez besoin pour terminer la configuration de l'application Slack.

  9. Cliquez sur icône de la liste déroulante Acheminer vers... et sélectionnez l'assistant numérique ou la compétence à associer au canal.

  10. Dans la liste déroulante Route To (Acheminer vers), sélectionnez l'assistant numérique ou la compétence que vous voulez associer au canal.

  11. Activez le commutateur Channel Enabled (Canal activé).

Étape 6 : Configurer l'URL du webhook dans l'application Slack

  1. Dans la barre de navigation de gauche de la console Web de votre application Slack, sélectionnez Interactivity & Shortcuts (Interactivité et raccourcis).

  2. Activez le commutateur Interactivity (Interactivité).

  3. Dans les champs Request URL (URL de la demande) et Options Load URL (URL de chargement des options), collez l'URL du webhook générée lors de la création du canal dans Digital Assistant.

  4. Cliquez sur Save Changes (Enregistrer les modifications).

  5. Dans la barre de navigation de gauche, sélectionnez OAuth & Permissions (OAuth et autorisations).

  6. Dans le champ Redirect URLs (URL de redirection), cliquez sur Add New Redirect URL (Ajouter une nouvelle URL de redirection).

  7. Collez l'URL du webhook, ajoutez-y /authorizeV2 et cliquez sur Add (Ajouter).

  8. Cliquez sur Save URLs (Enregistrer les URL).

  9. Dans la barre de navigation de gauche, sélectionnez App Home (Accueil de l'application).

  10. Dans la section Your App’s Presence in Slack (Présence de votre application dans Slack), activez le commutateur Always Show My Bot as Online (Toujours afficher mon robot en ligne).

  11. Faites défiler la page vers le bas jusqu'à la section Afficher les onglets et activez l'option Onglet Messages.

  12. Cochez la case Autoriser les utilisateurs à envoyer des commandes et des messages Slash à partir de l'onglet des messages.

  13. Dans la barre de navigation de gauche, sélectionnez Event Subscriptions (Abonnements aux événements).

  14. Activez le commutateur Enable Events (Activer les événements).

  15. Dans le champ Request URL (URL de la demande), collez l'URL du webhook.

    Après que vous avez entré l'URL, une étiquette verte Verified (Vérifié) doit apparaître à côté de l'étiquette de l'URL de la demande.

  16. Développez la section Sabonner aux événements de robot de la page, cliquez sur Ajouter un événement d'utilisateur de robot et ajoutez l'événement suivant :

    • message.im
  17. Si vous prévoyez de rendre le robot disponible dans les clavardages en groupe, ajoutez également les événements suivants :
    • app_mention
    • message.mpim
    • message.channels
  18. Cliquez sur Save Changes (Enregistrer les modifications).

  19. Dans la barre de navigation de gauche, sélectionnez Gérer la distribution.

  20. Cliquez sur le bouton Ajouter à Slack, puis sur Autoriser.

    À ce stade, le message You've successfully installed your App in Slack (Vous avez installé votre application dans Slack) devrait apparaître.

Étape 7 : Tester le robot dans Slack

Une fois la configuration du canal Slack et de la messagerie terminée, vous pouvez tester votre robot (assistant numérique ou compétence) dans Slack.

  1. Ouvrez l'espace de travail Slack où vous avez installé l'application.

  2. Dans la barre de navigation de gauche, sélectionnez l'application associée à votre assistant numérique.

  3. Dans le champ Message, entrez du texte pour commencer à communiquer avec l'assistant numérique.
Note

Si vous voyez le message "L'envoi de messages à cette application a été désactivé" dans votre client Slack, essayez de redémarrer l'application Slack. Si cela n'active pas le champ, vérifiez que vous avez accordé toutes les autorisations nécessaires.

Applications Slack nouvelles et classiques

Depuis la version 20.6 d'Oracle Digital Assistant, la création de canaux Slack est basée sur un nouveau flux OAuth dans les applications Slack. Grâce à cette mise à jour, les étendues sont plus détaillées. Les instructions de configuration de canaux de ce guide sont basées sur le nouveau flux OAuth.

Voir https://api.slack.com/authentication/oauth-v2 pour plus de détails sur le nouveau flux OAuth.

Note

Tous les canaux créés avant Digital Assistant 20.6 et basés sur des applications Slack "classiques" continueront de fonctionner. Vous devriez toutefois prévoir de migrer ces applications Slack classiques vers de nouvelles applications Slack. Voir https://api.slack.com/authentication/migration pour plus de détails.

Fonctions prises en charge

Les canaux Slack dans Digital Assistant prennent en charge les fonctions suivantes :

  • texte (envoi et réception)
  • images (envoi et réception)
  • fichiers (prise en charge partielle pour l'envoi, complète pour la réception)
  • émojis (prise en charge partielle pour l'envoi, complète pour la réception)
  • liens
  • republications
  • propriétés personnalisées
  • composants de carrousel (mais rendus verticalement au lieu d'horizontalement)
  • composants de liste

Slack vous permet de formater les messages à l'aide du balisage. Voir https://api.slack.com/reference/surfaces/formatting dans la documentation sur l'API Slack.

Note

Si vous ciblez votre compétence sur plusieurs canaux avec des capacités de formatage et une syntaxe différentes, vous pouvez utiliser un balisage HTML de base dans vos messages. Si vous le faites, ce balisage sera automatiquement converti au format de balisage de Slack 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 Slack. Voir Formatage de texte enrichi dans les canaux.

Contraintes liées aux messages

Dans Digital Assistant, les canaux Slack présentent les contraintes suivantes liées aux messages :

  • Messages texte
    • Longueur maximale du message texte : 3000 caractères. Si la longueur dépasse 3000, le texte est fractionné en plusieurs messages.
    • Longueur maximale de l'étiquette d'action de texte : 30 caractères
    • Types d'action de texte autorisés : Republication, URL
  • Cartes horizontales
    • Prises en charge? : Non. La disposition de la carte devient verticale.
  • Cartes verticales
    • Longueur maximale du titre : 3000 caractères
    • Longueur maximale de la description : 3000 caractères
    • Longueur maximale de l'étiquette d'action de carte : 30 caractères
    • Nombre maximal de cartes : 100
    • Types d'action de carte autorisés : Republication, URL
    • Types d'action de liste de cartes autorisés : Republication, URL
  • Messages avec fichier joint
    • Pris en charge? : Oui
    • Types d'action autorisés : Republication, URL
  • Boutons d'action
    • Longueur maximale de l'étiquette d'action globale : 30 caractères
    • Types d'action globale autorisés : Republication, URL

Extensions de canal Slack

Pour les canaux Slack, vous pouvez étendre la fonctionnalité des composants de réponse commune en ajoutant des capacités propres à Slack.

Vous accédez aux extensions en utilisant l'élément channelCustomProperties des métadonnées du composant de réponse commune et en définissant les propriétés appropriées. Le code a le format suivant :

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

Voici les propriétés personnalisées disponibles pour les canaux Slack :

Nom Valeurs autorisées S'applique à... Description
dropDownPlaceholder
  • texte de paramètre fictif
  • objet imbriqué avec les propriétés suivantes, chacune acceptant une valeur de type chaîne :
    • postbackActions
    • cardPostbackActions
    • globalPostbackActions
Éléments de réponse Utilisez cette propriété pour spécifier le texte de paramètre fictif affiché dans la liste déroulante.
ephemeral
  • true
  • false
Éléments de réponse Peut être utilisé dans les clavardages en groupe pour afficher un message à un seul utilisateur, par exemple lorsque ce dernier tente de s'authentifier.
fields
  • tableau de chaînes
Éléments de réponse de type text. Les valeurs de chaîne spécifiées dans cette propriété sont affichées en tant que champs dans une disposition à deux colonnes (bureau) ou à une colonne (cellulaire).
renderActionsAsDropDown
  • true
  • false
  • objet imbriqué avec les propriétés suivantes, chacune acceptant une valeur booléenne :
    • postbackActions
    • cardPostbackActions
    • globalPostbackActions
Éléments de réponse Par défaut (si vous ne définissez pas cette propriété), les actions sont affichées :
  • sous forme de boutons s'il y a cinq actions ou moins
  • dans une liste déroulante s'il y en a au moins six

Pour afficher les actions, quel que soit leur nombre, dans une liste déroulante, réglez cette propriété à true.

Pour afficher les actions, quel que soit leur nombre, sous forme de boutons, réglez cette propriété à false.

Si vous voulez que différents types d'action de republication aient un comportement différent, vous pouvez utiliser un objet imbriqué avec des valeurs booléennes pour chacun des types d'action suivants :

  • postbackActions - Actions de republication définies au niveau de l'élément de réponse, incluant du texte, des fichiers joints et des éléments de liste de cartes.
  • cardPostbackActions - Actions de republication définies pour une carte individuelle
  • globalPostbackActions - Actions de republication définies pour des actions globales.

Pour afficher les actions dans un menu déroulant, Slack utilise un menu de sélection avec des éléments statiques. Voir https://api.slack.com/reference/messaging/block-elements#static-select.

showDatePicker
  • true
  • false
  • objet imbriqué avec les propriétés show, initialDate et placeholder
Éléments de réponse de type text. Réglez à true pour afficher un sélecteur de date à côté du message texte.

Dans la boîte de dialogue Ajouter un état, vous pouvez sélectionner le modèle Slack Date Picker pour obtenir un exemple de code permettant d'afficher un sélecteur de date de manière conditionnelle.

Voir aussi https://api.slack.com/reference/messaging/block-elements#datepicker.

showImageInAccessory
  • true
  • false
Éléments de réponse de type text. Réglez à true pour afficher l'image de la carte à droite en petit format plutôt qu'au centre en grand format.

Voici un exemple d'utilisation de la propriété personnalisée renderActionsAsDropDown.

responseItems:
- type:
 "text"
  text: "Here is a list of the UI features of the Common Response Component:"
  actions:
  - ...
  channelCustomProperties:
  - channel: "slack"
    properties:
      renderActionsAsDropDown: false

Voici un exemple d'utilisation de la propriété personnalisée renderActionsAsDropDown avec des propriétés imbriquées pour postbackActions, cardPostbackActions et globalPostbackActions.

responseItems:
- type: "text"
  text: "Here is a list of the UI features of the Common Response Component:"
  actions:
  - ...
  channelCustomProperties:
  - channel: "slack"
    properties:
      renderActionsAsDropDown:
        postbackActions: false
        cardPostbackActions: true
        globalPostbackActions: true

Pour obtenir plus d'informations générales sur channelCustomProperties, voir Extensions propres au canal.

Modaux Slack

Vous pouvez créer un bouton pour appeler une modale Slack dans un composant de réponse commune. Pour ce faire, vous devez régler la propriété d'action du bouton à system.openModal et inclure une variable nommée system.dialogPayload de type map. Les métadonnées d'action doivent ressembler à cet extrait de code :

          actions:
          - label: "Open Dialog"
            type: "postback"
            payload:
              action: "system.openModal" 
              variables:
                system.dialogPayload: ${dialogPayload}
Note

L'expression Freemarker permettant de référencer la variable system.dialogPayload ne se termine pas par .value. En effet, la variable contient un objet JSON et l'évaluation des expressions Freemarker doit toujours donner une chaîne. L'utilisation de l'expression ${dialogPayload.value} provoquerait une erreur. La conversion de l'objet JSON en chaîne se produit lorsque vous omettez .value.

La valeur de system.dialogPayload est généralement définie dans un composant personnalisé, mais peut également l'être en ligne ou à l'aide d'un composant Définir une variable.

Note

Si vous définissez la variable system.dialogPayload dans un composant personnalisé, il n'est pas nécessaire de coder de façon permanente les valeurs d'entité en options. Au lieu de cela, vous pouvez itérer toutes les valeurs d'entité d'un élément spécifique et créer dynamiquement un type d'élément de sélection avec un tableau d'options pour les valeurs autorisées.

Lorsque l'utilisateur soumet une entrée dans la boîte de dialogue Slack, le composant de réponse commune définit la transition system.dialogSubmitted pour passer à un état qui traite les valeurs soumises. Les valeurs soumises sont stockées dans des variables portant le même nom.

Il vous appartient de déterminer comment traiter les valeurs de champ soumises. Le groupe de pages Réponse commune n'effectue aucune mise à jour automatique des valeurs d'entité. Il stocke uniquement les valeurs dans des variables. Vous traiterez généralement ces valeurs dans un composant personnalisé afin d'effectuer des validations supplémentaires au besoin. Dans sa forme la plus simple, vous pouvez stocker les valeurs de champ soumises dans une variable de chaîne, puis utiliser le composant Match Entity pour mettre à jour les valeurs d'entité.

Conseil :

Dans l'éditeur de flux de dialogue (à la fois en mode visuel et en mode YAML), il existe un modèle Slack Block Kit qui contient un échantillon de métadonnées fortement imbriqué qui est typique de la sortie du générateur de trousses. Si vous avez besoin de métadonnées complexes pour un tel état et que vous voulez le rendre plus facile à lire, vous pouvez utiliser des variables de mappage au niveau du flux, coller des objets JSON entiers générés par le générateur de kits en tant que valeurs par défaut et incorporer les variables dans les métadonnées.

Pour obtenir une documentation complète sur les types d'élément pris en charge dans les données utiles de la boîte de dialogue Slack, voir https://api.slack.com/reference/block-kit/block-elements. La structure que vous spécifiez dans les données utiles de la boîte de dialogue doit être identique à celle décrite dans la documentation de Slack.

Note

La boîte de dialogue Slack prend également en charge l'envoi d'un tableau d'erreurs comme réponse lors de la soumission de la modale. Toutefois, cette fonctionnalité n'est pas prise en charge pour le moment dans les composants de réponse commune. Vous devez donc utiliser un composant personnalisé pour la validation spécifique et les commentaires des utilisateurs associés aux erreurs de validation.

Fenêtre de dialogue Slack

Note

Slack recommande maintenant d'utiliser des modaux Slack au lieu des boîtes de dialogue Slack. Voir Modaux Slack pour plus de détails sur l'intégration de modaux Slack dans votre flux de dialogue et https://api.slack.com/block-kit/dialogs-to-modals pour plus d'informations sur la conversion des dialogues en modaux.

Vous pouvez créer un bouton pour appeler une boîte de dialogue Slack dans un composant de réponse commune. Pour ce faire, vous réglez la propriété d'action du bouton à system.openDialog et incluez une variable nommée system.dialogPayload. Les métadonnées d'action doivent ressembler à cet extrait de code :

            actions:
              - label: "Edit"
                type: "postback"
                payload:
                  action: "system.openDialog"
                  variables:
                    system.dialogPayload: ${dialogPayload}
Note

L'expression Freemarker permettant de référencer la variable system.dialogPayload ne se termine pas par .value. En effet, la variable contient un objet JSON et l'évaluation des expressions Freemarker doit toujours donner une chaîne. L'utilisation de l'expression ${dialogPayload.value} provoquerait une erreur. La conversion de l'objet JSON en chaîne se produit lorsque vous omettez .value.

La valeur de system.dialogPayload est généralement définie dans un composant personnalisé, mais peut également l'être en ligne ou à l'aide d'un composant Définir une variable.

Note

Si vous définissez la variable system.dialogPayload dans un composant personnalisé, il n'est pas nécessaire de coder de façon permanente les valeurs d'entité en options. Au lieu de cela, vous pouvez itérer toutes les valeurs d'entité d'un élément spécifique et créer dynamiquement un type d'élément de sélection avec un tableau d'options pour les valeurs autorisées.

Lorsque l'utilisateur soumet une entrée dans la boîte de dialogue Slack, le composant de réponse commune définit la transition system.dialogSubmitted pour passer à un état qui traite les valeurs soumises. Les valeurs soumises sont stockées dans des variables de flux de dialogue portant le même nom.

Il vous appartient de déterminer comment traiter les valeurs de champ soumises. Le groupe de pages Réponse commune n'effectue aucune mise à jour automatique des valeurs d'entité. Il stocke uniquement les valeurs dans des variables de flux de dialogue. Vous traiterez généralement ces valeurs dans un composant personnalisé afin d'effectuer des validations supplémentaires au besoin. Dans sa forme la plus simple, vous pouvez stocker les valeurs de champ soumises dans une variable de chaîne, puis utiliser le composant Match Entity pour mettre à jour les valeurs d'entité.

Pour obtenir de la documentation sur d'autres propriétés et types d'élément pris en charge dans les données utiles de la boîte de dialogue Slack, voir https://api.slack.com/dialogs#top-level_dialog_attributes. La structure des données utiles de la boîte de dialogue doit être identique à celle décrite dans la documentation de Slack.

Note

La boîte de dialogue Slack prend également en charge l'envoi d'un tableau d'erreurs comme réponse lors de la soumission de la boîte de dialogue. Toutefois, cette fonctionnalité n'est pas prise en charge pour le moment dans les composants de réponse commune. Vous devez donc utiliser un composant personnalisé pour la validation spécifique et les commentaires des utilisateurs associés aux erreurs de validation.