Novidades· 10 itens

Versão 1.61.0

Adicionado3

Módulo opcional para quem vende para empresas — Empresas, Pessoas que decidem e importação de planilha

Quem administra o servidor ganha em Sistema › Módulos opcionais a chave "Empresas e pessoas (venda para empresas)", desligada por padrão. Ligada, o CRM de cada empresa passa a ter o cadastro de Empresas (razão social e CNPJ, com os dados públicos preenchidos pela BrasilAPI), as Pessoas que decidem dentro delas, com vários telefones, e a importação de planilha CSV ou Excel (.xlsx) que cria empresa, pessoa e contato de uma vez. As três telas ficam em CRM › Ver tudo. Desligada, nada muda: as telas, o menu e as rotas não existem, e nenhum CNPJ sai do servidor. Anonimizar um contato também apaga o nome da pessoa ligada a ele e as linhas de planilha que falavam dela, e o pedido de acesso aos dados passa a entregar essas informações. Não há ação para quem opera a VPS.

Contribuição de @renatofortal (#1621, entrou pelo recorte #1860).

Grupos de clientes no chat, com resposta dos atendentes

Em Conexões, o botão Grupos de cada número conectado por QR Code lista os grupos em que ele está. Cada grupo tem uma chave, e todos vêm desligados. Os grupos ligados aparecem no chat com a etiqueta Grupo, mostram quem mandou cada mensagem e podem ser respondidos pelos atendentes como qualquer conversa. Grupo sem atendente fica na fila das pessoas (Aguardando atendente), nunca na aba do automático, e um grupo fechado volta a abrir sozinho quando chega mensagem nova. A IA nunca responde em grupo, e grupo não vira negócio no funil, não entra em campanha nem em listas de contatos. Só o administrador liga grupos pela tela. Ao ligar o primeiro grupo de um número, o WhatsApp dele passa a enviar as mensagens de todos os grupos para o sistema, que descarta os não escolhidos. Ao desligar o último, tudo volta a ser como antes. Entram só as mensagens que chegarem depois de ligar. Áudio e imagem mandados em grupo ficam guardados, mas — diferente do que já acontece numa conversa individual — não são transcritos nem descritos automaticamente. Um pedido de LGPD de quem já é contato alcança também o que essa pessoa escreveu nos grupos ligados: a anonimização apaga essas mensagens e a exportação as entrega; o participante de grupo que não é contato não tem pedido por esta tela.

Contribuição de @bossprt (#1647).

Módulo opcional de Honorários para escritórios de advocacia

Contribuição de @nsbastosconsultoria (#1578). Um módulo opcional, desligado por padrão: contrato de honorários de cada caso (fixo, êxito ou misto), calendário de parcelas, e o agente de IA sabendo responder sobre os dois.

Instalar. Quem administra a instalação vai em Módulos, no menu do painel da instalação, e instala "Honorários" com um clique. As tabelas do módulo só nascem nessa hora (ADR-0002): quem não instala não carrega tabela nenhuma, não vê porta no menu e o agente não ganha capacidade nova.

Usar. A tela Análise › Honorários registra o contrato e as parcelas. Pagar uma parcela lança o valor no caixa da empresa, na conta escolhida, junto com o resto do dinheiro que entra. Um clique duplo em "Pagar" lança uma vez só, e a conta tem de ser da própria empresa. Toda a equipe vê os contratos; criar, alterar e apagar é de gerente ou administrador, e uma parcela paga não se apaga, nem o contrato que a tem.

A IA. O assistente ganha "Ver o contrato de honorários" e "Ver as parcelas", para confirmar o modelo de cobrança e o status de pagamento em vez de estimar um número.

LGPD. O pedido de acesso do titular traz os contratos e as parcelas dos casos dele. Os contratos não guardam dado pessoal (só valores e o vínculo com o caso), então a anonimização não tem o que apagar neles.

Alterado4

O README cita a Requesty entre os provedores de IA

A Requesty é provedor do produto desde o #1638, e a linha de IA da tabela de tecnologias do README (português, inglês e espanhol) passa a citá-la. Nada muda no produto nem para quem opera.

Contribuição de @Thibaultjaigu (#1866).

Logo próprio nas telas de acesso respeita o tamanho do arquivo, até 80 px de altura

O logo da marca própria nas telas de entrada, cadastro e recuperação deixa de ter altura fixa de 40 px. Um logo grande passa a ocupar até 80 px de altura (no máximo 192 px de largura), mantendo a proporção. Um logo com menos de 40 px de altura natural deixa de ser ampliado e passa a aparecer menor do que antes, no tamanho do arquivo: para ter o logo maior, suba em Marca (/admin/marca, a marca da instalação, que é a que as telas de acesso usam) um arquivo com pelo menos 80 px de altura. O logo padrão do produto, usado quando não há marca própria, não muda. Não exige ação para quem não quiser trocar o arquivo.

Contribuição de @vitorlacerdadigital (#1858).

O checkpoint e a abertura do turno saem de inbound-turn.ts para um módulo próprio em abertura/

O arquivo inbound-turn.ts, que concentra o turno de recepção, passou a delegar a dois módulos novos dentro da mesma pasta: abertura/checkpoint.ts guarda o schema do checkpoint, o tipo da linha, a instrução de fechamento, a leitura e a gravação; abertura/ritual.ts guarda o ritual de abertura do turno (ritualBlocks e buildOpeningMessage). O inbound-turn.ts continua importando e reexportando esses símbolos, então quem já os busca por ele — os testes, o follow-up, a resposta de caso, o preview — continua achando os mesmos objetos, sem mudança de comportamento e sem mudança de caminho. A extração é a primeira das três que a issue #636 pede, feita com git mv para o histórico do arquivo acompanhar o módulo novo. Não há ação para quem opera a VPS.

Contribuição de @webtecnica (#1861).

Roteiro de perguntas já concluído não recomeça para o mesmo cliente, a não ser que o roteiro permita

Um roteiro de atendimento que o cliente já respondeu até o fim não volta a fazer as mesmas perguntas quando ele repete a palavra-gatilho, nem quando um roteador de intenção ou o fim de outro roteiro aponta para ele de novo. Antes, repetir a palavra reabria um cadastro já feito. A palavra-gatilho passa a valer para o próximo roteiro que o cliente ainda não concluiu.

Cada roteiro pode escolher o contrário: no início do roteiro, a opção Pode recomeçar para quem já concluiu faz ele começar de novo, útil para roteiros que se repetem, como agendamento. A opção nasce desligada, inclusive nos roteiros que já existem: quem dependia de um roteiro que recomeça precisa ligá-la nele. Um roteiro encerrado por prazo ou interrompido não conta como concluído e pode começar de novo. Não há mudança no banco.

Contribuição de @vgamkt (#1130, entrou pelo #1865).

Corrigido3

O guardião do espanhol reprova t() sobre o que o operador digitou

A catraca de i18n passa a reprovar t() aplicado sobre dado que o operador digitou — parâmetro livre de função, não chave de tradução. Foi o defeito do PR 600: "Retorno" virando "Seguimiento". Dado de operador não é chave de dicionário, traduzi-lo muda o dado na tela.

  • 39 sítios reais (35 pares arquivo + expressão) congelados em DADO_DO_OPERADOR_CONGELADO, cada entrada com razão escrita; a lista só encolhe: entrada que deixa de casar com sítio é vermelho.

  • Literal, tabela de módulo e wrapper passa-adireto seguem passando: nenhuma tela legítima começa a reprovar.

  • Os cegos A e B da issue 603 ficam como próximo passo desta mesma entrega.

Contribuição de @webtecnica (#1867).

A nota interna chega na hora para quem pode ver a conversa, e deixa de aparecer para quem não pode

A nota interna (a escrita no modo Nota interna, que nunca vai para o cliente) passa a chegar em tempo real para os demais atendentes. Antes ela só aparecia para os outros quando alguém recarregava a página: o canal ficava aberto, mas a tabela não estava publicada, e nada avisava do erro.

As notas também passam a seguir a mesma regra de visibilidade da conversa. Numa organização com "ver as conversas" em own_and_unassigned (o padrão), o atendente que não pode abrir uma conversa deixa de ler e de escrever notas nela, e quem perdeu a conversa numa passagem de atendimento deixa de ver as notas dela. Antes, qualquer atendente da organização conseguia ler todas. Viewer, manager e admin continuam vendo as notas de todas as conversas que já veem, e o administrador da plataforma continua vendo tudo.

Não exige ação de quem instalou.

Contribuição de @webtecnica (#1868, issue #1863).

Follow-up de silêncio para de mandar mensagem a cada poucos minutos para o mesmo contato

Um fluxo de follow-up disparado por silêncio (ex.: "Triagem parada") reinscrevia o mesmo contato a cada rodada do relógio (1×/min), assim que o envio anterior terminava — em vez de esperar o intervalo de silêncio configurado (ex.: 2 horas) entre uma tentativa e outra. Um contato que nunca respondia recebia uma mensagem nova a cada poucos minutos, indefinidamente — medido numa instalação real: 32 disparos em cerca de 9 horas para o mesmo número, risco real de o número ser marcado como spam pelo WhatsApp. Agora a varredura respeita o intervalo configurado entre o fim de uma tentativa e o início da próxima para o mesmo contato no mesmo fluxo. Ninguém precisa reconfigurar nada.

Contribuição de @nsbastosconsultoria (#1578).

← Voltar para todas as versõesVer no GitHub