Conversation Orchestrator: Transmisión de audio bidireccional

Nota: El componente "Connect to Autopilot Voice" tiene costes de uso adicionales.
 

El Talkdesk Conversation Orchestrator permite la transmisión de audio en tiempo real entre Talkdesk y soluciones de terceros.

Este producto permite compartir el audio de una llamada entrante con un sistema externo que puede conectarse a un tercero, como Autopilot u otro sistema. Esto le permite "Bring Your Own Bot" (BYOB - Traer su propio bot) a Talkdesk utilizando el componente "Connect to Autopilot Voice Studio para transmitir el audio de manera bidireccional. Al seleccionar la opción "External Voice Stream" en el componente, el audio de la llamada se transmite a un WebSocket de terceros, que incluye mensajes de orquestación e información contextual sobre la interacción de voz.

Hay distintos tipos de events que ocurren durante el ciclo de vida de la transmisión. Estos events se representan mediante WebSocket Messages:

  • Connected: El primer mensaje enviado, una vez establecida la conexión WebSocket.
  • Start: El mensaje que contiene los metadatos necesarios sobre el flujo de la conversación que se envía inmediatamente después del mensaje "Connected". Solo se envía una vez al principio de la transmisión de la conversación.
  • Media: El mensaje que encapsula los datos de audio en bruto.
  • Stop: Se envía un mensaje stop cuando se detiene el flujo de conversación o finaliza la llamada.

Al realizar una transmisión de audio bidireccional, usted puede enviar los siguientes mensajes WebSocket desde su sistema a Talkdesk:

  • Media: Un mensaje en el que puede encapsular los datos de audio en bruto.
  • Mark: Un mensaje que se puede enviar después del mensaje Media para recibir una notificación cuando se haya completado la transmisión de audio.
  • Stop: Un mensaje que indica que la transmisión de audio debe detenerse y cuál es el resultado de la operación.
  • Clear: Un mensaje que interrumpe las transmisiones de audio de todos los mensajes Media.

El siguiente diagrama muestra cómo funcionan las transmisiones de audio unidireccionales y bidireccionales a través de mensajes WebSocket:

image1.png

Para comprender la estructura de estos mensajes WebSocket, revise la sección WebSocket Messages protocols a continuación.

El componente "Connect to Autopilot Voice" se puede añadir en cualquier paso de Studio flow y se puede configurar de la siguiente manera.

Al aprovechar la función de "stream and hold", la transmisión comenzará cuando la llamada pase por el componente y solo se detendrá cuando usted envíe un mensaje de "Stop" informando del éxito, el fracaso o la necesidad de que la llamada se derive a un agente.

1. Añada un componente Connect to Autopilot Voice a una salida de cualquier componente del Studio. En este caso, lo añadiremos a la salida del componente "Initial step" con fines de demostración (salga presionando "OK").

2. En el componente "Connect Autopilot", seleccione "External Voice Stream" y configure el "Voice stream endpoint" con la conexión WSS a través de la cual se transmitirá el audio (tanto de entrada como de salida). La selección de "External Voice Stream" activa el Conversation Orchestrator, el cual comienza a desencadenar diversos events mediante mensajes WebSocket.

También puede definir encabezados HTTP personalizados en esta conexión. Vaya a este enlace para obtener más información.
 

3. Si necesita que la llamada se transfiera a un agente en vivo, configure la salida "Escalation" y añada un paso de componente de Assignment and Dial.

4. Configure las salidas "Connect Autopilot" según el flujo que desee definir. En este ejemplo, la salida "Execution Error" también se ha configurado para la opción "Assignment and Dial ", de modo que, en caso de error, un agente atienda a la persona que llama.

 

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.

 

Mensajes enviados desde Talkdesk al Partner
 

Mensaje Connected

"Connected" es el primer mensaje enviado una vez que se establece una conexión WebSocket.

