Exercice 2 : Ajout d'un nouvel énoncé (AWS CLI) - Amazon Lex V1

Si vous utilisez Amazon Lex V2, consultez plutôt le guide Amazon Lex V2.

 

Si vous utilisez Amazon Lex V1, nous vous recommandons de mettre à niveau vos robots vers Amazon Lex V2. Nous n'ajoutons plus de nouvelles fonctionnalités à la V1 et recommandons vivement d'utiliser la V2 pour tous les nouveaux robots.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exercice 2 : Ajout d'un nouvel énoncé (AWS CLI)

Pour améliorer le modèle d'apprentissage automatique qu'Amazon Lex utilise pour reconnaître les demandes de vos utilisateurs, ajoutez un autre exemple d'énoncé au bot.

L'ajout d'un nouvel énoncé se fait en quatre étapes.

  1. Utilisez l'GetIntentopération pour obtenir une intention d'Amazon Lex.

  2. Mettez à jour l'intention.

  3. Utilisez cette PutIntent opération pour renvoyer l'intention mise à jour à Amazon Lex.

  4. Utilisez les opération GetBot et PutBot pour reconstruire les bots qui utilisent cette intention.

Pour exécuter les commandes de cet exercice, vous devez connaître la région dans laquelle les commandes seront exécutées. Pour obtenir la liste des régions, consultez Quotas liés à la création de modèle .

La réponse générée par l'opération GetIntent contient le champ checksum, qui identifie une révision spécifique de l'intention. Vous devez fournir la valeur du total de contrôle lorsque vous utilisez l'opération PutIntent pour mettre à jour une intention. Dans le cas contraire, vous obtiendrez le message d'erreur suivant :

            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.
        
Note

L'exemple d'AWS CLI est mis en forme pour Unix, Linux et macOS. Pour Windows, remplacez "\$LATEST" par $LATEST et remplacez le caractère de continuation, à savoir la barre oblique inversée (\), à la fin de chaque ligne par un accent circonflexe (^).

Pour mettre à jour l'intention OrderFlowers (AWS CLI)
  1. Dans leAWS CLI, obtenez l'intention auprès d'Amazon Lex. Amazon Lex envoie la sortie vers un fichier appelé OrderFlowers-V2.json.

    aws lex-models get-intent \ --region region \ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V2.json
  2. Ouvrez OrderFlowers-V2.json dans un éditeur de texte.

    1. Recherchez les champs createdDate, lastUpdatedDate et version et supprimez-les.

    2. Ajoutez le texte suivant dans le champ sampleUtterances :

      I want to order flowers
    3. Enregistrez le fichier.

  3. Envoyez l'intention mise à jour à Amazon Lex à l'aide de la commande suivante :

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

    Amazon Lex envoie la réponse suivante :

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

Maintenant que vous avez mis à jour l'intention, reconstruisez les bots qui l'utilisent.

Pour reconstruire le bot OrderFlowersBot (AWS CLI)
  1. Dans l'AWS CLI, accédez à la définition du bot OrderFlowersBot et enregistrez-la dans un fichier à l'aide de la commande suivante :

    aws lex-models get-bot \ --region region \ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V2.json
  2. Ouvrez OrderFlowersBot-V2.json dans un éditeur de texte. Supprimez les champs createdDate, lastUpdatedDate, status et version.

  3. Dans un éditeur de texte, ajoutez la ligne suivante à la définition du bot :

    "processBehavior": "BUILD",
  4. Dans l'AWS CLI, créez une autre révision du bot en exécutant la commande suivante :

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

    La réponse du serveur est :

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

Étape suivante

Exercice 3 : Ajouter une fonction Lambda () AWS CLI