Exercício 2: Adicionar um novo enunciado (AWS CLI) - Amazon Lex V1

Se você estiver usando o Amazon Lex V2, consulte o Guia do Amazon Lex V2.

 

Se você estiver usando o Amazon Lex V1, recomendamos atualizar seus bots para o Amazon Lex V2. Não estamos mais adicionando novos atributos à V1 e recomendamos o uso da V2 para todos os novos bots.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exercício 2: Adicionar um novo enunciado (AWS CLI)

Para melhorar o modelo de Machine Learning que o usa para reconhecer solicitações dos usuários, adicione outro enunciado de exemplo ao bot.

A adição de um novo enunciado é um processo de quatro etapas.

  1. Use a operação GetIntent para obter uma intenção do &LEX;.

  2. Atualize a intenção.

  3. Use a operação PutIntent para enviar a intenção atualizada de volta ao Amazon Lex.

  4. Use as operações GetBot e PutBot para recriar qualquer bot que use a intenção.

Para executar os comandos neste exercício, você precisa saber em que região os comandos serão executados. Para obter uma lista de regiões, consulte Cotas de criação de modelos .

A resposta da operação GetIntent contém um campo chamado checksum que identifica uma revisão específica da intenção. Você deve fornecer o valor de soma de verificação quando usa a operação PutIntent para atualizar uma intenção. Se não fizer isso, você receberá a seguinte mensagem de erro:

            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

O exemplo da AWS CLI a seguir está formatado para Unix, Linux e macOS. Para Windows, altere "\$LATEST" para $LATEST e substitua o caractere de continuação de barra invertida (\) no final de cada linha por um circunflexo (^).

Para atualizar a intenção OrderFlowers (AWS CLI)
  1. Na , obtenha a intenção do . O Amazon Lex envia a saída para um arquivo chamado OrderFlowers-V2.json.

    aws lex-models get-intent \ --region region \ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V2.json
  2. Em um editor de texto, abra OrderFlowers-V2.json.

    1. Encontre e exclua os campos createdDate, lastUpdatedDatee version.

    2. Adicione o seguinte ao campo sampleUtterances:

      I want to order flowers
    3. Salve o arquivo.

  3. Envie a intenção atualizada ao &LEX; com o seguinte comando:

    aws lex-models put-intent \ --region region \ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V2.json

    &LEX; envia a seguinte resposta:

    {
        "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"
    }

Agora que você atualizou a intenção, recrie qualquer bot que a utilize.

Para recriar o bot OrderFlowersBot (AWS CLI)
  1. Na AWS CLI, obtenha a definição do bot OrderFlowersBot e salve-a em um arquivo com o seguinte comando:

    aws lex-models get-bot \ --region region \ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V2.json
  2. Em um editor de texto, abra OrderFlowersBot-V2.json. Remova os campos createdDate, lastUpdatedDate, status e version.

  3. Em um editor de texto, adicione a seguinte linha à definição do bot:

    "processBehavior": "BUILD",
  4. Na AWS CLI, crie uma nova revisão do bot executando o seguinte comando para:

    aws lex-models put-bot \ --region region \ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V2.json

    A resposta do servidor é:

    {
        "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"
    }
    

Próxima etapa

Exercício 3: Adicione uma função do Lambda