Se utilizzi Amazon Lex V2, consulta invece la guida Amazon Lex V2.
Se utilizzi Amazon Lex V1, ti consigliamo di aggiornare i bot ad Amazon Lex V2. Non stiamo più aggiungendo nuove funzionalità alla V1 e consigliamo vivamente di utilizzare la V2 per tutti i nuovi bot.
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à.
Esercizio 2: Aggiungere un nuovo enunciazione (AWS CLI)
Per migliorare il modello di machine learning che Amazon Lex utilizza per riconoscere le richieste da parte degli utenti, aggiungi un'altra enunciazione di esempio al bot.
L'aggiunta di una nuova enunciazione è un processo diviso in quattro fasi.
Per eseguire i comandi di questo esercizio, devi conoscere la regione in cui verranno eseguiti i comandi. Per l'elenco delle regioni, consulta Quote per la creazione di modelli .
La risposta dell'operazione GetIntent
contiene un campo denominato checksum
che identifica una specifica revisione dell'intento. È necessario fornire il valore checksum quando si utilizza l'operazione PutIntent per aggiornare un intento. In caso contrario, verrà visualizzato il messaggio di errore seguente:
An error occurred (PreconditionFailedException) when calling the PutIntent operation: Intentintent name
already exists. If you are trying to updateintent name
you must specify the checksum.
Nota
L'esempio seguente di AWS CLI è formattato per Unix, Linux e macOS. Per Windows, modifica "\$LATEST"
in $LATEST
e sostituisci il carattere di continuazione UNIX barra rovesciata (\) al termine di ogni riga con un accento circonflesso (^).
Per aggiornare l'intento OrderFlowers
(AWS CLI)
-
NellaAWS CLI, ottieni l'intento da Amazon Lex. Amazon Lex invia l'output a un file denominato
OrderFlowers-V2.json.
aws lex-models get-intent \ --region
region
\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V2.json -
Aprire
OrderFlowers-V2.json
in un editor di testo.-
Individua e cancella i campi
createdDate
,lastUpdatedDate
eversion
. -
Aggiungi il testo seguente nel campo
sampleUtterances
:I want to order flowers
-
Salvare il file.
-
-
Invia l'intento aggiornato ad Amazon Lex con il comando seguente:
aws lex-models put-intent \ --region
region
\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V2.jsonAmazon Lex invia la risposta seguente:
{ "confirmationPrompt": { "maxAttempts": 2, "messages": [ { "content": "Okay, your {FlowerType} will be ready for pickup by {PickupTime} on {PickupDate}. Does this sound okay?", "contentType": "PlainText" } ] }, "name": "OrderFlowers", "checksum": "
checksum
", "version": "$LATEST", "rejectionStatement": { "messages": [ { "content": "Okay, I will not place your order.", "contentType": "PlainText" } ] }, "createdDate":timestamp
, "lastUpdatedDate":timestamp
, "sampleUtterances": [ "I would like to pick up flowers", "I would like to order some flowers", "I want to order flowers" ], "slots": [ { "slotType": "AMAZON.TIME", "name": "PickupTime", "slotConstraint": "Required", "valueElicitationPrompt": { "maxAttempts": 2, "messages": [ { "content": "Pick up the {FlowerType} at what time on {PickupDate}?", "contentType": "PlainText" } ] }, "priority": 3, "description": "The time to pick up the flowers" }, { "slotType": "FlowerTypes", "name": "FlowerType", "slotConstraint": "Required", "valueElicitationPrompt": { "maxAttempts": 2, "messages": [ { "content": "What type of flowers would you like to order?", "contentType": "PlainText" } ] }, "priority": 1, "slotTypeVersion": "$LATEST", "sampleUtterances": [ "I would like to order {FlowerType}" ], "description": "The type of flowers to pick up" }, { "slotType": "AMAZON.DATE", "name": "PickupDate", "slotConstraint": "Required", "valueElicitationPrompt": { "maxAttempts": 2, "messages": [ { "content": "What day do you want the {FlowerType} to be picked up?", "contentType": "PlainText" } ] }, "priority": 2, "description": "The date to pick up the flowers" } ], "fulfillmentActivity": { "type": "ReturnIntent" }, "description": "Intent to order a bouquet of flowers for pick up" }
Ora che l'intento è stato aggiornato, ricrea qualsiasi bot che lo utilizza.
Per ricreare il bot OrderFlowersBot
(AWS CLI)
-
In AWS CLI, ottieni la definizione del bot
OrderFlowersBot
e salvala in un file con il comando seguente:aws lex-models get-bot \ --region
region
\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V2.json -
In un editor di testo, apri
OrderFlowersBot-V2.json
. Rimuovi i campicreatedDate
,lastUpdatedDate
,status
eversion
. -
In un editor di testo, aggiungi la seguente riga alla definizione del bot:
"processBehavior": "BUILD",
-
In AWS CLI, crea una nuova revisione del bot eseguendo il comando riportato di seguito:
aws lex-models put-bot \ --region
region
\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V2.jsonLa risposta del server è:
{ "status": "BUILDING", "intents": [ { "intentVersion": "$LATEST", "intentName": "OrderFlowers" } ], "name": "OrderFlowersBot", "locale": "en-US", "checksum": "
checksum
", "abortStatement": { "messages": [ { "content": "Sorry, I'm not able to assist at this time", "contentType": "PlainText" } ] }, "version": "$LATEST", "lastUpdatedDate":timestamp
, "createdDate":timestamp
"clarificationPrompt": { "maxAttempts": 2, "messages": [ { "content": "I didn't understand you, what would you like to do?", "contentType": "PlainText" } ] }, "voiceId": "Salli", "childDirected": false, "idleSessionTTLInSeconds": 600, "description": "Bot to order flowers on the behalf of a user" }
Fase successiva
Esercizio 3: Aggiungere una funzione Lambda (AWS CLI)