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,PendingeResolved. - 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 deconversations.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 hookuseRealtimeKeepalive agora mantém a conexão íntegra:
- Ao despertar a aba (
visibilitychange → visible,focusda janela, ou o eventoonlinedo 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,focuseonlinecostumam disparar juntos.
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.