Compartir a través de


Conceptos de llamadas entrantes

La automatización de llamadas de Azure Communication Services permite a los desarrolladores crear aplicaciones que puedan realizar y recibir llamadas. Aprovecha las suscripciones de Event Grid para entregar IncomingCall eventos, lo que hace fundamental configurar el entorno para recibir estas notificaciones para que la aplicación redirija o responda a una llamada de forma eficaz. Por lo tanto, comprender los aspectos básicos de las llamadas entrantes es esencial para aprovechar todo el potencial de Automatización de llamadas de Azure Communication Services.

Escenarios de llamada

Antes de configurar el entorno, es importante comprender los escenarios que pueden desencadenar un IncomingCall evento. Para desencadenar un IncomingCall evento, se debe realizar una llamada a una identidad de Azure Communication Services o a un número de red telefónica conmutada (RTC) asociado al recurso de Azure Communication Services. A continuación se muestran ejemplos de estos recursos:

  1. Una identidad de Azure Communication Services
  2. Un número de teléfono RTC propiedad del recurso de Azure Communication Services

Dados estos ejemplos, los escenarios siguientes desencadenan un IncomingCall evento enviado a Event Grid:

Source Destination Escenario(s)
Identidad de Azure Communication Services Identidad de Azure Communication Services Llamada, redireccionamiento, agregar participante, transferencia
Identidad de Azure Communication Services Número RTC propiedad del recurso de Azure Communication Services Llamada, redireccionamiento, agregar participante, transferencia
RTC pública Número RTC propiedad del recurso de Azure Communication Services Llamada, redireccionamiento, agregar participante, transferencia

Nota:

Es importante comprender que una identidad de Azure Communication Services puede representar a un usuario o una aplicación. Aunque la plataforma no tiene una característica integrada para asignar explícitamente una identidad a un usuario o aplicación, la aplicación o la infraestructura auxiliar pueden lograrlo. Para más información sobre este tema, consulte la guía de conceptos de identidad.

Registro del proveedor de recursos de Event Grid

Si no ha usado anteriormente Event Grid en su suscripción de Azure, puede que tenga que registrar el proveedor de recursos de Event Grid. Para registrar el proveedor, siga estos pasos:

  1. Vaya a Azure Portal.
  2. En el menú de la izquierda, seleccione Suscripciones.
  3. Seleccione la suscripción que usa para Event Grid.
  4. En el menú de la izquierda, en Configuración, seleccione Proveedores de recursos.
  5. Busque Microsoft.EventGrid.
  6. Si el proveedor de recursos no está registrado, seleccione Registrar.

Recepción de una notificación de llamada entrante de Event Grid

En Azure Communication Services, la recepción de una IncomingCall notificación es posible a través de una suscripción de Event Grid. Como receptor de la notificación, tiene la flexibilidad de elegir cómo controlarla. Dado que la API de Automatización de llamadas aprovecha las devoluciones de llamada de Webhook para eventos, es habitual usar una suscripción de Event Grid de "Webhook". Sin embargo, el servicio ofrece varios tipos de suscripción y tiene la libertad de elegir el más adecuado para sus necesidades.

Esta arquitectura tiene las siguientes ventajas:

  • Con los filtros de suscripción de Event Grid, puede enrutar la IncomingCall notificación a aplicaciones específicas.
  • La lógica de asignación y enrutamiento de números RTC puede existir en la aplicación en lugar de configurarse estáticamente en línea.
  • Como se identifica en la sección escenarios de llamada, la aplicación puede recibir notificaciones incluso cuando los usuarios realizan llamadas entre sí. Después, puede combinar este escenario junto con las API de grabación de llamadas para satisfacer las necesidades de cumplimiento.

Para obtener una carga de ejemplo del evento y más información sobre otros eventos de llamada publicados en Event Grid, consulte esta guía.

Este es un ejemplo de una suscripción de Webhook de Event Grid en la que el filtro de tipo de evento escucha solo el IncomingCall evento.

