n8n-nodes-digitalsac 0.2.7 → 0.2.9
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 +137 -0
- package/dist/nodes/Digitalsac/Digitalsac.node.js +201 -3
- package/nodes/Digitalsac/Digitalsac.node.ts +201 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,6 +13,13 @@ Este pacote adiciona um nó personalizado ao n8n para interagir com a API do Dig
|
|
|
13
13
|
- Transferir para Atendente
|
|
14
14
|
- Fechar Ticket
|
|
15
15
|
- Enviar Mensagem (texto e arquivos)
|
|
16
|
+
- Listar Tags
|
|
17
|
+
- Vincular Tag
|
|
18
|
+
- Criar Tag
|
|
19
|
+
- Listar Kanbans
|
|
20
|
+
- Vincular Kanban
|
|
21
|
+
- Listar Carteiras
|
|
22
|
+
- Vincular Carteira
|
|
16
23
|
|
|
17
24
|
## Instalação
|
|
18
25
|
|
|
@@ -128,6 +135,64 @@ Onde:
|
|
|
128
135
|
```
|
|
129
136
|
Onde `data` é o nome da propriedade binária que contém o arquivo.
|
|
130
137
|
|
|
138
|
+
### Listar Tags
|
|
139
|
+
1. Selecione a operação **Listar Tags**
|
|
140
|
+
2. Não é necessário configurar parâmetros adicionais
|
|
141
|
+
|
|
142
|
+
### Vincular Tag
|
|
143
|
+
1. Selecione a operação **Vincular Tag**
|
|
144
|
+
2. No campo **Dados (JSON)**, insira os dados no formato:
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"ticketId": 123,
|
|
148
|
+
"tagId": 456
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
Onde:
|
|
152
|
+
- `ticketId`: ID do ticket
|
|
153
|
+
- `tagId`: ID da tag a ser vinculada
|
|
154
|
+
|
|
155
|
+
### Criar Tag
|
|
156
|
+
1. Selecione a operação **Criar Tag**
|
|
157
|
+
2. No campo **Nome da Tag**, insira o nome da tag
|
|
158
|
+
3. No campo **Cor da Tag**, insira a cor em formato hexadecimal (ex: #FF5733, #2196F3, #4CAF50)
|
|
159
|
+
|
|
160
|
+
### Listar Kanbans
|
|
161
|
+
1. Selecione a operação **Listar Kanbans**
|
|
162
|
+
2. No campo **User ID**, insira o ID do usuário
|
|
163
|
+
|
|
164
|
+
### Vincular Kanban
|
|
165
|
+
1. Selecione a operação **Vincular Kanban**
|
|
166
|
+
2. No campo **Dados (JSON)**, insira os dados no formato:
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"ticketId": 123,
|
|
170
|
+
"kanbanId": 456,
|
|
171
|
+
"userId": 789
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
Onde:
|
|
175
|
+
- `ticketId`: ID do ticket
|
|
176
|
+
- `kanbanId`: ID do kanban a ser vinculado
|
|
177
|
+
- `userId`: ID do usuário
|
|
178
|
+
|
|
179
|
+
### Listar Carteiras
|
|
180
|
+
1. Selecione a operação **Listar Carteiras**
|
|
181
|
+
2. Não é necessário configurar parâmetros adicionais
|
|
182
|
+
|
|
183
|
+
### Vincular Carteira
|
|
184
|
+
1. Selecione a operação **Vincular Carteira**
|
|
185
|
+
2. No campo **Dados (JSON)**, insira os dados no formato:
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"ticketId": 123,
|
|
189
|
+
"userId": 456
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
Onde:
|
|
193
|
+
- `ticketId`: ID do ticket
|
|
194
|
+
- `userId`: ID do usuário da carteira
|
|
195
|
+
|
|
131
196
|
## Exemplos de Respostas da API
|
|
132
197
|
|
|
133
198
|
### Transferir para Fila
|
|
@@ -160,6 +225,37 @@ Onde `data` é o nome da propriedade binária que contém o arquivo.
|
|
|
160
225
|
}
|
|
161
226
|
```
|
|
162
227
|
|
|
228
|
+
### Criar Tag
|
|
229
|
+
**Resposta de sucesso (tag criada):**
|
|
230
|
+
```json
|
|
231
|
+
{
|
|
232
|
+
"status": 1,
|
|
233
|
+
"tagId": 456
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Resposta quando tag já existe:**
|
|
238
|
+
```json
|
|
239
|
+
{
|
|
240
|
+
"status": 2
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Resposta de erro:**
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"status": 0
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Vincular Tag/Kanban/Carteira
|
|
252
|
+
**Resposta de sucesso:**
|
|
253
|
+
```json
|
|
254
|
+
{
|
|
255
|
+
"status": 0
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
163
259
|
## Exemplo de Fluxo
|
|
164
260
|
|
|
165
261
|
### Enviar PDF para um contato
|
|
@@ -199,6 +295,47 @@ Onde `data` é o nome da propriedade binária que contém o arquivo.
|
|
|
199
295
|
}
|
|
200
296
|
```
|
|
201
297
|
|
|
298
|
+
### Criar uma tag e vincular a um ticket
|
|
299
|
+
1. Adicione um nó **Digitalsac**
|
|
300
|
+
- Operação: **Criar Tag**
|
|
301
|
+
- Nome da Tag: `Suporte Técnico`
|
|
302
|
+
- Cor da Tag: `#2196F3`
|
|
303
|
+
2. Conecte a outro nó **Digitalsac**
|
|
304
|
+
- Operação: **Vincular Tag**
|
|
305
|
+
- Dados (JSON):
|
|
306
|
+
```json
|
|
307
|
+
{
|
|
308
|
+
"ticketId": 123,
|
|
309
|
+
"tagId": "{{$json.tagId}}"
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Listar kanbans de um usuário e vincular a um ticket
|
|
314
|
+
1. Adicione um nó **Digitalsac**
|
|
315
|
+
- Operação: **Listar Kanbans**
|
|
316
|
+
- User ID: `10`
|
|
317
|
+
2. Conecte a outro nó **Digitalsac**
|
|
318
|
+
- Operação: **Vincular Kanban**
|
|
319
|
+
- Dados (JSON):
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"ticketId": 123,
|
|
323
|
+
"kanbanId": 5,
|
|
324
|
+
"userId": 10
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Vincular carteira a um ticket
|
|
329
|
+
1. Adicione um nó **Digitalsac**
|
|
330
|
+
- Operação: **Vincular Carteira**
|
|
331
|
+
- Dados (JSON):
|
|
332
|
+
```json
|
|
333
|
+
{
|
|
334
|
+
"ticketId": 123,
|
|
335
|
+
"userId": 15
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
202
339
|
## Suporte
|
|
203
340
|
|
|
204
341
|
Para suporte, entre em contato com [contato@digitalsac.io](mailto:contato@digitalsac.io).
|
|
@@ -36,6 +36,13 @@ class Digitalsac {
|
|
|
36
36
|
{ name: 'Transferir para Atendente', value: 'transferAgent' },
|
|
37
37
|
{ name: 'Fechar Ticket', value: 'closeTicket' },
|
|
38
38
|
{ name: 'Enviar Mensagem', value: 'sendMessage' },
|
|
39
|
+
{ name: 'Listar Tags', value: 'listTags' },
|
|
40
|
+
{ name: 'Vincular Tag', value: 'linkTag' },
|
|
41
|
+
{ name: 'Criar Tag', value: 'createTag' },
|
|
42
|
+
{ name: 'Listar Kanbans', value: 'listKanbans' },
|
|
43
|
+
{ name: 'Vincular Kanban', value: 'linkKanban' },
|
|
44
|
+
{ name: 'Listar Carteiras', value: 'listCarteiras' },
|
|
45
|
+
{ name: 'Vincular Carteira', value: 'linkCarteira' },
|
|
39
46
|
],
|
|
40
47
|
default: 'validateWhatsapp',
|
|
41
48
|
},
|
|
@@ -51,6 +58,18 @@ class Digitalsac {
|
|
|
51
58
|
},
|
|
52
59
|
description: 'Número, CPF ou UUID da mensagem (conforme operação)',
|
|
53
60
|
},
|
|
61
|
+
{
|
|
62
|
+
displayName: 'User ID',
|
|
63
|
+
name: 'userId',
|
|
64
|
+
type: 'number',
|
|
65
|
+
default: 1,
|
|
66
|
+
displayOptions: {
|
|
67
|
+
show: {
|
|
68
|
+
operation: ['listKanbans'],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
description: 'ID do usuário para listar kanbans',
|
|
72
|
+
},
|
|
54
73
|
{
|
|
55
74
|
displayName: 'Corpo da Mensagem',
|
|
56
75
|
name: 'messageBody',
|
|
@@ -87,17 +106,113 @@ class Digitalsac {
|
|
|
87
106
|
},
|
|
88
107
|
description: 'Identificador único opcional para a mensagem',
|
|
89
108
|
},
|
|
109
|
+
{
|
|
110
|
+
displayName: 'Nome da Tag',
|
|
111
|
+
name: 'tagName',
|
|
112
|
+
type: 'string',
|
|
113
|
+
default: 'Nova Tag',
|
|
114
|
+
displayOptions: {
|
|
115
|
+
show: {
|
|
116
|
+
operation: ['createTag'],
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
description: 'Nome da tag a ser criada',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
displayName: 'Cor da Tag',
|
|
123
|
+
name: 'tagColor',
|
|
124
|
+
type: 'string',
|
|
125
|
+
default: '#2196F3',
|
|
126
|
+
displayOptions: {
|
|
127
|
+
show: {
|
|
128
|
+
operation: ['createTag'],
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
description: 'Cor da tag em formato hexadecimal (ex: #FF5733, #2196F3, #4CAF50)',
|
|
132
|
+
},
|
|
90
133
|
{
|
|
91
134
|
displayName: 'Dados (JSON)',
|
|
92
135
|
name: 'bodyData',
|
|
93
136
|
type: 'json',
|
|
94
|
-
default: '{"
|
|
137
|
+
default: '{"data": "2024-01-15"}',
|
|
95
138
|
displayOptions: {
|
|
96
139
|
show: {
|
|
97
|
-
operation: ['validateDate'
|
|
140
|
+
operation: ['validateDate'],
|
|
98
141
|
},
|
|
99
142
|
},
|
|
100
|
-
description: '
|
|
143
|
+
description: 'Data a ser validada no formato JSON',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
displayName: 'Dados (JSON)',
|
|
147
|
+
name: 'bodyData',
|
|
148
|
+
type: 'json',
|
|
149
|
+
default: '{"ticketId": 123, "queueId": 1}',
|
|
150
|
+
displayOptions: {
|
|
151
|
+
show: {
|
|
152
|
+
operation: ['transferQueue'],
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
description: 'ID do ticket e ID da fila de destino',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
displayName: 'Dados (JSON)',
|
|
159
|
+
name: 'bodyData',
|
|
160
|
+
type: 'json',
|
|
161
|
+
default: '{"ticketId": 123, "userId": 1}',
|
|
162
|
+
displayOptions: {
|
|
163
|
+
show: {
|
|
164
|
+
operation: ['transferAgent'],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
description: 'ID do ticket e ID do atendente de destino',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
displayName: 'Dados (JSON)',
|
|
171
|
+
name: 'bodyData',
|
|
172
|
+
type: 'json',
|
|
173
|
+
default: '{"ticketId": 123}',
|
|
174
|
+
displayOptions: {
|
|
175
|
+
show: {
|
|
176
|
+
operation: ['closeTicket'],
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
description: 'ID do ticket a ser fechado',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
displayName: 'Dados (JSON)',
|
|
183
|
+
name: 'bodyData',
|
|
184
|
+
type: 'json',
|
|
185
|
+
default: '{"ticketId": 123, "tagId": 456}',
|
|
186
|
+
displayOptions: {
|
|
187
|
+
show: {
|
|
188
|
+
operation: ['linkTag'],
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
description: 'ID do ticket e ID da tag a ser vinculada',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
displayName: 'Dados (JSON)',
|
|
195
|
+
name: 'bodyData',
|
|
196
|
+
type: 'json',
|
|
197
|
+
default: '{"ticketId": 123, "kanbanId": 456, "userId": 789}',
|
|
198
|
+
displayOptions: {
|
|
199
|
+
show: {
|
|
200
|
+
operation: ['linkKanban'],
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
description: 'ID do ticket, ID do kanban e ID do usuário',
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
displayName: 'Dados (JSON)',
|
|
207
|
+
name: 'bodyData',
|
|
208
|
+
type: 'json',
|
|
209
|
+
default: '{"ticketId": 123, "userId": 456}',
|
|
210
|
+
displayOptions: {
|
|
211
|
+
show: {
|
|
212
|
+
operation: ['linkCarteira'],
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
description: 'ID do ticket e ID do usuário da carteira',
|
|
101
216
|
},
|
|
102
217
|
],
|
|
103
218
|
};
|
|
@@ -227,6 +342,89 @@ class Digitalsac {
|
|
|
227
342
|
json: true,
|
|
228
343
|
};
|
|
229
344
|
break;
|
|
345
|
+
case 'listTags':
|
|
346
|
+
url = '/typebot/listar_tags';
|
|
347
|
+
break;
|
|
348
|
+
case 'linkTag':
|
|
349
|
+
url = '/typebot/vincular_tag';
|
|
350
|
+
method = 'POST';
|
|
351
|
+
try {
|
|
352
|
+
body = JSON.parse(this.getNodeParameter('bodyData', i));
|
|
353
|
+
}
|
|
354
|
+
catch (e) {
|
|
355
|
+
throw new Error('Formato de JSON inválido para Dados (JSON)');
|
|
356
|
+
}
|
|
357
|
+
headers['Content-Type'] = 'application/json';
|
|
358
|
+
options = {
|
|
359
|
+
method,
|
|
360
|
+
headers,
|
|
361
|
+
body,
|
|
362
|
+
uri: `${baseUrl}${url}`,
|
|
363
|
+
json: true,
|
|
364
|
+
};
|
|
365
|
+
break;
|
|
366
|
+
case 'createTag':
|
|
367
|
+
url = '/typebot/criar_tag';
|
|
368
|
+
method = 'POST';
|
|
369
|
+
// Usar campos separados para criar tag
|
|
370
|
+
const tagName = this.getNodeParameter('tagName', i);
|
|
371
|
+
const tagColor = this.getNodeParameter('tagColor', i);
|
|
372
|
+
body = {
|
|
373
|
+
tag: tagName,
|
|
374
|
+
color: tagColor
|
|
375
|
+
};
|
|
376
|
+
headers['Content-Type'] = 'application/json';
|
|
377
|
+
options = {
|
|
378
|
+
method,
|
|
379
|
+
headers,
|
|
380
|
+
body,
|
|
381
|
+
uri: `${baseUrl}${url}`,
|
|
382
|
+
json: true,
|
|
383
|
+
};
|
|
384
|
+
break;
|
|
385
|
+
case 'listKanbans':
|
|
386
|
+
const userId = this.getNodeParameter('userId', i);
|
|
387
|
+
url = `/typebot/listar_kanbans?userId=${userId}`;
|
|
388
|
+
break;
|
|
389
|
+
case 'linkKanban':
|
|
390
|
+
url = '/typebot/vincular_kanban';
|
|
391
|
+
method = 'POST';
|
|
392
|
+
try {
|
|
393
|
+
body = JSON.parse(this.getNodeParameter('bodyData', i));
|
|
394
|
+
}
|
|
395
|
+
catch (e) {
|
|
396
|
+
throw new Error('Formato de JSON inválido para Dados (JSON)');
|
|
397
|
+
}
|
|
398
|
+
headers['Content-Type'] = 'application/json';
|
|
399
|
+
options = {
|
|
400
|
+
method,
|
|
401
|
+
headers,
|
|
402
|
+
body,
|
|
403
|
+
uri: `${baseUrl}${url}`,
|
|
404
|
+
json: true,
|
|
405
|
+
};
|
|
406
|
+
break;
|
|
407
|
+
case 'listCarteiras':
|
|
408
|
+
url = '/typebot/listar_carteiras';
|
|
409
|
+
break;
|
|
410
|
+
case 'linkCarteira':
|
|
411
|
+
url = '/typebot/vincular_carteira';
|
|
412
|
+
method = 'POST';
|
|
413
|
+
try {
|
|
414
|
+
body = JSON.parse(this.getNodeParameter('bodyData', i));
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
throw new Error('Formato de JSON inválido para Dados (JSON)');
|
|
418
|
+
}
|
|
419
|
+
headers['Content-Type'] = 'application/json';
|
|
420
|
+
options = {
|
|
421
|
+
method,
|
|
422
|
+
headers,
|
|
423
|
+
body,
|
|
424
|
+
uri: `${baseUrl}${url}`,
|
|
425
|
+
json: true,
|
|
426
|
+
};
|
|
427
|
+
break;
|
|
230
428
|
}
|
|
231
429
|
// Se as opções não foram definidas no switch, defina-as aqui para operações GET
|
|
232
430
|
if (!options.method) {
|
|
@@ -41,6 +41,13 @@ export class Digitalsac implements INodeType {
|
|
|
41
41
|
{ name: 'Transferir para Atendente', value: 'transferAgent' },
|
|
42
42
|
{ name: 'Fechar Ticket', value: 'closeTicket' },
|
|
43
43
|
{ name: 'Enviar Mensagem', value: 'sendMessage' },
|
|
44
|
+
{ name: 'Listar Tags', value: 'listTags' },
|
|
45
|
+
{ name: 'Vincular Tag', value: 'linkTag' },
|
|
46
|
+
{ name: 'Criar Tag', value: 'createTag' },
|
|
47
|
+
{ name: 'Listar Kanbans', value: 'listKanbans' },
|
|
48
|
+
{ name: 'Vincular Kanban', value: 'linkKanban' },
|
|
49
|
+
{ name: 'Listar Carteiras', value: 'listCarteiras' },
|
|
50
|
+
{ name: 'Vincular Carteira', value: 'linkCarteira' },
|
|
44
51
|
],
|
|
45
52
|
default: 'validateWhatsapp',
|
|
46
53
|
},
|
|
@@ -56,6 +63,18 @@ export class Digitalsac implements INodeType {
|
|
|
56
63
|
},
|
|
57
64
|
description: 'Número, CPF ou UUID da mensagem (conforme operação)',
|
|
58
65
|
},
|
|
66
|
+
{
|
|
67
|
+
displayName: 'User ID',
|
|
68
|
+
name: 'userId',
|
|
69
|
+
type: 'number',
|
|
70
|
+
default: 1,
|
|
71
|
+
displayOptions: {
|
|
72
|
+
show: {
|
|
73
|
+
operation: ['listKanbans'],
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
description: 'ID do usuário para listar kanbans',
|
|
77
|
+
},
|
|
59
78
|
{
|
|
60
79
|
displayName: 'Corpo da Mensagem',
|
|
61
80
|
name: 'messageBody',
|
|
@@ -92,17 +111,113 @@ export class Digitalsac implements INodeType {
|
|
|
92
111
|
},
|
|
93
112
|
description: 'Identificador único opcional para a mensagem',
|
|
94
113
|
},
|
|
114
|
+
{
|
|
115
|
+
displayName: 'Nome da Tag',
|
|
116
|
+
name: 'tagName',
|
|
117
|
+
type: 'string',
|
|
118
|
+
default: 'Nova Tag',
|
|
119
|
+
displayOptions: {
|
|
120
|
+
show: {
|
|
121
|
+
operation: ['createTag'],
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
description: 'Nome da tag a ser criada',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
displayName: 'Cor da Tag',
|
|
128
|
+
name: 'tagColor',
|
|
129
|
+
type: 'string',
|
|
130
|
+
default: '#2196F3',
|
|
131
|
+
displayOptions: {
|
|
132
|
+
show: {
|
|
133
|
+
operation: ['createTag'],
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
description: 'Cor da tag em formato hexadecimal (ex: #FF5733, #2196F3, #4CAF50)',
|
|
137
|
+
},
|
|
95
138
|
{
|
|
96
139
|
displayName: 'Dados (JSON)',
|
|
97
140
|
name: 'bodyData',
|
|
98
141
|
type: 'json',
|
|
99
|
-
default: '{"
|
|
142
|
+
default: '{"data": "2024-01-15"}',
|
|
100
143
|
displayOptions: {
|
|
101
144
|
show: {
|
|
102
|
-
operation: ['validateDate'
|
|
145
|
+
operation: ['validateDate'],
|
|
103
146
|
},
|
|
104
147
|
},
|
|
105
|
-
description: '
|
|
148
|
+
description: 'Data a ser validada no formato JSON',
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
displayName: 'Dados (JSON)',
|
|
152
|
+
name: 'bodyData',
|
|
153
|
+
type: 'json',
|
|
154
|
+
default: '{"ticketId": 123, "queueId": 1}',
|
|
155
|
+
displayOptions: {
|
|
156
|
+
show: {
|
|
157
|
+
operation: ['transferQueue'],
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
description: 'ID do ticket e ID da fila de destino',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
displayName: 'Dados (JSON)',
|
|
164
|
+
name: 'bodyData',
|
|
165
|
+
type: 'json',
|
|
166
|
+
default: '{"ticketId": 123, "userId": 1}',
|
|
167
|
+
displayOptions: {
|
|
168
|
+
show: {
|
|
169
|
+
operation: ['transferAgent'],
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
description: 'ID do ticket e ID do atendente de destino',
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
displayName: 'Dados (JSON)',
|
|
176
|
+
name: 'bodyData',
|
|
177
|
+
type: 'json',
|
|
178
|
+
default: '{"ticketId": 123}',
|
|
179
|
+
displayOptions: {
|
|
180
|
+
show: {
|
|
181
|
+
operation: ['closeTicket'],
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
description: 'ID do ticket a ser fechado',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
displayName: 'Dados (JSON)',
|
|
188
|
+
name: 'bodyData',
|
|
189
|
+
type: 'json',
|
|
190
|
+
default: '{"ticketId": 123, "tagId": 456}',
|
|
191
|
+
displayOptions: {
|
|
192
|
+
show: {
|
|
193
|
+
operation: ['linkTag'],
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
description: 'ID do ticket e ID da tag a ser vinculada',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
displayName: 'Dados (JSON)',
|
|
200
|
+
name: 'bodyData',
|
|
201
|
+
type: 'json',
|
|
202
|
+
default: '{"ticketId": 123, "kanbanId": 456, "userId": 789}',
|
|
203
|
+
displayOptions: {
|
|
204
|
+
show: {
|
|
205
|
+
operation: ['linkKanban'],
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
description: 'ID do ticket, ID do kanban e ID do usuário',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
displayName: 'Dados (JSON)',
|
|
212
|
+
name: 'bodyData',
|
|
213
|
+
type: 'json',
|
|
214
|
+
default: '{"ticketId": 123, "userId": 456}',
|
|
215
|
+
displayOptions: {
|
|
216
|
+
show: {
|
|
217
|
+
operation: ['linkCarteira'],
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
description: 'ID do ticket e ID do usuário da carteira',
|
|
106
221
|
},
|
|
107
222
|
],
|
|
108
223
|
};
|
|
@@ -227,6 +342,89 @@ export class Digitalsac implements INodeType {
|
|
|
227
342
|
externalKey: externalKey
|
|
228
343
|
};
|
|
229
344
|
|
|
345
|
+
headers['Content-Type'] = 'application/json';
|
|
346
|
+
options = {
|
|
347
|
+
method,
|
|
348
|
+
headers,
|
|
349
|
+
body,
|
|
350
|
+
uri: `${baseUrl}${url}`,
|
|
351
|
+
json: true,
|
|
352
|
+
};
|
|
353
|
+
break;
|
|
354
|
+
case 'listTags':
|
|
355
|
+
url = '/typebot/listar_tags';
|
|
356
|
+
break;
|
|
357
|
+
case 'linkTag':
|
|
358
|
+
url = '/typebot/vincular_tag';
|
|
359
|
+
method = 'POST';
|
|
360
|
+
try {
|
|
361
|
+
body = JSON.parse(this.getNodeParameter('bodyData', i) as string);
|
|
362
|
+
} catch (e) {
|
|
363
|
+
throw new Error('Formato de JSON inválido para Dados (JSON)');
|
|
364
|
+
}
|
|
365
|
+
headers['Content-Type'] = 'application/json';
|
|
366
|
+
options = {
|
|
367
|
+
method,
|
|
368
|
+
headers,
|
|
369
|
+
body,
|
|
370
|
+
uri: `${baseUrl}${url}`,
|
|
371
|
+
json: true,
|
|
372
|
+
};
|
|
373
|
+
break;
|
|
374
|
+
case 'createTag':
|
|
375
|
+
url = '/typebot/criar_tag';
|
|
376
|
+
method = 'POST';
|
|
377
|
+
|
|
378
|
+
// Usar campos separados para criar tag
|
|
379
|
+
const tagName = this.getNodeParameter('tagName', i) as string;
|
|
380
|
+
const tagColor = this.getNodeParameter('tagColor', i) as string;
|
|
381
|
+
|
|
382
|
+
body = {
|
|
383
|
+
tag: tagName,
|
|
384
|
+
color: tagColor
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
headers['Content-Type'] = 'application/json';
|
|
388
|
+
options = {
|
|
389
|
+
method,
|
|
390
|
+
headers,
|
|
391
|
+
body,
|
|
392
|
+
uri: `${baseUrl}${url}`,
|
|
393
|
+
json: true,
|
|
394
|
+
};
|
|
395
|
+
break;
|
|
396
|
+
case 'listKanbans':
|
|
397
|
+
const userId = this.getNodeParameter('userId', i) as number;
|
|
398
|
+
url = `/typebot/listar_kanbans?userId=${userId}`;
|
|
399
|
+
break;
|
|
400
|
+
case 'linkKanban':
|
|
401
|
+
url = '/typebot/vincular_kanban';
|
|
402
|
+
method = 'POST';
|
|
403
|
+
try {
|
|
404
|
+
body = JSON.parse(this.getNodeParameter('bodyData', i) as string);
|
|
405
|
+
} catch (e) {
|
|
406
|
+
throw new Error('Formato de JSON inválido para Dados (JSON)');
|
|
407
|
+
}
|
|
408
|
+
headers['Content-Type'] = 'application/json';
|
|
409
|
+
options = {
|
|
410
|
+
method,
|
|
411
|
+
headers,
|
|
412
|
+
body,
|
|
413
|
+
uri: `${baseUrl}${url}`,
|
|
414
|
+
json: true,
|
|
415
|
+
};
|
|
416
|
+
break;
|
|
417
|
+
case 'listCarteiras':
|
|
418
|
+
url = '/typebot/listar_carteiras';
|
|
419
|
+
break;
|
|
420
|
+
case 'linkCarteira':
|
|
421
|
+
url = '/typebot/vincular_carteira';
|
|
422
|
+
method = 'POST';
|
|
423
|
+
try {
|
|
424
|
+
body = JSON.parse(this.getNodeParameter('bodyData', i) as string);
|
|
425
|
+
} catch (e) {
|
|
426
|
+
throw new Error('Formato de JSON inválido para Dados (JSON)');
|
|
427
|
+
}
|
|
230
428
|
headers['Content-Type'] = 'application/json';
|
|
231
429
|
options = {
|
|
232
430
|
method,
|