Skip to main content
O recebimento de mensagens em tempo real usa WebSocket puro, com um protocolo próprio de mensagens JSON. Cada mensagem trocada tem um campo metodo que identifica a operação.

Endpoint

Não há path nem query string — a conexão abre direto na raiz. Note que a porta é a 2083, diferente da porta HTTPS usada pelas rotas REST.

Fluxo de conexão

1

Abra o socket

Conecte em wss://apiv1.hustapp.com:2083.
2

Autentique

Envie o metodo: "login" com seu token e aguarde a confirmação.
3

Assine os eventos

Envie um adicionarEvento para cada tipo de evento que quer receber.
4

Mantenha a conexão viva

Envie um ping a cada 10 segundos.

Autenticando

Assim que o socket abrir, envie:
O servidor responde:
Se autenticado vier false, a conexão continua aberta mas nenhum evento será entregue. Verifique o token e reconecte.

Assinando eventos

Apenas autenticar não basta: você precisa declarar quais eventos quer receber. Envie uma mensagem por evento, depois da confirmação do login.
Para cancelar uma assinatura, use removerEvento com o mesmo valor de evento.
Sem pelo menos um adicionarEvento, a conexão fica aberta e autenticada, mas nenhuma mensagem é entregue.

Mantendo a conexão viva

Envie um ping a cada 10 segundos:
O servidor responde imediatamente:
Use o pong para monitorar a saúde da conexão: se os pongs pararem de chegar, o socket provavelmente está morto mesmo que ainda não tenha emitido um evento de fechamento. Nesse caso, force a reconexão.

Recebendo uma mensagem

Eventos de mensagem chegam como um objeto JSON sem o campo metodo. Identifique-os pela presença de id_mensagem_whatsapp.
O evento entrega apenas os IDs de conexão, contato e departamento. Mantenha um cache local dessas entidades ao conectar, em vez de consultar a API a cada mensagem recebida.

Baixando mídia

Mensagens de mídia não trazem o conteúdo binário no evento. Busque separadamente com o id_mensagem:
A resposta é o binário do arquivo. O formato vem no cabeçalho Content-Type da resposta.

Reconexão

Se a conexão cair, reconecte e refaça o fluxo completo: autenticar e assinar os eventos novamente. As assinaturas não persistem entre conexões.
Não há reenvio de eventos perdidos. Mensagens que chegarem enquanto sua aplicação estiver desconectada não serão entregues na reconexão.Se a sua integração não pode perder mensagens, reconcilie após cada reconexão consultando os atendimentos do período pela API REST, ou use webhook, que tem retentativa.

Exemplo

Manter uma conexão WebSocket exige um processo rodando continuamente. Em PHP, isso significa um script CLI em loop sob supervisor, não uma requisição servida pelo Apache ou Nginx — se a sua stack PHP é web tradicional, o webhook costuma encaixar melhor.