@growsalesai/n8n-nodes-datacrazy 1.8.1 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/nodes/Datacrazy/DatacrazyUtils.node.d.ts.map +1 -1
- package/dist/nodes/Datacrazy/DatacrazyUtils.node.js +16 -2
- package/dist/nodes/Datacrazy/DatacrazyUtils.node.js.map +1 -1
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.js +93 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.handler.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.handler.js +119 -0
- package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.handler.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ Nó da comunidade N8N para integração completa com a plataforma **Datacrazy CR
|
|
|
15
15
|
- [Desenvolvimento](#desenvolvimento)
|
|
16
16
|
- [Reportar Issues](#reportar-issues)
|
|
17
17
|
- [Contribuição](#contribuição)
|
|
18
|
+
- [Desenvolvedor](#desenvolvedor)
|
|
18
19
|
- [Licença](#licença)
|
|
19
20
|
|
|
20
21
|
## 🚀 Instalação
|
|
@@ -616,6 +617,12 @@ Contribuições são bem-vindas!
|
|
|
616
617
|
4. Envie para a branch: `git push origin feature/minha-feature`
|
|
617
618
|
5. Abra um Pull Request
|
|
618
619
|
|
|
620
|
+
## 👨💻 Desenvolvedor
|
|
621
|
+
|
|
622
|
+
Desenvolvido por **Vitor Maciel**
|
|
623
|
+
|
|
624
|
+
- Instagram: [@vitormacielsr](https://www.instagram.com/vitormacielsr/)
|
|
625
|
+
|
|
619
626
|
## 📄 Licença
|
|
620
627
|
|
|
621
628
|
Este projeto está licenciado sob a [MIT License](https://opensource.org/licenses/MIT).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatacrazyUtils.node.d.ts","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DatacrazyUtils.node.d.ts","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;AA0BtB,qBAAa,cAAe,YAAW,SAAS;IAC9C,WAAW,EAAE,oBAAoB,CAyG/B;IAEF,OAAO;oBAQA,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;MACrG;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAuFxE"}
|
|
@@ -44,6 +44,7 @@ const messageTypeSwitch_description_1 = require("./automations/messageTypeSwitch
|
|
|
44
44
|
const replyChecker_description_1 = require("./automations/replyChecker/replyChecker.description");
|
|
45
45
|
const leadIfCondition_description_1 = require("./automations/leadIfCondition/leadIfCondition.description");
|
|
46
46
|
const leadTracker_description_1 = require("./automations/leadTracker/leadTracker.description");
|
|
47
|
+
const leadExistsChecker_description_1 = require("./automations/leadExistsChecker/leadExistsChecker.description");
|
|
47
48
|
const webhookParser_handler_1 = require("./automations/webhookParser/webhookParser.handler");
|
|
48
49
|
const webhookExtractor_handler_1 = require("./automations/webhookExtractor/webhookExtractor.handler");
|
|
49
50
|
const providerDetector_handler_1 = require("./automations/providerDetector/providerDetector.handler");
|
|
@@ -53,6 +54,7 @@ const messageTypeSwitch_handler_1 = require("./automations/messageTypeSwitch/mes
|
|
|
53
54
|
const replyChecker_handler_1 = require("./automations/replyChecker/replyChecker.handler");
|
|
54
55
|
const leadIfCondition_handler_1 = require("./automations/leadIfCondition/leadIfCondition.handler");
|
|
55
56
|
const leadTracker_handler_1 = require("./automations/leadTracker/leadTracker.handler");
|
|
57
|
+
const leadExistsChecker_handler_1 = require("./automations/leadExistsChecker/leadExistsChecker.handler");
|
|
56
58
|
const loadOptions = __importStar(require("./methods/loadOptions"));
|
|
57
59
|
const request_1 = require("./utils/request");
|
|
58
60
|
class DatacrazyUtils {
|
|
@@ -69,14 +71,14 @@ class DatacrazyUtils {
|
|
|
69
71
|
inputs: ['main'],
|
|
70
72
|
// Dynamic outputs: display names are embedded inside INodeOutputConfiguration objects
|
|
71
73
|
// because outputNames only accepts static string[], not expression strings.
|
|
72
|
-
outputs: `={{$parameter['resource'] === 'messageTypeSwitch' ? [{type:'main',displayName:'Texto'},{type:'main',displayName:'Imagem'},{type:'main',displayName:'Vídeo'},{type:'main',displayName:'Áudio'},{type:'main',displayName:'Arquivo'},{type:'main',displayName:'Outro'}] : ($parameter['resource'] === 'replyChecker' || $parameter['resource'] === 'leadIfCondition') ? [{type:'main',displayName:'Sim'},{type:'main',displayName:'Não'}] : ['main']}}`,
|
|
74
|
+
outputs: `={{$parameter['resource'] === 'messageTypeSwitch' ? [{type:'main',displayName:'Texto'},{type:'main',displayName:'Imagem'},{type:'main',displayName:'Vídeo'},{type:'main',displayName:'Áudio'},{type:'main',displayName:'Arquivo'},{type:'main',displayName:'Outro'}] : ($parameter['resource'] === 'replyChecker' || $parameter['resource'] === 'leadIfCondition' || $parameter['resource'] === 'leadExistsChecker') ? [{type:'main',displayName:'Sim'},{type:'main',displayName:'Não'}] : ['main']}}`,
|
|
73
75
|
credentials: [
|
|
74
76
|
{
|
|
75
77
|
name: 'datacrazyApi',
|
|
76
78
|
required: false,
|
|
77
79
|
displayOptions: {
|
|
78
80
|
show: {
|
|
79
|
-
resource: ['messageContext', 'leadMover', 'leadIfCondition', 'leadTracker'],
|
|
81
|
+
resource: ['messageContext', 'leadMover', 'leadIfCondition', 'leadTracker', 'leadExistsChecker'],
|
|
80
82
|
},
|
|
81
83
|
},
|
|
82
84
|
},
|
|
@@ -133,6 +135,11 @@ class DatacrazyUtils {
|
|
|
133
135
|
value: 'leadTracker',
|
|
134
136
|
description: 'Define múltiplos campos personalizados no lead de uma só vez',
|
|
135
137
|
},
|
|
138
|
+
{
|
|
139
|
+
name: '⚡ Verificar se Lead Existe',
|
|
140
|
+
value: 'leadExistsChecker',
|
|
141
|
+
description: 'Busca o lead por número de WhatsApp ou valor de campo personalizado — roteia para Sim (encontrado) ou Não',
|
|
142
|
+
},
|
|
136
143
|
],
|
|
137
144
|
default: 'webhookParser',
|
|
138
145
|
},
|
|
@@ -143,6 +150,7 @@ class DatacrazyUtils {
|
|
|
143
150
|
...leadMover_description_1.leadMoverOperations,
|
|
144
151
|
...leadIfCondition_description_1.leadIfConditionOperations,
|
|
145
152
|
...leadTracker_description_1.leadTrackerOperations,
|
|
153
|
+
...leadExistsChecker_description_1.leadExistsCheckerOperations,
|
|
146
154
|
...webhookParser_description_1.webhookParserFields,
|
|
147
155
|
...webhookExtractor_description_1.webhookExtractorFields,
|
|
148
156
|
...providerDetector_description_1.providerDetectorFields,
|
|
@@ -152,6 +160,7 @@ class DatacrazyUtils {
|
|
|
152
160
|
...replyChecker_description_1.replyCheckerFields,
|
|
153
161
|
...leadIfCondition_description_1.leadIfConditionFields,
|
|
154
162
|
...leadTracker_description_1.leadTrackerFields,
|
|
163
|
+
...leadExistsChecker_description_1.leadExistsCheckerFields,
|
|
155
164
|
],
|
|
156
165
|
};
|
|
157
166
|
this.methods = {
|
|
@@ -180,6 +189,11 @@ class DatacrazyUtils {
|
|
|
180
189
|
const url = (0, request_1.getBaseUrls)(credentials);
|
|
181
190
|
return leadIfCondition_handler_1.executeLeadIfCondition.call(this, url, items);
|
|
182
191
|
}
|
|
192
|
+
if (resource === 'leadExistsChecker') {
|
|
193
|
+
const credentials = await this.getCredentials('datacrazyApi');
|
|
194
|
+
const url = (0, request_1.getBaseUrls)(credentials);
|
|
195
|
+
return leadExistsChecker_handler_1.executeLeadExistsChecker.call(this, url, items);
|
|
196
|
+
}
|
|
183
197
|
// Single-output resources
|
|
184
198
|
const returnData = [];
|
|
185
199
|
let baseUrl = { crm: '', v1: '' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatacrazyUtils.node.js","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAQsB;AAEtB,qGAAqH;AACrH,8GAAiI;AACjI,8GAAiI;AACjI,wGAAyH;AACzH,yFAAqG;AACrG,iHAAwG;AACxG,kGAAyF;AACzF,2GAA6H;AAC7H,+FAA6G;
|
|
1
|
+
{"version":3,"file":"DatacrazyUtils.node.js","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":"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"}
|
package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leadExistsChecker.description.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,2BAA2B,EAAE,eAAe,EAgBxD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAAe,EAyEpD,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.leadExistsCheckerFields = exports.leadExistsCheckerOperations = void 0;
|
|
4
|
+
exports.leadExistsCheckerOperations = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operação',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: { show: { resource: ['leadExistsChecker'] } },
|
|
11
|
+
options: [
|
|
12
|
+
{
|
|
13
|
+
name: 'Verificar se Lead Existe',
|
|
14
|
+
value: 'check',
|
|
15
|
+
action: 'Busca o lead e roteia para Sim (encontrado) ou Não (não encontrado)',
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
default: 'check',
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
exports.leadExistsCheckerFields = [
|
|
22
|
+
{
|
|
23
|
+
displayName: 'Buscar Por',
|
|
24
|
+
name: 'searchType',
|
|
25
|
+
type: 'options',
|
|
26
|
+
required: true,
|
|
27
|
+
default: 'whatsapp',
|
|
28
|
+
displayOptions: { show: { resource: ['leadExistsChecker'], operation: ['check'] } },
|
|
29
|
+
options: [
|
|
30
|
+
{
|
|
31
|
+
name: 'Número de WhatsApp',
|
|
32
|
+
value: 'whatsapp',
|
|
33
|
+
description: 'Busca o lead pelo número de telefone/WhatsApp',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'Campo Personalizado',
|
|
37
|
+
value: 'customField',
|
|
38
|
+
description: 'Busca pelo valor exato de um campo personalizado específico',
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
// --- WhatsApp ---
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Número de WhatsApp',
|
|
45
|
+
name: 'phoneNumber',
|
|
46
|
+
type: 'string',
|
|
47
|
+
default: '',
|
|
48
|
+
required: true,
|
|
49
|
+
description: 'Número de WhatsApp do lead (somente dígitos, ex: 5511999999999)',
|
|
50
|
+
placeholder: 'Ex: 5511999999999',
|
|
51
|
+
displayOptions: {
|
|
52
|
+
show: { resource: ['leadExistsChecker'], operation: ['check'], searchType: ['whatsapp'] },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
// --- Campo Personalizado ---
|
|
56
|
+
{
|
|
57
|
+
displayName: 'Campo Personalizado',
|
|
58
|
+
name: 'customFieldName',
|
|
59
|
+
type: 'resourceLocator',
|
|
60
|
+
default: { mode: 'list', value: '' },
|
|
61
|
+
required: true,
|
|
62
|
+
description: 'Campo personalizado cujo valor será usado na busca',
|
|
63
|
+
displayOptions: {
|
|
64
|
+
show: { resource: ['leadExistsChecker'], operation: ['check'], searchType: ['customField'] },
|
|
65
|
+
},
|
|
66
|
+
modes: [
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Da Lista',
|
|
69
|
+
name: 'list',
|
|
70
|
+
type: 'list',
|
|
71
|
+
typeOptions: { searchListMethod: 'searchAdditionalFieldsBySlug', searchable: true },
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
displayName: 'Por Slug',
|
|
75
|
+
name: 'id',
|
|
76
|
+
type: 'string',
|
|
77
|
+
placeholder: 'Ex: cpf',
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
displayName: 'Valor do Campo',
|
|
83
|
+
name: 'customFieldValue',
|
|
84
|
+
type: 'string',
|
|
85
|
+
default: '',
|
|
86
|
+
required: true,
|
|
87
|
+
description: 'Valor exato a ser buscado no campo personalizado',
|
|
88
|
+
displayOptions: {
|
|
89
|
+
show: { resource: ['leadExistsChecker'], operation: ['check'], searchType: ['customField'] },
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
//# sourceMappingURL=leadExistsChecker.description.js.map
|
package/dist/nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leadExistsChecker.description.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.description.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAsB;IAC5D;QACE,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE;QAC7D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,qEAAqE;aAC9E;SACF;QACD,OAAO,EAAE,OAAO;KACjB;CACF,CAAC;AAEW,QAAA,uBAAuB,GAAsB;IACxD;QACE,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,UAAU;QACnB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;QACnF,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,+CAA+C;aAC7D;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,6DAA6D;aAC3E;SACF;KACF;IAED,mBAAmB;IACnB;QACE,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,mBAAmB;QAChC,cAAc,EAAE;YACd,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE;SAC1F;KACF;IAED,8BAA8B;IAC9B;QACE,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,oDAAoD;QACjE,cAAc,EAAE;YACd,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE;SAC7F;QACD,KAAK,EAAE;YACL;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,UAAU,EAAE,IAAI,EAAE;aACpF;YACD;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,SAAS;aACvB;SACF;KACF;IACD;QACE,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,kDAAkD;QAC/D,cAAc,EAAE;YACd,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE;SAC7F;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
|
+
import { ApiBaseUrls } from '../../utils/request';
|
|
3
|
+
export declare function executeLeadExistsChecker(this: IExecuteFunctions, baseUrl: ApiBaseUrls, items: INodeExecutionData[]): Promise<INodeExecutionData[][]>;
|
|
4
|
+
//# sourceMappingURL=leadExistsChecker.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leadExistsChecker.handler.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAe,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,kBAAkB,EAAE,GAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAkHjC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeLeadExistsChecker = executeLeadExistsChecker;
|
|
4
|
+
const request_1 = require("../../utils/request");
|
|
5
|
+
function extractId(raw) {
|
|
6
|
+
var _a;
|
|
7
|
+
if (raw === null || raw === undefined)
|
|
8
|
+
return '';
|
|
9
|
+
if (typeof raw === 'object')
|
|
10
|
+
return String((_a = raw.value) !== null && _a !== void 0 ? _a : '');
|
|
11
|
+
return String(raw);
|
|
12
|
+
}
|
|
13
|
+
async function executeLeadExistsChecker(baseUrl, items) {
|
|
14
|
+
var _a, _b, _c, _d, _e;
|
|
15
|
+
const foundOutput = [];
|
|
16
|
+
const notFoundOutput = [];
|
|
17
|
+
// Cached per execution to avoid redundant requests when processing batches
|
|
18
|
+
let fieldDefinitionsCache = null;
|
|
19
|
+
const getFieldDefinitions = async () => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
if (fieldDefinitionsCache !== null)
|
|
22
|
+
return fieldDefinitionsCache;
|
|
23
|
+
const res = await request_1.makeRequest.call(this, baseUrl, 'GET', '/api/crm/additionalFields', undefined, { take: 500 });
|
|
24
|
+
fieldDefinitionsCache = (Array.isArray(res) ? res : ((_b = (_a = res === null || res === void 0 ? void 0 : res.data) !== null && _a !== void 0 ? _a : res === null || res === void 0 ? void 0 : res.items) !== null && _b !== void 0 ? _b : []));
|
|
25
|
+
return fieldDefinitionsCache;
|
|
26
|
+
};
|
|
27
|
+
for (let i = 0; i < items.length; i++) {
|
|
28
|
+
const searchType = this.getNodeParameter('searchType', i);
|
|
29
|
+
let found = false;
|
|
30
|
+
let leadData = null;
|
|
31
|
+
let searchValue = '';
|
|
32
|
+
try {
|
|
33
|
+
if (searchType === 'whatsapp') {
|
|
34
|
+
const phoneNumber = this.getNodeParameter('phoneNumber', i).trim();
|
|
35
|
+
searchValue = phoneNumber;
|
|
36
|
+
// Try phone-specific param first; fall back to generic text search
|
|
37
|
+
const directRes = await request_1.makeRequest.call(this, baseUrl, 'GET', '/api/v1/leads', undefined, {
|
|
38
|
+
phone: phoneNumber,
|
|
39
|
+
take: 10,
|
|
40
|
+
});
|
|
41
|
+
const directLeads = (_a = directRes === null || directRes === void 0 ? void 0 : directRes.data) !== null && _a !== void 0 ? _a : (Array.isArray(directRes) ? directRes : []);
|
|
42
|
+
if (directLeads.length > 0) {
|
|
43
|
+
found = true;
|
|
44
|
+
leadData = directLeads[0];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const searchRes = await request_1.makeRequest.call(this, baseUrl, 'GET', '/api/v1/leads', undefined, {
|
|
48
|
+
search: phoneNumber,
|
|
49
|
+
take: 10,
|
|
50
|
+
});
|
|
51
|
+
const searchLeads = (_b = searchRes === null || searchRes === void 0 ? void 0 : searchRes.data) !== null && _b !== void 0 ? _b : (Array.isArray(searchRes) ? searchRes : []);
|
|
52
|
+
if (searchLeads.length > 0) {
|
|
53
|
+
found = true;
|
|
54
|
+
leadData = searchLeads[0];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (searchType === 'customField') {
|
|
59
|
+
const fieldName = extractId(this.getNodeParameter('customFieldName', i));
|
|
60
|
+
const fieldValue = this.getNodeParameter('customFieldValue', i).trim();
|
|
61
|
+
searchValue = fieldValue;
|
|
62
|
+
const definitions = await getFieldDefinitions();
|
|
63
|
+
const fn = fieldName.toLowerCase();
|
|
64
|
+
const fieldDef = definitions.find((d) => {
|
|
65
|
+
var _a, _b, _c;
|
|
66
|
+
return String((_a = d.slug) !== null && _a !== void 0 ? _a : '').toLowerCase() === fn ||
|
|
67
|
+
String((_b = d.name) !== null && _b !== void 0 ? _b : '').toLowerCase() === fn ||
|
|
68
|
+
String((_c = d.id) !== null && _c !== void 0 ? _c : '') === fieldName;
|
|
69
|
+
});
|
|
70
|
+
if (fieldDef) {
|
|
71
|
+
// Broad text search to get candidates, then verify the specific field value
|
|
72
|
+
const candidatesRes = await request_1.makeRequest.call(this, baseUrl, 'GET', '/api/v1/leads', undefined, {
|
|
73
|
+
search: fieldValue,
|
|
74
|
+
take: 20,
|
|
75
|
+
});
|
|
76
|
+
const candidates = (_c = candidatesRes === null || candidatesRes === void 0 ? void 0 : candidatesRes.data) !== null && _c !== void 0 ? _c : (Array.isArray(candidatesRes) ? candidatesRes : []);
|
|
77
|
+
for (const candidate of candidates) {
|
|
78
|
+
try {
|
|
79
|
+
const valueRes = await request_1.makeRequest.call(this, baseUrl, 'GET', `/api/crm/additional-fields/lead/${candidate.id}/${fieldDef.id}`);
|
|
80
|
+
const storedValue = String((_e = (_d = valueRes === null || valueRes === void 0 ? void 0 : valueRes.value) !== null && _d !== void 0 ? _d : valueRes) !== null && _e !== void 0 ? _e : '').trim();
|
|
81
|
+
if (storedValue === fieldValue) {
|
|
82
|
+
found = true;
|
|
83
|
+
leadData = candidate;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch { /* field not set for this candidate — skip */ }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (this.continueOnFail()) {
|
|
94
|
+
notFoundOutput.push({
|
|
95
|
+
json: { error: error.message, searchType, searchValue },
|
|
96
|
+
pairedItem: { item: i },
|
|
97
|
+
});
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
const outputJson = {
|
|
103
|
+
...items[i].json,
|
|
104
|
+
leadFound: found,
|
|
105
|
+
searchType,
|
|
106
|
+
searchValue,
|
|
107
|
+
...(found && leadData ? { lead: leadData } : {}),
|
|
108
|
+
};
|
|
109
|
+
const itemData = this.helpers.constructExecutionMetaData([{ json: outputJson }], { itemData: { item: i } });
|
|
110
|
+
if (found) {
|
|
111
|
+
foundOutput.push(...itemData);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
notFoundOutput.push(...itemData);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return [foundOutput, notFoundOutput];
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=leadExistsChecker.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leadExistsChecker.handler.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/automations/leadExistsChecker/leadExistsChecker.handler.ts"],"names":[],"mappings":"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"}
|