@tiledesk/tiledesk-server 2.1.40 → 2.2.3

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 (91) hide show
  1. package/.circleci/config.yml +54 -0
  2. package/.env.sample +1 -1
  3. package/.github/workflows/docker-community-push-latest.yml +22 -0
  4. package/.github/workflows/{docker-image-push.yml → docker-image-en-tag-push.yml} +1 -1
  5. package/.github/workflows/docker-image-tag-community-tag-push.yml +21 -0
  6. package/.github/workflows/{docker-push-latest.yml → docker-push-en-push-latest.yml} +1 -1
  7. package/CHANGELOG.md +195 -1
  8. package/Dockerfile +1 -1
  9. package/Dockerfile-en +1 -1
  10. package/README.md +5 -7
  11. package/app.js +12 -1
  12. package/channels/channelManager.js +1 -1
  13. package/channels/chat21/chat21Contact.js +34 -8
  14. package/channels/chat21/chat21Handler.js +48 -5
  15. package/channels/chat21/chat21WebHook.js +34 -9
  16. package/channels/chat21/nativeauth.js +2 -2
  17. package/channels/chat21/package-lock.json +3013 -0
  18. package/config/email.js +2 -0
  19. package/config/global.js +3 -0
  20. package/config/labels/widget.json +170 -16
  21. package/event/messageEvent.js +18 -1
  22. package/middleware/passport.js +10 -4
  23. package/migrations/1619185894304-request-remove-duplicated-request-by-request_id--autosync.js +67 -0
  24. package/models/actionsConstants.js +7 -0
  25. package/models/department.js +3 -0
  26. package/models/faq.js +8 -2
  27. package/models/faq_kb.js +6 -0
  28. package/models/message.js +10 -4
  29. package/models/messageConstants.js +9 -3
  30. package/models/request.js +33 -3
  31. package/package.json +31 -28
  32. package/pubmodules/emailNotification/requestNotification.js +483 -56
  33. package/pubmodules/messageActions/messageActionsInterceptor.js +20 -7
  34. package/pubmodules/messageTransformer/index.js +5 -1
  35. package/pubmodules/messageTransformer/messageTransformerInterceptor.js +4 -2
  36. package/pubmodules/messageTransformer/microLanguageAttributesTransformerInterceptor.js +67 -0
  37. package/pubmodules/messageTransformer/microLanguageTransformerInterceptor.js +67 -0
  38. package/pubmodules/pubModulesManager.js +66 -13
  39. package/pubmodules/rules/conciergeBot.js +81 -49
  40. package/routes/auth.js +46 -11
  41. package/routes/campaigns.js +117 -25
  42. package/routes/department.js +2 -2
  43. package/routes/faq.js +19 -0
  44. package/routes/faq_kb.js +13 -4
  45. package/routes/faqpub.js +1 -1
  46. package/routes/files.js +17 -2
  47. package/routes/images.js +1 -1
  48. package/routes/jwt.js +0 -1
  49. package/routes/logs.js +26 -0
  50. package/routes/message.js +7 -2
  51. package/routes/messagesRoot.js +73 -16
  52. package/routes/project_user.js +36 -1
  53. package/routes/request.js +88 -12
  54. package/routes/requestUtilRoot.js +30 -0
  55. package/routes/urls.js +12 -0
  56. package/routes/users.js +5 -1
  57. package/services/BotSubscriptionNotifier.js +1 -0
  58. package/services/departmentService.js +29 -5
  59. package/services/emailService.js +1170 -239
  60. package/services/faqBotHandler.js +176 -61
  61. package/services/faqBotSupport.js +182 -117
  62. package/services/faqService.js +18 -14
  63. package/services/messageService.js +57 -9
  64. package/services/modulesManager.js +86 -23
  65. package/services/requestService.js +58 -17
  66. package/template/email/assignedEmailMessage.html +205 -0
  67. package/template/email/assignedRequest.html +44 -14
  68. package/template/email/beenInvitedExistingUser.html +2 -2
  69. package/template/email/beenInvitedNewUser.html +1 -1
  70. package/template/email/newMessage.html +31 -12
  71. package/template/email/passwordChanged.html +2 -3
  72. package/template/email/pooledEmailMessage.html +208 -0
  73. package/template/email/pooledRequest.html +41 -14
  74. package/template/email/resetPassword.html +2 -3
  75. package/template/email/sendTranscript.html +1 -1
  76. package/template/email/test.html +1 -1
  77. package/template/email/ticket.html +191 -0
  78. package/template/email/ticket.txt +11 -0
  79. package/template/email/verify.html +1 -1
  80. package/test/authentication.js +76 -4
  81. package/test/authenticationJwt.js +76 -2
  82. package/test/campaignsRoute.js +226 -0
  83. package/test/faqService.js +3 -3
  84. package/test/faqkbRoute.js +3 -2
  85. package/test/messageRootRoute.js +193 -0
  86. package/test/messageRoute.js +75 -0
  87. package/test/messageService.js +39 -2
  88. package/test/requestRoute.js +27 -9
  89. package/test/requestService.js +472 -11
  90. package/test-int/bot.js +673 -8
  91. package/websocket/webSocketServer.js +7 -4
