Nota: El componente "Stream audio unidirectional" tiene costes de uso adicionales.
Cuando se desea transmitir llamadas de voz desde Talkdesk a un socio, el componente "Stream audio unidirectional" desempeña un papel crucial, ya que puede utilizar una conexión WebSocket (WSS) para comenzar a transmitir el audio en cualquier punto del flujo de la llamada.
El flujo de audio de Talkdesk a un Partner no interferirá con el flujo normal de la llamada, ya que el flujo sólo está reflejando el audio a su sistema.
El componente “Stream audio unidirectional” desencadena diferentes eventos durante el ciclo de vida del flujo de la conversación. Estos eventos se representan a través de los siguientes mensajes de WebSocket:
- Connected: El primer mensaje que se envía una vez que se establece una conexión WebSocket.
- Start: Este mensaje contiene metadatos importantes sobre el flujo de la conversación y se envía inmediatamente después del mensaje Connected. Solo se envía una vez al principio del flujo de la conversación.
- Media: Este mensaje encapsula los datos de audio en bruto.
- Stop: El mensaje detener se envía cuando el flujo de la conversación se detiene o la llamada ha terminado.
Para comprender la estructura de estos mensajes WebSocket, consulte la sección WebSocket Messages protocols.
Nota: El componente solo permite hacer una transmisión de audio unidireccional, y transmitirá ambos canales: el del agente y el de la persona que llama. La opción de hacer una transmisión bidireccional solo está disponible cuando se utiliza el componente de Studio de Connect Autopilot Voice, como se explica en Conversation Orchestrator: Streaming Bidirectional Audio.
El componente “Stream audio unidirectional” puede añadirse a cualquier paso del flujo de Studio, y el flujo se iniciará inmediatamente.
1. Añada el componente "Stream audio unidirectional" para la salida “Initial step” para obtener resultados satisfactorios (salida "OK").
2. En el paso “Stream audio unidirectional”, configure el “Stream URL” para la conexión WSS que quieres que se transmita el audio.
3. Configurar las salidas “Stream audio unidirectional”, en función del flujo que se quiera definir.
En este caso, hemos añadido un “Assignment and Dial” como la salida “Successful” del "Stream audio unidirectional", para que se transmita el audio del agente y de la persona que llama.
Protocoles WebSocket Messages
Cada mensaje enviado es una cadena JSON. Puedes determinar qué tipo de evento se está produciendo utilizando la propiedad evento de cada objeto JSON.
Connected Message
"Connect" es el primer mensaje que se envía una vez establecida una conexión WebSocket.
Parámetro |
Descripción |
event |
El valor de conectado |
protocol |
Define el protocolo para el tiempo de vida de las conexiones WebSocket. ej: "Call" |
version |
Versión semántica del protocolo. |
Ejemplo:
{
"event": "connected",
"protocol": "Call",
"version": "1.0.0"
}
Start Message
El mensaje "Start" contiene metadatos importantes sobre el flujo de conversación y se envía inmediatamente después del mensaje "Connected". Sólo se envía una vez, al inicio del flujo de conversación.
Parámetro |
Descripción |
event |
El valor de inicio |
sequenceNumber |
Número utilizado para seguir el orden de envío de los mensajes. El primer mensaje comienza con "1" y luego se incrementa. |
start |
Un objeto que contiene metadatos Stream |
start.streamSid |
El identificador único del Stream |
start.accountSid |
Identificador de la Cuenta que creó el Stream |
start.callSid |
Identificador de la Llamada desde la que se inició el Stream. |
start.tracks |
Una matriz de valores que indica qué flujos de medios esperar en los mensajes posteriores. Los valores incluyen entrada, salida. |
start.customParameters |
Un objeto que representa los Custom Parameters establecidos al definir el Stream (se explica más adelante). |
start.mediaFormat |
Un objeto que contiene el formato de la carga útil en el archivo Media Messages. |
start.mediaFormat.encoding |
La codificación de los datos en la próxima carga útil. El valor siempre será audio/x-mulaw. |
start.mediaFormat.sampleRate |
La Sample Rate en hercios de los próximos datos de audio. El valor es siempre 8000 |
start.mediaFormat.channels |
El número de canales en los datos de audio de entrada. El valor siempre será 1 |
streamSid |
El identificador único del Stream |
Ejemplo:
{
"event": "start",
"sequenceNumber": "2",
"start": {
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0",
"accountSid": "AC123",
"callSid": "CA123",
"tracks": [
"inbound",
"outbound"
],
"customParameters": {
"extra_parameters": {},
"account_id": "5ea75fe7aa224700012eae40",
"interaction_id": "cadc093d381648e98e520739630c47ff",
"stream_url": "wss://my.service.com/socket/messages",
"correlation_id": "72d64225890846c39a05616d08d5d5a1",
"type": "inbound"
},
"mediaFormat": {
"encoding": "audio/x-mulaw",
"sampleRate": 8000,
"channels": 1
}
},
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0"
}
Para enriquecer el mensaje de inicio producido por Talkdesk Global Communications Network (GNC) añadimos la siguiente información a la sección "customParameters" de la carga útil:
- extra_parameters: campo obsoleto.
- account_id: El Talkdesk ID para la cuenta.
- Interaction_id: El ID único de esa interacción de Talkdesk.
- stream_url: La WebSocket URL donde se está transmitiendo el audio.
- correlation_id: El ID que identifica la llamada durante toda su vida, para todos nuestros interaction_id correspondientes de esa llamada.
- type: El flujo de medios, ya sea entrante o saliente.
Ejemplo:
"customParameters": { |
Media Message
El mensaje "Media" encapsula los datos de audio en bruto.
Parámetro |
Descripción |
event |
El valor de los medios de comunicación |
sequenceNumber |
Número utilizado para seguir el orden de envío de los mensajes. El primer mensaje comienza con "1" y luego se incrementa para cada mensaje |
media |
Un objeto que contiene metadatos multimedia y carga útil |
media.track |
Una de entrada o de salida |
media.chunk |
El fragmento del mensaje. El primer mensaje comenzará con "1" y se incrementará con cada mensaje posterior. |
media.timestamp |
Presentation Timestamp en milisegundos desde el inicio del Stream. |
media.payload |
El Raw Audio se codifica en base64 |
streamSid |
Identificador único del Stream |
{
"event": "media",
"sequenceNumber": "3",
"media": {
"track": "outbound",
"chunk": "1",
"timestamp": "5",
"payload": "no+JhoaJjpzSHxAKBgYJDhtEopGKh4aIjZm7JhILBwYIDRg1qZSLh4aIjJevLBUMBwYHDBUsr5eMiIaHi5SpNRgNCAYHCxImu5mNiIaHipGiRBsOCQYGChAf0pyOiYaGiY+e/x4PCQYGCQ4cUp+QioaGiY6bxCIRCgcGCA0ZO6aSi4eGiI2YtSkUCwcGCAwXL6yVjIeGh4yVrC8XDAgGBwsUKbWYjYiGh4uSpjsZDQgGBwoRIsSbjomGhoqQn1IcDgkGBgkPHv+ej4mGhomOnNIfEAoGBgkOG0SikYqHhoiNmbsmEgsHBggNGDWplIuHhoiMl68sFQwHBgcMFSyvl4yIhoeLlKk1GA0IBgcLEia7mY2IhoeKkaJEGw4JBgYKEB/SnI6JhoaJj57/Hg8JBgYJDhxSn5CKhoaJjpvEIhEKBwYIDRk7ppKLh4aIjZi1KRQLBwYIDBcvrJWMh4aHjJWsLxcMCAYHCxQptZiNiIaHi5KmOxkNCAYHChEixJuOiYaGipCfUhwOCQYGCQ8e/56PiYaGiY6c0h8QCgYGCQ4bRKKRioeGiI2ZuyYSCwcGCA0YNamUi4eGiIyXrywVDAcGBwwVLK+XjIiGh4uUqTUYDQgGBwsSJruZjYiGh4qRokQbDgkGBgoQH9KcjomGhomPnv8eDwkGBgkOHFKfkIqGhomOm8QiEQoHBggNGTumkouHhoiNmLUpFAsHBggMFy+slYyHhoeMlawvFwwIBgcLFCm1mI2IhoeLkqY7GQ0IBgcKESLEm46JhoaKkJ9SHA4JBgYJDx7/no+JhoaJjpzSHxAKBgYJDhtEopGKh4aIjZm7JhILBwYIDRg1qZSLh4aIjJevLBUMBwYHDBUsr5eMiIaHi5SpNRgNCAYHCxImu5mNiIaHipGiRBsOCQYGChAf0pyOiYaGiY+e/x4PCQYGCQ4cUp+QioaGiY6bxCIRCgcGCA0ZO6aSi4eGiI2YtSkUCwcGCAwXL6yVjIeGh4yVrC8XDAgGBwsUKbWYjYiGh4uSpjsZDQgGBwoRIsSbjomGhoqQn1IcDgkGBgkPHv+ej4mGhomOnNIfEAoGBgkOG0SikYqHhoiNmbsmEgsHBggNGDWplIuHhoiMl68sFQwHBgcMFSyvl4yIhoeLlKk1GA0IBgcLEia7mY2IhoeKkaJEGw4JBgYKEB/SnI6JhoaJj57/Hg8JBgYJDhxSn5CKhoaJjpvEIhEKBwYIDRk7ppKLh4aIjZi1KRQLBwYIDBcvrJWMh4aHjJWsLxcMCAYHCxQptZiNiIaHi5KmOxkNCAYHChEixJuOiYaGipCfUhwOCQYGCQ8e/56PiYaGiY6c0h8QCgYGCQ4bRKKRioeGiA=="
} ,
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0"
}
Stop Message
El mensaje "Stop" se enviará cuando el flujo de conversación se detenga o la llamada haya finalizado.
Parámetro |
Descripción |
event |
El valor de stop |
sequenceNumber |
Número utilizado para seguir el orden de envío de los mensajes. El primer mensaje comienza con "1" y luego se incrementa para cada mensaje |
stop |
Un objeto que contiene metadatos del Stream |
stop.accountSid |
Identificador de la Cuenta que creó el Stream |
stop.callSid |
Identificador de la Llamada que inició el Stream |
streamSid |
Identificador único del Stream |
Ejemplo:
{
"event": "stop",
"sequenceNumber": "5",
"stop": {
"accountSid": "AC123",
"callSid": "CA123"
},
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0"
}
Para más información sobre Conversation Orchestrator, por favor consulte nuestra documentación.