O uso doAWS LambdaCom o Amazon Lex
É possível usar o Amazon Lex para integrar um bot de conversação à sua aplicação. O bot do Amazon Lex fornece uma interface de conversação com seus usuários. O Amazon Lex fornece integração pré-criada com o Lambda, que permite usar uma função do Lambda com o bot do Amazon Lex.
Ao configurar um bot do Amazon Lex, é possível especificar uma função do Lambda para executar validação, atendimento ou ambos. Para validação, o Amazon Lex invoca a função do Lambda após cada resposta do usuário. A função do Lambda pode validar a resposta e fornecer feedback corretivo para o usuário, se necessário. Para atendimento, o Amazon Lex invoca a função do Lambda para atender à solicitação do usuário depois que o bot coleta com êxito todas as informações necessárias e recebe a confirmação do usuário.
É possível gerenciar a simultaneidade da função do Lambda para controlar o número máximo de conversas simultâneas do bot atendidas. A API do Amazon Lex retornará um código de status HTTP 429 — Too Many Requests (Excesso de solicitações) se a função estiver na simultaneidade máxima.
A API retornará um código de status HTTP 424 — Dependency Failed Exception (Exceção com falha de dependência) se a função do Lambda lançar uma exceção.
O bot do Amazon Lex invoca a função do Lambda de forma síncrona. O parâmetro de evento contém informações sobre o bot e o valor de cada slot na caixa de diálogo. Para obter as definições dos campos de evento e de resposta, consulte Lambda event and response format (Formato de evento e resposta do Lambda) no Guia do desenvolvedor do Amazon Lex. O invocationSource
parâmetro no evento de mensagem do Amazon Lex indica se a função Lambda deve validar as entradas (DialogCodeHook) ou cumprir a intenção (). FulfillmentCodeHook
Para obter um exemplo de tutorial que mostra como usar o Lambda com o Amazon Lex, consulte Exercício 1: criar um bot do Amazon Lex usando um esquema no Guia do desenvolvedor do Amazon Lex.
Funções e permissões
É necessário configurar uma função vinculada ao serviço comoFunção de execução do. O Amazon Lex define a função vinculada ao serviço com permissões predefinidas. Ao criar um bot do Amazon Lex usando o console, a função vinculada ao serviço é criada automaticamente. Para criar um perfil vinculado ao serviço com a AWS CLI, use o comando create-service-linked-role
.
aws iam create-service-linked-role --aws-service-name lex.amazonaws.com
Esse comando cria a função a seguir.
{ "Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "lex.amazonaws.com" } } ] }, "RoleName": "AWSServiceRoleForLexBots", "Path": "/aws-service-role/lex.amazonaws.com/", "Arn": "arn:aws:iam::account-id:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" }
Se a função do Lambda usar outros serviços da AWS, será necessário adicionar as permissões correspondentes à função vinculada ao serviço.
Você usa uma política de permissões baseada em recursos para permitir que o bot do Amazon Lex invoque a função do Lambda. Se você usar o console do Amazon Lex, a política de permissões será criada automaticamente. Na AWS CLI, use o comando add-permission
do Lambda para definir a permissão.
Para o Amazon Lex V2, execute o comando a seguir. No ARN de origem, substitua us-east-1
pela Região da AWS em que seu bot do Amazon Lex está, e use o número e alias do bit da sua própria Conta da AWS.
aws lambda add-permission \ --function-name
LexCodeHook
\ --statement-idLexInvoke-MyBot
\ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1
:123456789012
:bot-alias/MYBOT
/MYBOTALIAS
"
Você também pode usar o Amazon Lex V1 para invocar uma função do Lambda. Para o Amazon Lex V1, execute o comando a seguir. No ARN de origem, substitua us-east-1
pela Região da AWS em que a intenção do Amazon Lex está e use o número e intenção da sua própria Conta da AWS.
aws lambda add-permission \ --function-name
LexCodeHook
\ --statement-idLexInvoke-MyIntent
\ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1
:123456789012
ID:intent:MYINTENT
:*"
Observe que o Amazon Lex V1 não recebe mais manutenção. Recomendamos que você use o Amazon Lex V2.