@@ -17,11 +17,23 @@ var ProjectUserUtil = require("../../utils/project_userUtil");
17
17
  var RequestUtil = require("../../utils/requestUtil");
18
18
  const authEvent = require('../../event/authEvent');
19
19
 
20
+ var syncJoinAndLeaveGroupEvent = false;
21
+ if (process.env.SYNC_JOIN_LEAVE_GROUP_EVENT === true || process.env.SYNC_JOIN_LEAVE_GROUP_EVENT ==="true") {
22
+ syncJoinAndLeaveGroupEvent = true;
23
+ }
24
+ winston.info("Chat21 Sync JoinAndLeave Support Group Event: " + syncJoinAndLeaveGroupEvent);
25
+
26
+ var allowReopenChat = false;
27
+ if (process.env.ALLOW_REOPEN_CHAT === true || process.env.ALLOW_REOPEN_CHAT ==="true") {
28
+ allowReopenChat = true;
29
+ }
30
+ winston.info("Chat21 allow reopen chat: " + allowReopenChat);
31
+
20
32
 
21
33
  router.post('/', function (req, res) {
22
34
 
23
35
 
24
-
36
+ winston.debug("req.body.event_type: " + req.body.event_type);
25
37
 
26
38
  //Deprecated
27
39
  if (req.body.event_type == "message-sent" || req.body.event_type == "new-message") {
@@ -38,7 +50,7 @@ router.post('/', function (req, res) {
38
50
 
39
51
  var message = req.body.data;
40
52
 
41
-
53
+ winston.debug("message text: " + message.text);
42
54
 
43
55
 
44
56
  // before request_id id_project unique commented
@@ -77,10 +89,6 @@ router.post('/', function (req, res) {
77
89
 
78
90
  var departmentid = "default";
79
91
 
80
- // TODO 2020-04-20T14:38:56.954323+00:00 app[web.1]: info: MessageTransformerInterceptor message.create.simple.before {"beforeMessage":{"sender":"e06e10e8-24e9-47b1-b0c4-0ab8f8f576d2","senderFullname":"dario","recipient":"support-group-M5N0kHtNohGt8iCJiQy","text":"test 3","id_project":"5b55e806c93dde00143163dd","createdBy":"e06e10e8-24e9-47b1-b0c4-0ab8f8f576d2","status":200,"attributes":{"client":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4106.0 Mobile Safari/537.36","departmentId":"5c04ed747608f10015378fe8","departmentName":"Dipartimento 1","projectId":"5b55e806c93dde00143163dd","requester_id":"e06e10e8-24e9-47b1-b0c4-0ab8f8f576d2","sourcePage":"http://localhost:4200/test-custom-auth.html?tiledesk_callouttimer=2&tiledesk_isLogEnabled=true","userEmail":"test1@tiledesk.com","userFullname":"dario","senderAuthInfo":{"authType":"USER","authVar":{"token":{"aud":"chat21-pre-01","auth_time":1587392396,"exp":1587395996,"firebase":{"sign_in_provider":"custom"},"iat":1587392396,"iss":"https://securetoken.google.com/chat21-pre-01","sub":"e06e10e8-24e9-47b1-b0c4-0ab8f8f576d2","user_id":"e06e10e8-24e9-47b1-b0c4-0ab8f8f576d2"},"uid":"e06e10e8-24e9-47b1-b0c4-0ab8f8f576d2"}}},"type":"text","metadata":"","language":"it-IT"}}
81
- // 2020-04-20T14:38:56.986907+00:00 app[web.1]: error: undefined {"driver":true,"name":"MongoError","index":0,"code":17262,"errmsg":"language override unsupported: IT-IT"}
82
- // 2020-04-20T14:38:56.987274+00:00 app[web.1]: error: Error creating the request object.language override unsupported: IT-IT {"driver":true,"name":"MongoError","index":0,"code":17262,"errmsg":"language override unsupported: IT-IT","stack":"MongoError: language override unsupported: IT-IT\n at Function.create (/app/node_modules/mongodb/lib/core/error.js:44:12)\n at toError (/app/node_modules/mongodb/lib/utils.js:150:22)\n at coll.s.topology.insert (/app/node_modules/mongodb/lib/operations/common_functions.js:265:39)\n at handler (/app/node_modules/mongodb/lib/core/topologies/replset.js:1209:22)\n at /app/node_modules/mongodb/lib/core/connection/pool.js:420:18\n at processTicksAndRejections (internal/process/next_tick.js:74:9)"}
83
- // 2020-04-20T14:38:57.027369+00:00 app[we
84
92
 
85
93
  var language = message.language;
86
94
  winston.debug("chat21 language", language);
@@ -348,16 +356,16 @@ router.post('/', function (req, res) {
348
356
  var projectId = RequestUtil.getProjectIdFromRequestId(recipient_id);
349
357
 
350
358
  var isObjectId = mongoose.Types.ObjectId.isValid(projectId);
351
- winston.verbose("isObjectId:"+ isObjectId);
359
+ winston.debug("isObjectId:"+ isObjectId);
352
360
 
353
- winston.verbose("attributes",conversation.attributes);
361
+ winston.debug("attributes",conversation.attributes);
354
362
 
355
363
  if (!projectId || !isObjectId) { //back compatibility when projectId were always presents in the attributes (firebase)
356
364
  projectId = conversation.attributes.projectId;
357
365
  winston.verbose('getting projectId from attributes (back compatibility): '+ projectId);
358
366
  }
359
367
 
360
- winston.verbose('projectId: '+ projectId);
368
+ winston.debug('projectId: '+ projectId);
361
369
 
362
370
  if (!projectId) {
363
371
  return res.status(500).send({success: false, msg: "Error projectid is not presents in attributes " });
@@ -415,6 +423,11 @@ router.post('/', function (req, res) {
415
423
 
416
424
  winston.debug("req.body", JSON.stringify(req.body));
417
425
 
426
+ if (!syncJoinAndLeaveGroupEvent) {
427
+ winston.debug("syncJoinAndLeaveGroupEvent is disabled");
428
+ return res.status(200).send({success: true, msg: "syncJoinAndLeaveGroupEvent is disabled" });
429
+ }
430
+
418
431
  var data = req.body.data;
419
432
  //winston.debug("data",data);
420
433
 
@@ -480,6 +493,12 @@ router.post('/', function (req, res) {
480
493
 
481
494
  winston.debug("req.body", JSON.stringify(req.body));
482
495
 
496
+ if (!syncJoinAndLeaveGroupEvent) {
497
+ winston.debug("syncJoinAndLeaveGroupEvent is disabled");
498
+ return res.status(200).send({success: true, msg: "syncJoinAndLeaveGroupEvent is disabled" });
499
+ }
500
+
501
+
483
502
 
484
503
  var data = req.body.data;
485
504
  // winston.debug("data",data);
@@ -519,6 +538,11 @@ router.post('/', function (req, res) {
519
538
 
520
539
  winston.debug("req.body",req.body);
521
540
 
541
+ if (!allowReopenChat) {
542
+ winston.debug("allowReopenChat is disabled");
543
+ return res.status(200).send({success: true, msg: "allowReopenChat is disabled" });
544
+ }
545
+
522
546
 
523
547
  var conversation = req.body.data;
524
548
  // winston.debug("conversation",conversation);
@@ -698,6 +722,7 @@ else if (req.body.event_type == "presence-change") {
698
722
 
699
723
  project_user.presence = update
700
724
 
725
+
701
726
  project_user.save(function (err, savedProjectUser) {
702
727
  if (err) {
703
728
  winston.error('Error saving project_user ', err)
@@ -46,7 +46,7 @@ router.post('/createCustomToken', function (req, res) {
46
46
  ]
47
47
 
48
48
  const now = Math.round(new Date().getTime()/1000);
49
- console.log("now: ", now)
49
+ // console.log("now: ", now)
50
50
  const exp = now + 60 * 60 * 24 * 30;
51
51
 
52
52
  var payload = {
@@ -76,7 +76,7 @@ router.post('/createCustomToken', function (req, res) {
76
76
  "kid": "tiledesk-key", //"legacy-token-key",
77
77
  "tiledesk_api_roles": "user"
78
78
  }
79
- console.log("payload:\n", payload)
79
+ winston.debug("payload:\n", payload)
80
80
  var token = jwt.sign(
81
81
  payload,
82
82
  jwtSecret,