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"]
  }
}
Copyright © 2026