@tiledesk/tiledesk-server 2.2.39 → 2.3.1

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 (45) hide show
  1. package/LICENSE +14 -657
  2. package/README.md +2 -0
  3. package/app.js +12 -0
  4. package/event/subscriptionEvent.js +11 -0
  5. package/models/subscriptionEvent.js +11 -0
  6. package/models/subscriptionLog.js +34 -0
  7. package/models/tagLibrary.js +42 -0
  8. package/package.json +2 -10
  9. package/pubmodules/activities/activityArchiver.js +295 -0
  10. package/pubmodules/activities/index.js +3 -0
  11. package/pubmodules/activities/models/activity.js +88 -0
  12. package/pubmodules/activities/routes/activity.js +710 -0
  13. package/pubmodules/activities/test/activityRoute.js +85 -0
  14. package/pubmodules/analytics/analytics.js +1719 -0
  15. package/pubmodules/analytics/index.js +3 -0
  16. package/pubmodules/canned/cannedResponse.js +51 -0
  17. package/pubmodules/canned/cannedResponseRoute.js +157 -0
  18. package/pubmodules/canned/index.js +3 -0
  19. package/pubmodules/pubModulesManager.js +104 -5
  20. package/pubmodules/trigger/default.js +271 -0
  21. package/pubmodules/trigger/event/actionEventEmitter.js +10 -0
  22. package/pubmodules/trigger/event/flowEventEmitter.js +10 -0
  23. package/pubmodules/trigger/event/triggerEventEmitter.js +10 -0
  24. package/pubmodules/trigger/index.js +3 -0
  25. package/pubmodules/trigger/models/trigger.js +149 -0
  26. package/pubmodules/trigger/rulesTrigger.js +1180 -0
  27. package/pubmodules/trigger/start.js +114 -0
  28. package/pubmodules/trigger/triggerRoute.js +150 -0
  29. package/routes/department.js +51 -0
  30. package/routes/group.js +140 -0
  31. package/routes/project.js +52 -0
  32. package/routes/subscription.js +140 -0
  33. package/routes/tag.js +138 -0
  34. package/services/faqService.js +1 -1
  35. package/services/modulesManager.js +7 -188
  36. package/services/subscriptionNotifier.js +485 -0
  37. package/template/email/assignedEmailMessage.html +1 -1
  38. package/template/email/assignedRequest.html +1 -1
  39. package/template/email/newMessage.html +1 -1
  40. package/template/email/passwordChanged.html +1 -1
  41. package/template/email/pooledEmailMessage.html +1 -1
  42. package/template/email/pooledRequest.html +1 -1
  43. package/template/email/resetPassword.html +2 -2
  44. package/template/email/ticket.html +1 -1
  45. package/views/messages.jade +1 -1
