Repository navigation
v0.8.0 — Times de atendimento, e a instalação ganha uma API
Atendimento ganha times, a instalação ganha uma API pra integrar por fora, e dois bugs que perdiam mensagem de cliente sem deixar rastro foram fechados.
Destaques
- Times de atendimento. Agrupe atendentes em times e filtre/atribua conversas por time — independente de quem está atribuído individualmente (os dois campos convivem, um não limpa o outro). Um time pode ficar restrito: a conversa some da listagem pra quem está na caixa mas não é do time (abrir por link continua funcionando sempre), com uma exceção pontual pra quem foi atribuído àquela conversa específica.
- API pública
/api/v1, com chave por usuário. Integre sistemas externos sem senha compartilhada: cada integração ganha sua própria chave (X-Api-Key), com o mesmo RBAC e a mesma auditoria de uma sessão normal. Vem junto uma tela própria (API e Webhooks), webhooks de saída com fila e re-tentativa, e agora também envio de mídia (imagem, áudio, vídeo, documento) por upload ou por URL. - Atendente padrão do canal aceita um agente de IA. Antes só uma pessoa podia nascer dona de uma conversa nova; dá pra apontar um agente de IA específico também.
- Janela própria da IA nos canais Meta. Com a tag de atendimento ligada, o humano podia responder por até 7 dias enquanto a IA já tinha parado às 24h — mas o painel seguia oferecendo os toggles de nota privada da IA nesse intervalo, e a instrução do atendente era descartada sem aviso nenhum. Corrigido. Canal sem template aprovado passa a bloquear o envio no compositor em vez de deixar a mensagem falhar depois.
- Descrição de imagem por direção. Dá pra escolher se a IA descreve foto recebida, enviada pelo atendente e/ou em nota privada, separadamente — o mesmo controle que já existia pra áudio.
Corrigido — mensagens que sumiam sem aviso
- Mensagem do cliente que desaparecia sem deixar rastro. O horário da mensagem chega do GOWA como texto, não como número; um valor no formato errado quebrava a gravação depois que a mensagem já tinha saído da fila — ela sumia sem bolha, sem erro, sem retentativa. Ficou 6 dias em produção antes de ser notado. A conversa parecia só um cliente que abriu o chat e não digitou nada.
- Citação órfã quando o cliente manda várias mensagens seguidas. Só a última do grupo guardava um id; responder (clique direito) a qualquer uma anterior gravava uma citação pra um id que não existe, e a bolha mostrava "Mensagem original indisponível". Media 33 casos em ~2.100 citações, cerca de 1 por dia. Cada mensagem passa a gravar o próprio id.
- A IA parava de se despedir ao transferir pra um atendente. Uma correção anterior fez a IA calar a resposta assim que a transferência era decidida — inclusive a própria frase de despedida daquele turno. 226 transferências mudas em produção; a IA volta a se despedir antes de sair de cena.
- Mensagem manual que falhava ao enviar passava a assinar como "IA" na conversa; volta a assinar como o atendente que tentou.
- Foto sem legenda mandada em grupo perdia o nome de quem mandou — a bolha assinava com o nome do grupo.
Segurança
- Senha do banco ficava em claro na tela de auditoria. Um provedor específico (identificado internamente como
nexus_dsn) não estava na lista de campos mascarados e apareceu sem proteção em/auditpor semanas. Corrigido, e a lista de nomes sensíveis ficou mais abrangente. - Token do Telegram podia vazar no log ou na resposta de erro quando uma chamada à API do Telegram falhava; agora é mascarado.
Também nesta versão
- Descrição de imagem deixava de respeitar nota privada e virava resposta pública pro cliente.
- Cabeçalho de mídia de um template aprovado passa a aparecer como bolha no histórico da conversa.
- Etiquetas da lista de conversas passam a ser da conversa, não do contato — duas conversas do mesmo contato não compartilham mais etiqueta.
- F5 nas telas API e Webhooks e Sons parava de achar a página.
- Arrastar a barra do áudio pra trás (retroceder) voltou a funcionar.
- Cursor do texto no compositor caindo fora do lugar depois de certas edições.
- Contador das abas da lista piscava entre o total e o tamanho da página carregada.
- Mensagem que chega atrasada volta a cair no lugar certo do histórico, não jogada no fim.
.jfif,.ogg,.ogae.m4aregistrados como tipos de mídia válidos — arquivos nesses formatos paravam de abrir.- Para quem desenvolve plugin: a tela de configuração pode declarar largura
wide/full(antes toda configuração ficava espremida numa coluna de ~672px, não importa quanto conteúdo tivesse); a versão da API de plugins avançou de 1.1.0 para 1.9.0 — changelog completo emdocs/PLUGIN_API_CHANGELOG.md.
Atualizando
- Suba a versão; as migrações novas (times, chaves de API, webhooks de saída) rodam sozinhas no boot.
- Times, API pública e webhooks de saída são recursos opcionais — nada muda pra quem não usa.
- Se você mantém plugin próprio, confira o
docs/PLUGIN_API_CHANGELOG.md: a versão da API pulou bastante desde a última release.
📦 O WhatsBot é distribuído enxuto: núcleo + canal WhatsApp (QR Code). Telegram, WhatsApp Cloud API, Messenger, Instagram, widget de site, protocolos de atendimento e follow-up automático entram por Gerenciar Plugins → Importar (.zip).
Changelog completo: v0.7.0...v0.8.0