Si utiliza Amazon Lex V2, consulte la guía de Amazon Lex V2.
Si utiliza Amazon Lex V1, le recomendamos que actualice los bots a Amazon Lex V2. Hemos dejado de agregar nuevas características a V1, por lo que recomendamos encarecidamente utilizar V2 para todos los nuevos bots.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ejercicio 2: Añadir un nuevo enunciado (AWS CLI)
Con el fin de mejorar el modelo de machine learning que Amazon Lex utiliza para reconocer las solicitudes de los usuarios, agregue otro enunciado de muestra al bot.
El proceso de añadir un nuevo enunciado consta de cuatro pasos.
Para ejecutar los comandos de este ejercicio, debe conocer la región donde se ejecutarán los comandos. Para obtener una lista de regiones, consulte Cuotas de creación de modelos .
La respuesta de la operación GetIntent
contiene un campo llamado checksum
que identifica una revisión específica de la intención. Debe proporcionar el valor de la suma de comprobación cuando utilice la operación PutIntent para actualizar una intención. Si no, recibirá el siguiente mensaje de error:
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
El ejemplo de AWS CLI siguiente tiene formato para Unix, Linux y macOS. Para Windows, cambie "\$LATEST"
por $LATEST
y sustituya la barra diagonal invertida (\) utilizada como carácter de continuación al final de cada línea por el signo de intercalación (^).
Para actualizar la intención OrderFlowers
(AWS CLI)
-
En la AWS CLI, obtenga la intención de Amazon Lex. Amazon Lex envía el resultado a un archivo llamado
OrderFlowers-V2.json.
aws lex-models get-intent \ --region
region
\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V2.json -
Abra
OrderFlowers-V2.json
en un editor de texto.-
Busque y elimine los campos
createdDate
,lastUpdatedDate
yversion
. -
Añada la línea siguiente al campo
sampleUtterances
:I want to order flowers
-
Guarde el archivo.
-
-
Envíe la intención actualizada a Amazon Lex con el siguiente comando:
aws lex-models put-intent \ --region
region
\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V2.jsonAmazon Lex envía la siguiente respuesta:
{ "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" }
Ahora que ha actualizado la intención, recompile los bots que la usen.
Para recompilar el bot OrderFlowersBot
(AWS CLI)
-
En la AWS CLI, obtenga la definición del bot
OrderFlowersBot
y guárdela en un archivo con el comando siguiente:aws lex-models get-bot \ --region
region
\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V2.json -
En un editor de texto, abra
OrderFlowersBot-V2.json
. Elimine los camposcreatedDate
,lastUpdatedDate
,status
yversion
. -
En un editor de texto, añada la siguiente línea a la definición de bot:
"processBehavior": "BUILD",
-
En la AWS CLI, compile una nueva revisión del bot ejecutando el siguiente comando:
aws lex-models put-bot \ --region
region
\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V2.jsonLa respuesta del servidor es:
{ "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" }
Paso siguiente
Ejercicio 3: adición de una función de Lambda (AWS CLI)