UNPKG

@poli-digital/n8n-nodes-poli

Version:
200 lines 7.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ListChats = exports.executeListChats = exports.listChatsFields = void 0; const n8n_workflow_1 = require("n8n-workflow"); const transport_1 = require("./transport"); const parameterUtils_1 = require("./utils/parameterUtils"); const responseFilter_1 = require("./utils/responseFilter"); exports.listChatsFields = [ { displayName: 'Account UUID', name: 'accountId', type: 'string', default: '', required: true, description: 'ID da conta', }, { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add Option', default: {}, options: [ { displayName: 'Search', name: 'search', type: 'string', default: '', description: 'Texto para busca', }, { displayName: 'Query', name: 'query', type: 'string', default: '', description: 'Raw query string (ex: id=18&name=gabriel)', }, { displayName: 'Page', name: 'page', type: 'number', default: 1, typeOptions: { minValue: 1 }, description: 'Número da página', }, { displayName: 'Per Page', name: 'perPage', type: 'number', default: 20, typeOptions: { minValue: 1, maxValue: 100 }, description: 'Itens por página', }, { displayName: 'Include', name: 'include', type: 'multiOptions', options: [ { name: 'Read Status', value: 'read_status' }, { name: 'Chat Status', value: 'chat_status' }, { name: 'Attendant', value: 'attendant' }, { name: 'Attributes', value: 'attributes' }, ], default: ['read_status', 'chat_status', 'attendant'], description: 'Campos adicionais para incluir na resposta', }, { displayName: 'Filters', name: 'filters', type: 'collection', placeholder: 'Add Filter', default: {}, options: [ { displayName: 'Tags', name: 'tags', type: 'string', default: '', description: 'Filtrar por tags (separadas por vírgula)', }, { displayName: 'Users', name: 'users', type: 'string', default: '', description: 'Filtrar por usuários (IDs separados por vírgula)', }, { displayName: 'Teams', name: 'teams', type: 'string', default: '', description: 'Filtrar por times (IDs separados por vírgula)', }, { displayName: 'Started At (From)', name: 'startedAtFrom', type: 'dateTime', default: '', description: 'Data de início (de) - formato: YYYY-MM-DD HH:mm', }, { displayName: 'Started At (To)', name: 'startedAtTo', type: 'dateTime', default: '', description: 'Data de início (até) - formato: YYYY-MM-DD HH:mm', }, ], }, ], }, ]; async function executeListChats() { var _a; const items = this.getInputData(); const returnData = []; for (let i = 0; i < items.length; i++) { try { const accountId = (0, parameterUtils_1.getParameterSafe)(this, 'accountId', i, '', true); const options = (0, parameterUtils_1.getParameterSafe)(this, 'options', i, {}); const params = new URLSearchParams(); if (options.search) params.append('search', options.search); if (options.page) params.append('page', options.page.toString()); if (options.perPage) params.append('perPage', options.perPage.toString()); if ((_a = options.include) === null || _a === void 0 ? void 0 : _a.length) params.append('include', options.include.join(',')); if (options.filters) { const filterParts = []; if (options.filters.tags) { const tags = options.filters.tags.split(',').map(tag => tag.trim()); filterParts.push(`tags=([${tags.join(',')}])`); } if (options.filters.users) { const users = options.filters.users.split(',').map(user => user.trim()); filterParts.push(`users=(${users.join(',')})`); } if (options.filters.teams) { const teams = options.filters.teams.split(',').map(team => team.trim()); filterParts.push(`teams=(${teams.join(',')})`); } if (options.filters.startedAtFrom || options.filters.startedAtTo) { const dateFilters = []; if (options.filters.startedAtFrom) { dateFilters.push(`gt=${options.filters.startedAtFrom}`); } if (options.filters.startedAtTo) { dateFilters.push(`lt=${options.filters.startedAtTo}`); } if (dateFilters.length > 0) { filterParts.push(`started_at=([${dateFilters.join(',')}])`); } } if (filterParts.length > 0) { params.append('filters', `(${filterParts.join(',')})`); } } if (options.query) { for (const part of options.query.split('&')) { const [key, value] = part.split('='); if (key && value) { params.append(key.trim(), value.trim()); } } } const endpoint = `/accounts/${accountId}/chats?${params.toString()}`; const responseData = await transport_1.apiRequest.call(this, 'GET', endpoint); const filteredData = (0, responseFilter_1.processApiResponseForN8n)(responseData, true); returnData.push({ json: filteredData }); } catch (error) { throw new n8n_workflow_1.NodeApiError(this.getNode(), error); } } return [returnData]; } exports.executeListChats = executeListChats; class ListChats { constructor() { this.description = { displayName: 'List Chats', name: 'listChats', group: ['transform'], version: 1, description: 'List chats from Poli API', defaults: { name: 'List Chats' }, inputs: ['main'], outputs: ['main'], properties: exports.listChatsFields, }; } async execute() { return executeListChats.call(this); } } exports.ListChats = ListChats; //# sourceMappingURL=ListChats.operation.js.map