UNPKG

n8n-nodes-zalo-nnt

Version:

Unofficial Zalo integration for n8n - Send messages, manage groups, user operations with QR login. No API key required, works via browser simulation.

162 lines 7.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ZaloSticker = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ZaloStickerDescription_1 = require("./ZaloStickerDescription"); const zca_js_1 = require("zca-js"); const branding_1 = require("../shared/branding"); const validator_1 = require("./utils/validator"); let api; class ZaloSticker { constructor() { this.description = { displayName: 'Zalo Sticker by diginno.net', name: 'zaloSticker', icon: 'file:../shared/image.svg', group: ['Zalo'], version: 1, subtitle: '={{$parameter["resource"] + ": " + $parameter["operation"]}}', description: 'Tìm kiếm và gửi sticker Zalo by diginno.net', defaults: { name: 'Zalo Sticker by diginno.net', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'zaloApi', required: true, displayName: 'Zalo Credential to connect with', }, ], properties: [branding_1.BRANDING_CONFIG, ...ZaloStickerDescription_1.zaloStickerOperations, ...ZaloStickerDescription_1.zaloStickerFields], }; } async execute() { const items = this.getInputData(); const returnData = []; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); const zaloCred = await this.getCredentials('zaloApi'); let cookieFromCred = zaloCred.cookie; try { cookieFromCred = JSON.parse(zaloCred.cookie); } catch { } const imeiFromCred = zaloCred.imei; const userAgentFromCred = zaloCred.userAgent; const zalo = new zca_js_1.Zalo(); api = await zalo.login({ cookie: cookieFromCred, imei: imeiFromCred, userAgent: userAgentFromCred, }); if (!api) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No API instance found. Please make sure to provide valid credentials.'); } for (let i = 0; i < items.length; i++) { try { if (resource === 'sticker') { if (operation === 'search') { const keyword = this.getNodeParameter('keyword', i); const limit = this.getNodeParameter('limit', i, 50); const response = await api.searchSticker(keyword, limit); returnData.push({ json: { status: 'Thành công', keyword, totalReturned: response.length, stickers: response, }, pairedItem: { item: i }, }); } else if (operation === 'getCategoryDetail') { const cateId = this.getNodeParameter('cateId', i); (0, validator_1.validatePositiveInt)(cateId, 'ID Danh Mục (cateId)'); const response = await api.getStickerCategoryDetail(cateId); returnData.push({ json: { status: 'Thành công', cateId, totalReturned: response.length, stickers: response, }, pairedItem: { item: i }, }); } else if (operation === 'getStickers') { const keyword = this.getNodeParameter('keyword', i); const response = await api.getStickers(keyword); returnData.push({ json: { status: 'Thành công', keyword, totalReturned: response.length, stickerIds: response, }, pairedItem: { item: i }, }); } else if (operation === 'getStickersDetail') { const stickerIdsRaw = this.getNodeParameter('stickerIds', i); const stickerIds = (0, validator_1.parseStickerIds)(stickerIdsRaw); const response = await api.getStickersDetail(stickerIds.length === 1 ? stickerIds[0] : stickerIds); returnData.push({ json: { status: 'Thành công', stickerIds, totalReturned: response.length, stickers: response, }, pairedItem: { item: i }, }); } else if (operation === 'send') { const threadId = this.getNodeParameter('threadId', i); const threadTypeNumber = this.getNodeParameter('threadType', i, 0); const threadType = threadTypeNumber === 1 ? zca_js_1.ThreadType.Group : zca_js_1.ThreadType.User; const stickerId = this.getNodeParameter('stickerId', i); const stickerCateId = this.getNodeParameter('stickerCateId', i); const stickerType = this.getNodeParameter('stickerType', i); (0, validator_1.validateThreadId)(threadId); (0, validator_1.validatePositiveInt)(stickerId, 'ID Sticker'); (0, validator_1.validatePositiveInt)(stickerCateId, 'ID Danh Mục Sticker'); (0, validator_1.validatePositiveInt)(stickerType, 'Loại Sticker'); const response = await api.sendSticker({ id: stickerId, cateId: stickerCateId, type: stickerType }, threadId, threadType); returnData.push({ json: { status: 'Thành công', threadId, threadType, sticker: { id: stickerId, cateId: stickerCateId, type: stickerType }, response, }, pairedItem: { item: i }, }); } } } catch (error) { if (this.continueOnFail()) { returnData.push({ json: { error: error.message, }, pairedItem: { item: i, }, }); continue; } throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i, }); } } return [returnData]; } } exports.ZaloSticker = ZaloSticker; //# sourceMappingURL=ZaloSticker.node.js.map