Compartir a través de


Introducción a Call Automation

Automatización de llamadas de Azure Communication Services 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.

Casos de uso comunes

Algunos de los casos de uso comunes que puedes construir utilizando la Automatización de Llamadas:

  • 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.

Utiliza la Automatización de Llamadas de Azure Communication Services para crear flujos de trabajo de llamadas para escenarios de atención al cliente, como se muestra en la arquitectura de alto nivel. Puede responder a llamadas entrantes o realizar llamadas salientes. Ejecuta acciones como reproducir un mensaje de bienvenida o conectar al cliente con un agente en directo en una aplicación cliente del SDK de llamadas 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

Las siguientes características están disponibles actualmente en los SDK de Automatización de llamadas 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 ✔️ ✔️ ✔️ ✔️
Conectar a una llamada en curso o sala (en versión preliminar) ✔️ ✔️ ✔️ ✔️
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 ✔️ ✔️ ✔️ ✔️
Iniciar o detener el streaming de audio (versión preliminar pública) ✔️ ✔️ ✔️ ✔️
Iniciar o detener la transcripción en tiempo real (versión preliminar pública) ✔️ ✔️ ✔️ ✔️
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.

Arquitectura

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 final de destino indicado en la notificación del evento IncomingCall. Los eventos de devolución de llamada de web hook solo comunican la answer acción previa a la llamada, no para las acciones reject o redirect.

Respuesta : mediante el evento IncomingCall de Event Grid y el 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 de red telefónica conmutada (RTC) entrantes. Otros escenarios incluyen responder a una llamada en nombre de un usuario.

Rechazar : para rechazar una llamada, la aplicación puede recibir el evento IncomingCall IncomingCall e impedir que la llamada se conecte al punto de conexión de destino.

Redireccionamiento : mediante el evento IncomingCall 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 (sim-ring). La acción de redirección no responde a la llamada. La llamada se redirige o reenvía a otro punto de conexión de destino para que se responda.

Crear llamada: use la acción Crear llamada para realizar llamadas salientes a números de teléfono y a otros usuarios de 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.

Conectar llamada (en versión preliminar): la acción Conectar llamada se puede usar para conectarse a una llamada en curso y realizar acciones de llamada en ella. También es posible usar esta acción para conectar y administrar una llamada a salas mediante programación, como realizar llamadas de RTC para salas mediante su servicio.

Acciones en medio de la llamada

La aplicación puede realizar estas acciones en las llamadas que se responden o se colocan mediante los SDK de Automatización de llamadas. 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 : uno o varios participantes se pueden agregar en una sola solicitud con cada participante siendo 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 realiza 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 obtener más información, consulte Reproducción de audio en llamada y Personalización de mensajes de voz para 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 del usuario para impulsar la lógica de negocios y la navegación en la aplicación. Para obtener más información, consulte Recopilación de entradas de usuario y la guía paso a paso Recopilación de entradas de usuario con la acción Reconocer.

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, consulte Cómo controlar las acciones multimedia de llamadas intermedias.

Enviar DTMF : cuando la aplicación necesita enviar tonos DTMF a un participante externo. Use esta acción para llamar a un agente externo y proporcionar el número de extensión o 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 : 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 esas 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 cara a cara, 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 estableciendo la propiedad forEveryOne en true en Hang-Up acción de llamada.

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.

Iniciar o detener el streaming de audio (versión preliminar pública): el streaming de audio le permite suscribirse a transmisiones de audio en tiempo real desde una llamada en curso. Para obtener instrucciones más detalladas sobre cómo empezar a trabajar con el streaming de audio e información sobre los eventos de devolución de llamada de streaming de audio, consulte nuestro concepto y nuestro inicio rápido.

Iniciar o detener la transcripción en tiempo real (versión preliminar pública): la transcripción en tiempo real le permite acceder a transcripciones en vivo para el audio de una llamada en curso. Para obtener instrucciones más detalladas sobre cómo empezar a trabajar con la transcripción en tiempo real e información sobre los eventos de devolución de llamada de la transcripción en tiempo real, consulte nuestro concepto y nuestro inicio rápido.

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. Se envían independientemente del SDK (Llamada o Automatización de llamadas). Aunque puedes crear una suscripción para cualquier evento, te recomendamos que utilices el evento IncomingCall para todos los casos de uso de Automatización de Llamadas en los que quieras 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 estableció una llamada (entrante o saliente).
CallEnded Finalizó una llamada y quitó a todos los participantes.
ParticipantAdded Incorporación de un participante a una llamada.
ParticipantRemoved Elimine 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 en Azure Communication Services: eventos de llamadas de voz y vídeo

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 llamada se inició correctamente (cuando se usa una acción Answer o Create) o la aplicación se conectó correctamente a una llamada en curso (al usar la acción Connect).
CallDisconnected Se desconectó la aplicación de la llamada.
CreateCallFailed La aplicación no ha podido crear la llamada.
ConnectFailed La aplicación no se pudo conectar a una llamada (solo para la acción Connect de llamadas).
CallTransferAccepted La acción de transferencia se completó correctamente y el adquirente se conectó al participante de destino.
CallTransferFailed No se pudo realizar la acción de transferencia.
AddParticipantSucceeded La aplicación agregó correctamente un participante a la llamada.
AddParticipantFailed La aplicación no pudo agregar un participante a la llamada (debido a un error o a que el participante no aceptó la invitación)
CancelAddParticipantSucceeded La aplicación canceló correctamente una solicitud de AddParticipant (el participante no se agregó a la llamada).
CancelAddParticipantFailed La aplicación no pudo cancelar una solicitud AddParticipant (esto podría deberse a que la solicitud ya se procesó).
RemoveParticipantSucceeded La aplicación quitó correctamente a 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 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 Recognize solicitada.
RecognizeFailed El reconocimiento de la entrada de usuario no se realizó correctamente.
Para obtener más información sobre los eventos de acción de reconocimiento, consulte la guía paso a paso para recopilación de entradas de usuario.
RecordingStateChanged El estado de la acción de grabación ha cambiado de activo a inactivo o viceversa.
ContinuousDtmfRecognitionToneReceived StartContinuousDtmfRecognition se ha completado 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 StopContinuousRecognition se ejecutó correctamente.
SendDtmfCompleted SendDTMF se ha completado correctamente y enviado tonos DTMF al participante de destino.
SendDtmfFailed Error al enviar los tonos DTMF.

Para comprender qué eventos se publican para diferentes acciones, consulte Acciones para el controlde llamadas. En el artículo se proporcionan ejemplos de código y 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 Protección del punto de conexión de webhook.

URI de devolución de llamada de operación

El URI de devolución de llamada de la operación es un parámetro opcional en algunas API de llamada intermedia que utilizan eventos como respuestas asíncronas. De forma predeterminada, todos los eventos se envían al URI de devolución de llamada predeterminado establecido por CreateCall / AnswerCall eventos de API cuando el usuario establece una llamada. Con el URI de devolución de llamada de la operación, la API envía los eventos correspondientes de esta solicitud individual (solo una vez) al nuevo URI.

API admitida Evento correspondiente
AddParticipant AddParticipantSucceed / AddParticipantFailed
RemoveParticipant RemoveParticipantSucceed / RemoveParticipantFailed
TransferCall CallTransferAccepted / CallTransferFailed
CancelAddParticipant CancelAddParticipantSucceeded / CancelAddParticipantFailed
Play PlayCompleted / PlayFailed / PlayCanceled
PlayToAll PlayCompleted / PlayFailed / PlayCanceled
Recognize RecognizeCompleted / RecognizeFailed / RecognizeCanceled
StopContinuousDTMFRecognition ContinuousDtmfRecognitionStopped
SendDTMF ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed
Hold HoldFailed
StartMediaStreaming MediaStreamingStarted / MediaStreamingFailed
StopMediaStreaming MediaStreamingStopped / MediaStreamingFailed
StartTranscription TranscriptionStarted / TranscriptionFailed
UpdateTranscription TranscriptionUpdated / TranscriptionFailed
StopTranscription TranscriptionStopped / TranscriptionFailed

Pasos siguientes