Conceitos de chamada de entrada
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 de entrada é 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 disparar 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. Veja os seguintes exemplos desses recursos:
- Uma identidade dos Serviços de Comunicação do Azure
- Um número de telefone PSTN pertencente ao recurso de Serviços de Comunicação do Azure
Dado esses exemplos, os seguintes cenários disparam um IncomingCall
evento enviado para a Grade de Eventos:
Fonte | Destino | Cenários |
---|---|---|
Identidade dos Serviços de Comunicação do Azure | Identidade dos Serviços de Comunicação do Azure | Chamar, redirecionar, adicionar participante e transferir |
Identidade dos Serviços de Comunicação do Azure | Número PSTN pertencente ao seu recurso de Serviços de Comunicação do Azure | Chamar, redirecionar, adicionar participante e transferir |
PSTN público | Número PSTN pertencente ao seu recurso de Serviços de Comunicação do Azure | Chamar, redirecionar, adicionar participante e transferir |
Observação
É 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 esse tópico, consulte o guia de conceitos de identidade.
Registrar um provedor de recursos da Grade de Eventos
Se você ainda não tiver usado a Grade de Eventos da sua assinatura do Azure, talvez seja necessário registrar o provedor de recursos desse serviço. Para registrar o provedor, siga estas etapas:
- Vá para o portal do Azure.
- No menu à esquerda, selecione Assinaturas.
- Selecione a assinatura que você usa para a Grade de Eventos.
- No menu à esquerda, em Configurações, selecione Provedores de recursos.
- Encontre Microsoft.EventGrid.
- Caso o provedor de recursos não esteja 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 os retornos de chamada do Webhook para eventos, é comum usar uma assinatura da 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.
Essa arquitetura tem os seguintes benefícios:
- Com os filtros de assinatura da Grade de Eventos, é possível rotear a notificação
IncomingCall
para aplicativos específicos. - A atribuição do número PSTN e a lógica de roteamento podem existir no aplicativo em vez de serem configuradas estaticamente online.
- Conforme identificado na seção Cenários de chamada, seu aplicativo pode ser notificado mesmo quando os usuários fazem chamadas entre si. É possível combinar esse cenário com as APIs de gravação de chamadas para atender às necessidades de conformidade.
Para obter uma carga útil de exemplo 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 pertença 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.
Observação
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 o redirecionamento de 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 o manuseio 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 da 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úmero
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 uma IncomingCall
notificação é enviada 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.
Práticas Recomendadas
Para garantir que a Grade de Eventos entregue eventos ao ponto de extremidade Webhook e evite que usuários mal-intencionados inundem seu ponto de extremidade com eventos, você precisa provar a propriedade do ponto de extremidade. Para resolver quaisquer problemas com o recebimento de eventos, confirme se o Webhook que você configurou é verificado manipulando
SubscriptionValidationEvent
o . 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 só toca 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 Tempo de Evento para Viver 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 log do recurso Grade de Eventos para monitorar eventos que não forem entregues. Para fazer isso, navegue até o tópico do sistema na guia Eventos do recurso de Comunicação e habilite o registro em log nas configurações de Diagnóstico. Os logs de falha podem ser encontrados na tabela 'AegDeliveryFailureLogs'.
AegDeliveryFailureLogs | limit 10 | where Message has "incomingCall"
Próximas etapas
- Experimente o guia de início rápido para fazer uma chamada de saída.