@tiledesk/tiledesk-server 2.4.52 → 2.4.54

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 CHANGED
@@ -5,6 +5,9 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
7
 
8
+ # 2.4.43
9
+ - updated tybot-connector to 0.1.96
10
+ - added segment module
8
11
 
9
12
  # 2.4.42
10
13
  - createIfNotExistsWithLeadId now update the lead email if jwt email changes
package/app.js CHANGED
@@ -112,7 +112,7 @@ var jwtroute = require('./routes/jwt');
112
112
  var key = require('./routes/key');
113
113
  var widgets = require('./routes/widget');
114
114
  var widgetsLoader = require('./routes/widgetLoader');
115
- var openai_kbs = require('./routes/openai_kbs');
115
+ var openai = require('./routes/openai');
116
116
  var kbsettings = require('./routes/kbsettings');
117
117
 
118
118
  // var admin = require('./routes/admin');
@@ -129,6 +129,8 @@ var requestUtilRoot = require('./routes/requestUtilRoot');
129
129
  var urls = require('./routes/urls');
130
130
  var email = require('./routes/email');
131
131
  var property = require('./routes/property');
132
+ var segment = require('./routes/segment');
133
+
132
134
 
133
135
  var bootDataLoader = require('./services/bootDataLoader');
134
136
  var settingDataLoader = require('./services/settingDataLoader');