package/routes/tag.js ADDED
@@ -0,0 +1,138 @@
1
+ var express = require('express');
2
+ var router = express.Router();
3
+ var TagLibrary = require("../models/tagLibrary");
4
+ var winston = require('../config/winston');
5
+
6
+ router.post('/', function (req, res) {
7
+
8
+ winston.debug(req.body);
9
+ winston.debug("req.user", req.user);
10
+
11
+ var newTag = new TagLibrary({
12
+ tag: req.body.tag,
13
+ color: req.body.color,
14
+ id_project: req.projectid,
15
+ createdBy: req.user.id,
16
+ updatedBy: req.user.id
17
+ });
18
+
19
+ newTag.save(function (err, savedTag) {
20
+ if (err) {
21
+ // winston.error('--- > ERROR ', err)
22
+ if (err.code === 11000) { //error for dupes
23
+ return TagLibrary.findOne({id_project:req.projectid, tag: req.body.tag },function (err, savedTag) {
24
+ res.json(savedTag);
25
+ });
26
+ }
27
+ winston.error('--- > ERROR ', err)
28
+ return res.status(500).send({ success: false, msg: 'Error saving object.' });
29
+ }
30
+
31
+ res.json(savedTag);
32
+ });
33
+ });
34
+
35
+ router.put('/:tagid', function (req, res) {
36
+ winston.debug(req.body);
37
+ var update = {};
38
+
39
+
40
+ update.tag = req.body.tag;
41
+ update.color = req.body.color;
42
+
43
+
44
+ TagLibrary.findByIdAndUpdate(req.params.tagid, update, { new: true, upsert: true }, function (err, updatedTag) {
45
+ if (err) {
46
+ winston.error('--- > ERROR ', err);
47
+ return res.status(500).send({ success: false, msg: 'Error updating object.' });
48
+ }
49
+
50
+
51
+
52
+ // TagEvent.emit('Tag.update', updatedTag);
53
+ res.json(updatedTag);
54
+ });
55
+ });
56
+
57
+ router.delete('/:tagid', function (req, res) {
58
+ winston.debug(req.body);
59
+
60
+ TagLibrary.remove({ _id: req.params.tagid }, function (err, tag) {
61
+ if (err) {
62
+ winston.error('--- > ERROR ', err);
63
+ return res.status(500).send({ success: false, msg: 'Error deleting object.' });
64
+ }
65
+
66
+
67
+ // TagEvent.emit('Tag.delete', Tag);
68
+
69
+ res.json(tag);
70
+ });
71
+ });
72
+
73
+ router.get('/:tagid', function (req, res) {
74
+ winston.debug(req.body);
75
+
76
+ TagLibrary.findById(req.params.tagid, function (err, tag) {
77
+ if (err) {
78
+ return res.status(500).send({ success: false, msg: 'Error getting object.' });
79
+ }
80
+ if (!tag) {
81
+ return res.status(404).send({ success: false, msg: 'Object not found.' });
82
+ }
83
+ res.json(tag);
84
+ });
85
+ });
86
+
87
+ router.get('/', function (req, res) {
88
+ var limit = 40; // Number of Tags per page
89
+ var page = 0;
90
+
91
+ if (req.query.page) {
92
+ page = req.query.page;
93
+ }
94
+
95
+ var skip = page * limit;
96
+ winston.debug('Tag ROUTE - SKIP PAGE ', skip);
97
+
98
+
99
+ var query = { "id_project": req.projectid};
100
+
101
+ // if (req.query.full_text) {
102
+ // winston.debug('Tag ROUTE req.query.fulltext', req.query.full_text);
103
+ // query.$text = { "$search": req.query.full_text };
104
+ // }
105
+
106
+
107
+ var direction = -1; //-1 descending , 1 ascending
108
+ if (req.query.direction) {
109
+ direction = req.query.direction;
110
+ }
111
+
112
+ var sortField = "createdAt";
113
+ if (req.query.sort) {
114
+ sortField = req.query.sort;
115
+ }
116
+
117
+ var sortQuery = {};
118
+ sortQuery[sortField] = direction;
119
+
120
+ winston.debug("sort query", sortQuery);
121
+
122
+ return TagLibrary.find(query).
123
+ skip(skip).limit(limit).
124
+ sort(sortQuery).
125
+ exec(function (err, tags) {
126
+ if (err) {
127
+ winston.error('Tag ROUTE - REQUEST FIND ERR ', err)
128
+ return (err);
129
+ }
130
+
131
+ return res.json(tags);
132
+ });
133
+ });
134
+
135
+
136
+
137
+
138
+ module.exports = router;
@@ -78,7 +78,7 @@ class FaqService {
78
78
  { 'question': '\\start', 'answer': 'Hello 👋. I\'m a bot 🤖.\n\nChoose one of the options below or write a message to reach our staff.\n* Who are you?\n* Where are you?\n* What can you do?\n* 👨🏻‍🦰 I want an agent', 'intent_display_name': 'start', 'topic': 'internal' },
79
79
  { 'question': 'defaultFallback', 'answer': 'I can not provide an adequate answer. Write a new question or talk to a human agent.\n* Back to start tdAction:start\n* See the docs https://docs.tiledesk.com/\n* 👨🏻‍🦰 I want an agent', 'intent_display_name': 'defaultFallback', 'topic': 'internal' }, //TODO se metto spazio n * nn va
80
80
  { 'question': 'What can you do?', 'answer': 'Using natural language processing, I\'m able to find the best answer for your users. I also support images, videos etc.. Let\'s try:\n* Sample Image\n* Sample Video\n* Sample Action tdAction:action1\n* Sample Frame\n* Back to start tdAction:start', 'topic': 'sample' },
81
- { 'question': 'Sample Image', 'answer': 'tdImage:https://tiledesk.com/tiledesk-logo-x1.png\n* What can you do?\n* Back to start tdAction:start', 'topic': 'sample' },
81
+ { 'question': 'Sample Image', 'answer': 'tdImage:https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png\n* What can you do?\n* Back to start tdAction:start', 'topic': 'sample' },
82
82
  { 'question': 'Sample Frame', 'answer': 'tdFrame:https://www.emanueleferonato.com/wp-content/uploads/2019/02/runner/\n* What can you do?\n* Back to start tdAction:start', 'topic': 'sample' },
83
83
  { 'question': 'Sample Video', 'answer': 'tdVideo:https://www.youtube.com/embed/EngW7tLk6R8\n* What can you do?\n* Back to start tdAction:start', 'topic': 'sample' },
84
84
  { 'question': 'Where are you?', 'answer': 'We are here ❤️\ntdFrame:https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d6087916.923447935!2d8.234804542117423!3d41.836572992140624!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x12d4fe82448dd203%3A0xe22cf55c24635e6f!2sItaly!5e0!3m2!1sen!2sit!4v1613657475377!5m2!1sen!2sit\n* Back to start tdAction:start', 'topic': 'sample' },
@@ -28,16 +28,10 @@ if (licenseKey) {
28
28
 
29
29
  class ModulesManager {
30
30
 
31
- constructor() {
32
- this.trigger = undefined;
33
- this.triggerRoute = undefined;
31
+ constructor() {
34
32
  this.stripe = undefined;
35
33
  this.graphql = undefined;
36
- this.analyticsRoute = undefined;
37
- this.resthookRoute = undefined;
38
- this.elasticIndexer = undefined;
39
- this.activityArchiver = undefined;
40
- this.activityRoute = undefined;
34
+ this.elasticIndexer = undefined;
41
35
  this.facebookRoute = undefined;
42
36
  this.jwthistoryArchiver = undefined;
43
37
  this.jwthistoryRoute = undefined;
@@ -47,9 +41,6 @@ class ModulesManager {
47
41
  this.routingQueue = undefined;
48
42
  this.queue = undefined;
49
43
  this.cache = undefined;
50
- this.cannedResponseRoute = undefined;
51
- this.tagRoute = undefined;
52
- this.groupsRoute = undefined;
53
44
  this.visitorCounterRoute = undefined;
54
45
  this.visitorCounterMiddleware = undefined;
55
46
  this.widgetsRoute = undefined;
@@ -107,50 +98,16 @@ class ModulesManager {
107
98
  useUnderProjects(app) {
108
99
  var that = this;
109
100
  winston.debug("ModulesManager using controllers");
110
-
111
-
112
- if (this.triggerRoute) {
113
- app.use('/:projectid/modules/triggers', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('admin')], this.triggerRoute);
114
- winston.info("ModulesManager trigger controller loaded");
115
- }
116
-
117
- if (this.analyticsRoute) {
118
- app.use('/:projectid/analytics', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], this.analyticsRoute);
119
- winston.info("ModulesManager analytics controller loaded");
120
- }
121
-
122
- if (this.resthookRoute) {
123
- app.use('/:projectid/subscriptions', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('admin')], this.resthookRoute);
124
- winston.info("ModulesManager subscriptions controller loaded");
125
- }
126
-
127
- if (this.activityRoute) {
128
- app.use('/:projectid/activities', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('admin')], this.activityRoute);
129
- winston.info("ModulesManager activities controller loaded");
130
- }
131
-
101
+
102
+
103
+
132
104
 
133
105
  if (this.requestHistoryRoute) {
134
106
  app.use('/:projectid/requests/:request_id/history', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes(null, ['subscription'])] , this.requestHistoryRoute);
135
107
  winston.info("ModulesManager requestHistory controller loaded");
136
108
  }
137
109
 
138
-
139
- if (this.cannedResponseRoute) {
140
- app.use('/:projectid/canned', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], this.cannedResponseRoute);
141
- winston.info("ModulesManager canned controller loaded");
142
- }
143
-
144
- if (this.tagRoute) {
145
- app.use('/:projectid/tags', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], this.tagRoute);
146
- winston.info("ModulesManager tag controller loaded");
147
- }
148
-
149
- if (this.groupsRoute) {
150
- app.use('/:projectid/groups', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('admin')], this.groupsRoute);
151
- winston.info("ModulesManager group controller loaded");
152
- }
153
-
110
+
154
111
 
