Altri task

Di seguito sono riportati alcuni argomenti relativi a vari altri task in Visual Flow Designer, tra cui l'autenticazione degli utenti, la numerazione automatica, i bundle di risorse, la creazione di form di input, la creazione di parametri personalizzati e l'importazione e l'esportazione dei flussi.

Autorizzazione utenti

In alcuni punti di un flusso, potrebbe essere necessario applicare l'autorizzazione utente.

A tale scopo, effettuare le operazioni riportate di seguito.

  1. Negli stati in cui si desidera applicare l'autorizzazione, impostare la proprietà Requires Authorization su True. Questa proprietà si trova nella scheda Generale della finestra di ispezione delle proprietà dello stato.

    Se un utente che raggiunge tale stato non ha ancora ottenuto l'autorizzazione, viene richiamata l'autorizzazione che utilizza lo stato OAuth e il flusso richiama lo stato che richiede l'autorizzazione.

  2. Creare un componente di autorizzazione e mapparlo all'evento di transizione standard Autorizza utente del flusso:
    1. Selezionare il flusso, quindi selezionare la scheda Flusso del flusso.
    2. Fare doppio clic sulla casella Eventi per espandere il flusso.
    3. Passare il puntatore del mouse sulla casella Autorizza utente, fare clic sul pulsante ellissi (...) visualizzato e selezionare Aggiungi stato.
    4. Nella categoria Sicurezza del selettore modello, selezionare un componente, fornire un nome per lo stato e fare clic su Inserisci.

      Per informazioni dettagliate su ciascuno dei modelli disponibili, vedere Modelli di sicurezza.

    5. Nella finestra di ispezione delle proprietà del componente, configurare le proprietà del componente, comprese le relative azioni di transizione.

Numerazione automatica degli elementi di risposta

È possibile utilizzare la funzione di numerazione automatica per anteporre i pulsanti e le opzioni di elenco con numeri nelle risposte.

Quando gli utenti non possono utilizzare i gesti dei tocchi, possono comunque attivare le azioni di postback del pulsante immettendo un numero. Questa funzione è particolarmente utile per i canali di testo.

La numerazione automatica viene configurata a livello di skill.

Per configurare la numerazione automatica:

  1. Nella navigazione a sinistra dello skill, selezionare Icona Impostazioni.
  2. Selezionare la scheda Configurazione.
  3. Impostare il valore di Abilita numerazione automatica nelle azioni di postback nei flussi di task.

    Se si desidera attivare la numerazione automatica per tutti i canali, impostare il valore su true.

    Se si desidera attivare la numerazione automatica solo per determinati canali, fornire un'espressione per determinare quali canali riceveranno la numerazione automatica. Ad esempio, per attivare la numerazione automatica solo per i canali Twilio, immettere:

    ${(system.channelType=='twilio')?then('true','false')}

Limitazione del numero di prompt utente

È possibile garantire che gli utenti non rimangano bloccati in un passo di un flusso di finestre di dialogo configurando tale componente per limitare il numero di volte in cui ripete un prompt all'utente.

La proprietà maxPrompts limita il numero di volte in cui i componenti di risposta comune possono richiedere all'utente quando non possono corrispondere al valore di input a uno qualsiasi dei valori definiti per l'entità o il tipo di input a cui fa riferimento la proprietà variable. È possibile utilizzare questa proprietà per impedire che la finestra di dialogo venga visualizzata in cerchi quando gli utenti immettono ripetutamente valori non validi. È possibile impostare il numero massimo di prompt utilizzando un numero intero . La finestra di dialogo passa allo stato successivo se l'utente immette un valore valido prima di raggiungere questo limite. In caso contrario, la finestra di dialogo passa allo stato definito dall'azione cancel.

Bundle di risorse e Visual Flow Designer

È possibile utilizzare i bundle delle risorse per memorizzare le stringhe visibili all'utente aggiunte al flusso della finestra di dialogo.

Per fare riferimento alle chiavi dei messaggi del bundle di risorse, utilizzare la variabile rb. Un riferimento a un messaggio di bundle di risorse semplice assume una delle due forme seguenti:

  • ${skill.system.rb.RB_ENTRY_NAME}
  • ${rb.RB_ENTRY_NAME}
Per ulteriori informazioni sui bundle di risorse, incluse le informazioni sulla creazione delle voci dei bundle di risorse stesse e sull'utilizzo di formati di messaggio complessi, vedere Bundle di risorse per skill.

Suggerimento

Il completamento automatico consente di selezionare i bundle di risorse a cui si fa riferimento nelle espressioni FreeMarker di Apache.

