Visão geral da Automação de Chamadas

A Automação de Chamadas dos Serviços de Comunicação do Azure oferece aos desenvolvedores a capacidade de criar fluxos de trabalho de chamadas inteligentes baseados em servidor e a gravação de chamadas para canais de voz e de PSTN. Os SDKs, disponíveis em C#, Java, JavaScript e Python, usam um modelo de evento de ação para ajudá-lo a criar interações personalizadas do cliente. Seus aplicativos de comunicação podem escutar eventos de chamadas em tempo real e executar ações do plano de controle (como atender, transferir, reproduzir áudio, começar a gravar etc.) para orientar e controlar chamadas com base em sua lógica de negócios.

Observação

Atualmente, a Automação de Chamadas não dá suporte a chamadas de Salas.

Casos de uso comuns

Alguns dos casos de uso comuns que podem ser compilados usando a Automação de Chamadas incluem:

  • Programar chamadas VoIP ou PSTN para fluxos de trabalho transacionais, como lembretes de clique para chamar e de compromissos para melhorar o atendimento ao cliente.
  • Criar fluxos de trabalho de interação participativa para autoatendimento de clientes para casos de uso, como reservas de pedidos e atualizações, usando ações de Reprodução (URL de Áudio, conversão de texto em fala e SSML) e Reconhecimento (DTMF e Serviço de Voz).
  • Integre seus aplicativos de comunicação às Centrais de Contato e suas redes de telefonia privadas usando o Roteamento Direto.
  • Proteja a identidade do cliente criando serviços de mascaramento de número para conectar compradores a vendedores ou usuários a fornecedores parceiros em sua plataforma.
  • Aumente o envolvimento criando programas automatizados de alcance do cliente para marketing e atendimento ao cliente.
  • Analise em um processo pós-chamada suas gravações de áudio não misturadas para fins de garantia de qualidade.

A Automação de Chamadas dos Serviços de Comunicação do Azure pode ser usada para criar fluxos de trabalho de chamada para cenários de atendimento ao cliente, conforme descrito na arquitetura de alto nível abaixo. Você pode atender a chamadas de entrada ou fazer chamadas de saída. Execute ações como reproduzir uma mensagem de boas-vindas, conectar o cliente a um agente humano em um aplicativo cliente do SDK de Chamada dos Serviços de Comunicação do Azure para atender à solicitação de chamada de entrada. Com suporte para PSTN dos Serviços de Comunicação do Azure ou Roteamento Direto, você pode conectar esse fluxo de trabalho de volta à sua central de contatos.

Diagrama do fluxo de chamadas para um cenário de atendimento ao cliente.

Funcionalidades

A lista a seguir apresenta o conjunto de recursos que estão disponíveis atualmente nos SDKs de Automação de Chamadas dos Serviços de Comunicação do Azure.

