Invocar funções AWS Lambda - Amazon Connect

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 AWS Lambda

O Amazon Connect pode interagir com seus próprios sistemas e tomar diferentes caminhos em fluxos dinamicamente. Para conseguir isso, invoque AWS Lambda funções em um fluxo, busque os resultados e chame seus próprios serviços ou interaja com outros armazenamentos de AWS dados ou serviços. Para mais informações, consulte o Guia do desenvolvedor do AWS Lambda.

Para invocar uma função do Lambda de um fluxo, conclua as tarefas a seguir.

Criar uma função do Lambda

Crie uma função do Lambda, usando qualquer tempo de execução, e configure-a. Para obter mais informações, consulte Conceitos básicos do Lambda no Guia do desenvolvedor do AWS Lambda .

Se você criar a função do Lambda na mesma região que a sua central de atendimento, poderá usar o console do Amazon Connect para adicionar a função do Lambda à sua instância, conforme descrito na próxima tarefa, Adicionar uma função do Lambda à instância do Amazon Connect. Isso adiciona automaticamente permissões de recursos que permitem que o Amazon Connect invoque a função do Lambda. Caso contrário, se a função Lambda estiver em uma região diferente, você poderá adicioná-la ao seu fluxo usando o designer de fluxo e adicionar as permissões do recurso usando o comando add-permission, com o principal connect.amazonaws.com e o da sua instância ARN do Amazon Connect. Para obter mais informações, consulte Uso de políticas com base em recursos do AWS Lambda em Guia do desenvolvedor do AWS Lambda .

Adicionar uma função do Lambda à instância do Amazon Connect

Para que seja possível usar uma função do Lambda em um fluxo, você precisa adicioná-lo à instância do Amazon Connect.

Adicionar uma função do Lambda à instância
  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. O nome dessa instância aparece na seção URL que você usa para acessar o Amazon Connect.

    Página Instâncias da central de atendimento virtual do Amazon Connect e o alias da instância.
  3. No painel de navegação, escolha Fluxos.

  4. Na seção AWS Lambda, use a caixa suspensa Function (Função) para selecionar a função a ser adicionada à sua instância.

    dica

    O menu suspenso lista apenas as funções que estão na mesma região de sua instância. Se nenhuma função estiver listada, escolha Criar uma nova função Lambda, que abrirá o AWS Lambda console.

    Para usar um Lambda em uma região ou conta diferente, em, em Selecionar uma função Invocar função do AWS Lambda , você pode inserir o ARN de um Lambda. Em seguida, configure a política baseada em recursos correspondente nesse Lambda para permitir que o fluxo o chame.

    Para chamar lambda:AddPermission, você precisa:

    • Definir a entidade principal como connect.amazonaws.com

    • Definir a conta de origem como a conta em que sua instância está.

    • Defina ARN a origem como a ARN da sua instância.

    Para obter mais informações, consulte Conceder o acesso de função a outras contas.

  5. Escolha Adicionar função do Lambda. Confirme se a ARN função foi adicionada em Funções Lambda.

Agora você pode fazer referência a essa função do Lambda em seus fluxos.

Invocar uma função do Lambda em um fluxo

  1. Abra ou crie um fluxo.

  2. Adicione um bloco Invocar função do AWS Lambda (no grupo Integrate (Integrar)) à grade. Conecte as ramificações ao bloco e vice-versa.

  3. Escolha o título do bloco Invocar função do AWS Lambda para abrir a respectiva página de propriedades.

  4. Em Select a function (Selecionar uma função), escolha na lista de funções que você adicionou à instância.

  5. (Opcional) Em Function input parameters (Parâmetros de entrada de função), escolha Add a parameter (Adicionar um parâmetro). Você pode especificar pares chave-valor que são enviados para a função do Lambda quando ela é invocada. Você também pode especificar um valor de Timeout (Tempo limite) para a função.

  6. Em Tempo limite (máximo de 8 segundos), especifique quanto tempo aguardar o tempo limite do Lambda. Após esse período, o contato desce pela ramificação de erro.

Em cada invocação da função do Lambda de um fluxo, passe um conjunto padrão de informações relacionadas ao contato em andamento, bem como quaisquer atributos adicionais definidos na função Parâmetros de entrada da função para o bloco Invocar função do AWS Lambda adicionado ao seu fluxo de contato.

