Distribuição sequencial Chatbot
A Distribuição Sequencial (identificada como Método "S") é um sistema que distribui tickets em uma fila rotativa entre os usuários que estão online.
O objetivo é garantir que cada usuário receba tickets de forma sequencial e equilibrada, evitando a concentração de atendimentos em um único atendente.
Como Funciona a Lógica
O sistema segue um fluxo de 5 etapas para determinar quem receberá o próximo ticket:
1. Busca de Usuários Online
O sistema identifica quem está disponível para receber o ticket:
Se
queueIdfor fornecido: Busca usuários online associados àquela fila específica.Se não encontrar (ou não houver fila): Busca todos os usuários online do tenant.
Exclusão: Em ambos os casos, usuários com perfil de Admins ou Superadmins são excluídos da distribuição.
Ordenação: A lista final é ordenada por ID (ASC) para manter uma ordem consistente.
2. Validação
O sistema verifica a lista gerada no passo anterior.
Se não houver usuários online, o processo é encerrado sem atribuir o ticket.
3. Busca do ChatFlow
O sistema localiza as configurações do fluxo de conversa (ChatFlow) associado ao ticket:
Tenta identificar primeiro pelo
ticket.chatFlowId.Se não houver, tenta identificar pelo
whatsapp.chatFlowIdda conexão do WhatsApp associada.
4. Seleção Rotativa
Aqui ocorre a distribuição propriamente dita. O sistema obtém o lastUserId (o último usuário que recebeu atendimento) gravado no ChatFlow e encontra o próximo na lista:
Se houver
lastUserId: O sistema avança para o próximo usuário da lista.Rotação Circular: Se o
lastUserIdfor o último da lista, o sistema volta ao primeiro usuário.Se não houver
lastUserId: O sistema começa distribuindo pelo primeiro usuário da lista (índice 0).
5. Atribuição do Ticket
Uma vez definido o usuário, o sistema finaliza o processo:
Atualiza o campo
lastUserIdno ChatFlow com o ID do usuário selecionado (para que a rotação continue correta no próximo ticket).Cria um log da atribuição via
CreateLogTicketService.Atribui efetivamente o ticket ao usuário selecionado.
Resumo
Esta funcionalidade distribui tickets em ordem rotativa, garantindo que a carga de trabalho seja dividida sequencialmente entre os atendentes disponíveis, respeitando a fila e o status online.
Atualizado