Aggiungi condizioni alle conversazioni delle filiali - Amazon Lex

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiungi condizioni alle conversazioni delle filiali

Puoi utilizzare la ramificazione condizionale per controllare il percorso seguito dal cliente durante la conversazione con il bot. Puoi suddividere la conversazione in base ai valori degli slot, agli attributi della sessione, al contenuto della modalità di input e dei campi di trascrizione di input o a una risposta di Amazon Kendra.

Puoi definire fino a quattro rami. Ogni filiale presenta una condizione che deve essere soddisfatta affinché Amazon Lex V2 possa seguire quella filiale. Se nessuna delle filiali soddisfa la sua condizione, viene seguita una diramazione predefinita.

Quando definisci una filiale, definisci l'azione che Amazon Lex V2 deve intraprendere se le condizioni corrispondenti a quel ramo risultano vere. Puoi definire una delle seguenti azioni:

  • Una risposta inviata all'utente.

  • Valori degli slot da applicare agli slot.

  • Valori degli attributi di sessione per la sessione corrente.

  • La fase successiva della conversazione. Per ulteriori informazioni, consulta Creazione di percorsi di conversazione.

Puoi scegliere diverse opzioni per la ramificazione condizionale.

Ogni ramo condizionale ha un'espressione booleana che deve essere soddisfatta affinché Amazon Lex V2 segua il ramo. Esistono operatori di confronto e booleani, funzioni e operatori quantificatori che puoi utilizzare per le tue condizioni. Ad esempio, la condizione seguente restituisce true se lo slot {age} è inferiore a 24.

{age} < 24

La seguente condizione restituisce true se lo slot multivalore {toppings} contiene la parola «pineapple».

{toppings} CONTAINS "pineapple"

È possibile combinare più operatori di confronto con un operatore booleano per condizioni più complesse. Ad esempio, la seguente condizione restituisce true se il valore dello slot {make} è «Honda» e il valore dello slot {model} è «Civic». Utilizzate le parentesi per impostare l'ordine di valutazione.

({make} = "Honda") AND ({model} = "Civic")

Negli argomenti seguenti vengono forniti dettagli sugli operatori e sulle funzioni condizionali delle filiali.

Nota

Il 17 agosto 2022, Amazon Lex V2 ha rilasciato una modifica al modo in cui le conversazioni vengono gestite con l'utente. Questa modifica ti offre un maggiore controllo sul percorso che l'utente segue durante la conversazione. Per ulteriori informazioni, consulta Comprendere la gestione del flusso di conversazione. I bot creati prima del 17 agosto 2022 non supportano i messaggi di dialogo tramite codice hook, l'impostazione di valori, la configurazione dei passaggi successivi e l'aggiunta di condizioni.

Operatori di confronto

Amazon Lex V2 supporta i seguenti operatori di confronto per le condizioni:

  • Uguale a (=)

  • Non è uguale a (! =)

  • Minore di (<)

  • Minore o uguale a (< =)

  • Maggiore di (>)

  • Maggiore o uguale a (> =)

Quando si utilizza un operatore di confronto, vengono utilizzate le seguenti regole.

  • Il lato sinistro deve essere un riferimento. Ad esempio, per fare riferimento a un valore di slot, si usa. {slotName} Per fare riferimento al valore di un attributo di sessione, si utilizza[attribute]. Per la modalità di input e la trascrizione di input, si utilizza $.inputMode e$.inputTranscript.

  • Il lato destro deve essere costante e dello stesso tipo del lato sinistro.

  • Qualsiasi espressione che fa riferimento a un attributo che non è stato impostato viene considerata non valida e non viene valutata.

  • Quando si confronta uno slot multivalore, il valore utilizzato è un elenco separato da virgole di tutti i valori interpretati.

I confronti si basano sul tipo di slot del riferimento. Vengono risolti come segue:

  • Stringhe: le stringhe vengono confrontate in base alla loro rappresentazione ASCII. Il confronto distingue tra lettere maiuscole e minuscole.

  • Numeri: gli slot basati sui numeri vengono convertiti dalla rappresentazione di stringa a un numero e quindi confrontati.

  • Data/ora: gli slot basati sull'ora vengono confrontati in base alle serie temporali. La data o l'ora precedenti sono considerate inferiori. Per le durate, i periodi più brevi sono considerati inferiori.

Operatori booleani

Amazon Lex V2 supporta gli operatori booleani per combinare operatori di confronto. Ti consentono di creare istruzioni simili alle seguenti:

({number} >= 5) AND ({number} <= 10)

È possibile utilizzare i seguenti operatori booleani:

  • E (&&)

  • O (||)

  • NON (!)

Operatori quantificatori

Gli operatori quantificatori valutano gli elementi di una sequenza e determinano se uno o più elementi soddisfano la condizione.

  • CONTIENE: determina se il valore specificato è contenuto in uno slot multivalore e restituisce true in caso affermativo. Ad esempio, {toppings} CONTAINS "pineapple" restituisce true se l'utente ha ordinato dell'ananas sulla pizza.

Funzioni

