Ejercicio 2: Añadir un nuevo enunciado (AWS CLI) - Amazon Lex V1

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.

  1. Utilice la operación GetIntent para obtener una intención de Amazon Lex.

  2. Actualice la intención.

  3. Use la operación PutIntent para enviar la intención actualizada de vuelta a Amazon Lex.

  4. Use las operaciones GetBot y PutBot para volver a compilar los bots que usen la intención.

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: Intent intent name already exists. 
            If you are trying to update intent 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)
  1. 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
  2. Abra OrderFlowers-V2.json en un editor de texto.

    1. Busque y elimine los campos createdDate, lastUpdatedDate y version.

    2. Añada la línea siguiente al campo sampleUtterances:

      I want to order flowers
    3. Guarde el archivo.

  3. 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.json

    Amazon 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)
  1. 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
  2. En un editor de texto, abra OrderFlowersBot-V2.json. Elimine los campos createdDate, lastUpdatedDate, status y version.

  3. En un editor de texto, añada la siguiente línea a la definición de bot:

    "processBehavior": "BUILD",
  4. 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.json

    La 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)