Skip to content

v0.9.0 — Times privados, cofre de credenciais para a IA e tempo real consertado

Choose a tag to compare

@Thiago-cz Thiago-cz released this 10 Oct 19:14
· 9 commits to main since this release

Times ganham acesso privado e roteamento, as tools de IA ganham um cofre de credenciais, o tempo real do painel foi consertado e o painel ficou mais leve sob carga.

Destaques

  • Times de atendimento, segunda parte. Um time agora tem três modos de acesso: aberto, lista oculta (a conversa some da listagem para quem não é do time, mas abre por link) e privado (a conversa some de tudo — link, detalhe, busca, tempo real e mídia respondem como se não existisse). Cada canal pode definir um time padrão para conversas novas e reabertas, a conversa mostra o time na barra lateral, e a IA ganha uma tool com trava para transferir a conversa a um time. Quem precisa enxergar tudo ganha uma permissão própria (conversation.team.read_any); o administrador a recebe automaticamente.
  • Cofre de credenciais para as tools de IA. Uma tool de código que chama uma API externa não precisa mais ter a chave colada no próprio código (que fica no histórico de versões). Cadastre a credencial na aba Tools — vários campos por credencial — e libere para as tools que podem usá-la. O valor entra pela API, chega à tool de forma isolada e é trocado por *** em tudo que a tool devolve. A listagem nunca mostra o valor; um "olho", auditado e re-ocultado em 30 s, revela um campo por vez.
  • Contador da janela do cliente. Nos canais com janela de resposta (Meta), um chip ao lado do seletor Responder/Mensagem Privada mostra quanto tempo falta, e fica âmbar abaixo de 1 hora.
  • Grupos: popup Ver membros (clicar num membro leva ao "Novo contato" já preenchido), filtro de conversas por tipo (grupo/individual) e avisos de "entrou/saiu do grupo" com link. A lista de participantes passou a ser pedida ao número certo quando a instalação tem mais de um canal GOWA.
  • Menos peso em picos. Mensagens de grupos que não são permitidos no canal agora são descartadas logo na entrada — antes um disparo em massa em grupos esgotou os descritores de arquivo do servidor em produção. As permissões do usuário passam a ser calculadas uma vez por requisição, e a checagem de quem recebe cada evento do tempo real é feita em lote.

Corrigido

  • A barra lateral só atualizava com F5. Uma mudança de segurança no tempo real descartava em silêncio o evento que reordena a lista de conversas. Corrigido, e o contrato de roteamento do WebSocket foi documentado.
  • "Mídia indisponível" até recarregar a página. Mídia enviada pelo atendente e mídia recebida do cliente ao vivo chegavam sem identificador na bolha e não carregavam; só o F5 resolvia.
  • A IA respondia com letras de outro alfabeto (armênio, japonês…) por engano. Agora a resposta é conferida e, se vier suja, é regerada uma vez sem tools.
  • Transferência entre agentes especialistas não acontecia. Um especialista que pedia outro especialista recebia um erro e o turno terminava sem passar a conversa. O pedido agora é redirecionado ao roteador.
  • Card de tool assinado pelo agente errado, e turnos de IA fora do webhook (nota privada, plugins) que não deixavam nenhuma execução registrada para investigar.
  • Transcrição de áudio chegando ao painel com horário e identificador errados.
  • Áudios .opus, .mp3, .aac e .amr baixavam em vez de abrir em instalações em container (o tipo de mídia não era reconhecido).
  • Chave checkout_api_key mascarada na trilha de auditoria.

Também nesta versão

  • "Selecionar todos" nos filtros de lista (um botão por grupo nos filtros agrupados).
  • Cards de sistema passam a exibir a mensagem citada.
  • Lista de modelos de IA usa o endpoint do proxy que já exclui os modelos bloqueados, com fallback para o anterior.
  • Monitor de atraso do servidor: registra um aviso no log quando o processamento trava por mais de 1 s.
  • Botão Resolver/Reabrir mostra um indicador enquanto a requisição está em andamento.
  • Para quem desenvolve plugin: a API de plugins avançou de 1.9.0 para 1.10.0 (aditiva — o método Channel.should_drop_inbound tem valor padrão, nenhum plugin existente precisa mudar). Changelog em docs/PLUGIN_API_CHANGELOG.md.

Ações de atualização

  1. Suba a versão; as duas migrações novas (times e cofre de credenciais) rodam sozinhas no boot.
  2. Times continuam como estavam. Quem já usava um time restrito permanece no modo lista oculta; o modo privado só vale se você ligar.
  3. ⚠️ Credenciais do cofre ficam em texto puro no banco (sem cifra em repouso). Um dump ou backup do Postgres as carrega em claro — proteja o acesso ao banco e aos backups como protegeria uma senha.
  4. Se o executor agêntico usa os papéis whatsbot_ro/whatsbot_rw, a migração já revoga o acesso deles às tabelas do cofre. Nada a fazer.
  5. Quem tem a permissão de gerenciar tools passa a receber a de gerenciar credenciais automaticamente.
  6. Se você mantém plugin próprio, confira o docs/PLUGIN_API_CHANGELOG.md.

📦 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.8.0...v0.9.0