Nota: El componente "Stream audio unidirectional" tiene costes de uso adicionales.
Cuando se desea transmitir el audio de las llamadas de voz desde Talkdesk a un Partner, 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 solo refleja el audio en su sistema.
El componente “Stream audio unidirectional” activa diferentes events durante el ciclo de vida del flujo de conversación. Estos events se representan mediante los siguientes mensajes WebSocket:
- Conectado: El primer mensaje que se envía una vez que se establece una conexión WebSocket.
- Inicio: 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.
- Multimedia: Este mensaje encapsula los datos de audio en bruto.
- Detener: El mensaje detener se envía cuando el flujo de la conversación se detiene o la llamada ha terminado.
Para entender la estructura de estos mensajes WebSocket, por favor, 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. Actualmente, la opción de transmisión de audio bidireccional está disponible utilizando el componente Connect to Autopilot Voice Studio, como se explica en Conversation Orchestrator: Transmisión de Audio Bidireccional.
El componente "Stream audio unidirectional" se puede agregar a cualquier paso del flujo de Studio, y la transmisión comenzará inmediatamente.
1. Agregue un componente "Stream audio unidirectional" a la salida del "Initial step" para resultados exitosos (salida "OK").
2. En el paso "Stream audio unidirectional", configure la "Stream URL" con la conexión WSS a la que desea que se transmita el audio.
3. Configure las salidas "Stream audio unidirectional", según el flujo que desee definir.
En este caso, hemos añadido un "Assignment y Dial" como salida "Successful" del "Stream audio unidirectional", de modo que el audio del agente y de la persona que llama se transmita.
WebSocket Messages protocols
Cada mensaje enviado es una cadena JSON. Puede determinar qué tipo de evento está ocurriendo utilizando la propiedad event de cada objeto JSON.
Mensaje Conectado
"Connect" es el primer mensaje que se envía una vez que se establece una conexión WebSocket.
| Parámetro | Descripción |
| evento | El valor de conectado |
| protocolo | Define el protocolo para la duración de las WebSocket connections. p. ej.: "Call" |
| versión | Versión semántica del protocolo. |
Ejemplo:
{
"event": "connected",
"protocol": "Call",
"version": "1.0.0"
}
Mensaje Inicio
El mensaje "Start" contiene metadatos importantes sobre la transmisión de la conversación y se envía inmediatamente después del mensaje "Connected". Solo se envía una vez al inicio del flujo de la conversación.
| Parámetro | Descripción |
| evento | 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. |
| inicio | Un objeto que contiene metadatos de la transmisión |
| start.streamSid | El identificador único del Stream |
| start.accountSid | El identificador de la Account que creó el Stream |
| start.callSid | El identificador de Call desde donde se inició el Stream. |
| start.tracks | Un array de valores que indica qué flujos multimedia esperar en los mensajes posteriores. Los valores incluyen entrante y saliente. |
| start.customParameters | Un objeto que representa los Custom Parameters establecidos al definir el Stream (explicados más abajo). |
| start.mediaFormat | Un objeto que contiene el formato de la carga útil de los 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 | El Sample Rate en Hertz de los siguientes datos de audio. El valor siempre es 8000 |
| start.mediaFormat.channels | El número de canales en los datos de audio de entrada. El valor será siempre 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 (GCN), agregamos la siguiente información a la sección "customParameters" de la carga útil:
- extra_parameters: Campo obsoleto.
- account_id: La ID de Talkdesk de la cuenta.
- interaction_id: La ID única de esa interacción de Talkdesk.
- stream_url: La URL de WebSocket donde se está transmitiendo el audio.
- correlation_id: La ID que identifica la llamada durante toda su duración, para todas nuestras interaction_id correspondientes a esa llamada.
- type: El flujo multimedia, que puede ser entrante o saliente.
Ejemplo:
|
Mensaje Media
El mensaje "Media" encapsula los datos de audio en bruto.
| Parámetro | Descripción |
| evento | El valor de los medios. |
| sequenceNumber | Número utilizado para llevar un registro del orden de envío de los mensajes. El primer mensaje comienza con "1"y luego se incrementa por cada mensaje. |
| media | Un objeto que contiene los metadatos multimedia y la carga útil. |
| media.track | Uno de entrada o salida. |
| media.chunk | El fragmento del mensaje. El primer mensaje comenzará con "1" y se irá incrementando con cada mensaje subsiguiente. |
| media.timestamp | Presentation Timestamp in Milliseconds desde el inicio de la transmisión. |
| media.payload | El audio crudo está codificado en base64 |
| streamSid | El 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"
}
Mensaje Stop
El mensaje "Stop" se enviará cuando la conversación se detenga o la llamada haya terminado.
| Parámetro | Descripción |
| evento | 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 por cada mensaje. |
| stop | Un objeto que contiene metadatos de Stream. |
| stop.accountSid | El identificador de Account que ha creado el Stream. |
| stop.callSid | El identificador de Call que inició el Stream. |
| streamSid | El identificador único del Stream |
Ejemplo:
{
"event": "stop",
"sequenceNumber": "5",
"stop": {
"accountSid": "AC123",
"callSid": "CA123"
},
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0"
}Para recibir más información sobre Conversation Orchestrator, por favor, consulte nuestra documentación.