Introducción a Call Automation

Automatización de llamadas de Azure Communication permite a los desarrolladores crear flujos de trabajo de llamadas inteligentes, basados en servidor y grabación de llamadas para canales de voz y red telefónica conmutada (RTC). Los SDK, disponibles en C#, Java, JavaScript y Python, usan un modelo de eventos de acción para ayudarle a crear interacciones personalizadas con los clientes. Las aplicaciones de comunicación pueden escuchar eventos de llamada en tiempo real y realizar acciones de plano de control (como respuesta, transferencia, reproducción de audio, inicio de grabación, etc.) para dirigir y controlar las llamadas en función de la lógica de negocios.

Nota:

Actualmente, Automatización de llamadas no admite Salas de llamadas.

Casos de uso comunes

Algunos de los casos de uso comunes que se pueden compilar mediante Call Automation son los siguientes:

  • Programar llamadas VoIP o RTC para flujos de trabajo transaccionales, como recordatorios de llamadas y citas para mejorar el servicio al cliente.
  • Cree flujos de trabajo de interacción interactivos para los clientes de autoservicio para casos de uso como reservas de pedidos y actualizaciones, mediante las acciones Reproducir (dirección URL de audio, Texto a voz y SSML) y Reconocer (DTMF y Voz).
  • Integrar sus aplicaciones de comunicación con los centros de contacto y sus redes de telefonía privadas mediante enrutamiento directo.
  • Proteger la identidad del cliente mediante la creación de servicios de enmascaramiento de números para conectar compradores con vendedores o usuarios con proveedores asociados en su plataforma.
  • Aumentar el compromiso mediante la creación de programas automatizados de contacto con el cliente para el marketing y el servicio de atención al cliente.
  • Analice en un proceso posterior a la llamada las grabaciones de audio sin mezclar con fines de control de calidad.

Automatización de llamadas de Azure Communication Services se puede usar para crear flujos de trabajo de llamada para escenarios de servicio al cliente, como se muestra en la arquitectura de alto nivel siguiente. Puede responder a llamadas entrantes o realizar llamadas salientes. Ejecutar acciones, como reproducir un mensaje de bienvenida o conectar al cliente a un agente activo en una aplicación cliente de Calling SDK de Azure Communication Services para responder a la solicitud de llamada entrante. Gracias a la compatibilidad con la RTC de Azure Communication Services o el enrutamiento directo, puede volver a conectar este flujo de trabajo al centro de contactos.

Diagrama de flujo de llamadas en un escenario de servicio al cliente.

Funcionalidades

La lista siguiente muestra el conjunto de características que están disponibles actualmente en las instancias de SDK Call Automation de Azure Communication Services.

