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 3: Adicione uma função do Lambda
Adicione uma função do que valide a entrada do usuário e atenda à intenção do usuário ao bot.
A adição de uma expressão função do Lambda é um processo de cinco etapas.
-
Use a função AddPermission do função do Lambda para permitir que a intenção
OrderFlowers
chame a operação Invoke do função do Lambda. -
Use a operação GetIntent para obter a intenção do &LEX;.
-
Atualize a intenção para adicionar a função do Lambda.
-
Use a operação PutIntent para enviar a intenção atualizada de volta ao Amazon Lex.
-
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 .
Se você adicionar uma função do a uma intenção antes de adicionar a permissão , verá a seguinte mensagem de erro:
An error occurred (BadRequestException) when calling the PutIntent operation: Lex is unable to access the Lambda functionLambda function ARN
in the context of intentintent ARN
. Please check the resource-based policy on the function.
A resposta da operação GetIntent
contém um campo chamado checksum
que identifica uma revisão específica da intenção. Quando usa a operação PutIntent para atualizar uma intenção, você deve fornecer o valor de soma de verificação. Se não fizer isso, você receberá a seguinte mensagem de erro:
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.
Este exercício usa a função do Lambda do Exercício 1: Criar um bot do Amazon Lex usando um esquema (Console).. Para obter instruções para criar a função do Lambda, consulte Etapa 3: Crie uma função do Lambda (console).
nota
O exemplo da AWS CLI a seguir está formatado para Unix, Linux e macOS. Para Windows, altere "\$LATEST"
para $LATEST
.
Para adicionar uma função do Lambda a uma intenção
-
Na AWS CLI, adicione a permissão
InvokeFunction
para a intençãoOrderFlowers
:aws lambda add-permission \ --region
region
\ --function-name OrderFlowersCodeHook \ --statement-id LexGettingStarted-OrderFlowersBot \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:region
:account ID
:intent:OrderFlowers:*" --source-accountaccount ID
O envia a seguinte resposta:
{ "Statement": "{\"Sid\":\"LexGettingStarted-OrderFlowersBot\", \"Resource\":\"arn:aws:lambda:
region
:account ID
:function:OrderFlowersCodeHook\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"lex.amazonaws.com\"}, \"Action\":[\"lambda:InvokeFunction\"], \"Condition\":{\"StringEquals\": {\"AWS:SourceAccount\": \"account ID
\"}, {\"AWS:SourceArn\": \"arn:aws:lex:region
:account ID
:intent:OrderFlowers:*\"}}}" } -
Obtenha a intenção do Amazon Lex. O Amazon Lex envia a saída para um arquivo chamado
OrderFlowers-V3.json
.aws lex-models get-intent \ --region
region
\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json -
Em um editor de texto, abra o
OrderFlowers-V3.json
.-
Encontre e exclua os campos
createdDate
,lastUpdatedDate
eversion
. -
Atualize o campo
fulfillmentActivity
:"fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:
region
:account ID
:function:OrderFlowersCodeHook", "messageVersion": "1.0" } } -
Salve o arquivo.
-
-
Na , envie a intenção atualizada para o :
aws lex-models put-intent \ --region
region
\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json
Agora que você atualizou a intenção, recrie o bot.
Para recriar o bot OrderFlowersBot
-
Na AWS CLI, obtenha a definição do bot
OrderFlowersBot
e salve-a em um arquivo:aws lex-models get-bot \ --region
region
\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json -
Em um editor de texto, abra
OrderFlowersBot-V3.json
. Remova os camposcreatedDate
,lastUpdatedDate
,status
eversion
. -
No editor de texto, adicione a seguinte linha à definição do bot:
"processBehavior": "BUILD",
-
Na AWS CLI, crie uma nova revisão do bot:
aws lex-models put-bot \ --region
region
\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.jsonA resposta do servidor é:
{ "status": "READY", "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 4: Publicar uma versão (AWS CLI)