Autres tâches

Voici quelques rubriques sur diverses autres tâches du concepteur visuel de flux, 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'import et l'export de flux.

Autorisation utilisateur

A certains points d'un flux, vous pouvez souhaiter appliquer l'autorisation utilisateur.

Pour ce faire, procédez comme suit :

  1. Dans les états dans lesquels vous voulez appliquer l'autorisation, définissez la propriété Nécessite une 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'option Autoriser à l'aide de l'état OAuth est appelée, puis le flux appelle l'état requis pour l'autorisation.

  2. Créez un composant d'autorisation et mettez-le en correspondance avec l'événement de transition standard Autoriser l'utilisateur du flux :
    1. Sélectionnez le flux, puis l'onglet Flux du flux.
    2. Cliquez deux fois sur la mosaïque Evénements du flux pour le développer.
    3. Placez le pointeur de la souris sur la mosaïque Autoriser l'utilisateur, cliquez sur le bouton Points de suspension (...) qui apparaît, puis sélectionnez Ajouter un état.
    4. 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é.

    5. 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 numéros 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 :

  1. Dans la navigation de gauche de la brique, sélectionnez Icône Paramètres.
  2. Sélectionnez l'onglet Configuration.
  3. Définissez la valeur de 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, indiquez une expression pour déterminer les canaux qui 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 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 afin de 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 inviter l'utilisateur lorsqu'ils ne trouvent pas de correspondance entre la valeur d'entrée et l'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 votre dialogue de tourner en rond lorsque les utilisateurs saisissent à plusieurs reprises des valeurs non valides. Vous pouvez définir le nombre maximal d'invites à 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 toutes 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 message de regroupement de ressources simple prend l'une des deux formes suivantes :

  • ${skill.system.rb.RB_ENTRY_NAME}
  • ${rb.RB_ENTRY_NAME}
Pour plus d'informations sur les groupes de ressources, notamment sur la création des entrées de groupe de ressources elles-mêmes et l'utilisation de formats de message complexes, reportez-vous à Groupes de ressources pour les briques.

Conseil :

La saisie semi-automatique vous aide à sélectionner les groupes de ressources référencés dans les expressions FreeMarker Apache.

Modification d'une entrée de groupe de ressources

  1. Dans la brique, cliquez sur Icône Groupes de ressources pour ouvrir le groupe de ressources.
  2. Sélectionnez l'onglet Configuration.
  3. A l'aide du champ Filtre, accédez à l'entrée à mettre à jour.
  4. Placez le pointeur de la souris sur la valeur de la clé et sélectionnez l'icône Modification qui apparaît.
  5. Dans le champ Texte, saisissez le message mis à jour.
  6. 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 la façon la plus rapide et la moins sujette 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 une entrée valide 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 à bascule.
Description de l'image editable-form-example.png
Description de l'illustration editable-form-example.png

Lorsque le flux de conversation appelle un message contenant un formulaire d'entrée, vous pouvez en insérer un en ajoutant un état inputForm :
  1. 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.
  2. 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ées ResponseItems. Dans ce cas, le modèle concerne l'élément de réponse editForm.
    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'}"

Modifier le modèle de métadonnées Forms

Voici quelques points à noter à propos du modèle pour le type de réponse editForm :
  • Les propriétés fournies pour items, actions et channelCustomProperties sont toutes propres aux objets editFormMessagePayload. Entre autres choses, 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 (à la fois en lecture seule et modifiable) et des personnalisations propres au canal pour l'affichage 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 appelée submittedFields 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

    En fonction de vos besoins, vous pouvez référencer des variables individuelles ou une variable de conteneur composite à la place de la variable submittedFields.
  • 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 de saisie numérique et bascule), vous pouvez également ajouter des éléments pour les éléments de texte et de lien 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 le formulaire 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 saisie dans un autre champ ou lorsqu'un jeu de valeurs pour un champ restreint l'entrée autorisée dans un autre champ.
      Remarque

      Microsoft Teams ne prend pas en charge autoSubmit.
    • La propriété facultative clientErrorMessage définit le message d'erreur propre au champ qui s'affiche en cas de validation limitée côté client ou 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. Elle 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 la saisie utilisateur via FormSubmissionMessagePayload.
  • 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 d'entrée

