@growsalesai/n8n-nodes-datacrazy 1.3.0 → 1.3.2

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.
Files changed (23) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/nodes/Datacrazy/DatacrazyReplyCheck.node.d.ts +6 -0
  6. package/dist/nodes/Datacrazy/DatacrazyReplyCheck.node.d.ts.map +1 -0
  7. package/dist/nodes/Datacrazy/DatacrazyReplyCheck.node.js +30 -0
  8. package/dist/nodes/Datacrazy/DatacrazyReplyCheck.node.js.map +1 -0
  9. package/dist/nodes/Datacrazy/descriptions/utils/MessageContextDescription.d.ts.map +1 -1
  10. package/dist/nodes/Datacrazy/descriptions/utils/MessageContextDescription.js +19 -6
  11. package/dist/nodes/Datacrazy/descriptions/utils/MessageContextDescription.js.map +1 -1
  12. package/dist/nodes/Datacrazy/descriptions/utils/ReplyCheckerDescription.d.ts +3 -0
  13. package/dist/nodes/Datacrazy/descriptions/utils/ReplyCheckerDescription.d.ts.map +1 -0
  14. package/dist/nodes/Datacrazy/descriptions/utils/ReplyCheckerDescription.js +57 -0
  15. package/dist/nodes/Datacrazy/descriptions/utils/ReplyCheckerDescription.js.map +1 -0
  16. package/dist/nodes/Datacrazy/handlers/utils/messageContext.handler.d.ts.map +1 -1
  17. package/dist/nodes/Datacrazy/handlers/utils/messageContext.handler.js +60 -40
  18. package/dist/nodes/Datacrazy/handlers/utils/messageContext.handler.js.map +1 -1
  19. package/dist/nodes/Datacrazy/handlers/utils/replyChecker.handler.d.ts +3 -0
  20. package/dist/nodes/Datacrazy/handlers/utils/replyChecker.handler.d.ts.map +1 -0
  21. package/dist/nodes/Datacrazy/handlers/utils/replyChecker.handler.js +74 -0
  22. package/dist/nodes/Datacrazy/handlers/utils/replyChecker.handler.js.map +1 -0
  23. package/package.json +3 -2
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export { DatacrazyApi } from './credentials/DatacrazyApi.credentials';
2
2
  export { Datacrazy } from './nodes/Datacrazy/Datacrazy.node';
3
3
  export { DatacrazyUtils } from './nodes/Datacrazy/DatacrazyUtils.node';
4
4
  export { DatacrazyMsgSwitch } from './nodes/Datacrazy/DatacrazyMsgSwitch.node';
5
+ export { DatacrazyReplyCheck } from './nodes/Datacrazy/DatacrazyReplyCheck.node';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatacrazyMsgSwitch = exports.DatacrazyUtils = exports.Datacrazy = exports.DatacrazyApi = void 0;
3
+ exports.DatacrazyReplyCheck = exports.DatacrazyMsgSwitch = exports.DatacrazyUtils = exports.Datacrazy = exports.DatacrazyApi = void 0;
4
4
  var DatacrazyApi_credentials_1 = require("./credentials/DatacrazyApi.credentials");
5
5
  Object.defineProperty(exports, "DatacrazyApi", { enumerable: true, get: function () { return DatacrazyApi_credentials_1.DatacrazyApi; } });
6
6
  var Datacrazy_node_1 = require("./nodes/Datacrazy/Datacrazy.node");
@@ -9,4 +9,6 @@ var DatacrazyUtils_node_1 = require("./nodes/Datacrazy/DatacrazyUtils.node");
9
9
  Object.defineProperty(exports, "DatacrazyUtils", { enumerable: true, get: function () { return DatacrazyUtils_node_1.DatacrazyUtils; } });
10
10
  var DatacrazyMsgSwitch_node_1 = require("./nodes/Datacrazy/DatacrazyMsgSwitch.node");
11
11
  Object.defineProperty(exports, "DatacrazyMsgSwitch", { enumerable: true, get: function () { return DatacrazyMsgSwitch_node_1.DatacrazyMsgSwitch; } });
