@tiledesk/tiledesk-server 2.3.54 → 2.3.56
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +16 -3
- package/app.js +4 -1
- package/models/faq.js +57 -23
- package/models/faq_kb.js +14 -0
- package/package.json +2 -2
- package/routes/faq.js +5 -3
- package/routes/faq_kb.js +13 -8
- package/services/chatbotService.js +1 -1
- package/services/faqService.js +4 -1
- package/services/trainingService.js +106 -0
- package/test/faqRoute.js +307 -267
- package/test/faqkbRoute.js +4 -1
package/CHANGELOG.md
CHANGED
@@ -1,9 +1,22 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
💥 TILEDESK SERVER v2.3.
|
3
|
+
💥 TILEDESK SERVER v2.3.56 💥
|
4
4
|
🚀 TAGGED AND PUBLISHED ON NPM 🚀
|
5
5
|
🚀 IN PRODUCTION 🚀
|
6
|
-
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.
|
6
|
+
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.56)
|
7
|
+
|
8
|
+
# 2.3.56
|
9
|
+
- Tybot updated to 0.1.30
|
10
|
+
|
11
|
+
# 2.3.55
|
12
|
+
- Tybot updated to 0.1.28
|
13
|
+
|
14
|
+
# 2.3.54
|
15
|
+
- Added HIDE_CLOSE_REQUEST_ERRORS env variable
|
16
|
+
- Added email.send trigger action
|
17
|
+
- Added participants parameter for trigger action
|
18
|
+
- Added status -1 for department model to hide department for dashboard and widget. It can be used for chatbot
|
19
|
+
- Added template engine to send email trigger action
|
7
20
|
|
8
21
|
# 2.3.51
|
9
22
|
- Added message.received as trigger event
|
@@ -19,7 +32,7 @@
|
|
19
32
|
- Updated widget.json file
|
20
33
|
- Fixed template for: beenInvitedNewUser.html beenInvitedExistingUser.html
|
21
34
|
|
22
|
-
# 2.3.49
|
35
|
+
# 2.3.49
|
23
36
|
- @tiledesk/tiledesk-tybot-connector": "^0.1.22
|
24
37
|
|
25
38
|
# 2.3.48
|
package/app.js
CHANGED
@@ -139,6 +139,9 @@ subscriptionNotifier.start();
|
|
139
139
|
|
140
140
|
var botSubscriptionNotifier = require('./services/BotSubscriptionNotifier');
|
141
141
|
botSubscriptionNotifier.start();
|
142
|
+
|
143
|
+
var trainingService = require('./services/trainingService');
|
144
|
+
trainingService.start();
|
142
145
|
|
143
146
|
// job_here
|
144
147
|
|
@@ -172,8 +175,8 @@ var IPFilter = require('./middleware/ipFilter');
|
|
172
175
|
|
173
176
|
// job_here
|
174
177
|
var BanUserNotifier = require('./services/banUserNotifier');
|
175
|
-
const { ChatbotService } = require('./services/chatbotService');
|
176
178
|
BanUserNotifier.listen();
|
179
|
+
const { ChatbotService } = require('./services/chatbotService');
|
177
180
|
|
178
181
|
var modulesManager = undefined;
|
179
182
|
try {
|
package/models/faq.js
CHANGED
@@ -9,23 +9,23 @@ var defaultFullTextLanguage = process.env.DEFAULT_FULLTEXT_INDEX_LANGUAGE || "no
|
|
9
9
|
var FaqSchema = new Schema({
|
10
10
|
id_faq_kb: {
|
11
11
|
type: String,
|
12
|
-
index: true
|
12
|
+
index: true
|
13
13
|
},
|
14
|
-
intent_id: {
|
14
|
+
intent_id: {
|
15
15
|
type: String,
|
16
16
|
required: false,
|
17
|
-
index:true,
|
18
|
-
default: function() {
|
17
|
+
index: true,
|
18
|
+
default: function () {
|
19
19
|
return uuidv4();
|
20
|
-
}
|
20
|
+
}
|
21
21
|
},
|
22
22
|
intent_display_name: { //documentare
|
23
23
|
type: String,
|
24
|
-
required: false,
|
25
|
-
index:true,
|
26
|
-
default: function() {
|
24
|
+
required: false,
|
25
|
+
index: true,
|
26
|
+
default: function () {
|
27
27
|
return nanoid(6);
|
28
|
-
}
|
28
|
+
}
|
29
29
|
},
|
30
30
|
question: {
|
31
31
|
type: String,
|
@@ -74,11 +74,11 @@ var FaqSchema = new Schema({
|
|
74
74
|
index: true
|
75
75
|
},
|
76
76
|
|
77
|
-
// "stats":{
|
78
|
-
// "conversation_count":2,
|
79
|
-
// "all_done_count":0,
|
80
|
-
// "wait_for_team_count":2
|
81
|
-
// }
|
77
|
+
// "stats":{
|
78
|
+
// "conversation_count":2,
|
79
|
+
// "all_done_count":0,
|
80
|
+
// "wait_for_team_count":2
|
81
|
+
// }
|
82
82
|
|
83
83
|
createdBy: {
|
84
84
|
type: String,
|
@@ -88,7 +88,7 @@ var FaqSchema = new Schema({
|
|
88
88
|
type: Object,
|
89
89
|
required: false
|
90
90
|
}
|
91
|
-
},{
|
91
|
+
}, {
|
92
92
|
timestamps: true,
|
93
93
|
toJSON: { virtuals: true } //used to polulate messages in toJSON// https://mongoosejs.com/docs/populate.html
|
94
94
|
}
|
@@ -102,26 +102,60 @@ FaqSchema.virtual('faq_kb', {
|
|
102
102
|
//options: { sort: { name: -1 }, limit: 5 } // Query options, see http://bit.ly/mongoose-query-options
|
103
103
|
});
|
104
104
|
|
105
|
-
FaqSchema.index({ id_project: 1, id_faq_kb: 1, question: 1 });
|
105
|
+
FaqSchema.index({ id_project: 1, id_faq_kb: 1, question: 1 });
|
106
106
|
|
107
107
|
// https://docs.mongodb.com/manual/core/index-text/
|
108
108
|
// https://docs.mongodb.com/manual/tutorial/specify-language-for-text-index/
|
109
109
|
// https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
|
110
110
|
|
111
|
-
|
112
|
-
FaqSchema.index({question:
|
113
|
-
|
111
|
+
// In testing...
|
112
|
+
// FaqSchema.index({ question: "text", answer: "text" }, { weights: { question: 5, answer: 3 } })
|
113
|
+
|
114
|
+
// FaqSchema.statics = {
|
115
|
+
// searchPartial: function (q, callback) {
|
116
|
+
// return this.find({
|
117
|
+
// $or: [
|
118
|
+
// { "question": new RegExp(q, "gi") },
|
119
|
+
// { "answer": new RegExp(q, "gi") },
|
120
|
+
// ]
|
121
|
+
// }, callback)
|
122
|
+
// },
|
123
|
+
|
124
|
+
// searchFull: function (q, callback) {
|
125
|
+
// return this.find({
|
126
|
+
// $text: { $search: q, $caseSensitive: false }
|
127
|
+
// }, callback)
|
128
|
+
// },
|
129
|
+
|
130
|
+
// searchFull: function (q, callback) {
|
131
|
+
// return this.find({
|
132
|
+
// $text: { $search: q, $caseSensitive: false }
|
133
|
+
// }, callback)
|
134
|
+
// },
|
135
|
+
|
136
|
+
// search: function (q, callback) {
|
137
|
+
// this.searchFull(q, (err, data) => {
|
138
|
+
// if (err) return callback(err, data);
|
139
|
+
// if (!err && data.length) return callback(err, data);
|
140
|
+
// if (!err && data.length === 0) return this.searchPartial(q, callback);
|
141
|
+
// });
|
142
|
+
// },
|
143
|
+
|
144
|
+
// }
|
145
|
+
|
146
|
+
FaqSchema.index({ question: 'text' },
|
147
|
+
{ "name": "faq_fulltext", "default_language": defaultFullTextLanguage, "language_override": "language" }); // schema level
|
114
148
|
|
115
149
|
// FaqSchema.index({question: 'text', answer: 'text'},
|
116
|
-
// {"name":"faq_fulltext","default_language":
|
150
|
+
// {"name":"faq_fulltext","default_language": defaultFqullTextLanguage,"language_override": "language", weights: {question: 10,answer: 1}}); // schema level
|
117
151
|
|
118
152
|
|
119
|
-
FaqSchema.index({ id_project: 1, id_faq_kb: 1, intent_display_name: 1
|
153
|
+
FaqSchema.index({ id_project: 1, id_faq_kb: 1, intent_display_name: 1 }, { unique: true });
|
120
154
|
|
121
155
|
|
122
|
-
|
156
|
+
var faq = mongoose.model('faq', FaqSchema);
|
123
157
|
|
124
|
-
|
158
|
+
faq.on('index', function (error) {
|
125
159
|
// "_id index cannot be sparse"
|
126
160
|
winston.debug('index', error);
|
127
161
|
});
|
package/models/faq_kb.js
CHANGED
@@ -70,6 +70,20 @@ var Faq_kbSchema = new Schema({
|
|
70
70
|
type: Boolean,
|
71
71
|
required: false,
|
72
72
|
default: false
|
73
|
+
},
|
74
|
+
certified: {
|
75
|
+
type: Boolean,
|
76
|
+
required: false,
|
77
|
+
default: false
|
78
|
+
},
|
79
|
+
mainCategory: {
|
80
|
+
type: String,
|
81
|
+
required: false
|
82
|
+
},
|
83
|
+
intentsEngine: {
|
84
|
+
type: String,
|
85
|
+
required: false,
|
86
|
+
default: 'none'
|
73
87
|
}
|
74
88
|
},{
|
75
89
|
timestamps: true
|
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.3.
|
4
|
+
"version": "2.3.56",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -42,7 +42,7 @@
|
|
42
42
|
"@tiledesk/tiledesk-chatbot-util": "^0.8.33",
|
43
43
|
"@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
|
44
44
|
"@tiledesk/tiledesk-rasa-connector": "^1.0.10",
|
45
|
-
"@tiledesk/tiledesk-tybot-connector": "^0.1.
|
45
|
+
"@tiledesk/tiledesk-tybot-connector": "^0.1.28",
|
46
46
|
"@tiledesk/tiledesk-dialogflow-connector": "^1.7.4",
|
47
47
|
"app-root-path": "^3.0.0",
|
48
48
|
"bcrypt-nodejs": "0.0.3",
|
package/routes/faq.js
CHANGED
@@ -194,8 +194,6 @@ router.put('/:faqid', function (req, res) {
|
|
194
194
|
if (req.body.form!=undefined) {
|
195
195
|
update.form = req.body.form;
|
196
196
|
}
|
197
|
-
|
198
|
-
|
199
197
|
|
200
198
|
Faq.findByIdAndUpdate(req.params.faqid, update, { new: true, upsert: true }, function (err, updatedFaq) {
|
201
199
|
if (err) {
|
@@ -329,7 +327,11 @@ router.get('/', function (req, res, next) {
|
|
329
327
|
// return Faq.find(query, {score: { $meta: "textScore" } })
|
330
328
|
// .sort( { score: { $meta: "textScore" } } ) //https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score
|
331
329
|
|
332
|
-
|
330
|
+
// in testing...
|
331
|
+
// return Faq.search('a closer', (err, result) => {
|
332
|
+
// console.log("result: ", result);
|
333
|
+
// })
|
334
|
+
|
333
335
|
return Faq.find(query).
|
334
336
|
skip(skip).limit(limit).
|
335
337
|
populate({path:'faq_kb'})//, match: { trashed: { $in: [null, false] } }}).
|
package/routes/faq_kb.js
CHANGED
@@ -15,11 +15,10 @@ var configGlobal = require('../config/global');
|
|
15
15
|
|
16
16
|
var chatbot_templates_api_url = "https://chatbot-templates.herokuapp.com/chatbots/public/templates"
|
17
17
|
|
18
|
-
|
19
18
|
router.post('/', function (req, res) {
|
20
19
|
winston.info('create BOT ', req.body);
|
21
20
|
//create(name, url, projectid, user_id, type, description, webhook_url, webhook_enabled, language, template)
|
22
|
-
faqService.create(req.body.name, req.body.url, req.projectid, req.user.id, req.body.type, req.body.description, undefined, undefined, req.body.language, req.body.template).then(function (savedFaq_kb) {
|
21
|
+
faqService.create(req.body.name, req.body.url, req.projectid, req.user.id, req.body.type, req.body.description, undefined, undefined, req.body.language, req.body.template, req.body.mainCategory, req.body.intentsEngine).then(function (savedFaq_kb) {
|
23
22
|
res.json(savedFaq_kb);
|
24
23
|
});
|
25
24
|
|
@@ -232,13 +231,24 @@ router.put('/:faq_kbid', function (req, res) {
|
|
232
231
|
if (req.body.webhook_enabled != undefined) {
|
233
232
|
update.webhook_enabled = req.body.webhook_enabled;
|
234
233
|
}
|
235
|
-
|
236
234
|
if (req.body.type != undefined) {
|
237
235
|
update.type = req.body.type;
|
238
236
|
}
|
239
237
|
if (req.body.trashed != undefined) {
|
240
238
|
update.trashed = req.body.trashed;
|
241
239
|
}
|
240
|
+
if (req.body.public != undefined) {
|
241
|
+
update.public = req.body.public;
|
242
|
+
}
|
243
|
+
if (req.body.certified != undefined) {
|
244
|
+
update.certified = req.body.certified;
|
245
|
+
}
|
246
|
+
if (req.body.mainCategory != undefined) {
|
247
|
+
update.mainCategory = req.body.mainCategory;
|
248
|
+
}
|
249
|
+
if (req.body.intentsEngine != undefined) {
|
250
|
+
update.intentsEngine = req.body.intentsEngine;
|
251
|
+
}
|
242
252
|
|
243
253
|
Faq_kb.findByIdAndUpdate(req.params.faq_kbid, update, { new: true, upsert: true }, function (err, updatedFaq_kb) {
|
244
254
|
if (err) {
|
@@ -356,9 +366,6 @@ router.post('/fork/:id_faq_kb', async (req, res) => {
|
|
356
366
|
let landing_project_id = req.query.projectid;
|
357
367
|
winston.info("landing project id " + landing_project_id)
|
358
368
|
|
359
|
-
let new_bot_name = req.query.name;
|
360
|
-
winston.info("new bot name: " + new_bot_name);
|
361
|
-
|
362
369
|
let public = req.query.public;
|
363
370
|
winston.info("public " + public);
|
364
371
|
|
@@ -373,8 +380,6 @@ router.post('/fork/:id_faq_kb', async (req, res) => {
|
|
373
380
|
return res.status(500).send({ success: false, message: "Unable to get chatbot" });
|
374
381
|
}
|
375
382
|
|
376
|
-
//chatbot.name = new_bot_name;
|
377
|
-
|
378
383
|
let savedChatbot = await cs.createBot(api_url, token, chatbot, landing_project_id);
|
379
384
|
winston.info("savedChatbot: ", savedChatbot)
|
380
385
|
|
@@ -42,7 +42,7 @@ class ChatbotService {
|
|
42
42
|
},
|
43
43
|
method: 'GET'
|
44
44
|
}).then((resbody) => {
|
45
|
-
winston.info("(CHATBOT SERVICE) forking public chatbot " + resbody.data);
|
45
|
+
winston.info("(CHATBOT SERVICE) forking public chatbot " + resbody.data.name);
|
46
46
|
let chatbot = resbody.data;
|
47
47
|
return chatbot
|
48
48
|
}).catch((err) => {
|
package/services/faqService.js
CHANGED
@@ -8,7 +8,7 @@ const ActionsConstants = require('../models/actionsConstants');
|
|
8
8
|
class FaqService {
|
9
9
|
|
10
10
|
|
11
|
-
create(name, url, projectid, user_id, type, description, webhook_url, webhook_enabled, language, template) {
|
11
|
+
create(name, url, projectid, user_id, type, description, webhook_url, webhook_enabled, language, template, mainCategory, intentsEngine) {
|
12
12
|
var that = this;
|
13
13
|
return new Promise(function (resolve, reject) {
|
14
14
|
|
@@ -23,6 +23,9 @@ class FaqService {
|
|
23
23
|
type: type,
|
24
24
|
language: language,
|
25
25
|
public: false,
|
26
|
+
certified: false,
|
27
|
+
mainCategory: mainCategory,
|
28
|
+
intentsEngine: intentsEngine,
|
26
29
|
trashed: false,
|
27
30
|
createdBy: user_id,
|
28
31
|
updatedBy: user_id
|
@@ -0,0 +1,106 @@
|
|
1
|
+
const faqBotEvent = require('../event/faqBotEvent');
|
2
|
+
const Faq_kb = require('../models/faq_kb');
|
3
|
+
const Faq = require('../models/faq');
|
4
|
+
var winston = require('../config/winston');
|
5
|
+
const axios = require("axios").default;
|
6
|
+
|
7
|
+
|
8
|
+
let chatbot_training_api_url = "http://34.65.210.38/model/train"
|
9
|
+
|
10
|
+
class TrainingService {
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
train(eventName, faq) {
|
15
|
+
|
16
|
+
Faq_kb.findById(faq.id_faq_kb, (err, faq_kb) => {
|
17
|
+
winston.debug("faq_kb: ", faq_kb)
|
18
|
+
|
19
|
+
if (!faq_kb.intentsEngine) {
|
20
|
+
winston.info("intentsEngine: off")
|
21
|
+
return null;
|
22
|
+
}
|
23
|
+
|
24
|
+
winston.info("intentsEngine: on")
|
25
|
+
Faq.find({ id_faq_kb: faq.id_faq_kb }, (err, faqs) => {
|
26
|
+
|
27
|
+
if (err) {
|
28
|
+
winston.error("[Training] find all error: ", err);
|
29
|
+
} else {
|
30
|
+
|
31
|
+
let json = {
|
32
|
+
"configuration": {
|
33
|
+
"language": faq_kb.language,
|
34
|
+
"pipeline": [""]
|
35
|
+
},
|
36
|
+
"model": faq_kb._id,
|
37
|
+
"nlu": []
|
38
|
+
}
|
39
|
+
|
40
|
+
faqs.forEach((f) => {
|
41
|
+
if (f.enabled == true) {
|
42
|
+
let intent = {
|
43
|
+
"intent": f.intent_display_name,
|
44
|
+
"examples": []
|
45
|
+
}
|
46
|
+
let questions = f.question.split("\n");
|
47
|
+
intent.examples = questions;
|
48
|
+
json.nlu.push(intent);
|
49
|
+
}
|
50
|
+
})
|
51
|
+
|
52
|
+
winston.debug("training json: \n" + JSON.stringify(json, null, 2));
|
53
|
+
|
54
|
+
axios({
|
55
|
+
url: chatbot_training_api_url,
|
56
|
+
headers: {
|
57
|
+
'Content-Type': 'application/json'
|
58
|
+
},
|
59
|
+
data: json,
|
60
|
+
method: 'POST'
|
61
|
+
}).then((resbody) => {
|
62
|
+
winston.info("[Training] resbody: ", resbody.data);
|
63
|
+
return true;
|
64
|
+
}).catch((err) => {
|
65
|
+
winston.error("[Training] error: ", err.response.data);
|
66
|
+
})
|
67
|
+
}
|
68
|
+
})
|
69
|
+
|
70
|
+
})
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
start() {
|
77
|
+
winston.info('TrainingService start');
|
78
|
+
|
79
|
+
faqBotEvent.on('faq.create', (faq) => {
|
80
|
+
setImmediate(() => {
|
81
|
+
trainingService.train('faq.create', faq);
|
82
|
+
})
|
83
|
+
})
|
84
|
+
|
85
|
+
faqBotEvent.on('faq.update', (faq) => {
|
86
|
+
winston.debug("--> event faq: ", faq);
|
87
|
+
setImmediate(() => {
|
88
|
+
trainingService.train('faq.update', faq);
|
89
|
+
})
|
90
|
+
})
|
91
|
+
|
92
|
+
faqBotEvent.on('faq.delete', (faq) => {
|
93
|
+
console.log("--> event faq: ", faq);
|
94
|
+
setImmediate(() => {
|
95
|
+
trainingService.train('faq.delete', faq);
|
96
|
+
})
|
97
|
+
})
|
98
|
+
|
99
|
+
|
100
|
+
}
|
101
|
+
|
102
|
+
}
|
103
|
+
|
104
|
+
var trainingService = new TrainingService();
|
105
|
+
|
106
|
+
module.exports = trainingService;
|
package/test/faqRoute.js
CHANGED
@@ -19,28 +19,30 @@ const path = require('path');
|
|
19
19
|
var expect = chai.expect;
|
20
20
|
var assert = chai.assert;
|
21
21
|
|
22
|
+
let log = true;
|
23
|
+
|
22
24
|
chai.use(chaiHttp);
|
23
25
|
|
24
26
|
describe('FaqKBRoute', () => {
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
describe('/create', () => {
|
29
|
+
|
30
|
+
it('create', (done) => {
|
31
|
+
|
32
|
+
// this.timeout();
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
35
|
+
var pwd = "pwd";
|
34
36
|
|
35
|
-
|
36
|
-
|
37
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
38
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
37
39
|
chai.request(server)
|
38
|
-
.post('/'+ savedProject._id + '/faq_kb')
|
40
|
+
.post('/' + savedProject._id + '/faq_kb')
|
39
41
|
.auth(email, pwd)
|
40
|
-
.send({"name":"testbot", type: "internal"})
|
42
|
+
.send({ "name": "testbot", type: "internal" })
|
41
43
|
.end((err, res) => {
|
42
44
|
//console.log("res", res);
|
43
|
-
console.log("res.body",
|
45
|
+
console.log("res.body", res.body);
|
44
46
|
res.should.have.status(200);
|
45
47
|
res.body.should.be.a('object');
|
46
48
|
expect(res.body.name).to.equal("testbot");
|
@@ -48,380 +50,418 @@ describe('FaqKBRoute', () => {
|
|
48
50
|
expect(res.body.public).to.equal(false);
|
49
51
|
var id_faq_kb = res.body._id;
|
50
52
|
|
51
|
-
|
52
|
-
.post('/'+ savedProject._id + '/faq')
|
53
|
+
chai.request(server)
|
54
|
+
.post('/' + savedProject._id + '/faq')
|
53
55
|
.auth(email, pwd)
|
54
|
-
.send({id_faq_kb: id_faq_kb, question: "question1", answer: "answer1"})
|
56
|
+
.send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1" })
|
55
57
|
.end((err, res) => {
|
56
58
|
//console.log("res", res);
|
57
|
-
console.log("res.body",
|
59
|
+
console.log("res.body", res.body);
|
58
60
|
res.should.have.status(200);
|
59
61
|
res.body.should.be.a('object');
|
60
|
-
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
61
|
-
expect(res.body.question).to.equal("question1");
|
62
|
-
expect(res.body.answer).to.equal("answer1");
|
63
|
-
expect(res.body.intent_display_name).to.not.equal(undefined);
|
64
|
-
expect(res.body.webhook_enabled).to.equal(false);
|
65
|
-
|
62
|
+
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
63
|
+
expect(res.body.question).to.equal("question1");
|
64
|
+
expect(res.body.answer).to.equal("answer1");
|
65
|
+
expect(res.body.intent_display_name).to.not.equal(undefined);
|
66
|
+
expect(res.body.webhook_enabled).to.equal(false);
|
67
|
+
|
66
68
|
done();
|
67
69
|
});
|
68
70
|
|
69
71
|
});
|
70
72
|
|
71
|
-
|
73
|
+
|
72
74
|
});
|
73
75
|
});
|
74
|
-
|
75
|
-
});
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
// this.timeout();
|
81
|
-
|
82
|
-
var email = "test-signup-" + Date.now() + "@email.com";
|
83
|
-
var pwd = "pwd";
|
84
|
-
let example_form = {
|
85
|
-
fields: [
|
86
|
-
{
|
87
|
-
name: "userFullname",
|
88
|
-
type: "text",
|
89
|
-
label: "What is your name?"
|
90
|
-
},
|
91
|
-
{
|
92
|
-
name: "userEmail",
|
93
|
-
type: "text",
|
94
|
-
regex: "/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'+/0-9=?A-Z^_`a-z{|}~]+(.[-!#$%&'+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$/",
|
95
|
-
label: "Your email?",
|
96
|
-
errorLabel: "This email address is invalid\n\nCan you insert a correct email address?"
|
97
|
-
}
|
98
|
-
]
|
99
|
-
}
|
100
|
-
|
101
|
-
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
102
|
-
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
103
|
-
|
104
|
-
chai.request(server)
|
105
|
-
.post('/' + savedProject._id + '/faq_kb')
|
106
|
-
.auth(email, pwd)
|
107
|
-
.send({ "name": "testbot", type: "external", language: 'fr' })
|
108
|
-
.end((err, res) => {
|
109
|
-
//console.log("res", res);
|
110
|
-
console.log("res.body", res.body);
|
111
|
-
res.should.have.status(200);
|
112
|
-
res.body.should.be.a('object');
|
113
|
-
expect(res.body.name).to.equal("testbot");
|
114
|
-
expect(res.body.language).to.equal("fr");
|
115
|
-
var id_faq_kb = res.body._id;
|
116
|
-
|
117
|
-
chai.request(server)
|
118
|
-
.post('/'+ savedProject._id + '/faq')
|
119
|
-
.auth(email, pwd)
|
120
|
-
.send({id_faq_kb: id_faq_kb, form: example_form})
|
121
|
-
.end((err, res) => {
|
122
|
-
//console.log("res", res);
|
123
|
-
console.log("res.body", res.body);
|
124
|
-
res.should.have.status(200);
|
125
|
-
res.body.should.be.a('object');
|
126
|
-
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
127
|
-
expect(res.body.form).to.exist;
|
128
|
-
res.body.form.should.be.a('object');
|
129
|
-
expect(res.body.intent_display_name).to.not.equal(undefined);
|
130
|
-
expect(res.body.webhook_enabled).to.equal(false);
|
131
|
-
|
132
|
-
done();
|
133
|
-
});
|
134
|
-
});
|
77
|
+
});
|
135
78
|
|
79
|
+
it('create with form (createFaqKb function)', (done) => {
|
136
80
|
|
81
|
+
|
82
|
+
// this.timeout();
|
83
|
+
|
84
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
85
|
+
var pwd = "pwd";
|
86
|
+
let example_form = {
|
87
|
+
fields: [
|
88
|
+
{
|
89
|
+
name: "userFullname",
|
90
|
+
type: "text",
|
91
|
+
label: "What is your name?"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
name: "userEmail",
|
95
|
+
type: "text",
|
96
|
+
regex: "/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'+/0-9=?A-Z^_`a-z{|}~]+(.[-!#$%&'+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$/",
|
97
|
+
label: "Your email?",
|
98
|
+
errorLabel: "This email address is invalid\n\nCan you insert a correct email address?"
|
99
|
+
}
|
100
|
+
]
|
101
|
+
}
|
102
|
+
|
103
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
104
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
105
|
+
|
106
|
+
chai.request(server)
|
107
|
+
.post('/' + savedProject._id + '/faq_kb')
|
108
|
+
.auth(email, pwd)
|
109
|
+
.send({ "name": "testbot", type: "external", language: 'fr' })
|
110
|
+
.end((err, res) => {
|
111
|
+
//console.log("res", res);
|
112
|
+
console.log("res.body", res.body);
|
113
|
+
res.should.have.status(200);
|
114
|
+
res.body.should.be.a('object');
|
115
|
+
expect(res.body.name).to.equal("testbot");
|
116
|
+
expect(res.body.language).to.equal("fr");
|
117
|
+
var id_faq_kb = res.body._id;
|
118
|
+
|
119
|
+
chai.request(server)
|
120
|
+
.post('/' + savedProject._id + '/faq')
|
121
|
+
.auth(email, pwd)
|
122
|
+
.send({ id_faq_kb: id_faq_kb, form: example_form })
|
123
|
+
.end((err, res) => {
|
124
|
+
//console.log("res", res);
|
125
|
+
console.log("res.body", res.body);
|
126
|
+
res.should.have.status(200);
|
127
|
+
res.body.should.be.a('object');
|
128
|
+
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
129
|
+
expect(res.body.form).to.exist;
|
130
|
+
res.body.form.should.be.a('object');
|
131
|
+
expect(res.body.intent_display_name).to.not.equal(undefined);
|
132
|
+
expect(res.body.webhook_enabled).to.equal(false);
|
133
|
+
|
134
|
+
done();
|
135
|
+
});
|
136
|
+
});
|
137
|
+
|
138
|
+
|
139
|
+
});
|
140
|
+
});
|
141
|
+
|
142
|
+
}).timeout(20000);
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
it('createWithLanguage', (done) => {
|
147
|
+
|
148
|
+
|
149
|
+
// this.timeout();
|
150
|
+
|
151
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
152
|
+
var pwd = "pwd";
|
153
|
+
|
154
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
155
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
156
|
+
chai.request(server)
|
157
|
+
.post('/' + savedProject._id + '/faq_kb')
|
158
|
+
.auth(email, pwd)
|
159
|
+
.send({ "name": "testbot", type: "internal", template: "example", language: "it" })
|
160
|
+
.end((err, res) => {
|
161
|
+
//console.log("res", res);
|
162
|
+
console.log("res.body", res.body);
|
163
|
+
res.should.have.status(200);
|
164
|
+
res.body.should.be.a('object');
|
165
|
+
expect(res.body.name).to.equal("testbot");
|
166
|
+
expect(res.body.language).to.equal("it");
|
167
|
+
var id_faq_kb = res.body._id;
|
168
|
+
|
169
|
+
chai.request(server)
|
170
|
+
.post('/' + savedProject._id + '/faq')
|
171
|
+
.auth(email, pwd)
|
172
|
+
.send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1" })
|
173
|
+
.end((err, res) => {
|
174
|
+
//console.log("res", res);
|
175
|
+
console.log("res.body", res.body);
|
176
|
+
res.should.have.status(200);
|
177
|
+
res.body.should.be.a('object');
|
178
|
+
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
179
|
+
expect(res.body.question).to.equal("question1");
|
180
|
+
expect(res.body.answer).to.equal("answer1");
|
181
|
+
expect(res.body.intent_display_name).to.not.equal(undefined);
|
182
|
+
expect(res.body.webhook_enabled).to.equal(false);
|
183
|
+
expect(res.body.language).to.equal("it");
|
184
|
+
done();
|
185
|
+
});
|
186
|
+
|
187
|
+
});
|
188
|
+
|
189
|
+
|
190
|
+
});
|
137
191
|
});
|
138
|
-
});
|
139
192
|
|
140
|
-
}).timeout(20000);
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
it('createWithLanguage', (done) => {
|
145
|
-
|
146
|
-
|
147
|
-
// this.timeout();
|
148
|
-
|
149
|
-
var email = "test-signup-" + Date.now() + "@email.com";
|
150
|
-
var pwd = "pwd";
|
151
|
-
|
152
|
-
userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
|
153
|
-
projectService.create("test-faqkb-create", savedUser._id).then(function(savedProject) {
|
154
|
-
chai.request(server)
|
155
|
-
.post('/'+ savedProject._id + '/faq_kb')
|
156
|
-
.auth(email, pwd)
|
157
|
-
.send({"name":"testbot", type: "internal", template: "example", language: "it"})
|
158
|
-
.end((err, res) => {
|
159
|
-
//console.log("res", res);
|
160
|
-
console.log("res.body", res.body);
|
161
|
-
res.should.have.status(200);
|
162
|
-
res.body.should.be.a('object');
|
163
|
-
expect(res.body.name).to.equal("testbot");
|
164
|
-
expect(res.body.language).to.equal("it");
|
165
|
-
var id_faq_kb = res.body._id;
|
166
|
-
|
167
|
-
chai.request(server)
|
168
|
-
.post('/'+ savedProject._id + '/faq')
|
169
|
-
.auth(email, pwd)
|
170
|
-
.send({id_faq_kb: id_faq_kb, question: "question1", answer: "answer1"})
|
171
|
-
.end((err, res) => {
|
172
|
-
//console.log("res", res);
|
173
|
-
console.log("res.body", res.body);
|
174
|
-
res.should.have.status(200);
|
175
|
-
res.body.should.be.a('object');
|
176
|
-
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
177
|
-
expect(res.body.question).to.equal("question1");
|
178
|
-
expect(res.body.answer).to.equal("answer1");
|
179
|
-
expect(res.body.intent_display_name).to.not.equal(undefined);
|
180
|
-
expect(res.body.webhook_enabled).to.equal(false);
|
181
|
-
expect(res.body.language).to.equal("it");
|
182
|
-
done();
|
183
|
-
});
|
184
|
-
|
185
|
-
});
|
186
|
-
|
187
|
-
|
188
|
-
});
|
189
|
-
});
|
190
|
-
|
191
193
|
});
|
192
|
-
|
193
|
-
|
194
194
|
|
195
195
|
|
196
196
|
|
197
197
|
|
198
|
-
it('createWithIntentDisplayNameAndWebhookEnalbed', (done) => {
|
199
198
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
199
|
+
|
200
|
+
it('createWithIntentDisplayNameAndWebhookEnalbed', (done) => {
|
201
|
+
|
202
|
+
|
203
|
+
// this.timeout();
|
204
|
+
|
205
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
206
|
+
var pwd = "pwd";
|
207
|
+
|
208
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
209
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
210
|
+
|
209
211
|
chai.request(server)
|
210
|
-
.post('/'+ savedProject._id + '/faq_kb')
|
212
|
+
.post('/' + savedProject._id + '/faq_kb')
|
211
213
|
.auth(email, pwd)
|
212
|
-
.send({"name":"testbot", type: "internal", template: "example",})
|
214
|
+
.send({ "name": "testbot", type: "internal", template: "example", })
|
213
215
|
.end((err, res) => {
|
214
216
|
//console.log("res", res);
|
215
|
-
console.log("res.body",
|
217
|
+
console.log("res.body", res.body);
|
216
218
|
res.should.have.status(200);
|
217
219
|
res.body.should.be.a('object');
|
218
|
-
expect(res.body.name).to.equal("testbot");
|
220
|
+
expect(res.body.name).to.equal("testbot");
|
219
221
|
var id_faq_kb = res.body._id;
|
220
222
|
|
221
|
-
|
222
|
-
.post('/'+ savedProject._id + '/faq')
|
223
|
+
chai.request(server)
|
224
|
+
.post('/' + savedProject._id + '/faq')
|
223
225
|
.auth(email, pwd)
|
224
|
-
.send({id_faq_kb: id_faq_kb, question: "question1", answer: "answer1", webhook_enabled:true, intent_display_name: "intent_display_name1"})
|
226
|
+
.send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1", webhook_enabled: true, intent_display_name: "intent_display_name1" })
|
225
227
|
.end((err, res) => {
|
226
228
|
//console.log("res", res);
|
227
|
-
console.log("res.body",
|
229
|
+
console.log("res.body", res.body);
|
228
230
|
res.should.have.status(200);
|
229
231
|
res.body.should.be.a('object');
|
230
|
-
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
231
|
-
expect(res.body.question).to.equal("question1");
|
232
|
-
expect(res.body.answer).to.equal("answer1");
|
233
|
-
expect(res.body.intent_display_name).to.equal("intent_display_name1");
|
234
|
-
expect(res.body.webhook_enabled).to.equal(true);
|
232
|
+
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
233
|
+
expect(res.body.question).to.equal("question1");
|
234
|
+
expect(res.body.answer).to.equal("answer1");
|
235
|
+
expect(res.body.intent_display_name).to.equal("intent_display_name1");
|
236
|
+
expect(res.body.webhook_enabled).to.equal(true);
|
235
237
|
|
236
238
|
done();
|
237
239
|
});
|
238
240
|
|
239
241
|
});
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
242
|
+
|
243
|
+
|
244
|
+
});
|
245
|
+
});
|
246
|
+
|
245
247
|
});
|
246
|
-
|
247
|
-
|
248
|
+
|
249
|
+
|
248
250
|
|
249
251
|
|
250
252
|
|
251
253
|
it('update', (done) => {
|
252
254
|
|
253
|
-
|
255
|
+
|
254
256
|
// this.timeout();
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
257
|
+
|
258
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
259
|
+
var pwd = "pwd";
|
260
|
+
|
261
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
262
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
263
|
+
chai.request(server)
|
264
|
+
.post('/' + savedProject._id + '/faq_kb')
|
265
|
+
.auth(email, pwd)
|
266
|
+
.send({ "name": "testbot", type: "internal" })
|
267
|
+
.end((err, res) => {
|
268
|
+
//console.log("res", res);
|
269
|
+
console.log("res.body", res.body);
|
270
|
+
res.should.have.status(200);
|
271
|
+
res.body.should.be.a('object');
|
272
|
+
expect(res.body.name).to.equal("testbot");
|
273
|
+
var id_faq_kb = res.body._id;
|
274
|
+
|
261
275
|
chai.request(server)
|
262
|
-
.post('/'+ savedProject._id + '/
|
276
|
+
.post('/' + savedProject._id + '/faq')
|
263
277
|
.auth(email, pwd)
|
264
|
-
.send({
|
278
|
+
.send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1" })
|
265
279
|
.end((err, res) => {
|
266
280
|
//console.log("res", res);
|
267
|
-
console.log("res.body",
|
281
|
+
console.log("res.body", res.body);
|
268
282
|
res.should.have.status(200);
|
269
283
|
res.body.should.be.a('object');
|
270
|
-
expect(res.body.
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
284
|
+
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
285
|
+
expect(res.body.question).to.equal("question1");
|
286
|
+
expect(res.body.answer).to.equal("answer1");
|
287
|
+
expect(res.body.intent_display_name).to.not.equal(undefined);
|
288
|
+
expect(res.body.webhook_enabled).to.equal(false);
|
289
|
+
|
290
|
+
chai.request(server)
|
291
|
+
.put('/' + savedProject._id + '/faq/' + res.body._id)
|
275
292
|
.auth(email, pwd)
|
276
|
-
.send({id_faq_kb: id_faq_kb, question: "
|
293
|
+
.send({ id_faq_kb: id_faq_kb, question: "question2", answer: "answer2", webhook_enabled: true })
|
277
294
|
.end((err, res) => {
|
278
295
|
//console.log("res", res);
|
279
|
-
console.log("res.body",
|
296
|
+
console.log("res.body", res.body);
|
280
297
|
res.should.have.status(200);
|
281
298
|
res.body.should.be.a('object');
|
282
|
-
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
283
|
-
expect(res.body.question).to.equal("
|
284
|
-
expect(res.body.answer).to.equal("
|
285
|
-
expect(res.body.intent_display_name).to.not.equal(undefined);
|
286
|
-
expect(res.body.webhook_enabled).to.equal(
|
287
|
-
|
288
|
-
chai.request(server)
|
289
|
-
.put('/'+ savedProject._id + '/faq/'+res.body._id)
|
290
|
-
.auth(email, pwd)
|
291
|
-
.send({id_faq_kb: id_faq_kb, question: "question2", answer: "answer2", webhook_enabled:true})
|
292
|
-
.end((err, res) => {
|
293
|
-
//console.log("res", res);
|
294
|
-
console.log("res.body", res.body);
|
295
|
-
res.should.have.status(200);
|
296
|
-
res.body.should.be.a('object');
|
297
|
-
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
298
|
-
expect(res.body.question).to.equal("question2");
|
299
|
-
expect(res.body.answer).to.equal("answer2");
|
300
|
-
expect(res.body.intent_display_name).to.not.equal(undefined);
|
301
|
-
expect(res.body.webhook_enabled).to.equal(true);
|
302
|
-
|
303
|
-
done();
|
304
|
-
});
|
299
|
+
expect(res.body.id_faq_kb).to.equal(id_faq_kb);
|
300
|
+
expect(res.body.question).to.equal("question2");
|
301
|
+
expect(res.body.answer).to.equal("answer2");
|
302
|
+
expect(res.body.intent_display_name).to.not.equal(undefined);
|
303
|
+
expect(res.body.webhook_enabled).to.equal(true);
|
305
304
|
|
305
|
+
done();
|
306
306
|
});
|
307
|
-
|
307
|
+
|
308
308
|
});
|
309
|
-
|
310
|
-
|
311
|
-
});
|
309
|
+
|
312
310
|
});
|
313
|
-
|
311
|
+
|
312
|
+
|
313
|
+
});
|
314
314
|
});
|
315
315
|
|
316
|
-
|
316
|
+
});
|
317
|
+
|
318
|
+
|
317
319
|
it('uploadcsv', (done) => {
|
318
320
|
|
319
|
-
|
321
|
+
|
320
322
|
// this.timeout();
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
.post('/'+ savedProject._id + '/faq_kb')
|
323
|
+
|
324
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
325
|
+
var pwd = "pwd";
|
326
|
+
|
327
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
328
|
+
projectService.create("test-uploadcsv", savedUser._id).then(function (savedProject) {
|
329
|
+
|
330
|
+
chai.request(server)
|
331
|
+
.post('/' + savedProject._id + '/faq_kb')
|
330
332
|
.auth(email, pwd)
|
331
|
-
.send({"name":"testbot", type: "internal"})
|
333
|
+
.send({ "name": "testbot", type: "internal" })
|
332
334
|
.end((err, res) => {
|
333
335
|
//console.log("res", res);
|
334
|
-
console.log("res.body",
|
336
|
+
console.log("res.body", res.body);
|
335
337
|
res.should.have.status(200);
|
336
338
|
res.body.should.be.a('object');
|
337
|
-
expect(res.body.name).to.equal("testbot");
|
339
|
+
expect(res.body.name).to.equal("testbot");
|
338
340
|
var id_faq_kb = res.body._id;
|
339
341
|
|
340
342
|
chai.request(server)
|
341
|
-
.post('/'+ savedProject._id + '/faq/uploadcsv')
|
343
|
+
.post('/' + savedProject._id + '/faq/uploadcsv')
|
342
344
|
.auth(email, pwd)
|
343
345
|
.set('Content-Type', 'text/csv')
|
344
|
-
.attach('uploadFile',
|
346
|
+
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './example-faqs.csv')), 'example-faqs.csv')
|
345
347
|
.field('id_faq_kb', id_faq_kb)
|
346
348
|
.field('delimiter', ';')
|
347
349
|
// .send({id_faq_kb: id_faq_kb})
|
348
350
|
.end((err, res) => {
|
349
|
-
console.log("err",
|
350
|
-
console.log("res.body",
|
351
|
+
console.log("err", err);
|
352
|
+
console.log("res.body", res.body);
|
351
353
|
res.should.have.status(200);
|
352
354
|
res.body.should.be.a('object');
|
353
|
-
|
355
|
+
|
354
356
|
done();
|
355
357
|
});
|
356
|
-
|
357
|
-
});
|
358
|
-
|
359
|
-
});
|
358
|
+
|
360
359
|
});
|
361
|
-
|
360
|
+
|
361
|
+
});
|
362
362
|
});
|
363
|
-
|
363
|
+
|
364
|
+
});
|
365
|
+
|
366
|
+
|
364
367
|
|
365
368
|
|
366
369
|
|
367
370
|
|
368
371
|
|
369
|
-
|
370
372
|
it('uploadcsvWithLanguage', (done) => {
|
371
373
|
|
372
|
-
|
374
|
+
|
373
375
|
// this.timeout();
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
.post('/'+ savedProject._id + '/faq_kb')
|
376
|
+
|
377
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
378
|
+
var pwd = "pwd";
|
379
|
+
|
380
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
381
|
+
projectService.create("test-uploadcsv", savedUser._id).then(function (savedProject) {
|
382
|
+
|
383
|
+
chai.request(server)
|
384
|
+
.post('/' + savedProject._id + '/faq_kb')
|
383
385
|
.auth(email, pwd)
|
384
|
-
.send({"name":"testbot", type: "internal", language: "it"})
|
386
|
+
.send({ "name": "testbot", type: "internal", language: "it" })
|
385
387
|
.end((err, res) => {
|
386
388
|
//console.log("res", res);
|
387
|
-
console.log("res.body",
|
389
|
+
console.log("res.body", res.body);
|
388
390
|
res.should.have.status(200);
|
389
391
|
res.body.should.be.a('object');
|
390
|
-
expect(res.body.name).to.equal("testbot");
|
391
|
-
expect(res.body.language).to.equal("it");
|
392
|
+
expect(res.body.name).to.equal("testbot");
|
393
|
+
expect(res.body.language).to.equal("it");
|
392
394
|
var id_faq_kb = res.body._id;
|
393
395
|
|
394
396
|
chai.request(server)
|
395
|
-
.post('/'+ savedProject._id + '/faq/uploadcsv')
|
397
|
+
.post('/' + savedProject._id + '/faq/uploadcsv')
|
396
398
|
.auth(email, pwd)
|
397
399
|
.set('Content-Type', 'text/csv')
|
398
|
-
.attach('uploadFile',
|
400
|
+
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './example-faqs.csv')), 'example-faqs.csv')
|
399
401
|
.field('id_faq_kb', id_faq_kb)
|
400
402
|
.field('delimiter', ';')
|
401
403
|
// .send({id_faq_kb: id_faq_kb})
|
402
404
|
.end((err, res) => {
|
403
|
-
console.log("err",
|
404
|
-
console.log("res.body",
|
405
|
+
console.log("err", err);
|
406
|
+
console.log("res.body", res.body);
|
405
407
|
res.should.have.status(200);
|
406
408
|
res.body.should.be.a('object');
|
407
|
-
|
409
|
+
|
408
410
|
done();
|
409
411
|
});
|
410
|
-
|
411
|
-
});
|
412
|
-
|
413
|
-
});
|
412
|
+
|
414
413
|
});
|
415
|
-
|
414
|
+
|
415
|
+
});
|
416
416
|
});
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
417
|
+
|
418
|
+
});
|
421
419
|
|
422
420
|
|
421
|
+
it('searchFaqs', (done) => {
|
423
422
|
|
424
|
-
|
423
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
424
|
+
var pwd = "pwd";
|
425
|
+
|
426
|
+
userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
|
427
|
+
projectService.create("test-search-faqs", savedUser._id).then((savedProject) => {
|
428
|
+
|
429
|
+
chai.request(server)
|
430
|
+
.post('/' + savedProject._id + '/faq_kb')
|
431
|
+
.auth(email, pwd)
|
432
|
+
.send({ "name": "testbot", type: "internal", template: "example" })
|
433
|
+
.end((err, res) => {
|
434
|
+
if (log) {
|
435
|
+
console.log("res.body", res.body);
|
436
|
+
}
|
437
|
+
res.should.have.status(200);
|
438
|
+
res.body.should.be.a('object');
|
439
|
+
expect(res.body.name).to.equal("testbot");
|
440
|
+
var id_faq_kb = res.body._id;
|
441
|
+
|
442
|
+
|
443
|
+
chai.request(server)
|
444
|
+
//.get('/' + savedProject._id + '/faq?id_faq_kb=' + id_faq_kb)
|
445
|
+
.get('/' + savedProject._id + '/faq?id_faq_kb=' + id_faq_kb + "&page=0&limit=25&text=looking")
|
446
|
+
.auth(email, pwd)
|
447
|
+
.end((err, res) => {
|
448
|
+
if (log) {
|
449
|
+
console.log("found these faqs: \n", res.body);
|
450
|
+
}
|
451
|
+
res.should.have.status(200);
|
452
|
+
res.body.should.be.an('array');
|
453
|
+
|
454
|
+
|
455
|
+
done();
|
456
|
+
|
457
|
+
})
|
458
|
+
})
|
459
|
+
})
|
460
|
+
})
|
461
|
+
});
|
462
|
+
|
463
|
+
|
464
|
+
});
|
425
465
|
|
426
466
|
});
|
427
467
|
|
package/test/faqkbRoute.js
CHANGED
@@ -147,7 +147,7 @@ describe('FaqKBRoute', () => {
|
|
147
147
|
let id_faq_kb = res.body._id;
|
148
148
|
|
149
149
|
chai.request(server)
|
150
|
-
.post('/' + currentProject._id + '/faq_kb/fork/' + id_faq_kb + "?public=false&
|
150
|
+
.post('/' + currentProject._id + '/faq_kb/fork/' + id_faq_kb + "?public=false&projectid=" + landingProject._id)
|
151
151
|
.auth(email, pwd)
|
152
152
|
.set('Content-Type', 'application/json')
|
153
153
|
.end((err, res) => {
|
@@ -180,6 +180,9 @@ describe('FaqKBRoute', () => {
|
|
180
180
|
projectService.create("current-project", user1._id).then(function (currentProject) {
|
181
181
|
projectService.create("landing-project", user2._id).then(function (landingProject) {
|
182
182
|
|
183
|
+
console.log("\n[TEST]")
|
184
|
+
console.log("mock: ", chatbot_mock.existing_chatbot_mock);
|
185
|
+
|
183
186
|
class chatbot_service {
|
184
187
|
async getBotById(id, published, api_url, chatbot_templates_api_url, token, project_id) {
|
185
188
|
return chatbot_mock.existing_chatbot_mock;
|