@poli-digital/n8n-nodes-poli
Version:
Nó para interagir com a API da Poli
147 lines • 6.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ForwardContact = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const transport_1 = require("./transport");
const parameterUtils_1 = require("./utils/parameterUtils");
class ForwardContact {
constructor() {
this.description = {
displayName: 'Forward Contact',
name: 'forwardContact',
icon: 'file:poli.svg',
group: ['output'],
version: 1,
description: 'Forward a contact to a user or team',
defaults: {
name: 'Forward Contact',
},
inputs: ['main'],
outputs: ['main'],
credentials: [
{
name: 'poliApi',
required: true,
},
],
properties: [
{
displayName: 'Contact UUID',
name: 'contactUuid',
type: 'string',
default: '',
description: 'UUID do contato que será encaminhado',
required: true,
},
{
displayName: 'Forward to',
name: 'forwardType',
type: 'options',
noDataExpression: true,
options: [
{
name: 'User',
value: 'user',
description: 'Encaminhar para um usuário específico',
},
{
name: 'Team',
value: 'team',
description: 'Encaminhar para uma equipe',
},
],
default: 'user',
description: 'Escolha se deseja encaminhar o contato para um usuário ou uma equipe',
required: true,
},
{
displayName: 'User UUID',
name: 'userUuid',
type: 'string',
default: '',
description: 'UUID do usuário que receberá o contato encaminhado',
displayOptions: {
show: {
forwardType: ['user'],
},
},
required: true,
},
{
displayName: 'Team UUID',
name: 'teamUuid',
type: 'string',
default: '',
description: 'UUID da equipe que receberá o contato encaminhado',
displayOptions: {
show: {
forwardType: ['team'],
},
},
required: true,
},
],
};
}
async execute() {
const items = this.getInputData();
const returnData = [];
for (let i = 0; i < items.length; i++) {
try {
const contactUuid = (0, parameterUtils_1.getParameterSafe)(this, 'contactUuid', i, '', true);
const forwardType = (0, parameterUtils_1.getParameterSafe)(this, 'forwardType', i, '');
if (!contactUuid || contactUuid.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Contact UUID é obrigatório e não pode estar vazio',
});
}
const body = {};
if (forwardType === 'user') {
const userUuid = (0, parameterUtils_1.getParameterSafe)(this, 'userUuid', i, '');
if (!userUuid || userUuid.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'UUID do Usuário é obrigatório quando "Usuário" é selecionado',
});
}
body.user_uuid = userUuid;
}
else if (forwardType === 'team') {
const teamUuid = (0, parameterUtils_1.getParameterSafe)(this, 'teamUuid', i, '');
if (!teamUuid || teamUuid.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'UUID da Equipe é obrigatório quando "Equipe" é selecionada',
});
}
body.team_uuid = teamUuid;
}
else {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Tipo de encaminhamento inválido. Deve ser "user" ou "team"',
});
}
if (body.user_uuid && body.team_uuid) {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Erro interno: Não é possível encaminhar para usuário e equipe simultaneamente',
});
}
if (!body.user_uuid && !body.team_uuid) {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Erro interno: Nenhum destinatário foi definido para o encaminhamento',
});
}
const endpoint = `/contacts/${contactUuid}/forward`;
const responseData = await transport_1.apiRequest.call(this, 'POST', endpoint, body);
returnData.push({ json: responseData });
}
catch (error) {
if (error instanceof n8n_workflow_1.NodeApiError) {
throw error;
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
}
}
return [returnData];
}
}
exports.ForwardContact = ForwardContact;
//# sourceMappingURL=ForwardContact.operation.js.map