Área de recurso Funcionalidade .NET Java JavaScript Python
Cenários de pré-chamada Atender a uma chamada individual ✔️ ✔️ ✔️ ✔️
Atender a uma chamada em grupo ✔️ ✔️ ✔️ ✔️
Fazer nova chamada de saída em um ou mais pontos de extremidade ✔️ ✔️ ✔️ ✔️
Redirecionar* (encaminhar) uma chamada para um ou mais pontos de extremidade ✔️ ✔️ ✔️ ✔️
Rejeitar uma chamada de entrada ✔️ ✔️ ✔️ ✔️
Cenários de chamada intermediária Adicionar um ou mais pontos de extremidade a uma chamada existente ✔️ ✔️ ✔️ ✔️
Cancelar a adição de um ponto de extremidade a uma chamada existente ✔️ ✔️ ✔️ ✔️
Reproduzir áudio de um arquivo de áudio ✔️ ✔️ ✔️ ✔️
Reproduzir áudio usando a conversão de texto em fala ✔️ ✔️ ✔️ ✔️
Reconhecer a entrada de usuário por meio do DTMF ✔️ ✔️ ✔️ ✔️
Reconhecer entradas de voz do usuário ✔️ ✔️ ✔️ ✔️
Iniciar o reconhecimento contínuo de DTMF ✔️ ✔️ ✔️ ✔️
Parar o reconhecimento de DTMF contínuo ✔️ ✔️ ✔️ ✔️
Enviar DTMF ✔️ ✔️ ✔️ ✔️
Ativar mudo para participante ✔️ ✔️ ✔️ ✔️
Remover um ou mais pontos de extremidade de uma chamada existente ✔️ ✔️ ✔️ ✔️
Fazer uma transferência cega* de uma chamada individual para outro ponto de extremidade ✔️ ✔️ ✔️ ✔️
Fazer uma transferência cega* de um participante da chamada em grupo para outro ponto de extremidade ✔️ ✔️ ✔️ ✔️
Desligar uma chamada (remover o segmento de chamada) ✔️ ✔️ ✔️ ✔️
Encerrar uma chamada (remover todos os participantes e encerrar chamada) ✔️ ✔️ ✔️ ✔️
Cancelar operações de mídia ✔️ ✔️ ✔️ ✔️
Compartilhar informações personalizadas (por meio de cabeçalhos VOIP ou SIP) com pontos de extremidade ao adicioná-los a uma chamada ou transferir uma chamada para eles ✔️ ✔️ ✔️ ✔️
Cenários de consulta Obter o estado da chamada ✔️ ✔️ ✔️ ✔️
Receber um participante em uma chamada ✔️ ✔️ ✔️ ✔️
Listar todos os participantes de uma chamada ✔️ ✔️ ✔️ ✔️
Gravação de chamada Iniciar/pausar/retomar/parar gravação ✔️ ✔️ ✔️ ✔️

*Atualmente, não há suporte para a transferência ou redirecionamento de uma chamada VoIP para um número de telefone.

Arquitetura

A Automação de Chamadas usa uma interface de API REST para receber solicitações e fornecer respostas a todas as ações executadas no serviço. Devido à natureza assíncrona da chamada, a maioria das ações tem eventos correspondentes que são disparados quando a ação é concluída com êxito ou quando falha.

Os Serviços de Comunicação do Azure usam a Grade de Eventos para fornecer o evento IncomingCall e webhooks HTTPS para todos os retornos de chamada de ação para chamada intermediária.

Captura de tela do fluxo para chamadas e ações de entrada.

Ações de chamada

Ações de pré-chamada

Essas ações são executadas antes que o ponto de extremidade de destino listado na notificação de evento IncomingCall esteja conectado. Os eventos de retorno de chamada de web hook comunicam apenas a ação de pré-chamada "atender", não para as ações rejeitar ou redirecionar.

Atender – ao usar o evento IncomingCall da Grade de Eventos do Azure e do SDK da Automação de Chamadas, uma chamada poderá ser atendida pelo aplicativo. Essa ação permite cenários IVR em que seu aplicativo pode atender programaticamente chamadas PSTN de entrada. Outros cenários incluem atender a uma chamada em nome de um usuário.

Rejeitar – rejeitar uma chamada significa que seu aplicativo pode receber o evento IncomingCall e impedir que a chamada seja conectada ao ponto de extremidade de destino.

Redirecionar – ao usar o evento IncomingCall da Grade de Eventos do Azure, uma chamada poderá ser redirecionada para um ou mais pontos de extremidade criando um cenário de toque único ou simultâneo (sim-ring). A ação de redirecionamento não atende à chamada; a chamada é simplesmente redirecionada ou encaminhada para outro ponto de extremidade de destino para ser atendida.

Criar Chamada – a ação Criar Chamada pode ser usada para fazer chamadas de saída para números de telefone e para outros usuários de comunicação. Os casos de uso incluem seu aplicativo fazer chamadas de saída para informar proativamente os usuários sobre uma interrupção ou notificar sobre uma atualização de pedido.

Ações de chamada intermediária

Essas ações podem ser executadas nas chamadas atendidas ou colocadas usando SDKs de Automação de Chamadas. Cada ação de chamada intermediária tem um evento de retorno de chamada de web hook de êxito ou de falha correspondente.

Adicionar/Remover participante(s) – um ou mais participantes podem ser adicionados em uma única solicitação, sendo cada participante uma variação de pontos de extremidade de destino com suporte. Um retorno de chamada do web hook é enviado para cada participante adicionado com êxito à chamada.

