genieacs: implantação (TESTING)

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-04-01 08:40:57 -03:00
1 parent 3726e4d449
commit 6e2473719d
8 files changed
+439 -1

No files matched your search

+74
View File
@@ -3,6 +3,7 @@ const SSHManager = require('../ssh/manager');
const { TopSappManager } = require('../topsapp');
const FiberhomeManager = require('../fiberhome/manager');
const FiberhomeTL1Manager = require('../fiberhome/manager_tl1');
const { GenieACSManager } = require('../genieacs');
const config = require('../config/config');
const logger = require('../utils/logger');
const DateProcessor = require('../utils/dateProcessor');
@@ -15,6 +16,7 @@ class BotHandler {
this.topsapp = new TopSappManager();
this.fiberhome = new FiberhomeManager();
this.fiberhomeTL1 = new FiberhomeTL1Manager();
this.genieacs = new GenieACSManager();
this.dateProcessor = new DateProcessor();
this.userSessions = new Map(); // Armazena sessões de usuário
this.suporteSessions = new Map(); // Armazena sessões de suporte em andamento
@@ -252,6 +254,11 @@ class BotHandler {
await this.handleFiberhomeStatus(chatId);
break;
case 'ver_roteador':
console.log(`📡 Executando handleVerRoteador com target: ${target}`);
await this.handleVerRoteador(chatId, target);
break;
case 'abrir_suporte':
case 'adicionar_suporte':
case 'criar_suporte':
@@ -6890,6 +6897,73 @@ Digite /help para ver todos os comandos disponíveis!
sessaoAtiva.etapa = 'selecionar_categoria';
await this.processarEtapaSelecionarCategoria(sessaoAtiva.id);
}
/**
* Exibe informações do roteador/CPE via GenieACS.
* Uso: "ver roteador <serial>" ou "ver roteador <tag/login-topsapp>"
*/
async handleVerRoteador(chatId, termo) {
if (!termo) {
await this.bot.sendMessage(chatId,
'📡 *Ver Roteador - GenieACS*\n\n' +
'❓ Informe o serial ou a TAG (login TopSapp) do dispositivo.\n' +
'Exemplos:\n' +
'• `ver roteador ABCD12345678`\n' +
'• `ver roteador joao.silva`',
{ parse_mode: 'Markdown' }
);
return;
}
await this.bot.sendMessage(chatId, `🔍 Consultando dispositivo \`${termo}\` no GenieACS...`, { parse_mode: 'Markdown' });
try {
const resultado = await this.genieacs.buscarRoteador(termo);
if (!resultado.success) {
await this.bot.sendMessage(chatId,
`❌ *Dispositivo não encontrado*\n\n` +
`🔍 Busca: \`${termo}\`\n` +
`⚠️ ${resultado.error}`,
{ parse_mode: 'Markdown' }
);
return;
}
const d = resultado.device;
const na = (v) => (v !== null && v !== undefined && v !== '') ? String(v) : 'N/A';
const tagLabel = d.tags && d.tags.length > 0 ? d.tags.join(', ') : 'N/A';
const buscadoPor = resultado.searchedBy === 'tag' ? 'TAG' : 'Serial';
const msg =
`📡 *Informações do Roteador*\n` +
`📌 Instância: ${resultado.instance}\n` +
`🔎 Encontrado por: ${buscadoPor}\n\n` +
`🖥️ *Dispositivo*\n` +
`├ Nome: ${na(d.productClass)}\n` +
`├ Fabricante: ${na(d.manufacturer)}\n` +
`├ OUI: ${na(d.oui)}\n` +
`├ Serial: \`${na(d.serial)}\`\n` +
`├ TAG (TopSapp): \`${tagLabel}\`\n` +
`├ HW: ${na(d.hardwareVersion)}\n` +
`└ SW: ${na(d.softwareVersion)}\n\n` +
`📶 *Wi-Fi 2.4 GHz*\n` +
`├ SSID: ${na(d.ssid24)}\n` +
`├ Canal: ${na(d.channel24)}\n` +
`└ Auto-Canal: ${d.autoChannel24}\n\n` +
`📶 *Wi-Fi 5 GHz*\n` +
`├ SSID: ${na(d.ssid5)}\n` +
`├ Canal: ${na(d.channel5)}\n` +
`└ Auto-Canal: ${d.autoChannel5}`;
await this.bot.sendMessage(chatId, msg, { parse_mode: 'Markdown' });
} catch (error) {
logger.error('Erro em handleVerRoteador:', error);
await this.bot.sendMessage(chatId, `❌ Erro ao consultar o GenieACS: ${error.message}`);
}
}
}
module.exports = BotHandler;