@tiledesk/tiledesk-server 2.4.45 → 2.4.47
Sign up to get free protection for your applications and to get access to all the features.
- package/event/botEvent.js +6 -3
- package/jobs.js +3 -3
- package/jobsManager.js +8 -8
- package/package.json +1 -1
- package/pubmodules/pubModulesManager.js +14 -2
- package/pubmodules/routing-queue/index.js +3 -1
- package/pubmodules/routing-queue/listener.js +1 -96
- package/pubmodules/routing-queue/listenerQueued.js +194 -0
- package/routes/auth.js +3 -3
- package/routes/request.js +4 -2
- package/services/BotSubscriptionNotifier.js +29 -18
package/event/botEvent.js
CHANGED
@@ -65,13 +65,15 @@ class BotEvent extends EventEmitter {
|
|
65
65
|
}
|
66
66
|
|
67
67
|
// qui potresti leggere anche +secret ed evitare prossima query in botNotification
|
68
|
-
let qbot = Faq_kb.findById(botId); //TODO add cache_bot_here
|
68
|
+
// let qbot = Faq_kb.findById(botId); //TODO add cache_bot_here
|
69
|
+
let qbot = Faq_kb.findById(botId).select('+secret')
|
69
70
|
//TODO unselect secret. secret is unselectable by default in the model
|
70
71
|
|
71
72
|
if (cacheEnabler.faq_kb) {
|
72
73
|
winston.debug('message.id_project+":faq_kbs:id:"+botId: '+ message.id_project+":faq_kbs:id:"+botId);
|
73
|
-
|
74
|
-
|
74
|
+
// qbot.cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+botId)
|
75
|
+
qbot.cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+botId+":secret")
|
76
|
+
winston.debug('faq_kb cache enabled');
|
75
77
|
}
|
76
78
|
|
77
79
|
qbot.exec(function(err, bot) {
|
@@ -87,6 +89,7 @@ class BotEvent extends EventEmitter {
|
|
87
89
|
}
|
88
90
|
|
89
91
|
winston.debug("bot debug", bot);
|
92
|
+
winston.debug('bot debug secret: '+ bot.secret);
|
90
93
|
|
91
94
|
if (bot) {
|
92
95
|
if (bot.type==="internal") {
|
package/jobs.js
CHANGED
@@ -93,9 +93,9 @@ async function main()
|
|
93
93
|
jobsManager.listenActivityArchiver(activityArchiver);
|
94
94
|
|
95
95
|
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
let routingQueueQueued = require('./pubmodules/routing-queue').listenerQueued;
|
97
|
+
winston.debug("routingQueueQueued");
|
98
|
+
jobsManager.listenRoutingQueue(routingQueueQueued);
|
99
99
|
|
100
100
|
|
101
101
|
|
package/jobsManager.js
CHANGED
@@ -45,14 +45,14 @@ class JobsManager {
|
|
45
45
|
this.emailNotification.requestNotification.listen();
|
46
46
|
}
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
listenRoutingQueue(routingQueue) {
|
49
|
+
winston.info("JobsManager routingQueue started");
|
50
|
+
if ( this.jobWorkerEnabled == true) {
|
51
|
+
return winston.info("JobsManager jobWorkerEnabled is enabled. Skipping listener for routingQueue");
|
52
|
+
}
|
53
|
+
this.routingQueue = routingQueue;
|
54
|
+
this.routingQueue.listen();
|
55
|
+
}
|
56
56
|
|
57
57
|
listenScheduler(scheduler) {
|
58
58
|
winston.info("JobsManager scheduler started");
|
package/package.json
CHANGED
@@ -51,6 +51,7 @@ class PubModulesManager {
|
|
51
51
|
this.jobsManager = undefined;
|
52
52
|
|
53
53
|
this.routingQueue = undefined;
|
54
|
+
this.routingQueueQueued = undefined;
|
54
55
|
|
55
56
|
this.cache = undefined;
|
56
57
|
|
@@ -407,8 +408,11 @@ class PubModulesManager {
|
|
407
408
|
|
408
409
|
try {
|
409
410
|
this.routingQueue = require('./routing-queue').listener;
|
411
|
+
this.routingQueueQueued = require('./routing-queue').listenerQueued;
|
412
|
+
|
410
413
|
// this.routingQueue.listen();
|
411
414
|
winston.debug("this.routingQueue:"+ this.routingQueue);
|
415
|
+
winston.debug("this.routingQueueQueued:"+ this.routingQueueQueued);
|
412
416
|
|
413
417
|
winston.info("PubModulesManager routing queue initialized");
|
414
418
|
} catch(err) {
|
@@ -515,13 +519,21 @@ class PubModulesManager {
|
|
515
519
|
|
516
520
|
if (this.routingQueue) {
|
517
521
|
try {
|
518
|
-
this.routingQueue.listen();
|
519
|
-
// this.jobsManager.listenRoutingQueue(this.routingQueue);
|
522
|
+
this.routingQueue.listen();
|
520
523
|
winston.info("PubModulesManager routingQueue started");
|
521
524
|
} catch(err) {
|
522
525
|
winston.info("PubModulesManager error starting routingQueue module", err);
|
523
526
|
}
|
524
527
|
}
|
528
|
+
if (this.routingQueueQueued) {
|
529
|
+
try {
|
530
|
+
// this.routingQueueQueued.listen();
|
531
|
+
this.jobsManager.listenRoutingQueue(this.routingQueueQueued);
|
532
|
+
winston.info("PubModulesManager routingQueue queued started");
|
533
|
+
} catch(err) {
|
534
|
+
winston.info("PubModulesManager error starting routingQueue queued module", err);
|
535
|
+
}
|
536
|
+
}
|
525
537
|
|
526
538
|
// if (this.dialogFlow) {
|
527
539
|
// try {
|
@@ -1,13 +1,7 @@
|
|
1
|
-
const projectEvent = require('../../event/projectEvent');
|
2
1
|
const departmentEvent = require('../../event/departmentEvent');
|
3
|
-
const authEvent = require('../../event/authEvent');
|
4
|
-
const requestEvent = require('../../event/requestEvent');
|
5
2
|
var Request = require('../../models/request');
|
6
|
-
var Project = require('../../models/project');
|
7
|
-
var Project_user = require('../../models/project_user');
|
8
3
|
var winston = require('../../config/winston');
|
9
4
|
|
10
|
-
var ProjectUserUtil = require("../../utils/project_userUtil");
|
11
5
|
|
12
6
|
// var request = require('retry-request', {
|
13
7
|
// request: require('request')
|
@@ -55,42 +49,6 @@ class Listener {
|
|
55
49
|
// };
|
56
50
|
}
|
57
51
|
|
58
|
-
// db.getCollection('project_users').find({"number_assigned_requests" : {"$lt":0}}).count()
|
59
|
-
|
60
|
-
|
61
|
-
updateProjectUser(id_user, id_project, operation) {
|
62
|
-
winston.debug("updateProjectUser start");
|
63
|
-
return Project_user
|
64
|
-
.findOneAndUpdate({id_user: id_user, id_project: id_project}, {$inc : {'number_assigned_requests' : operation}}, {new: true, upsert:false}, function(err, updatedPU) {
|
65
|
-
if (err) {
|
66
|
-
return winston.error(err);
|
67
|
-
}
|
68
|
-
winston.debug("number_assigned_requests +1 :" + updatedPU.id);
|
69
|
-
|
70
|
-
updatedPU.populate({path:'id_user', select:{'firstname':1, 'lastname':1}},function (err, updatedProject_userPopulated){
|
71
|
-
|
72
|
-
var pu = updatedProject_userPopulated.toJSON();
|
73
|
-
|
74
|
-
return Project.findById(id_project).exec(function(err, project) {
|
75
|
-
pu.isBusy = ProjectUserUtil.isBusy(updatedProject_userPopulated, project.settings && project.settings.max_agent_assigned_chat);
|
76
|
-
winston.debug("pu.isBusy: "+ pu.isBusy);
|
77
|
-
authEvent.emit('project_user.update', {updatedProject_userPopulated:pu, req: undefined, skipArchive: true});
|
78
|
-
})
|
79
|
-
|
80
|
-
});
|
81
|
-
|
82
|
-
});
|
83
|
-
}
|
84
|
-
|
85
|
-
updateParticipatingProjectUsers(request, operation) {
|
86
|
-
winston.debug("request.participatingAgents", request.participatingAgents);
|
87
|
-
if (request.participatingAgents.length>0) {
|
88
|
-
request.participatingAgents.forEach(user => {
|
89
|
-
winston.debug("request.participatingAgents user",user); //it is a user and not a project_user
|
90
|
-
this.updateProjectUser(user.id, request.id_project, operation);
|
91
|
-
});
|
92
|
-
}
|
93
|
-
}
|
94
52
|
|
95
53
|
listen() {
|
96
54
|
|
@@ -101,57 +59,6 @@ class Listener {
|
|
101
59
|
}
|
102
60
|
|
103
61
|
var that = this;
|
104
|
-
|
105
|
-
// TODO fai versione che passa anche project
|
106
|
-
requestEvent.on('request.create', async (request) => {
|
107
|
-
setImmediate(() => {
|
108
|
-
this.updateParticipatingProjectUsers(request, +1);
|
109
|
-
});
|
110
|
-
});
|
111
|
-
|
112
|
-
// TODO usa versione complete con project per evitare query??
|
113
|
-
requestEvent.on('request.close', async (request) => {
|
114
|
-
setImmediate(() => {
|
115
|
-
this.updateParticipatingProjectUsers(request, -1);
|
116
|
-
});
|
117
|
-
});
|
118
|
-
|
119
|
-
|
120
|
-
requestEvent.on('request.participants.join', async (data) => {
|
121
|
-
var request = data.request;
|
122
|
-
var member = data.member;
|
123
|
-
setImmediate(() => {
|
124
|
-
this.updateProjectUser(member, request.id_project, 1);
|
125
|
-
});
|
126
|
-
});
|
127
|
-
|
128
|
-
requestEvent.on('request.participants.leave', async (data) => {
|
129
|
-
var request = data.request;
|
130
|
-
var member = data.member;
|
131
|
-
setImmediate(() => {
|
132
|
-
this.updateProjectUser(member, request.id_project, -1);
|
133
|
-
});
|
134
|
-
});
|
135
|
-
|
136
|
-
requestEvent.on('request.participants.update', async (data) => {
|
137
|
-
var request = data.request;
|
138
|
-
var removedParticipants = data.removedParticipants;
|
139
|
-
var addedParticipants = data.addedParticipants;
|
140
|
-
|
141
|
-
setImmediate(() => {
|
142
|
-
|
143
|
-
addedParticipants.forEach(participant => {
|
144
|
-
winston.debug('addedParticipants participant', participant);
|
145
|
-
this.updateProjectUser(participant, request.id_project, 1);
|
146
|
-
});
|
147
|
-
|
148
|
-
removedParticipants.forEach(participant => {
|
149
|
-
winston.debug('removedParticipants participant', participant);
|
150
|
-
this.updateProjectUser(participant, request.id_project, -1);
|
151
|
-
});
|
152
|
-
|
153
|
-
});
|
154
|
-
});
|
155
62
|
|
156
63
|
departmentEvent.on('operator.select.base2', async (res) => {
|
157
64
|
// departmentEvent.prependListener('operator.select', async (data) => {
|
@@ -170,9 +77,7 @@ class Listener {
|
|
170
77
|
|
171
78
|
}
|
172
79
|
|
173
|
-
|
174
|
-
|
175
|
-
|
80
|
+
|
176
81
|
|
177
82
|
|
178
83
|
|
@@ -0,0 +1,194 @@
|
|
1
|
+
const authEvent = require('../../event/authEvent');
|
2
|
+
const requestEvent = require('../../event/requestEvent');
|
3
|
+
var Project = require('../../models/project');
|
4
|
+
var Project_user = require('../../models/project_user');
|
5
|
+
var winston = require('../../config/winston');
|
6
|
+
|
7
|
+
var ProjectUserUtil = require("../../utils/project_userUtil");
|
8
|
+
|
9
|
+
// var request = require('retry-request', {
|
10
|
+
// request: require('request')
|
11
|
+
// });
|
12
|
+
|
13
|
+
// TODO riabilitare questo
|
14
|
+
|
15
|
+
// const ROUTE_QUEUE_ENDPOINT = process.env.ROUTE_QUEUE_ENDPOINT;
|
16
|
+
// winston.debug("ROUTE_QUEUE_ENDPOINT: " + ROUTE_QUEUE_ENDPOINT);
|
17
|
+
|
18
|
+
// if (ROUTE_QUEUE_ENDPOINT) {
|
19
|
+
// winston.info("Route queue endpoint: " + ROUTE_QUEUE_ENDPOINT);
|
20
|
+
// } else {
|
21
|
+
// winston.info("Route queue endpoint not configured");
|
22
|
+
// }
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
// TODO web socket is not supported with queue
|
28
|
+
class Listener {
|
29
|
+
|
30
|
+
|
31
|
+
constructor() {
|
32
|
+
this.enabled = true;
|
33
|
+
if (process.env.ROUTE_QUEUE_ENABLED=="false" || process.env.ROUTE_QUEUE_ENABLED==false) {
|
34
|
+
this.enabled = false;
|
35
|
+
}
|
36
|
+
winston.debug("Listener this.enabled: "+ this.enabled);
|
37
|
+
}
|
38
|
+
|
39
|
+
|
40
|
+
// db.getCollection('project_users').find({"number_assigned_requests" : {"$lt":0}}).count()
|
41
|
+
|
42
|
+
|
43
|
+
updateProjectUser(id_user, id_project, operation) {
|
44
|
+
winston.debug("Route queue updateProjectUser start");
|
45
|
+
return Project_user
|
46
|
+
.findOneAndUpdate({id_user: id_user, id_project: id_project}, {$inc : {'number_assigned_requests' : operation}}, {new: true, upsert:false}, function(err, updatedPU) {
|
47
|
+
if (err) {
|
48
|
+
return winston.error(err);
|
49
|
+
}
|
50
|
+
winston.debug("Route queue number_assigned_requests +1 :" + updatedPU.id);
|
51
|
+
|
52
|
+
updatedPU.populate({path:'id_user', select:{'firstname':1, 'lastname':1}},function (err, updatedProject_userPopulated){
|
53
|
+
|
54
|
+
var pu = updatedProject_userPopulated.toJSON();
|
55
|
+
|
56
|
+
return Project.findById(id_project).exec(function(err, project) {
|
57
|
+
pu.isBusy = ProjectUserUtil.isBusy(updatedProject_userPopulated, project.settings && project.settings.max_agent_assigned_chat);
|
58
|
+
winston.debug("Route queue pu.isBusy: "+ pu.isBusy);
|
59
|
+
|
60
|
+
authEvent.emit('project_user.update', {updatedProject_userPopulated:pu, req: undefined, skipArchive: true}); //if queued with jobs -> websocket notification on project_user.update doesn't work??? forse si in quanto viene convertito in .pub.queue e poi rifunziiona
|
61
|
+
|
62
|
+
|
63
|
+
// project_user.update triggers activityArchiver(tested), cache invalidation(tested), subscriptionNotifierQueued and websocket(tested works from queue i trigger ws)
|
64
|
+
if (requestEvent.queueEnabled) { //force to .queue to be catched into the queue (activity archiver, subscriptionNotifierQueued )
|
65
|
+
authEvent.emit('project_user.update.queue', {updatedProject_userPopulated:pu, req: undefined, skipArchive: true});
|
66
|
+
}
|
67
|
+
|
68
|
+
})
|
69
|
+
|
70
|
+
});
|
71
|
+
|
72
|
+
});
|
73
|
+
}
|
74
|
+
|
75
|
+
updateParticipatingProjectUsers(request, operation) {
|
76
|
+
winston.debug("Route queue request.participatingAgents", request.participatingAgents);
|
77
|
+
if (request.participatingAgents.length>0) {
|
78
|
+
request.participatingAgents.forEach(user => {
|
79
|
+
winston.debug("request.participatingAgents user",user); //it is a user and not a project_user
|
80
|
+
this.updateProjectUser(user.id, request.id_project, operation);
|
81
|
+
});
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
listen() {
|
86
|
+
|
87
|
+
if (this.enabled==true) {
|
88
|
+
winston.info("Route queue with queue Listener listen");
|
89
|
+
} else {
|
90
|
+
return winston.info("Route queue with queue Listener disabled");
|
91
|
+
}
|
92
|
+
|
93
|
+
var that = this;
|
94
|
+
|
95
|
+
// TODO fai versione che passa anche project
|
96
|
+
var requestCreateKey = 'request.create';
|
97
|
+
if (requestEvent.queueEnabled) {
|
98
|
+
requestCreateKey = 'request.create.queue';
|
99
|
+
}
|
100
|
+
winston.debug('Route queue requestCreateKey: ' + requestCreateKey);
|
101
|
+
|
102
|
+
requestEvent.on(requestCreateKey, async (request) => {
|
103
|
+
setImmediate(() => {
|
104
|
+
winston.debug('Route queue requestCreate');
|
105
|
+
this.updateParticipatingProjectUsers(request, +1);
|
106
|
+
});
|
107
|
+
});
|
108
|
+
|
109
|
+
// TODO usa versione complete con project per evitare query??
|
110
|
+
var requestCloseKey = 'request.close'; //request.close event here queued under job
|
111
|
+
if (requestEvent.queueEnabled) {
|
112
|
+
requestCloseKey = 'request.close.queue';
|
113
|
+
}
|
114
|
+
winston.debug('Route queue requestCloseKey: ' + requestCloseKey);
|
115
|
+
|
116
|
+
requestEvent.on(requestCloseKey, async (request) => { //request.close event here noqueued
|
117
|
+
winston.debug("request.close event here 4")
|
118
|
+
setImmediate(() => {
|
119
|
+
winston.debug('Route queue requestClose');
|
120
|
+
this.updateParticipatingProjectUsers(request, -1);
|
121
|
+
});
|
122
|
+
});
|
123
|
+
|
124
|
+
|
125
|
+
var requestParticipantsJoinKey = 'request.participants.join';
|
126
|
+
if (requestEvent.queueEnabled) {
|
127
|
+
requestParticipantsJoinKey = 'request.participants.join.queue';
|
128
|
+
}
|
129
|
+
winston.debug('Route queue requestParticipantsJoinKey: ' + requestParticipantsJoinKey);
|
130
|
+
|
131
|
+
requestEvent.on(requestParticipantsJoinKey, async (data) => {
|
132
|
+
winston.debug('Route queue ParticipantsJoin');
|
133
|
+
|
134
|
+
var request = data.request;
|
135
|
+
var member = data.member;
|
136
|
+
setImmediate(() => {
|
137
|
+
this.updateProjectUser(member, request.id_project, 1);
|
138
|
+
});
|
139
|
+
});
|
140
|
+
|
141
|
+
var requestParticipantsLeaveKey = 'request.participants.leave';
|
142
|
+
if (requestEvent.queueEnabled) {
|
143
|
+
requestParticipantsLeaveKey = 'request.participants.leave.queue';
|
144
|
+
}
|
145
|
+
winston.debug('Route queue requestParticipantsLeaveKey: ' + requestParticipantsLeaveKey);
|
146
|
+
|
147
|
+
requestEvent.on(requestParticipantsLeaveKey, async (data) => {
|
148
|
+
winston.debug('Route queue ParticipantsLeave');
|
149
|
+
|
150
|
+
var request = data.request;
|
151
|
+
var member = data.member;
|
152
|
+
setImmediate(() => {
|
153
|
+
this.updateProjectUser(member, request.id_project, -1);
|
154
|
+
});
|
155
|
+
});
|
156
|
+
|
157
|
+
var requestParticipantsUpdateKey = 'request.participants.update';
|
158
|
+
if (requestEvent.queueEnabled) {
|
159
|
+
requestParticipantsUpdateKey = 'request.participants.update.queue';
|
160
|
+
}
|
161
|
+
winston.debug('Route queue requestParticipantsUpdateKey: ' + requestParticipantsUpdateKey);
|
162
|
+
|
163
|
+
requestEvent.on(requestParticipantsUpdateKey, async (data) => {
|
164
|
+
winston.debug('Route queue Participants Update');
|
165
|
+
|
166
|
+
var request = data.request;
|
167
|
+
var removedParticipants = data.removedParticipants;
|
168
|
+
var addedParticipants = data.addedParticipants;
|
169
|
+
|
170
|
+
setImmediate(() => {
|
171
|
+
|
172
|
+
addedParticipants.forEach(participant => {
|
173
|
+
winston.debug('addedParticipants participant', participant);
|
174
|
+
this.updateProjectUser(participant, request.id_project, 1);
|
175
|
+
});
|
176
|
+
|
177
|
+
removedParticipants.forEach(participant => {
|
178
|
+
winston.debug('removedParticipants participant', participant);
|
179
|
+
this.updateProjectUser(participant, request.id_project, -1);
|
180
|
+
});
|
181
|
+
|
182
|
+
});
|
183
|
+
});
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
}
|
188
|
+
|
189
|
+
}
|
190
|
+
|
191
|
+
var listener = new Listener();
|
192
|
+
|
193
|
+
|
194
|
+
module.exports = listener;
|
package/routes/auth.js
CHANGED
@@ -471,10 +471,10 @@ function (req, res) {
|
|
471
471
|
// Redirect the user to the Google signin page</em>
|
472
472
|
// router.get("/google", passport.authenticate("google", { scope: ["email", "profile"] }));
|
473
473
|
router.get("/google", function(req,res,next){
|
474
|
-
winston.
|
474
|
+
winston.debug("redirect_url: "+ req.query.redirect_url );
|
475
475
|
req.session.redirect_url = req.query.redirect_url;
|
476
476
|
|
477
|
-
winston.
|
477
|
+
winston.debug("forced_redirect_url: "+ req.query.forced_redirect_url );
|
478
478
|
req.session.forced_redirect_url = req.query.forced_redirect_url;
|
479
479
|
|
480
480
|
// req._toParam = 'Hello';
|
@@ -542,7 +542,7 @@ router.get("/google/callback", passport.authenticate("google", { session: false
|
|
542
542
|
url = req.session.forced_redirect_url+"?jwt=JWT "+token; //attention we use jwt= (ionic) instead token=(dashboard) for ionic
|
543
543
|
}
|
544
544
|
|
545
|
-
winston.
|
545
|
+
winston.debug("Google Redirect: "+ url);
|
546
546
|
|
547
547
|
res.redirect(url);
|
548
548
|
|
package/routes/request.js
CHANGED
@@ -459,7 +459,7 @@ router.put('/:requestid/agent', async (req, res) => {
|
|
459
459
|
winston.debug(req.body);
|
460
460
|
//route(request_id, departmentid, id_project) {
|
461
461
|
|
462
|
-
|
462
|
+
|
463
463
|
var request = await Request.findOne({"request_id":req.params.requestid, id_project:req.projectid})
|
464
464
|
.exec();
|
465
465
|
|
@@ -817,7 +817,7 @@ router.get('/', function (req, res, next) {
|
|
817
817
|
|
818
818
|
if (req.user instanceof Subscription) {
|
819
819
|
//all request
|
820
|
-
} else if (projectuser && projectuser.role == "owner" || projectuser.role == "admin") {
|
820
|
+
} else if (projectuser && (projectuser.role == "owner" || projectuser.role == "admin")) {
|
821
821
|
//all request
|
822
822
|
// per uni mostrare solo quelle priprio quindi solo participants
|
823
823
|
if (req.query.mine) {
|
@@ -1030,6 +1030,8 @@ router.get('/', function (req, res, next) {
|
|
1030
1030
|
}
|
1031
1031
|
|
1032
1032
|
|
1033
|
+
|
1034
|
+
|
1033
1035
|
var direction = -1; //-1 descending , 1 ascending
|
1034
1036
|
if (req.query.direction) {
|
1035
1037
|
direction = req.query.direction;
|
@@ -14,10 +14,13 @@ winston.debug("webhook_origin: "+webhook_origin);
|
|
14
14
|
var cacheUtil = require('../utils/cacheUtil');
|
15
15
|
var cacheEnabler = require("../services/cacheEnabler");
|
16
16
|
|
17
|
+
|
18
|
+
|
19
|
+
|
17
20
|
class BotSubscriptionNotifier {
|
18
21
|
|
19
22
|
|
20
|
-
notify(bot,
|
23
|
+
notify(bot,secret, payload) {
|
21
24
|
|
22
25
|
winston.debug("BotSubscriptionNotifier bot", bot.toObject());
|
23
26
|
winston.debug("BotSubscriptionNotifier payload", payload );
|
@@ -58,7 +61,7 @@ class BotSubscriptionNotifier {
|
|
58
61
|
delete botPayload.description;
|
59
62
|
delete botPayload.attributes;
|
60
63
|
|
61
|
-
var token = jwt.sign(botPayload,
|
64
|
+
var token = jwt.sign(botPayload, secret, signOptions);
|
62
65
|
json["token"] = token;
|
63
66
|
|
64
67
|
|
@@ -93,25 +96,33 @@ class BotSubscriptionNotifier {
|
|
93
96
|
//modify to async
|
94
97
|
botEvent.on('bot.message.received.notify.external', function(botNotification) {
|
95
98
|
var bot = botNotification.bot;
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
99
|
+
var secret = bot.secret;
|
100
|
+
winston.debug('bot.message.received.notify.external: '+secret);
|
101
|
+
|
102
|
+
// winston.debug('getting botWithSecret');
|
103
|
+
// let qbot = Faq_kb.findById(bot._id).select('+secret')
|
104
|
+
|
105
|
+
// if (cacheEnabler.faq_kb) {
|
106
|
+
// let id_project = bot.id_project;
|
107
|
+
// winston.debug("id_project.id_project:"+id_project);
|
108
|
+
// qbot.cache(cacheUtil.defaultTTL, id_project+":faq_kbs:id:"+bot._id+":secret")
|
109
|
+
// winston.debug('faq_kb BotSubscriptionNotifier cache enabled');
|
110
|
+
// }
|
111
|
+
|
112
|
+
// qbot.exec(function (err, botWithSecret){ //TODO add cache_bot_here????
|
113
|
+
// if (err) {
|
114
|
+
// winston.debug('Error getting botWithSecret', err);
|
115
|
+
// }
|
116
|
+
// botSubscriptionNotifier.notify(bot, botWithSecret, botNotification.message);
|
117
|
+
// });
|
112
118
|
|
119
|
+
botSubscriptionNotifier.notify(bot, secret, botNotification.message);
|
120
|
+
|
121
|
+
|
113
122
|
});
|
114
123
|
|
124
|
+
|
125
|
+
|
115
126
|
winston.info('BotSubscriptionNotifier started');
|
116
127
|
|
117
128
|
}
|