@tiledesk/tiledesk-server 2.3.6 → 2.3.7-1.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 (126) hide show
  1. package/.github/workflows/docker-community-worker-push-latest.yml +23 -0
  2. package/.github/workflows/docker-image-tag-worker-community-tag-push.yml +22 -0
  3. package/CHANGELOG.md +361 -3
  4. package/Dockerfile-jobs +31 -0
  5. package/app.js +62 -69
  6. package/channels/chat21/chat21Handler.js +37 -6
  7. package/channels/chat21/chat21WebHook.js +62 -34
  8. package/channels/chat21/package-lock.json +663 -706
  9. package/channels/chat21/package.json +2 -2
  10. package/config/labels/widget.json +337 -136
  11. package/deploy.sh +2 -0
  12. package/event/messageEvent.js +110 -9
  13. package/jobs.js +80 -0
  14. package/jobsManager.js +47 -0
  15. package/middleware/has-role.js +10 -3
  16. package/middleware/ipFilter.js +220 -0
  17. package/middleware/passport.js +8 -2
  18. package/models/department.js +1 -1
  19. package/models/faq.js +77 -25
  20. package/models/faq_kb.js +19 -0
  21. package/models/message.js +10 -8
  22. package/models/project.js +10 -0
  23. package/models/project_user.js +10 -0
  24. package/models/request.js +12 -1
  25. package/package.json +12 -11
  26. package/pubmodules/activities/activityArchiver.js +216 -90
  27. package/pubmodules/activities/routes/activity.js +1 -1
  28. package/pubmodules/apps/index.js +8 -0
  29. package/pubmodules/apps/listener.js +27 -0
  30. package/pubmodules/cache/index.js +2 -0
  31. package/pubmodules/cache/mongoose-cachegoose-fn.js +630 -0
  32. package/pubmodules/canned/cannedResponse.js +4 -0
  33. package/pubmodules/canned/cannedResponseRoute.js +10 -5
  34. package/pubmodules/dialogflow/index.js +10 -0
  35. package/pubmodules/dialogflow/listener.js +66 -0
  36. package/pubmodules/emailNotification/requestNotification.js +58 -28
  37. package/pubmodules/events/eventRoute.js +49 -24
  38. package/pubmodules/messageTransformer/messageHandlebarsTransformerInterceptor.js +6 -1
  39. package/pubmodules/messageTransformer/messageTransformerInterceptor.js +10 -4
  40. package/pubmodules/pubModulesManager.js +173 -7
  41. package/pubmodules/queue/index.js +4 -0
  42. package/pubmodules/queue/reconnect.js +331 -0
  43. package/pubmodules/queue/reconnectFanout.js +256 -0
  44. package/pubmodules/rasa/listener.js +5 -5
  45. package/pubmodules/routing-queue/index.js +3 -0
  46. package/pubmodules/routing-queue/listener.js +328 -0
  47. package/pubmodules/rules/conciergeBot.js +2 -2
  48. package/pubmodules/scheduler/tasks/closeAgentUnresponsiveRequestTask.js +6 -1
  49. package/pubmodules/scheduler/tasks/closeBotUnresponsiveRequestTask.js +7 -1
  50. package/pubmodules/tilebot/index.js +11 -0
  51. package/pubmodules/tilebot/listener.js +85 -0
  52. package/pubmodules/trigger/rulesTrigger.js +137 -14
  53. package/pubmodules/trigger/start.js +5 -1
  54. package/pubmodules/whatsapp/index.js +7 -0
  55. package/pubmodules/whatsapp/listener.js +32 -0
  56. package/routes/auth.js +7 -2
  57. package/routes/campaigns.js +3 -3
  58. package/routes/department.js +3 -2
  59. package/routes/email.js +32 -2
  60. package/routes/faq.js +37 -2
  61. package/routes/faq_kb.js +496 -133
  62. package/routes/faqpub.js +5 -0
  63. package/routes/lead.js +56 -0
  64. package/routes/message.js +196 -14
  65. package/routes/messagesRoot.js +39 -0
  66. package/routes/project.js +76 -4
  67. package/routes/project_user.js +11 -1
  68. package/routes/project_user_test.js +19 -0
  69. package/routes/request.js +134 -30
  70. package/routes/troubleshooting.js +12 -0
  71. package/routes/users-util.js +39 -0
  72. package/routes/users.js +1 -1
  73. package/routes/widget.js +64 -2
  74. package/services/BotSubscriptionNotifier.js +5 -0
  75. package/services/banUserNotifier.js +86 -0
  76. package/services/cacheEnabler.js +56 -0
  77. package/services/chatbotService.js +101 -0
  78. package/services/departmentService.js +25 -3
  79. package/services/emailService.js +170 -28
  80. package/services/faqBotHandler.js +2 -3
  81. package/services/faqService.js +28 -3
  82. package/services/geoService.js +36 -6
  83. package/services/labelService.js +1 -1
  84. package/services/leadService.js +3 -2
  85. package/services/messageService.js +4 -2
  86. package/services/modulesManager.js +23 -76
  87. package/services/operatingHoursService.js +9 -4
  88. package/services/requestService.js +75 -39
  89. package/services/subscriptionNotifier.js +9 -4
  90. package/services/trainingService.js +106 -0
  91. package/template/email/assignedEmailMessage.html +21 -11
  92. package/template/email/assignedRequest.html +21 -11
  93. package/template/email/beenInvitedExistingUser.html +16 -6
  94. package/template/email/beenInvitedNewUser.html +16 -6
  95. package/template/email/emailDirect.html +130 -0
  96. package/template/email/newMessage.html +18 -8
  97. package/template/email/newMessageFollower.html +22 -12
  98. package/template/email/passwordChanged.html +15 -5
  99. package/template/email/pooledEmailMessage.html +21 -11
  100. package/template/email/pooledRequest.html +20 -10
  101. package/template/email/resetPassword.html +15 -5
  102. package/template/email/sendTranscript.html +7 -4
  103. package/template/email/ticket.html +17 -7
  104. package/template/email/verify.html +15 -5
  105. package/test/cannedRoute.js +157 -0
  106. package/test/chatbot-mock.js +127 -0
  107. package/test/example-json-intents.txt +1 -0
  108. package/test/example-json.txt +1 -0
  109. package/test/example.json +1 -0
  110. package/test/faqRoute.js +353 -208
  111. package/test/faqkbRoute.js +669 -64
  112. package/test/imageRoute.js +1 -1
  113. package/test/messageRoute.js +387 -5
  114. package/test/requestRoute.js +6 -6
  115. package/test/requestService.js +55 -4
  116. package/test-int/cache-project.js +90 -0
  117. package/test-int/cache-project_user.js +88 -0
  118. package/utils/UIDGenerator.js +20 -0
  119. package/utils/cacheUtil.js +2 -2
  120. package/utils/orgUtil.js +3 -3
  121. package/utils/promiseUtil.js +31 -0
  122. package/utils/recipientEmailUtil.js +66 -0
  123. package/utils/sendEmailUtil.js +34 -0
  124. package/utils/sendMessageUtil.js +1 -1
  125. package/utils/stringUtil.js +12 -0
  126. package/websocket/webSocketServer.js +33 -10
