@tiledesk/tiledesk-server 2.5.1 → 2.5.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/CHANGELOG.md +5 -0
- package/models/kb_setting.js +6 -11
- package/package.json +2 -2
- package/routes/kb.js +97 -10
- package/test/kbRoute.js +92 -0
package/CHANGELOG.md
CHANGED
@@ -5,6 +5,11 @@
|
|
5
5
|
🚀 IN PRODUCTION 🚀
|
6
6
|
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
|
7
7
|
|
8
|
+
# 2.5.2
|
9
|
+
- Updated messenger-connector to 0.1.18
|
10
|
+
- Bug fix: kbs createdAt wrongly generated
|
11
|
+
- Added advanced search for kbs
|
12
|
+
|
8
13
|
# 2.5.1
|
9
14
|
- Bug fix: reset busy status for agents when smart assignment is enabled
|
10
15
|
- Added possibility to delete chat21 conversation
|
package/models/kb_setting.js
CHANGED
@@ -31,19 +31,12 @@ var KBSchema = new Schema({
|
|
31
31
|
type: String,
|
32
32
|
required: false
|
33
33
|
},
|
34
|
-
createdAt: {
|
35
|
-
type: Date,
|
36
|
-
default: Date.now,
|
37
|
-
},
|
38
|
-
updatedAt: {
|
39
|
-
type: Date,
|
40
|
-
default: Date.now
|
41
|
-
},
|
42
34
|
status: {
|
43
35
|
type: Number,
|
44
|
-
required: false
|
45
|
-
default: -1
|
36
|
+
required: false
|
46
37
|
}
|
38
|
+
}, {
|
39
|
+
timestamps: true
|
47
40
|
})
|
48
41
|
|
49
42
|
var KBSettingSchema = new Schema({
|
@@ -64,9 +57,11 @@ var KBSettingSchema = new Schema({
|
|
64
57
|
type: Number,
|
65
58
|
default: 1000
|
66
59
|
},
|
67
|
-
kbs: [
|
60
|
+
kbs: [KBSchema]
|
68
61
|
});
|
69
62
|
|
63
|
+
KBSchema.index({ createdAt: -1, updatedAt: -1 })
|
64
|
+
|
70
65
|
|
71
66
|
//module.exports = mongoose.model('KBSettings', KBSettingSchema);
|
72
67
|
const KBSettings = mongoose.model('KBSettings', KBSettingSchema);
|
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.5.
|
4
|
+
"version": "2.5.2",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -42,7 +42,7 @@
|
|
42
42
|
"@tiledesk/tiledesk-dialogflow-connector": "^1.8.4",
|
43
43
|
"@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
|
44
44
|
"@tiledesk/tiledesk-kaleyra-proxy": "^0.1.7",
|
45
|
-
"@tiledesk/tiledesk-messenger-connector": "^0.1.
|
45
|
+
"@tiledesk/tiledesk-messenger-connector": "^0.1.18",
|
46
46
|
"@tiledesk/tiledesk-rasa-connector": "^1.0.10",
|
47
47
|
"@tiledesk/tiledesk-telegram-connector": "^0.1.10",
|
48
48
|
"@tiledesk/tiledesk-tybot-connector": "^0.2.56",
|
package/routes/kb.js
CHANGED
@@ -8,16 +8,103 @@ const openaiService = require('../services/openaiService');
|
|
8
8
|
router.get('/', async (req, res) => {
|
9
9
|
|
10
10
|
let project_id = req.projectid;
|
11
|
+
let status;
|
12
|
+
let limit = 200;
|
13
|
+
let page = 0;
|
14
|
+
let direction = -1;
|
15
|
+
let sortField = "updatedAt";
|
16
|
+
let text;
|
17
|
+
|
18
|
+
let query = {};
|
19
|
+
query["id_project"] = project_id;
|
20
|
+
|
21
|
+
if (req.query.status) {
|
22
|
+
status = parseInt(req.query.status);
|
23
|
+
query["status"] = status;
|
24
|
+
winston.debug("Get kb status: " + status)
|
25
|
+
}
|
26
|
+
if (req.query.limit) {
|
27
|
+
limit = parseInt(req.query.limit);
|
28
|
+
winston.debug("Get kb limit: " + limit)
|
29
|
+
}
|
30
|
+
|
31
|
+
if (req.query.page) {
|
32
|
+
page = parseInt(req.query.page);
|
33
|
+
winston.debug("Get kb page: " + page)
|
34
|
+
}
|
35
|
+
|
36
|
+
let skip = page * limit;
|
37
|
+
winston.debug("Get kb skip page: " + skip);
|
38
|
+
|
39
|
+
if (req.query.direction) {
|
40
|
+
direction = parseInt(req.query.direction)
|
41
|
+
winston.debug("Get kb direction: " + direction)
|
42
|
+
}
|
43
|
+
|
44
|
+
if (req.query.sortField) {
|
45
|
+
sortField = req.query.sortField;
|
46
|
+
winston.debug("Get kb sortField: " + sortField)
|
47
|
+
}
|
48
|
+
|
49
|
+
if (req.query.search) {
|
50
|
+
text = req.query.search;
|
51
|
+
query['source'] = new RegExp(text);
|
52
|
+
winston.debug("Get kb text: " + text);
|
53
|
+
}
|
54
|
+
|
55
|
+
let sortQuery = {};
|
56
|
+
sortQuery[sortField] = direction;
|
57
|
+
winston.debug("Get kb sortQuery: " + sortQuery);
|
58
|
+
|
59
|
+
KB.countDocuments(query, (err, kbs_count) => {
|
60
|
+
if (err) {
|
61
|
+
winston.error("Find all kbs error: ", err);
|
62
|
+
}
|
63
|
+
winston.debug("KBs count: ", kbs_count);
|
64
|
+
|
65
|
+
KB.find(query)
|
66
|
+
.skip(skip)
|
67
|
+
.limit(limit)
|
68
|
+
.sort(sortQuery)
|
69
|
+
.exec((err, kbs) => {
|
70
|
+
if (err) {
|
71
|
+
winston.error("Find all kbs error: ", err);
|
72
|
+
return res.status(500).send({ success: false, error: err });
|
73
|
+
}
|
74
|
+
|
75
|
+
winston.debug("KBs found: ", kbs);
|
76
|
+
|
77
|
+
let response = {
|
78
|
+
count: kbs_count,
|
79
|
+
query: {},
|
80
|
+
kbs: kbs
|
81
|
+
}
|
82
|
+
if (status) {
|
83
|
+
response.query.status = status;
|
84
|
+
}
|
85
|
+
if (limit) {
|
86
|
+
response.query.limit = limit;
|
87
|
+
}
|
88
|
+
if (status) {
|
89
|
+
response.query.page = page;
|
90
|
+
}
|
91
|
+
if (sortField) {
|
92
|
+
response.query.sortField = sortField;
|
93
|
+
}
|
94
|
+
if (direction) {
|
95
|
+
response.query.direction = direction;
|
96
|
+
}
|
97
|
+
if (text) {
|
98
|
+
response.query.search = text;
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
return res.status(200).send(response);
|
103
|
+
})
|
104
|
+
|
105
|
+
})
|
11
106
|
|
12
|
-
KB.find({ id_project: project_id }, (err, kbs) => {
|
13
|
-
if (err) {
|
14
|
-
winston.error("Find all kbs error: ", err);
|
15
|
-
return res.status(500).send({ success: false, error: err });
|
16
|
-
}
|
17
107
|
|
18
|
-
winston.debug("KBs found: ", kbs);
|
19
|
-
return res.status(200).send(kbs);
|
20
|
-
})
|
21
108
|
})
|
22
109
|
|
23
110
|
router.get('/:kb_id', async (req, res) => {
|
@@ -46,7 +133,8 @@ router.post('/', async (req, res) => {
|
|
46
133
|
type: body.type,
|
47
134
|
source: body.source,
|
48
135
|
content: body.content,
|
49
|
-
namespace: body.namespace
|
136
|
+
namespace: body.namespace,
|
137
|
+
status: -1
|
50
138
|
}
|
51
139
|
if (!new_kb.namespace) {
|
52
140
|
new_kb.namespace = project_id;
|
@@ -101,7 +189,6 @@ router.put('/:kb_id', async (req, res) => {
|
|
101
189
|
update.status = req.body.status;
|
102
190
|
}
|
103
191
|
|
104
|
-
update.updatedAt = new Date();
|
105
192
|
winston.debug("kb update: ", update);
|
106
193
|
|
107
194
|
KB.findByIdAndUpdate(kb_id, update, { new: true }, (err, savedKb) => {
|
package/test/kbRoute.js
CHANGED
@@ -73,6 +73,98 @@ describe('KbRoute', () => {
|
|
73
73
|
|
74
74
|
});
|
75
75
|
|
76
|
+
it('getWithQueries', (done) => {
|
77
|
+
|
78
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
79
|
+
var pwd = "pwd";
|
80
|
+
|
81
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
82
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
83
|
+
|
84
|
+
let kb1 = {
|
85
|
+
name: "example_name1",
|
86
|
+
type: "url",
|
87
|
+
source: "https://www.exampleurl1.com",
|
88
|
+
content: ""
|
89
|
+
}
|
90
|
+
|
91
|
+
let kb2 = {
|
92
|
+
name: "example_name2",
|
93
|
+
type: "text",
|
94
|
+
source: "example_name2",
|
95
|
+
content: "example content"
|
96
|
+
}
|
97
|
+
|
98
|
+
let kb3 = {
|
99
|
+
name: "example_name3",
|
100
|
+
type: "url",
|
101
|
+
source: "https://www.exampleurl3.com",
|
102
|
+
content: ""
|
103
|
+
}
|
104
|
+
|
105
|
+
chai.request(server)
|
106
|
+
.post('/' + savedProject._id + "/kb")
|
107
|
+
.auth(email, pwd)
|
108
|
+
.send(kb1)
|
109
|
+
.end((err, res) => {
|
110
|
+
if (log) { console.log("create kb res.body: ", res.body); }
|
111
|
+
res.should.have.status(200);
|
112
|
+
|
113
|
+
setTimeout(() => {
|
114
|
+
chai.request(server)
|
115
|
+
.post('/' + savedProject._id + "/kb")
|
116
|
+
.auth(email, pwd)
|
117
|
+
.send(kb2)
|
118
|
+
.end((err, res) => {
|
119
|
+
if (log) { console.log("create kb res.body: ", res.body); }
|
120
|
+
res.should.have.status(200);
|
121
|
+
|
122
|
+
setTimeout(() => {
|
123
|
+
chai.request(server)
|
124
|
+
.post('/' + savedProject._id + "/kb")
|
125
|
+
.auth(email, pwd)
|
126
|
+
.send(kb3)
|
127
|
+
.end((err, res) => {
|
128
|
+
if (log) { console.log("create kb res.body: ", res.body); }
|
129
|
+
res.should.have.status(200);
|
130
|
+
|
131
|
+
let query = "?status=-1&limit=5&page=0&direction=-1&sortField=updatedAt&search=example";
|
132
|
+
//let query = "";
|
133
|
+
console.log("query: ", query);
|
134
|
+
|
135
|
+
chai.request(server)
|
136
|
+
.get('/' + savedProject._id + "/kb" + query)
|
137
|
+
.auth(email, pwd)
|
138
|
+
.end((err, res) => {
|
139
|
+
console.log("getall res.body: ", res.body);
|
140
|
+
res.should.have.status(200);
|
141
|
+
res.body.should.be.a('object');
|
142
|
+
res.body.kbs.should.be.a('array');
|
143
|
+
expect(res.body.kbs.length).to.equal(3);
|
144
|
+
expect(res.body.count).to.equal(3);
|
145
|
+
res.body.query.should.be.a('object');
|
146
|
+
expect(res.body.query.status).to.equal(-1);
|
147
|
+
expect(res.body.query.limit).to.equal(5);
|
148
|
+
expect(res.body.query.page).to.equal(0);
|
149
|
+
expect(res.body.query.direction).to.equal(-1);
|
150
|
+
expect(res.body.query.sortField).to.equal("updatedAt");
|
151
|
+
expect(res.body.query.search).to.equal("example");
|
152
|
+
|
153
|
+
done();
|
154
|
+
|
155
|
+
})
|
156
|
+
|
157
|
+
})
|
158
|
+
}, 1000)
|
159
|
+
})
|
160
|
+
}, 1000)
|
161
|
+
|
162
|
+
|
163
|
+
})
|
164
|
+
})
|
165
|
+
})
|
166
|
+
}).timeout(20000)
|
167
|
+
|
76
168
|
it('scrapeSingle', (done) => {
|
77
169
|
|
78
170
|
var email = "test-signup-" + Date.now() + "@email.com";
|