@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.
- package/.github/workflows/docker-community-worker-push-latest.yml +23 -0
- package/.github/workflows/docker-image-tag-worker-community-tag-push.yml +22 -0
- package/CHANGELOG.md +361 -3
- package/Dockerfile-jobs +31 -0
- package/app.js +62 -69
- package/channels/chat21/chat21Handler.js +37 -6
- package/channels/chat21/chat21WebHook.js +62 -34
- package/channels/chat21/package-lock.json +663 -706
- package/channels/chat21/package.json +2 -2
- package/config/labels/widget.json +337 -136
- package/deploy.sh +2 -0
- package/event/messageEvent.js +110 -9
- package/jobs.js +80 -0
- package/jobsManager.js +47 -0
- package/middleware/has-role.js +10 -3
- package/middleware/ipFilter.js +220 -0
- package/middleware/passport.js +8 -2
- package/models/department.js +1 -1
- package/models/faq.js +77 -25
- package/models/faq_kb.js +19 -0
- package/models/message.js +10 -8
- package/models/project.js +10 -0
- package/models/project_user.js +10 -0
- package/models/request.js +12 -1
- package/package.json +12 -11
- package/pubmodules/activities/activityArchiver.js +216 -90
- package/pubmodules/activities/routes/activity.js +1 -1
- package/pubmodules/apps/index.js +8 -0
- package/pubmodules/apps/listener.js +27 -0
- package/pubmodules/cache/index.js +2 -0
- package/pubmodules/cache/mongoose-cachegoose-fn.js +630 -0
- package/pubmodules/canned/cannedResponse.js +4 -0
- package/pubmodules/canned/cannedResponseRoute.js +10 -5
- package/pubmodules/dialogflow/index.js +10 -0
- package/pubmodules/dialogflow/listener.js +66 -0
- package/pubmodules/emailNotification/requestNotification.js +58 -28
- package/pubmodules/events/eventRoute.js +49 -24
- package/pubmodules/messageTransformer/messageHandlebarsTransformerInterceptor.js +6 -1
- package/pubmodules/messageTransformer/messageTransformerInterceptor.js +10 -4
- package/pubmodules/pubModulesManager.js +173 -7
- package/pubmodules/queue/index.js +4 -0
- package/pubmodules/queue/reconnect.js +331 -0
- package/pubmodules/queue/reconnectFanout.js +256 -0
- package/pubmodules/rasa/listener.js +5 -5
- package/pubmodules/routing-queue/index.js +3 -0
- package/pubmodules/routing-queue/listener.js +328 -0
- package/pubmodules/rules/conciergeBot.js +2 -2
- package/pubmodules/scheduler/tasks/closeAgentUnresponsiveRequestTask.js +6 -1
- package/pubmodules/scheduler/tasks/closeBotUnresponsiveRequestTask.js +7 -1
- package/pubmodules/tilebot/index.js +11 -0
- package/pubmodules/tilebot/listener.js +85 -0
- package/pubmodules/trigger/rulesTrigger.js +137 -14
- package/pubmodules/trigger/start.js +5 -1
- package/pubmodules/whatsapp/index.js +7 -0
- package/pubmodules/whatsapp/listener.js +32 -0
- package/routes/auth.js +7 -2
- package/routes/campaigns.js +3 -3
- package/routes/department.js +3 -2
- package/routes/email.js +32 -2
- package/routes/faq.js +37 -2
- package/routes/faq_kb.js +496 -133
- package/routes/faqpub.js +5 -0
- package/routes/lead.js +56 -0
- package/routes/message.js +196 -14
- package/routes/messagesRoot.js +39 -0
- package/routes/project.js +76 -4
- package/routes/project_user.js +11 -1
- package/routes/project_user_test.js +19 -0
- package/routes/request.js +134 -30
- package/routes/troubleshooting.js +12 -0
- package/routes/users-util.js +39 -0
- package/routes/users.js +1 -1
- package/routes/widget.js +64 -2
- package/services/BotSubscriptionNotifier.js +5 -0
- package/services/banUserNotifier.js +86 -0
- package/services/cacheEnabler.js +56 -0
- package/services/chatbotService.js +101 -0
- package/services/departmentService.js +25 -3
- package/services/emailService.js +170 -28
- package/services/faqBotHandler.js +2 -3
- package/services/faqService.js +28 -3
- package/services/geoService.js +36 -6
- package/services/labelService.js +1 -1
- package/services/leadService.js +3 -2
- package/services/messageService.js +4 -2
- package/services/modulesManager.js +23 -76
- package/services/operatingHoursService.js +9 -4
- package/services/requestService.js +75 -39
- package/services/subscriptionNotifier.js +9 -4
- package/services/trainingService.js +106 -0
- package/template/email/assignedEmailMessage.html +21 -11
- package/template/email/assignedRequest.html +21 -11
- package/template/email/beenInvitedExistingUser.html +16 -6
- package/template/email/beenInvitedNewUser.html +16 -6
- package/template/email/emailDirect.html +130 -0
- package/template/email/newMessage.html +18 -8
- package/template/email/newMessageFollower.html +22 -12
- package/template/email/passwordChanged.html +15 -5
- package/template/email/pooledEmailMessage.html +21 -11
- package/template/email/pooledRequest.html +20 -10
- package/template/email/resetPassword.html +15 -5
- package/template/email/sendTranscript.html +7 -4
- package/template/email/ticket.html +17 -7
- package/template/email/verify.html +15 -5
- package/test/cannedRoute.js +157 -0
- package/test/chatbot-mock.js +127 -0
- package/test/example-json-intents.txt +1 -0
- package/test/example-json.txt +1 -0
- package/test/example.json +1 -0
- package/test/faqRoute.js +353 -208
- package/test/faqkbRoute.js +669 -64
- package/test/imageRoute.js +1 -1
- package/test/messageRoute.js +387 -5
- package/test/requestRoute.js +6 -6
- package/test/requestService.js +55 -4
- package/test-int/cache-project.js +90 -0
- package/test-int/cache-project_user.js +88 -0
- package/utils/UIDGenerator.js +20 -0
- package/utils/cacheUtil.js +2 -2
- package/utils/orgUtil.js +3 -3
- package/utils/promiseUtil.js +31 -0
- package/utils/recipientEmailUtil.js +66 -0
- package/utils/sendEmailUtil.js +34 -0
- package/utils/sendMessageUtil.js +1 -1
- package/utils/stringUtil.js +12 -0
- package/websocket/webSocketServer.js +33 -10
|
@@ -42,7 +42,13 @@ class ActivityArchiver {
|
|
|
42
42
|
activityEvent.on('lead.download.csv', this.save);
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
var authProjectUserInvitePendingKey = 'project_user.invite.pending'; //Don't work if job_worker enabled because queue.worker is disabled
|
|
46
|
+
// if (authEvent.queueEnabled) { //queue not supported.
|
|
47
|
+
// authProjectUserInvitePendingKey = 'project_user.invite.pending.queue';
|
|
48
|
+
// }
|
|
49
|
+
winston.info('ActivityArchiver authProjectUserInvitePendingKey: ' + authProjectUserInvitePendingKey);
|
|
50
|
+
|
|
51
|
+
authEvent.on(authProjectUserInvitePendingKey, function(event) {
|
|
46
52
|
setImmediate(() => {
|
|
47
53
|
if (event.skipArchive) {
|
|
48
54
|
return 0;
|
|
@@ -57,7 +63,13 @@ class ActivityArchiver {
|
|
|
57
63
|
|
|
58
64
|
});
|
|
59
65
|
|
|
60
|
-
|
|
66
|
+
var authProjectUserInviteKey = 'project_user.invite'; //Don't work if job_worker enabled because queue.worker is disabled
|
|
67
|
+
// if (authEvent.queueEnabled) { //queue not supported
|
|
68
|
+
// authProjectUserInviteKey = 'project_user.invite.queue';
|
|
69
|
+
// }
|
|
70
|
+
winston.info('ActivityArchiver authProjectUserInviteKey: ' + authProjectUserInviteKey);
|
|
71
|
+
|
|
72
|
+
authEvent.on(authProjectUserInviteKey, function(event) {
|
|
61
73
|
setImmediate(() => {
|
|
62
74
|
if (event.skipArchive) {
|
|
63
75
|
return 0;
|
|
@@ -73,10 +85,17 @@ class ActivityArchiver {
|
|
|
73
85
|
});
|
|
74
86
|
});
|
|
75
87
|
|
|
88
|
+
// verified with queue
|
|
89
|
+
var authProjectUserUpdateKey = 'project_user.update';
|
|
90
|
+
if (authEvent.queueEnabled) {
|
|
91
|
+
authProjectUserUpdateKey = 'project_user.update.queue';
|
|
92
|
+
}
|
|
93
|
+
winston.info('ActivityArchiver authProjectUserUpdateKey: ' + authProjectUserUpdateKey);
|
|
94
|
+
|
|
95
|
+
authEvent.on(authProjectUserUpdateKey, function(event) {
|
|
96
|
+
setImmediate(() => {
|
|
97
|
+
// winston.info('ActivityArchiver authProjectUserUpdateKey: ', event);
|
|
76
98
|
|
|
77
|
-
authEvent.on('project_user.update', function(event) {
|
|
78
|
-
setImmediate(() => {
|
|
79
|
-
// console.log("project_user.update");
|
|
80
99
|
/*
|
|
81
100
|
2019-11-20T10:40:52.686991+00:00 app[web.1]: TypeError: Cannot read property '_id' of undefined
|
|
82
101
|
*/
|
|
@@ -87,20 +106,34 @@ class ActivityArchiver {
|
|
|
87
106
|
var project_user = undefined;
|
|
88
107
|
if (event.updatedProject_userPopulated.toObject) {
|
|
89
108
|
project_user = event.updatedProject_userPopulated.toObject()
|
|
90
|
-
}else {
|
|
109
|
+
} else {
|
|
91
110
|
project_user = event.updatedProject_userPopulated;
|
|
92
111
|
}
|
|
93
|
-
|
|
112
|
+
|
|
113
|
+
winston.debug('ActivityArchiver authProjectUserUpdateKey event: ', event);
|
|
114
|
+
|
|
115
|
+
if (!event.req.user) {
|
|
116
|
+
return winston.debug('ActivityArchiver skipping archive empty user'); //from i think chat21webhook
|
|
117
|
+
}
|
|
118
|
+
var activity = new Activity({actor: {type:"user", id: event.req.user._id, name: event.req.user.fullName },
|
|
94
119
|
verb: "PROJECT_USER_UPDATE", actionObj: event.req.body,
|
|
95
120
|
target: {type:"project_user", id: event.updatedProject_userPopulated._id.toString(), object: project_user},
|
|
96
|
-
id_project: event.
|
|
121
|
+
id_project: event.updatedProject_userPopulated.id_project });
|
|
97
122
|
that.save(activity);
|
|
98
123
|
|
|
99
124
|
});
|
|
100
125
|
|
|
101
126
|
});
|
|
102
127
|
|
|
103
|
-
|
|
128
|
+
|
|
129
|
+
var authProjectUserDeleteKey = 'project_user.delete'; //Don't work if job_worker enabled because queue.worker is disabled
|
|
130
|
+
// if (authEvent.queueEnabled) { //queue not supported
|
|
131
|
+
// authProjectUserDeleteKey = 'project_user.delete.queue';
|
|
132
|
+
// }
|
|
133
|
+
winston.info('ActivityArchiver authProjectUserDeleteKey: ' + authProjectUserDeleteKey);
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
authEvent.on(authProjectUserDeleteKey, function(event) {
|
|
104
137
|
setImmediate(() => {
|
|
105
138
|
if (event.skipArchive) {
|
|
106
139
|
return 0;
|
|
@@ -116,105 +149,159 @@ class ActivityArchiver {
|
|
|
116
149
|
});
|
|
117
150
|
|
|
118
151
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return 0;
|
|
126
|
-
}
|
|
152
|
+
// var authUserSignineKey = 'user.signin';
|
|
153
|
+
// // if (authEvent.queueEnabled) { //queue not supported
|
|
154
|
+
// // authUserSignineKey = 'user.signin.queue';
|
|
155
|
+
// // }
|
|
156
|
+
// winston.info('ActivityArchiver authUserSignineKey: ' + authUserSignineKey);
|
|
157
|
+
|
|
127
158
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
that.save(activity);
|
|
159
|
+
// authEvent.on(authUserSignineKey, function(event) {
|
|
160
|
+
// winston.info('ActivityArchiver user.login');
|
|
161
|
+
// setImmediate(() => {
|
|
162
|
+
|
|
133
163
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
164
|
+
// if (event.skipArchive) {
|
|
165
|
+
// return 0;
|
|
166
|
+
// }
|
|
167
|
+
|
|
168
|
+
// var activity = new Activity({actor: {type:"user", id: event.user._id, name: event.user.fullName },
|
|
169
|
+
// verb: "USER_SIGNIN", actionObj: event.req.body, //insecure it store password
|
|
170
|
+
// target: {type:"user", id:event.user._id.toString(), object: null },
|
|
171
|
+
// id_project: '*' }); /// * project
|
|
172
|
+
// that.save(activity);
|
|
138
173
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
174
|
+
// });
|
|
175
|
+
// });
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
// var authUserSigninErrorKey = 'user.login.error';
|
|
179
|
+
// // if (authEvent.queueEnabled) { //queue not supported
|
|
180
|
+
// // authUserSigninErrorKey = 'user.login.error.queue';
|
|
181
|
+
// // }
|
|
182
|
+
// winston.info('ActivityArchiver authUserSigninErrorKey: ' + authUserSigninErrorKey);
|
|
142
183
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
id_project: '*' });
|
|
147
|
-
that.save(activity);
|
|
184
|
+
|
|
185
|
+
// authEvent.on(authUserSigninErrorKey, function(event) {
|
|
186
|
+
// setImmediate(() => {
|
|
148
187
|
|
|
149
|
-
|
|
150
|
-
|
|
188
|
+
// if (event.skipArchive) {
|
|
189
|
+
// return 0;
|
|
190
|
+
// }
|
|
191
|
+
|
|
192
|
+
// var activity = new Activity({actor: {type:"user"},
|
|
193
|
+
// verb: "USER_SIGNIN_ERROR", actionObj: event.req.body, //insecure it store password
|
|
194
|
+
// target: {type:"user", id:null, object: null },
|
|
195
|
+
// id_project: '*' }); /// * project
|
|
196
|
+
// that.save(activity);
|
|
197
|
+
|
|
198
|
+
// });
|
|
199
|
+
// });
|
|
151
200
|
|
|
152
|
-
authEvent.on('user.requestresetpassword', function(event) {
|
|
153
|
-
setImmediate(() => {
|
|
154
|
-
|
|
155
|
-
if (event.skipArchive) {
|
|
156
|
-
return 0;
|
|
157
|
-
}
|
|
158
201
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
202
|
+
// var authUserResetPasswordKey = 'user.requestresetpassword';
|
|
203
|
+
// // if (authEvent.queueEnabled) { //queue not supported
|
|
204
|
+
// // authUserResetPasswordKey = 'user.requestresetpassword.queue';
|
|
205
|
+
// // }
|
|
206
|
+
// winston.info('ActivityArchiver authUserResetPasswordKey: ' + authUserResetPasswordKey);
|
|
207
|
+
|
|
208
|
+
// authEvent.on(authUserResetPasswordKey, function(event) {
|
|
209
|
+
// setImmediate(() => {
|
|
210
|
+
|
|
211
|
+
// if (event.skipArchive) {
|
|
212
|
+
// return 0;
|
|
213
|
+
// }
|
|
214
|
+
|
|
215
|
+
// var activity = new Activity({actor: {type:"user", id: event.updatedUser._id, name: event.updatedUser.fullName },
|
|
216
|
+
// verb: "USER_REQUEST_RESETPASSWORD", actionObj: event.req.body,
|
|
217
|
+
// target: {type:"user", id:event.updatedUser._id.toString(), object: null },
|
|
218
|
+
// id_project: '*' }); /// * project
|
|
219
|
+
// that.save(activity);
|
|
164
220
|
|
|
165
|
-
|
|
166
|
-
|
|
221
|
+
// });
|
|
222
|
+
// });
|
|
167
223
|
|
|
168
|
-
authEvent.on('user.resetpassword', function(event) {
|
|
169
|
-
setImmediate(() => {
|
|
170
|
-
|
|
171
|
-
if (event.skipArchive) {
|
|
172
|
-
return 0;
|
|
173
|
-
}
|
|
174
224
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
225
|
+
// var authUserResetPassword2Key = 'user.resetpassword';
|
|
226
|
+
// // if (authEvent.queueEnabled) { //queue not supported
|
|
227
|
+
// // authUserResetPassword2Key = 'user.resetpassword.queue';
|
|
228
|
+
// // }
|
|
229
|
+
// winston.info('ActivityArchiver authUserResetPassword2Key: ' + authUserResetPassword2Key);
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
// authEvent.on(authUserResetPassword2Key, function(event) {
|
|
233
|
+
// setImmediate(() => {
|
|
234
|
+
|
|
235
|
+
// if (event.skipArchive) {
|
|
236
|
+
// return 0;
|
|
237
|
+
// }
|
|
238
|
+
|
|
239
|
+
// var activity = new Activity({actor: {type:"user", id: event.saveUser._id, name: event.saveUser.fullName },
|
|
240
|
+
// verb: "USER_RESETPASSWORD", actionObj: null, //req.body otherwise print password
|
|
241
|
+
// target: {type:"user", id:event.saveUser._id.toString(), object: null },
|
|
242
|
+
// id_project: '*' }); /// * project
|
|
243
|
+
// that.save(activity);
|
|
180
244
|
|
|
181
|
-
|
|
182
|
-
});
|
|
245
|
+
// });
|
|
246
|
+
// });
|
|
183
247
|
|
|
184
248
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
249
|
+
// var authUserSignupKey = 'user.signup';
|
|
250
|
+
// // if (authEvent.queueEnabled) { //queue not supported
|
|
251
|
+
// // authUserSignupKey = 'user.signup.queue';
|
|
252
|
+
// // }
|
|
253
|
+
// winston.info('ActivityArchiver authUserSignupKey: ' + authUserSignupKey);
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
// authEvent.on(authUserSignupKey, function(event) {
|
|
257
|
+
// setImmediate(() => {
|
|
258
|
+
// if (event.skipArchive) {
|
|
259
|
+
// return 0;
|
|
260
|
+
// }
|
|
261
|
+
|
|
262
|
+
// var activity = new Activity({actor: {type:"user", id: event.savedUser._id, name: event.savedUser.fullName },
|
|
263
|
+
// verb: "USER_SIGNUP", actionObj: event.req.body,
|
|
264
|
+
// target: {type:"user", id: event.savedUser._id.toString(), object: null },
|
|
265
|
+
// id_project: '*' }); /// * project
|
|
266
|
+
// that.save(activity);
|
|
196
267
|
|
|
197
|
-
|
|
198
|
-
|
|
268
|
+
// });
|
|
269
|
+
// });
|
|
199
270
|
|
|
200
|
-
authEvent.on('user.signup.error', function(event) {
|
|
201
|
-
setImmediate(() => {
|
|
202
|
-
if (event.skipArchive) {
|
|
203
|
-
return 0;
|
|
204
|
-
}
|
|
205
271
|
|
|
272
|
+
// var authUserSignupErrorKey = 'user.signup.error';
|
|
273
|
+
// // if (authEvent.queueEnabled) { //queue not supported
|
|
274
|
+
// // authUserSignupErrorKey = 'user.signup.error.queue';
|
|
275
|
+
// // }
|
|
276
|
+
// winston.info('ActivityArchiver authUserSignupErrorKey: ' + authUserSignupErrorKey);
|
|
206
277
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
278
|
+
|
|
279
|
+
// authEvent.on(authUserSignupErrorKey, function(event) {
|
|
280
|
+
// setImmediate(() => {
|
|
281
|
+
// if (event.skipArchive) {
|
|
282
|
+
// return 0;
|
|
283
|
+
// }
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
// var activity = new Activity({actor: {type:"user"},
|
|
287
|
+
// verb: "USER_SIGNUP_ERROR", actionObj: event.req.body,
|
|
288
|
+
// target: {type:"user", id:null, object: null },
|
|
289
|
+
// id_project: '*' }); /// * project
|
|
290
|
+
// that.save(activity);
|
|
212
291
|
|
|
213
|
-
|
|
214
|
-
|
|
292
|
+
// });
|
|
293
|
+
// });
|
|
215
294
|
|
|
216
|
-
|
|
217
|
-
|
|
295
|
+
|
|
296
|
+
var requestCreateKey = 'request.create';
|
|
297
|
+
if (requestEvent.queueEnabled) {
|
|
298
|
+
requestCreateKey = 'request.create.queue';
|
|
299
|
+
}
|
|
300
|
+
winston.info('ActivityArchiver requestCreateKey: ' + requestCreateKey);
|
|
301
|
+
|
|
302
|
+
requestEvent.on(requestCreateKey, function(request) {
|
|
303
|
+
setImmediate(() => {
|
|
304
|
+
winston.debug('ActivityArchiver requestCreate triggered');
|
|
218
305
|
// problema requester_id
|
|
219
306
|
|
|
220
307
|
// Error saving activity {"_id":"5e06189c6e226d358896d733","actor":{"_id":"5e06189c6e226d358896d734","type":"user","id":null},"verb":"REQUEST_CREATE","actionObj":{"status":200,"participants":["5e06189c6e226d358896d728"],"messages_count":0,"tags":[],"_id":"5e06189c6e226d358896d72e","request_id":"request_id-closeRequest","first_text":"first_text","department":{"routing":"assigned","default":true,"status":1,"_id":"5e06189c6e226d358896d72b","name":"Default Department","id_project":"5e06189c6e226d358896d729","createdBy":"5e06189c6e226d358896d728","createdAt":"2019-12-27T14:43:40.327Z","updatedAt":"2019-12-27T14:43:40.327Z","__v":0},"agents":[{"_id":"5e06189c6e226d358896d72a","id_project":"5e06189c6e226d358896d729","id_user":"5e06189c6e226d358896d728","role":"owner","user_available":true,"createdBy":"5e06189c6e226d358896d728","createdAt":"2019-12-27T14:43:40.324Z","updatedAt":"2019-12-27T14:43:40.324Z","__v":0}],"id_project":"5e06189c6e226d358896d729","createdBy":"requester_id1","channel":{"name":"chat21"},"createdAt":"2019-12-27T14:43:40.586Z","updatedAt":"2019-12-27T14:43:40.586Z","__v":0},"target":{"type":"request","id":"5e06189c6e226d358896d72e","object":{"status":200,"participants":["5e06189c6e226d358896d728"],"messages_count":0,"tags":[],"_id":"5e06189c6e226d358896d72e","request_id":"request_id-closeRequest","first_text":"first_text","department":{"routing":"assigned","default":true,"status":1,"_id":"5e06189c6e226d358896d72b","name":"Default Department","id_project":"5e06189c6e226d358896d729","createdBy":"5e06189c6e226d358896d728","createdAt":"2019-12-27T14:43:40.327Z","updatedAt":"2019-12-27T14:43:40.327Z","__v":0},"agents":[{"_id":"5e06189c6e226d358896d72a","id_project":"5e06189c6e226d358896d729","id_user":"5e06189c6e226d358896d728","role":"owner","user_available":true,"createdBy":"5e06189c6e226d358896d728","createdAt":"2019-12-27T14:43:40.324Z","updatedAt":"2019-12-27T14:43:40.324Z","__v":0}],"id_project":"5e06189c6e226d358896d729","createdBy":"requester_id1","channel":{"name":"chat21"},"createdAt":"2019-12-27T14:43:40.586Z","updatedAt":"2019-12-27T14:43:40.586Z","__v":0}},"id_project":"5e06189c6e226d358896d729"}
|
|
@@ -249,7 +336,17 @@ class ActivityArchiver {
|
|
|
249
336
|
});
|
|
250
337
|
|
|
251
338
|
|
|
252
|
-
|
|
339
|
+
// verified with queue
|
|
340
|
+
var requestUpdatePreflightKey = 'request.update.preflight';
|
|
341
|
+
if (requestEvent.queueEnabled) {
|
|
342
|
+
requestUpdatePreflightKey = 'request.update.preflight.queue';
|
|
343
|
+
}
|
|
344
|
+
winston.info('ActivityArchiver requestUpdatePreflightKey: ' + requestUpdatePreflightKey);
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
requestEvent.on(requestUpdatePreflightKey, function(request) {
|
|
348
|
+
winston.debug('ActivityArchiver request.update.preflight: ');
|
|
349
|
+
|
|
253
350
|
setImmediate(() => {
|
|
254
351
|
|
|
255
352
|
try {
|
|
@@ -272,6 +369,35 @@ class ActivityArchiver {
|
|
|
272
369
|
});
|
|
273
370
|
|
|
274
371
|
|
|
372
|
+
|
|
373
|
+
// verified with queue
|
|
374
|
+
var requestCloseKey = 'request.close';
|
|
375
|
+
if (requestEvent.queueEnabled) {
|
|
376
|
+
requestCloseKey = 'request.close.queue';
|
|
377
|
+
}
|
|
378
|
+
winston.info('ActivityArchiver requestCloseKey: ' + requestCloseKey);
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
requestEvent.on(requestCloseKey, function(request) {
|
|
382
|
+
setImmediate(() => {
|
|
383
|
+
|
|
384
|
+
try {
|
|
385
|
+
winston.debug('ActivityArchiver close');
|
|
386
|
+
|
|
387
|
+
var activity = new Activity({actor: {type:"user", id: request.closed_by},
|
|
388
|
+
verb: "REQUEST_CLOSE", actionObj: request,
|
|
389
|
+
target: {type:"request", id:request._id, object: request },
|
|
390
|
+
id_project: request.id_project });
|
|
391
|
+
that.save(activity);
|
|
392
|
+
} catch(e) {
|
|
393
|
+
winston.error('ActivityArchiver error saving activity',e);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
});
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
|
|
275
401
|
|
|
276
402
|
|
|
277
403
|
winston.info('ActivityArchiver listening');
|
|
@@ -154,7 +154,7 @@ router.get('/', function (req, res) {
|
|
|
154
154
|
return (err);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
return Activity.
|
|
157
|
+
return Activity.countDocuments(query, function (err, totalRowCount) {
|
|
158
158
|
if (err) {
|
|
159
159
|
winston.error('Activity ROUTE - REQUEST FIND ERR ', err)
|
|
160
160
|
return (err);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const apps = require("@tiledesk/tiledesk-apps");
|
|
2
|
+
var winston = require('../../config/winston');
|
|
3
|
+
|
|
4
|
+
class Listener {
|
|
5
|
+
|
|
6
|
+
listen(config) {
|
|
7
|
+
|
|
8
|
+
winston.info("Apps Listener listen");
|
|
9
|
+
|
|
10
|
+
if (config.databaseUri) {
|
|
11
|
+
winston.debug("apps config databaseUri: " + config.databaseUri);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
apps.startApp({
|
|
15
|
+
ACCESS_TOKEN_SECRET: process.env.APPS_ACCESS_TOKEN_SECRET || 'nodeauthsecret',
|
|
16
|
+
MONGODB_URI: process.env.APPS_MONGODB_URI || config.databaseUri,
|
|
17
|
+
}, () => {
|
|
18
|
+
winston.info("Tiledesk Apps proxy server succesfully started.")
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var listener = new Listener();
|
|
26
|
+
|
|
27
|
+
module.exports = listener;
|