Modifica una voce bundle risorse

  1. Nella competenza, fare clic su Icona Bundle risorse per aprire il bundle delle risorse.
  2. Selezionare la scheda Configurazione.
  3. Utilizzando il campo Filtro, passare alla voce che si desidera aggiornare.
  4. Spostare il mouse sul valore del tasto e selezionare l'icona Modifica visualizzata.
  5. Nel campo Testo, immettere il messaggio aggiornato.
  6. Fare clic su Aggiorna voce.

Messaggi form input utente

Nei flussi di dialogo è inoltre possibile creare form di input.

A volte un modulo di input è il modo più rapido e meno soggetto a errori di raccolta delle informazioni utente. Anziché sottoporre gli utenti a una serie di domande, la competenza può guidare gli utenti a fornire input validi inviando loro moduli che contengono elementi di input come campi di input di testo, selettori di data e ora e switch di attivazione/disattivazione.
Di seguito è riportata la descrizione di editable-form-example.png
Descrizione della figura editable-form-example.png

Ovunque il flusso di conversazione richieda un messaggio contenente un modulo di input, è possibile inserirne uno aggiungendo uno stato inputForm:
  1. Nella finestra di dialogo Aggiungi stato, scegliere Messaggistica utente > Crea tabelle e moduli. Scegliere quindi Crea form di input.
  2. Per creare il layout, le azioni e i campi modificabili e di sola lettura del form, fare prima clic su Edit Response Items, quindi modificare il modello di metadati ResponseItems. In questo caso, il modello si riferisce all'elemento di risposta 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'}"

Modello di metadati Modifica form

Di seguito sono riportate alcune cose da notare sul modello per il tipo di risposta editForm:
  • Le proprietà fornite per gli oggetti items, actions e channelCustomProperties sono tutte specifiche degli oggetti editFormMessagePayload. Tra le altre cose, questo payload contiene le descrizioni del layout complessivo del messaggio del modulo di input ricevuto dall'utente, dei campi del modulo (sia di sola lettura che modificabili) e delle personalizzazioni specifiche del canale per il rendering dell'interfaccia utente specifico della piattaforma e il comportamento di sottomissione del modulo.
  • Per ogni elemento e all'interno del nodo actions, il modello fa riferimento a una variabile a livello di flusso denominata submittedFields che contiene l'input utente. Questa è una variabile di mappa generata quando si aggiunge uno stato inputForm al flusso della finestra di dialogo.
    Nota

    A seconda delle esigenze, è possibile fare riferimento a singole variabili o a una variabile bag composta al posto della variabile submittedFields.
  • items:
    • Sebbene il modello fornisca proprietà per i campi modificabili (campi a selezione singola e multipla, selettori di data e ora, campo di input numerico e interruttore di attivazione/disattivazione), è inoltre possibile aggiungere elementi per gli elementi di sola lettura di testo e collegamento.
    • I campi modificabili condividono un insieme di proprietà comuni, inclusa la proprietà autoSubmit. Questa è una proprietà facoltativa, ma abilitandola (autoSubmit: true) consente al modulo di inviare un valore di campo prima che l'utente abbia effettivamente inviato l'intero modulo. È possibile utilizzare questa proprietà per campi interdipendenti all'interno del modulo. Ad esempio, è possibile impostare questa proprietà quando la visualizzazione di un campo dipende da un valore immesso in un altro campo o quando un insieme di valori per un campo limita l'input consentito in un altro campo.
      Nota

      Microsoft Teams non supporta autoSubmit.
    • La proprietà facoltativa clientErrorMessage imposta il messaggio di errore specifico del campo che viene visualizzato quando la convalida lato client è limitata o quando la convalida lato client non riesce. Ad esempio, per i messaggi inviati tramite il canale Slack, questa proprietà è supportata solo quando il modulo si trova all'interno della pagina di conversazione. Non viene visualizzato quando il messaggio del modulo si trova in una finestra di dialogo modale.
      Nota

      Questa proprietà è destinata principalmente alle schede adattive Microsoft Teams, che limita l'utilizzo di un singolo messaggio per tutti i diversi errori a livello di campo.
  • actions: all'interno di questo nodo, il modello descrive le azioni di sottomissione modulo che sottomettono l'input utente tramite FormSubmissionMessagePayload.
  • channelCustomProperties: per supportare un'esperienza in più modalità, in cui l'utente potrebbe utilizzare combinazioni di testo e voce per compilare i campi del modulo prima di inviare il modulo, il modello include la configurazione della proprietà replaceMessage che indica al canale client di aggiornare il messaggio del modulo di input corrente anziché aggiungere un nuovo modulo di input alla conversazione.

Campi modulo di input

Elemento Esempio Codice di esempio: Variabile mappa (submittedFields) Modificabile?
Elenco a selezione singola Consente agli utenti di cercare e selezionare un elemento da un elenco predefinito. È possibile definire lo stile di questo componente come un elenco di opzioni per le quali gli utenti possono eseguire query e selezionare.

 - 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