Parámetro Descripción
evento El valor de connected
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 Start

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 El número utilizado para llevar un registro del orden de envío de mensajes. El primer mensaje empieza por "1" y luego se incrementa.
inicio Un objeto que contiene metadatos del flujo.
start.streamSid El identificador único del flujo.
start.accountSid El identificador de la cuenta que creó el flujo.
start.callSid El identificador de la llamada desde donde se inició el flujo.
start.tracks Un array de valores que indica qué flujos multimedia esperar en los mensajes posteriores. Los valores incluyen entrada y salida.
start.customParameters Un objeto que representa los Custom Parameters establecidos al definir el flujo (explicados más adelante).
start.mediaFormat Un objeto que contiene el formato de la carga útil en los mensajes multimedia.
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 frecuencia de muestreo en hercios de los próximos 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 siempre será 1.
streamSid El identificador único del flujo.

Ejemplo:

{ 
"event": "start",  
"sequenceNumber": "2", 
"start": { 
  "streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0", 
  "accountSid": "AC123", 
  "callSid": "CA123", 
  "tracks": [ 
    "inbound", 
    "outbound" 
  ],
  "customParameters": {
    "extra_parameters":{
       "initial_timestamp":"1668428901027","flow_id":""},
    "account_id": "5cee471c844dda000d67a428",
    "interaction_id": "073c9e0e1ab44c8a8085da2b08c1ecf9",
    "stream_url": "wss://my.service.com/socket/messages",
     "correlation_id": "614c537a2021746aead25356",
    “business_hours”:“”,
    "type": "inbound",
     "initial_timestamp": "2022-01-16T16:12:47.254Z",
    “flow_id”: “”
  }
  "mediaFormat": { 
    "encoding": "audio/x-mulaw", 
    "sampleRate": 8000, 
    "channels": 1 
  } 
},
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0"
}

Para enriquecer el mensaje de inicio producido por Talkdesk Global Communications Network (GCN), añadiremos 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 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 de esa llamada.
  • business_hours: Para la transmisión de audio unidireccional, este campo estará vacío. Esto se utiliza en transmisiones bidireccionales para indicar la información de las business hours del agente.
  • type: El flujo multimedia que puede ser entrante o saliente.
  • initial_timestamp: La marca de tiempo del momento en que comenzó el flujo.
  • flow_id: Campo obsoleto.

Ejemplo:

"customParameters": {
    "extra_parameters":{
       "initial_timestamp":"1668428901027","flow_id":""},
    "account_id": "5cee471c844dda000d67a428",
    "interaction_id": "073c9e0e1ab44c8a8085da2b08c1ecf9",
    "stream_url": "wss://my.service.com/socket/messages",
     "correlation_id": "614c537a2021746aead25356",
    “business_hours”:“”,
    "type": "inbound",
     "initial_timestamp": "2022-01-16T16:12:47.254Z",
    “flow_id”: “”
}

 

Mensaje Media

El mensaje "Media" encapsula los datos de audio en bruto.

Parámetro Descripción
evento El valor de los medios
sequenceNumber El número utilizado para llevar un registro del orden de envío de los mensajes. El primer mensaje empieza por "1" y luego se incrementa para 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 empezará por "1" y se incrementará con cada mensaje posterior.
media.timestamp Presentation Timestamp in Milliseconds desde el inicio de la transmisión.
media.payload El audio en bruto está codificado en base64
streamSid El identificador único de la transmisión

 

Ejemplo:

{ 
"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 Mark

Cuando desee recibir una notificación indicando que la transmisión de audio ha finalizado, envíe un mensaje "Mark" después del mensaje "Media".

Recibirá un evento de Talkdesk llamado "Mark" con el nombre correspondiente cuando finalice el audio o si no hay audio almacenado en la memoria intermedia.

En caso de que se haya utilizado el mensaje "Clear", también recibirá un evento "Mark" cuando se limpie la memoria intermedia. 

Parámetro Descripción
evento El valor de mark
sequenceNumber Número utilizado para seguir el orden de envío de los mensajes. El primer mensaje empieza por "1" y luego se incrementa para cada mensaje.
mark Un objeto que contiene los metadatos de la marca
mark.name El valor especificado al crear el mensaje de la marca

Ejemplo:

{ 
"event": "mark",
"sequenceNumber": "4",
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0",
"mark": {
  "name": "my label"
}
}


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 empieza por "1" y luego se incrementa para cada mensaje.
stop Un objeto que contiene metadatos de la transmisión
stop.accountSid El identificador de la cuenta que creó la transmisión
stop.callSid El identificador de llamada que inició la transmisión
streamSid El identificador único de la transmisión

Ejemplo:

{ 
"event": "stop",
"sequenceNumber": "5",
"stop": {
   "accountSid": "AC123",
   "callSid": "CA123"
 },
 "streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0" 
}

Mensajes que un Partner puede enviar a Talkdesk

Mensaje Media

Debe utilizar el mensaje "Media" para enviar una transmisión de audio desde su sistema a Talkdesk. 

Los mensajes multimedia se almacenarán en la memoria intermedia y se reproducirán en el orden en que se hayan recibido. Para interrumpir la reproducción de audio almacenada en la memoria intermedia, debe enviar un mensaje "Clear".

Parámetro Descripción
evento El valor de media
streamSid El SID de la transmisión que debe reproducir el audio
media Un objeto que contiene metadatos multimedia y carga útil
media.payload El audio en bruto de mulaw/8000 está codificado en base64

Ejemplo:

{
 "event": "media",
 "streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0",
 "media": {
   "payload": "a3242sadfasfa423242... (a base64 encoded string of 8000/mulaw)"
 }
}


Mensaje Mark

Cuando desee recibir una notificación indicando que la transmisión de audio ha finalizado, envíe un mensaje "Mark" después del mensaje "Media".

Recibirá un evento de Talkdesk llamado "Mark" con el nombre correspondiente cuando finalice el audio o si no hay audio almacenado en la memoria intermedia.

En caso de que se haya utilizado el mensaje "Clear", también recibirá un evento "Mark" cuando se limpie la memoria intermedia. 

Parámetro Descripción
evento El valor de mark
streamSid El SID de la transmisión que debe recibir la marca
mark Un objeto que contiene los metadatos de la marca y la carga útil
mark.name Un nombre específico para sus necesidades que le ayudará a reconocer futuros eventos de marca recibidos

Ejemplo:

{ 
"event": "mark",
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0",
"mark": {
  "name": "my label"
}
}


Mensaje Clear

Para interrumpir la transmisión de audio, envíe un mensaje "Clear". Esto cancelará todos los mensajes "Media" que estén en la memoria intermedia y no se hayan reproducido.

Esto vaciará toda la cola de audio y hará que se le envíe un evento "Mark".

Parámetro Descripción
evento El valor de clear
streamSid El SID del flujo que debe recibir la marca

Ejemplo:

{ 
"event": "clear",
"streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0",
}


Mensaje Stop

Envíe un mensaje "Stop" si desea detener la transmisión de audio y comunicar el resultado de la operación:

  • ok: La transmisión de audio fue exitosa. 
  • error: Se produjo un error durante la transmisión de audio.
  • escalate: La transmisión de audio debe detenerse y la llamada debe transferirse a un agente en vivo.

La siguiente tabla muestra los parámetros que debe enviar en un "Stop" que se encuentra en este mensaje:

Parámetro Descripción
evento El tipo de evento.
stop Un objeto que contiene metadatos de detención e información de carga útil.
stop.command

Una de las opciones "ok"/"error"/"escalate". 

Dependiendo del comando, se sigue una opción de salida diferente en el componente "Connect Autopilot".

stop.ringGroup En caso de redirección, este parámetro indica el ring group al que se redirige la llamada.
streamSid El SID de la transmisión que debe recibir la transmisión detenida.

 

Ejemplo:

{
 "event": "stop",
 "streamSid": "MZ18ad3ab5a668481ce02b83e7395059f0",
 "stop": {
   "command": "escalate",
   "ringGroup": "agents"
 }
}
 


 

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