Área de características Funcionalidad .NET Java JavaScript Python
Escenarios de llamada previa Responder a una llamada uno a uno ✔️ ✔️ ✔️ ✔️
Responder a una llamada de grupo ✔️ ✔️ ✔️ ✔️
Hacer una nueva llamada saliente a uno o varios puntos de conexión ✔️ ✔️ ✔️ ✔️
Redirigir* (reenviar) una llamada a uno o varios puntos de conexión ✔️ ✔️ ✔️ ✔️
Rechazar una llamada entrante ✔️ ✔️ ✔️ ✔️
Escenarios en medio de la llamada Agregar uno o varios puntos de conexión a una llamada existente ✔️ ✔️ ✔️ ✔️
Cancelación de la incorporación de un punto de conexión a una llamada existente ✔️ ✔️ ✔️ ✔️
Reproducir audio desde un archivo de audio ✔️ ✔️ ✔️ ✔️
Reproducir audio mediante texto a voz ✔️ ✔️ ✔️ ✔️
Reconocimiento de la entrada de usuario a través de DTMF ✔️ ✔️ ✔️ ✔️
Reconocimiento de entradas de voz del usuario ✔️ ✔️ ✔️ ✔️
Iniciar el reconocimiento continuo de DTMF ✔️ ✔️ ✔️ ✔️
Detener el reconocimiento continuo de DTMF ✔️ ✔️ ✔️ ✔️
Enviar DTMF ✔️ ✔️ ✔️ ✔️
Silenciar participante ✔️ ✔️ ✔️ ✔️
Quitar uno o varios puntos de conexión de una llamada existente ✔️ ✔️ ✔️ ✔️
Transferencia ciega* de una llamada 1:1 a otro punto de conexión ✔️ ✔️ ✔️ ✔️
Transferencia ciega* de un participante de la llamada de grupo a otro punto de conexión ✔️ ✔️ ✔️ ✔️
Colgar una llamada (quitar el tramo de llamada) ✔️ ✔️ ✔️ ✔️
Finalizar una llamada (quitar todos los participantes y finalizar la llamada) ✔️ ✔️ ✔️ ✔️
Cancelación de operaciones de medios ✔️ ✔️ ✔️ ✔️
Compartir información personalizada (a través de encabezados VOIP o SIP) con puntos de conexión al agregarlos a una llamada o al transferir una llamada a ellos ✔️ ✔️ ✔️ ✔️
Escenarios de consulta Obtener el estado de la llamada ✔️ ✔️ ✔️ ✔️
Conseguir un participante en una llamada ✔️ ✔️ ✔️ ✔️
Enumerar los participantes de una llamada ✔️ ✔️ ✔️ ✔️
Grabación de llamadas Iniciar, pausar, reanudar o detener la grabación ✔️ ✔️ ✔️ ✔️

*Actualmente no se admite la transferencia o redirección de una llamada VoIP a un número de teléfono.

Architecture

Call Automation usa una interfaz de API REST para recibir solicitudes y proporcionar respuestas a todas las acciones realizadas en el servicio. Debido a la naturaleza asincrónica de las llamadas, la mayoría de las acciones tienen eventos correspondientes que se desencadenan cuando la acción se completa correctamente o se produce un error.

Azure Communication Services usa Event Grid para entregar el evento IncomingCall y los webhooks HTTPS para todas las devoluciones de llamadas de acción en mitad de la llamada.

Captura de pantalla del flujo de acciones y llamadas entrantes.

Acciones de llamada

Acciones previas a la llamada

Estas acciones se realizan antes de que se conecte el punto de conexión de destino enumerado en la notificación de eventos IncomingCall. Los eventos de devolución de llamada de webhook solo comunican la acción de llamada previa de "respuesta", no acciones de rechazo o redireccionamiento.

Responder: mediante el evento IncomingCall de Event Grid y SDK de Automatización de llamadas, la aplicación puede responder a una llamada. Esta acción permite escenarios de IVR en los que la aplicación puede responder mediante programación a las llamadas RTC entrantes. Otros escenarios incluyen responder a una llamada en nombre de un usuario.

Rechazar: rechazar una llamada significa que su aplicación puede recibir el evento IncomingCall y evitar que la llamada se conecte al punto de conexión de destino.

Redirigir: mediante el evento IncomingCall de Event Grid, se puede redirigir una llamada a uno o varios puntos de conexión que crean un escenario de llamada única o simultánea. La acción de redireccionamiento no responde a la llamada, la llamada se redirige o se reenvía a otro punto de conexión de destino para su respuesta.

Crear llamada: esta acción se puede usar para realizar llamadas salientes a números de teléfono y a otros usuarios de la comunicación. Los casos de uso incluyen la realización de llamadas salientes por parte de la aplicación para informar de forma proactiva a los usuarios sobre una interrupción o notificar una actualización de un pedido.

Acciones en medio de la llamada

Estas acciones se pueden llevar a cabo en las llamadas que se responden o se hacen mediante las instancias de Call Automation SDK. Cada acción en medio de la llamada tiene un evento correspondiente de devolución de llamada de webhook correcto o con error.

Agregar o quitar participantes: se pueden agregar uno o varios participantes en una sola solicitud, donde cada participante es una variación de los puntos de conexión de destino admitidos. Para cada participante agregado correctamente a la llamada, se envía una devolución de llamada de webhook.

