Websocket App
Introducción
En una Websocket App, la centralita se conecta mediante websockets a la lógica remota y envía mensajes en formato JSON con la información de la llamada y el audio recibido del llamante en tiempo real. Además acepta mensajes con audio para reproducir al llamante.
El uso habitual de esta aplicación es la de integrar con sistemas de IA.
Cuando una llamada de centralita es enviada a esta aplicación, se realizará una conexión por websockets a la URL configurada y se enviará un mensaje inicial con la información de la llamada (id, número llamante, etc). A partir de ese momento se enviarán mensajes con el audio encodeado en base64.
Mensajes
connect
Cuando la pbx se conecta a la aplicación remota por websockets es el primer mensaje que se envía. En este mensaje está la información de la llamada.
Propiedades del mensaje
Nombre | Tipo | Valor por defecto | Opcional | Descripción |
---|---|---|---|---|
type | Enumerado | - | No | El tipo de mensaje, en este caso sería "connect" |
websocketAppId | uuid | - | No | Id del comportamiento (sirve como referencia por si se manejan diferentes comportamientos en la misma url) |
pbxId | uuid | - | No | Id interno de la centralita |
pbxDomain | String | - | No | Dominio SIP de la centralita |
callIdNumber | String | - | No | Número del llamante |
callIdName | String | - | No | Nombre del llamante si se ha establecido por algún método |
audioType | Enumerado | - | No | El valor puede ser PCMU o PCMA, de momento sólo esta soportado PCMU |
created | long | - | No | Fecha de creación en formato timestamp en milisegundos. |
Ejemplo de mensaje
{
"type": "connect",
"websocketAppId": "c47e89b46adc4dbd815230346a6761a7",
"pbxId": "0e835106e5b446b0-8b449bd4618713cf",
"pbxDomain": "mitestpbx.vpbx.me",
"callId": "9e6d4eca94344862a870b377f3abe231",
"callerIdNumber": "911123123",
"callerIdName": "Test Client",
"audioType": "PCMU",
"created": 1756800615000
}
audio
El sistema genera estos eventos cada 20ms aproximadamente con el audio recibido del llamante. Éste mismo mensaje también lo tiene que enviar la aplicación remota con el audio que se quiere reproducir al cliente.
Propiedades del mensaje
Nombre | Tipo | Valor por defecto | Opcional | Descripción |
---|---|---|---|---|
type | Enumerado | - | No | El tipo de mensaje, en este caso sería "audio" |
websocketAppId | uuid | - | No | Id del comportamiento (sirve como referencia por si se manejan diferentes comportamientos en la misma url) |
pbxId | uuid | - | No | Id interno de la centralita |
pbxDomain | String | - | No | Dominio SIP de la centralita |
audio | String | - | No | Audio en el formato especificado en la conexión (PCMU/PCMA) y encodeado en base64. |
Ejemplo de mensaje
{
"type": "audio",
"websocketAppId": "c47e89b46adc4dbd815230346a6761a7",
"pbxId": "0e835106e5b446b0-8b449bd4618713cf",
"pbxDomain": "mitestpbx.vpbx.me",
"callId": "9e6d4eca94344862a870b377f3abe231",
"audio": "fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fXx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx..."
}
dtmf
Cuando el llamante pulsa un dígito de su teclado, llega este evento por el websocket.
Propiedades del mensaje
Nombre | Tipo | Valor por defecto | Opcional | Descripción |
---|---|---|---|---|
type | Enumerado | - | No | El tipo de mensaje, en este caso sería "dtmf" |
websocketAppId | uuid | - | No | Id del comportamiento (sirve como referencia por si se manejan diferentes comportamientos en la misma url) |
pbxId | uuid | - | No | Id interno de la centralita |
pbxDomain | String | - | No | Dominio SIP de la centralita |
digit | String | - | No | Dígito pulsado |
Ejemplo de mensaje
{
"type": "dtmf",
"websocketAppId": "c47e89b46adc4dbd815230346a6761a7",
"pbxId": "0e835106e5b446b0-8b449bd4618713cf",
"pbxDomain": "mitestpbx.vpbx.me",
"callId": "9e6d4eca94344862a870b377f3abe231",
"digit": "1"
}
command
La aplicación remota, además del mensaje de audio, puede enviar este comando para finalizar o transferir la llamada. Además, también puede parar la reproducción de un audio que ya enviado y esta buffereado.
Propiedades del mensaje
Nombre | Tipo | Valor por defecto | Opcional | Descripción |
---|---|---|---|---|
type | Enumerado | - | No | El tipo de mensaje, en este caso sería "command" |
websocketAppId | uuid | - | No | Id del comportamiento (sirve como referencia por si se manejan diferentes comportamientos en la misma url) |
pbxId | uuid | - | No | Id interno de la centralita |
pbxDomain | String | - | No | Dominio SIP de la centralita |
command | Enumerado | - | No | Los valores pueden ser HANGUP,BREAK,TRANSFER |
data | String | - | Sí | Actualmente sólo se usario en el comando "TRANSFER" para transferir a un destino de la centralita |
Ejemplo de mensaje para colgar una llamada
{
"type": "command",
"websocketAppId": "c47e89b46adc4dbd815230346a6761a7",
"pbxId": "0e835106e5b446b0-8b449bd4618713cf",
"pbxDomain": "mitestpbx.vpbx.me",
"callId": "9e6d4eca94344862a870b377f3abe231",
"command": "HANGUP"
}
Ejemplo de mensaje para parar la reproducción de un audio en buffer.
{
"type": "command",
"websocketAppId": "c47e89b46adc4dbd815230346a6761a7",
"pbxId": "0e835106e5b446b0-8b449bd4618713cf",
"pbxDomain": "mitestpbx.vpbx.me",
"callId": "9e6d4eca94344862a870b377f3abe231",
"command": "BREAK"
}
Ejemplo de mensaje para transferir la llamada a un destino de la centralita
{
"type": "command",
"websocketAppId": "c47e89b46adc4dbd815230346a6761a7",
"pbxId": "0e835106e5b446b0-8b449bd4618713cf",
"pbxDomain": "mitestpbx.vpbx.me",
"callId": "9e6d4eca94344862a870b377f3abe231",
"command": "TRANSFER",
"data": "QUEUE::10"
}