UNPKG

n8n-nodes-feishu-fork

Version:

n8n custom nodes for n8n to interact with Feishu/Lark, including Lark Bot, Lark MCP, and Lark Trigger.

114 lines 4.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const n8n_workflow_1 = require("n8n-workflow"); const GenericFunctions_1 = require("../../GenericFunctions"); const wording_1 = require("../../../help/wording"); const description_1 = require("../../../help/description"); exports.default = { name: wording_1.WORDING.ParseMessageContent, value: "parseContent", order: 201, options: [description_1.DESCRIPTIONS.RECEIVE_MESSAGE_TYPES, description_1.DESCRIPTIONS.DOWNLOAD_RESOURCE], async call(index) { const inputData = this.getInputData(); if (inputData.length === 0) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No input data found'); } const item = inputData[index].json; if (item.event_type !== "im.message.receive_v1") { this.logger.debug('Unsupported event type for parse message content', { eventType: item.event_type, itemIndex: index, }); return { outputType: "none", }; } const messageTypes = this.getNodeParameter('messageTypes', index, []); const downloadResource = this.getNodeParameter('downloadResource', index, false); const returnData = Array.from({ length: messageTypes.length }, () => []); const { message } = item; message.content = JSON.parse(message.content || '{}'); if (downloadResource) { switch (message.message_type) { case "image": const imageContent = message.content; const imageData = await GenericFunctions_1.larkApiRequestMessageResourceData.call(this, { type: 'image', messageId: message.message_id, key: imageContent.image_key, }); message.content = { ...imageContent, data: imageData }; break; case "file": case "audio": case "media": const fileContent = message.content; const fileData = await GenericFunctions_1.larkApiRequestMessageResourceData.call(this, { type: 'file', messageId: message.message_id, key: fileContent.file_key, }); message.content = { ...fileContent, data: fileData }; break; case "post": message.content = await handleRichTextContent.call(this, message); break; default: } } const outputIndex = messageTypes.indexOf(message.message_type); if (outputIndex === -1) { this.logger.debug('Message type not selected for parsing', { messageType: message.message_type, itemIndex: index, }); return { outputType: "none", }; } const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ ...item }), { itemData: { item: index } }); returnData[outputIndex].push(...executionData); return { outputType: "multiple", outputData: returnData, }; }, }; async function handleRichTextContent(message) { const richTextContent = message.content; if (Array.isArray(richTextContent.content)) { const processedContent = await Promise.all(richTextContent.content .filter((line) => line.length > 0) .map(async (line) => { return await Promise.all(line.map(async (element) => { const { tag } = element; if (tag !== 'img' && tag !== 'media') { return element; } let type = ''; let key = ''; if (tag === 'img') { type = 'image'; key = element.image_key; } else if (tag === 'media') { type = 'file'; key = element.file_key; } const data = await GenericFunctions_1.larkApiRequestMessageResourceData.call(this, { type, messageId: message.message_id, key, }); return { ...element, data, }; })); })); return { ...richTextContent, content: processedContent }; } return richTextContent; } //# sourceMappingURL=ContentParse.operation.js.map