@tiledesk/tiledesk-server 2.5.2 → 2.7.0
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/CHANGELOG.md +9 -0
- package/README.md +1 -1
- package/app.js +7 -1
- package/deploy.sh +1 -1
- package/event/botEvent.js +24 -3
- package/jobs.js +9 -1
- package/jobsManager.js +13 -1
- package/package.json +7 -5
- package/pubmodules/queue/reconnect.js +47 -0
- package/pubmodules/trigger/default.js +2 -2
- package/pubmodules/trigger/rulesTrigger.js +14 -2
- package/routes/kb.js +307 -62
- package/routes/project_user.js +10 -1
- package/services/QuoteManager.js +26 -20
- package/services/Scheduler.js +33 -0
- package/services/openaiService.js +12 -11
- package/services/requestService.js +96 -92
- package/services/updateLeadQueued.js +149 -0
- package/test/TooManykbUrlsList.txt +304 -0
- package/test/kbRoute.js +331 -20
- package/test/kbUrlsList.txt +4 -0
- package/utils/jobs-worker-queue-manager/JobManagerV2.js +146 -0
- package/utils/jobs-worker-queue-manager/queueManagerClassV2.js +355 -0
package/CHANGELOG.md
CHANGED
@@ -5,6 +5,15 @@
|
|
5
5
|
🚀 IN PRODUCTION 🚀
|
6
6
|
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
|
7
7
|
|
8
|
+
# 2.6.0
|
9
|
+
- Lead update queued
|
10
|
+
- Updated tybot-connector to 0.2.57
|
11
|
+
- Updated kb route
|
12
|
+
- Added trainer job worker
|
13
|
+
|
14
|
+
# 2.5.3
|
15
|
+
- Updated whatsapp-connector to 0.1.64
|
16
|
+
|
8
17
|
# 2.5.2
|
9
18
|
- Updated messenger-connector to 0.1.18
|
10
19
|
- Bug fix: kbs createdAt wrongly generated
|
package/README.md
CHANGED
@@ -93,7 +93,7 @@ Deploy with button:
|
|
93
93
|
[](https://heroku.com/deploy?template=https://github.com/Tiledesk/tiledesk-server)
|
94
94
|
|
95
95
|
# Community? Questions? Support ?
|
96
|
-
If you need help or just want to hang out, come, say hi on our [<img width="15" alt="Tiledesk discord" src="https://seeklogo.com/images/D/discord-color-logo-E5E6DFEF80-seeklogo.com.png"> Discord](https://discord.gg/
|
96
|
+
If you need help or just want to hang out, come, say hi on our [<img width="15" alt="Tiledesk discord" src="https://seeklogo.com/images/D/discord-color-logo-E5E6DFEF80-seeklogo.com.png"> Discord](https://discord.gg/Q5A6Ewadmz) server.
|
97
97
|
|
98
98
|
# REST API
|
99
99
|
|
package/app.js
CHANGED
@@ -175,6 +175,8 @@ trainingService.start();
|
|
175
175
|
var geoService = require('./services/geoService');
|
176
176
|
// geoService.listen(); //queued
|
177
177
|
|
178
|
+
var updateLeadQueued = require('./services/updateLeadQueued');
|
179
|
+
|
178
180
|
let JobsManager = require('./jobsManager');
|
179
181
|
|
180
182
|
let jobWorkerEnabled = false;
|
@@ -183,7 +185,7 @@ if (process.env.JOB_WORKER_ENABLED=="true" || process.env.JOB_WORKER_ENABLED ==
|
|
183
185
|
}
|
184
186
|
winston.info("JobsManager jobWorkerEnabled: "+ jobWorkerEnabled);
|
185
187
|
|
186
|
-
let jobsManager = new JobsManager(jobWorkerEnabled, geoService, botEvent, subscriptionNotifierQueued, botSubscriptionNotifier);
|
188
|
+
let jobsManager = new JobsManager(jobWorkerEnabled, geoService, botEvent, subscriptionNotifierQueued, botSubscriptionNotifier, updateLeadQueued);
|
187
189
|
|
188
190
|
var faqBotHandler = require('./services/faqBotHandler');
|
189
191
|
faqBotHandler.listen();
|
@@ -197,6 +199,10 @@ let whatsappQueue = require('@tiledesk/tiledesk-whatsapp-jobworker');
|
|
197
199
|
winston.info("whatsappQueue");
|
198
200
|
jobsManager.listenWhatsappQueue(whatsappQueue);
|
199
201
|
|
202
|
+
let trainingQueue = require('@tiledesk/tiledesk-train-jobworker');
|
203
|
+
winston.info("trainingQueue");
|
204
|
+
jobsManager.listenTrainingQueue(trainingQueue);
|
205
|
+
|
200
206
|
|
201
207
|
var channelManager = require('./channels/channelManager');
|
202
208
|
channelManager.listen();
|
package/deploy.sh
CHANGED
package/event/botEvent.js
CHANGED
@@ -33,9 +33,30 @@ class BotEvent extends EventEmitter {
|
|
33
33
|
winston.debug("message", message);
|
34
34
|
|
35
35
|
// TODO usa meglio se attributes.reply_always=true
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
|
37
|
+
// if (message.sender === "system" && message.text && message.text!="\\start") {
|
38
|
+
// winston.debug("it s a message sent from system, exit");
|
39
|
+
// return null;
|
40
|
+
// }
|
41
|
+
|
42
|
+
|
43
|
+
//sbagliato
|
44
|
+
// if (message.sender === "system" && message.text && (message.text=="\\start" || message.text=="/start") ) {
|
45
|
+
// winston.debug("it s a start message");
|
46
|
+
// } else {
|
47
|
+
// winston.debug("it s a message sent from system, exit");
|
48
|
+
// return null;
|
49
|
+
// }
|
50
|
+
|
51
|
+
if (message.sender === "system") {
|
52
|
+
if (message.text && (message.text=="\\start" || message.text=="/start") ) {
|
53
|
+
winston.debug("it s a start message");
|
54
|
+
} else {
|
55
|
+
winston.debug("it s a message sent from system, exit");
|
56
|
+
return null;
|
57
|
+
}
|
58
|
+
} else {
|
59
|
+
winston.debug("it s a message sent from other let s go");
|
39
60
|
}
|
40
61
|
|
41
62
|
if (message.text && ( message.text.indexOf("\\agent") > -1 || message.text.indexOf("\\close") > -1)) { //not reply to a message containing \\agent
|
package/jobs.js
CHANGED
@@ -28,6 +28,9 @@ var botSubscriptionNotifier = require('./services/BotSubscriptionNotifier');
|
|
28
28
|
const botEvent = require('./event/botEvent');
|
29
29
|
var channelManager = require('./channels/channelManager');
|
30
30
|
|
31
|
+
var updateLeadQueued = require('./services/updateLeadQueued');
|
32
|
+
|
33
|
+
|
31
34
|
require('./services/mongoose-cache-fn')(mongoose);
|
32
35
|
|
33
36
|
|
@@ -80,7 +83,7 @@ async function main()
|
|
80
83
|
|
81
84
|
|
82
85
|
|
83
|
-
let jobsManager = new JobsManager(undefined, geoService, botEvent, subscriptionNotifierQueued, botSubscriptionNotifier);
|
86
|
+
let jobsManager = new JobsManager(undefined, geoService, botEvent, subscriptionNotifierQueued, botSubscriptionNotifier, updateLeadQueued);
|
84
87
|
|
85
88
|
jobsManager.listen();
|
86
89
|
|
@@ -101,6 +104,11 @@ async function main()
|
|
101
104
|
winston.info("whatsappQueue");
|
102
105
|
jobsManager.listenWhatsappQueue(whatsappQueue);
|
103
106
|
|
107
|
+
let trainingQueue = require('@tiledesk/tiledesk-train-jobworker');
|
108
|
+
winston.info("trainingQueue");
|
109
|
+
jobsManager.listenTrainingQueue(trainingQueue);
|
110
|
+
|
111
|
+
|
104
112
|
let scheduler = require('./pubmodules/scheduler');
|
105
113
|
jobsManager.listenScheduler(scheduler);
|
106
114
|
|
package/jobsManager.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
var winston = require('./config/winston');
|
3
3
|
|
4
4
|
class JobsManager {
|
5
|
-
constructor(jobWorkerEnabled, geoService, botEvent, subscriptionNotifierQueued, botSubscriptionNotifier) {
|
5
|
+
constructor(jobWorkerEnabled, geoService, botEvent, subscriptionNotifierQueued, botSubscriptionNotifier, updateLeadQueued) {
|
6
6
|
this.geoService = geoService;
|
7
7
|
this.botEvent = botEvent;
|
8
8
|
// this.subscriptionNotifier = subscriptionNotifier;
|
@@ -19,6 +19,8 @@ class JobsManager {
|
|
19
19
|
// this.jobWorkerEnabled = true;
|
20
20
|
// }
|
21
21
|
// winston.info("JobsManager jobWorkerEnabled: "+ this.jobWorkerEnabled);
|
22
|
+
|
23
|
+
this.updateLeadQueued = updateLeadQueued;
|
22
24
|
}
|
23
25
|
|
24
26
|
|
@@ -34,6 +36,8 @@ class JobsManager {
|
|
34
36
|
// this.subscriptionNotifier.start();
|
35
37
|
this.subscriptionNotifierQueued.start();
|
36
38
|
|
39
|
+
this.updateLeadQueued.listen();
|
40
|
+
|
37
41
|
// this.botSubscriptionNotifier.start(); // disabled
|
38
42
|
}
|
39
43
|
|
@@ -82,6 +86,14 @@ class JobsManager {
|
|
82
86
|
// this.whatsappWorker = whatsappQueue;
|
83
87
|
// this.whatsappQueue.listen(); // oppure codice
|
84
88
|
}
|
89
|
+
|
90
|
+
listenTrainingQueue(trainingQueue) {
|
91
|
+
console.log("JobsManager listenTrainingQueue started");
|
92
|
+
console.log("trainingQueue is: ", trainingQueue)
|
93
|
+
if (this.jobWorkerEnabled == true) {
|
94
|
+
return winston.info("JobsManager jobWorkerEnabled is enabled. Skipping listener for Training Queue");
|
95
|
+
}
|
96
|
+
}
|
85
97
|
}
|
86
98
|
|
87
99
|
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tiledesk/tiledesk-server",
|
3
3
|
"description": "The Tiledesk server module",
|
4
|
-
"version": "2.
|
4
|
+
"version": "2.7.0",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -38,18 +38,19 @@
|
|
38
38
|
"dependencies": {
|
39
39
|
"@tiledesk/tiledesk-apps": "^1.0.17",
|
40
40
|
"@tiledesk/tiledesk-chat21-app": "^1.1.8",
|
41
|
+
"@tiledesk/tiledesk-chatbot-templates": "^0.1.2",
|
41
42
|
"@tiledesk/tiledesk-chatbot-util": "^0.8.33",
|
43
|
+
"@tiledesk/tiledesk-client": "^0.10.10",
|
42
44
|
"@tiledesk/tiledesk-dialogflow-connector": "^1.8.4",
|
43
45
|
"@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
|
44
46
|
"@tiledesk/tiledesk-kaleyra-proxy": "^0.1.7",
|
45
47
|
"@tiledesk/tiledesk-messenger-connector": "^0.1.18",
|
46
48
|
"@tiledesk/tiledesk-rasa-connector": "^1.0.10",
|
47
49
|
"@tiledesk/tiledesk-telegram-connector": "^0.1.10",
|
48
|
-
"@tiledesk/tiledesk-
|
49
|
-
"@tiledesk/tiledesk-
|
50
|
+
"@tiledesk/tiledesk-train-jobworker": "^0.0.7",
|
51
|
+
"@tiledesk/tiledesk-tybot-connector": "^0.2.57",
|
52
|
+
"@tiledesk/tiledesk-whatsapp-connector": "^0.1.64",
|
50
53
|
"@tiledesk/tiledesk-whatsapp-jobworker": "^0.0.7",
|
51
|
-
"@tiledesk/tiledesk-chatbot-templates": "^0.1.2",
|
52
|
-
"@tiledesk/tiledesk-client": "^0.10.10",
|
53
54
|
"amqplib": "^0.5.5",
|
54
55
|
"app-root-path": "^3.0.0",
|
55
56
|
"bcrypt-nodejs": "0.0.3",
|
@@ -105,6 +106,7 @@
|
|
105
106
|
"retry-request": "^4.2.2",
|
106
107
|
"serve-favicon": "~2.5.0",
|
107
108
|
"sharp": "^0.27.2",
|
109
|
+
"sitemapper": "^3.2.8",
|
108
110
|
"stripe": "^7.2.0",
|
109
111
|
"uniqid": "^5.4.0",
|
110
112
|
"uuid": "^3.3.3",
|
@@ -194,6 +194,19 @@ function startWorker() {
|
|
194
194
|
winston.info("Data queue", oka)
|
195
195
|
});
|
196
196
|
|
197
|
+
ch.bindQueue(_ok.queue, exchange, "lead_update", {}, function(err3, oka) {
|
198
|
+
winston.info("Queue bind: "+_ok.queue+ " err: "+err3+ " key: lead_update");
|
199
|
+
winston.info("Data queue", oka)
|
200
|
+
});
|
201
|
+
|
202
|
+
ch.bindQueue(_ok.queue, exchange, "lead_fullname_email_update", {}, function(err3, oka) {
|
203
|
+
winston.info("Queue bind: "+_ok.queue+ " err: "+err3+ " key: lead_fullname_email_update");
|
204
|
+
winston.info("Data queue", oka)
|
205
|
+
});
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
197
210
|
|
198
211
|
|
199
212
|
ch.consume(queueName, processMsg, { noAck: false });
|
@@ -295,6 +308,19 @@ function work(msg, cb) {
|
|
295
308
|
leadEvent.emit('lead.create.queue', JSON.parse(message_string));
|
296
309
|
}
|
297
310
|
|
311
|
+
if (topic === 'lead_update') {
|
312
|
+
winston.debug("reconnect here topic lead_update:" + topic);
|
313
|
+
// requestEvent.emit('request.update.queue', msg.content);
|
314
|
+
leadEvent.emit('lead.update.queue', JSON.parse(message_string));
|
315
|
+
}
|
316
|
+
|
317
|
+
if (topic === 'lead_fullname_email_update') {
|
318
|
+
winston.debug("reconnect here topic lead_fullname_email_update:" + topic);
|
319
|
+
// requestEvent.emit('request.update.queue', msg.content);
|
320
|
+
leadEvent.emit('lead.fullname.email.update.queue', JSON.parse(message_string));
|
321
|
+
}
|
322
|
+
|
323
|
+
|
298
324
|
|
299
325
|
cb(true);
|
300
326
|
// WebSocket.cb(true);
|
@@ -422,6 +448,27 @@ function listen() {
|
|
422
448
|
});
|
423
449
|
});
|
424
450
|
|
451
|
+
|
452
|
+
leadEvent.on('lead.update', function(lead) {
|
453
|
+
setImmediate(() => {
|
454
|
+
winston.debug("reconnect lead.update")
|
455
|
+
publish(exchange, "lead_update", Buffer.from(JSON.stringify(lead)));
|
456
|
+
winston.debug("reconnect: "+ Buffer.from(JSON.stringify(lead)))
|
457
|
+
});
|
458
|
+
});
|
459
|
+
|
460
|
+
|
461
|
+
leadEvent.on('lead.fullname.email.update', function(lead) {
|
462
|
+
setImmediate(() => {
|
463
|
+
winston.debug("reconnect lead.fullname.email.update")
|
464
|
+
publish(exchange, "lead_fullname_email_update", Buffer.from(JSON.stringify(lead)));
|
465
|
+
winston.debug("reconnect: "+ Buffer.from(JSON.stringify(lead)))
|
466
|
+
});
|
467
|
+
});
|
468
|
+
|
469
|
+
|
470
|
+
|
471
|
+
|
425
472
|
}
|
426
473
|
|
427
474
|
if (process.env.QUEUE_ENABLED === "true") {
|
@@ -121,7 +121,7 @@ var tInviteBotObj = {
|
|
121
121
|
{key:'request.departmentHasBot',fact: 'json',path: 'department.hasBot', operator:'equal', value: true},
|
122
122
|
{key:'request.first_text',fact: 'json',path: 'first_text', operator:'equal', value: 'welcome'}
|
123
123
|
]},
|
124
|
-
actions: [{key:'request.department.bot.launch'}],
|
124
|
+
actions: [{key:'request.department.bot.launch', parameters: {text:"/start"}}],
|
125
125
|
enabled:true,
|
126
126
|
code: 's_invite_bot_01',
|
127
127
|
type: 'internal',
|
@@ -196,7 +196,7 @@ var tInviteProactiveGreetingBotObj = {
|
|
196
196
|
{key:'request.departmentHasBot',fact: 'json',path: 'department.hasBot', operator:'equal', value: true},
|
197
197
|
{key:'request.first_text',fact: 'json',path: 'first_text', operator:'equal', value: 'callout'}
|
198
198
|
]},
|
199
|
-
actions: [{key:'request.department.bot.launch'}],
|
199
|
+
actions: [{key:'request.department.bot.launch', parameters: {text:"/start"}}],
|
200
200
|
enabled:true,
|
201
201
|
code: 's_invite_proactive_greeting_bot_01',
|
202
202
|
type: 'internal',
|
@@ -686,6 +686,9 @@ class RulesTrigger {
|
|
686
686
|
|
687
687
|
try {
|
688
688
|
|
689
|
+
winston.debug('triggerEventEmitter eventTrigger:', eventTrigger);
|
690
|
+
|
691
|
+
|
689
692
|
winston.debug('runAction eventTrigger.eventSuccess:', eventTrigger.eventSuccess);
|
690
693
|
var trigger = eventTrigger.trigger;
|
691
694
|
winston.debug('runAction trigger', trigger.toObject());
|
@@ -706,6 +709,15 @@ class RulesTrigger {
|
|
706
709
|
var id_project = eventTrigger.event.id_project;
|
707
710
|
winston.debug('runAction action id_project: ' + id_project);
|
708
711
|
|
712
|
+
|
713
|
+
|
714
|
+
var startText = "\\start";
|
715
|
+
if (action.parameters && action.parameters.text) {
|
716
|
+
startText = action.parameters.text;
|
717
|
+
}
|
718
|
+
winston.debug('runAction action startText: ' + startText);
|
719
|
+
|
720
|
+
|
709
721
|
// reroute(request_id, id_project, nobot) {
|
710
722
|
requestService.reroute(request_id, id_project).then(function(request) {
|
711
723
|
|
@@ -716,7 +728,7 @@ class RulesTrigger {
|
|
716
728
|
'system',
|
717
729
|
'Bot',
|
718
730
|
request_id,
|
719
|
-
|
731
|
+
startText, // /start controlla se chatbot nuovo manda /start altrimenti per i vecchi \start
|
720
732
|
id_project,
|
721
733
|
null,
|
722
734
|
{subtype:'info', updateconversation : false}
|
@@ -775,7 +787,7 @@ class RulesTrigger {
|
|
775
787
|
'system',
|
776
788
|
'Bot',
|
777
789
|
request_id,
|
778
|
-
'\\start',
|
790
|
+
'\\start', // / start
|
779
791
|
id_project,
|
780
792
|
null,
|
781
793
|
{subtype:'info', updateconversation : false}
|