Autres tâches
Voici quelques rubriques sur diverses autres tâches du concepteur de flux visuel, notamment l'authentification d'utilisateur, la numérotation automatique, les ensembles de ressources, la création de formulaires d'entrée, la création de paramètres personnalisés et l'importation et l'exportation de flux.
Autorisation d'utilisateur
À certains moments d'un flux, vous pouvez appliquer l'autorisation de l'utilisateur.
Pour ce faire, procédez comme suit :
- Dans les états où vous voulez imposer une autorisation, réglez la propriété Requires Authorization (Exige une autorisation) à
True
. Cette propriété se trouve dans l'onglet Général de l'inspecteur des propriétés de l'État.Si un utilisateur qui atteint un tel état n'a pas encore autorisé, l'état Autoriser à l'aide de OAuth est appelé, puis le flux appelle l'état qui a requis l'autorisation.
- Créez un composant d'autorisation et mappez-le à l'événement de transition standard Autoriser l'utilisateur du flux :
- Sélectionnez le flux, puis sélectionnez l'onglet Flux du flux.
- Cliquez deux fois sur la vignette Événements pour développer le flux.
- Pointez la vignette Autoriser l'utilisateur, cliquez sur le bouton (...) qui s'affiche et sélectionnez Ajouter un état.
- Dans la catégorie Sécurité du sélecteur de modèle, sélectionnez un composant, indiquez un nom pour l'état, puis cliquez sur Insérer.
Voir Modèles de sécurité pour plus de détails sur chacun des modèles disponibles.
- Dans l'inspecteur de propriétés du composant, configurez les propriétés du composant, y compris ses actions de transition.
Éléments de réponse de numérotation automatique
Vous pouvez utiliser la fonction de numérotation automatique pour préfixer les boutons et les options de liste avec des nombres dans vos réponses.
Lorsque les utilisateurs ne peuvent pas effectuer d'action tactile, ils peuvent déclencher les actions de republication en entrant un nombre. Cette fonctionnalité est particulièrement utile pour les canaux de texte.
Vous configurez la numérotation automatique au niveau de la compétence.
Pour configurer la numérotation automatique :
- Dans la navigation gauche de la compétence, sélectionnez
.
- Sélectionnez l'onglet Configuration.
- Définissez la valeur Activer la numérotation automatique pour les actions de republication dans les flux de tâches.
Si vous voulez activer la numérotation automatique pour tous les canaux, réglez la valeur à true (Vrai).
Si vous voulez activer la numérotation automatique uniquement pour certains canaux, fournissez une expression pour déterminer quels canaux recevront la numérotation automatique. Par exemple, pour activer la numérotation automatique uniquement pour les canaux Twilio, vous devez entrer :
${(system.channelType=='twilio')?then('true','false')}
Limitation du nombre d'invites d'utilisateur
Vous pouvez vous assurer que les utilisateurs ne sont pas coincés dans une étape d'un flux de dialogue en configurant ce composant afin de limiter le nombre de répétitions d'une invite pour l'utilisateur.
La propriété maxPrompts
limite le nombre de fois où les composants de réponse commune peuvent demander à l'utilisateur de ne pas faire correspondre la valeur d'entrée à une des valeurs définies pour l'entité ou le type d'entrée référencé par la propriété variable
. Vous pouvez utiliser cette propriété pour empêcher que votre boîte de dialogue tourne en rond lorsque les utilisateurs entrent de façon répétitive des valeurs non valides. Vous pouvez définir le nombre maximum d'invites avec un nombre entier . La boîte de dialogue passe à l'état suivant si l'utilisateur entre une valeur valide avant d'atteindre cette limite. Sinon, la boîte de dialogue passe à l'état défini par l'action cancel
.
Ensembles de ressources et concepteur de flux visuel
Vous pouvez utiliser des ensembles de ressources pour stocker les chaînes visibles par l'utilisateur que vous ajoutez à votre flux de dialogue.
Vous référencez les clés de message d'ensemble de ressources au moyen de la variable rb
. Une référence à un message d'ensemble de ressources simple prend l'un des deux formulaires suivants :
${skill.system.rb.RB_ENTRY_NAME}
${rb.RB_ENTRY_NAME}
Conseil :
La saisie semi-automatique vous aide à sélectionner les ensembles de ressources référencés dans les expressions Apache FreeMarker.Modifier une entrée d'ensemble de ressources
- Dans la compétence, cliquez sur
pour ouvrir l'ensemble de ressources.
- Sélectionnez l'onglet Configuration.
- À l'aide du champ Filtre, naviguez jusqu'à l'entrée à mettre à jour.
- Pointez la valeur de la clé et sélectionnez l'icône
qui s'affiche.
- Dans le champ Texte, entrez le message mis à jour.
- Cliquez sur Mettre à jour l'entrée.
Messages de formulaire d'entrée d'utilisateur
Dans les flux de dialogue, vous pouvez également créer des formulaires d'entrée.
Parfois, un formulaire d'entrée est le moyen le plus rapide et le moins sujet aux erreurs de collecte des informations utilisateur. Plutôt que de soumettre les utilisateurs à une série de questions, votre compétence peut guider les utilisateurs à fournir une entrée valide en leur envoyant des formulaires contenant des éléments d'entrée tels que des champs d'entrée de texte, des sélecteurs d'heure et de date et des commutateurs.
Description de l'illustration editable-form-example.png
- Dans la boîte de dialogue Ajouter un état, sélectionnez Messagerie utilisateur > Créer des tables et des formulaires. Sélectionnez ensuite Créer un formulaire d'entrée.
- Pour créer la disposition, les actions et les champs modifiables et en lecture seule du formulaire, cliquez d'abord sur
Edit Response Items
, puis modifiez le modèle de métadonnéesResponseItems
. Dans ce cas, le modèle concerne l'élément de réponseeditForm
.responseItems: - type: editForm title: Input Form formColumns: 2 items: - autoSubmit: false displayType: textInput defaultValue: "${(submittedFields.value.myText)!''}" multiLine: false minLength: 5 name: myText label: Text placeholder: Enter free text clientErrorMessage: Field is required and must be between 5 and 50 characters required: true maxLength: 50 - validationRegularExpression: "^[a-zA-Z\\s]*$" autoSubmit: false displayType: textInput defaultValue: "${(submittedFields.value.myTextArea)!''}" multiLine: true name: myTextArea label: Text Area placeholder: Enter free text clientErrorMessage: Numbers are not allowed - autoSubmit: false displayType: datePicker minDate: "1970-01-01" defaultValue: "${(submittedFields.value.myDate)!''}" name: myDate maxDate: "${.now?iso_utc[0..9]}" label: Date placeholder: Pick a date in the past clientErrorMessage: Date is required and must be in the past. required: true - autoSubmit: false maxTime: "12:00" displayType: timePicker minTime: "00:00" defaultValue: "${(submittedFields.value.myTime)!''}" name: myTime label: Time placeholder: Pick a time in the morning clientErrorMessage: Time must be in the morning. required: false - autoSubmit: false displayType: numberInput minValue: 5 maxValue: 500 defaultValue: "${(submittedFields.value.myNumber)!''}" name: myNumber label: Number placeholder: Enter a number between 5 and 500 clientErrorMessage: Number is required and must be between 5 and 500. required: true - autoSubmit: false displayType: singleSelect defaultValue: "${(submittedFields.value.mySingleSelect)!''}" name: mySingleSelect options: - label: Label 1 value: Value 1 - label: Label 2 value: Value 2 - label: Label 3 value: Value 3 layoutStyle: list label: Single Select clientErrorMessage: Field is required required: true - autoSubmit: false displayType: multiSelect defaultValue: "${(submittedFields.value.myMultiSelect?join(','))!''}" name: myMultiSelect options: - label: Label 1 value: Value 1 - label: Label 2 value: Value 2 - label: Label 3 value: Value 3 layoutStyle: list label: Multi Select clientErrorMessage: Field is required required: true - displayType: toggle defaultValue: "${(submittedFields.value.myToggle)!'true'}" name: myToggle labelOn: "Yes" label: Toggle valueOff: "false" labelOff: "No" valueOn: "true" actions: - label: Submit type: submitForm channelCustomProperties: - channel: "${system.channelType}" properties: replaceMessage: "${system.message.messagePayload.type == 'formSubmission'}"
Modèle de métadonnées Modifier les formulaires
editForm
:
- Les propriétés fournies pour
items
,actions
etchannelCustomProperties
sont toutes propres aux objetseditFormMessagePayload
. Ces données utiles contiennent, entre autres, des descriptions de la disposition globale du message de formulaire d'entrée reçu par l'utilisateur, des champs de formulaire (en lecture seule et modifiables) et des personnalisations propres au canal pour le rendu de l'interface utilisateur propre à la plate-forme et le comportement de soumission de formulaire. - Pour chaque élément et dans le noeud
actions
, le modèle référence une variable de niveau flux nomméesubmittedFields
qui contient l'entrée utilisateur. Il s'agit d'une variable de mappage générée lorsque vous ajoutez un état inputForm au flux de dialogue.Note
Selon vos besoins, vous pouvez référencer des variables individuelles ou une variable d'entité composite à la place de la variablesubmittedFields
. items
:- Bien que le modèle fournisse des propriétés pour les champs modifiables (champs à sélection unique et à sélection multiple, sélecteurs de date et d'heure, champ d'entrée de numéro et commutateur à bascule), vous pouvez également ajouter des éléments pour le texte et lier des éléments en lecture seule.
- Les champs modifiables partagent un jeu de propriétés communes, y compris la propriété
autoSubmit
. Il s'agit d'une propriété facultative, mais son activation (autoSubmit: true
) permet au formulaire de soumettre une valeur de champ avant que l'utilisateur n'ait réellement soumis le formulaire en entier. Vous pouvez utiliser cette propriété pour les champs interdépendants de votre formulaire. Par exemple, vous pouvez définir cette propriété lorsque l'affichage d'un champ dépend d'une valeur entrée dans un autre champ, ou lorsqu'un jeu de valeurs pour un champ restreint l'entrée autorisée dans un autre champ.Note
Microsoft Teams ne prend pas en chargeautoSubmit
. - La propriété facultative
clientErrorMessage
définit le message d'erreur propre au champ qui s'affiche lorsqu'il y a une validation côté client limitée ou lorsque la validation côté client échoue. Par exemple, pour les messages envoyés par le canal Slack, cette propriété n'est prise en charge que lorsque le formulaire se trouve dans la page de conversation. Il ne s'affiche pas lorsque le message de formulaire se trouve dans une boîte de dialogue modale.Note
Cette propriété est principalement destinée aux cartes adaptatives Microsoft Teams, qui vous limitent à utiliser un seul message pour toutes les erreurs de niveau champ.
actions
- Dans ce noeud, le modèle décrit les actions de soumission de formulaire qui soumettent l'entrée utilisateur au moyen deFormSubmissionMessagePayload
.channelCustomProperties
- Pour prendre en charge une expérience en mode multiple, où l'utilisateur peut utiliser des combinaisons de texte et de voix pour remplir les champs du formulaire avant de soumettre le formulaire, le modèle inclut la configuration de propriétéreplaceMessage
qui indique au canal client de mettre à jour le message du formulaire d'entrée courant au lieu d'ajouter un nouveau formulaire d'entrée à la conversation.
Champs de formulaire d'entrée
Élément | Exemple | Exemple de code : Variable de mappage (submittedFields) | Peut être modifié? |
---|---|---|---|
Liste à sélection unique | Permet aux utilisateurs de rechercher et de sélectionner un article dans une liste prédéfinie. Vous pouvez définir ce composant comme une liste d'options que les utilisateurs peuvent interroger et sélectionner. |
|
Oui |
Liste à choix multiples | Liste qui prend en charge plusieurs sélections. Vous pouvez définir ce composant comme une liste de sélection que les utilisateurs peuvent filtrer et sélectionner, ou comme un ensemble de cases à cocher. |
|
Oui |
Sélecteur d'heure | Permet à l'utilisateur d'entrer une valeur de temps dans un intervalle spécifié. Les propriétés maxTime et minTime du composant valident l'entrée utilisateur. |
|
Oui |
Sélectionneur de date | Champ avec un calendrier déroulant qui permet aux utilisateurs de sélectionner un jour, un mois et une année. Les propriétés maxDate et minDate du composant valident l'entrée utilisateur. |
|
Oui |
Entrée numérique | Permet à l'utilisateur d'entrer une valeur numérique. Les propriétés minValue et maxValue valident l'entrée utilisateur. |
|
Oui |
Entrée de texte | Permet à l'utilisateur d'entrer une valeur de texte. |
|
Oui |
Activer/désactiver | Présente un commutateur à bascule (ou un groupe de boutons radio, selon le canal) pour deux options. |
|
Oui |
Texte | Texte inséré en lecture seule |
|
Non - Lecture seule |
Lien | Un lien inséré |
|
Non - Lecture seule |
Action | Un des types d'action (lien, bouton ou icône). | Dans l'extrait de code suivant, un lien d'action est affiché lorsque la valeur de la variable selectedOrder est associée à la valeur de la rangée item .
|
Non - Lecture seule |
Paramètres personnalisés
Dans votre compétence, vous pouvez définir les paramètres du client à référencer à partir des flux de dialogue.
Après avoir publié la compétence, vous pouvez modifier les valeurs de ces paramètres (même si vous ne pouvez pas modifier d'autres détails de paramètre, ou ajouter ou supprimer des paramètres).
Les paramètres personnalisés sont affichés en tant que variables skill.system.config
à utiliser dans la définition du flux de dialogue. Par exemple, un paramètre personnalisé nommé faHostName
est accessible à l'aide de l'expression suivante :
${skill.system.config.faHostName}
Si vous souhaitez pouvoir définir la valeur d'un paramètre de compétence dans l'assistant numérique auquel vous ajoutez la compétence, faites précéder le nom du paramètre de da.
(point (.) compris). Par exemple, vous pouvez utiliser da.faHostName
comme nom de paramètre pour un nom d'hôte.
Grâce à cette approche, vous pouvez définir des paramètres avec les mêmes noms dans plusieurs compétences, ajouter toutes ces compétences à un assistant numérique, puis définir les valeurs des paramètres partagés à un seul endroit de l'assistant numérique.
Pour accéder à un paramètre à partir d'un composant personnalisé, définissez un paramètre d'entrée dans le composant personnalisé, puis transmettez-lui la valeur du paramètre de compétence.
Vous ne pouvez pas définir les valeurs des paramètres personnalisés (ni aucune autre variable préfixée par
skill.system.config
) directement dans le flux de dialogue ou dans des composants personnalisés.
Créer un paramètre personnalisé
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Development > Skills (Développement > Compétences) et ouvrez votre compétence.
- Dans la barre de navigation gauche de la compétence, cliquez sur
.
- Cliquez sur l'onglet Configuration.
- Cliquez sur New Parameter (Nouveau paramètre) et remplissez les champs de la boîte de dialogue qui s'affiche.
Paramètres sécurisés
Si votre compétence repose sur un paramètre dont la valeur ne doit pas être visible à d'autres personnes qui développent cette compétence, ou des versions ou clones de celle-ci, vous pouvez désigner ce paramètre comme sécurisé. Quiconque navigue ensuite jusqu'à la page Parameters (Paramètres) dans la compétence peut voir le nom du paramètre, mais pas la valeur.
Si vous exportez la compétence, la valeur du paramètre n'est pas incluse.
Pour créer un paramètre sécurisé :
- Dans la boîte de dialogue Create Parameter (Créer un paramètre), sélectionnez Secure (Sécurisé) dans la liste déroulante Type.
Modifier la valeur d'un paramètre personnalisé dans une compétence publiée
Une fois que vous avez publié une compétence, vous ne pouvez pas ajouter ou supprimer de paramètres personnalisés, mais vous pouvez modifier leur valeur. Pour ce faire :
-
Cliquez sur
pour ouvrir le menu latéral, sélectionnez Development > Skills (Développement > Compétences) et ouvrez votre compétence.
-
Dans la barre de navigation gauche de la compétence, cliquez sur
.
- Sélectionnez l'onglet Configuration.
-
Sélectionnez le paramètre, cliquez sur Edit (Modifier), puis entrez la valeur mise à jour.
Si vous avez ajouté une compétence comportant un paramètre qui est précédé de
da.
dans un assistant numérique et que vous voulez mettre à jour la valeur utilisée par ce dernier, vous devez le faire dans l'assistant numérique. Sinon, l'assistant numérique continuera d'utiliser la valeur qu'avait le paramètre lors de son ajout dans l'assistant numérique. La modification de la valeur de la compétence n'aura une incidence que sur la compétence si elle est utilisée de manière autonome ou si elle est ajoutée plus tard à un autre assistant numérique.
Définir la valeur d'un paramètre dans un assistant numérique
Une fois qu'une compétence a été publiée et ajoutée à un assistant numérique, vous pouvez définir la valeur de tous ses paramètres qui ont le préfixe da.
(point (.) compris).
Si un paramètre "da.
" portant le même nom est défini dans plusieurs compétences de l'assistant numérique, sa valeur est la même partout.
Pour définir la valeur d'un paramètre dans un assistant numérique :
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Development > Digital Assistants (Développement > Assistants numériques), puis votre assistant numérique.
- Dans la barre de navigation gauche de l'assistant numérique, cliquez sur
.
- Sélectionnez l'une des compétences qui utilise le paramètre.
- Faites défiler la page vers le bas jusqu'à la section Settings (Paramètres) et entrez une valeur pour le paramètre.
La valeur mise à jour sera appliquée à toutes les compétences qui utilisent ce paramètre.
Flux d'importation et d'exportation
Vous pouvez importer et exporter des flux de dialogue en mode visuel à l'aide des options Flux d'importation et Exporter le flux sélectionné du menu Plus.
Exporter les flux
-Flow
(PizzaSkill-pizza.ans.proc.veggiePizza-Flow.yaml
, par exemple). Sa syntaxe YAML est conforme au mode de dialogue visuel, et non à OBotML écrit pour les compétences créées en mode YAML. Lorsque vous exportez un flux, vous exportez ce document uniquement. Il ne sera accompagné d'aucune des dépendances suivantes, même si elles sont référencées.
- Service de sécurité référencé par les états des composants de sécurité.
- Services pour divers états d'intégration de service
- Services de traduction
- Intentions, entités, ensembles de ressources
- Flux de tâches référencés
Vous pouvez exporter n'importe quel flux, à l'exception du flux principal.
name: "WineryChats"
trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375"
type: "task"
version: "2.0"
interface:
returnActions:
- "done"
variables:
- name: "redWineCard"
type: "map"
system: false
defaultTransitions:
actions:
system.outOfOrderMessage: "outOfOrderMessageHandler"
system.startTaskFlow: "buildRedWineMenu"
states:
buildRedWineMenu:
component: "System.SetVariable"
properties:
variable: "redWineCard"
value:
Cabernet Sauvignon:
image: "https://cdn.pixabay.com/photo/2016/05/24/16/16/wine-1412603__340.jpg"
price: 35
description: "Flavor of dark fruits like black cherry and blackberry along with a warm spice, vanilla and black pepper"
title: "Cabernet Sauvignon"
...
Flux d'importation
Vous pouvez importer un flux en cliquant sur Plus > Flux d'importation, puis en parcourant et en sélectionnant un document YAML formaté pour le mode de dialogue visuel. Ces flux peuvent être les documents YAML générés lors de l'exportation d'un flux de dialogue (ceux dont le nom est formaté comme <skill name> - <flow name> -Flow.yaml
), ou il peut s'agir des fichiers YAML situés dans le dossier dialogs
d'un fichier ZIP exporté pour une compétence créée à l'aide du mode de dialogue visuel. Vous ne pouvez pas importer un document OBotML directement. Vous devez d'abord migrer la compétence.
- Vous ne pouvez pas importer un flux principal (fichier
System.MainFlow.yaml
situé dans le dossierdialogs
d'un fichier ZIP exporté pour une compétence en mode de dialogue visuel. - Vous ne pouvez pas importer un flux qui existe déjà dans la compétence ou dans votre instance. Si le flux existe déjà, vous pouvez charger le document YAML en modifiant la valeur du noeud
name
.
Toutefois, vous pouvez plutôt dupliquer le flux (Menu > Dupliquer le flux sélectionné) plutôt que de modifier le YAML.name: "WineryChats" trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375" type: "task" ...

