Conversation Orchestrator: Transmisión de Audio Unidireccional

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.

Stream_audio_1.png

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.

stream_audio_2.png3. 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": {
     "extra_parameters": {},
     "account_id": "5ea75fe7aa224700012eae40",
     "interaction_id": "cadc093d381648e98e520739630c47ff",
     "stream_url": "wss://my.service.com/socket/messages",
     "correlation_id": "72d64225890846c39a05616d08d5d5a1",
     "type": "inbound"
}

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.

 

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