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.](images/conditional-choose.png)
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.
Argomenti
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 | pizzaSize il 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 |
dateOfBirth valore dello slot prima del 1990 |
{dateOfBirth} < "1990-10-01" |
AMAZON.State |
destinationState il valore dello slot è uguale a Washington |
{destinationState} = "washington" |
AMAZON.Country |
destinationCountry il valore dello slot non è quello degli Stati Uniti |
{destinationCountry} != "united states" |
AMAZON.FirstName |
firstName il valore dello slot è John |
{firstName} = "John" |
AMAZON.PhoneNumber |
phoneNumber il valore dello slot è 716767891932 |
{phoneNumer} = 716767891932 |
AMAZON.Percentage |
Controlla se il valore percentuale dello slot è maggiore o uguale a 78 | {percentage} >= 78 |
AMAZON.EmailAddress |
emailAddress il valore dello slot è userA@hmail.com |
{emailAddress} = "userA@hmail.com" |
AMAZON.LastName |
lastName il 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 |
streetName il valore dello slot è Boren Avenue |
{streetName} = "boren avenue" |
AMAZON.Duration |
travelDuration il 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
slotName
si 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. sessionAttribute
si riferisce al nome dell'attributo di sessione impostato dal cliente in fase di compilazione.