// src/commands/woAttachments.js import { Readable } from 'stream'; import { listWorkOrderAttachments, downloadAttachmentById } from '../integrations/serviceChannel/attachments.js'; import botClient from '../integrations/webex/BotClient.js'; import { logger } from '../utils/logger.js'; export async function handleWoAttachments(bot, trigger) { logger('wo-attachments', 'Handler entered'); const args = trigger.args || []; const woNumber = args[0]?.trim(); if (!woNumber || !/^\d+$/.test(woNumber)) { logger('wo-attachments', 'Invalid or missing work order number', 'warn'); await bot.reply(trigger.message, 'Please provide a valid work order number after /woAttachments\n' + '(e.g. `/woAttachments 345057944`)' ); return; } logger('wo-attachments', `Processing attachments for work order ${woNumber}`); try { const attachments = await listWorkOrderAttachments(woNumber); if (attachments.length === 0) { logger('wo-attachments', `No attachments found for WO ${woNumber}`); await bot.reply(trigger.message, `No attachments found for work order **${woNumber}**.`); return; } logger('wo-attachments', `Found ${attachments.length} attachments for WO ${woNumber}`); await bot.reply(trigger.message, `Found **${attachments.length}** attachment(s) for work order **${woNumber}**. Sending them now...` ); for (const att of attachments) { try { const file = await downloadAttachmentById(woNumber, att.Id); await botClient.sendWithAttachment( trigger.message.roomId, file.buffer, file.fileName, file.contentType, `📎 Attachment from WO ${woNumber}: ${file.fileName}` ); logger('wo-attachments', `Successfully sent attachment: ${file.fileName}`); } catch (err) { logger('wo-attachments', `Failed to send attachment ${att.Id || att.Name || 'unknown'}: ${err.message}`, 'error'); await bot.reply(trigger.message, `❌ Failed to send attachment ${att.Id || att.Name || 'unknown'}`); } } await bot.reply(trigger.message, `Finished sending attachments for WO **${woNumber}**.`); logger('wo-attachments', `Completed processing attachments for WO ${woNumber}`); } catch (err) { logger('wo-attachments', `Error processing WO ${woNumber}: ${err.message}`, 'error'); await bot.reply(trigger.message, `Error processing attachments for work order ${woNumber}: ${err.message}` ); } }