155
112
 
156
113
  if (this.visitorCounterRoute) {
@@ -188,19 +145,6 @@ class ModulesManager {
188
145
 
189
146
 
190
147
 
191
- try {
192
- this.trigger = require('@tiledesk-ent/tiledesk-server-triggers').start;
193
- winston.debug("this.trigger:"+ this.trigger);
194
- this.triggerRoute = require('@tiledesk-ent/tiledesk-server-triggers').triggerRoute;
195
- winston.debug("this.triggerRoute:"+ this.triggerRoute);
196
- winston.info("ModulesManager trigger initialized");
197
- } catch(err) {
198
- if (err.code == 'MODULE_NOT_FOUND') {
199
- winston.info("ModulesManager init trigger module not found");
200
- }else {
201
- winston.error("ModulesManager error initializing init trigger module", err);
202
- }
203
- }
204
148
 
205
149
 
206
150
  try {
@@ -213,51 +157,6 @@ class ModulesManager {
213
157
  winston.error("ModulesManager error initializing init stripe module", err);
214
158
  }
215
159
  }
216
-
217
- try {
218
- this.resthookRoute = require('@tiledesk-ent/tiledesk-server-resthook').resthookRoute;
219
- winston.debug("this.resthookRoute:"+ this.resthookRoute);
220
- this.subscriptionNotifier = require('@tiledesk-ent/tiledesk-server-resthook').subscriptionNotifier;
221
- // this.subscriptionNotifier.start();
222
- winston.info("ModulesManager resthook initialized");
223
- } catch(err) {
224
- if (err.code == 'MODULE_NOT_FOUND') {
225
- winston.info("ModulesManager init resthookRoute module not found");
226
- }else {
227
- winston.error("ModulesManager error initializing init resthook module", err);
228
- }
229
- }
230
-
231
-
232
- try {
233
- this.analyticsRoute = require('@tiledesk-ent/tiledesk-server-analytics').analyticsRoute;
234
- winston.debug("this.analyticsRoute:"+ this.analyticsRoute);
235
- winston.info("ModulesManager analyticsRoute initialized");
236
- } catch(err) {
237
- if (err.code == 'MODULE_NOT_FOUND') {
238
- winston.info("ModulesManager init analytics module not found");
239
- }else {
240
- winston.error("ModulesManager error initializing init analytics module", err);
241
- }
242
- }
243
-
244
-
245
- try {
246
- this.activityArchiver = require('@tiledesk-ent/tiledesk-server-activities').activityArchiver;
247
- // this.activityArchiver.listen();
248
- winston.debug("this.activityArchiver:"+ this.activityArchiver);
249
-
250
- this.activityRoute = require('@tiledesk-ent/tiledesk-server-activities').activityRoute;
251
- winston.debug("this.activityRoute:"+ this.activityRoute);
252
-
253
- winston.info("ModulesManager activities initialized");
254
- } catch(err) {
255
- if (err.code == 'MODULE_NOT_FOUND') {
256
- winston.info("ModulesManager init activities module not found");
257
- }else {
258
- winston.error("ModulesManager error initializing init activities module", err);
259
- }
260
- }
261
160
 
262
161
 
263
162
 
@@ -359,70 +258,8 @@ class ModulesManager {
359
258
  }
360
259
  }
361
260
 
362
- try {
363
- this.cannedResponseRoute = require('@tiledesk-ent/tiledesk-server-canned').cannedResponseRoute;
364
- winston.debug("this.cannedResponseRoute:"+ this.cannedResponseRoute);
365
- winston.info("ModulesManager cannedResponseRoute initialized");
366
- } catch(err) {
367
- if (err.code == 'MODULE_NOT_FOUND') {
368
- winston.info("ModulesManager init canned module not found");
369
- }else {
370
- winston.error("ModulesManager error initializing init canned module", err);
371
- }
372
- }
373
-
374
- try {
375
- this.tagRoute = require('@tiledesk-ent/tiledesk-server-tags').tagRoute;
376
- winston.debug("this.tagRoute:"+ this.tagRoute);
377
- winston.info("ModulesManager tagRoute initialized");
378
- } catch(err) {
379
- if (err.code == 'MODULE_NOT_FOUND') {
380
- winston.info("ModulesManager init tag module not found");
381
- }else {
382
- winston.error("ModulesManager error initializing init tag module", err);
383
- }
384
- }
385
-
386
- try {
387
- this.groupsRoute = require('@tiledesk-ent/tiledesk-server-groups').groupsRoute;
388
- winston.debug("this.groupsRoute:"+ this.groupsRoute);
389
- winston.info("ModulesManager groupsRoute initialized");
390
- } catch(err) {
391
- if (err.code == 'MODULE_NOT_FOUND') {
392
- winston.info("ModulesManager init group module not found");
393
- }else {
394
- winston.error("ModulesManager error initializing init group module", err);
395
- }
396
- }
397
-
398
261
 
399
-
400
- if (config && config.routes && config.routes.departmentsRoute) {
401
- try {
402
- require('@tiledesk-ent/tiledesk-server-departments').ext(config.routes.departmentsRoute, config.passport);
403
- winston.info("ModulesManager departmentsRoute initialized");
404
- } catch(err) {
405
- if (err.code == 'MODULE_NOT_FOUND') {
406
- winston.info("ModulesManager init departments module not found");
407
- }else {
408
- winston.error("ModulesManager error initializing init departments module", err);
409
- }
410
- }
411
- }
412
-
413
- if (config && config.routes && config.routes.projectsRoute) {
414
- try {
415
- require('@tiledesk-ent/tiledesk-server-mt').ext(config.routes.projectsRoute, config.passport);
416
- winston.info("ModulesManager mt initialized");
417
- } catch(err) {
418
- if (err.code == 'MODULE_NOT_FOUND') {
419
- winston.info("ModulesManager init mt module not found");
420
- }else {
421
- winston.error("ModulesManager error initializing init mt module", err);
422
- }
423
- }
424
- }
425
-
262
+
426
263
  try {
427
264
  this.visitorCounterRoute = require('@tiledesk-ent/tiledesk-server-visitorcounter').add(config.express);
428
265
  winston.debug("this.visitorCounterRoute:"+ this.visitorCounterRoute);
@@ -474,24 +311,6 @@ class ModulesManager {
474
311
 
475
312
  start() {
476
313
 
477
- // stampa log
478
- if (this.subscriptionNotifier) {
479
- try {
480
- this.subscriptionNotifier.start();
481
- winston.info("ModulesManager subscriptionNotifier started");
482
- } catch(err) {
483
- winston.info("ModulesManager error starting subscriptionNotifier module", err);
484
- }
485
- }
486
-
487
- if (this.activityArchiver) {
488
- try {
489
- this.activityArchiver.listen();
490
- winston.info("ModulesManager activityArchiver started");
491
- } catch(err) {
492
- winston.info("ModulesManager error starting activityArchiver module", err);
493
- }
494
- }
495
314
 
496
315
  if (this.jwthistoryArchiver) {
497
316
  try {