Image showing IncomingCall subscription.

Opciones de enrutamiento de llamadas con Automatización de llamadas y Event Grid

En Automatización de llamadas y Event Grid, el enrutamiento de llamadas se puede adaptar a sus necesidades específicas. Mediante el uso de filtros avanzados dentro de la suscripción de Event Grid, puede suscribirse a una IncomingCall notificación que pertenezca a un número de teléfono de origen o destino específico o a una identidad de Azure Communication Services. Esta notificación se puede dirigir a un punto de conexión, como una suscripción de Webhook. Con el SDK de Automatización de llamadas, la aplicación de punto de conexión puede tomar una decisión de redirigir la llamada a otra identidad de Azure Communication Services o a la RTC.

Nota:

Para asegurarse de que la aplicación recibe solo los eventos necesarios, se recomienda configurar el filtrado en Event Grid. Esto es especialmente crucial en escenarios que generan IncomingCall eventos, como redirigir una llamada RTC entrante a un punto de conexión de Azure Communication Services. Si no se usa un filtro, la suscripción de Event Grid recibe dos IncomingCall eventos( uno para la llamada RTC y otro para el usuario de Azure Communication Services), aunque solo haya pensado recibir la primera notificación. El abandono de controlar estos escenarios mediante filtros u otros mecanismos de la aplicación puede dar lugar a bucles infinitos y a otro comportamiento no deseado.

Este es un ejemplo de un filtro avanzado en una suscripción de Event Grid que observa la data.to.PhoneNumber.Value cadena a partir de un número de teléfono RTC de "+18005551212.

Image showing Event Grid advanced filter.

Asignación de números

Al usar la IncomingCall notificación en Azure Communication Services, tiene la libertad de asociar cualquier número determinado a cualquier punto de conexión. Por ejemplo, si obtuvo un número de teléfono RTC de +14255551212 y desea asignarlo a un usuario con una identidad de 375f0e2f-e8db-4449-9bf7-2054b02e42b4 en la aplicación, debe mantener una asignación de ese número a la identidad. Cuando se envía una IncomingCall notificación que coincide con el número de teléfono del campo to , puede invocar la Redirect API y proporcionar la identidad del usuario. En otras palabras, puede administrar la asignación de números dentro de la aplicación y enrutar o responder llamadas en tiempo de ejecución.

Procedimientos recomendados

  1. Para asegurarse de que Event Grid entrega eventos al punto de conexión de Webhook e impide que los usuarios malintencionados inunden el punto de conexión con eventos, debe demostrar la propiedad del punto de conexión. Para solucionar cualquier problema con la recepción de eventos, confirme que el webhook que configuró se comprueba mediante el control SubscriptionValidationEventde . Para obtener más información, consulte esta guía.

  2. Cuando se recibe un evento de llamada entrante, si la aplicación no responde con un código de estado 200Ok a Event Grid dentro del período de tiempo necesario, Event Grid utiliza un reintento de retroceso exponencial para enviar el evento de nuevo. Sin embargo, una llamada entrante solo suena durante 30 segundos y responde a una llamada después de ese tiempo no será efectiva. Para evitar reintentos para llamadas expiradas o obsoletas, se recomienda establecer la directiva de reintentos como Max Event Delivery Attempts to 2 y Event Time to Live to 1 minute. Puede encontrar esta configuración en la pestaña Características adicionales de la suscripción de eventos. Obtenga más información sobre los reintentos aquí.

  3. Se recomienda habilitar el registro del recurso de Event Grid para supervisar los eventos que no se pueden entregar. Para ello, vaya al tema del sistema en la pestaña Eventos del recurso comunicación y habilite el registro desde la configuración de diagnóstico. Los registros de errores se pueden encontrar en la tabla "AegDeliveryFailureLogs".

    AegDeliveryFailureLogs
    | limit 10 
    | where Message has "incomingCall"
    

Pasos siguientes