12
+ var DatacrazyReplyCheck_node_1 = require("./nodes/Datacrazy/DatacrazyReplyCheck.node");
13
+ Object.defineProperty(exports, "DatacrazyReplyCheck", { enumerable: true, get: function () { return DatacrazyReplyCheck_node_1.DatacrazyReplyCheck; } });
12
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,mFAAsE;AAA7D,wHAAA,YAAY,OAAA;AACrB,mEAA6D;AAApD,2GAAA,SAAS,OAAA;AAClB,6EAAuE;AAA9D,qHAAA,cAAc,OAAA;AACvB,qFAA+E;AAAtE,6HAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,mFAAsE;AAA7D,wHAAA,YAAY,OAAA;AACrB,mEAA6D;AAApD,2GAAA,SAAS,OAAA;AAClB,6EAAuE;AAA9D,qHAAA,cAAc,OAAA;AACvB,qFAA+E;AAAtE,6HAAA,kBAAkB,OAAA;AAC3B,uFAAiF;AAAxE,+HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,6 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class DatacrazyReplyCheck implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
6
+ //# sourceMappingURL=DatacrazyReplyCheck.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatacrazyReplyCheck.node.d.ts","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyReplyCheck.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAKtB,qBAAa,mBAAoB,YAAW,SAAS;IACnD,WAAW,EAAE,oBAAoB,CAe/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAIxE"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatacrazyReplyCheck = void 0;
4
+ const ReplyCheckerDescription_1 = require("./descriptions/utils/ReplyCheckerDescription");
5
+ const replyChecker_handler_1 = require("./handlers/utils/replyChecker.handler");
6
+ class DatacrazyReplyCheck {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: 'Datacrazy - É Mensagem Referenciada?',
10
+ name: 'datacrazyReplyCheck',
11
+ icon: 'file:dc-logo.png',
12
+ group: ['transform'],
13
+ version: 1,
14
+ description: 'Verifica se a mensagem recebida é uma resposta/reply a outra mensagem. Saída "Sim" se for referenciada, "Não" se for mensagem normal.',
15
+ defaults: { name: 'É Mensagem Referenciada?' },
16
+ inputs: ['main'],
17
+ outputs: ['main', 'main'],
18
+ outputNames: ['Sim', 'Não'],
19
+ properties: [
20
+ ...ReplyCheckerDescription_1.replyCheckerFields,
21
+ ],
22
+ };
23
+ }
24
+ async execute() {
25
+ const items = this.getInputData();
26
+ return replyChecker_handler_1.executeReplyChecker.call(this, items);
27
+ }
28
+ }
29
+ exports.DatacrazyReplyCheck = DatacrazyReplyCheck;
30
+ //# sourceMappingURL=DatacrazyReplyCheck.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatacrazyReplyCheck.node.js","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyReplyCheck.node.ts"],"names":[],"mappings":";;;AAOA,0FAAkF;AAClF,gFAA4E;AAE5E,MAAa,mBAAmB;IAAhC;QACE,gBAAW,GAAyB;YAClC,WAAW,EAAE,sCAAsC;YACnD,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EACT,uIAAuI;YACzI,QAAQ,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;YAC9C,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YACzB,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;YAC3B,UAAU,EAAE;gBACV,GAAG,4CAAkB;aACtB;SACF,CAAC;IAMJ,CAAC;IAJC,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,OAAO,0CAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;CACF;AAtBD,kDAsBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageContextDescription.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/descriptions/utils/MessageContextDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,wBAAwB,EAAE,eAAe,EAgBrD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,EAoDjD,CAAC"}
1
+ {"version":3,"file":"MessageContextDescription.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/descriptions/utils/MessageContextDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,wBAAwB,EAAE,eAAe,EAgBrD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,EAiEjD,CAAC"}
@@ -35,7 +35,7 @@ exports.messageContextFields = [
35
35
  required: true,
36
36
  default: '',
37
37
  displayOptions: { show: { resource: ['messageContext'], operation: ['getContext'] } },
38
- description: 'Campo context_id do payload. Vazio indica que não é mensagem de referência.',
38
+ description: 'Campo context_id do payload. Deixe vazio se não for uma mensagem de resposta.',
39
39
  },
