Como configurar uma conexão WebSocket?

A

Antonio Milesi

Última atualização em Jul 10, 2026

Passos para a conexão em tempo real: obter o token PubSub, conectar ao endpoint /cable, assinar o canal com o comando subscribe e atualizar a presença periodicamente.

O WebSocket estabelece uma conexão contínua entre o cliente e o servidor, permitindo comunicação bidirecional. O Chatwoot utiliza essa conexão para fornecer atualizações em tempo real sobre eventos da plataforma. Para se conectar ao WebSocket do Chatwoot, basta fornecer um token e seguir as instruções de configuração deste guia.

Nota: Este recurso é experimental e a documentação pode mudar a cada nova versão. Além disso, a compatibilidade com versões anteriores não é garantida, então é essencial garantir que você esteja usando a versão mais recente da implementação.

Por que usar uma conexão WebSocket?

A conexão WebSocket permite atualizações de dados em tempo real, o que é ideal para clientes como os SDKs de Android ou iOS do Chatwoot. Isso atualiza o painel sem precisar recarregar a página, melhorando a experiência do usuário e a produtividade dos agentes.

Como configurar uma conexão WebSocket com o Chatwoot?

Para configurar uma conexão WebSocket com o Chatwoot, você precisa iniciar uma conexão com o token de autenticação PubSub fornecido pelo Chatwoot. A URL para conexão é wss://<sua-url-de-instalacao>/cable, substituindo <sua-url-de-instalacao> pelo endereço da sua instância.

Um token PubSub é usado para autenticar o cliente ao se conectar ao serviço PubSub (publicação e assinatura). O cliente deve apresentar esse token para estabelecer a conexão e começar a publicar ou assinar mensagens.

Há dois tipos de token PubSub disponíveis no Chatwoot:

  • Token PubSub de Usuário: tem os privilégios de um agente/administrador e recebe todos os eventos listados neste documento. Você pode obter o token chamando a API de Perfil.

  • Token PubSub de Contato: o Chatwoot gera um token exclusivo para cada sessão de contato. Esse token é usado para conectar-se ao WebSocket e receber atualizações em tempo real daquela sessão. Quando um contato é criado por meio das APIs públicas, o pubsub_token é incluído na resposta. Esse token dá acesso apenas aos eventos da sessão atual, como conversation.created e message.created.

Como conectar ao WebSocket do Chatwoot?

Para se conectar ao WebSocket do Chatwoot, use o comando subscribe. O identificador depende do tipo de token:

  • Com um token de contato, envie somente channel e pubsub_token.
  • Com um token de usuário, envie também account_id e user_id.

No exemplo abaixo, escolha exatamente um dos dois identificadores:

const stringify = (payload = {}) => JSON.stringify(payload);

const contactIdentifier = {
  channel: "RoomChannel",
  pubsub_token: "<token-pubsub-de-contato>",
};

const userIdentifier = {
  channel: "RoomChannel",
  pubsub_token: "<token-pubsub-de-usuario>",
  account_id: "<seu-account-id>",
  user_id: "<seu-user-id>",
};

// Use contactIdentifier para um contato ou userIdentifier para um usuário.
const identifier = contactIdentifier;

const connection = new WebSocket("wss://<sua-url-de-instalacao>/cable");

connection.addEventListener("open", () => {
  connection.send(
    stringify({
      command: "subscribe",
      identifier: stringify(identifier),
    })
  );
});

Como publicar a presença no servidor WebSocket?

Para manter o status dos usuários online no Chatwoot, envie um evento de atualização de presença periodicamente ao servidor.

  • Atualizar presença de agente/administrador

    Envie o seguinte payload ao servidor:

const userPayload = stringify({
  command: "message",
  identifier: stringify(userIdentifier),
  data: stringify({ action: "update_presence" }),
});

connection.send(userPayload);
  • Atualizar presença de contato

    Envie o seguinte payload:

const contactPayload = stringify({
  command: "message",
  identifier: stringify(contactIdentifier),
  data: stringify({ action: "update_presence" }),
});

connection.send(contactPayload);

Payloads WebSocket

Os eventos no Chatwoot podem conter diversos objetos no payload, como Conversation, Contact, User e Message. Cada evento retorna dados específicos dependendo do tipo de objeto e do evento que ocorreu, como conversas criadas, mensagens enviadas ou atualizações de presença.

Agora você está pronto para configurar e utilizar o WebSocket no Chatwoot, oferecendo uma experiência em tempo real e aumentando a eficiência das suas operações de atendimento.