View a markdown version of this page

Invocar funções do Lambda - Amazon Connect Customer

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

Invocar funções do Lambda

Etapa 1: criar uma função do Lambda

Durante a execução da campanha, as campanhas externas invocarão sua função Lambda com um lote de perfis e esperam uma resposta contendo resultados para cada um.

Solicitar carga

Quando sua função Lambda for invocada, ela receberá uma carga JSON com a seguinte estrutura:

Estrutura da carga útil

{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "string", "RunId": "string", "ActionId": "string", "CampaignName": "string" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "string", "CustomerData": "string", "IdempotencyToken": "string" } ] } }

Descrições de campo

InvocationMetadata
  • CampaignContext: contém metadados sobre a execução da campanha

  • CampaignId: Identificador exclusivo para a campanha

  • RunId: identificador exclusivo para essa campanha específica veiculada

  • ActionId: O identificador da ação de fluxo que está sendo executada por campanhas externas

  • CampaignName: Human-readable nome da campanha

Itens
  • CustomerProfiles: Conjunto de perfis de clientes para processar (agrupados para maior eficiência)

  • ProfileId: Identificador exclusivo para o perfil do cliente

  • CustomerData: string JSON do perfil do cliente

  • IdempotencyToken: token exclusivo para essa invocação específica para garantir um processamento idempotente

Exemplo de carga útil de solicitação

{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "campaign-12345", "RunId": "run-67890", "ActionId": "activity-abc123", "CampaignName": "Welcome Campaign" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "customer-001", "CustomerData": "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"email\":\"john.doe@example.com\"}", "IdempotencyToken": "token-xyz789" }, { "ProfileId": "customer-002", "CustomerData": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\",\"email\":\"jane.smith@example.com\"}", "IdempotencyToken": "token-abc456" } ] } }

Carga útil de resposta esperada

Sua função Lambda deve retornar uma resposta JSON com a seguinte estrutura:

Estrutura de respostas

{ "Items": { "CustomerProfiles": [ { "Id": "string", "ResultData": {} } ] } }

Descrições de campo

Itens
  • CustomerProfiles: matriz de resultados correspondente a cada perfil de cliente na solicitação

  • ID: deve corresponder ao ProfileId da solicitação

  • ResultData: objeto JSON personalizado contendo seus resultados de processamento (opcional)

Exemplo de carga útil de resposta

{ "Items": { "CustomerProfiles": [ { "Id": "customer-001", "ResultData": { "recommendedProduct": "Premium Plan", "score": 85, "nextAction": "send_email" } }, { "Id": "customer-002", "ResultData": { "error": "Invalid customer data", "errorCode": "VALIDATION_ERROR" } } ] } }

Restrições importantes

Limites de tamanho da carga

  • Tamanho máximo da carga útil de resposta: 32 KB por perfil de cliente

  • Se você ResultData exceder esse limite, a invocação será marcada como inválida

Requisitos de resposta

  • Você deve fornecer uma resposta para cada item ProfileId incluído na solicitação

  • As respostas ausentes serão tratadas como erros

  • O Id campo na resposta deve corresponder exatamente ao ProfileId da solicitação

Tratamento de erros

  • Se sua função Lambda gerar uma exceção, todos os perfis no lote serão marcados como falhados

  • Inclua detalhes do erro ResultData para fins de depuração

Tipo de invocação

  • Tipo de invocação: REQUEST_RESPONSE (síncrono)

  • Sua função deve retornar os resultados em 30 segundos, em vez de ser processada de forma assíncrona. Respostas que demoram mais de 30 segundos resultarão em falha na ação

Etapa 2: conceder às campanhas externas acesso à sua função Lambda

  1. Abra o console do Amazon Connect em https://console.aws.amazon.com/connect/.

  2. Na página Instâncias, escolha o nome da instância na coluna Alias da instância. Esse nome da instância aparece no URL que você usa para acessar o Amazon Connect.

  3. No painel de navegação, em Canais e comunicações, escolha Campanhas externas.

  4. Na seção Configurar ações personalizadas, use a caixa suspensa Funções do Lambda para selecionar a função a ser adicionada à sua instância de campanhas externas.

  5. Escolha Adicionar função do Lambda. Confirme se o ARN da função é adicionado em Lambda Functions (Funções Lambda).

Importante

O procedimento anterior do console adiciona automaticamente a política baseada em recursos necessária à função Lambda. Se você usa a AWS CLI ou o SDK, pode chamar a PutConnectInstanceIntegrationAPI com a lambda configuração de integração. Essa API adiciona automaticamente a política baseada em recursos necessária à sua função Lambda, assim como o console faz.

Se você precisar adicionar a política baseada em recursos manualmente (por exemplo, para invocações entre contas), adicione uma declaração de política que conceda ao responsável pelo connect-campaigns.amazonaws.com serviço permissão para invocar sua função. Opcionalmente, você pode adicionar um Condition elemento com AWS:SourceAccount e AWS:SourceArn para restringir o acesso à sua conta e à instância Connect Customer. Recomendamos incluir as duas condições. O exemplo a seguir mostra a declaração de política necessária.

{ "Statement": [ { "Effect": "Allow", "Principal": { "Service": "connect-campaigns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:account-id:function:function-name", "Condition": { "StringEquals": { "AWS:SourceAccount": "account-id" }, "ArnLike": { "AWS:SourceArn": "arn:aws:connect:region:account-id:instance/instance-id" } } } ] }

Para obter mais informações sobre políticas baseadas em recursos, consulte Usando políticas baseadas em recursos para o Lambda no Guia do desenvolvedor do Lambda.

Etapa 3: invocar um Lambda a partir de uma campanha

  1. Abra ou crie um fluxo do Journey.

  2. Adicione um bloco de ação personalizado (no grupo Integrar) à grade. Conecte as ramificações ao bloco e vice-versa.

  3. Escolha o título do bloco de ação personalizada para abrir sua página de propriedades.

  4. Em ARN da função, escolha na lista de funções que você adicionou à sua instância de campanhas externas.

Etapa 4: Consumir a resposta da função Lambda

Acessar variáveis diretamente

Para acessar essas variáveis diretamente em um bloco de fluxo, adicione o bloco após o bloco de ação personalizada e, em seguida, faça referência aos atributos conforme mostrado no exemplo a seguir:

RecommendedProduct - $.LambdaInvocation.ResultData.recommendedProduct Score - $.LambdaInvocation.ResultData.score

Certifique-se de que o nome especificado para o atributo de origem corresponda ao nome da chave ResultData retornada do Lambda.