n8n-nodes-viber-bot 1.0.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.
@@ -0,0 +1,649 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ViberBot = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class ViberBot {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'Viber Bot',
9
+ name: 'viberBot',
10
+ icon: 'file:viber.svg',
11
+ group: ['transform'],
12
+ version: 1,
13
+ subtitle: '={{$parameter["resource"]}} + ": " + {{$parameter["operation"]}}',
14
+ description: 'Interact with the Viber Bot REST API',
15
+ usableAsTool: true,
16
+ defaults: {
17
+ name: 'Viber Bot',
18
+ },
19
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
20
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
21
+ credentials: [
22
+ {
23
+ name: 'viberBotApi',
24
+ required: true,
25
+ },
26
+ ],
27
+ properties: [
28
+ {
29
+ displayName: 'Resource',
30
+ name: 'resource',
31
+ type: 'options',
32
+ noDataExpression: true,
33
+ options: [
34
+ {
35
+ name: 'Account',
36
+ value: 'account',
37
+ },
38
+ {
39
+ name: 'Message',
40
+ value: 'message',
41
+ },
42
+ {
43
+ name: 'User',
44
+ value: 'user',
45
+ },
46
+ {
47
+ name: 'Webhook',
48
+ value: 'webhook',
49
+ },
50
+ ],
51
+ default: 'message',
52
+ },
53
+ {
54
+ displayName: 'Operation',
55
+ name: 'operation',
56
+ type: 'options',
57
+ noDataExpression: true,
58
+ displayOptions: {
59
+ show: {
60
+ resource: ['message'],
61
+ },
62
+ },
63
+ options: [
64
+ {
65
+ name: 'Broadcast',
66
+ value: 'broadcast',
67
+ description: 'Broadcast a message to multiple subscribed users',
68
+ action: 'Broadcast a message',
69
+ },
70
+ {
71
+ name: 'Send',
72
+ value: 'send',
73
+ description: 'Send a message to a subscribed user',
74
+ action: 'Send a message',
75
+ },
76
+ ],
77
+ default: 'send',
78
+ },
79
+ {
80
+ displayName: 'Operation',
81
+ name: 'operation',
82
+ type: 'options',
83
+ noDataExpression: true,
84
+ displayOptions: {
85
+ show: {
86
+ resource: ['webhook'],
87
+ },
88
+ },
89
+ options: [
90
+ {
91
+ name: 'Set',
92
+ value: 'set',
93
+ description: 'Set a webhook URL for callbacks',
94
+ action: 'Set a webhook',
95
+ },
96
+ ],
97
+ default: 'set',
98
+ },
99
+ {
100
+ displayName: 'Operation',
101
+ name: 'operation',
102
+ type: 'options',
103
+ noDataExpression: true,
104
+ displayOptions: {
105
+ show: {
106
+ resource: ['account'],
107
+ },
108
+ },
109
+ options: [
110
+ {
111
+ name: 'Get',
112
+ value: 'get',
113
+ description: 'Get Viber Bot account details',
114
+ action: 'Get account details',
115
+ },
116
+ ],
117
+ default: 'get',
118
+ },
119
+ {
120
+ displayName: 'Operation',
121
+ name: 'operation',
122
+ type: 'options',
123
+ noDataExpression: true,
124
+ displayOptions: {
125
+ show: {
126
+ resource: ['user'],
127
+ },
128
+ },
129
+ options: [
130
+ {
131
+ name: 'Get',
132
+ value: 'get',
133
+ description: 'Get details of a specific user',
134
+ action: 'Get user details',
135
+ },
136
+ ],
137
+ default: 'get',
138
+ },
139
+ {
140
+ displayName: 'URL',
141
+ name: 'url',
142
+ type: 'string',
143
+ required: true,
144
+ displayOptions: {
145
+ show: {
146
+ resource: ['webhook'],
147
+ operation: ['set'],
148
+ },
149
+ },
150
+ default: '',
151
+ description: 'The URL for receiving callbacks and user messages',
152
+ },
153
+ {
154
+ displayName: 'Event Types',
155
+ name: 'eventTypes',
156
+ type: 'multiOptions',
157
+ displayOptions: {
158
+ show: {
159
+ resource: ['webhook'],
160
+ operation: ['set'],
161
+ },
162
+ },
163
+ options: [
164
+ { name: 'Conversation Started', value: 'conversation_started' },
165
+ { name: 'Delivered', value: 'delivered' },
166
+ { name: 'Failed', value: 'failed' },
167
+ { name: 'Seen', value: 'seen' },
168
+ { name: 'Subscribed', value: 'subscribed' },
169
+ { name: 'Unsubscribed', value: 'unsubscribed' },
170
+ ],
171
+ default: ['delivered', 'seen', 'failed', 'subscribed', 'unsubscribed', 'conversation_started'],
172
+ description: 'The events to subscribe to',
173
+ },
174
+ {
175
+ displayName: 'Additional Fields',
176
+ name: 'additionalFields',
177
+ type: 'collection',
178
+ placeholder: 'Add Field',
179
+ default: {},
180
+ displayOptions: {
181
+ show: {
182
+ resource: ['webhook'],
183
+ operation: ['set'],
184
+ },
185
+ },
186
+ options: [
187
+ {
188
+ displayName: 'Send Name',
189
+ name: 'sendName',
190
+ type: 'boolean',
191
+ default: true,
192
+ description: 'Whether to send the sender name in callbacks',
193
+ },
194
+ {
195
+ displayName: 'Send Photo',
196
+ name: 'sendPhoto',
197
+ type: 'boolean',
198
+ default: true,
199
+ description: 'Whether to send the sender photo in callbacks',
200
+ },
201
+ ],
202
+ },
203
+ {
204
+ displayName: 'User ID',
205
+ name: 'userId',
206
+ type: 'string',
207
+ required: true,
208
+ displayOptions: {
209
+ show: {
210
+ resource: ['user'],
211
+ operation: ['get'],
212
+ },
213
+ },
214
+ default: '',
215
+ description: 'The unique Viber user ID',
216
+ },
217
+ {
218
+ displayName: 'Receiver',
219
+ name: 'receiver',
220
+ type: 'string',
221
+ required: true,
222
+ displayOptions: {
223
+ show: {
224
+ resource: ['message'],
225
+ operation: ['send'],
226
+ },
227
+ },
228
+ default: '',
229
+ description: 'The unique Viber user ID of the receiver',
230
+ },
231
+ {
232
+ displayName: 'Broadcast List',
233
+ name: 'broadcastList',
234
+ type: 'string',
235
+ required: true,
236
+ displayOptions: {
237
+ show: {
238
+ resource: ['message'],
239
+ operation: ['broadcast'],
240
+ },
241
+ },
242
+ default: '',
243
+ description: 'A list of user IDs to receive the message (can be comma-separated or a JSON array of strings)',
244
+ },
245
+ {
246
+ displayName: 'Message Type',
247
+ name: 'messageType',
248
+ type: 'options',
249
+ displayOptions: {
250
+ show: {
251
+ resource: ['message'],
252
+ operation: ['send', 'broadcast'],
253
+ },
254
+ },
255
+ options: [
256
+ { name: 'Contact', value: 'contact' },
257
+ { name: 'File', value: 'file' },
258
+ { name: 'Location', value: 'location' },
259
+ { name: 'Picture', value: 'picture' },
260
+ { name: 'Sticker', value: 'sticker' },
261
+ { name: 'Text', value: 'text' },
262
+ { name: 'URL', value: 'url' },
263
+ { name: 'Video', value: 'video' },
264
+ ],
265
+ default: 'text',
266
+ description: 'The type of message to send',
267
+ },
268
+ {
269
+ displayName: 'Text',
270
+ name: 'text',
271
+ type: 'string',
272
+ required: true,
273
+ displayOptions: {
274
+ show: {
275
+ resource: ['message'],
276
+ operation: ['send', 'broadcast'],
277
+ messageType: ['text'],
278
+ },
279
+ },
280
+ default: '',
281
+ description: 'The text message to send (max 7000 characters)',
282
+ },
283
+ {
284
+ displayName: 'Caption',
285
+ name: 'caption',
286
+ type: 'string',
287
+ displayOptions: {
288
+ show: {
289
+ resource: ['message'],
290
+ operation: ['send', 'broadcast'],
291
+ messageType: ['picture'],
292
+ },
293
+ },
294
+ default: '',
295
+ description: 'An optional description of the picture (max 120 characters)',
296
+ },
297
+ {
298
+ displayName: 'Media URL',
299
+ name: 'media',
300
+ type: 'string',
301
+ required: true,
302
+ displayOptions: {
303
+ show: {
304
+ resource: ['message'],
305
+ operation: ['send', 'broadcast'],
306
+ messageType: ['picture', 'video', 'file', 'url'],
307
+ },
308
+ },
309
+ default: '',
310
+ description: 'The URL of the media file (must be HTTPS)',
311
+ },
312
+ {
313
+ displayName: 'Thumbnail URL',
314
+ name: 'thumbnail',
315
+ type: 'string',
316
+ displayOptions: {
317
+ show: {
318
+ resource: ['message'],
319
+ operation: ['send', 'broadcast'],
320
+ messageType: ['picture'],
321
+ },
322
+ },
323
+ default: '',
324
+ description: 'The URL of the picture thumbnail (must be HTTPS, JPEG/PNG, max 100kb)',
325
+ },
326
+ {
327
+ displayName: 'File Size (Bytes)',
328
+ name: 'size',
329
+ type: 'number',
330
+ required: true,
331
+ displayOptions: {
332
+ show: {
333
+ resource: ['message'],
334
+ operation: ['send', 'broadcast'],
335
+ messageType: ['video', 'file'],
336
+ },
337
+ },
338
+ default: 0,
339
+ description: 'The size of the video or file in bytes',
340
+ },
341
+ {
342
+ displayName: 'Video Duration (Seconds)',
343
+ name: 'duration',
344
+ type: 'number',
345
+ displayOptions: {
346
+ show: {
347
+ resource: ['message'],
348
+ operation: ['send', 'broadcast'],
349
+ messageType: ['video'],
350
+ },
351
+ },
352
+ default: 0,
353
+ description: 'The duration of the video in seconds (max 600 seconds)',
354
+ },
355
+ {
356
+ displayName: 'File Name',
357
+ name: 'fileName',
358
+ type: 'string',
359
+ required: true,
360
+ displayOptions: {
361
+ show: {
362
+ resource: ['message'],
363
+ operation: ['send', 'broadcast'],
364
+ messageType: ['file'],
365
+ },
366
+ },
367
+ default: '',
368
+ description: 'The name of the file (including extension, e.g. document.pdf)',
369
+ },
370
+ {
371
+ displayName: 'Latitude',
372
+ name: 'latitude',
373
+ type: 'number',
374
+ typeOptions: {
375
+ numberPrecision: 6,
376
+ },
377
+ required: true,
378
+ displayOptions: {
379
+ show: {
380
+ resource: ['message'],
381
+ operation: ['send', 'broadcast'],
382
+ messageType: ['location'],
383
+ },
384
+ },
385
+ default: 0,
386
+ description: 'Latitude of the location',
387
+ },
388
+ {
389
+ displayName: 'Longitude',
390
+ name: 'longitude',
391
+ type: 'number',
392
+ typeOptions: {
393
+ numberPrecision: 6,
394
+ },
395
+ required: true,
396
+ displayOptions: {
397
+ show: {
398
+ resource: ['message'],
399
+ operation: ['send', 'broadcast'],
400
+ messageType: ['location'],
401
+ },
402
+ },
403
+ default: 0,
404
+ description: 'Longitude of the location',
405
+ },
406
+ {
407
+ displayName: 'Contact Name',
408
+ name: 'contactName',
409
+ type: 'string',
410
+ required: true,
411
+ displayOptions: {
412
+ show: {
413
+ resource: ['message'],
414
+ operation: ['send', 'broadcast'],
415
+ messageType: ['contact'],
416
+ },
417
+ },
418
+ default: '',
419
+ description: 'The name of the contact',
420
+ },
421
+ {
422
+ displayName: 'Contact Phone Number',
423
+ name: 'contactPhoneNumber',
424
+ type: 'string',
425
+ required: true,
426
+ displayOptions: {
427
+ show: {
428
+ resource: ['message'],
429
+ operation: ['send', 'broadcast'],
430
+ messageType: ['contact'],
431
+ },
432
+ },
433
+ default: '',
434
+ description: 'The phone number of the contact',
435
+ },
436
+ {
437
+ displayName: 'Sticker ID',
438
+ name: 'stickerId',
439
+ type: 'number',
440
+ required: true,
441
+ displayOptions: {
442
+ show: {
443
+ resource: ['message'],
444
+ operation: ['send', 'broadcast'],
445
+ messageType: ['sticker'],
446
+ },
447
+ },
448
+ default: 0,
449
+ description: 'The unique Viber sticker ID',
450
+ },
451
+ {
452
+ displayName: 'Additional Fields',
453
+ name: 'additionalFields',
454
+ type: 'collection',
455
+ placeholder: 'Add Field',
456
+ default: {},
457
+ displayOptions: {
458
+ show: {
459
+ resource: ['message'],
460
+ operation: ['send', 'broadcast'],
461
+ },
462
+ },
463
+ options: [
464
+ {
465
+ displayName: 'Sender Name',
466
+ name: 'senderName',
467
+ type: 'string',
468
+ default: '',
469
+ description: 'The name of the sender as it will appear in the chat (max 28 characters)',
470
+ },
471
+ {
472
+ displayName: 'Sender Avatar',
473
+ name: 'senderAvatar',
474
+ type: 'string',
475
+ default: '',
476
+ description: 'The URL of the sender avatar image',
477
+ },
478
+ {
479
+ displayName: 'Tracking Data',
480
+ name: 'trackingData',
481
+ type: 'string',
482
+ default: '',
483
+ description: 'Custom tracking data that will be sent back with the user responses',
484
+ },
485
+ ],
486
+ },
487
+ ],
488
+ };
489
+ }
490
+ async execute() {
491
+ const items = this.getInputData();
492
+ const returnData = [];
493
+ for (let i = 0; i < items.length; i++) {
494
+ try {
495
+ const resource = this.getNodeParameter('resource', i);
496
+ const operation = this.getNodeParameter('operation', i);
497
+ const baseUrl = 'https://chatapi.viber.com/pa';
498
+ let endpoint = '';
499
+ const body = {};
500
+ if (resource === 'account') {
501
+ if (operation === 'get') {
502
+ endpoint = '/get_account_info';
503
+ }
504
+ }
505
+ else if (resource === 'user') {
506
+ if (operation === 'get') {
507
+ endpoint = '/get_user_details';
508
+ body.id = this.getNodeParameter('userId', i);
509
+ }
510
+ }
511
+ else if (resource === 'webhook') {
512
+ if (operation === 'set') {
513
+ endpoint = '/set_webhook';
514
+ body.url = this.getNodeParameter('url', i);
515
+ body.event_types = this.getNodeParameter('eventTypes', i);
516
+ const additionalFields = this.getNodeParameter('additionalFields', i, {});
517
+ if (additionalFields.sendName !== undefined) {
518
+ body.send_name = additionalFields.sendName;
519
+ }
520
+ if (additionalFields.sendPhoto !== undefined) {
521
+ body.send_photo = additionalFields.sendPhoto;
522
+ }
523
+ }
524
+ }
525
+ else if (resource === 'message') {
526
+ if (operation === 'send' || operation === 'broadcast') {
527
+ endpoint = operation === 'send' ? '/send_message' : '/broadcast_message';
528
+ const messageType = this.getNodeParameter('messageType', i);
529
+ const additionalFields = this.getNodeParameter('additionalFields', i, {});
530
+ body.type = messageType;
531
+ if (operation === 'send') {
532
+ body.receiver = this.getNodeParameter('receiver', i);
533
+ }
534
+ else {
535
+ const broadcastListRaw = this.getNodeParameter('broadcastList', i);
536
+ let broadcastList = [];
537
+ try {
538
+ if (broadcastListRaw.startsWith('[') && broadcastListRaw.endsWith(']')) {
539
+ broadcastList = JSON.parse(broadcastListRaw);
540
+ }
541
+ else {
542
+ broadcastList = broadcastListRaw.split(',').map(s => s.trim()).filter(Boolean);
543
+ }
544
+ }
545
+ catch {
546
+ broadcastList = broadcastListRaw.split(',').map(s => s.trim()).filter(Boolean);
547
+ }
548
+ body.broadcast_list = broadcastList;
549
+ }
550
+ const sender = {};
551
+ if (additionalFields.senderName) {
552
+ sender.name = additionalFields.senderName;
553
+ }
554
+ if (additionalFields.senderAvatar) {
555
+ sender.avatar = additionalFields.senderAvatar;
556
+ }
557
+ if (sender.name || sender.avatar) {
558
+ body.sender = {
559
+ name: sender.name || 'Bot',
560
+ ...sender,
561
+ };
562
+ }
563
+ if (additionalFields.trackingData) {
564
+ body.tracking_data = additionalFields.trackingData;
565
+ }
566
+ if (messageType === 'text') {
567
+ body.text = this.getNodeParameter('text', i);
568
+ }
569
+ else if (messageType === 'picture') {
570
+ body.media = this.getNodeParameter('media', i);
571
+ const caption = this.getNodeParameter('caption', i, '');
572
+ if (caption) {
573
+ body.text = caption;
574
+ }
575
+ const thumbnail = this.getNodeParameter('thumbnail', i, '');
576
+ if (thumbnail) {
577
+ body.thumbnail = thumbnail;
578
+ }
579
+ }
580
+ else if (messageType === 'video') {
581
+ body.media = this.getNodeParameter('media', i);
582
+ body.size = this.getNodeParameter('size', i);
583
+ const duration = this.getNodeParameter('duration', i);
584
+ if (duration) {
585
+ body.duration = duration;
586
+ }
587
+ }
588
+ else if (messageType === 'file') {
589
+ body.media = this.getNodeParameter('media', i);
590
+ body.size = this.getNodeParameter('size', i);
591
+ body.file_name = this.getNodeParameter('fileName', i);
592
+ }
593
+ else if (messageType === 'location') {
594
+ body.location = {
595
+ lat: this.getNodeParameter('latitude', i),
596
+ lon: this.getNodeParameter('longitude', i),
597
+ };
598
+ }
599
+ else if (messageType === 'contact') {
600
+ body.contact = {
601
+ name: this.getNodeParameter('contactName', i),
602
+ phone_number: this.getNodeParameter('contactPhoneNumber', i),
603
+ };
604
+ }
605
+ else if (messageType === 'sticker') {
606
+ body.sticker_id = this.getNodeParameter('stickerId', i);
607
+ }
608
+ else if (messageType === 'url') {
609
+ body.media = this.getNodeParameter('media', i);
610
+ }
611
+ }
612
+ }
613
+ if (!endpoint) {
614
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The resource/operation combination ${resource}/${operation} is not supported.`, { itemIndex: i });
615
+ }
616
+ const options = {
617
+ method: 'POST',
618
+ url: `${baseUrl}${endpoint}`,
619
+ body,
620
+ json: true,
621
+ };
622
+ const responseData = await this.helpers.httpRequestWithAuthentication.call(this, 'viberBotApi', options);
623
+ returnData.push({
624
+ json: responseData,
625
+ pairedItem: {
626
+ item: i,
627
+ },
628
+ });
629
+ }
630
+ catch (error) {
631
+ if (this.continueOnFail()) {
632
+ returnData.push({
633
+ json: {
634
+ error: error.message,
635
+ },
636
+ pairedItem: {
637
+ item: i,
638
+ },
639
+ });
640
+ continue;
641
+ }
642
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
643
+ }
644
+ }
645
+ return [returnData];
646
+ }
647
+ }
648
+ exports.ViberBot = ViberBot;
649
+ //# sourceMappingURL=ViberBot.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViberBot.node.js","sourceRoot":"","sources":["../../../nodes/ViberBot/ViberBot.node.ts"],"names":[],"mappings":"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"}