O blog da AWS
Construa fluxos de trabalho confiáveis de análise de voz com funções duráveis do AWS Lambda e Amazon Bedrock
Por Mehdi Amrane, Sr. Solutions Architect na Amazon Web Services.
Centros de contato lidam com milhões de interações de voz mensalmente, mas transformar gravações brutas de chamadas em insights acionáveis permanece um processo manual e frágil. Com fluxos de trabalho de análise de voz, você pode diminuir o tempo médio de atendimento de uma chamada de voz de minutos para segundos e aumentar a eficiência e produtividade de seus agentes de suporte.
Hoje, esses fluxos de trabalho frequentemente requerem código personalizado para lidar com requisitos não funcionais, como lógica de repetição, gerenciamento de estado e tratamento de falhas em múltiplos serviços. Além disso, como a seleção/determinação de insights é derivada de objetivos de negócios específicos, frequentemente precisa ser personalizada para cada organização.
Nesta publicação, mostramos uma solução usando funções duráveis do AWS Lambda para criar os seguintes insights: resumo, análise de sentimento e tópicos-chave. Funções duráveis do AWS Lambda é uma capacidade do AWS Lambda, que simplifica a construção de aplicações de múltiplas etapas e fluxos de trabalho de IA. Ela permite que você escreva código sequencial com pontos de verificação automáticos, repetições integradas e tratamento de erros simplificado, para que você possa se concentrar na lógica de negócios em vez de gerenciar a orquestração.
A solução também simplifica a visualização das transcrições de conversas e insights, com uma aplicação web.
Visão geral da solução
Nesta publicação, fornecemos uma visão geral operacional da solução e, em seguida, descrevemos como configurá-la com os seguintes serviços:
- Amazon Bedrock para gerar insights a partir de transcrições de voz.
- Funções duráveis do AWS Lambda para orquestrar a criação de insights de transcrições.
- Amazon Elastic Container Service (Amazon ECS) e um Application Load Balancer (ALB) para hospedar a aplicação web.
- Amazon Cognito para implementar um serviço de identidade (diretório de usuários e gerenciamento de autorização) para a aplicação web.
- Amazon DynamoDB para armazenar as transcrições de voz e seus insights.
- Amazon Kinesis Streams para criar um intermediário entre o produtor de transcrições de voz e o consumidor das transcrições de voz. O produtor pode ser um sistema externo ou Amazon Connect Contact Lens.
- Contact Lens Connector e Amazon Connect Contact Lens podem opcionalmente ser usados para processar chamadas de voz de um sistema externo e gerar transcrições.
- Amazon API Gateway e AWS Lambda para criar uma API com uma camada de autenticação. AWS Lambda também é usado para interagir com Amazon DynamoDB e Amazon Kinesis Streams.
A arquitetura da solução está ilustrada no seguinte diagrama:

Etapa 1 (Opção 1): Segmentos de transcrição são enviados por um sistema externo. Os segmentos são armazenados em um stream (Amazon Kinesis Streams).
Etapa 1 (Opção 2): Chamadas de voz são enviadas por um sistema externo para o Contact Lens Connector na AWS. As chamadas de voz são então transcritas usando Amazon Connect Contact Lens, para gerar transcrições e enviar essas transcrições para o stream.
- Etapa 1a: O sistema externo envia uma cópia da chamada de voz para um Contact Lens Connector.
- Etapa 1b: O Contact Lens Connector roteia a chamada de voz para o Amazon Connect Contact Lens.
- Etapa 1c: Amazon Connect Contact Lens gera transcrições a partir de uma chamada de voz.
- Etapa 1d: Os segmentos de transcrição são armazenados em um stream (Amazon Kinesis Streams).
Etapa 2: Uma função processadora de transcrição (função AWS Lambda) consome segmentos de transcrição do stream.
Etapa 3: A função processadora de transcrição (função AWS Lambda) armazena segmentos de transcrição em uma tabela de transcrição no Amazon DynamoDB.
Etapa 4: Uma função durável (função durável do AWS Lambda) é acionada quando novos segmentos de transcrição são armazenados na tabela de transcrição (o gatilho é implementado usando Amazon DynamoDB Streams). Ela orquestra o processamento de transcrições em 5 etapas.
- Etapa 4a: A função durável busca os segmentos recebidos para uma determinada transcrição. Se todos os segmentos da chamada de voz estiverem disponíveis, o processamento continua para a Etapa 4b. Caso contrário, a função Lambda é interrompida (já que a transcrição ainda não está completa).
- Etapa 4b: A função durável resume a transcrição de voz usando Amazon Bedrock.
- Etapa 4c: A função durável gera análise de sentimento para a transcrição de voz usando Amazon Bedrock.
- Etapa 4d: A função durável extrai tópicos-chave da transcrição de voz usando Amazon Bedrock.
- Etapa 4e: A função durável armazena os insights conversacionais em uma tabela de análise no Amazon DynamoDB.
Etapas 5 e 6: O usuário acessa a aplicação web e se autentica.
Etapa 7: Amazon Cognito valida os detalhes de autenticação.
Etapa 8: Uma vez que o usuário está logado, a aplicação web envia uma solicitação para uma API (Amazon API Gateway) para buscar as transcrições de voz e insights conversacionais.
Etapa 9: A API chama um autorizador Lambda para confirmar que o usuário está autorizado a recuperar as transcrições de voz e insights conversacionais.
Etapa 10: A solicitação é enviada da API para uma função recuperadora (função AWS Lambda para recuperar transcrições da tabela de transcrição e insights conversacionais da tabela de análise).
Etapa 11: A função Lambda recupera transcrições da tabela de transcrição e insights conversacionais da tabela de análise.
Após a Etapa 11, o usuário agora pode consultar as transcrições e insights conversacionais da aplicação web.
Pré-requisitos
- Uma conta AWS.
- Um dispositivo baseado em Unix (ou dispositivo Windows com WSL configurado para executar scripts bash) com acesso à sua conta AWS com as seguintes ferramentas/bibliotecas instaladas:
- Node.js e npm instalados.
- Python 3.12 instalado.
- Docker (para containerização do front-end).
- AWS Command Line Interface (AWS CLI) configurado com permissões apropriadas.
- CDK instalado.
- Clone o repositório GitHub:
Configurar infraestrutura de rede e backend
Nesta seção, configuramos os recursos de rede e backend da solução.
Navegue dentro do repositório e complete as seguintes etapas para criar esses recursos:
- Instale dependências e construa o projeto:
- Crie recursos de infraestrutura de rede (Amazon Virtual Private Cloud (Amazon VPC), sub-redes, funções IAM, grupos de segurança e endpoints VPC):
- Crie recursos de backend (stream Amazon Kinesis Data Streams, tabelas Amazon DynamoDB, funções AWS Lambda, Amazon API Gateway, Amazon Cognito):
Criar a aplicação web
Nesta seção, criamos a aplicação web da solução.
Complete as seguintes etapas para criar a aplicação web:
- Crie um repositório Amazon Elastic Container Registry (Amazon ECR) para hospedar a imagem de container da aplicação web:
- Construa e implante a imagem de container no repositório Amazon ECR:
Nota: Substitua
us-west-2pela sua região de implantação. - Implante a aplicação web:
- Implante a pilha de acesso CloudFront (opcional). Esta pilha adiciona sub-redes públicas, um gateway de internet e uma distribuição Amazon CloudFront. Nota importante: Esta pilha permite acesso à aplicação web a partir de um endpoint público usando uma distribuição Amazon CloudFront. Você pode usar esta pilha se atualmente não conseguir acessar uma aplicação web atrás de um ALB privado com uma conexão privada existente (rede privada virtual (VPN), AWS Direct Connect, etc.).
A aplicação web agora está disponível para testes.
Se sua aplicação web for privada, a aplicação está implantada atrás de um ALB privado. Acesse-a de dentro da VPC usando o nome DNS do ALB:
Se sua aplicação web for pública, a aplicação está implantada atrás de uma distribuição Amazon CloudFront. Você pode acessá-la usando a URL da distribuição CloudFront:
Configurar o pool de usuários do Amazon Cognito
Nesta seção, criamos um usuário em nosso pool de usuários do Amazon Cognito. Este usuário fará login em nossa aplicação web.
Execute o script setup-test-user.sh para criar o usuário (certifique-se de fornecer seu endereço de e-mail):
Nota: Substitua your-email@example.com pelo seu endereço de e-mail.
Após criar o usuário, você deve receber um e-mail com uma senha temporária neste formato: “Seu nome de usuário é #seu-endereço-de-email# e a senha temporária é #senha-temporária#.”
Mantenha nota desses detalhes de login (endereço de e-mail e senha temporária) para usar mais tarde ao testar a aplicação web.
Testar a solução
Nesta seção, testamos a solução ingerindo uma transcrição no stream (Amazon Kinesis Data Streams) e visualizamos os resultados na aplicação web.
- Execute o script
ingest-transcriptions.shpara ingerir uma transcrição de exemplo no stream: - Abra a URL da aplicação web em seu navegador web (seja a URL da distribuição CloudFront ou o nome DNS do ALB conforme mencionado na seção anterior).
- Insira suas informações de login (seu e-mail e a senha temporária que você recebeu anteriormente ao configurar o pool de usuários no Amazon Cognito) e escolha Entrar.

