Aviso de fim do suporte: em 15 de setembro de 2025, o suporte para o Amazon Lex V1 AWS será interrompido. Após 15 de setembro de 2025, você não poderá mais acessar o console do Amazon Lex V1 nem os respectivos recursos. Se você estiver usando o Amazon Lex V2, consulte o guia do Amazon Lex V2 em vez disso.
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 (AWS CLI)
Adicione uma função do Lambda 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 AddPermissionfunção Lambda para ativar a
OrderFlowersintenção de chamar a operação Lambda Invoke. -
Use a operação GetIntent para obter a intenção do Amazon 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 Lambda a uma intenção antes de adicionar a permissão InvokeFunction, verá a seguinte mensagem de erro:
An error occurred (BadRequestException) when calling the
PutIntent operation: Lex is unable to access the Lambda
function Lambda function ARN in the context of intent
intent 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: Intent intent name already exists.
If you are trying to update intent 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 AWS CLI exemplo 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
-
No AWS CLI, adicione a
InvokeFunctionpermissão para aOrderFlowersintenção:aws lambda add-permission \ --regionregion\ --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 IDO Lambda 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 \ --regionregion\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json -
Em um editor de texto, abra o
OrderFlowers-V3.json.-
Encontre e exclua os campos
createdDate,lastUpdatedDateeversion. -
Atualize o campo
fulfillmentActivity:"fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook", "messageVersion": "1.0" } } -
Salve o arquivo.
-
-
Em AWS CLI, envie a intenção atualizada para o Amazon Lex:
aws lex-models put-intent \ --regionregion\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json
Agora que você atualizou a intenção, recrie o bot.
Para recriar o bot OrderFlowersBot
-
No AWS CLI, obtenha a definição do
OrderFlowersBotbot e salve-a em um arquivo:aws lex-models get-bot \ --regionregion\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json -
Em um editor de texto, abra
OrderFlowersBot-V3.json. Remova os camposcreatedDate,lastUpdatedDate,statuseversion. -
No editor de texto, adicione a seguinte linha à definição do bot:
"processBehavior": "BUILD", -
No AWS CLI, crie uma nova revisão do bot:
aws lex-models put-bot \ --regionregion\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.jsonA resposta do servidor é:
Próxima etapa
Exercício 4: Publicar uma versão (AWS CLI)