Reproduzir – quando o aplicativo atende a uma chamada ou faz uma chamada de saída, você pode reproduzir um prompt de áudio para o chamador. Esse áudio pode ser colocado em loop, se necessário, em cenários como tocar música de espera. Para saber mais, veja nossos conceitos e guia de instruções para Personalizar prompts de voz para usuários com a ação Reproduzir.

Reconhecer entrada – depois que seu aplicativo tiver reproduzido um prompt de áudio, você pode solicitar a entrada do usuário para impulsionar a lógica de negócios e a navegação em seu aplicativo. Para saber mais, veja nossos conceitos e guia de instruções para Coletar entradas de usuário.

Reconhecimento contínuo de DTMF – quando seu aplicativo precisa ser capaz de receber tons DTMF a qualquer momento na chamada sem que o aplicativo precise disparar uma ação de reconhecimento específica. Isso pode ser útil em cenários em que um agente está em uma chamada e precisa que o usuário insira algum tipo de ID ou número de acompanhamento. Para saber mais sobre como usar isso, consulte nosso guia.

Enviar DTMF quando seu aplicativo precisar enviar tons DTMF para um participante externo, isso pode ser para fins como discar para um agente externo e fornecer o número de extensão ou algo como navegar em um menu IVR externo.

Ativar mudo – seu aplicativo pode ativar mudo para determinados usuários com base na lógica de negócios. Em seguida, o usuário precisará se desativar mudo manualmente se quiser falar.

Transferir – quando o aplicativo atende a uma chamada ou faz uma chamada de saída para um ponto de extremidade, essa chamada pode ser transferida para outro ponto de extremidade de destino. A transferência de uma chamada individual removerá a capacidade do seu aplicativo de controlar a chamada usando os SDKs de Automação de Chamadas.

Gravar – você decide quando iniciar/pausar/retomar/parar a gravação com base na lógica de negócios do aplicativo ou pode conceder controle ao usuário final para disparar essas ações. Para saber mais, veja nossos conceitos e início rápido.

Desligar – quando seu aplicativo atende a uma chamada individual, a ação de desligar removerá o segmento de chamada e encerrará a chamada com o outro ponto de extremidade. Se houver mais de dois participantes na chamada (chamada em grupo), a execução de uma ação de “desligar” removerá o ponto de extremidade do seu aplicativo da chamada em grupo.

Encerrar – se seu aplicativo tiver respondido a uma chamada individual ou em grupo ou feito uma chamada de saída com um ou mais participantes, essa ação removerá todos os participantes e encerrará a chamada. Essa operação é disparada definindo a propriedade forEveryOne como true na ação Desligar chamada.

Cancelar operações de mídia – com base na lógica de negócios, seu aplicativo pode precisar cancelar operações de mídia em andamento e enfileiradas. Dependendo da operação de mídia cancelada e das operações na fila, você receberá um evento de webhook indicando que a ação foi cancelada.

Cenários de consulta

Participantes da lista – retornam uma lista de todos os participantes em uma chamada. Os bots de gravação e transcrição foram omitidos dessa lista.

Eventos

A tabela a seguir descreve os eventos atuais emitidos pelo Serviços de Comunicação do Azure. As duas tabelas a seguir descrevem os eventos emitidos pela Grade de Eventos e a partir da Automação de Chamadas como eventos de webhook.

Eventos da Grade de Eventos

A maioria dos eventos enviados pela Grade de Eventos são agnósticos de plataforma, o que significa que eles são emitidos independentemente do SDK (Chamada ou Automação de Chamadas). Embora você possa criar uma assinatura para qualquer evento, recomendamos que você use o evento IncomingCall para todos os casos de uso da Automação de Chamadas em que deseja controlar a chamada programaticamente. Use os outros eventos para fins de relatório/telemetria.

Evento Descrição
IncomingCall Notificação de uma chamada para um usuário de comunicação ou número de telefone
CallStarted Uma chamada é estabelecida (entrada ou saída)
CallEnded Uma chamada é encerrada e todos os participantes são removidos
ParticipantAdded Um participante foi adicionado a uma chamada
ParticipantRemoved Um participante foi removido de uma chamada
RecordingFileStatusUpdated Um arquivo de gravação está disponível