- Quando solicitado, insira uma nova senha e escolha Alterar Senha.

- Você agora deve ser capaz de ver uma interface web com uma transcrição conforme ilustrado na seguinte captura de tela:

- Selecione uma transcrição para visualizar os insights conversacionais conforme mostrado na seguinte captura de tela.

Se você quiser explorar uma opção alternativa fazendo uma chamada de voz usando Amazon Connect (com Amazon Connect Contact Lens para gerar as transcrições):
- Crie uma instância do Amazon Connect seguindo as instruções no repositório GitHub (Etapa 8 da seção de Implantação).
- Faça uma chamada telefônica seguindo as etapas na seção Fazer uma chamada telefônica.
Limpeza
Para garantir que nenhum custo adicional seja incorrido, remova os recursos provisionados em sua conta. Certifique-se de estar na conta AWS correta antes de excluir os recursos.
Nota importante: Você deve exercer cautela ao executar as etapas anteriores. Certifique-se de estar excluindo os recursos na conta AWS correta.
Você pode navegar até o console do AWS CloudFormation para excluir as pilhas CloudFormation associadas aos recursos provisionados.
Outra opção é destruir as pilhas usando cdk destroy em ordem reversa de dependência:
- Se você implantou a pilha de acesso CloudFront opcional:
- Se você implantou a pilha de integração Connect opcional:
- Para destruir as pilhas principais:
Conclusão
Nesta publicação, percorremos uma solução para criar uma aplicação web para visualizar transcrições de voz e insights conversacionais relacionados. Primeiro, criamos recursos de rede e backend. Em seguida, criamos a aplicação web. Também configuramos um pool de usuários para conceder acesso de um usuário à aplicação web. Finalmente, testamos a solução ingerindo transcrições e depois visualizando-as na aplicação web.
Para mais informações, consulte a documentação dos seguintes serviços: Amazon Bedrock, funções duráveis do AWS Lambda, Amazon ECS, Amazon API Gateway, AWS Lambda, Amazon Kinesis Streams, Amazon DynamoDB e Amazon Cognito.
Para se aprofundar nesta solução, um repositório GitHub está disponível nesta localização.
Este conteúdo foi traduzido do post original do blog, que pode ser encontrado aqui.
Autores
![]() |
Mehdi Amrane é Sr. Solutions Architect na Amazon Web Services. |
Tradutores
![]() |
Daniel Abib é Arquiteto de Soluções Sênior e Especialista em Amazon Bedrock na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e especialização em Machine Learning. Ele trabalha apoiando Startups, ajudando-os em sua jornada para a nuvem.
https://www.linkedin.com/in/danielabib/ |
![]() |
Nicolas Tarzia é Senior Technical Account Manager na AWS, com mais de 13 anos de experiência, com ampla experiência em arquitetura cloud, engenharia e design de software. Atualmente está habilitando empresas do ramo de ISV (Independent Software Vendors) simplificando a operação na nuvem e otimizando os custos em cloud. Sua área de interesse são tecnologias serverless.
https://www.linkedin.com/in/nicolastarzia |


