Conceitos de chamadas recebidas
A Automação de Chamadas dos Serviços de Comunicação do Azure permite que os desenvolvedores criem aplicativos que podem fazer e receber chamadas. Ele aproveita as assinaturas da Grade de Eventos para entregar IncomingCall
eventos, tornando crucial configurar seu ambiente para receber essas notificações para que seu aplicativo redirecione ou atenda uma chamada de forma eficaz. Portanto, compreender os fundamentos das chamadas recebidas é essencial para aproveitar todo o potencial da Automação de Chamadas dos Serviços de Comunicação do Azure.
Cenários de chamada
Antes de configurar seu ambiente, é importante entender os cenários que podem desencadear um IncomingCall
evento. Para disparar um evento, uma chamada deve ser feita para uma identidade dos Serviços de Comunicação do Azure ou um IncomingCall
número PSTN (Rede Telefônica Pública Comutada) associado ao seu recurso dos Serviços de Comunicação do Azure. Seguem-se exemplos destes recursos:
- Uma identidade dos Serviços de Comunicação do Azure
- Um número de telefone PSTN de propriedade do seu recurso dos Serviços de Comunicação do Azure
Diante desses exemplos, os cenários a seguir acionam um IncomingCall
evento enviado para a Grade de Eventos:
Origem | Destino | Cenário(s) |
---|---|---|
Identidade dos Serviços de Comunicação do Azure | Identidade dos Serviços de Comunicação do Azure | Ligar, Redirecionar, Adicionar Participante, Transferir |
Identidade dos Serviços de Comunicação do Azure | Número PSTN de propriedade do seu recurso dos Serviços de Comunicação do Azure | Ligar, Redirecionar, Adicionar Participante, Transferir |
RTPC pública | Número PSTN de propriedade do seu recurso dos Serviços de Comunicação do Azure | Ligar, Redirecionar, Adicionar Participante, Transferir |
Nota
É importante entender que uma identidade dos Serviços de Comunicação do Azure pode representar um usuário ou um aplicativo. Embora a plataforma não tenha um recurso interno para atribuir explicitamente uma identidade a um usuário ou aplicativo, seu aplicativo ou infraestrutura de suporte pode fazer isso. Para saber mais sobre este tópico, consulte o guia de conceitos de identidade.
Registrar um provedor de recursos da Grade de Eventos
Se você não tiver usado anteriormente a Grade de Eventos em sua assinatura do Azure, talvez seja necessário registrar seu provedor de recursos da Grade de Eventos. Para registar o fornecedor, siga estes passos:
- Aceda ao portal do Azure.
- No menu à esquerda, selecione Assinaturas.
- Selecione a assinatura que você usa para a Grade de Eventos.
- No menu esquerdo, em Definições, selecione Fornecedores de Recursos.
- Localize Microsoft.EventGrid.
- Se o seu provedor de recursos não estiver registrado, selecione Registrar.
Receber uma notificação de chamada de entrada da Grade de Eventos
Nos Serviços de Comunicação do Azure, o recebimento de uma notificação é possível por meio de uma assinatura da Grade de IncomingCall
Eventos. Como destinatário da notificação, você tem a flexibilidade de escolher como lidar com ela. Como a API de automação de chamadas aproveita retornos de chamada Webhook para eventos, é comum usar uma assinatura de grade de eventos 'Webhook'. No entanto, o serviço oferece vários tipos de assinatura, e você tem a liberdade de escolher o mais adequado às suas necessidades.
Esta arquitetura tem os seguintes benefícios:
- Usando filtros de assinatura da Grade de Eventos, você pode rotear a
IncomingCall
notificação para aplicativos específicos. - A atribuição de números PSTN e a lógica de roteamento podem existir em seu aplicativo em vez de serem configuradas estaticamente online.
- Conforme identificado na seção de cenários de chamada, seu aplicativo pode ser notificado mesmo quando os usuários fazem chamadas entre si. Em seguida, você pode combinar esse cenário com as APIs de gravação de chamadas para atender às necessidades de conformidade.
Para obter um exemplo de carga útil do evento e mais informações sobre outros eventos de chamada publicados na Grade de Eventos, consulte este guia.
Aqui está um exemplo de uma assinatura Webhook de Grade de Eventos em que o filtro de tipo de evento está ouvindo apenas o IncomingCall
evento.
Opções de roteamento de chamadas com automação de chamadas e grade de eventos
Na Automação de Chamadas e na Grade de Eventos, o roteamento de chamadas pode ser adaptado às suas necessidades específicas. Usando filtros avançados em sua assinatura da Grade de Eventos, você pode assinar uma notificação que pertence a um número de telefone de origem/destino específico ou a uma IncomingCall
identidade dos Serviços de Comunicação do Azure. Essa notificação pode ser direcionada para um ponto de extremidade, como uma assinatura Webhook. Usando o SDK de Automação de Chamadas, o aplicativo de ponto de extremidade pode tomar a decisão de redirecionar a chamada para outra identidade dos Serviços de Comunicação do Azure ou para a PSTN.
Nota
Para garantir que seu aplicativo receba apenas os eventos necessários, é recomendável configurar a filtragem na Grade de Eventos. Isso é particularmente crucial em cenários que geram IncomingCall
eventos, como redirecionar uma chamada PSTN de entrada para um ponto de extremidade dos Serviços de Comunicação do Azure. Se um filtro não for usado, sua assinatura da Grade de Eventos receberá dois IncomingCall
eventos - um para a chamada PSTN e outro para o usuário dos Serviços de Comunicação do Azure - mesmo que você pretenda receber apenas a primeira notificação. Negligenciar a manipulação de tais cenários usando filtros ou outros mecanismos em seu aplicativo pode resultar em loops infinitos e outros comportamentos indesejáveis.
Aqui está um exemplo de um filtro avançado em uma assinatura de Grade de Eventos observando a data.to.PhoneNumber.Value
cadeia de caracteres começando com um número de telefone PSTN de '+18005551212.
Atribuição de números
Ao usar a notificação nos Serviços de Comunicação do Azure, você tem a IncomingCall
liberdade de associar qualquer número específico a qualquer ponto de extremidade. Por exemplo, se você obteve um número de telefone PSTN e deseja atribuí-lo a um usuário com uma identidade de +14255551212
375f0e2f-e8db-4449-9bf7-2054b02e42b4
em seu aplicativo, você deve manter um mapeamento desse número para a identidade. Quando é enviada uma IncomingCall
notificação que corresponde ao número de telefone no campo para , você pode invocar a API e fornecer a Redirect
identidade do usuário. Em outras palavras, você pode gerenciar a atribuição de número em seu aplicativo e rotear ou atender chamadas em tempo de execução.
Melhores práticas
Para garantir que a Grade de Eventos entregue eventos ao seu ponto de extremidade Webhook e impeça que usuários mal-intencionados inundem seu ponto de extremidade com eventos, você precisa provar a propriedade do seu ponto de extremidade. Para resolver quaisquer problemas com o recebimento de eventos, confirme se o Webhook que você configurou foi verificado manipulando
SubscriptionValidationEvent
. Para obter mais informações, consulte este guia.Quando um evento de chamada de entrada é recebido, se seu aplicativo não responder com um código de status 200Ok para a Grade de Eventos dentro do período de tempo necessário, a Grade de Eventos utilizará uma nova tentativa de recuo exponencial para enviar o evento novamente. No entanto, uma chamada recebida toca apenas por 30 segundos e responder a uma chamada após esse tempo não será eficaz. Para evitar novas tentativas de chamadas expiradas ou obsoletas, recomendamos definir a política de repetição como Máximo de Tentativas de Entrega de Eventos como 2 e Tempo de Duração do Evento como 1 minuto. Você pode encontrar essas configurações na guia Recursos adicionais da assinatura do evento. Saiba mais sobre novas tentativas aqui.
Recomendamos que você habilite o registro em log para seu recurso de Grade de Eventos para monitorar eventos que não são entregues. Para fazer isso, navegue até o tópico do sistema na guia Eventos do seu recurso de Comunicação e habilite o registro em log nas Configurações de diagnóstico. Os logs de falhas podem ser encontrados na tabela 'AegDeliveryFailureLogs'.
AegDeliveryFailureLogs | limit 10 | where Message has "incomingCall"
Próximos passos
- Experimente o início rápido para fazer uma chamada de saída.