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:

  • Programe llamadas VoIP o PSTN en flujos de trabajo transaccionales, como click-to-call y recordatorios de 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. Con compatibilidad para PSTN de Azure Communication Services o Direct Routing, puede conectar de nuevo este flujo de trabajo con su centro de contacto.

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 funcionalidad Capacidad .NET Java JavaScript Python
Escenarios de llamada previa Responder a una llamada individual ✔️ ✔️ ✔️ ✔️
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 ✔️ ✔️ ✔️ ✔️
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 ✔️ ✔️ ✔️ ✔️
Reconocer la entrada del usuario mediante DTMF ✔️ ✔️ ✔️ ✔️
Reconocimiento de entradas de voz del usuario ✔️ ✔️ ✔️ ✔️
Iniciar el reconocimiento continuo de DTMF ✔️ ✔️ ✔️ ✔️
Detener el reconocimiento continuo de DTMF ✔️ ✔️ ✔️ ✔️
Enviar DTMF ✔️ ✔️ ✔️ ✔️
Silenciar al participante ✔️ ✔️ ✔️ ✔️
Poner al participante en espera ✔️ ✔️ ✔️ ✔️
Cancelar retención del participante ✔️ ✔️ ✔️ ✔️
Iniciar o detener el streaming de audio ✔️ ✔️ ✔️ ✔️
Iniciar o detener la transcripción en tiempo real ✔️ ✔️ ✔️ ✔️
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 la llamada (eliminar el segmento de llamada) ✔️ ✔️ ✔️ ✔️
Finalizar una llamada (quitar todos los participantes y finalizar la llamada) ✔️ ✔️ ✔️ ✔️
Cancelar operaciones multimedia ✔️ ✔️ ✔️ ✔️
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 ✔️ ✔️ ✔️ ✔️
Mover un participante a otra llamada ✔️ ✔️ ✔️ ✔️
Escenarios de consulta Obtener el estado de la llamada ✔️ ✔️ ✔️ ✔️
Obtener un participante en una llamada ✔️ ✔️ ✔️ ✔️
Enumerar los participantes de una llamada ✔️ ✔️ ✔️ ✔️
Grabación de llamadas Iniciar, pausar, reanudar o detener la grabación ✔️ ✔️ ✔️ ✔️

* No se admite el redireccionamiento 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 callback de webhook solo comunican la acción answer previa a la llamada, pero no 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. Utilice esta acción en escenarios de IVR en los que la aplicación pueda 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 – Rechazar una llamada significa que su aplicación puede recibir el evento IncomingCall y evitar que la llamada se conecte al extremo de destino.

Redirección: mediante el evento IncomingCall de Event Grid, puede redirigir una llamada a otro punto de conexión. La acción de redirección no responde 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: use la acción Conectar llamada para conectarse a una llamada en curso y realizar acciones de llamada en ella. También puede usar esta acción para conectar y administrar mediante programación una llamada de Salas, por ejemplo, realizando llamadas salientes a la RTC para Salas con su servicio.

Note

Formatos de identificadores y directrices de almacenamiento

Azure Communication Services expone dos categorías de identificadores en una llamada:

  • Identificadores GUID de longitud fija , CallConnectionId y CorrelationId tienen formato GUID y tienen una longitud fija estable (36 caracteres en formato de cadena GUID estándar).
  • Identificadores codificados en Base64 de longitud variable : ServerCallId (Automatización de llamadas, Grabación de llamadas) y recordingId (Grabación de llamadas) son cadenas codificadas en Base64 cuya longitud puede variar entre llamadas y puede cambiar con el tiempo a medida que evoluciona el servicio.

Al almacenar ServerCallId o recordingId, utilice una columna de cadena de longitud variable sin límite. Evite los tipos de columna de ancho fijo, como VARCHAR(200), ya que la longitud observada actual no es un contrato y puede crecer en futuras versiones. Trate ambos valores como tokens opacos: no analice, descodifique ni derive significado de su contenido.

Acciones en medio de la llamada

La aplicación puede realizar estas acciones en las llamadas respondidas o realizadas 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 hace una llamada saliente, puede reproducir un mensaje de audio para el autor de la llamada. Este audio puede reproducirse en bucle si es necesario, en casos 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 la entrada – Después de que su aplicación reproduzca un mensaje de audio, puede solicitar información del usuario para controlar la lógica de negocio y la navegación en su 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. Entonces, el usuario tendría que quitarse el silencio manualmente 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 responde a una llamada individual, la acción de colgar quita el tramo de llamada y finaliza 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 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. Según la operación multimedia cancelada y las que están en cola, la aplicación podría recibir un evento de webhook que indique que la acción se ha cancelado.

Iniciar o detener streaming de audio : el streaming de audio le permite suscribirse a secuencias de audio en tiempo real desde una llamada en curso. Para obtener instrucciones más detalladas sobre cómo empezar a usar la transmisión de audio e información sobre los eventos de devolución de llamada relacionados con la transmisión de audio, consulte nuestro documento conceptual y nuestra guía de inicio rápido.

Iniciar o detener la transcripción en tiempo real : la transcripción en tiempo real le permite acceder a transcripciones en vivo para el audio de una llamada en curso. Para obtener una orientación más detallada sobre cómo empezar a usar la transcripción en tiempo real e información sobre los eventos de retrollamada de la transcripción en tiempo real, consulte nuestro documento conceptual y nuestra guía de inicio rápido.

Mover un participante a otra llamada : cuando la aplicación necesita mover un participante de una llamada en curso a otra mediante la MoveParticipants API. Esto permite el enrutamiento dinámico y la orquestación de llamadas flexibles, como mover un traductor a una llamada de médico-paciente o transferir a un cliente desde una llamada de lobby a una llamada de soporte técnico activa. Para obtener más información, consulte Cómo controlar y dirigir las llamadas.

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. Las dos tablas siguientes describen los eventos emitidos por Event Grid y por Call Automation en forma de 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 de SDK (Calling o Call Automation). 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. Utilice los demás eventos con fines de 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ó la llamada y eliminó a todos los participantes.
ParticipantAdded Se ha añadido 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 automatización de llamadas

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 Tu aplicación se ha desconectado de la llamada.
CreateCallFailed La aplicación no ha podido crear la llamada.
AnswerFailed La aplicación no ha podido responder a la llamada.
ConnectFailed La aplicación no pudo conectarse a una llamada (solo para la acción de llamada Connect).
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 Su aplicación canceló correctamente una solicitud de AddParticipant (el participante no se añadió 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 eliminó 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 Recognize acción 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 Recognize, consulte la guía práctica para recopilar la entrada del 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 ha completado, pero se ha producido un error al procesar un tono DTMF del participante.
ContinuousDtmfRecognitionStopped StopContinuousRecognition se ejecutó correctamente.
SendDtmfCompleted SendDTMF se ha completado correctamente y ha enviado tonos DTMF al participante de destino.
SendDtmfFailed Se produjo un 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 resulta más apropiada para sus tareas de depuración.

Para aprender a proteger la entrega del evento de devolución de llamada, consulte Cómo proteger el punto de conexión del webhook.

URI de devolución de llamada de operación

El URI de devolución de llamada de operación es un parámetro opcional en algunas API de llamada intermedia que utilizan eventos como respuestas asincrónicas. 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. Mediante el URI de devolución de llamada de la operación, la API envía a la nueva URI los eventos correspondientes a esta solicitud individual (de una sola vez).

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