Conversation Orchestrator: Transmisión de Flujo de Audio Unidireccional

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.

 

Stream_audio_1.png

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.

stream_audio_2.png3. 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:

"customParameters": {
      "extra_parameters": {},
      "account_id": "5ea75fe7aa224700012eae40",
      "interaction_id": "cadc093d381648e98e520739630c47ff",
      "stream_url": "wss://my.service.com/socket/messages",
      "correlation_id": "72d64225890846c39a05616d08d5d5a1",
      "type": "inbound"
}

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.

 

 

 

 

 

 

 

 

 

Volver ""
Por favor, inicie sesión para enviar una solicitud.