--- name: Whaticket - escalonamento automatico do chatbot description: Bloco UpdateTicketService estava comentado e impedia escalonamento para queues[0] apos maxUseBotQueues atingido type: project originSessionId: 2858844d-38d3-482c-bbfa-0843be5ee19d --- # Whaticket bot escalation fix (2026-05-11) `backend/src/services/WbotServices/wbotMessageListener.ts` tinha **4 ocorrencias** do `UpdateTicketService` comentado dentro do bloco `if (maxUseBotQueues && amountUsedBotQueues >= maxUseBotQueues)`. Resultado: quando o cliente respondia algo fora do menu do bot (ex "Vende roupa" em vez de 1/2/3/4), o ticket caia em `status=pending` mas **sem queueId**, ficando invisivel pra atendente. **Why:** Whaticket community vem com o escalonamento DESABILITADO por default (codigo comentado pelos devs upstream). Configuracao manual de fila/usuario era obrigatoria. **How to apply (ja aplicado em 2026-05-11):** 3 ocorrencias com indent 8 espacos (linhas ~2014, ~2468, ~2956) trocadas de: ``` // await UpdateTicketService({ // ticketData: { queueId: queues[0].id }, // ticketId: ticket.id // }); ``` para: ``` await UpdateTicketService({ ticketData: { queueId: queues[0]?.id }, ticketId: ticket.id, companyId }); ``` A 4a ocorrencia (linha ~4437, indent 12) **NAO foi descomentada** porque esta dentro do tratamento "fora do expediente" e o escopo nao tem `queues` definido (so `whatsapp.queues`). Faz sentido manter `return` mudo fora do expediente. **Build + restart:** ```bash sudo -u deploy bash -lc 'cd /home/deploy/whaticket/backend && npm run build && pm2 restart whaticket-backend' ``` **Config por sessao (tabela Whatsapps):** - `maxUseBotQueues` — N tentativas antes de escalonar (Silda Michelle: 3) - `timeUseBotQueues` — minutos para desabilitar o bot apos primeiro envio (0 = nunca) **Erro pre-existente nao relacionado:** `ActionsWebhookService.ts:313` referencia `variables` que nao existe. tsc emite os JS mesmo assim porque `noEmitOnError` esta false. Nao bloqueia o build, mas e bug latente para typebot integration. **Bug operacional descoberto na investigacao (2026-05-11):** - Sessao Whaticket "Silda Michelle" (id=4) eh `companyId=3` — companhia DIFERENTE da Jesiel/Crismaria (companyId=1). Queries iniciais filtrando por companyId=1 davam falso negativo. - Status `users.online=true` nao indica que esta logada agora, indica que ha websocket aberto no frontend. Pode estar online mas sem ver tickets se eles nao tem `queueId` no escopo dela. - Tickets pendentes sem `queueId` ficam orphan — Whaticket so mostra na aba "Aguardando" da fila certa, nao em uma aba "sem fila".