Elément Exemple Exemple de code : variable de correspondance (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.

 - displayType: singleSelect
        defaultValue: "${(submittedFields.value.Type)!''}"
        name: Type
        options:
          - iteratorVariable: option
            iteratorExpression: "${expenseType.type.enumValues?split(',')}"
            label: "${option}"
            value: "${option}"
        layoutStyle: list
        label: Expense Type
        placeholder: Select expense type
        clientErrorMessage: Expense type is required
        required: true
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.

 - displayType: multiSelect
        defaultValue: "${(submittedFields.value.Attendees?join(','))!''}"
        name: Attendees
        options:
          - iteratorVariable: option
            iteratorExpression: "${attendee.type.enumValues?split(',')}"
            label: "${option}"
            value: "${option}"
        layoutStyle: list
        label: Attendees
        placeholder: Select attendees
Oui
Sélecteur d'heure Permet à l'utilisateur de saisir une valeur d'heure dans une plage spécifiée. Les propriétés maxTime et minTime du composant valident la saisie utilisateur.

      - displayType: timePicker
        defaultValue: "${(submittedFields.value.Time.value?time.xs?string['hh:mm a'])!''}"
        maxTime: "23:00"
        minTime: "13:00"
        name: Time
        label: Expense Time
        placeholder: What time was the expense?
        clientErrorMessage: This time is outside the limits.
        required: true
Oui
Sélecteur 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 la saisie utilisateur.

 - displayType: datePicker
        defaultValue: "${(submittedFields.value.Date)!''}"
        name: Date
        maxDate: "${.now?iso_utc[0..9]}"
        label: Expense Date
        placeholder: Pick a date in the past
        clientErrorMessage: Expense date is required and must be in the past.
        required: true
Oui
Entrée numérique Permet à l'utilisateur de saisir une valeur numérique. Les propriétés minValue et maxValue valident la saisie utilisateur.

     - displayType: numberInput
        minValue: 5
        serverErrorMessage: "${(amountError.value)!''}"
        maxValue: 500
        defaultValue: "${(submittedFields.value.Amount)!''}"
        name: Amount
        label: Amount
        placeholder: Enter expense amount
        clientErrorMessage: Amount is required and must be between 5 and 500.
        required: true
Oui
Entrée de texte Permet à l'utilisateur de saisir une valeur texte.

      - displayType: textInput
        multiLine: true
        defaultValue: "${(submittedFields.value.Description)!''}"
        minLength: 10
        name: Description
        label: Description
        placeholder: What is the expense justification?
        clientErrorMessage: "Description must be 10 characters minimum, 50 characters maximum."
        maxLength: 50
        required: true
      - displayType: textInput
        multiLine: true
        defaultValue: "${(submittedFields.value.Notes)!''}"
        minLength: 10
        name: Notes
        inputStyle: email
        label: Notes
        placeholder: Expense notes (optional)
        maxLength: 50
        required: false
Oui
Activer/désactiver Présente un commutateur à bascule (ou un groupe de boutons radio, selon le canal) pour deux options.

      - displayType: toggle
        defaultValue: "false"
        name: TipIncluded
        labelOn: Tip
        label: Tip Included?
        valueOff: "false"
        labelOff: No Tip
        valueOn: "true"
Oui
Texte Texte en ligne en lecture seule

      - displayType: text
        alignment: left
        value: Read our expenses policy.
Non - Lecture seule
Lien Un lien intégré

      - displayType: link
        alignment: left
        value: "http:www.oracle.com"
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 placée avec la valeur de la ligne item.
- displayType: action
  action:
    displayType: link
    payload:
      variables:
        selectedOrder: "${item.SO_CUSTOMER_PO_NUMBER}"
        action: order
       label: "${item.SO_CUSTOMER_PO_NUMBER}"
       type: postback
       label: CUSTOMER PO NUMBER
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 à l'aide de 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.

Remarque

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é

  1. Cliquez sur icône permettant d'ouvrir le menu latéral pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis sélectionnez votre brique.
  2. Dans la barre de navigation de gauche de la brique, cliquez sur icône Paramètres.
  3. Cliquez sur l'onglet Configuration.
  4. 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 :

  1. Cliquez sur icône permettant d'ouvrir le menu latéral pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis sélectionnez votre brique.

  2. Dans la barre de navigation de gauche de la brique, cliquez sur icône Paramètres.

  3. Sélectionnez l'onglet Configuration.
  4. Sélectionnez le paramètre, cliquez sur Modifier et saisissez la valeur mise à jour.

Remarque

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 :

  1. Cliquez sur icône permettant d'ouvrir le menu latéral pour ouvrir le menu latéral, sélectionnez Développement > Assistants numériques, puis sélectionnez l'assistant numérique.
  2. Dans la barre de navigation de gauche de l'assistant numérique, cliquez sur Icône Briques.
  3. Sélectionnez l'une des briques qui utilisent le paramètre.
  4. 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 Flux d'import et Exporter le flux sélectionné du menu Plus.



Flux d'export

Vous pouvez exporter un flux en le sélectionnant d'abord, puis en cliquant sur Plus > Exporter le flux sélectionné. Le flux de dialogue exporté est une représentation YAML de la boîte de dialogue. Ce document est nommé pour la brique et le flux, et ajouté à la fin avec -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 ce document uniquement. Elle ne sera accompagnée 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 de composant de sécurité.
  • Services pour différents états d'intégration de service
  • Services de traduction
  • Intentions, entités, groupes de ressources
  • Flux de tâches référencés
Une fois importé, le flux est exécuté correctement si la brique contient déjà les artefacts référencés. Sinon, l'importation génère des erreurs de validation.
Remarque

Vous pouvez exporter n'importe quel flux à l'exception du flux principal.
Voici un exemple de représentation YAML du mode Visual Dialog :
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

Pour importer un flux, cliquez sur Plus > Importer un flux, puis accédez à un document YAML formaté pour le mode Boîte de dialogue visuelle et sélectionnez-le. Il peut s'agir des documents YAML générés lorsque vous exportez un flux de dialogue (ceux dont le nom est au format <skill name> - <flow name> -Flow.yaml ), ou des fichiers YAML situés dans le dossier dialogs d'un fichier ZIP exporté pour une brique créée à l'aide du mode de dialogue visuel. Vous ne pouvez pas importer un document OBotML directement. Vous devez d'abord migrer la brique.

Il existe des exceptions aux flux qui peuvent être importés.
  • Vous ne pouvez pas importer un flux principal (fichier System.MainFlow.yaml situé dans le dossier dialogs d'un fichier ZIP exporté pour une brique Visual Dialog Mode).
  • 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.
    name: "WineryChats"
    trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375"
    type: "task"
    ...
    Toutefois, vous pouvez dupliquer le flux (Menu > Dupliquer le flux sélectionné) au lieu de modifier le YAML.
Vous pouvez importer un flux même s'il fait référence à des artefacts tels que des entités, des intentions, des groupes de ressources ou des services back-end qui ne sont pas présents dans la brique. Toutefois, ces importations entraîneront des erreurs de validationIl s'agit d'une image de l'icône d'avertissement.. Pour obtenir la liste des erreurs de validation, cliquez sur Visualiser les résultats de validation dans les messages d'erreur qui s'affichent après l'import.
Image du message d'erreur de validation du flux d'importation.