@@ -0,0 +1,10 @@
1
+ const listener = require("./listener");
2
+
3
+ const dialogflow = require("@tiledesk/tiledesk-dialogflow-connector");
4
+ const dialogflowRoute = dialogflow.router;
5
+
6
+
7
+
8
+
9
+
10
+ module.exports = { listener: listener, dialogflowRoute: dialogflowRoute };
@@ -0,0 +1,66 @@
1
+ const botEvent = require('../../event/botEvent');
2
+ var Faq_kb = require("../../models/faq_kb");
3
+ var winston = require('../../config/winston');
4
+ const df = require("@tiledesk/tiledesk-dialogflow-connector");
5
+ var configGlobal = require('../../config/global');
6
+
7
+ var port = process.env.PORT || '3000';
8
+
9
+ const BOT_DIALOGFLOW_ENDPOINT = process.env.BOT_DIALOGFLOW_ENDPOINT || "http://localhost:" + port+ "/modules/dialogflow/tdbot/";
10
+ winston.debug("BOT_DIALOGFLOW_ENDPOINT: " + BOT_DIALOGFLOW_ENDPOINT);
11
+
12
+ // if (BOT_DIALOGFLOW_ENDPOINT) {
13
+ winston.info("Dialogflow endpoint: " + BOT_DIALOGFLOW_ENDPOINT);
14
+ // } else {
15
+ // winston.info("Dialogflow endpoint not configured");
16
+ // }
17
+
18
+
19
+ const apiUrl = process.env.API_URL || configGlobal.apiUrl;
20
+ winston.info('Dialogflow apiUrl: '+ apiUrl);
21
+
22
+ class Listener {
23
+
24
+ listen(config) {
25
+
26
+ winston.debug('dialogflow Listener listen');
27
+
28
+ var that = this;
29
+
30
+
31
+ df.startApp(
32
+ {
33
+ MONGODB_URI: config.databaseUri,
34
+ API_ENDPOINT: apiUrl,
35
+ log: process.env.DIALOGFLOW_LOG
36
+ }, () => {
37
+ winston.info("Dialogflow route successfully started.");
38
+ }
39
+ );
40
+
41
+ botEvent.on('faqbot.create', function(bot) {
42
+ if (BOT_DIALOGFLOW_ENDPOINT) {
43
+
44
+ if (bot.type==="dialogflow") {
45
+ // bot.url = BOT_DIALOGFLOW_ENDPOINT;
46
+
47
+ Faq_kb.findByIdAndUpdate(bot.id, {"url":BOT_DIALOGFLOW_ENDPOINT}, { new: true, upsert: true }, function (err, savedFaq_kb) {
48
+
49
+ // bot.save(function (err, savedFaq_kb) {
50
+ if (err) {
51
+ return winston.error('error saving faqkb dialogflow ', err)
52
+ }
53
+ winston.verbose('Saved faqkb dialogflow', savedFaq_kb.toObject())
54
+ });
55
+ }
56
+ }
57
+ });
58
+
59
+ }
60
+
61
+ }
62
+
63
+ var listener = new Listener();
64
+
65
+
66
+ module.exports = listener;
@@ -31,11 +31,25 @@ winston.debug('********* RequestNotification apiUrl: ' + apiUrl);
31
31
 
