Conversas / Fila


Tela principal de atendimento ao cliente. Três painéis lado a lado (as larguras são ajustáveis arrastando a alcinha entre eles — a largura ajustada vira o novo padrão de abertura).
Todo atendimento recebe um protocolo sequencial por ano: FLOW{ano}{6 dígitos} (ex.: FLOW2026000000). O contador reinicia em zero a cada virada de ano, sem risco de colisão.
Lista de conversas (painel esquerdo)
5 sub-abas: Triagem IA, Aguardando na Fila, Meus Atendimentos, Meus Departamentos, Encerrados. O botão de busca (lupa) filtra a lista da aba atual por nome, CPF, protocolo ou telefone.
Cada item mostra avatar, nome (com "(Cliente não vinculado)" enquanto o contato não foi identificado — veja Vincular Cliente), prévia da última mensagem, horário/indicador de não-lida, etiquetas vinculadas e — a partir da fila em diante — o departamento, colorido com a cor cadastrada em Departamento / Filas.
Thread de mensagens (painel central)
Histórico da conversa com o cliente, tag do canal (WhatsApp/Instagram/Telegram), protocolo, tempo em atendimento. O composer embaixo tem áudio, anexo, mensagens rápidas (digite /) e uma caixa de texto que cresce automaticamente — Enter envia, Shift+Enter quebra linha.
Ações de ownership/agente/participante (assumir, transferir, ativar/parar agente, etc.) geram uma mensagem de sistema na própria thread (linha centrada tipo "— Fulano assumiu o atendimento —"), contando a história da conversa, além de ficarem registradas no Log de Atividades.
Áudio no composer
O ícone de microfone grava de verdade (pede permissão do navegador na primeira vez). Três estados: gravando (indicador vermelho + cronômetro + cancelar), pré-visualização (ouvir antes de mandar, com descartar/enviar) e envio real — a mensagem aparece no chat com um player de áudio de verdade. Sempre vai como áudio; veja transcrição de áudio abaixo pra saber quando o texto fica disponível.
Transcrição de áudio
Áudio mandado pelo cliente é transcrito automaticamente assim que chega, sem precisar de nenhum clique — o Agente de IA usa esse texto pra "entender" o cliente mesmo com o agente desligado naquela conversa específica, e o texto fica disponível pro atendente humano ler também. Áudio gravado por humano ou pela IA não transcreve sozinho — cada bolha ganha um botão pra pedir a transcrição sob demanda, se precisar.
Painel de informações do cliente (painel direito)
Abas por ícone: geral (dados do cliente, observações, motivo do atendimento, tags), Copiloto de IA (veja abaixo), arquivos, faturas, configurações.
Botões de ação: Vincular Cliente/Desvincular Cliente, Atribuir a Mim/Desatribuir, Visualizar Dashboard (do cliente), Solicitar Chamada com WhatsApp, Ativar Agente/Parar Agente, + Participante, Assumir Atendimento (ou Transferir Atendimento), Encerrar.
Fluxo Triagem → Fila → atribuição automática
Toda conversa nova nasce em Triagem IA: só o Agente de IA atende, sem nenhum humano notificado. Ele identifica o departamento e fixa a tag no topo, e continua sozinho enquanto conseguir resolver — veja o comportamento completo do agente autônomo em Agente de IA. Só quando há necessidade real de um humano a conversa entra em Aguardando na Fila do departamento, e só a partir daí dispara alerta (sino/som/badge).
A partir da fila, a atribuição a um atendente é automática: o sistema escolhe, entre os atendentes do departamento que estão Online e abaixo do limite de atendimentos simultâneos configurado, sempre quem tem menos atendimentos em andamento no momento (balanceamento por carga, não é round-robin). Se ninguém estiver elegível, a conversa fica na fila até alguém ficar Online ou liberar capacidade.
- Atribuída a você → some pra Meus Atendimentos.
- Atribuída a um colega → some pra Meus Departamentos.
Aviso de fora do expediente
Se o departamento da conversa tiver um Horário de Atendimento configurado e o momento do handoff cair fora dele, a IA avisa o cliente que o atendimento humano está fora do horário agora, informa quando volta, se coloca à disposição pra ajudar com outros assuntos e reafirma que aquele assunto específico só continua quando um atendente estiver online. A conversa vai pra fila normalmente mesmo assim.
A checagem considera, nessa ordem de prioridade: feriado do dia → grade semanal normal → plantão. A hora usada é sempre a de São Paulo, fixa, não a do navegador de quem está olhando.
Participantes, Transferir Atendimento e Ativar/Parar Agente
Depois que um atendimento tem dono, três ações ficam disponíveis no rodapé do painel de informações:
- Ativar Agente / Parar Agente: liga/desliga o Agente de IA nessa conversa específica. Ver comportamento completo — hoje pedir transferência não desliga mais o agente sozinho; só um humano clicando Parar Agente desliga de verdade (e assume a conversa nesse mesmo clique).
- + Participante: abre um modal com lista de checkbox de todos os colegas — marcar adiciona, desmarcar remove. O participante ganha acesso funcional completo (vê e responde ao cliente normalmente); é só uma questão de visibilidade (a conversa aparece em "Meus Atendimentos" pra ele também), não um novo nível de permissão. A participação é temporária: o dono pode remover qualquer participante a qualquer momento.
- Assumir Atendimento / Transferir Atendimento: é o mesmo botão, que muda de rótulo conforme o estado — "Assumir Atendimento" enquanto ninguém (ou outra pessoa) é dono; assim que o atendimento é seu, vira "Transferir Atendimento" e abre um modal pra escolher outro humano que vira o novo dono de verdade.
Identificação do cliente: Vincular Cliente
No topo do painel de informações, o cabeçalho mostra: nome que o próprio contato definiu no WhatsApp (negrito), depois — só se o atendimento já foi vinculado a um cliente real do ERP — a linha "ID - Nome no ERP", e o telefone com um botão de copiar.
Vincular Cliente é o botão que resolve essa identidade: quando um número desconhecido entra em contato e confirma ser cliente (via CPF), o contato passa a ser ligado ao cadastro correspondente no ERP. Se o número não bate com nenhum cliente cadastrado, fica como "Cliente não vinculado".
Atribuir a Mim / Desatribuir — independente de "Assumir Atendimento" — é uma preferência por contato (chave = telefone): o atendente marca que quer ter prioridade nos atendimentos futuros daquele número sempre que estiver Online. Só o humano aciona/desfaz manualmente; se outro atendente se atribuir pro mesmo telefone, substitui automaticamente o anterior.
Arquivos e Documentos
Duas pastas fixas: Contratos e Fotos e Arquivos ERP — essa segunda espelha a estrutura de armazenamento do próprio ERP em subpastas (Cliente, Contratos, Ordens de Serviço), só aparecendo a subpasta que realmente tiver conteúdo. Sem cliente vinculado, a pasta fica vazia com a dica pra vincular um cliente primeiro. A busca da aba funciona recursivamente em qualquer subpasta.
Notificações e alertas
Sino no topo da lista de conversas com contador de não vistas; a aba do navegador também mostra a contagem. Alerta sonoro e notificação do navegador disparam apenas na transição Triagem→Fila e em handoff explícito — nunca durante a Triagem sozinha.
Visualizar Dashboard (dash do cliente)
Modal com estatísticas daquele cliente específico: cards clicáveis (Atendimentos Recentes, Em Andamento, Encerrados, Índice de Satisfação, Motivo Mais Utilizado, Canal Mais Utilizado) e uma tabela de Contatos. Clicar num card abre uma lista filtrada dos atendimentos daquele cliente; clicar num item abre primeiro um preview, com botão Assumir Atendimento ou Abrir Atendimento.
Copiloto de IA
Chat com IA dentro do painel de informações — pra tirar dúvida interna ou pedir ajuda a redigir uma resposta, sem o cliente ver. Duas sub-abas:
- Privado: o atendente conversa com a IA sem o cliente nunca ver.
- Compartilhado com cliente: usado quando o Agente de IA não sabe responder o cliente e precisa da ajuda de um humano. O atendente instrui a IA, clica Gerar Resposta pra pedir uma sugestão, e essa sugestão só é enviada ao cliente depois que o atendente clica em "Confirmar e enviar" — nunca é enviada automaticamente.
Toda resposta da IA traz uma etiqueta de fonte: Meu conhecimento (Claude), Sistema IXC (contexto do ERP injetado) ou WEB - {título} com link real, quando o modelo genuinamente usou busca na web.
Novo Atendimento
Botão + Novo Atendimento abre um modal pra abrir uma conversa nova: campo "Para" (busca contato ou digita número), "Departamento", canal (WhatsApp disponível; Instagram/Telegram "em breve") e um modelo de mensagem inicial. A conversa nasce em Triagem IA.
Encerramento: manual, automático por inatividade e pesquisa de satisfação
Um atendimento pode fechar de 3 jeitos: a própria IA encerrando (quando resolveu e o assunto se esgotou), um humano clicando Encerrar, ou automaticamente por inatividade. Nos 3 casos, o sistema gera um motivo de atendimento e um resumo automático de observação, lendo a conversa inteira.
- Encerramento automático por inatividade: um job fecha sozinho qualquer atendimento sem resposta do cliente por um tempo configurável (padrão 40 minutos). Na metade desse tempo, o cliente recebe um aviso de que o atendimento vai encerrar por inatividade se ele não responder.
- Pesquisa de satisfação: quando ativa (toggle por tenant), ao encerrar um atendimento o cliente recebe uma pergunta pedindo uma nota de 1 a 5, que alimenta o CSAT usado em Relatórios.
Campos da aba Geral
- Motivo do Atendimento: só mostra os motivos disponíveis pra o departamento da conversa atual.
- Vincular Etiquetas: mesma lógica de escopo por departamento.
- Fixar Atendimento no Topo: reordena essa conversa pro topo da sua sub-aba.
- Pendência de Assunto: registra uma observação sobre o que ficou pendente. Se depois for aberto um novo atendimento com o mesmo cliente, o atendente que pegar recebe um alerta mostrando essa observação + o protocolo do atendimento de origem.
Os 3 campos acima ficam travados (somente leitura) quando o atendimento está na aba Encerrados.