From 5193b2df08f8e56a25a545a2e1a302b1696cd86c Mon Sep 17 00:00:00 2001 From: Rodrigo Bertoldo de Sousa Martins Date: Sun, 29 Mar 2026 17:04:20 -0300 Subject: [PATCH] =?UTF-8?q?suporte:=20fix=20t=C3=A9cnicos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rodrigo Bertoldo de Sousa Martins --- src/bot/handler.js | 49 +++++++++++++++++++++------------------------- src/topsapp/api.js | 3 ++- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/bot/handler.js b/src/bot/handler.js index d65d72d..ff647fa 100644 --- a/src/bot/handler.js +++ b/src/bot/handler.js @@ -5685,39 +5685,34 @@ Digite /help para ver todos os comandos disponíveis! if (!session) return; if (!input) { - // Primeira vez nesta etapa - buscar tipos de atendimento - await this.bot.sendMessage(session.chatId, `🔍 Buscando tipos de atendimento disponíveis...`); + // Primeira vez nesta etapa - buscar funcionários ativos + await this.bot.sendMessage(session.chatId, `🔍 Buscando técnicos disponíveis...`); try { - // Usar tipos de atendimento ao invés de técnicos - let resultado = await this.topsapp.obterSuporteTiposAtendimento(); + const resultado = await this.topsapp.obterFuncionarios(); - if (!resultado.success || !resultado.data?.dados || resultado.data.dados.length === 0) { - // Fallback para técnicos se tipos de atendimento não funcionarem - console.log('🔄 Fallback para técnicos...'); - resultado = await this.topsapp.obterTecnicos(); - - if (!resultado.success) { - await this.bot.sendMessage(session.chatId, - `❌ **Erro ao buscar tipos de atendimento**\n\n` + - `⚠️ ${resultado.error}\n\n` + - `🔄 Reiniciando processo...` - ); - this.suporteSessions.delete(sessionId); - return; - } - } - - if (!resultado.data?.dados || resultado.data.dados.length === 0) { + if (!resultado.success) { await this.bot.sendMessage(session.chatId, - `❌ **Nenhum tipo de atendimento encontrado**\n\n` + + `❌ **Erro ao buscar técnicos**\n\n` + + `⚠️ ${resultado.error}\n\n` + `🔄 Reiniciando processo...` ); this.suporteSessions.delete(sessionId); return; } - session.dados.tecnicos = resultado.data.dados; + const tecnicos = resultado.data?.dados || resultado.dados || []; + + if (tecnicos.length === 0) { + await this.bot.sendMessage(session.chatId, + `❌ **Nenhum técnico ativo encontrado**\n\n` + + `🔄 Reiniciando processo...` + ); + this.suporteSessions.delete(sessionId); + return; + } + + session.dados.tecnicos = tecnicos; await this.mostrarOpcoesTecnicos(session); } catch (error) { @@ -5756,7 +5751,7 @@ Digite /help para ver todos os comandos disponíveis! * Mostrar opções de técnicos/tipos de atendimento */ async mostrarOpcoesTecnicos(session) { - let message = `👨‍🔧 **Tipos de atendimento disponíveis:**\n\n`; + let message = `👨‍🔧 **Técnicos disponíveis:**\n\n`; // Validar se técnicos é um array if (!Array.isArray(session.dados.tecnicos)) { @@ -5764,18 +5759,18 @@ Digite /help para ver todos os comandos disponíveis! type: typeof session.dados.tecnicos, value: session.dados.tecnicos }); - throw new Error(`Dados de tipos de atendimento inválidos: ${typeof session.dados.tecnicos}`); + throw new Error(`Dados de técnicos inválidos: ${typeof session.dados.tecnicos}`); } session.dados.tecnicos.forEach((tecnico, index) => { - // Mostrar nome ou descrição do tipo de atendimento + // Mostrar nome do técnico const nome = tecnico.nome || tecnico.descricao || tecnico.tipo || tecnico.tecnico; message += `**${index + 1}.** ${nome}\n`; if (tecnico.email) message += ` 📧 ${tecnico.email}\n`; message += `\n`; }); - message += `Digite o **número** do tipo de atendimento (1-${session.dados.tecnicos.length}):`; + message += `Digite o **número** do técnico (1-${session.dados.tecnicos.length}):`; await this.bot.sendMessage(session.chatId, message, { parse_mode: 'Markdown' }); } diff --git a/src/topsapp/api.js b/src/topsapp/api.js index f54c573..dba2adb 100644 --- a/src/topsapp/api.js +++ b/src/topsapp/api.js @@ -744,7 +744,8 @@ class TopSappAPI { const session = await this.getValidSession(instance, credentials); return await this.makeRequest('ObterFuncionarios', { - idUsuario: session.idUsuario || 1 + idUsuario: session.idUsuario || 1, + desativado: false }, instance, credentials); }