32
32
  class RequestNotification {
33
33
 
34
+ constructor() {
35
+ this.enabled = true;
36
+ if (process.env.EMAIL_NOTIFICATION_ENABLED=="false" || process.env.EMAIL_NOTIFICATION_ENABLED==false) {
37
+ this.enabled = false;
38
+ }
39
+ winston.debug("RequestNotification this.enabled: "+ this.enabled);
40
+ }
34
41
 
35
42
  listen() {
36
- var that = this;
43
+ var that = this;
37
44
 
38
45
 
46
+
47
+ if (this.enabled==true) {
48
+ winston.info("RequestNotification listener started");
49
+ } else {
50
+ return winston.info("RequestNotification listener disabled");
51
+ }
52
+
39
53
 
40
54
  var messageCreateKey = 'message.create';
41
55
  if (messageEvent.queueEnabled) {
@@ -78,7 +92,7 @@ listen() {
78
92
  } else {
79
93
  winston.debug("sendUserEmail chat channel");
80
94
 
81
- //TODO mandare email se ultimo messaggio > X MINUTI configurato in Notification . potresti usare request.updated_at ?
95
+ //TODO mandare email se ultimo messaggio > X MINUTI configurato in Notification . potresti usare request.updated_at ?
82
96
 
83
97
 
84
98
 
@@ -110,7 +124,7 @@ listen() {
110
124
  winston.debug('RequestNotification requestCreateKey: ' + requestCreateKey);
111
125
 
112
126
  requestEvent.on(requestCreateKey, function(request) {
113
- // winston.info('quiiiiiiiiiiiii');
127
+ winston.debug('requestEvent.on(requestCreateKey');
114
128
  setImmediate(() => {
115
129
 
116
130
  /*
@@ -127,10 +141,9 @@ listen() {
127
141
 
128
142
 
129
143
  var requestParticipantsUpdateKey = 'request.participants.update';
130
- // this is not queued
131
- // if (requestEvent.queueEnabled) {
132
- // requestParticipantsUpdateKey = 'request.participants.update.queue';
133
- // }
144
+ if (requestEvent.queueEnabled) {
145
+ requestParticipantsUpdateKey = 'request.participants.update.queue';
146
+ }
134
147
  winston.debug('RequestNotification requestParticipantsUpdateKey: ' + requestParticipantsUpdateKey);
135
148
 
136
149
  requestEvent.on(requestParticipantsUpdateKey, function(data) {
@@ -163,12 +176,12 @@ listen() {
163
176
  // TODO Send email also for addAgent and reassign. Alessio request for pooled only?
164
177
 
165
178
  var requestCloseExtendedKey = 'request.close.extended';
166
- // this is not queued
167
- // if (requestEvent.queueEnabled) {
168
- // requestCloseExtendedKey = 'request.close.extended.queue';
169
- // }
179
+ if (requestEvent.queueEnabled) {
180
+ requestCloseExtendedKey = 'request.close.extended.queue';
181
+ }
170
182
  winston.debug('RequestNotification requestCloseExtendedKey: ' + requestCloseExtendedKey);
171
183
  requestEvent.on(requestCloseExtendedKey, function(data) {
184
+ winston.debug('requestEvent.on(requestCloseExtendedKey ' + requestCloseExtendedKey);
172
185
  setImmediate(() => {
173
186
  var request = data.request;
174
187
  var notify = data.notify;
@@ -341,7 +354,7 @@ sendToUserEmailChannelEmail(projectid, message) {
341
354
  });
342
355
 
343
356
  } catch(e) {
344
- winston.error("Error sending email", {error:e, projectid:projectid, message:message});
357
+ winston.error("Error sending requestNotification email", {error:e, projectid:projectid, message:message});
345
358
  }
346
359
  }
347
360
 
@@ -356,7 +369,14 @@ async notifyFollowers(savedRequest, project, message) {
356
369
  return winston.debug("not sending notifyFollowers for attributes.subtype info messages");
357
370
  }
358
371
 
359
- var reqWithFollowers = await Request.findById(savedRequest._id).populate('followers').exec();
372
+ if (!savedRequest) {
373
+ return winston.debug("not sending notifyFollowers for direct messages");
374
+ }
375
+
376
+ // Cannot read property '_id' of undefined at RequestNotification.notifyFollowers (/usr/src/app/pubmodules/emailNotification/requestNotification.js:358:62) at /usr/src/app
377
+ // forse meglio .id
378
+
379
+ var reqWithFollowers = await Request.findById(savedRequest._id).populate('followers').exec(); // cache_attention
360
380
  winston.debug("reqWithFollowers");
361
381
  winston.debug("reqWithFollowers",reqWithFollowers);
362
382
  // console.log("reqWithFollowers",reqWithFollowers);
@@ -376,7 +396,7 @@ async notifyFollowers(savedRequest, project, message) {
376
396
  }
377
397
 
378
398
  User.findOne({_id: userid , status: 100})
379
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid)
399
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid) //user_cache
380
400
  .exec(function (err, user) {
381
401
  if (err) {
382
402
  // winston.debug(err);
@@ -439,7 +459,7 @@ sendToFollower(projectid, message) {
439
459
  }
440
460
  })
441
461
  } catch (e) {
442
- winston.warn("Error sending email", {error:e, projectid:projectid, message: message, savedRequest:savedRequest}); //it's better to view error email at this stage
462
+ winston.warn("Error sending requestNotification email", {error:e, projectid:projectid, message: message, savedRequest:savedRequest}); //it's better to view error email at this stage
443
463
  }
444
464
  }
445
465
 
@@ -518,7 +538,7 @@ sendToAgentEmailChannelEmail(projectid, message) {
518
538
  }
519
539
 
520
540
  User.findOne({_id: userid , status: 100})
521
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid)
541
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid) //user_cache
522
542
  .exec(function (err, user) {
523
543
  if (err) {
524
544
  // winston.debug(err);
@@ -572,10 +592,10 @@ sendToAgentEmailChannelEmail(projectid, message) {
572
592
  }
573
593
 
574
594
  User.findOne({_id: assignedId, status: 100})
575
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
595
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+assignedId) //user_cache
576
596
  .exec(function (err, user) {
577
597
  if (err) {
578
- winston.error("Error sending email to " + savedRequest.participants[0], err);
598
+ winston.error("Error sending requestNotification email to " + savedRequest.participants[0], err);
579
599
  }
580
600
  if (!user) {
581
601
  winston.warn("User not found", savedRequest.participants[0]);
@@ -605,7 +625,7 @@ sendToAgentEmailChannelEmail(projectid, message) {
605
625
  });
606
626
 
607
627
  } catch (e) {
608
- winston.warn("Error sending email", {error:e, projectid:projectid, message: message, savedRequest:savedRequest}); //it's better to view error email at this stage
628
+ winston.warn("Error sending requestNotification email", {error:e, projectid:projectid, message: message, savedRequest:savedRequest}); //it's better to view error email at this stage
609
629
  }
610
630
  //end send email
611
631
 
@@ -646,7 +666,7 @@ sendEmailChannelTakingNotification(projectid, request) {
646
666
  });
647
667
 
648
668
  } catch(e) {
649
- winston.error("Error sending email", {error:e, projectid:projectid, message:message});
669
+ winston.error("Error sending requestNotification email", {error:e, projectid:projectid, message:message});
650
670
  }
651
671
  }
652
672
 
@@ -684,7 +704,7 @@ sendUserEmail(projectid, message) {
684
704
 
685
705
 
686
706
  if (process.env.DISABLE_SEND_OFFLINE_EMAIL === "true" || process.env.DISABLE_SEND_OFFLINE_EMAIL === true ) {
687
- return winston.info("DISABLE_SEND_OFFLINE_EMAIL disabled");
707
+ return winston.debug("DISABLE_SEND_OFFLINE_EMAIL disabled");
688
708
  }
689
709
  if (message.attributes && message.attributes.subtype==='info/support') {
690
710
  return winston.debug("not sending sendUserEmail for attributes.subtype info/support messages");
@@ -697,7 +717,7 @@ sendUserEmail(projectid, message) {
697
717
 
698
718
 
699
719
  if (!message.request.lead || !message.request.lead.email) {
700
- return winston.info("The lead object is undefined or has empty email");
720
+ return winston.debug("The lead object is undefined or has empty email");
701
721
  }
702
722
 
703
723
  if (project.settings && project.settings.email && project.settings.email.notification && project.settings.email.notification.conversation && project.settings.email.notification.conversation.offline && project.settings.email.notification.conversation.offline.blocked == true ) {
@@ -786,6 +806,7 @@ sendUserEmail(projectid, message) {
786
806
  }
787
807
  winston.debug("tokenQueryString: "+tokenQueryString);
788
808
 
809
+ //send email unverified so spam check?
789
810
  emailService.sendNewMessageNotification(lead.email, message, project, tokenQueryString, sourcePage);
790
811
  }
791
812
 
@@ -799,7 +820,7 @@ sendUserEmail(projectid, message) {
799
820
  });
800
821
 
801
822
  } catch(e) {
802
- winston.error("Error sending email", {error:e, projectid:projectid, message:message});
823
+ winston.error("Error sending requestNotification email", {error:e, projectid:projectid, message:message});
803
824
  }
804
825
  }
805
826
 
@@ -807,7 +828,12 @@ sendAgentEmail(projectid, savedRequest) {
807
828
  // send email
808
829
  try {
809
830
 
810
-
831
+ // console.log("sendAgentEmail")
832
+ if (savedRequest.preflight === true) { //only for channel email and form preflight is false otherwise request.participants.update is used i think?
833
+ winston.debug("preflight request sendAgentEmail disabled")
834
+ return 0;
835
+ }
836
+
811
837
  Project.findOne({_id: projectid, status: 100}).select("+settings").exec( async function(err, project){
812
838
  if (err) {
813
839
  return winston.error(err);
@@ -828,6 +854,8 @@ sendAgentEmail(projectid, savedRequest) {
828
854
  // TODO fare il controllo anche sul dipartimento con modalità assigned o pooled
829
855
  if (savedRequest.status==RequestConstants.UNASSIGNED) { //POOLED
830
856
 
857
+ winston.debug("savedRequest.status==RequestConstants.UNASSIGNED");
858
+
831
859
  if (project.settings && project.settings.email && project.settings.email.notification && project.settings.email.notification.conversation && project.settings.email.notification.conversation.pooled == false ) {
832
860
  return winston.info("RequestNotification email notification for the project with id : " + projectid + " for the pooled conversation is disabled");
833
861
  }
@@ -875,7 +903,7 @@ sendAgentEmail(projectid, savedRequest) {
875
903
  }
876
904
 
877
905
  User.findOne({_id: userid , status: 100})
878
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid)
906
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+userid) //user_cache
879
907
  .exec(function (err, user) {
880
908
  if (err) {
881
909
  // winston.debug(err);
@@ -900,6 +928,8 @@ sendAgentEmail(projectid, savedRequest) {
900
928
  // TODO fare il controllo anche sul dipartimento con modalità assigned o pooled
901
929
  else if (savedRequest.status==RequestConstants.ASSIGNED) { //ASSIGNED
902
930
 
931
+ winston.debug("savedRequest.status==RequestConstants.ASSIGNED");
932
+
903
933
  if (project.settings && project.settings.email && project.settings.email.notification && project.settings.email.notification.conversation && project.settings.email.notification.conversation.assigned == false ) {
904
934
  return winston.verbose("RequestNotification email notification for the project with id : " + projectid + " for the assigned conversation is disabled");
905
935
  }
@@ -937,10 +967,10 @@ sendAgentEmail(projectid, savedRequest) {
937
967
  return winston.warn("RequestNotification email notification for the user with id : " + assignedId + " not found project_user");
938
968
  }
939
969
  User.findOne({_id: assignedId, status: 100})
940
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
970
+ //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+assignedId) //user_cache
941
971
  .exec(function (err, user) {
942
972
  if (err) {
943
- winston.error("Error sending email to " + savedRequest.participants[0], err);
973
+ winston.error("Error sending requestNotification email to " + savedRequest.participants[0], err);
944
974
  }
945
975
  if (!user) {
946
976
  winston.warn("User not found", savedRequest.participants[0]);
@@ -988,7 +1018,7 @@ sendAgentEmail(projectid, savedRequest) {
988
1018
  });
989
1019
 
990
1020
  } catch (e) {
991
- winston.warn("Error sending email", {error:e, projectid:projectid, savedRequest:savedRequest}); //it's better to view error email at this stage
1021
+ winston.warn("Error sending requestNotification email", {error:e, projectid:projectid, savedRequest:savedRequest}); //it's better to view error email at this stage
992
1022
  }
993
1023
  //end send email
994
1024
 
@@ -2,7 +2,6 @@ var express = require('express');
2
2
  var router = express.Router({mergeParams: true});
3
3
  var Event = require("./event");
4
4
  var winston = require('../../config/winston');
5
- const eventEvent = require('./eventEvent');
6
5
  var validtoken = require('../../middleware/valid-token');
7
6
  const eventService = require('./eventService');
8
7
  const { check, validationResult } = require('express-validator');
@@ -10,6 +9,9 @@ var passport = require('passport');
10
9
  require('../../middleware/passport')(passport);
11
10
  var roleChecker = require('../../middleware/has-role');
12
11
 
12
+ const messageEvent = require('../../event/messageEvent');
13
+
14
+
13
15
  router.post('/', [
14
16
  passport.authenticate(['basic', 'jwt'],
15
17
  { session: false }),
@@ -37,30 +39,53 @@ router.post('/', [
37
39
  pu = req.projectuser.id
38
40
  }
39
41
 
40
- // emit(name, attributes, id_project, project_user, createdBy, status, user) {
42
+
43
+
44
+ // // da qui
45
+
46
+ // performance log
47
+ // console.log("************* emit event"+new Date().toISOString());
48
+
49
+ // // message.senderFullname, message.recipient,
50
+ // // message.recipient_fullname, message.text, message.sender, attributes, message.type, message.metadata, timestamp, message.group
51
+ // var recipient = req.body.attributes.request_id;
52
+ // console.log("recipient",recipient);
53
+ // var sender = req.user.id;
54
+ // console.log("sender",sender);
55
+
56
+ // let message = {
57
+ // recipient: recipient,
58
+ // recipient_fullname: "pluto",
59
+ // // sender:"bb0d809b-b093-419b-8b48-11a192cc3619",
60
+ // sender: sender,
61
+ // senderFullname: "Tiledesk",
62
+ // text:"welcome",
63
+ // group: {
64
+ // members: {
65
+ // // "bb0d809b-b093-419b-8b48-11a192cc3619": 1,
66
+ // // sender: 1
67
+
68
+ // }
69
+ // }
70
+ // };
71
+ // message.group.members[sender]= 1;
72
+ // console.log("message", message)
73
+
74
+ // messageEvent.emit("message.test", message);
75
+ // res.json({"event":"1"});
76
+
77
+ // //fino qui
78
+
79
+
80
+ // // emit(name, attributes, id_project, project_user, createdBy, status, user) {
41
81
  eventService.emit(req.body.name, req.body.attributes, req.projectid, pu, req.user.id, undefined, req.user).then(function(event) {
42
- res.json(event);
43
- }).catch(function(err) {
44
- winston.error('Error saving the event '+ JSON.stringify(event), err)
45
- return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(event)});
46
- });
47
82
 
48
- // var newEvent = new Event({
49
- // name: req.body.name,
50
- // attributes: req.body.attributes,
51
- // id_project: req.projectid,
52
- // createdBy: req.user.id,
53
- // updatedBy: req.user.id
54
- // });
55
-
56
- // newEvent.save(function(err, savedEvent) {
57
- // if (err) {
58
- // winston.error('Error saving the event '+ JSON.stringify(savedEvent), err)
59
- // return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(savedEvent)});
60
- // }
61
-
62
- // res.json(savedEvent);
63
- // });
83
+ res.json(event);
84
+ }).catch(function(err) {
85
+ winston.error('Error saving the event '+ JSON.stringify(event), err)
86
+ return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(event)});
87
+ });
88
+
64
89
  });
65
90
 
66
91
 
@@ -137,7 +162,7 @@ router.get('/', [passport.authenticate(['basic', 'jwt'],
137
162
  }
138
163
 
139
164
  // collection.count is deprecated, and will be removed in a future version. Use Collection.countDocuments or Collection.estimatedDocumentCount instead
140
- return Event.count(query, function (err, totalRowCount) {
165
+ return Event.countDocuments(query, function (err, totalRowCount) {
141
166
 
142
167
  var objectToReturn = {
143
168
  perPage: limit,
@@ -4,6 +4,7 @@ const Request = require('../../models/request');
4
4
  var winston = require('../../config/winston');
5
5
  var cacheUtil = require('../../utils/cacheUtil');
6
6
  var handlebars = require('handlebars');
7
+ var cacheEnabler = require("../../services/cacheEnabler");
7
8
 
8
9
  class MessageHandlebarsTransformerInterceptor {
9
10
 
@@ -38,8 +39,12 @@ class MessageHandlebarsTransformerInterceptor {
38
39
  populate({path:'requester',populate:{path:'id_user'}});
39
40
  // }
40
41
 
42
+ if (cacheEnabler.request) {
43
+ q1.cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient) //request_cache
44
+ winston.debug('request cache enabled');
45
+ }
46
+
41
47
  var request = await q1
42
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient)
43
48
  .exec();
44
49
 
45
50
 
@@ -5,6 +5,7 @@ const Request = require('../../models/request');
5
5
  var winston = require('../../config/winston');
6
6
  var i8nUtil = require("../../utils/i8nUtil");
7
7
  var cacheUtil = require('../../utils/cacheUtil');
8
+ var cacheEnabler = require("../../services/cacheEnabler");
8
9
 
9
10
  //TODO rename to LabelMessageTransformerInterceptor
10
11
  class MessageTransformerInterceptor {
@@ -36,15 +37,20 @@ class MessageTransformerInterceptor {
36
37
 
37
38
  var language = "EN";
38
39
 
39
- // cacherequest // requestcachefarequi nocachepopulatereqired
40
- var request = await Request.findOne({request_id: message.recipient, id_project: message.id_project})
40
+ let q = Request.findOne({request_id: message.recipient, id_project: message.id_project});
41
41
  // populate('lead').
42
42
  // populate('department').
43
43
  // populate('participatingBots').
44
44
  // populate('participatingAgents').
45
45
  // populate({path:'requester',populate:{path:'id_user'}}).
46
- //@DISABLED_CACHE .cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient)
47
- .exec();
46
+
47
+ if (cacheEnabler.request) {
48
+ q.cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient+":simple") //request_cache nocachepopulatereqired
49
+ winston.debug('request cache enabled');
50
+ }
51
+
52
+
53
+ var request = await q.exec();
48
54
 
49
55
  winston.debug('request mti: ', request);
50
56