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 com 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.
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 o SDK 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
. Se estiver usando o Chatwoot Cloud, a URL é wss://app.chatwoot.com/cable
.
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 tokens PubSub disponíveis no Chatwoot:
-
Token PubSub de Usuário: Este token tem os privilégios de um agente/admin e recebe todos os eventos listados no documento. Você pode obter o token chamando a API de Perfil.
-
Token PubSub de Contato: Chatwoot gera um token exclusivo para cada sessão de contato. Este token é usado para conectar-se ao WebSocket e receber atualizações em tempo real para essa sessão. Quando um contato é criado por meio das APIs públicas, o
pubsub_token
está incluído na resposta. Esse token dá acesso apenas aos eventos da sessão atual, comoconversation.created
,message.created
, entre outros.
Como conectar ao WebSocket do Chatwoot?
Para se conectar ao WebSocket do Chatwoot, use o comando subscribe
e inclua seu pubSubToken
, accountId
e userId
(caso use um token de usuário) na solicitação de conexão. Aqui está um exemplo de código:
const stringify = (payload = {}) => JSON.stringify(payload);
const pubSubToken = "<contact/user-pub-sub-token>";
const accountId = "<seu-account-id>";
const userId = "<user-id>";
const connection = new WebSocket("wss://app.chatwoot.com/cable");
connection.send(
stringify({
command: "subscribe",
identifier: stringify({
channel: "RoomChannel",
pubsub_token: pubSubToken,
account_id: accountId,
user_id: userId,
}),
})
);
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 a cada 30 segundos.
-
Atualizar presença de agente/admin:
Envie o seguinte payload ao servidor:
const userPayload = stringify({
command: "message",
identifier: stringify({
channel: "RoomChannel",
pubsub_token: "<user-pubsub-token>",
account_id: accountId,
user_id: userId,
}),
data: stringify({ action: "update_presence" }),
});
connection.send(userPayload);
-
Atualizar presença de contato:
Envie o seguinte payload:
const agentPayload = stringify({
command: "message",
identifier: stringify({
channel: "RoomChannel",
pubsub_token: "<user-pubsub-token>",
}),
data: stringify({ action: "update_presence" }),
});
connection.send(agentPayload);
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 para oferecer uma experiência em tempo real e aumentar a eficiência de suas operações de atendimento!