Veja a seguir um exemplo de JSON solicitação para uma função Lambda:

{ "Details": { "ContactData": { "Attributes": { "exampleAttributeKey1": "exampleAttributeValue1" }, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "CustomerId": "someCustomerId", "Description": "someDescription", "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "LanguageCode": "en-US", "MediaStreams": { "Customer": { "Audio": { "StreamARN": "arn:aws:kinesisvideo::eu-west-2:111111111111:stream/instance-alias-contact-ddddddd-bbbb-dddd-eeee-ffffffffffff/9999999999999", "StartTimestamp": "1571360125131", // Epoch time value "StopTimestamp": "1571360126131", "StartFragmentNumber": "100" // Numberic value for fragment number } } }, "Name": "ContactFlowEvent", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" "OutboundCallerId": { "Address": "+12345678903", "Type": "TELEPHONE_NUMBER" } }, "References": { "key1": { "Type": "url", "Value": "urlvalue" } }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": {"exampleParameterKey1": "exampleParameterValue1", "exampleParameterKey2": "exampleParameterValue2" } }, "Name": "ContactFlowEvent" }

A solicitação é dividida em duas partes:

  • Dados de contato: são sempre passados pelo Amazon Connect para todos os contatos. Alguns parâmetros são opcionais.

    Esta seção pode incluir atributos que eram associados anteriormente a um contato, como quando um bloco Definir atributos de contato é usado em um fluxo. Este mapa pode estar vazio se não houver nenhum atributo salvo.

    A imagem a seguir mostra onde esses atributos apareceriam na página de propriedades de Definir atributos de contato.

    A página Propriedades do bloco Definir atributos de contato.
  • Parâmetros: são os parâmetros específicos para esta chamada que foram definidos quando você criou a função do Lambda. A imagem a seguir mostra onde esses parâmetros apareceriam na página de propriedades do bloco Invocar função do AWS Lambda .

    Os parâmetros de entrada da função no bloco de funções Invoke AWS Lambda.

O bloco Invoke Lambda pode receber parâmetros de entrada JSON em formato, acomodando tipos de dados primitivos e aninhados. JSON Veja a seguir um exemplo de uma JSON entrada que pode ser usada no bloco Invoke Lambda.

{ "Name": "Jane", "Age":10, "isEnrolledInSchool": true, "hobbies": { "books":["book1", "book2"], "art":["art1", "art2"] } }

Política de novas tentativas de invocação

Se a invocação do Lambda em um fluxo for limitada, será feita uma nova tentativa de solicitação Também será feita uma nova tentativa se ocorrer uma falha geral do serviço (erro 500).

Quando uma invocação síncrona retorna um erro, o Amazon Connect tenta novamente até três vezes por, no máximo, 8 segundos. Nesse ponto, o fluxo avançará para a ramificação Error (Erro).

Para saber mais sobre como o Lambda tenta novamente, consulte Tratamento de erros e novas tentativas automáticas no Lambda. AWS

Prática recomendada para invocar várias funções Lambda

O Amazon Connect limita a duração de uma sequência de funções do Lambda a 20 segundos. Ele atinge o tempo limite com uma mensagem de erro quando o tempo total de execução excede esse limite. Como os clientes escutam silêncio enquanto uma função do Lambda é executada, recomendamos adicionar um bloco Reproduzir mensagem entre as funções para mantê-los engajados durante a interação longa.

Ao dividir uma cadeia de funções do Lambda com o bloco Reproduzir mensagem, você pode invocar várias funções que durem mais do que o limite de 20 segundos.

Configurar a função do Lambda para analisar o evento

Para transmitir com sucesso atributos e parâmetros entre sua função Lambda e o Amazon Connect, configure sua função para analisar corretamente a JSON solicitação enviada do bloco de AWS Lambda funções Invoke ou Set contact attributes e defina qualquer lógica de negócios que deva ser aplicada. A forma como o JSON é analisado depende do tempo de execução que você usa para sua função.

Por exemplo, o código a seguir mostra como acessar a exampleParameterKey1 partir do bloco de AWS Lambda funções Invoke e exampleAttributeKey1 do bloco Definir atributos de contato usando Node.JS:

exports.handler = function(event, context, callback) { // Example: access value from parameter (Invoke AWS Lambda function) let parameter1 = event['Details']['Parameters']['exampleParameterKey1']; // Example: access value from attribute (Set contact attributes block) let attribute1 = event['Details']['ContactData']['Attributes']['exampleAttributeKey1']; // Example: access customer's phone number from default data let phone = event['Details']['ContactData']['CustomerEndpoint']['Address']; // Apply your business logic with the values // ... }

Verificar a resposta da função

dica

Não há suporte para referenciar uma matriz em um fluxo. As matrizes só podem ser usadas em outra função do Lambda.

A resposta da função Lambda pode ser STRING _ MAP ou JSON e precisa ser definida durante a configuração do bloco de função Invoke AWS Lambda no fluxo. Se a validação da resposta for definida como STRING _MAP, a função Lambda deverá retornar um objeto plano de pares de chave/valor do tipo string. Caso contrário, se a validação da resposta estiver definida comoJSON, a função Lambda poderá retornar qualquer valor válido, JSON inclusive aninhado. JSON

O bloco de fluxo AWS da função invoke Lambda que destaca o uso do mapa de strings ou do json.

A resposta do Lambda pode ser de até 32 KB. Se você não se conectar ao Lambda, a função gerará uma exceção, a resposta não será entendida ou a função do Lambda levará mais tempo do que o limite, o fluxo saltará para o rótulo Error.

Teste a saída retornada da função do Lambda para confirmar que ela será consumida corretamente quando for retornada para o Amazon Connect. O exemplo a seguir mostra uma resposta em Node.JS:

exports.handler = function(event, context, callback) { // Extract data from the event object let phone = event['Details']['ContactData']['CustomerEndpoint']['Address']; // Get information from your APIs let customerAccountId = getAccountIdByPhone(phone); let customerBalance = getBalanceByAccountId(customerAccountId); let resultMap = { AccountId: customerAccountId, Balance: '$' + customerBalance, } callback(null, resultMap); }

Este exemplo mostra uma resposta usando Python:

def lambda_handler(event, context): // Extract data from the event object phone = event['Details']['ContactData']['CustomerEndpoint']['Address'] // Get information from your APIs customerAccountId = getAccountIdByPhone(phone) customerBalance = getBalanceByAccountId(customerAccountId) resultMap = { "AccountId": customerAccountId, "Balance": '$%s' % customerBalance } return resultMap

A saída retornada da função deve ser um objeto simples de pares de chave/valor, com valores que incluem apenas caracteres alfanuméricos, traço e sublinhado. O tamanho dos dados retornados deve ser menor que 32 KB de dados UTF -8.

O exemplo a seguir mostra a JSON saída dessas funções do Lambda:

{ "AccountId": "a12345689", "Balance": "$1000" }

Se a validação da resposta estiver definida comoJSON, a função Lambda poderá retornar até mesmo uma aninhadaJSON, por exemplo:

{ "Name": { "First": "John", "Last": "Doe" }, "AccountId": "a12345689", "OrderIds": ["x123", "y123"] }

Você pode retornar qualquer resultado, desde que sejam pares simples de valores-chave.

Consumir a resposta da função do Lambda

Há duas maneiras de usar a resposta da função em seu fluxo. Você pode fazer referência diretamente às variáveis retornadas do Lambda ou armazenar os valores retornados da função como atributos de contato e, em seguida, fazer referência aos atributos armazenados. Quando você usar uma referência externa para a resposta de uma função do Lambda, a referência sempre receberá a resposta da função invocada mais recentemente. Para usar a resposta de uma função antes de uma função subsequente ser invocada, a resposta deve ser salva como um atributo de contato ou passada como um parâmetro para a próxima função.

1. Acessar variáveis diretamente

Se você acessa as variáveis diretamente, pode usá-las em blocos de fluxo, mas elas não são incluídas nos registros de contato. Para acessar essas variáveis diretamente em um bloco de fluxo, adicione o bloco após o bloco da AWS Lambda função Invoke e, em seguida, faça referência aos atributos conforme mostrado no exemplo a seguir:

Name - $.External.Name Address - $.External.Address CallerType - $.External.CallerType

A imagem a seguir mostra a página Propriedades do bloco Reproduzir mensagem. As variáveis são especificadas no text-to-speech bloco.

A página Propriedades do bloco Reproduzir mensagem.

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

2. Armazenar as variáveis como atributos de contato

Se você armazenar as variáveis como atributos de contato, poderá usá-las em todo o fluxo e elas serão incluídas nos registros de contato.

Para armazenar os valores retornados como atributos de contato e depois referenciá-los, use o bloco Definir atributos de contato em seu fluxo após o bloco de AWS Lambda função Invocar. Escolha Usar atributo, Externo para o Tipo. Seguindo o exemplo que estamos usando, defina o Atributo de destino como MyAccountId, defina o atributo como AccountId e faça o mesmo para MyBalance e Saldo. Essa configuração é mostrada na imagem a seguir.

A página Propriedades do bloco Definir atributos de contato.

Adicione o endereço como um Source attribute (Atributo de origem) e use returnedContactAddress como a Destination key (Chave de destino). Depois, adicione o CallerType como um Atributo de origem e use o returnedContactType para a Chave de destino, conforme mostrado na imagem a seguir.

A página Propriedades do bloco Reproduzir mensagem.

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

Tutorial: criar uma função do Lambda e invocar em um fluxo

Etapa 1: Criar o exemplo do Lambda

  1. Faça login no AWS Management Console e abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

  2. Em AWS Lambda, escolha Criar função.

  3. Escolha Autor do zero, se ainda não estiver selecionado. Em Informações básicas, em Nome da função, insira MyFirstConnectLambda. Para todas as outras opções, aceite os padrões. Essas opções são mostradas na imagem a seguir do console do AWS Lambda.

    O console AWS Lambda.
  4. Escolha a opção Criar função.

  5. Na caixa Origem do código, na guia index.js, exclua o código do modelo do editor de código.

  6. Copie e cole o código a seguir no editor de código, como mostra a imagem a seguir:

    A seção Origem do código, o botão Implantar.
    exports.handler = async (event, context, callback) => { // Extract information const customerNumber = event.Details.ContactData.CustomerEndpoint.Address; const companyName = event.Details.Parameters.companyName; // Fetch data const balance = await fetchBalance(customerNumber, companyName); const support = await fetchSupportUrl(companyName); // Prepare result const resultMap = { customerBalance: balance, websiteUrl: support } callback(null, resultMap); } async function fetchBalance(customerPhoneNumber, companyName) { // Get data from your API Gateway or Database like DynamoDB return Math.floor(Math.random() * 1000); } async function fetchSupportUrl(companyName) { // Get data from your API Gateway or Database like DynamoDB return 'www.GGG.com/support'; }

    Esse código vai gerar um resultado aleatório para customerBalance o.

  7. Escolha Implantar.

  8. Depois de escolher Implantar, escolha Testar para iniciar o editor de teste.

  9. Na caixa de diálogo Configurar evento de teste, selecione Criar novo evento. Em Nome do evento, insira ConnectMockcomo nome do teste.

  10. Na JSON caixa Evento, exclua o código de amostra e, em vez disso, insira o código a seguir.

    { "Details": { "ContactData": { "Attributes": {}, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": { "companyName": "GGG" } }, "Name": "ContactFlowEvent" }
  11. Escolha Salvar.

  12. Escolha Test (Testar). Você deverá ver algo semelhante à imagem a seguir:

    A seção Origem do código, o botão Testar.

    Seu saldo será diferente. O código gera um número aleatório.

Etapa 2: Adicionar o Lambda ao Amazon Connect

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

  2. Escolha o alias de instância do Amazon Connect.

    Página Instâncias da central de atendimento virtual do Amazon Connect e o alias da instância.
  3. No menu de navegação, escolha Fluxos.

  4. Na AWS Lambda seção, use a caixa suspensa Funções Lambda para selecionar. MyFirstConnectLambda

    A página de fluxos, a seção AWS Lambda.
  5. Escolha Adicionar função do Lambda.

Etapa 3: Criar o fluxo de contato

A imagem a seguir é um exemplo do fluxo que você criará usando as etapas deste procedimento. Ela contém os seguintes blocos: Definir atributos de contato, Reproduzir mensagem, Invocar função do AWS Lambda, outro bloco Definir atributos de contato, outro bloco Reproduzir mensagem e, finalmente, um bloco Desconectar.

Um fluxo que chama o bloco de funções Invoke AWS Lambda.
  1. Faça login no site do Amazon Connect administrador em https://instance name.my.connect.aws/.

  2. No menu de navegação, vá para Roteamento, Fluxos, Criar um fluxo de contato.

  3. Arraste um bloco Set contact attributes (Definir atributos do contato) para a grade e configure a página Propriedades mostrada na imagem a seguir:

    Um bloco Definir atributos de contato.
    1. Namespace = Definido pelo usuário.

    2. Atributo = companyName.

    3. Escolha Definir manualmente. Valor = GGG.

    4. Escolha Salvar.

  4. Arraste um bloco Play prompt (Reproduzir aviso) para a grade e configure a página Propriedades conforme mostrado na imagem a seguir:

    Um bloco Reproduzir mensagem.
    1. Escolha T ext-to-speech ou texto de bate-papo, Definir manualmente e defina Interpretar como SSML. Insira o seguinte texto na caixa para que o texto seja falado:

      Hello, thank you for calling $.Attributes.companyName inc.

    2. Escolha Salvar.

  5. Arraste outro bloco Play prompt (Reproduzir aviso) para a grade e configure a página Propriedades conforme mostrado na imagem a seguir:

    Um bloco Reproduzir mensagem.
    1. Escolha T ext-to-speech ou texto de bate-papo, Definir manualmente e defina Interpretar como texto. Insira o seguinte texto na caixa para que o texto seja falado:

      Please try again later.

    2. Escolha Salvar.

  6. Arraste um bloco Invocar função do AWS Lambda para a grade e configure a página Propriedades conforme mostrado na imagem a seguir:

    Um bloco de funções Invoke AWS Lambda.
    1. Escolha Selecionar manualmente e, em seguida, escolha no MyFirstConnectLambdamenu suspenso.

    2. Na caixa Chave de destino, insira companyName. (Isso é enviado para o Lambda.)

    3. Escolha a caixa Definir dinamicamente

    4. Em Namespace, selecione Definido pelo usuário.

    5. Em Atributo, insira companyName.

    6. Escolha Salvar.

  7. Arraste um bloco Set contact attributes (Definir atributos do contato) para a grade, escolha Adicionar outro atributo e configure a página Propriedades conforme mostrado na imagem a seguir:

    Um bloco Definir atributos de contato.
    1. Namespace = Definido pelo usuário. Atributo = MyBalance.

    2. Escolha Definir dinamicamente.

    3. Namespace = Externo.

    4. Atributo = customerBalance. Esse é o resultado do Lambda.

    5. Escolha Add another attribute (Adicionar outro atributo).

    6. Namespace = Definido pelo usuário.

    7. Atributo = Meu URL.

    8. Selecione Definir dinamicamente. Namespace = Externo.

    9. Atributo = websiteUrl. Esse é o resultado do Lambda.

    10. Escolha Salvar.

  8. Arraste um bloco Play prompt (Reproduzir aviso) para a grade e configure a página Propriedades conforme mostrado na imagem a seguir:

    Um bloco Reproduzir mensagem.
    1. Escolha T ext-to-speech ou texto de bate-papo e defina Interpretar como SSML. Insira o seguinte texto na caixa:

      Your remaining balance is <say-as interpret-as="characters">$.Attributes.MyBalance</say-as>.

      Thank you for calling $.Attributes.companyName.

      Visit $.Attributes.MyURL for more information.

    2. Escolha Salvar.

  9. Arraste um bloco Disconnect/hang up (Desconectar/desligar) até a grade.

  10. Conecte todos os blocos para que seu fluxo se pareça com a imagem mostrada na parte superior deste procedimento.

  11. Insira MyFirstConnectFlowcomo nome e, em seguida, escolha Publicar.

  12. No menu de navegação, vá para Canais, Números de telefone.

  13. Selecione o número de telefone.

  14. Selecione MyFirstConnectFlowe escolha Salvar.

Agora experimente. Ligue para o número. Você deve ouvir uma mensagem de saudação, seu saldo e o site a ser visitado.