Reproducir: cuando la aplicación responde a una llamada o hace una llamada saliente, puede reproducir un mensaje de audio para el autor de la llamada. Este audio se puede recorrer en bucle si es necesario en escenarios como la reproducción de música en espera. Para más información, vea nuestros conceptos y la guía paso a paso para la Personalización de las indicaciones de voz a los usuarios con la acción Reproducir.

Reconocer entrada: una vez que la aplicación haya reproducido un mensaje de audio, puede solicitar la entrada de usuario para impulsar la lógica de negocios y la navegación en la aplicación. Para más información, vea nuestros conceptos y la guía paso a paso para la Recopilación de datos de entrada de usuario.

Reconocimiento DTMF continuo: cuando la aplicación necesita poder recibir tonos DTMF en cualquier momento de la llamada sin necesidad de que la aplicación desencadene una acción de reconocimiento específica. Esto puede ser útil cuando un agente esté en una llamada y necesite que el usuario escriba algún tipo de identificador o número de seguimiento. Para obtener más información sobre cómo usar esta vista, nuestra guía.

Enviar DTMF: cuando la aplicación necesita enviar tonos DTMF a un participante externo. Podría usarse para llamar a un agente externo y proporcionar el número de extensión, o para acciones como navegar por un menú IVR externo.

Silenciar: su aplicación puede silenciar a determinados usuarios en función de la lógica de negocios. Después, el usuario tendría que reactivar manualmente el audio si quiere hablar.

Transferencia: cuando la aplicación responde a una llamada o hace una llamada saliente a un punto de conexión, esa llamada se puede transferir a otro punto de conexión de destino. Al transferir una llamada 1:1, se elimina la posibilidad de que la aplicación controle la llamada mediante las instancias de SDK de Automatización de llamadas.

Registro: usted decide cuándo iniciar, pausar, reanudar o detener la grabación en función de la lógica de negocios de la aplicación, o puede conceder control al usuario final para desencadenar estas acciones. Para obtener más información, consulte los conceptos y el inicio rápido.

Colgar: cuando la aplicación ha respondido a una llamada uno a uno, la acción de colgar quitará el tramo de llamada y finalizará la llamada con el otro punto de conexión. Si hay más de dos participantes en la llamada (llamada de grupo), una acción de "colgar" quitará el punto de conexión de la aplicación de la llamada de grupo.

Finalizar: si la aplicación ha respondido a una llamada uno a uno o grupal, o si ha realizado una llamada saliente con uno o varios participantes, esta acción quitará a todos los participantes y finalizará la llamada. Esta operación se desencadena al establecer la propiedad forEveryOne en true en la acción de llamada Colgar.

Cancelar operaciones multimedia: en función de la lógica de negocios, la aplicación puede necesitar cancelar las operaciones multimedia en curso y en cola. Dependiendo de la operación multimedia cancelada y las de la cola, recibirá un evento de webhook que indica que se ha cancelado la acción.

Escenarios de consulta

Enumerar participantes: devuelve una lista de todos los participantes de una llamada. Los bots de grabación y transcripción se omiten de esta lista.

Eventos

En la tabla siguiente se describen los eventos actuales emitidos por Azure Communication Services. En las dos tablas siguientes se describen los eventos emitidos por Event Grid y desde Automatización de llamadas como eventos de webhook.

Eventos de Event Grid

La mayoría de los eventos enviados por Event Grid son independientes de la plataforma, lo que significa que se emiten independientemente del SDK (Calling o Call Automation). Aunque puede crear una suscripción para cualquier evento, se recomienda usar el evento IncomingCall en todos los casos de uso de Automatización de llamadas en los que quiera controlar la llamada mediante programación. Use los demás eventos para informes o telemetría.

Evento Descripción
IncomingCall Notificación de una llamada a un usuario o número de teléfono de la comunicación.
CallStarted Se establece una llamada (entrante o saliente).
CallEnded Se termina una llamada y se quitan todos los participantes.
ParticipantAdded Se ha agregado un participante a una llamada.
ParticipantRemoved Se ha quitado un participante de una llamada.
RecordingFileStatusUpdated Hay un archivo de grabación disponible

