Autres tâches
Voici quelques rubriques sur diverses autres tâches du concepteur de flux visuel, notamment l'authentification utilisateur, la numérotation automatique, les groupes de ressources, la création de formulaires d'entrée, la création de paramètres personnalisés, ainsi que l'importation et l'exportation de flux.
Autorisation utilisateur
A certains moments d'un flux, vous pouvez imposer l'autorisation de l'utilisateur.
Pour ce faire, procédez comme suit :
- Sur les états dans lesquels vous souhaitez appliquer l'autorisation, définissez la propriété Exige l'autorisation sur
True
. Cette propriété se trouve dans l'onglet Général de l'inspecteur de propriétés de l'état.Si un utilisateur qui atteint un tel état n'a pas encore autorisé, l'autorisation utilisant l'état OAuth est appelée, puis le flux appelle l'état qui a requis l'autorisation.
- Créez un composant d'autorisation et mettez-le en correspondance avec l'événement de transition standard Autoriser l'utilisateur du flux :
- Sélectionnez le flux, puis l'onglet Flux du flux.
- Cliquez deux fois sur la mosaïque Evénements du flux pour le développer.
- Placez le pointeur de la souris sur la mosaïque Autoriser l'utilisateur, cliquez sur le bouton Points de suspension (...) qui apparaît et sélectionnez Ajouter un état.
- Dans la catégorie Sécurité du sélecteur de modèle, sélectionnez un composant, indiquez le nom de l'état, puis cliquez sur Insérer.
Pour plus d'informations sur chacun des modèles disponibles, reportez-vous à Modèles de sécurité.
- Dans l'inspecteur de propriétés du composant, configurez les propriétés du composant, y compris ses actions de transition.
Numérotation automatique des éléments de réponse
Vous pouvez utiliser la fonction de numérotation automatique pour préfixer les boutons et les options de liste avec des chiffres dans vos réponses.
Lorsque les utilisateurs ne peuvent pas utiliser le toucher, ils peuvent toujours déclencher les actions de postback du bouton en saisissant un nombre. Cette fonctionnalité est particulièrement utile pour les canaux de texte.
Vous configurez la numérotation automatique au niveau de la brique.
Pour configurer la numérotation automatique, procédez comme suit :
- Dans la barre de navigation gauche du brique, sélectionnez
.
- Sélectionnez l'onglet Configuration.
- Définissez la valeur Activer la numérotation automatique sur les actions de postback dans les flux de tâches.
Si vous souhaitez activer la numérotation automatique pour tous les canaux, définissez la valeur sur true.
Si vous souhaitez activer la numérotation automatique uniquement pour certains canaux, fournissez une expression pour déterminer les canaux qui obtiendront 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 utilisateur
Vous pouvez vous assurer que les utilisateurs ne restent pas bloqués sur une étape d'un flux de dialogue en configurant ce composant pour limiter le nombre de fois où il répète une invite à l'utilisateur.
La propriété maxPrompts
limite le nombre de fois où les composants de réponse commune peuvent envoyer une invite à l'utilisateur lorsqu'ils ne correspondent à aucune valeur d'entrée définie 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 votre dialogue de tourner en rond lorsque les utilisateurs saisissent de façon répétée des valeurs non valides. Vous pouvez définir le nombre maximal d'invite à l'aide d'un entier. Le dialogue passe à l'état suivant si l'utilisateur saisit une valeur valide avant d'atteindre cette limite. Sinon, le dialogue passe à l'état défini par l'action cancel
.
Groupes de ressources et concepteur visuel de flux
Vous pouvez utiliser des groupes 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 de groupe de ressources via la variable rb
. Une référence à un simple message de regroupement de ressources prend l'une des deux formes suivantes :
${skill.system.rb.RB_ENTRY_NAME}
${rb.RB_ENTRY_NAME}
Conseil :
La saisie semi-automatique vous aide à sélectionner les groupes de ressources référencés dans les expressions Apache FreeMarker.Modification d'une entrée de groupe de ressources
- Dans la brique, cliquez sur
pour ouvrir le bundle de ressources.
- Sélectionnez l'onglet Configuration.
- A l'aide du champ Filtre, accédez à l'entrée à mettre à jour.
- Placez le pointeur de la souris sur la valeur de la clé et sélectionnez l'icône
qui apparaît.
- Dans le champ Texte, saisissez le message mis à jour.
- Cliquez sur Mettre à jour l'entrée.
Messages du formulaire d'entrée utilisateur
Dans les flux de dialogue, vous pouvez également créer des formulaires d'entrée.
Parfois, un formulaire de saisie est le moyen le plus rapide et le moins sujet aux erreurs de collecter des informations utilisateur. Plutôt que de soumettre les utilisateurs à une série de questions, votre brique peut les aider à fournir des entrées valides en leur envoyant des formulaires contenant des éléments d'entrée tels que des champs de saisie 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. Choisissez ensuite Créer un formulaire d'entrée.
- Pour créer la présentation, 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 Modifier les métadonnées des formulaires
editForm
:
- Les propriétés fournies pour les objets
items
,actions
etchannelCustomProperties
sont toutes propres aux objetseditFormMessagePayload
. Entre autres, cette charge utile contient des descriptions de la présentation globale du message de formulaire d'entrée reçu par l'utilisateur, des champs de formulaire (lecture seule et modifiable) et des personnalisations propres au canal pour le rendu de l'interface utilisateur spécifique à 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 appeléesubmittedFields
qui contient l'entrée utilisateur. Il s'agit d'une variable de correspondance générée lorsque vous ajoutez un état inputForm au flux de dialogue.Remarque
Selon vos besoins, vous pouvez référencer des variables individuelles ou une variable de conteneur composite à la place de la variablesubmittedFields
. items
:- Alors que le modèle fournit des propriétés pour les champs modifiables (champs à sélection unique et à sélection multiple, sélecteurs de date et d'heure, champ de saisie numérique et bascule), vous pouvez également ajouter des éléments pour le texte et lier des éléments en lecture seule.
- Les champs modifiables partagent un ensemble 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 l'intégralité du formulaire. 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 saisie dans un autre champ ou lorsqu'une valeur définie pour un champ restreint l'entrée autorisée dans un autre champ.Remarque
Microsoft Teams ne prend pas en chargeautoSubmit
. - La propriété facultative
clientErrorMessage
définit le message d'erreur spécifique au champ qui s'affiche en cas de validation côté client limitée ou en cas d'échec de la validation côté client. Par exemple, pour les messages envoyés via 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.Remarque
Cette propriété est principalement destinée aux cartes adaptatives Microsoft Teams, ce qui vous limite à 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 viaFormSubmissionMessagePayload
.channelCustomProperties
: pour prendre en charge une expérience multimode, dans laquelle l'utilisateur peut utiliser des combinaisons de texte et de voix pour remplir les champs de 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 de formulaire d'entrée en cours au lieu d'ajouter un nouveau formulaire d'entrée à la conversation.
Champs de formulaire de saisie
Elément | Exemple | Exemple de code : Variable de mapping (submittedFields) | Modifiable ? |
---|---|---|---|
Liste à sélection unique | Permet aux utilisateurs de rechercher et de sélectionner un élément dans une liste prédéfinie. Vous pouvez définir ce composant comme une liste d'options que les utilisateurs peuvent rechercher et sélectionner. |
|
Oui |
Liste de sélection multiple | Liste prenant en charge plusieurs sélections. Vous pouvez définir le style de 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 de saisir une valeur de temps comprise dans une plage spécifiée. Les propriétés maxTime et minTime du composant valident l'entrée utilisateur. |
|
Oui |
Sélecteur de date | Champ avec 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 de saisir une valeur numérique. Les propriétés minValue et maxValue valident l'entrée utilisateur. |
|
Oui |
Entrée de texte | Permet à l'utilisateur de saisir une valeur de texte. |
|
Oui |
Activer/désactiver | Présente un commutateur à bascule (ou un groupement de boutons radio, selon le canal) pour deux options. |
|
Oui |
Texte | Lire uniquement le texte en ligne |
|
Non - Lecture seule |
Lien | Un lien en ligne |
|
Non - Lecture seule |
Action | L'un des types d'action (lien, bouton ou icône). | Dans le fragment de code suivant, un lien d'action est affiché lorsque la valeur de la variable selectedOrder est insérée avec la valeur de la ligne item .
|
Non - Lecture seule |
Paramètres personnalisés
Dans votre brique, vous pouvez définir les paramètres client à référencer à partir des flux de dialogue.
Après avoir publié la brique, vous pouvez modifier les valeurs de ces paramètres (bien que vous ne puissiez pas modifier les autres détails des paramètres, ni ajouter ou supprimer des paramètres).
Les paramètres personnalisés sont présentés sous forme de variables skill.system.config
à utiliser dans la définition de flux de dialogue. Par exemple, un paramètre personnalisé nommé faHostName
est accessible avec l'expression suivante :
${skill.system.config.faHostName}
Pour pouvoir définir la valeur d'un paramètre d'une brique dans l'assistant numérique auquel vous ajoutez cette dernière, faites précéder le nom du paramètre de da.
(sans oublier le point [.]). Par exemple, vous pouvez utiliser da.faHostName
comme nom pour un paramètre de nom d'hôte.
Cette approche vous permet de définir des paramètres ayant le même nom dans plusieurs briques, d'ajouter toutes ces briques à un assistant numérique, puis de définir les valeurs des paramètres partagés à un seul endroit dans 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 la valeur du paramètre de la brique à ce dernier.
Vous ne pouvez pas définir les valeurs des paramètres personnalisés (ou toute autre variable commençant par
skill.system.config
) directement dans le flux de dialogue ou dans des composants personnalisés.
Création d'un paramètre personnalisé
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis sélectionnez votre brique.
- Dans la barre de navigation de gauche de la brique, cliquez sur
.
- Cliquez sur l'onglet Configuration.
- Cliquez sur Nouveau paramètre et remplissez les champs de la boîte de dialogue qui apparaît.
Paramètres sécurisés
Si votre brique dépend d'un paramètre dont la valeur ne doit pas être visible par d'autres personnes qui développent cette brique, ou des versions ou clones de cette brique, vous pouvez définir ce paramètre en tant que paramètre sécurisé. Ainsi, toute personne qui accède à la page Paramètres de la brique peut consulter le nom du paramètre, mais pas sa valeur.
Si vous exportez la brique, la valeur du paramètre n'est pas incluse dans l'export.
Pour créer un paramètre sécurisé, procédez comme suit :
- Dans la boîte de dialogue Créer un paramètre, sélectionnez Sécurisé dans la liste déroulante Type.
Modification de la valeur d'un paramètre personnalisé dans une brique publiée
Une fois que vous avez publié une brique, vous ne pouvez plus ajouter ni supprimer des paramètres personnalisés, mais vous pouvez modifier leurs valeurs. Pour ce faire, procédez comme suit :
-
Cliquez sur
pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis sélectionnez votre brique.
-
Dans la barre de navigation de gauche de la brique, cliquez sur
.
- Sélectionnez l'onglet Configuration.
-
Sélectionnez le paramètre, cliquez sur Modifier et saisissez la valeur mise à jour.
Si vous avez ajouté une brique comportant un paramètre 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 que le paramètre avait au moment où il a été ajouté à celui-ci. La modification de la valeur dans la brique influe uniquement sur la brique si celle-ci est utilisée de façon autonome ou ajoutée ultérieurement à un autre assistant numérique.
Définition de la valeur d'un paramètre dans l'assistant numérique
Une fois qu'une brique a été publiée et ajoutée à un assistant numérique, vous pouvez définir la valeur de tout paramètre de brique présentant le préfixe da.
(sans oublier le point [.]) dans l'assistant numérique.
Si un paramètre "da.
" portant le même nom est défini dans plusieurs briques de l'assistant numérique, la valeur de ce paramètre est partagée entre celles-ci.
Pour définir la valeur d'un paramètre dans un assistant numérique, procédez comme suit :
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Développement > Assistants numériques, puis sélectionnez l'assistant numérique.
- Dans la barre de navigation de gauche de l'assistant numérique, cliquez sur
.
- Sélectionnez l'une des briques qui utilisent le paramètre.
- Faites défiler la page jusqu'à la section Paramètres et entrez une valeur pour le paramètre.
La valeur de paramètre mise à jour sera appliquée à toutes les briques utilisant 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 Importer le flux et Exporter le flux sélectionné du menu Plus.
Flux d'exportation
-Flow
(PizzaSkill-pizza.ans.proc.veggiePizza-Flow.yaml
, par exemple). Sa syntaxe YAML est conforme au mode de dialogue visuel, et non au OBotML écrit pour les briques créées en mode YAML. Lorsque vous exportez un flux, vous exportez uniquement ce document. 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, groupes 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"
...
Importer des flux
Vous pouvez importer un flux en cliquant sur Plus > Importer le flux, puis en accédant à un document YAML formaté pour le mode Boîte de dialogue visuelle et en le sélectionnant. Ces flux peuvent être les documents YAML générés lorsque vous exportez un flux de dialogue (c'est-à-dire ceux dont le nom est au format <skill name> - <flow name> -Flow.yaml
), ou les fichiers YAML situés dans le dossier dialogs
d'un fichier ZIP exporté pour une brique créée en mode Boîte de dialogue visuelle. Vous ne pouvez pas importer un document OBotML directement. Vous devez d'abord migrer la brique.
- Vous ne pouvez pas importer un flux principal (fichier
System.MainFlow.yaml
situé dans le dossierdialogs
d'un fichier ZIP exporté pour une brique en mode Boîte de dialogue visuelle). - Vous ne pouvez pas importer un flux qui existe déjà dans la brique ou dans votre instance. Si le flux existe déjà, vous pouvez télé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" ...

