Slack
Voici ce qu'il se passe lorsque vous utilisez Slack comme canal pour votre assistant numérique (ou votre brique autonome) :
- Slack héberge l'assistant numérique par l'intermédiaire d'une application Slack.
- Les utilisateurs discutent avec votre assistant numérique via l'application Slack dans l'interface utilisateur de Slack.
Pour découvrir la documentation des développeurs Slack, reportez-vous à Création d'applications Slack
Voici la procédure de création d'un canal Slack pour Digital Assistant.
Les briques et les assistants numériques mis à disposition via les canaux Slack peuvent également être inclus dans les discussions de groupe. Reportez-vous à Discussions de groupe.
Etape 1 : obtention d'un espace de travail Slack
Pour mettre à disposition votre assistant numérique (ou votre bot autonome) dans Slack, vous devez posséder un espace de travail Slack sur lequel vous disposez de droits d'accès permettant de créer une application Slack.
Si vous ne disposez pas d'un tel espace de travail Slack, vous pouvez en créer-un. Reportez-vous à la page Créer un espace de travail de Slack.
Etape 2 : création d'une application Slack
-
Accédez à la page Vos applications de Slack.
-
Cliquez sur Créer une application Slack, puis sélectionnez De zéro.
-
Dans la boîte de dialogue Créer une application Slack, remplissez les champs Nom de l'application et Espace de travail de développement Slack, puis cliquez sur Créer une application.
Une fois l'application créée, la page Informations de base apparaît.
-
Faites défiler la page jusqu'à la section Informations d'identification de l'application et notez les valeurs ID client, Clé secrète client et Clé secrète de signature.
Vous aurez besoin de ces informations d'identification lors de la configuration du canal dans Digital Assistant.
Etape 3 : ajout de portées OAuth pour l'application Slack
Ajoutez des portées OAuth pour les droits d'accès que vous voulez accorder au bot et à l'utilisateur.
-
Dans la barre de navigation de gauche de la console Web de votre application Slack, dans la section Fonctionnalités, sélectionnez OAuth et droits d'accès.
-
Accédez à la section Portées de la page.
-
Les portées appartiennent aux catégories suivantes :
- Portées de jeton de bot
- Portées de jeton utilisateur
-
Dans la section Portées de jeton de bot, ajoutez les portées correspondant aux droits d'accès au niveau du bot à accorder. Au minimum, les portées de jeton de bot suivantes sont obligatoires :
chat:write
im:history
users:read
Selon les fonctionnalités de la brique, d'autres portées peuvent être requises. Par exemple, les portées suivantes sont requises pour l'utilisation des pièces jointes :
files:read
files:write
-
Dans la section Portées de jeton utilisateur, ajoutez les portées correspondant aux droits d'accès au niveau de l'utilisateur à accorder. Les portées de jeton utilisateur suivantes sont obligatoires :
files:read
files:write
Selon les exigences associées à votre bot, vous devrez peut-être ajouter d'autres portées.
Etape 4 : ajout de l'application à l'espace de travail
-
Revenez en haut de la page OAuth et droits d'accès.
-
Dans la section Jetons et URL de réacheminement OAuth, cliquez sur Installer sur l'espace de travail.
Une page apparaît et indique ce que l'application pourra faire.
-
En bas de la page, cliquez sur Autoriser.
Une fois cette étape terminée, vous devez voir l'application dans votre espace de travail Slack en sélectionnant Applications dans la navigation de gauche.
Etape 5 : création d'un canal dans Digital Assistant
-
Dans Digital Assistant, cliquez sur Canaux dans le menu de gauche, puis sélectionnez Utilisateurs.
-
Cliquez sur + Canal pour ouvrir la boîte de dialogue Créer un canal.
-
Nommez votre canal.
-
Choisissez Slack comme type de canal.
-
Renseignez les valeurs ID client, Clé secrète client et Clé secrète de signature que vous avez obtenues lors de la création de l'application Slack.
Vous pouvez récupérer ces valeurs sur la page Paramètres de votre application Slack.
- Si vous configurez le canal pour les discussions de groupe et que vous souhaitez que les messages soient envoyés au groupe sans mentionner le nom de l'application Slack, sélectionnez Autoriser les messages sans mention d'application dans la discussion de groupe.
-
Cliquez sur Créer.
-
Sur la page Canaux, copiez l'URL de webhook et collez-la dans un emplacement pratique de votre système. Vous en aurez besoin pour terminer la configuration de l'application Slack.
-
Cliquez sur
et sélectionnez l'assistant numérique ou la brique à associer au canal.
-
Dans la liste déroulante Acheminer vers, sélectionnez l'assistant numérique ou la brique à associer au canal.
- Activez la commande Canal activé.
Etape 6 : configuration de l'URL de webhook dans l'application Slack
-
Dans la barre de navigation de gauche de la console Web pour votre application Slack, sélectionnez Interactivité et raccourcis.
-
Activez l'option Interactivité.
-
Dans les champs URL de demande et URL de chargement d'options, collez l'URL de webhook générée lors de la création du canal dans Digital Assistant.
-
Cliquez sur Enregistrer les modifications.
-
Dans la barre de navigation de gauche, sélectionnez OAuth et droits d'accès.
-
Dans le champ URL de réacheminement, cliquez sur Ajouter une nouvelle URL de réacheminement.
-
Collez l'URL du webhook, ajoutez
/authorizeV2
et cliquez sur Ajouter. -
Cliquez sur Enregistrer les URL.
-
Dans la navigation de gauche, sélectionnez Accueil de l'application.
-
Dans la section Présence de votre application dans Slack, activez l'option Toujours afficher mon bot comme étant en ligne.
-
Faites défiler la page vers le bas pour afficher la section Afficher les onglets, puis activez la bascule Onglet Messages.
-
Cochez la case Autoriser les utilisateurs à envoyer des commandes et des messages à barres obliques à partir de l'onglet Messages.
-
Dans la barre de navigation de gauche, sélectionnez Abonnements d'événement.
-
Activez l'option Activer les événements.
-
Dans le champ URL de demande, collez l'URL de webhook.
Une fois que vous avez entré l'URL, un libellé Vérifié vert doit apparaître à côté du libellé de l'URL de demande.
-
Développez la section S'inscrire aux événements de bot de la page, cliquez sur Ajouter un événement utilisateur de bot et ajoutez l'événement suivant :
message.im
- Si vous prévoyez de rendre le bot disponible dans les discussions de groupe, ajoutez également les événements suivants :
app_mention
message.mpim
message.channels
-
Cliquez sur Enregistrer les modifications.
-
Dans la navigation de gauche, sélectionnez Gérer la distribution.
-
Cliquez sur le bouton Ajouter à Slack, puis sur Autoriser.
A ce stade, vous devez obtenir le message indiquant que vous avez installé votre application dans Slack.
Etape 7 : test de votre bot dans Slack
Une fois que vous avez fini de configurer le canal Slack et la messagerie, vous pouvez tester votre bot (assistant numérique ou brique) dans Slack.
-
Ouvrez l'espace de travail Slack sur lequel vous avez installé l'application.
-
Dans la barre de navigation de gauche, sélectionnez l'application associée à votre assistant numérique.
- Dans le champ Message, saisissez du texte pour commencer à communiquer avec l'assistant numérique.
Si le message "Envoyer des messages à cette application a été désactivé" apparaît dans votre client Slack, essayez de redémarrer l'application Slack. Si cela n'active pas le champ, vérifiez que vous avez accordé tous les droits d'accès nécessaires.
Applications Slack "nouvelles" et "classiques"
A partir de la version 20.6 d'Oracle Digital Assistant, la création de canaux Slack est basée sur un flux OAuth mis à jour dans les applications Slack. Ce flux mis à jour permet une plus grande précision au niveau des portées. Les instructions relatives à la configuration de canal dans ce manuel sont basées sur le nouveau flux OAuth.
Pour plus d'informations sur le flux OAuth mis à jour, reportez-vous à https://api.slack.com/authentication/oauth-v2.
Les canaux existants créés avant Digital Assistant 20.6 et basés sur les applications Slack "classiques" continuent de fonctionner. Toutefois, vous devez envisager de migrer ces applications Slack classiques vers de nouvelles applications Slack. Pour plus d'informations, reportez-vous à https://api.slack.com/authentication/migration.
Fonctionnalités prises en charge
Les canaux Slack de Digital Assistant prennent en charge les fonctionnalités suivantes :
- texte (envoi et réception),
- images (envoi et réception),
- fichiers (prise en charge partielle de l'envoi et complète de la réception)
- emojis (prise en charge partielle de l'envoi et complète de la réception)
- liens,
- postbacks,
- propriétés personnalisées,
- composants de carrousel (affichés verticalement au lieu d'horizontalement)
- composants de liste.
Slack vous permet de formater les messages à l'aide d'une démarque. Reportez-vous à https://api.slack.com/reference/surfaces/formatting dans la documentation de l'API Slack.
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 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. Reportez-vous à Formatage de texte enrichi dans les canaux.
Contraintes imposées aux messages
Les canaux Slack de Digital Assistant présentent les contraintes de message suivantes :
- Messages texte
- Longueur maximale du message texte : 3 000 caractères. Si la longueur est supérieure à 3 000, le texte est divisé en plusieurs messages.
- Longueur maximale du libellé d'action de texte : 30 caractères
- Types d'action de texte autorisés : postback, URL
- Cartes horizontales
- Pris en charge ? : non, la disposition de la carte est convertie en mode vertical.
- Cartes verticales
- Longueur maximale du titre : 3 000 caractères
- Longueur maximale de la description : 3 000 caractères
- Longueur maximale du libellé d'action de carte : 30 caractères
- Nombre maximal de cartes : 100
- Types d'action de carte autorisés : postback, URL
- Types d'action de liste de cartes autorisés : postback, URL
- Messages de pièce jointe
- Pris en charge ? : oui
- Types d'action autorisés : postback, URL
- Boutons d'action
- Longueur maximale du libellé d'action globale : 30 caractères
- Types d'action globale autorisés : postback, URL
Extensions de canal Slack
Pour les canaux Slack, vous pouvez étendre les fonctionnalités des composants Common Response (Réponse commune) avec des fonctions spécifiques à Slack.
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: "slack"
properties:
PROPERTY_NAME: "PROPERTY_VALUE"
...
Voici les propriétés personnalisées disponibles pour les canaux Slack :
Nom | Valeurs autorisées | Applicable à... | Description |
---|---|---|---|
dropDownPlaceholder |
|
Eléments de réponse | Cette propriété permet de spécifier le texte de l'espace réservé figurant dans la liste déroulante. |
ephemeral |
|
Eléments de réponse | Utilisable dans les discussions de groupe pour afficher un message à un seul utilisateur, par exemple lorsque cet utilisateur tente de s'authentifier. |
fields |
|
Elé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 un tableau à deux colonnes (ordinateur) ou à une seule colonne (appareil mobile). |
renderActionsAsDropDown |
|
Eléments de réponse | Par défaut (si vous ne définissez pas cette propriété), les actions suivantes sont affichées de la façon suivante :
Pour afficher les actions dans une liste déroulante indépendamment du nombre d'actions, définissez cette propriété sur Pour afficher les actions sous forme de boutons indépendamment du nombre d'actions, définissez cette propriété sur Pour adopter un comportement différent selon les différents types d'action de postback, vous pouvez utiliser un objet imbriqué comportant des valeurs booléennes pour chacun des types d'action suivants :
Pour afficher les actions dans un menu déroulant, Slack utilise un menu de sélection comportant des éléments statiques. Reportez-vous à https://api.slack.com/reference/messaging/block-elements#static-select. |
showDatePicker |
|
Eléments de réponse de type text .
|
Définissez la valeur sur 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 Sélecteur de date Slack afin d'obtenir un exemple de code pour l'affichage conditionnel d'un sélecteur de date. Reportez-vous également à https://api.slack.com/reference/messaging/block-elements#datepicker. |
showImageInAccessory |
|
Eléments de réponse de type cards .
|
Définissez cette option sur true pour afficher l'image de carte à droite sous la forme d'une petite image plutôt qu'au centre sous la forme d'une grande image.
|
L'exemple ci-dessous illustre l'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
L'exemple ci-dessous illustre l'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 des informations plus générales sur channelCustomProperties
, reportez-vous à Extensions propres à un canal.
Modaux Slack
Vous pouvez créer un bouton pour appeler un modal Slack dans un composant de réponse commune. Pour ce faire, définissez la propriété d'action du bouton sur system.openModal
et incluez une variable nommée system.dialogPayload
de type map
. Les métadonnées d'action doivent ressembler à ce fragment de code :
actions:
- label: "Open Dialog"
type: "postback"
payload:
action: "system.openModal"
variables:
system.dialogPayload: ${dialogPayload}
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 les expressions Freemarker doivent toujours être évaluées en chaînes. L'utilisation de l'expression ${dialogPayload.value}
génère une erreur. La conversion de l'objet JSON en chaîne a lieu lorsque vous omettez .value
.
La valeur de system.dialogPayload
est généralement définie dans un composant personnalisé, mais elle peut également être définie de façon incorporée ou à l'aide d'un composant Définir une variable.
Si vous définissez la variable
system.dialogPayload
dans un composant personnalisé, vous n'avez pas besoin de coder en dur les valeurs d'entité en tant qu'options. A la place, vous pouvez effectuer une itération sur toutes les valeurs d'entité d'un élément spécifique et créer dynamiquement un type d'élément sélectionné avec un tableau d'options pour les valeurs autorisées.
Lorsque l'utilisateur soumet une entrée dans le dialogue Slack, le composant 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 composant Réponse commune n'effectue aucune mise à jour automatique des valeurs d'entité. Il stocke uniquement les valeurs dans des variables. En général, vous traitez ces valeurs dans un composant personnalisé, afin de pouvoir effectuer des validations supplémentaires si nécessaire. Dans la forme la plus simple, vous pouvez stocker les valeurs de champ soumises dans une variable de chaîne, puis utiliser le composant Mettre en correspondance une entité pour mettre à jour les valeurs d'entité.
Conseil :
Dans l'éditeur de flux de dialogue (en mode de boîte de dialogue Visual et YAML), un modèle Slack Block Kit contient un échantillon de métadonnées imbriqué qui est typique de la sortie du générateur de kit. 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 mapping de niveau flux, coller des objets JSON entiers générés par le générateur de kit dans ces derniers 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 traitées de la boîte de dialogue Slack, reportez-vous à https://api.slack.com/reference/block-kit/block-elements. La structure que vous indiquez dans la charge utile de dialogue doit être identique à celle décrite dans la documentation Slack.
Le dialogue Slack prend également en charge le renvoi d'un tableau d'erreurs comme réponse lors de la soumission du modal. Toutefois, cette fonctionnalité n'est actuellement pas prise en charge dans les composants Réponse commune. A la place, vous devez gérer la validation personnalisée et les informations en retour des utilisateurs associées aux erreurs de validation dans un composant personnalisé.
Fenêtre de dialogue Slack
Slack recommande désormais d'utiliser des modaux Slack au lieu des boîtes de dialogue Slack. Pour plus d'informations sur l'intégration de modaux Slack dans votre flux de dialogue, reportez-vous à Modaux Slack et à https://api.slack.com/block-kit/dialogs-to-modals pour plus d'informations sur la conversion des boîtes de dialogue en modaux.
Vous pouvez créer un bouton permettant d'appeler une boîte de dialogue Slack dans un composant de réponse commune. Pour ce faire, définissez la propriété d'action du bouton sur system.openDialog
et incluez une variable nommée system.dialogPayload
. Les métadonnées d'action doivent ressembler à ce fragment de code :
actions:
- label: "Edit"
type: "postback"
payload:
action: "system.openDialog"
variables:
system.dialogPayload: ${dialogPayload}
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 les expressions Freemarker doivent toujours être évaluées en chaînes. L'utilisation de l'expression ${dialogPayload.value}
génère une erreur. La conversion de l'objet JSON en chaîne a lieu lorsque vous omettez .value
.
La valeur de system.dialogPayload
est généralement définie dans un composant personnalisé, mais elle peut également être définie de façon incorporée ou à l'aide d'un composant Définir une variable.
Si vous définissez la variable
system.dialogPayload
dans un composant personnalisé, vous n'avez pas besoin de coder en dur les valeurs d'entité en tant qu'options. A la place, vous pouvez effectuer une itération sur toutes les valeurs d'entité d'un élément spécifique et créer dynamiquement un type d'élément sélectionné avec un tableau d'options pour les valeurs autorisées.
Lorsque l'utilisateur soumet une entrée dans le dialogue Slack, le composant 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 composant 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. En général, vous traitez ces valeurs dans un composant personnalisé, afin de pouvoir effectuer des validations supplémentaires si nécessaire. Dans la forme la plus simple, vous pouvez stocker les valeurs de champ soumises dans une variable de chaîne, puis utiliser le composant Mettre en correspondance une entité pour mettre à jour les valeurs d'entité.
Pour obtenir la documentation sur les autres propriétés et types d'élément pris en charge dans la charge utile de dialogue Slack, reportez-vous à https://api.slack.com/dialogs#top-level_dialog_attributes. La structure de la charge utile de dialogue doit être identique à celle décrite dans la documentation Slack.
Le dialogue Slack prend également en charge le renvoi d'un tableau d'erreurs comme réponse lors de la soumission du dialogue. Toutefois, cette fonctionnalité n'est actuellement pas prise en charge dans les composants Réponse commune. A la place, vous devez gérer la validation personnalisée et les informations en retour des utilisateurs associées aux erreurs de validation dans un composant personnalisé.