Pular para o conteúdo principal

Conversas / Fila

Lista de conversas com as sub-abas Triagem IA, Aguardando na Fila, Meus Atendimentos, Departamentos e Encerrados

Um atendimento aberto, com o painel Financeiro do cliente à direita

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 diagrade semanal normalplantã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.