40
40
  {
41
41
  displayName: 'Tipo da Mensagem',
@@ -44,13 +44,20 @@ exports.messageContextFields = [
44
44
  required: true,
45
45
  displayOptions: { show: { resource: ['messageContext'], operation: ['getContext'] } },
46
46
  options: [
47
+ {
48
+ name: 'Auto (qualquer tipo)',
49
+ value: 'auto',
50
+ description: 'Passa o texto como está, sem formatação específica por tipo. Use quando o tipo vem de uma expressão dinâmica.',
51
+ },
47
52
  { name: 'Texto', value: 'text' },
48
- { name: 'Áudio', value: 'audio' },
53
+ { name: 'Áudio', value: 'audio', description: 'Usa a transcrição se fornecida' },
49
54
  { name: 'Imagem', value: 'image' },
50
55
  { name: 'Vídeo', value: 'video' },
51
56
  { name: 'Arquivo / Documento', value: 'document' },
57
+ { name: 'Arquivo (UAZAP - file)', value: 'file' },
52
58
  ],
53
- default: 'text',
59
+ default: 'auto',
60
+ description: 'Tipo da mensagem recebida. Afeta como o MessageLead é formatado.',
54
61
  },
55
62
  {
56
63
  displayName: 'Data/Hora da Mensagem',
@@ -58,7 +65,7 @@ exports.messageContextFields = [
58
65
  type: 'string',
59
66
  default: '',
60
67
  displayOptions: { show: { resource: ['messageContext'], operation: ['getContext'] } },
61
- description: 'Data ISO da mensagem (messageData_date) para localizar a mensagem correta no histórico',
68
+ description: 'Data ISO da mensagem (messageData_date) — usada para localizar a mensagem correta no histórico',
62
69
  },
63
70
  {
64
71
  displayName: 'Texto da Transcrição de Áudio',
@@ -66,8 +73,14 @@ exports.messageContextFields = [
66
73
  type: 'string',
67
74
  default: '',
68
75
  typeOptions: { rows: 3 },
69
- displayOptions: { show: { resource: ['messageContext'], operation: ['getContext'] } },
70
- description: 'Se a mensagem for áudio e você já tiver a transcrição, cole aqui. Caso contrário, deixe vazio.',
76
+ displayOptions: {
77
+ show: {
78
+ resource: ['messageContext'],
79
+ operation: ['getContext'],
80
+ typeMessage: ['audio'],
81
+ },
82
+ },
83
+ description: 'Se já tiver a transcrição do áudio, cole aqui. Caso contrário, deixe vazio.',
71
84
  },
72
85
  ];
73
86
  //# sourceMappingURL=MessageContextDescription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageContextDescription.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/descriptions/utils/MessageContextDescription.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAsB;IACzD;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,gBAAgB,CAAC,EAAE,EAAE;QAC1D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,0CAA0C;gBAChD,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,6EAA6E;aACtF;SACF;QACD,OAAO,EAAE,YAAY;KACtB;CACF,CAAC;AAEW,QAAA,oBAAoB,GAAsB;IACrD;QACE,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;QACrF,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;QACrF,WAAW,EACT,6EAA6E;KAChF;IACD;QACE,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;QACrF,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YACjC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE;SACnD;QACD,OAAO,EAAE,MAAM;KAChB;IACD;QACE,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;QACrF,WAAW,EAAE,wFAAwF;KACtG;IACD;QACE,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;QACxB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;QACrF,WAAW,EAAE,gGAAgG;KAC9G;CACF,CAAC"}
1
+ {"version":3,"file":"MessageContextDescription.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/descriptions/utils/MessageContextDescription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const replyCheckerFields: INodeProperties[];
3
+ //# sourceMappingURL=ReplyCheckerDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplyCheckerDescription.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/descriptions/utils/ReplyCheckerDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAqD/C,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replyCheckerFields = void 0;
4
+ exports.replyCheckerFields = [
5
+ {
6
+ displayName: 'Modo de Verificação',
7
+ name: 'mode',
8
+ type: 'options',
9
+ options: [
10
+ {
11
+ name: 'Campo Direto (Context ID)',
12
+ value: 'direct',
13
+ description: 'Informe o valor do context_id direto via expressão. Ex: {{ $json.context_id }}',
14
+ },
15
+ {
16
+ name: 'Payload Completo (Auto-detectar)',
17
+ value: 'payload',
18
+ description: 'Informe o payload completo do webhook e o node detecta o campo certo por provedor',
19
+ },
20
+ ],
21
+ default: 'direct',
22
+ },
23
+ {
24
+ displayName: 'Context ID',
25
+ name: 'contextId',
26
+ type: 'string',
27
+ default: '',
28
+ displayOptions: { show: { mode: ['direct'] } },
29
+ description: 'Valor do campo que identifica a mensagem referenciada. Use expressão: {{ $json.context_id }}. Se vazio → saída "Não". Se preenchido → saída "Sim".',
30
+ },
31
+ {
32
+ displayName: 'Payload do Webhook (JSON)',
33
+ name: 'webhookPayload',
34
+ type: 'json',
35
+ default: '{}',
36
+ displayOptions: { show: { mode: ['payload'] } },
37
+ description: 'Payload completo do webhook. O node detecta o campo correto conforme o provedor.',
38
+ },
39
+ {
40
+ displayName: 'Provedor',
41
+ name: 'provider',
42
+ type: 'options',
43
+ displayOptions: { show: { mode: ['payload'] } },
44
+ options: [
45
+ {
46
+ name: 'Auto (Detectar automaticamente)',
47
+ value: 'auto',
48
+ description: 'Testa context_id, message_reply_to_mid e quoted',
49
+ },
50
+ { name: 'WhatsApp Cloud API', value: 'whatsappApi', description: 'Usa body.context_id' },
51
+ { name: 'Instagram API', value: 'instagramApi', description: 'Usa body.message_reply_to_mid' },
52
+ { name: 'UAZAP', value: 'uazap', description: 'Usa body.quoted' },
53
+ ],
54
+ default: 'auto',
55
+ },
56
+ ];
57
+ //# sourceMappingURL=ReplyCheckerDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplyCheckerDescription.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/descriptions/utils/ReplyCheckerDescription.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAsB;IACnD;QACE,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,gFAAgF;aAC9F;YACD;gBACE,IAAI,EAAE,kCAAkC;gBACxC,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,mFAAmF;aACjG;SACF;QACD,OAAO,EAAE,QAAQ;KAClB;IACD;QACE,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;QAC9C,WAAW,EACT,oJAAoJ;KACvJ;IACD;QACE,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;QAC/C,WAAW,EAAE,kFAAkF;KAChG;IACD;QACE,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;QAC/C,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,iCAAiC;gBACvC,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,iDAAiD;aAC/D;YACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACxF,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,+BAA+B,EAAE;YAC9F,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE;SAClE;QACD,OAAO,EAAE,MAAM;KAChB;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"messageContext.handler.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/handlers/utils/messageContext.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,GAAG,CAAC,CA2Fd"}
1
+ {"version":3,"file":"messageContext.handler.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/handlers/utils/messageContext.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAyCjD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,GAAG,CAAC,CA2Ed"}
@@ -2,27 +2,56 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.executeMessageContext = executeMessageContext;
4
4
  const request_1 = require("../../utils/request");
5
+ function extractMessages(response) {
6
+ var _a;
7
+ if (Array.isArray(response))
8
+ return response;
9
+ if (Array.isArray(response === null || response === void 0 ? void 0 : response.messages))
10
+ return response.messages;
11
+ if (Array.isArray(response === null || response === void 0 ? void 0 : response.data))
12
+ return response.data;
13
+ if (Array.isArray((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.messages))
14
+ return response.data.messages;
15
+ return [];
16
+ }
17
+ function isReceivedMessage(m) {
18
+ return m.received === true || m.received === 'true' || m.fromMe === false || m.fromMe === 'false';
19
+ }
20
+ function buildMessageLead(type, rawText, audioTranscription) {
21
+ const t = rawText.trim();
22
+ if (type === 'audio') {
23
+ if (audioTranscription)
24
+ return audioTranscription;
25
+ return t || '<mensagem de áudio não audível>';
26
+ }
27
+ if (type === 'image') {
28
+ return t
29
+ ? `<o usuário enviou uma imagem junto com um texto: "${t}". Informe que você não consegue visualizar imagens, mas pode ajudar com base no texto enviado>`
30
+ : '<o usuário enviou uma imagem. Informe que você não consegue visualizar imagens e peça para ele enviar a informação por texto ou áudio>';
31
+ }
32
+ if (type === 'video') {
33
+ return t
34
+ ? `<o usuário enviou um vídeo junto com um texto: "${t}". Informe que você não consegue assistir vídeos, mas pode ajudar com base no texto enviado>`
35
+ : '<o usuário enviou um vídeo. Informe que você não consegue assistir vídeos e peça para ele enviar a informação por texto ou áudio>';
36
+ }
37
+ if (type === 'document' || type === 'file') {
38
+ return t
39
+ ? `<o usuário enviou um arquivo junto com um texto: "${t}". Informe que você não consegue analisar arquivos, mas pode ajudar com base no texto enviado>`
40
+ : '<o usuário enviou um arquivo. Informe que você não consegue analisar arquivos e peça para ele enviar a informação por texto ou áudio>';
41
+ }
42
+ // 'text', 'auto', ou qualquer outro: passa o texto como está
43
+ return t;
44
+ }
5
45
  async function executeMessageContext(baseUrl, i) {
6
- var _a, _b, _c, _d, _e, _f;
46
+ var _a, _b, _c, _d, _e, _f, _g, _h;
7
47
  const conversationId = this.getNodeParameter('conversationId', i);
8
48
  const contextId = this.getNodeParameter('contextId', i);
9
49
  const typeMessage = this.getNodeParameter('typeMessage', i);
10
50
  const messageData = this.getNodeParameter('messageData', i, '');
11
51
  const audioTranscription = this.getNodeParameter('audioTranscription', i, '');
12
- if (!contextId) {
13
- let messageLead = '';
14
- if (typeMessage === 'audio') {
15
- messageLead = audioTranscription ? audioTranscription : '<mensagem de áudio>';
16
- }
17
- else if (typeMessage === 'image') {
18
- messageLead = '<o usuário enviou uma imagem. Informe que você não consegue visualizar imagens e peça para ele enviar a informação por texto ou áudio>';
19
- }
20
- else if (typeMessage === 'video') {
21
- messageLead = '<o usuário enviou um vídeo. Informe que você não consegue assistir vídeos e peça para ele enviar a informação por texto ou áudio>';
22
- }
23
- else if (typeMessage === 'document') {
24
- messageLead = '<o usuário enviou um documento. Informe que você não consegue analisar documentos e peça para ele enviar a informação por texto ou áudio>';
25
- }
52
+ // Não é mensagem de reply
53
+ if (!contextId || contextId.trim() === '') {
54
+ const messageLead = buildMessageLead(typeMessage, '', audioTranscription);
26
55
  return {
27
56
  isReply: false,
28
57
  MessageReferencia: null,
@@ -31,45 +60,31 @@ async function executeMessageContext(baseUrl, i) {
31
60
  type_message: typeMessage,
32
61
  };
33
62
  }
63
+ // Busca histórico da conversa
34
64
  const historyResponse = await request_1.makeRequest.call(this, baseUrl, 'GET', `/api/v1/conversations/${conversationId}/messages`);
35
- const messages = (_b = (_a = historyResponse === null || historyResponse === void 0 ? void 0 : historyResponse.messages) !== null && _a !== void 0 ? _a : historyResponse) !== null && _b !== void 0 ? _b : [];
65
+ const messages = extractMessages(historyResponse);
36
66
  const dataReferencia = messageData ? new Date(messageData) : new Date();
37
- const receivedMessages = messages.filter((m) => m.received === true);
67
+ // Encontra a mensagem do lead mais próxima da data referência
68
+ const receivedMessages = messages.filter(isReceivedMessage);
38
69
  receivedMessages.sort((a, b) => Math.abs(new Date(a.createdAt).getTime() - dataReferencia.getTime()) -
39
70
  Math.abs(new Date(b.createdAt).getTime() - dataReferencia.getTime()));
40
- const mensagemUsuario = (_c = receivedMessages[0]) !== null && _c !== void 0 ? _c : null;
41
- let messageLead = ((_d = mensagemUsuario === null || mensagemUsuario === void 0 ? void 0 : mensagemUsuario.body) !== null && _d !== void 0 ? _d : '').toString().trim();
42
- if (typeMessage === 'audio') {
43
- messageLead = audioTranscription || (messageLead ? messageLead : '<mensagem de áudio não audível>');
44
- }
45
- else if (typeMessage === 'image') {
46
- messageLead = messageLead
47
- ? `<o usuário enviou uma imagem junto com um texto: "${messageLead}". Informe que você não consegue visualizar imagens, mas pode ajudar com base no texto enviado>`
48
- : '<o usuário enviou uma imagem. Informe que você não consegue visualizar imagens e peça para ele enviar a informação por texto ou áudio>';
49
- }
50
- else if (typeMessage === 'video') {
51
- messageLead = messageLead
52
- ? `<o usuário enviou um vídeo junto com um texto: "${messageLead}". Informe que você não consegue assistir vídeos, mas pode ajudar com base no texto enviado>`
53
- : '<o usuário enviou um vídeo. Informe que você não consegue assistir vídeos e peça para ele enviar a informação por texto ou áudio>';
54
- }
55
- else if (typeMessage === 'document') {
56
- messageLead = messageLead
57
- ? `<o usuário enviou um documento junto com um texto: "${messageLead}". Informe que você não consegue analisar documentos, mas pode ajudar com base no texto enviado>`
58
- : '<o usuário enviou um documento. Informe que você não consegue analisar documentos e peça para ele enviar a informação por texto ou áudio>';
59
- }
71
+ const mensagemUsuario = (_a = receivedMessages[0]) !== null && _a !== void 0 ? _a : null;
72
+ const rawText = ((_d = (_c = (_b = mensagemUsuario === null || mensagemUsuario === void 0 ? void 0 : mensagemUsuario.body) !== null && _b !== void 0 ? _b : mensagemUsuario === null || mensagemUsuario === void 0 ? void 0 : mensagemUsuario.text) !== null && _c !== void 0 ? _c : mensagemUsuario === null || mensagemUsuario === void 0 ? void 0 : mensagemUsuario.content) !== null && _d !== void 0 ? _d : '').toString();
73
+ const messageLead = buildMessageLead(typeMessage, rawText, audioTranscription);
74
+ // Mensagem referenciada: tenta repliedMessage primeiro, depois fallback por ordem
60
75
  const mensagemIA = (_e = mensagemUsuario === null || mensagemUsuario === void 0 ? void 0 : mensagemUsuario.repliedMessage) !== null && _e !== void 0 ? _e : null;
61
76
  let perguntaFallback = null;
62
77
  if (!mensagemIA && mensagemUsuario) {
63
78
  const idx = messages.findIndex((m) => m.id === mensagemUsuario.id);
64
79
  for (let j = idx + 1; j < messages.length; j++) {
65
- if (messages[j].received === false) {
80
+ if (!isReceivedMessage(messages[j])) {
66
81
  perguntaFallback = messages[j];
67
82
  break;
68
83
  }
69
84
  }
70
85
  }
71
86
  const perguntaFinal = mensagemIA !== null && mensagemIA !== void 0 ? mensagemIA : perguntaFallback;
72
- const messageReferencia = (_f = perguntaFinal === null || perguntaFinal === void 0 ? void 0 : perguntaFinal.body) !== null && _f !== void 0 ? _f : null;
87
+ const messageReferencia = (_h = (_g = (_f = perguntaFinal === null || perguntaFinal === void 0 ? void 0 : perguntaFinal.body) !== null && _f !== void 0 ? _f : perguntaFinal === null || perguntaFinal === void 0 ? void 0 : perguntaFinal.text) !== null && _g !== void 0 ? _g : perguntaFinal === null || perguntaFinal === void 0 ? void 0 : perguntaFinal.content) !== null && _h !== void 0 ? _h : null;
73
88
  const messageCompleta = [
74
89
  messageReferencia ? `MENSAGEM REFERENCIADA: ${messageReferencia}` : '',
75
90
  messageLead ? `RESPOSTA DO LEAD: ${messageLead}` : '',
@@ -79,9 +94,14 @@ async function executeMessageContext(baseUrl, i) {
79
94
  return {
80
95
  isReply: !!mensagemIA,
81
96
  MessageReferencia: messageReferencia,
82
- MessageLead: messageLead,
97
+ MessageLead: messageLead || null,
83
98
  MessageCompleta: messageCompleta || null,
84
99
  type_message: typeMessage,
100
+ _debug: {
101
+ totalMessages: messages.length,
102
+ receivedFound: receivedMessages.length,
103
+ apiResponseKeys: Object.keys(historyResponse !== null && historyResponse !== void 0 ? historyResponse : {}),
104
+ },
85
105
  };
86
106
  }
87
107
  //# sourceMappingURL=messageContext.handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageContext.handler.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/handlers/utils/messageContext.handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageContext.handler.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/handlers/utils/messageContext.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
2
+ export declare function executeReplyChecker(this: IExecuteFunctions, items: INodeExecutionData[]): Promise<INodeExecutionData[][]>;
3
+ //# sourceMappingURL=replyChecker.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replyChecker.handler.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/handlers/utils/replyChecker.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA0BrE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,kBAAkB,EAAE,GAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAuDjC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeReplyChecker = executeReplyChecker;
4
+ // Output indices:
5
+ // 0 → Sim (é reply)
6
+ // 1 → Não (mensagem normal)
7
+ function extractContextId(body, provider) {
8
+ var _a, _b, _c, _d, _e, _f;
9
+ if (provider === 'whatsappApi')
10
+ return (_a = body === null || body === void 0 ? void 0 : body.context_id) !== null && _a !== void 0 ? _a : '';
11
+ if (provider === 'instagramApi')
12
+ return (_b = body === null || body === void 0 ? void 0 : body.message_reply_to_mid) !== null && _b !== void 0 ? _b : '';
13
+ if (provider === 'uazap')
14
+ return (_c = body === null || body === void 0 ? void 0 : body.quoted) !== null && _c !== void 0 ? _c : '';
15
+ // auto: tenta todos os campos conhecidos
16
+ return ((_f = (_e = (_d = body === null || body === void 0 ? void 0 : body.context_id) !== null && _d !== void 0 ? _d : body === null || body === void 0 ? void 0 : body.message_reply_to_mid) !== null && _e !== void 0 ? _e : body === null || body === void 0 ? void 0 : body.quoted) !== null && _f !== void 0 ? _f : '');
17
+ }
18
+ function isNonEmpty(value) {
19
+ if (value === null || value === undefined)
20
+ return false;
21
+ const str = String(value).trim();
22
+ return str !== '' && str !== 'null' && str !== 'undefined';
23
+ }
24
+ async function executeReplyChecker(items) {
25
+ var _a;
26
+ const simOutput = [];
27
+ const naoOutput = [];
28
+ for (let i = 0; i < items.length; i++) {
29
+ const mode = this.getNodeParameter('mode', i, 'direct');
30
+ let contextId = '';
31
+ let detectedProvider = '';
32
+ if (mode === 'direct') {
33
+ contextId = this.getNodeParameter('contextId', i, '').trim();
34
+ }
35
+ else {
36
+ const rawPayload = this.getNodeParameter('webhookPayload', i, '{}');
37
+ const payload = typeof rawPayload === 'string' ? JSON.parse(rawPayload) : rawPayload;
38
+ const entry = Array.isArray(payload) ? payload[0] : payload;
39
+ const body = (_a = entry === null || entry === void 0 ? void 0 : entry.body) !== null && _a !== void 0 ? _a : entry;
40
+ const provider = this.getNodeParameter('provider', i, 'auto');
41
+ contextId = extractContextId(body, provider);
42
+ if (provider === 'auto') {
43
+ if (isNonEmpty(body === null || body === void 0 ? void 0 : body.context_id))
44
+ detectedProvider = 'whatsappApi';
45
+ else if (isNonEmpty(body === null || body === void 0 ? void 0 : body.message_reply_to_mid))
46
+ detectedProvider = 'instagramApi';
47
+ else if (isNonEmpty(body === null || body === void 0 ? void 0 : body.quoted))
48
+ detectedProvider = 'uazap';
49
+ }
50
+ else {
51
+ detectedProvider = provider;
52
+ }
53
+ }
54
+ const isReply = isNonEmpty(contextId);
55
+ const enriched = {
56
+ json: {
57
+ ...items[i].json,
58
+ isReply,
59
+ contextId: contextId || null,
60
+ ...(detectedProvider ? { detectedProvider } : {}),
61
+ },
62
+ pairedItem: { item: i },
63
+ };
64
+ const executionData = this.helpers.constructExecutionMetaData([enriched], { itemData: { item: i } });
65
+ if (isReply) {
66
+ simOutput.push(...executionData);
67
+ }
68
+ else {
69
+ naoOutput.push(...executionData);
70
+ }
71
+ }
72
+ return [simOutput, naoOutput];
73
+ }
74
+ //# sourceMappingURL=replyChecker.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replyChecker.handler.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/handlers/utils/replyChecker.handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growsalesai/n8n-nodes-datacrazy",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "n8n community node para o Datacrazy CRM - Growsales IA",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -41,7 +41,8 @@
41
41
  "nodes": [
42
42
  "dist/nodes/Datacrazy/Datacrazy.node.js",
43
43
  "dist/nodes/Datacrazy/DatacrazyUtils.node.js",
44
- "dist/nodes/Datacrazy/DatacrazyMsgSwitch.node.js"
44
+ "dist/nodes/Datacrazy/DatacrazyMsgSwitch.node.js",
45
+ "dist/nodes/Datacrazy/DatacrazyReplyCheck.node.js"
45
46
  ]
46
47
  },
47
48
  "devDependencies": {