Lista a selezione multipla Elenco che supporta più selezioni. È possibile applicare uno stile a questo componente come elenco di selezione da cui gli utenti possono filtrare e selezionare o come set di caselle di controllo.

 - 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
Selettore ora Consente all'utente di immettere un valore orario compreso in un intervallo specificato. Le proprietà maxTime e minTime del componente convalidano l'input utente.

      - 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
Selettore data Campo con un calendario a discesa che consente agli utenti di selezionare un giorno, un mese e un anno. Le proprietà maxDate e minDate del componente convalidano l'input utente.

 - 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
Input numerico Consente all'utente di immettere un valore numerico. Le proprietà minValue e maxValue convalidano l'input utente.

     - 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
Input testo Consente all'utente di immettere un valore di testo.

      - 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
Attiva/disattiva Presenta un interruttore di attivazione/disattivazione (o un raggruppamento di pulsanti di opzione, a seconda del canale) per due opzioni.

      - displayType: toggle
        defaultValue: "false"
        name: TipIncluded
        labelOn: Tip
        label: Tip Included?
        valueOff: "false"
        labelOff: No Tip
        valueOn: "true"
Text Testo in linea di sola lettura

      - displayType: text
        alignment: left
        value: Read our expenses policy.
No - Sola lettura
Link Un collegamento in linea

      - displayType: link
        alignment: left
        value: "http:www.oracle.com"
No - Sola lettura
Azione Uno dei tipi di azione (collegamento, pulsante o icona). Nello snippet seguente viene visualizzato un collegamento azione quando il valore della variabile selectedOrder viene inserito nello slot con il valore della riga 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
No - Sola lettura

Parametri personalizzati

Nella competenza è possibile definire i parametri cliente a cui fare riferimento dai flussi di dialogo.

Dopo aver pubblicato lo skill, è possibile modificare i valori di questi parametri, anche se non è possibile modificare altri dettagli dei parametri o aggiungere o eliminare parametri.

I parametri personalizzati vengono esposti come variabili skill.system.config da utilizzare nella definizione del flusso della finestra di dialogo. Ad esempio, è possibile accedere a un parametro personalizzato denominato faHostName con la seguente espressione:

${skill.system.config.faHostName}

Se si desidera impostare il valore del parametro di uno skill nell'assistente digitale a cui si aggiunge lo skill, anteporre il nome del parametro all'indirizzo da. (compreso il punto (.)). Ad esempio, è possibile utilizzare da.faHostName come nome di un parametro per un nome host.

Utilizzando questo approccio, è possibile definire parametri con gli stessi nomi in più skill, aggiungere tutte queste skill a un assistente digitale e quindi impostare i valori per i parametri condivisi in un'unica posizione nell'assistente digitale.

Per accedere a un parametro da un componente personalizzato, definire un parametro di input nel componente personalizzato, quindi passare il valore del parametro skill.

Nota

Impossibile impostare i valori dei parametri personalizzati (o qualsiasi altra variabile con prefisso skill.system.config direttamente nel flusso della finestra di dialogo o nei componenti personalizzati).

Crea un parametro personalizzato

  1. Fare clic su icona per aprire il menu laterale per aprire il menu laterale, selezionare Sviluppo > Skill e selezionare lo skill desiderato.
  2. Nella navigazione a sinistra dello skill, fare clic su icona Impostazioni.
  3. Fare clic sulla scheda Configurazione.
  4. Fare clic su Nuovo parametro e compilare i campi della finestra di dialogo visualizzata.

Proteggi parametri

Se lo skill si basa su un parametro, il cui valore non si desidera sia visibile agli altri che stanno sviluppando lo skill o le versioni o clonano lo skill, è possibile designare tale parametro come parametro sicuro. Chiunque accede alla pagina Impostazioni dello skill può visualizzare il nome del parametro, ma non il valore.

Se si esporta lo skill, il valore del parametro non viene incluso nell'esportazione.

Per creare un parametro sicuro:

  • Nella finestra di dialogo Crea parametro, selezionare Sicuro dall'elenco a discesa Tipo.

Modifica il valore di un parametro personalizzato in una competenza pubblicata

Dopo aver pubblicato uno skill, non è possibile aggiungere o eliminare parametri personalizzati, ma è possibile modificarne i valori. A questo scopo:

  1. Fare clic su icona per aprire il menu laterale per aprire il menu laterale, selezionare Sviluppo > Skill e selezionare lo skill desiderato.

  2. Nella navigazione a sinistra dello skill, fare clic su icona Impostazioni.

  3. Selezionare la scheda Configurazione.
  4. Selezionare il parametro, fare clic su Modifica e immettere il valore aggiornato.

Nota

Se una competenza con un parametro preceduto da da. è stata aggiunta a un assistente digitale e si desidera aggiornare il valore utilizzato dall'assistente digitale, è necessario farlo nell'assistente digitale. In caso contrario, l'assistente digitale continuerà a utilizzare il valore che il parametro aveva al momento in cui è stato aggiunto all'assistente digitale. La modifica del valore dello skill interesserà lo skill solo se viene utilizzato in modo autonomo o se viene aggiunto in seguito a un altro assistente digitale.

Impostare il valore di un parametro in Digital Assistant

Dopo che uno skill è stato pubblicato ed è stato aggiunto a un assistente digitale, è possibile impostare il valore nell'assistente digitale per uno qualsiasi dei parametri dello skill con il prefisso da. (incluso il periodo (.)).

Se un parametro "da." con lo stesso nome viene definito in più skill nell'assistente digitale, il valore di tale parametro viene condiviso tra gli skill nell'assistente digitale.

Per impostare il valore di un parametro in un assistente digitale:

  1. Fare clic su icona per aprire il menu laterale per aprire il menu laterale, selezionare Sviluppo > Assistenti digitali e selezionare l'assistente digitale.
  2. Nella navigazione a sinistra dell'assistente digitale, fare clic su Icona Competenze.
  3. Selezionare uno degli skill che utilizza il parametro.
  4. Scorrere fino alla sezione Parametri della pagina e immettere un valore per il parametro.

    Il valore del parametro aggiornato verrà applicato per tutti gli skill che utilizzano il parametro.

Flussi di importazione ed esportazione

È possibile importare ed esportare i flussi della finestra di dialogo in modalità visiva utilizzando le opzioni Flusso di importazione e Esporta flusso selezionato dal menu Altro.



Esporta flussi

È possibile esportare un flusso selezionandolo, quindi facendo clic su Altro > Esporta flusso selezionato. Il flusso della finestra di dialogo esportata è una rappresentazione YAML della finestra di dialogo. Il nome di questo documento deriva dalla competenza e dal flusso e viene aggiunto con -Flow (ad esempio, PizzaSkill-pizza.ans.proc.veggiePizza-Flow.yaml). La sintassi YAML è conforme alla modalità Visual Dialog, non alla OBotML scritta per le competenze create in modalità YAML. Quando si esporta un flusso, si esporta solo questo documento. Non sarà accompagnata da alcuna delle seguenti dipendenze, anche se vi si fa riferimento.
  • Servizio di sicurezza a cui fanno riferimento gli stati dei componenti di sicurezza.
  • Servizi per vari stati di integrazione dei servizi
  • Servizi di traduzione
  • Intenti, entità, bundle di risorse
  • Flussi di task di riferimento
Una volta importato, il flusso verrà eseguito correttamente se lo skill dispone già degli artifact di riferimento. In caso contrario, l'importazione restituirà errori di convalida.
Nota

È possibile esportare qualsiasi flusso ad eccezione del flusso principale.
Un esempio di rappresentazione YAML della modalità Visual Dialog è il seguente:
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"
...

Importa flussi

È possibile importare un flusso facendo clic su Altro > Importa flusso, quindi sfogliando e selezionando un documento YAML formattato per la modalità Visual Dialog. Questi flussi possono essere i documenti YAML generati quando si esporta un flusso di finestre di dialogo (quelli con nomi formattati come <skill name> - <flow name> -Flow.yaml ) o i file YAML che si trovano nella cartella dialogs di un file ZIP esportato per uno skill creato utilizzando la modalità Visual Dialog. Impossibile importare direttamente un documento OBotML. Prima è necessario eseguire la migrazione dello skill.

Esistono alcune eccezioni ai flussi che possono essere importati.
  • Impossibile importare un flusso principale (il file System.MainFlow.yaml che si trova nella cartella dialogs di un file ZIP esportato per una competenza in modalità Visual Dialog).
  • Impossibile importare un flusso già esistente nello skill o nell'istanza. Se il flusso esiste già, è possibile caricare il documento YAML modificando il valore del nodo name.
    name: "WineryChats"
    trackingId: "D6BFE43B-D774-412A-91F6-4582D04B3375"
    type: "task"
    ...
    È tuttavia possibile duplicare il flusso (Menu > Duplica flusso selezionato) anziché modificare YAML.
È possibile importare un flusso anche se fa riferimento ad artifact quali entità, intenti, bundle di risorse o servizi backend non presenti nello skill. Tuttavia, queste importazioni genereranno errori di convalidaImmagine dell'icona di avvertenza.. Per ottenere un elenco degli errori di convalida, fare clic su Visualizza risultati convalida nei messaggi di errore visualizzati dopo l'importazione.
Immagine del messaggio di errore di convalida del flusso di importazione.