Le funzioni devono essere precedute dalla stringa. fn. L'argomento della funzione è un riferimento a uno slot, un attributo di sessione o un attributo di richiesta. Amazon Lex V2 offre due funzioni per ottenere informazioni dai valori degli slot, SessionAttribute o RequestAttribute.

  • fn.Count (): conta il numero di valori in uno slot multivalore.

    Ad esempio, se lo slot {toppings} contiene il valore «pepperoni, ananas»:

    fn.COUNT({toppings}) = 2

  • fn.is_set () — il valore è vero se uno slot, un attributo di sessione o un attributo di richiesta è impostato nella sessione corrente.

    Sulla base dell'esempio precedente:

    fn.IS_SET({toppings})

  • fn.length () — value è la lunghezza del valore dell'attributo di sessione, del valore dello slot o dell'attributo slot impostato nella sessione corrente. Questa funzione non supporta slot multivalore o slot compositi.

    Esempio:

    Se lo slot {credit-card-number} contiene il valore «123456781234":

    fn.LENGTH({credit-card-number}) = 12

Esempi di espressioni condizionali

Ecco alcuni esempi di espressioni condizionali. NOTA: $. rappresenta il punto di ingresso alla risposta JSON di Amazon Lex. Il valore seguente $. verrà analizzato all'interno della risposta Amazon Lex per recuperare il valore. Le espressioni condizionali che utilizzano il blocco di riferimento del percorso JSON alle trascrizioni nella risposta Amazon Lex saranno supportate solo nelle stesse lingue che supportano i punteggi di trascrizione ASR.

Value type (Tipo di valore) Caso d'uso Espressione condizionale
Slot personalizzato pizzaSizeil valore dello slot è uguale a grande {pizzaSize} = "large"
Slot personalizzato pizzaSizeè uguale a grande o medio {pizzaSize} = "large"O {pizzaSize} = "medium"
Slot personalizzato Espressioni con () e AND/OR {pizzaType} = "pepperoni"OPPURE {pizzaSize} = "medium" OPPURE {pizzaSize} = "small"
Slot personalizzato (slot multivalore) Controlla se uno dei condimenti è Cipolla {toppings} CONTAINS "Onion"
Slot personalizzato (slot multivalore) Il numero di condimenti è superiore a 3 fn.COUNT({topping}) > 2
AMAZON.AlphaNumeric bookingIDè ABC123 {bookingID} = "ABC123"
AMAZON.Number il valore della fascia di età è superiore a 30 {age} > 30
AMAZON.Number il valore della fascia di età è pari a 10 {age} = 10
AMAZON.Date dateOfBirthvalore dello slot prima del 1990 {dateOfBirth} < "1990-10-01"
AMAZON.State destinationStateil valore dello slot è uguale a Washington {destinationState} = "washington"
AMAZON.Country destinationCountryil valore dello slot non è quello degli Stati Uniti {destinationCountry} != "united states"
AMAZON.FirstName firstNameil valore dello slot è John {firstName} = "John"
AMAZON.PhoneNumber phoneNumberil valore dello slot è 716767891932 {phoneNumer} = 716767891932
AMAZON.Percentage Controlla se il valore percentuale dello slot è maggiore o uguale a 78 {percentage} >= 78
AMAZON.EmailAddress emailAddressil valore dello slot è userA@hmail.com {emailAddress} = "userA@hmail.com"
AMAZON.LastName lastNameil valore dello slot è Doe {lastName} = "Doe"
AMAZON.City Il valore dello slot cittadino è uguale a Seattle {city} = "Seattle"
AMAZON.Time L'ora è dopo le 20:00 {time} > "20:00"
AMAZON.StreetName streetNameil valore dello slot è Boren Avenue {streetName} = "boren avenue"
AMAZON.Duration travelDurationil valore dello slot è inferiore a 2 ore {travelDuration} < P2H
modalità di input La modalità di input è vocale $.inputMode = "Speech"
Trascrizione di input La trascrizione di input è uguale a «Voglio una pizza grande» $.inputTranscript = "I want a large pizza"
Attributo di sessione controlla l'attributo customer_subscription_type [customer_subcription_type] = "yearly"
Attributo di richiesta controlla il flag retry_enabled ((retry_enabled)) = "TRUE"
Risposta di Kendra La risposta di Kendra contiene domande frequenti fn.IS_SET(((x-amz-lex:kendra-search-response-question_answer-question-1)))
Espressione condizionale con trascrizioni Espressioni condizionali che utilizzano il percorso JSON delle trascrizioni $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence > 0.5
Imposta gli attributi della sessione Imposta gli attributi della sessione utilizzando le trascrizioni, i valori del percorso JSON e dello slot [sessionAttribute] = "$.transcriptions..." AND [sessionAttribute] = "{<slotName>}"
Imposta i valori degli slot Imposta i valori degli slot utilizzando gli attributi di sessione e il percorso JSON delle trascrizioni {slotName} = [<sessionAttribute>] AND {slotName} = "$.transcriptions..."
Nota

slotNamesi riferisce al nome di uno slot nel bot Amazon Lex. Se lo slot non è risolto (nullo) o se lo slot non esiste, le assegnazioni vengono ignorate in fase di esecuzione. sessionAttributesi riferisce al nome dell'attributo di sessione impostato dal cliente in fase di compilazione.