Obtenga más información sobre estos eventos y el esquema de carga aquí

Eventos de webhook de Call Automation

Los eventos de Call Automation se envían al URI de devolución de llamada del webhook especificado al responder a una nueva llamada saliente o realizarla.

Evento Descripción
CallConnected La sección de llamada de la aplicación está conectada (entrante o saliente)
CallDisconnected La sección de llamada de la aplicación está desconectada
CallTransferAccepted La sección de llamada de la aplicación se ha transferido a otro punto de conexión
CallTransferFailed Error en la transferencia de la sección de llamada de la aplicación
AddParticipantSucceeded La aplicación agregó un participante
AddParticipantFailed La aplicación no pudo agregar un participante
CancelAddParticipantSucceeded La aplicación canceló la acción de agregar a un participante
CancelAddParticipantFailed La aplicación no pudo cancelar la acción de agregar de un participante
RemoveParticipantSucceeded La aplicación ha quitado correctamente un participante de la llamada.
RemoveParticipantFailed La aplicación no pudo quitar a un participante de la llamada.
ParticipantsUpdated El estado de un participante cambió mientras la sección de llamada de la aplicación estaba conectada a una llamada
PlayCompleted La aplicación ha reproducido correctamente el archivo de audio proporcionado
PlayFailed La aplicación no pudo reproducir audio
PlayCanceled Se ha cancelado la acción de reproducción solicitada
RecognizeCompleted El reconocimiento de la entrada de usuario se completó correctamente
RecognizeCanceled Se ha cancelado la acción de reconocimiento solicitada
RecognizeFailed El reconocimiento de la entrada de usuario no se realizó correctamente
para más información sobre cómo reconocer eventos de acción, consulte nuestra guía paso a paso para recopilar entradas de usuario
RecordingStateChanged El estado de la acción de grabación ha cambiado de activo a inactivo o viceversa
ContinuousDtmfRecognitionToneReceived StartContinuousDtmfRecognition se completó correctamente y se recibió un tono DTMF del participante
ContinuousDtmfRecognitionToneFailed StartContinuousDtmfRecognition se completó, pero se produjo un error al controlar un tono DTMF del participante
ContinuousDtmfRecognitionStopped Se ejecutó correctamente StopContinuousRecognition
SendDtmfCompleted SendDTMF se completó correctamente y los tonos DTMF se enviaron al participante de destino
SendDtmfFailed Error al enviar los tonos DTMF

Para comprender qué eventos se publican para diferentes acciones, consulte esta guía que proporciona ejemplos de código, así como diagramas de secuencia para varios flujos de control de llamadas.

Al reconocer eventos de devolución de llamada, se recomienda responder con códigos de estado HTTP estándar como 200 OK. La información detallada es innecesaria y es más adecuada para los procesos de depuración.

Para obtener información sobre cómo proteger la entrega de eventos de devolución de llamada, consulte esta guía.

URI de devolución de llamada de operación

Es un parámetro opcional en algunas API de llamada intermedias que usan eventos como respuestas asincrónicas. De forma predeterminada, todos los eventos se envían al URI de devolución de llamada predeterminado establecido por la API CreateCall / AnswerCall cuando el usuario establece una llamada. Con el uso del URI de devolución de llamada de operación, los eventos correspondientes de esta solicitud individual (solo una vez) se enviarán al nuevo URI.

API admitida Evento correspondiente
AddParticipant AddParticipantSucceed / AddParticipantFailed
RemoveParticipant RemoveParticipantSucceed / RemoveParticipantFailed
TransferCall CallTransferAccepted / CallTransferFailed
CancelAddParticipant CancelAddParticipantSucceeded / CancelAddParticipantFailed
Reproducir PlayCompleted / PlayFailed / PlayCanceled
PlayToAll PlayCompleted / PlayFailed / PlayCanceled
Recognize RecognizeCompleted / RecognizeFailed / RecognizeCanceled
StopContinuousDTMFRecognition ContinuousDtmfRecognitionStopped
SendDTMF ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed

Pasos siguientes

Estos son algunos artículos de interés para usted: