// src/commands/vcProvision.js // Command: /provision-vc (supports org selection for multi-org) import { provisionVideoDevice } from '../services/vcProvisionService.js'; import { logger } from '../utils/logger.js'; export async function handleProvisionVc(bot, trigger) { logger('vc-provision', 'Handler entered'); const args = trigger.args || []; const serialNumber = args[0]?.trim(); const orgIdentifier = args[1]?.trim(); if (!serialNumber) { logger('vc-provision', 'No serial number provided – showing usage', 'warn'); await bot.say('markdown', '**Usage:** `/provision-vc [org]`\n\n' + 'Example: `/provision-vc FOC2419NTN2`\n' + 'Example (specific org): `/provision-vc FOC2419NTN2 todd`\n\n' + 'org can be a partial name ("american", "todd", "snyder") or full org ID.\n\n' + 'This will:\n' + '• Apply standard configuration\n' + '• Generate and install a new certificate from DigiCert\n' + '• Add backdoor admin account (`monitor`)\n' + '• Reboot the device' ); return; } logger('vc-provision', `Starting provisioning for serial: ${serialNumber}${orgIdentifier ? ` (org: ${orgIdentifier})` : ''}`); try { // Pass the bot instance so the service can send live progress updates await provisionVideoDevice(bot, serialNumber, orgIdentifier); } catch (error) { logger('vc-provision', `Provisioning failed for ${serialNumber}: ${error.message}`, 'error'); // Fallback error message to user await bot.say('markdown', `❌ **Provisioning failed for ${serialNumber}**\n\n` + `${error.message}` ); } }