Principal Recursos Avançados Como configurar uma conexão WebSocket?

Como configurar uma conexão WebSocket?

Última atualização em Oct 17, 2024

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, como conversation.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!