Skip to main content
O Inbox do Switchbord é mais do que uma interface de chat; é uma ferramenta de alta performance para gestão de relacionamento com o cliente.

Mídia e anexos

O suporte a mídia rica permite que os agentes ofereçam um atendimento completo:
  • Suporte a imagem/vídeo: Renderização inline de mídia recebida.
  • Envio de documentos: Compartilhe PDFs, recibos ou manuais diretamente no chat.
  • Mensagens de voz: Ouça as notas de voz dos clientes diretamente no inbox.
  • Arrastar e soltar: Faça upload de anexos facilmente arrastando-os para o campo de composição.

Pesquisa e filtragem avançadas

Encontre exatamente o que você precisa em segundos, mesmo entre milhares de conversas.

Pesquisa global

Pesquise por palavras-chave em todo o histórico de mensagens. O mecanismo indexa tanto mensagens recebidas quanto enviadas para recuperação rápida.

Filtragem de conversas

Filtre a visualização do inbox por:
  • Assignee: Veja as conversas tratadas por membros específicos da equipe.
  • Tags: Explore segmentos específicos (por exemplo, “Urgente”, “Lead”).
  • Status: Alterne entre os estados Open, Pending e Resolved.
  • Não lidas / Não respondidas: Concentre a lista nas conversas que ainda precisam de atenção do operador.
  • Groups: Mostre apenas conversas de grupo do WhatsApp identificadas por metadados, úteis para pilotos internos de equipe e operações de coortes de turismo.
  • Última interação: Encontre conversas que estão inativas por um período específico.

Conversas em grupo do WhatsApp

O Switchbord pode marcar conversas como grupos por meio de conversations.metadata e exibi-las no inbox por meio de uma pílula Groups ao lado dos filtros de conversa. Este primeiro lançamento é uma base de visibilidade e filtragem: o gerenciamento completo do ciclo de vida de grupos, o gerenciamento de participantes, os controles de link de convite e as restrições de envio específicas de grupo permanecem como trabalho futuro.

Saúde da conexão

Keepalive em tempo real e o banner de conexão

O inbox depende de um WebSocket persistente do Supabase Realtime para exibir mensagens recebidas em tempo real. Abas do navegador em segundo plano ou “adormecidas” reduzem a frequência dos timers, e o sistema operacional pode encerrar esse socket sem que a aba perceba — a clássica falha em que “o app parece fora do ar até eu fazer um hard-refresh”. Um hook useRealtimeKeepalive agora mantém a conexão íntegra:
  • Ao despertar a aba (visibilitychange → visible, focus da janela, ou o evento online do navegador), ele reconecta o socket e os canais em tempo real, se estiverem instáveis, e sempre executa uma nova busca de recuperação das conversas e da conversa aberta — uma aba adormecida geralmente perdeu eventos, mesmo que o próprio socket tenha sobrevivido.
  • Uma verificação de heartbeat a cada 20 segundos, apenas enquanto a aba está visível, confirma que o socket ainda reporta estar conectado. Caso contrário, ele se recupera automaticamente — a conexão não pode permanecer silenciosamente inativa por tempo indefinido.
  • Rajadas de despertar são agrupadas (debounced) em uma única rodada de recuperação, já que visibilitychange, focus e online costumam disparar juntos.
O inbox exibe esse estado por meio de um banner visível acima da lista de conversas, localizado em todos os 7 idiomas do app:
Todo o propósito deste recurso é garantir que o inbox nunca pareça estar em tempo real enquanto na verdade está desconectado. Se você vir conversas obsoletas sem nenhum banner, isso é um bug — registre-o em vez de assumir que um hard-refresh corrigiu silenciosamente algo que estava quebrado.

Abas de conversa persistentes

Acima do painel de chat, o inbox mantém abas no estilo Chrome para as conversas que um operador tem abertas — assim, alternar entre algumas conversas ativas não exige voltar à barra lateral a cada vez.
  • As abas têm um limite de 8 — abrir uma nona conversa descarta a aba mais antiga.
  • Desde a v0.18.14/v0.18.22, as abas persistem entre atualizações de página (F5 manual, atualização de um server component, ou uma remontagem causada por tempo real) via localStorage, isoladas por workspace (switchbord.inbox.tabs.<workspaceId>), de forma que as abas nunca se misturem entre workspaces. Leituras/escritas são seguras para SSR e tolerantes a valores armazenados corrompidos ou vazios.
  • Uma aba cuja conversa tem mensagens recebidas não lidas recebe o mesmo destaque esmeralda de uma linha não lida na lista de conversas — preenchimento, um destaque na borda superior, um ponto esmeralda e um título em negrito. A aba ativa nunca mostra como não lida (visualizar uma conversa a marca como lida).
  • Cada aba também exibe o status ao vivo do GB-Agent “Draft with me” daquela conversa (violeta/pulsante enquanto gera, verde quando pronto, âmbar em handoff, vermelho em falha, oculto quando ocioso) — veja Conector gb-agent → Draft with me para a semântica completa do indicador de status.

Integração com CRM

O Inbox está integrado de forma estreita com o banco de dados de contatos:
  • Barra lateral de contato: Veja perfis detalhados de clientes, incluindo campos personalizados e atividade passada, sem sair da conversa.
  • Gerenciamento de tags: Adicione ou remova tags em tempo real para atualizar o segmento de um contato.
  • Resolução de avatar: Busca automaticamente avatares de perfis públicos ou integrações de CRM, para ajudar os agentes a reconhecerem contatos frequentes.

Ferramentas de produtividade

  • Respostas rápidas: Templates pré-definidos para perguntas comuns, garantindo respostas rápidas e consistentes.
  • Notas internas: Deixe comentários privados para outros membros da equipe dentro de uma conversa.
  • Lógica de atribuição: Roteie conversas manual ou automaticamente para o agente ou equipe correta.