Api
Eventos WebSocket
Referência completa dos eventos enviados pelo servidor WebSocket.
Eventos WebSocket
Eventos enviados pelo stcall-ws para os clientes (navegadores dos agentes).
Formato da Mensagem
Todas as mensagens seguem o formato:
{
"type": "<tipo>",
"data": { ... },
"timestamp": "2025-01-15T10:30:45.123Z"
}
Tipos de Mensagem
event
Evento ARI do Asterisk roteado para o agente:
{
"type": "event",
"data": {
"type": "StasisStart",
"channel": {
"id": "1234567890.123",
"name": "SIP/agent-123",
"state": "Ring",
"caller": {
"name": "João Silva",
"number": "+5511999999999"
}
},
"timestamp": "2025-01-15T10:30:45.123Z"
},
"timestamp": "2025-01-15T10:30:45.124Z"
}
system
Mensagem do sistema (informativa):
{
"type": "system",
"data": {
"message": "Connected to stCall WebSocket server",
"severity": "info"
},
"timestamp": "2025-01-15T10:30:45.123Z"
}
Severidades: info, warn, error
command_response
Resposta a um comando enviado pelo agente:
Sucesso:
{
"type": "command_response",
"requestId": "unique-uuid-123",
"data": {
"success": true,
"result": {
"id": "1234567890.123",
"name": "SIP/1001-00000001",
"state": "Down"
}
},
"timestamp": "2025-01-15T10:30:45.124Z"
}
Erro:
{
"type": "command_response",
"requestId": "unique-uuid-123",
"data": {
"success": false,
"error": "Endpoint SIP/1001 not found"
},
"timestamp": "2025-01-15T10:30:45.124Z"
}
pong
Resposta ao heartbeat:
{
"type": "pong",
"timestamp": "2025-01-15T10:30:45.123Z"
}
Eventos ARI
Eventos do Asterisk recebidos via data.type:
StasisStart
Canal entrou na aplicação Stasis (chamada entrante):
{
"type": "StasisStart",
"channel": {
"id": "1234567890.123",
"name": "PJSIP/agent-1001-00000001",
"state": "Ring",
"caller": {
"name": "Nome do Chamador",
"number": "+5511999999999"
},
"connected": {
"name": "",
"number": ""
},
"accountcode": "",
"dialplan": {
"context": "from-trunk",
"exten": "s",
"priority": 1
},
"creationtime": "2025-01-15T10:30:45.123Z"
},
"args": ["incoming", "+5511999999999"]
}
StasisEnd
Canal saiu da aplicação Stasis:
{
"type": "StasisEnd",
"channel": {
"id": "1234567890.123",
"name": "PJSIP/agent-1001-00000001",
"state": "Up"
}
}
ChannelStateChange
Estado do canal mudou:
{
"type": "ChannelStateChange",
"channel": {
"id": "1234567890.123",
"state": "Up"
}
}
Estados possíveis: Down, Ring, Ringing, Up, Busy
ChannelHangupRequest
Requisição de desligamento:
{
"type": "ChannelHangupRequest",
"channel": {
"id": "1234567890.123",
"state": "Up"
},
"cause": 16
}
ChannelDtmfReceived
Tom DTMF recebido:
{
"type": "ChannelDtmfReceived",
"channel": {
"id": "1234567890.123"
},
"digit": "5",
"duration_ms": 100
}
BridgeCreated / BridgeDestroyed
Bridge (ponte) de chamada criada ou destruída:
{
"type": "BridgeCreated",
"bridge": {
"id": "bridge-uuid",
"technology": "simple_bridge",
"bridge_type": "mixing",
"channels": ["channel-1", "channel-2"]
}
}