Leia mais sobre esses eventos e esquema de conteúdo aqui

Eventos de web hook de Automação de Chamadas

Os eventos de Automação de Chamadas são enviados para o URI de retorno de chamada do web hook especificado quando você atende ou faz uma nova chamada de saída.

Evento Descrição
CallConnected O segmento de chamada do aplicativo está conectado (de entrada ou de saída)
CallDisconnected O segmento de chamada do aplicativo está desconectado
CallTransferAccepted O segmento de chamada do aplicativo foi transferido para outro ponto de extremidade
CallTransferFailed Falha na transferência do segmento de chamada do aplicativo
AddParticipantSucceeded Seu aplicativo adicionou um participante
AddParticipantFailed Seu aplicativo não conseguiu adicionar um participante
CancelAddParticipantSucceeded Seu aplicativo cancelou a adição de um participante
CancelAddParticipantFailed Seu aplicativo não pôde cancelar a adição de um participante
RemoveParticipantSucceeded Seu aplicativo removeu com sucesso um participante da chamada.
RemoveParticipantFailed Seu aplicativo não conseguiu remover um participante da chamada.
ParticipantsUpdated O status de um participante foi alterado enquanto o segmento de chamada do aplicativo estava conectado a uma chamada
PlayCompleted Seu aplicativo reproduziu com êxito o arquivo de áudio fornecido
PlayFailed O aplicativo teve uma falha ao reproduzir áudio
PlayCanceled A ação de reprodução solicitada foi cancelada
RecognizeCompleted O reconhecimento da entrada do usuário foi concluído com êxito
RecognizeCanceled A ação de reconhecimento solicitada foi cancelada
RecognizeFailed O reconhecimento da entrada do usuário não foi bem-sucedido
para saber mais sobre eventos de ação de reconhecimento, veja nosso guia de instruções para coletar a entrada de usuário
RecordingStateChanged O status da ação de gravação foi alterado de ativo para inativo ou vice-versa
ContinuousDtmfRecognitionToneReceived StartContinuousDtmfRecognition foi concluído com sucesso e um tom DTMF foi recebido do participante
ContinuousDtmfRecognitionToneFailed StartContinuousDtmfRecognition foi concluído, mas ocorreu um erro ao manipular um tom DTMF do participante
ContinuousDtmfRecognitionStopped StopContinuousRecognition executado com sucesso
SendDtmfCompleted SendDTMF concluído com sucesso e os tons DTMF foram enviados para o participante de destino
SendDtmfFailed Ocorreu um erro ao enviar os tons DTMF

Para entender quais eventos são publicados para ações diferentes, consulte este guia que fornece exemplos de código, bem como diagramas de sequência para vários fluxos de controle de chamada.

Ao reconhecer eventos de retorno de chamada, a melhor prática é responder com códigos de status HTTP padrão, como 200 OK. Informações detalhadas não são necessárias e são mais adequadas para os processos de depuração.

Para saber como proteger a entrega de eventos de retorno de chamada, consulte este guia.

Uri de Retorno de Chamada de Operação

É um parâmetro opcional em algumas APIs de chamada intermediária que usam eventos como suas respostas assíncronas. Por padrão, todos os eventos são enviados para o Uri de retorno de chamada padrão definido pela API CreateCall/AnswerCall quando o usuário estabelece uma chamada. Com o uso do Uri de Retorno de Chamada de Operação, os eventos correspondentes dessa solicitação individual (somente uma vez) serão enviados para o novo Uri.

API compatível Evento correspondente
AddParticipant AddParticipantSucceed / AddParticipantFailed
RemoveParticipant RemoveParticipantSucceed / RemoveParticipantFailed
TransferCall CallTransferAccepted / CallTransferFailed
CancelAddParticipant CancelAddParticipantSucceeded / CancelAddParticipantFailed
Reproduzir PlayCompleted / PlayFailed / PlayCanceled
PlayToAll PlayCompleted / PlayFailed / PlayCanceled
Recognize RecognizeCompleted / RecognizeFailed / RecognizeCanceled
StopContinuousDTMFRecognition ContinuousDtmfRecognitionStopped
SendDTMF ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed

Próximas etapas

Aqui estão alguns artigos que podem interessar a você: