n8n-nodes-aib 0.6.0 → 0.7.0
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.
|
@@ -79,38 +79,12 @@ class AibDigital {
|
|
|
79
79
|
outputs: ["main"],
|
|
80
80
|
credentials: [{ name: "aibDigitalApi", required: true }],
|
|
81
81
|
properties: [
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
displayOptions: { show: { "@version": [1] } },
|
|
89
|
-
description: "O cliente. Com chave de agência, escolha aqui; com chave de conta, deixe vazio.",
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
displayName: "Conta",
|
|
93
|
-
name: "conta",
|
|
94
|
-
type: "resourceLocator",
|
|
95
|
-
default: { mode: "list", value: "" },
|
|
96
|
-
displayOptions: { show: { "@version": [2] } },
|
|
97
|
-
description: "O cliente. Com chave de agência, escolha aqui; com chave de conta, deixe vazio.",
|
|
98
|
-
modes: [
|
|
99
|
-
{
|
|
100
|
-
displayName: "Da lista",
|
|
101
|
-
name: "list",
|
|
102
|
-
type: "list",
|
|
103
|
-
typeOptions: { searchListMethod: "buscarContas", searchable: true },
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
displayName: "Por ID",
|
|
107
|
-
name: "id",
|
|
108
|
-
type: "string",
|
|
109
|
-
hint: "O UUID da conta. Vazio = a conta da própria chave.",
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
},
|
|
113
|
-
// ── Recurso → Operação, como no nó do Chatwoot ──────────────
|
|
82
|
+
// ── Recurso → Operação → Conta ──────────────────────────────
|
|
83
|
+
//
|
|
84
|
+
// Nesta ordem, e não com a Conta na frente: primeiro se diz O QUE
|
|
85
|
+
// fazer, depois ONDE. É como o nó do Chatwoot se apresenta, e é a
|
|
86
|
+
// ordem em que a pessoa pensa. A Conta na frente obrigava a
|
|
87
|
+
// escolher o cliente antes de saber o que se ia fazer nele.
|
|
114
88
|
{
|
|
115
89
|
displayName: "Recurso",
|
|
116
90
|
name: "recurso",
|
|
@@ -200,6 +174,37 @@ class AibDigital {
|
|
|
200
174
|
{ name: "Listar etiquetas", value: "listarEtiquetas", action: "Listar as etiquetas da conta" },
|
|
201
175
|
],
|
|
202
176
|
},
|
|
177
|
+
{
|
|
178
|
+
displayName: "Conta",
|
|
179
|
+
name: "conta",
|
|
180
|
+
type: "options",
|
|
181
|
+
typeOptions: { loadOptionsMethod: "getContas" },
|
|
182
|
+
default: "",
|
|
183
|
+
displayOptions: { show: { "@version": [1] } },
|
|
184
|
+
description: "O cliente. Com chave de agência, escolha aqui; com chave de conta, deixe vazio.",
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
displayName: "Conta",
|
|
188
|
+
name: "conta",
|
|
189
|
+
type: "resourceLocator",
|
|
190
|
+
default: { mode: "list", value: "" },
|
|
191
|
+
displayOptions: { show: { "@version": [2] } },
|
|
192
|
+
description: "O cliente. Com chave de agência é obrigatória — a API recusa o pedido sem ela. Com chave de conta, deixe vazio: é a conta da própria chave.",
|
|
193
|
+
modes: [
|
|
194
|
+
{
|
|
195
|
+
displayName: "Da lista",
|
|
196
|
+
name: "list",
|
|
197
|
+
type: "list",
|
|
198
|
+
typeOptions: { searchListMethod: "buscarContas", searchable: true },
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
displayName: "Por ID",
|
|
202
|
+
name: "id",
|
|
203
|
+
type: "string",
|
|
204
|
+
hint: "O UUID da conta. Vazio = a conta da própria chave.",
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
203
208
|
// ── parâmetros por operação ─────────────────────────────
|
|
204
209
|
{
|
|
205
210
|
displayName: "Conversa (ID)",
|
|
@@ -321,12 +326,14 @@ class AibDigital {
|
|
|
321
326
|
description: "Onde o funil/dado vai nascer. Conta com 2+ ambientes exige escolher aqui.",
|
|
322
327
|
},
|
|
323
328
|
{
|
|
329
|
+
// Onde o dado NASCE, então continua em primeiro plano: criar um
|
|
330
|
+
// funil ou uma etiqueta no ambiente errado é trabalho refeito.
|
|
324
331
|
displayName: "Ambiente",
|
|
325
332
|
name: "ambienteId",
|
|
326
333
|
type: "resourceLocator",
|
|
327
334
|
default: { mode: "list", value: "" },
|
|
328
335
|
displayOptions: {
|
|
329
|
-
show: { "@version": [2], operation: ["
|
|
336
|
+
show: { "@version": [2], operation: ["criarFunil", "criarEtiqueta"] },
|
|
330
337
|
},
|
|
331
338
|
description: "Onde o funil/dado vai nascer. Conta com 2+ ambientes exige escolher aqui.",
|
|
332
339
|
modes: [
|
|
@@ -340,23 +347,34 @@ class AibDigital {
|
|
|
340
347
|
],
|
|
341
348
|
},
|
|
342
349
|
{
|
|
343
|
-
//
|
|
344
|
-
//
|
|
345
|
-
//
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
+
// Na âncora, Ambiente e Caixa são REFINAMENTO: sem eles o nó já
|
|
351
|
+
// responde, e a conta com um ambiente só — que é a maioria —
|
|
352
|
+
// nunca precisa tocar aqui. Soltos na tela, pareciam pendências e
|
|
353
|
+
// faziam a pergunta "preciso preencher isso?" a cada vez. Dentro
|
|
354
|
+
// de Opções, aparecem quando são procurados.
|
|
355
|
+
displayName: "Opções",
|
|
356
|
+
name: "opcoes",
|
|
357
|
+
type: "collection",
|
|
358
|
+
placeholder: "Escolher ambiente ou caixa",
|
|
359
|
+
default: {},
|
|
350
360
|
displayOptions: { show: { "@version": [2], operation: ["selecionarConta"] } },
|
|
351
|
-
|
|
352
|
-
modes: [
|
|
361
|
+
options: [
|
|
353
362
|
{
|
|
354
|
-
displayName: "
|
|
355
|
-
name: "
|
|
356
|
-
type: "
|
|
357
|
-
typeOptions: {
|
|
363
|
+
displayName: "Ambiente",
|
|
364
|
+
name: "ambienteId",
|
|
365
|
+
type: "options",
|
|
366
|
+
typeOptions: { loadOptionsMethod: "getAmbientes", loadOptionsDependsOn: ["conta.value"] },
|
|
367
|
+
default: "",
|
|
368
|
+
description: "Vazio = o único ambiente da conta",
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
displayName: "Caixa de Entrada",
|
|
372
|
+
name: "caixaId",
|
|
373
|
+
type: "options",
|
|
374
|
+
typeOptions: { loadOptionsMethod: "getCaixas", loadOptionsDependsOn: ["conta.value"] },
|
|
375
|
+
default: "",
|
|
376
|
+
description: "O WhatsApp da conta. Vazio = o fluxo não se prende a uma caixa.",
|
|
358
377
|
},
|
|
359
|
-
{ displayName: "Por ID", name: "id", type: "string" },
|
|
360
378
|
],
|
|
361
379
|
},
|
|
362
380
|
{
|
|
@@ -551,6 +569,20 @@ class AibDigital {
|
|
|
551
569
|
return [{ name: "— Único ambiente da conta —", value: "" }];
|
|
552
570
|
}
|
|
553
571
|
},
|
|
572
|
+
async getCaixas() {
|
|
573
|
+
const conta = contaDeLista(this);
|
|
574
|
+
try {
|
|
575
|
+
const res = await api(this, "GET", "/api/v1/caixas", undefined, conta ? { conta } : undefined);
|
|
576
|
+
const caixas = (res?.caixas ?? []);
|
|
577
|
+
return caixas.map((c) => ({
|
|
578
|
+
name: c.telefone ? `${c.nome} · ${c.telefone}` : c.nome,
|
|
579
|
+
value: c.id,
|
|
580
|
+
}));
|
|
581
|
+
}
|
|
582
|
+
catch {
|
|
583
|
+
return [];
|
|
584
|
+
}
|
|
585
|
+
},
|
|
554
586
|
async getFunis() {
|
|
555
587
|
const conta = contaDeLista(this);
|
|
556
588
|
const res = await api(this, "GET", "/api/v1/funis", undefined, conta ? { conta } : undefined);
|
|
@@ -680,8 +712,14 @@ class AibDigital {
|
|
|
680
712
|
// .ambiente_id e .caixa_id). É onde o funil vai nascer e por onde o
|
|
681
713
|
// atendimento fala.
|
|
682
714
|
const contaSel = idDe(this.getNodeParameter("conta", i, ""));
|
|
683
|
-
|
|
684
|
-
|
|
715
|
+
// Ambiente e caixa mudaram de lugar na 0.7.0 (foram para `opcoes`).
|
|
716
|
+
// O nó gravado antes disso guardou os dois no primeiro nível, e
|
|
717
|
+
// continua valendo: lê-se a coleção e, se ela não disser nada, o
|
|
718
|
+
// campo antigo. Sem isso, um fluxo já montado perderia o ambiente
|
|
719
|
+
// em silêncio — e criaria o funil no lugar errado.
|
|
720
|
+
const opcoes = this.getNodeParameter("opcoes", i, {});
|
|
721
|
+
const ambienteSel = idDe(opcoes.ambienteId) || idDe(this.getNodeParameter("ambienteId", i, ""));
|
|
722
|
+
const caixaSel = idDe(opcoes.caixaId) || idDe(this.getNodeParameter("caixaId", i, ""));
|
|
685
723
|
let base;
|
|
686
724
|
if (contaSel) {
|
|
687
725
|
const r = await api(this, "GET", "/api/v1/contas");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-aib",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Nós do Sistema AIB Digital para n8n: gatilho de mensagens do WhatsApp (via AIB Inbox) e ações — enviar mensagem, mover card no funil, pausar IA — escolhendo conta e caixa por dropdown.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "AIB Digital",
|