@@ -550,8 +552,9 @@ app.use('/:projectid/campaigns',[passport.authenticate(['basic', 'jwt'], { sessi
550
552
  app.use('/:projectid/emails',[passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], email);
551
553
 
552
554
  app.use('/:projectid/properties',[passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], property);
555
+ app.use('/:projectid/segments',[passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], segment);
553
556
 
554
- app.use('/:projectid/openai_kbs', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent')], openai_kbs);
557
+ app.use('/:projectid/openai', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent')], openai);
555
558
  app.use('/:projectid/kbsettings', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], kbsettings);
556
559
 
557
560
 
package/docs/api-dev.md CHANGED
@@ -882,4 +882,45 @@ curl -v -X GET -H 'Content-Type:application/json' -H "Authorization: JWT eyJhbGc
882
882
 
883
883
 
884
884
 
885
- curl -v -X POST -H 'Content-Type:application/json' -u andrea.leo@frontiere21.it:258456 https://tiledesk-server-pre.herokuapp.com/chat21/native/auth/createCustomToken
885
+ curl -v -X POST -H 'Content-Type:application/json' -u andrea.leo@frontiere21.it:258456 https://tiledesk-server-pre.herokuapp.com/chat21/native/auth/createCustomToken
886
+
887
+
888
+
889
+
890
+
891
+ curl -v -X POST -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin -d '{"name":"testprj"}' http://localhost:3000/projects
892
+
893
+ curl -v -X POST -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin -d '{ "name":"segment1", "filters": [{"field":"field1","operator":"=","value":"ciao2"}]}' http://localhost:3000/651446eeaf0e4e333f86db6d/segments
894
+
895
+
896
+ curl -v -X POST -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin -d '{"text":"firstText"}' http://localhost:3000/651446eeaf0e4e333f86db6d/requests/req123456999-651446eeaf0e4e333f86db6d/messages
897
+
898
+
899
+ curl -v -X GET -u admin@tiledesk.com:adminadmin http://localhost:3000/651446eeaf0e4e333f86db6d/leads?segment=651448cc39405451f2165a80
900
+
901
+
902
+ number
903
+
904
+ curl -v -X POST -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin -d '{ "name":"segment1", "filters": [{"field":"field1","operator":"=","value":44}]}' http://localhost:3000/651446eeaf0e4e333f86db6d/segments
905
+
906
+ curl -v -X GET -u admin@tiledesk.com:adminadmin http://localhost:3000/651446eeaf0e4e333f86db6d/leads?segment=6515a7e0066727cb94bccd5c
907
+
908
+
909
+
910
+
911
+ sudo systemctl start mongod
912
+
913
+
914
+
915
+
916
+ curl -v -X PUT -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin -d '{ "name":"segment2", "filters": [{"field":"field1","operator":"=","value":"ciao2"}]}' http://localhost:3000/651446eeaf0e4e333f86db6d/segments/6516eb0a11e143e3548b8dd6
917
+
918
+
919
+
920
+ curl -v -X GET -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin http://localhost:3000/651446eeaf0e4e333f86db6d/segments/6516eb0a11e143e3548b8dd6
921
+
922
+
923
+ curl -v -X GET -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin http://localhost:3000/651446eeaf0e4e333f86db6d/segments/
924
+
925
+
926
+ curl -v -X DELETE -H 'Content-Type:application/json' -u admin@tiledesk.com:adminadmin http://localhost:3000/651446eeaf0e4e333f86db6d/segments/6516eb0a11e143e3548b8dd6
package/models/faq.js CHANGED
@@ -7,6 +7,12 @@ const uuidv4 = require('uuid/v4');
7
7
  var defaultFullTextLanguage = process.env.DEFAULT_FULLTEXT_INDEX_LANGUAGE || "none";
8
8
 
9
9
  var FaqSchema = new Schema({
10
+ _id: {
11
+ type: mongoose.Schema.Types.ObjectId,
12
+ index: true,
13
+ required: true,
14
+ auto: true,
15
+ },
10
16
  id_faq_kb: {
11
17
  type: String,
12
18
  index: true
@@ -0,0 +1,67 @@
1
+ var mongoose = require('mongoose');
2
+ var Schema = mongoose.Schema;
3
+ var winston = require('../config/winston');
4
+
5
+
6
+
7
+ var SegmentFilterSchema = new Schema({
8
+ field: { //ex: email
9
+ type: String,
10
+ required: true,
11
+ // index:true
12
+ },
13
+ operator: {
14
+ type: String,
15
+ required: true
16
+ },
17
+ value: { //tidio supports date, tag, dropdown
18
+ //type: String,
19
+ type: Object,
20
+ required: true
21
+ },
22
+ },{ _id : false });
23
+
24
+
25
+ var SegmentSchema = new Schema({
26
+
27
+ name: {
28
+ type: String,
29
+ required: true,
30
+ // index: true
31
+ },
32
+ match: {
33
+ type: String,
34
+ required: true,
35
+ // index:
36
+ default: "all" //or any
37
+ },
38
+ filters: [SegmentFilterSchema],
39
+ id_project: {
40
+ type: String,
41
+ required: true,
42
+ index: true
43
+ },
44
+ status: {
45
+ type: Number,
46
+ default: 100,
47
+ required: true,
48
+ index: true
49
+ },
50
+ createdBy: {
51
+ type: String,
52
+ required: true
53
+ }
54
+ },{
55
+ timestamps: true
56
+ }
57
+ );
58
+
59
+
60
+ var segment = mongoose.model('segment', SegmentSchema);
61
+
62
+ if (process.env.MONGOOSE_SYNCINDEX) {
63
+ segment.syncIndexes();
64
+ winston.info("segment syncIndexes")
65
+ }
66
+
67
+ module.exports = segment;
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.52",
4
+ "version": "2.4.54",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -44,7 +44,7 @@
44
44
  "@tiledesk/tiledesk-kaleyra-proxy": "^0.1.7",
45
45
  "@tiledesk/tiledesk-messenger-connector": "0.1.9",
46
46
  "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
47
- "@tiledesk/tiledesk-tybot-connector": "^0.1.93",
47
+ "@tiledesk/tiledesk-tybot-connector": "^0.1.96",
48
48
  "@tiledesk/tiledesk-whatsapp-connector": "^0.1.51",
49
49
  "amqplib": "^0.5.5",
50
50
  "app-root-path": "^3.0.0",
package/routes/faq.js CHANGED
@@ -147,6 +147,7 @@ router.post('/', function (req, res) {
147
147
  winston.debug('faq_kb ', faq_kb.toJSON());
148
148
 
149
149
  var newFaq = new Faq({
150
+ _id: req.body._id,
150
151
  id_faq_kb: req.body.id_faq_kb,
151
152
  question: req.body.question,
152
153
  answer: req.body.answer,
@@ -203,6 +204,8 @@ router.patch('/:faqid/attributes', function (req, res) {
203
204
  let data = req.body;
204
205
  winston.debug("data: ", data);
205
206
 
207
+ // aggiugnere controllo su intent_id qui
208
+
206
209
  Faq.findById(req.params.faqid, function (err, updatedFaq) {
207
210
  if (err) {
208
211
  winston.error('Find Faq by id ERROR: ', err);
@@ -253,6 +256,7 @@ router.patch('/:faqid/attributes', function (req, res) {
253
256
  router.put('/:faqid', function (req, res) {
254
257
 
255
258
  winston.debug('UPDATE FAQ ', req.body);
259
+ let faqid = req.params.faqid;
256
260
 
257
261
  var update = {};
258
262
 
@@ -296,45 +300,84 @@ router.put('/:faqid', function (req, res) {
296
300
  update.attributes = req.body.attributes;
297
301
  }
298
302
 
299
- Faq.findByIdAndUpdate(req.params.faqid, update, { new: true, upsert: true }, function (err, updatedFaq) {
300
- if (err) {
301
- if (err.code == 11000) {
302
- return res.status(409).send({ success: false, msg: 'Duplicate intent_display_name.' });
303
- } else {
304
- return res.status(500).send({ success: false, msg: 'Error updating object.' });
303
+ if (faqid.startsWith("intentId")) {
304
+ let intent_id = faqid.substring(8);
305
+ Faq.findOneAndUpdate({ intent_id: intent_id }, update, { new: true, upsert: true}, (err, updatedFaq) => {
306
+ if (err) {
307
+ if (err.code == 11000) {
308
+ return res.status(409).send({ success: false, msg: 'Duplicate intent_display_name.' });
309
+ } else {
310
+ return res.status(500).send({ success: false, msg: 'Error updating object.' });
311
+ }
305
312
  }
306
- }
307
313
 
308
- faqBotEvent.emit('faq.update', updatedFaq);
309
- faqBotEvent.emit('faq_train.update', updatedFaq.id_faq_kb);
314
+ faqBotEvent.emit('faq.update', updatedFaq);
315
+ faqBotEvent.emit('faq_train.update', updatedFaq.id_faq_kb);
316
+
317
+ res.status(200).send(updatedFaq);
318
+ })
310
319
 
311
- res.json(updatedFaq);
320
+ } else {
321
+ Faq.findByIdAndUpdate(req.params.faqid, update, { new: true, upsert: true }, function (err, updatedFaq) {
322
+ if (err) {
323
+ if (err.code == 11000) {
324
+ return res.status(409).send({ success: false, msg: 'Duplicate intent_display_name.' });
325
+ } else {
326
+ return res.status(500).send({ success: false, msg: 'Error updating object.' });
327
+ }
328
+ }
329
+
330
+ faqBotEvent.emit('faq.update', updatedFaq);
331
+ faqBotEvent.emit('faq_train.update', updatedFaq.id_faq_kb);
332
+
333
+ res.status(200).send(updatedFaq);
334
+ // updateRemoteFaq(updatedFaq)
335
+ });
336
+ }
312
337
 
313
- // updateRemoteFaq(updatedFaq)
314
- });
315
338
  });
316
339
 
317
340
 
318
341
  // DELETE REMOTE AND LOCAL FAQ
319
342
  router.delete('/:faqid', function (req, res) {
320
343
 
321
- // deleteRemoteFaq(req.params.faqid)
322
344
  winston.debug('DELETE FAQ - FAQ ID ', req.params.faqid);
323
345
 
324
- Faq.findByIdAndRemove({ _id: req.params.faqid }, function (err, faq) {
325
- if (err) {
326
- return res.status(500).send({ success: false, msg: 'Error deleting object.' });
327
- }
328
- winston.debug('Deleted FAQ ', faq);
329
-
330
- faqBotEvent.emit('faq.delete', faq);
331
- faqBotEvent.emit('faq_train.delete', faq.id_faq_kb);
346
+ let faqid = req.params.faqid;
347
+
348
+ if (faqid.startsWith("intentId")) {
349
+ console.log("faqid is an intent_id")
350
+ let intent_id = faqid.substring(8);
351
+ console.log("faq intent_id: ", intent_id);
332
352
 
333
- res.json(faq);
353
+ Faq.findOneAndDelete({ intent_id: intent_id }, (err, faq) => {
354
+ if (err) {
355
+ return res.status(500).send({ success: false, msg: "Error deleting object." });
356
+ }
334
357
 
335
- });
358
+ winston.debug('Deleted FAQ ', faq);
359
+
360
+ faqBotEvent.emit('faq.delete', faq);
361
+ faqBotEvent.emit('faq_train.delete', faq.id_faq_kb);
362
+
363
+ res.status(200).send(faq);
336
364
 
365
+ })
337
366
 
367
+ } else {
368
+ Faq.findByIdAndRemove({ _id: req.params.faqid }, function (err, faq) {
369
+ if (err) {
370
+ return res.status(500).send({ success: false, msg: 'Error deleting object.' });
371
+ }
372
+ winston.debug('Deleted FAQ ', faq);
373
+
374
+ faqBotEvent.emit('faq.delete', faq);
375
+ faqBotEvent.emit('faq_train.delete', faq.id_faq_kb);
376
+
377
+ res.status(200).send(faq);
378
+
379
+ });
380
+ }
338
381
  });
339
382
 
340
383
  // EXPORT FAQ TO CSV
package/routes/faq_kb.js CHANGED
@@ -639,6 +639,7 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), async (req, r
639
639
 
640
640
  winston.debug("json source " + json_string)
641
641
 
642
+ // intentOnly still existing?
642
643
  if (req.query.intentsOnly && req.query.intentsOnly == "true") {
643
644
 
644
645
  winston.debug("intents only")
@@ -658,7 +659,8 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), async (req, r
658
659
  enabled: intent.enabled,
659
660
  webhook_enabled: intent.webhook_enabled,
660
661
  language: intent.language,
661
- actions: intent.actions
662
+ actions: intent.actions,
663
+ attributes: intent.attributes
662
664
  }
663
665
 
664
666
  // overwrite duplicated intents
@@ -746,7 +748,8 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), async (req, r
746
748
  enabled: intent.enabled,
747
749
  webhook_enabled: intent.webhook_enabled,
748
750
  language: intent.language,
749
- actions: intent.actions
751
+ actions: intent.actions,
752
+ attributes: intent.attributes
750
753
  }
751
754
 
752
755
  // TO DELETE: no used when req.query.create = 'true'
@@ -869,7 +872,8 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), async (req, r
869
872
  enabled: intent.enabled,
870
873
  webhook_enabled: intent.webhook_enabled,
871
874
  language: intent.language,
872
- actions: intent.actions
875
+ actions: intent.actions,
876
+ attributes: intent.attributes
873
877
  }
874
878
 
875
879
  // overwrite duplicated intents
@@ -3,6 +3,7 @@ var KBSettings = require('../models/kb_setting');
3
3
  // var KB = require('../models/kb_setting')
4
4
  var router = express.Router();
5
5
  var winston = require('../config/winston');
6
+ const openaiService = require('../services/openaiService');
6
7
 
7
8
  router.get('/', async (req, res) => {
8
9
  let project_id = req.projectid;
@@ -54,35 +55,6 @@ router.post('/', async (req, res) => {
54
55
  })
55
56
  })
56
57
 
57
- router.post('/:settings_id', async (req, res) => {
58
-
59
- let settings_id = req.params.settings_id;
60
- let body = req.body;
61
-
62
- KBSettings.findById(settings_id, (err, settings) => {
63
- if (err) {
64
- winston.error("find knoledge base error: ", err);
65
- return res.status(500).send({ success: false, error: err});
66
- } else {
67
-
68
- let new_kb = {
69
- name: body.name,
70
- url: body.url
71
- }
72
- settings.kbs.push(new_kb);
73
-
74
- KBSettings.findByIdAndUpdate( settings_id, settings, { new: true }, (err, savedSettings) => {
75
- if (err) {
76
- winston.err("findByIdAndUpdate error: ", err);
77
- res.status(500).send({ success: false, error: err });
78
- } else {
79
- res.status(200).send(savedSettings);
80
- }
81
- })
82
- }
83
- })
84
- })
85
-
86
58
  router.put('/:settings_id', async (req, res) => {
87
59
 
88
60
  let settings_id = req.params.settings_id;
@@ -123,6 +95,81 @@ router.delete('/:settings_id/:kb_id', async (req, res) => {
123
95
  res.status(200).send(settings);
124
96
  }
125
97
  })
98
+
99
+ })
100
+
101
+
102
+ // PROXY PUGLIA AI - START
103
+ router.post('/qa', async (req, res) => {
104
+ let data = req.body;
105
+ console.log("data: ", data);
106
+
107
+ openaiService.ask(data).then((resp) => {
108
+ // console.log("qa resp: ", resp.data);
109
+ res.status(200).send(resp.data);
110
+ }).catch((err) => {
111
+ winston.error("qa err: ", err);
112
+ res.status(500).send(err);
113
+ })
114
+ })
115
+
116
+ router.post('/startscrape', async (req, res) => {
117
+
118
+ let data = req.body;
119
+ console.log("data: ", data);
120
+
121
+ openaiService.startScrape(data).then((resp) => {
122
+ // console.log("startScrape resp: ", resp.data);
123
+ res.status(200).send(resp.data);
124
+ }).catch((err) => {
125
+ winston.error("startScrape err: ", err);
126
+ res.status(500).send(err);
127
+ })
128
+ })
129
+
130
+
131
+ router.post('/checkstatus', async (req, res) => {
132
+
133
+ let data = req.body;
134
+ console.log("data: ", data);
135
+
136
+ openaiService.checkStatus(data).then((resp) => {
137
+ // console.log("checkStatus resp: ", resp.data);
138
+ res.status(200).send(resp.data);
139
+ }).catch((err) => {
140
+ winston.error("checkStatus err: ", err);
141
+ res.status(500).send(err);
142
+ })
143
+ })
144
+ // PROXY PUGLIA AI - END
145
+
146
+ router.post('/:settings_id', async (req, res) => {
147
+
148
+ let settings_id = req.params.settings_id;
149
+ let body = req.body;
150
+
151
+ KBSettings.findById(settings_id, (err, settings) => {
152
+ if (err) {
153
+ winston.error("find knoledge base error: ", err);
154
+ return res.status(500).send({ success: false, error: err});
155
+ } else {
156
+
157
+ let new_kb = {
158
+ name: body.name,
159
+ url: body.url
160
+ }
161
+ settings.kbs.push(new_kb);
162
+
163
+ KBSettings.findByIdAndUpdate( settings_id, settings, { new: true }, (err, savedSettings) => {
164
+ if (err) {
165
+ winston.err("findByIdAndUpdate error: ", err);
166
+ res.status(500).send({ success: false, error: err });
167
+ } else {
168
+ res.status(200).send(savedSettings);
169
+ }
170
+ })
171
+ }
172
+ })
126
173
  })
127
174
 
128
175
  module.exports = router;
package/routes/lead.js CHANGED
@@ -7,6 +7,8 @@ var leadService = require("../services/leadService");
7
7
  csv = require('csv-express');
8
8
  csv.separator = ';';
9
9
  const leadEvent = require('../event/leadEvent');
10
+ var Segment = require("../models/segment");
11
+ var Segment2MongoConverter = require("../utils/segment2mongoConverter");
10
12
 
11
13
 
12
14
  router.post('/', function (req, res) {
@@ -388,7 +390,7 @@ router.get('/:leadid', function (req, res) {
388
390
  });
389
391
 
390
392
 
391
- router.get('/', function (req, res) {
393
+ router.get('/', async(req, res) => {
392
394
 
393
395
  var limit = 40; // Number of request per page
394
396
 
@@ -407,7 +409,7 @@ router.get('/', function (req, res) {
407
409
  winston.debug('LEAD ROUTE - SKIP PAGE ', skip);
408
410
 
409
411
 
410
- var query = { "id_project": req.projectid, "status": LeadConstants.NORMAL};
412
+ var query = {};
411
413
 
412
414
  if (req.query.full_text) {
413
415
  winston.debug('LEAD ROUTE req.query.fulltext', req.query.full_text);
@@ -440,6 +442,24 @@ router.get('/', function (req, res) {
440
442
  query["tags"] = req.query.tags;
441
443
  }
442
444
 
445
+
446
+ if (req.query.segment) {
447
+ let segment = await Segment.findOne({id_project: req.projectid, _id: req.query.segment }).exec();
448
+ if (!segment) {
449
+ return res.status(404).send({ success: false, msg: 'Error segment not found' });
450
+ }
451
+ Segment2MongoConverter.convert(query, segment);
452
+ }
453
+
454
+
455
+
456
+ // last query modifier
457
+ query["id_project"] = req.projectid;
458
+ query["status"] = LeadConstants.NORMAL;
459
+
460
+ winston.debug("query", query);
461
+
462
+
443
463
  var direction = -1; //-1 descending , 1 ascending
444
464
  if (req.query.direction) {
445
465
  direction = req.query.direction;
@@ -0,0 +1,112 @@
1
+ var express = require('express');
2
+ var router = express.Router();
3
+ var KBSettings = require('../models/kb_setting');
4
+ var openaiService = require('../services/openaiService');
5
+ var winston = require('../config/winston');
6
+
7
+ router.post('/', async (req, res) => {
8
+
9
+ let project_id = req.projectid;
10
+ let body = req.body;
11
+
12
+ console.log("### --> body: ", body);
13
+
14
+ KBSettings.findOne({ id_project: project_id }, (err, kbSettings) => {
15
+ console.log("kbSettings: ", kbSettings);
16
+
17
+ if (!kbSettings) {
18
+ return res.status(400).send({ success: false, message: "Missing gptkey parameter (settings not exist)" })
19
+ }
20
+
21
+ let gptkey = kbSettings.gptkey;
22
+
23
+ if (!gptkey) {
24
+ return res.status(400).send({ success: false, message: "Missing gptkey parameter" })
25
+ }
26
+
27
+ // attua modifiche
28
+ let json = {
29
+ "model": body.model,
30
+ "messages": [
31
+ {
32
+ "role": "user",
33
+ "content": body.question
34
+ }
35
+ ],
36
+ "max_tokens": body.max_tokens,
37
+ "temperature": body.temperature
38
+ }
39
+
40
+ let message = { role: "", content: "" };
41
+ if (body.context) {
42
+ message.role = "system";
43
+ message.content = body.context;
44
+ json.messages.unshift(message);
45
+ }
46
+ console.log("openai preview --> json: ", json);
47
+
48
+ openaiService.completions(json, gptkey).then((response) => {
49
+ // winston.debug("completions response: ", response);
50
+ res.status(200).send(response.data);
51
+ }).catch((err) => {
52
+ console.log("err: ", err);
53
+ // winston.error("completions error: ", err);
54
+ res.status(500).send(err)
55
+ })
56
+
57
+ })
58
+ })
59
+
60
+ // router.get('/', async (req, res) => {
61
+
62
+ // let project_id = req.projectid;
63
+
64
+ // OpenaiKbs.find({ id_project: project_id }, (err, kbs) => {
65
+ // if (err) {
66
+ // console.error("find all kbs error: ", err);
67
+ // return res.status(500).send({ success: false, error: err });
68
+ // } else {
69
+ // return res.status(200).send(kbs);
70
+ // }
71
+ // })
72
+ // })
73
+
74
+ // router.post('/', async (req, res) => {
75
+
76
+ // let body = req.body;
77
+
78
+ // let new_kbs = new OpenaiKbs({
79
+ // name: body.name,
80
+ // url: body.url,
81
+ // id_project: req.projectid,
82
+ // gptkey: req.body.gptkey
83
+ // })
84
+
85
+ // new_kbs.save(function (err, savedKbs) {
86
+ // if (err) {
87
+ // console.error("save new kbs error: ", err);
88
+ // return res.status(500).send({ success: false, error: err});
89
+ // } else {
90
+ // return res.status(200).send(savedKbs);
91
+ // }
92
+ // })
93
+ // })
94
+
95
+ // router.put('/', async (req, res) => {
96
+ // // to be implemented
97
+ // })
98
+
99
+ // router.delete('/:kbs_id', async (req, res) => {
100
+ // let kbs_id = req.params.kbs_id;
101
+
102
+ // OpenaiKbs.findOneAndDelete( { _id: kbs_id }, (err, kbDeleted) => {
103
+ // if (err) {
104
+ // console.error("find one and delete kbs error: ", err);
105
+ // return res.status(500).send({ success: false, error: err});
106
+ // } else {
107
+ // return res.status(200).send({ success: true, message: 'Knowledge Base deleted successfully', openai_kb: kbDeleted });
108
+ // }
109
+ // })
110
+ // })
111
+
112
+ module.exports = router;