Composables
Composables
Composables são funções reativas reutilizáveis. No stCall, são auto-importados pelo Nuxt.
WebRTC
useWebRTCPhone
Arquivo: composables/webrtc/useWebRTCPhone.ts
Cliente SIP.js para chamadas WebRTC via Asterisk PJSIP.
const phone = useWebRTCPhone()
Estado reativo:
| Propriedade | Tipo | Descrição |
|---|---|---|
isRegistered | Ref<boolean> | Registrado no Asterisk |
callState | Ref<CallSession | null> | Estado da chamada |
localStream | Ref<MediaStream | null> | Stream do microfone |
remoteStream | Ref<MediaStream | null> | Stream remoto |
Métodos:
| Método | Parâmetros | Descrição |
|---|---|---|
register | config: WebRTCPhoneConfig | Registrar no Asterisk |
unregister | - | Desregistrar |
call | number: string | Fazer chamada |
answer | - | Atender chamada entrante |
reject | - | Rejeitar chamada entrante |
hangup | - | Desligar chamada |
hold | enable: boolean | Espera |
mute | enable: boolean | Silenciar |
sendDTMF | digit: string | Enviar tom DTMF |
Config de registro:
interface WebRTCPhoneConfig {
wsServer: string // 'wss://dominio:8089/ws'
domain: string // 'dominio.com'
username: string // 'agent-1001'
password: string
displayName?: string
}
useWebRTCIntegration
Arquivo: composables/webrtc/useWebRTCIntegration.ts
Ponte entre WebRTC e eventos ARI.
const { phone, isIntegrated } = useWebRTCIntegration()
- Sincroniza estado WebRTC com
callStore - Detecta hangup remoto via ARI e encerra WebRTC
isIntegrated= WebRTC registrado + WebSocket conectado
Chamadas
useCallDuration
Arquivo: composables/calls/useCallDuration.ts
Timer automático de duração da chamada.
const { callDuration, startTimer, stopTimer } = useCallDuration(() => activeCall.value)
| Retorno | Tipo | Descrição |
|---|---|---|
callDuration | Ref<number> | Duração em segundos |
startTimer | () => void | Iniciar manualmente |
stopTimer | () => void | Parar manualmente |
- Inicia automaticamente quando a chamada fica ativa
- Para quando a chamada termina
- Limpa intervals no
onUnmounted
useCallFormatters
Arquivo: composables/calls/useCallFormatters.ts
Formatadores de dados de chamada.
const { formatDuration, formatPhoneNumber } = useCallFormatters()
formatDuration(125) // "02:05"
formatDuration(3665) // "01:01:05"
| Método | Entrada | Saída |
|---|---|---|
formatDuration | seconds: number | "MM:SS" ou "HH:MM:SS" |
formatPhoneNumber | number: string | Formato brasileiro |
useCallControls
Arquivo: composables/calls/useCallControls.ts
Ações de controle de chamada (mudo, espera, transferência, desligar).
useCallLifecycle
Arquivo: composables/calls/useCallLifecycle.ts
Ciclo de vida completo da chamada (iniciar, atender, encerrar).
useCallHandler
Arquivo: composables/calls/useCallHandler.ts
Handler de eventos de chamada.
useCallEvents
Arquivo: composables/calls/useCallEvents.ts
Processamento de eventos ARI relacionados a chamadas.
useCallStatus
Arquivo: composables/calls/useCallStatus.ts
Gerenciamento de status da chamada.
useCallHistoryFilters
Arquivo: composables/calls/useCallHistoryFilters.ts
Filtros para o histórico de chamadas.
useRecordingPlayer
Arquivo: composables/calls/useRecordingPlayer.ts
Reprodutor de gravações de chamadas.
WebSocket
useWebSocketConnection
Arquivo: composables/ws/useWebSocketConnection.ts
Gerencia conexão WebSocket com stcall-ws.
useWebSocketCommands
Arquivo: composables/ws/useWebSocketCommands.ts
Envio de comandos ao stcall-ws.
useWebSocketHeartbeat
Arquivo: composables/ws/useWebSocketHeartbeat.ts
Ping/pong para manter conexão viva.
useWebSocketReconnection
Arquivo: composables/ws/useWebSocketReconnection.ts
Lógica de reconexão com backoff exponencial.
useWebSocketMessageRouter
Arquivo: composables/ws/useWebSocketMessageRouter.ts
Roteamento de mensagens recebidas do WS.
useAsteriskEventHandler
Arquivo: composables/ws/useAsteriskEventHandler.ts
Processamento de eventos Asterisk recebidos via WS.
Utilitários
useCommandExecutor
Arquivo: composables/utils/useCommandExecutor.ts
Executor de operações com toast e logging integrados.
const { execute } = useCommandExecutor()
const result = await execute({
action: async () => { /* operação */ },
successMessage: { title: 'OK', detail: 'Feito' },
errorMessage: 'Falhou',
showSuccessToast: true,
showErrorToast: true,
logPrefix: 'MyModule',
})
useAuthAPI
Arquivo: composables/useAuthAPI.ts
API de autenticação (login, logout, verificação de token).
useTokenStorage
Arquivo: composables/useTokenStorage.ts
Persistência de token JWT e dados de autenticação no localStorage.
useSingleInstance
Arquivo: composables/useSingleInstance.ts
Garante que apenas uma aba do stCall esteja ativa por agente. Exibe overlay em abas duplicadas.
useDialer
Arquivo: composables/useDialer.ts
Lógica do discador (input, validação, teclado numérico).
useGlobalToast
Arquivo: composables/useGlobalToast.ts
Toast global acessível em qualquer composable.
Agente
useAgentConnection
Arquivo: composables/agent/useAgentConnection.ts
Gerenciamento de conexão do agente (conectar/desconectar).
useAgentStatus
Arquivo: composables/agent/useAgentStatus.ts
Gerenciamento de status do agente (disponível, em chamada, etc.).
Áudio
useAudioLevel
Arquivo: composables/audio/useAudioLevel.ts
Monitoramento de nível de áudio do microfone.
useMicTest
Arquivo: composables/audio/useMicTest.ts
Teste de microfone com feedback visual.