@tiledesk/tiledesk-tybot-connector 0.2.148 → 0.2.149-rc2

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
@@ -17,6 +17,9 @@ available on:
17
17
  - Added flowError on JSONCondition when result = null
18
18
  - Added fix on Filler -->
19
19
 
20
+ # v0.2.149
21
+ - bug-fixed: botid null or undefined while calling /ext/:boid
22
+
20
23
  # v0.2.148
21
24
  - bug-fixed: namespace is undefined and "engine" property if noIntent is not specified
22
25
 
package/index.js CHANGED
@@ -37,14 +37,18 @@ let TILEBOT_ENDPOINT = null;
37
37
  let staticBots;
38
38
 
39
39
  router.post('/ext/:botid', async (req, res) => {
40
+ const botId = req.params.botid;
41
+ if (log) {console.log("(tybotRoute) POST /ext/:botid called: ", botId);}
42
+ if(!botId || botId === "null" || botId === "undefined"){
43
+ return res.status(400).send({"success": false, error: "Required parameters botid not found. Value is 'null' or 'undefined'"})
44
+ }
45
+
40
46
  if (req && req.body && req.body.payload && req.body.payload.request && req.body.payload.request.snapshot) {
41
47
  delete req.body.payload.request.snapshot;
42
48
  console.log("Removed req.body.payload.request.snapshot field");
43
49
  }
44
50
  if (log) {console.log("REQUEST BODY:", JSON.stringify(req.body));}
45
51
 
46
- const botId = req.params.botid;
47
- if (log) {console.log(" :", botId);}
48
52
  const message = req.body.payload;
49
53
  const messageId = message._id;
50
54
  //const faq_kb = req.body.hook; now it is "bot"
@@ -111,19 +115,23 @@ router.post('/ext/:botid', async (req, res) => {
111
115
  }
112
116
 
113
117
  // get the bot metadata
114
- let bot = null;
115
- try {
116
- // bot = await botsDS.getBotById(botId);
117
- // bot = await botById(botId, projectId, tdcache, botsDS);
118
- bot = await botsDS.getBotByIdCache(botId, tdcache);
119
- // console.log("getBotByIdCache ---> bot: ", JSON.stringify(bot, null, 2))
120
- }
121
- catch(error) {
122
- console.error("Error getting botId:", botId);
123
- console.error("Error getting bot was:", error);
118
+ let bot = await botsDS.getBotByIdCache(botId, tdcache).catch((err)=> {
119
+ Promise.reject(err);
124
120
  return;
125
- }
126
- if (log) {console.log("bot found:", JSON.stringify(bot));}
121
+ });
122
+ // let bot = null;
123
+ // try {
124
+ // // bot = await botsDS.getBotById(botId);
125
+ // // bot = await botById(botId, projectId, tdcache, botsDS);
126
+ // bot = await botsDS.getBotByIdCache(botId, tdcache);
127
+ // // console.log("getBotByIdCache ---> bot: ", JSON.stringify(bot, null, 2))
128
+ // }
129
+ // catch(error) {
130
+ // console.error("Error getting botId:", botId);
131
+ // console.error("Error getting bot was:", error);
132
+ // return;
133
+ // }
134
+ // if (log) {console.log("bot found:", JSON.stringify(bot));}
127
135
 
128
136
  let intentsMachine;
129
137
  let backupMachine;
package/logs/app.log ADDED
@@ -0,0 +1,275 @@
1
+ error: uncaughtException: listen EADDRINUSE: address already in use 0.0.0.0:10002
2
+ Error: listen EADDRINUSE: address already in use 0.0.0.0:10002
3
+ at Server.setupListenHandle [as _listen2] (node:net:1463:16)
4
+ at listenInCluster (node:net:1511:12)
5
+ at doListen (node:net:1660:7)
6
+ at processTicksAndRejections (node:internal/process/task_queues:84:21) {"date":"Wed Feb 05 2025 17:52:36 GMT+0100 (Ora standard dell’Europa centrale)","error":{"address":"0.0.0.0","code":"EADDRINUSE","errno":-48,"port":10002,"syscall":"listen"},"exception":true,"os":{"loadavg":[2.41455078125,2.27490234375,2.37451171875],"uptime":2439324},"process":{"argv":["/Users/gabriele95/.nvm/versions/node/v16.19.0/bin/node","/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute/node_modules/.bin/mocha","./test/conversation-gpt_task_test.js","--exit"],"cwd":"/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute","execPath":"/Users/gabriele95/.nvm/versions/node/v16.19.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":18382421,"external":19502628,"heapTotal":81641472,"heapUsed":34876360,"rss":126107648},"pid":7071,"uid":501,"version":"v16.19.0"},"stack":"Error: listen EADDRINUSE: address already in use 0.0.0.0:10002\n at Server.setupListenHandle [as _listen2] (node:net:1463:16)\n at listenInCluster (node:net:1511:12)\n at doListen (node:net:1660:7)\n at processTicksAndRejections (node:internal/process/task_queues:84:21)","trace":[{"column":16,"file":"node:net","function":"Server.setupListenHandle [as _listen2]","line":1463,"method":"setupListenHandle [as _listen2]","native":false},{"column":12,"file":"node:net","function":"listenInCluster","line":1511,"method":null,"native":false},{"column":7,"file":"node:net","function":"doListen","line":1660,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":84,"method":null,"native":false}]}
7
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task_no_condition","type":"text"},"token":"XXX"}
8
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task_response_format_json_object","type":"text"},"token":"XXX"}
9
+ info: REQUEST BODY: {"payload":{"_id":"f22ad0a9-9a3f-4f79-aa18-1008f7939a26","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
10
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task_response_format_none","type":"text"},"token":"XXX"}
11
+ info: REQUEST BODY: {"payload":{"_id":"64257e1b-8003-4b3b-8224-375baf30af23","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
12
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpttask_no_condition_json","type":"text"},"token":"XXX"}
13
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpttask_no_condition_mixed_json","type":"text"},"token":"XXX"}
14
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task","type":"text"},"token":"XXX"}
15
+ info: REQUEST BODY: {"payload":{"_id":"c02eb5e7-8f95-4ff6-a32b-37d4d24f747b","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
16
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task","type":"text"},"token":"XXX"}
17
+ info: REQUEST BODY: {"payload":{"_id":"cc2da616-03ea-4073-93f6-b38de623c5f1","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
18
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task","type":"text"},"token":"XXX"}
19
+ info: REQUEST BODY: {"payload":{"_id":"204d35fd-1c14-48c5-8a21-d06e5d8eb25b","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
20
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task_quote_exceeded","type":"text"},"token":"XXX"}
21
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task","type":"text"},"token":"XXX"}
22
+ info: REQUEST BODY: {"payload":{"_id":"1f7a65ce-f9fa-4c78-b5cb-e4f046557c79","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
23
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task","type":"text"},"token":"XXX"}
24
+ info: REQUEST BODY: {"payload":{"_id":"f04273d6-2621-4b0e-8614-aca19658c50f","id_project":"projectID","recipient":"support-group-projectID-308a0452525544be800dbee8e163c280","request":{"id_project":"projectID","request_id":"support-group-projectID-308a0452525544be800dbee8e163c280"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
25
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-665fd8cd267f407d90e97345c3e45395","request":{"request_id":"support-group-projectID-665fd8cd267f407d90e97345c3e45395"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task_no_question","type":"text"},"token":"XXX"}
26
+ info: REQUEST BODY: {"payload":{"_id":"5aaeb107-8fb9-4002-9daa-ed3c8cad680a","id_project":"projectID","recipient":"support-group-projectID-665fd8cd267f407d90e97345c3e45395","request":{"id_project":"projectID","request_id":"support-group-projectID-665fd8cd267f407d90e97345c3e45395"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
27
+ info: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-8f617e9ff5604c63b2e90e876130ad44","request":{"request_id":"support-group-projectID-8f617e9ff5604c63b2e90e876130ad44"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_task_axios_error","type":"text"},"token":"XXX"}
28
+ info: REQUEST BODY: {"payload":{"_id":"3e134629-7fc1-4e1c-8784-e77035293e7d","id_project":"projectID","recipient":"support-group-projectID-8f617e9ff5604c63b2e90e876130ad44","request":{"id_project":"projectID","request_id":"support-group-projectID-8f617e9ff5604c63b2e90e876130ad44"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
29
+ error: uncaughtException: listen EADDRINUSE: address already in use 0.0.0.0:10002
30
+ Error: listen EADDRINUSE: address already in use 0.0.0.0:10002
31
+ at Server.setupListenHandle [as _listen2] (node:net:1463:16)
32
+ at listenInCluster (node:net:1511:12)
33
+ at doListen (node:net:1660:7)
34
+ at processTicksAndRejections (node:internal/process/task_queues:84:21) {"date":"Fri Feb 07 2025 15:43:39 GMT+0100 (Ora standard dell’Europa centrale)","error":{"address":"0.0.0.0","code":"EADDRINUSE","errno":-48,"port":10002,"syscall":"listen"},"exception":true,"os":{"loadavg":[2.685546875,4.17041015625,4.92236328125],"uptime":2604387},"process":{"argv":["/Users/gabriele95/.nvm/versions/node/v16.19.0/bin/node","/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute/node_modules/.bin/mocha","./test/conversation-actions-test.js_","--exit"],"cwd":"/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute","execPath":"/Users/gabriele95/.nvm/versions/node/v16.19.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":18384426,"external":19542499,"heapTotal":84787200,"heapUsed":35846640,"rss":122634240},"pid":27458,"uid":501,"version":"v16.19.0"},"stack":"Error: listen EADDRINUSE: address already in use 0.0.0.0:10002\n at Server.setupListenHandle [as _listen2] (node:net:1463:16)\n at listenInCluster (node:net:1511:12)\n at doListen (node:net:1660:7)\n at processTicksAndRejections (node:internal/process/task_queues:84:21)","trace":[{"column":16,"file":"node:net","function":"Server.setupListenHandle [as _listen2]","line":1463,"method":"setupListenHandle [as _listen2]","native":false},{"column":12,"file":"node:net","function":"listenInCluster","line":1511,"method":null,"native":false},{"column":7,"file":"node:net","function":"doListen","line":1660,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":84,"method":null,"native":false}]}
35
+ verbose: [index.js] POST /ext/:botid called: botID
36
+ verbose: [index.js] POST /ext/:botid called: botID
37
+ verbose: [index.js] POST /ext/:botid called: botID
38
+ verbose: [index.js] POST /ext/:botid called: botID
39
+ verbose: [index.js] POST /ext/:botid called: botID
40
+ verbose: [index.js] POST /ext/:botid called: botID
41
+ verbose: [index.js] POST /ext/:botid called: botID
42
+ verbose: [index.js] POST /ext/:botid called: botID
43
+ verbose: [index.js] POST /ext/:botid called: botID
44
+ verbose: [index.js] POST /ext/:botid called: botID
45
+ verbose: [index.js] POST /ext/:botid called: botID
46
+ verbose: [index.js] POST /ext/:botid called: botID
47
+ verbose: [index.js] POST /ext/:botid called: botID
48
+ verbose: [index.js] POST /ext/:botid called: botID
49
+ verbose: [index.js] POST /ext/:botid called: botID
50
+ verbose: [index.js] POST /ext/:botid called: botID
51
+ verbose: [index.js] POST /ext/:botid called: botID
52
+ verbose: [index.js] POST /ext/:botid called: botID
53
+ verbose: [index.js] POST /ext/:botid called: botID
54
+ verbose: [index.js] POST /ext/:botid called: botID
55
+ verbose: [index.js] POST /ext/:botid called: botID
56
+ verbose: [index.js] POST /ext/:botid called: botID
57
+ verbose: [index.js] POST /ext/:botid called: botID
58
+ verbose: [index.js] POST /ext/:botid called: botID
59
+ verbose: [index.js] POST /ext/:botid called: botID
60
+ verbose: [index.js] POST /ext/:botid called: botID
61
+ verbose: [index.js] POST /ext/:botid called: botID
62
+ verbose: [index.js] POST /ext/:botid called: botID
63
+ verbose: [index.js] POST /ext/:botid called: botID
64
+ verbose: [index.js] POST /ext/:botid called: botID
65
+ verbose: [index.js] POST /ext/:botid called: botID
66
+ verbose: [index.js] POST /ext/:botid called: botID
67
+ verbose: [index.js] POST /ext/:botid called: botID
68
+ verbose: [index.js] POST /ext/:botid called: botID
69
+ verbose: [index.js] POST /ext/:botid called: botID
70
+ verbose: [index.js] POST /ext/:botid called: botID
71
+ verbose: [index.js] POST /ext/:botid called: botID
72
+ verbose: [index.js] POST /ext/:botid called: botID
73
+ verbose: [index.js] POST /ext/:botid called: botID
74
+ verbose: [index.js] POST /ext/:botid called: botID
75
+ verbose: [index.js] POST /ext/:botid called: botID
76
+ verbose: [index.js] POST /ext/:botid called: botID
77
+ verbose: [index.js] POST /ext/:botid called: botID
78
+ verbose: [index.js] POST /ext/:botid called: botID
79
+ verbose: [index.js] POST /ext/:botid called: botID
80
+ verbose: [index.js] POST /ext/:botid called: botID
81
+ verbose: [index.js] POST /ext/:botid called: botID
82
+ verbose: [index.js] POST /ext/:botid called: botID
83
+ verbose: [index.js] POST /ext/:botid called: botID
84
+ verbose: [index.js] POST /ext/:botid called: botID
85
+ verbose: [index.js] POST /ext/:botid called: botID
86
+ verbose: [index.js] POST /ext/:botid called: botID
87
+ verbose: [index.js] POST /ext/:botid called: botID
88
+ verbose: [index.js] POST /ext/:botid called: botID
89
+ verbose: [index.js] POST /ext/:botid called: botID
90
+ verbose: [index.js] POST /ext/:botid called: botID
91
+ verbose: [index.js] POST /ext/:botid called: botID
92
+ verbose: [index.js] POST /ext/:botid called: botID
93
+ verbose: [index.js] POST /ext/:botid called: botID
94
+ verbose: [index.js] POST /ext/:botid called: botID
95
+ verbose: [index.js] POST /ext/:botid called: botID
96
+ verbose: [index.js] POST /ext/:botid called: botID
97
+ verbose: [index.js] POST /ext/:botid called: botID
98
+ verbose: [index.js] POST /ext/:botid called: botID
99
+ verbose: [index.js] POST /ext/:botid called: botID
100
+ verbose: [index.js] POST /ext/:botid called: botID
101
+ verbose: [index.js] POST /ext/:botid called: botID
102
+ verbose: [index.js] POST /ext/:botid called: botID
103
+ verbose: [index.js] POST /ext/:botid called: botID
104
+ verbose: [index.js] POST /ext/:botid called: botID
105
+ verbose: [index.js] POST /ext/:botid called: botID
106
+ verbose: [index.js] POST /ext/:botid called: botID
107
+ verbose: [index.js] POST /ext/:botid called: botID
108
+ verbose: [index.js] POST /ext/:botid called: botID
109
+ verbose: [index.js] POST /ext/:botid called: botID
110
+ verbose: [index.js] POST /ext/:botid called: botID
111
+ verbose: [index.js] POST /ext/:botid called: botID
112
+ verbose: [index.js] POST /ext/:botid called: botID
113
+ verbose: [index.js] POST /ext/:botid called: botID
114
+ verbose: [index.js] POST /ext/:botid called: botID
115
+ verbose: [index.js] POST /ext/:botid called: botID
116
+ verbose: [index.js] POST /ext/:botid called: botID
117
+ verbose: [index.js] POST /ext/:botid called: botID
118
+ verbose: [index.js] POST /ext/:botid called: botID
119
+ error: uncaughtException: botId is not defined
120
+ ReferenceError: botId is not defined
121
+ at Server.<anonymous> (/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute/test/conversation-ext_test.js:74:19)
122
+ at Object.onceWrapper (node:events:627:28)
123
+ at Server.emit (node:events:513:28)
124
+ at emitListeningNT (node:net:1497:10)
125
+ at processTicksAndRejections (node:internal/process/task_queues:82:21) {"date":"Fri Feb 07 2025 15:56:22 GMT+0100 (Ora standard dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[2.4521484375,3.34228515625,3.978515625],"uptime":2605150},"process":{"argv":["/Users/gabriele95/.nvm/versions/node/v16.19.0/bin/node","/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute/node_modules/.bin/mocha","./test/conversation-ext_test.js","--exit"],"cwd":"/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute","execPath":"/Users/gabriele95/.nvm/versions/node/v16.19.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":18287121,"external":19292590,"heapTotal":83214336,"heapUsed":33766376,"rss":127762432},"pid":35570,"uid":501,"version":"v16.19.0"},"stack":"ReferenceError: botId is not defined\n at Server.<anonymous> (/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute/test/conversation-ext_test.js:74:19)\n at Object.onceWrapper (node:events:627:28)\n at Server.emit (node:events:513:28)\n at emitListeningNT (node:net:1497:10)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","trace":[{"column":19,"file":"/Users/gabriele95/Desktop/Tiledesk/tiledesk-chatbot/tybotRoute/test/conversation-ext_test.js","function":null,"line":74,"method":null,"native":false},{"column":28,"file":"node:events","function":"Object.onceWrapper","line":627,"method":"onceWrapper","native":false},{"column":28,"file":"node:events","function":"Server.emit","line":513,"method":"emit","native":false},{"column":10,"file":"node:net","function":"emitListeningNT","line":1497,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":82,"method":null,"native":false}]}
126
+ verbose: [index.js] POST /ext/:botid called: null
127
+ verbose: [index.js] POST /ext/:botid called: null
128
+ verbose: [index.js] POST /ext/:botid called: null
129
+ verbose: [index.js] POST /ext/:botid called: null
130
+ verbose: [index.js] POST /ext/:botid called: null
131
+ verbose: [index.js] POST /ext/:botid called: null
132
+ verbose: [index.js] POST /ext/:botid called: null
133
+ verbose: REQUEST BODY:
134
+ verbose: [index.js] POST /ext/:botid called: null
135
+ verbose: REQUEST BODY:
136
+ verbose: [index.js] POST /ext/:botid called: botID
137
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success{\"last_user_message\":\"come ti chiami\"}","type":"text"},"token":"XXX"}
138
+ verbose: [index.js] POST /ext/:botid called: botID
139
+ verbose: REQUEST BODY: {"payload":{"_id":"202bc605-b926-4155-a44e-20adf62a3b3c","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
140
+ verbose: [index.js] POST /ext/:botid called: botID
141
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success_custom_context{\"last_user_message\":\"come ti chiami\", \"custom_context\":\"sei un assistente fantastico\"}","type":"text"},"token":"XXX"}
142
+ verbose: [index.js] POST /ext/:botid called: botID
143
+ verbose: REQUEST BODY: {"payload":{"_id":"0b4aa10e-b3d1-497e-ba21-7d5aac462112","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
144
+ verbose: [index.js] POST /ext/:botid called: botID
145
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success_advanced_context{\"last_user_message\":\"come ti chiami\", \"custom_context\":\"sei un assistente fantastico\"}","type":"text"},"token":"XXX"}
146
+ verbose: [index.js] POST /ext/:botid called: botID
147
+ verbose: REQUEST BODY: {"payload":{"_id":"c0e28dfb-fe9b-41fb-8b1e-19212f463f2e","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
148
+ verbose: [index.js] POST /ext/:botid called: botID
149
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success_namespace_as_name{\"last_user_message\":\"come ti chiami\", \"custom_context\":\"sei un assistente fantastico\"}","type":"text"},"token":"XXX"}
150
+ verbose: [index.js] POST /ext/:botid called: botID
151
+ verbose: REQUEST BODY: {"payload":{"_id":"33867bea-4a9e-4254-a260-9131da1c9ee8","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
152
+ verbose: [index.js] POST /ext/:botid called: botID
153
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success_namespace_as_name_custom_attribute{\"last_user_message\":\"come ti chiami\", \"custom_context\":\"sei un assistente fantastico\", \"ns_name\": \"Namespace\" }","type":"text"},"token":"XXX"}
154
+ verbose: [index.js] POST /ext/:botid called: botID
155
+ verbose: REQUEST BODY: {"payload":{"_id":"8344f4d1-ed09-4be9-bd74-bccb1daa2403","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
156
+ verbose: [index.js] POST /ext/:botid called: botID
157
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success_citations_on{\"last_user_message\":\"come ti chiami\"}","type":"text"},"token":"XXX"}
158
+ verbose: [index.js] POST /ext/:botid called: botID
159
+ verbose: REQUEST BODY: {"payload":{"_id":"3f6ae876-0c9c-4bf9-9e53-57e25c1ea1f5","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
160
+ verbose: [index.js] POST /ext/:botid called: botID
161
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_success{\"last_user_message\":\"come ti chiami\"}","type":"text"},"token":"XXX"}
162
+ verbose: [index.js] POST /ext/:botid called: botID
163
+ verbose: REQUEST BODY: {"payload":{"_id":"6ca69c1e-25a8-492e-938f-1cf9f58ef008","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#SUCCESS","type":"text"},"token":"XXX"}
164
+ verbose: [index.js] POST /ext/:botid called: botID
165
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail","type":"text"},"token":"XXX"}
166
+ verbose: [index.js] POST /ext/:botid called: botID
167
+ verbose: REQUEST BODY: {"payload":{"_id":"05423f09-f024-40e9-bed1-48bdc7fe2352","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
168
+ verbose: [index.js] POST /ext/:botid called: botID
169
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail","type":"text"},"token":"XXX"}
170
+ verbose: [index.js] POST /ext/:botid called: botID
171
+ verbose: REQUEST BODY: {"payload":{"_id":"1e0de672-3ca2-48ae-a122-bbed8e19e7b4","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
172
+ verbose: [index.js] POST /ext/:botid called: botID
173
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail","type":"text"},"token":"XXX"}
174
+ verbose: [index.js] POST /ext/:botid called: botID
175
+ verbose: REQUEST BODY: {"payload":{"_id":"1570902c-bc8f-4875-a702-e3b21c2e3282","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
176
+ verbose: [index.js] POST /ext/:botid called: botID
177
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail","type":"text"},"token":"XXX"}
178
+ verbose: [index.js] POST /ext/:botid called: botID
179
+ verbose: REQUEST BODY: {"payload":{"_id":"24dcb146-3d99-494a-857c-9c8496f65c0e","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
180
+ verbose: [index.js] POST /ext/:botid called: botID
181
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail_noquestion","type":"text"},"token":"XXX"}
182
+ verbose: [index.js] POST /ext/:botid called: botID
183
+ verbose: REQUEST BODY: {"payload":{"_id":"66faa0f7-7a3b-4be6-b0e6-303c70a9cf00","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
184
+ verbose: [index.js] POST /ext/:botid called: botID
185
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail_missing_namespace","type":"text"},"token":"XXX"}
186
+ verbose: [index.js] POST /ext/:botid called: botID
187
+ verbose: REQUEST BODY: {"payload":{"_id":"765dbf03-70e2-4b96-9d2d-bfa7b1988260","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
188
+ verbose: [index.js] POST /ext/:botid called: botID
189
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/gpt_fail_missing_namespace_name","type":"text"},"token":"XXX"}
190
+ verbose: [index.js] POST /ext/:botid called: botID
191
+ verbose: REQUEST BODY: {"payload":{"_id":"da1bf4b4-bc03-454e-9d6a-6354b536c1dd","id_project":"projectID","recipient":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948","request":{"id_project":"projectID","request_id":"support-group-projectID-bc3a818fb75e48a3a43dd66d061f7948"},"sender":"_tdinternal","senderFullname":"_tdinternal","text":"/#FAILURE","type":"text"},"token":"XXX"}
192
+ verbose: [index.js] POST /ext/:botid called: botID
193
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-cc0c4e6319974fdeb69165e8f022e973","request":{"request_id":"support-group-projectID-cc0c4e6319974fdeb69165e8f022e973"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
194
+ verbose: [index.js] POST /ext/:botid called: null
195
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-af67726dfee245f49a462b3e15145bf7","request":{"request_id":"support-group-projectID-af67726dfee245f49a462b3e15145bf7"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
196
+ verbose: [index.js] POST /ext/:botid called: null
197
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-988e5f849bd44a79950dc8ee2bb56ea8","request":{"request_id":"support-group-projectID-988e5f849bd44a79950dc8ee2bb56ea8"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
198
+ verbose: [index.js] POST /ext/:botid called: null
199
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-d60d816e672f4b71b8bba8b65ef58d29","request":{"request_id":"support-group-projectID-d60d816e672f4b71b8bba8b65ef58d29"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
200
+ verbose: [index.js] POST /ext/:botid called: null
201
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-57ecae0b23db4256bf5715bbd5652ac4","request":{"request_id":"support-group-projectID-57ecae0b23db4256bf5715bbd5652ac4"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
202
+ verbose: [index.js] POST /ext/:botid called: null
203
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-36f1ebe5a7fd46f9a33312a1c245c6b1","request":{"request_id":"support-group-projectID-36f1ebe5a7fd46f9a33312a1c245c6b1"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
204
+ verbose: [index.js] POST /ext/:botid called: null
205
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-c8e39a16584b43f89a72352900d36014","request":{"request_id":"support-group-projectID-c8e39a16584b43f89a72352900d36014"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
206
+ verbose: [index.js] POST /ext/:botid called: null
207
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-92c18d800e0c4594b0311c6da0684dd0","request":{"request_id":"support-group-projectID-92c18d800e0c4594b0311c6da0684dd0"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
208
+ verbose: [index.js] POST /ext/:botid called: null
209
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-0314796657f040f084a12d18f076f505","request":{"request_id":"support-group-projectID-0314796657f040f084a12d18f076f505"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
210
+ verbose: [index.js] POST /ext/:botid called: null
211
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-17fb476cf8d24369bd80d49a1d8e34cc","request":{"request_id":"support-group-projectID-17fb476cf8d24369bd80d49a1d8e34cc"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
212
+ verbose: [index.js] POST /ext/:botid called: null
213
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-dc5904af02bb49ab8e6beb5bb24879f4","request":{"request_id":"support-group-projectID-dc5904af02bb49ab8e6beb5bb24879f4"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
214
+ verbose: [index.js] POST /ext/:botid called: null
215
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-b6bf284c02c046debc4ea804c2c58cb0","request":{"request_id":"support-group-projectID-b6bf284c02c046debc4ea804c2c58cb0"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
216
+ verbose: [index.js] POST /ext/:botid called: null
217
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-775c73028d3244ca80a4283ab3091165","request":{"request_id":"support-group-projectID-775c73028d3244ca80a4283ab3091165"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
218
+ verbose: [index.js] POST /ext/:botid called: null
219
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-86c4c57388704827ad25831915a9a833","request":{"request_id":"support-group-projectID-86c4c57388704827ad25831915a9a833"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
220
+ verbose: [index.js] POST /ext/:botid called: null
221
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-32252f232191426eafb845809f8c023f","request":{"request_id":"support-group-projectID-32252f232191426eafb845809f8c023f"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
222
+ verbose: [index.js] POST /ext/:botid called: null
223
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-ca8104157b814937ab3097ca0a23cfbd","request":{"request_id":"support-group-projectID-ca8104157b814937ab3097ca0a23cfbd"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
224
+ verbose: [index.js] POST /ext/:botid called: null
225
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-154a840b7dc748f496c728f44980073b","request":{"request_id":"support-group-projectID-154a840b7dc748f496c728f44980073b"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
226
+ verbose: [index.js] POST /ext/:botid called: null
227
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-4f89f4f3bb224ccfa9c127ace488636a","request":{"request_id":"support-group-projectID-4f89f4f3bb224ccfa9c127ace488636a"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
228
+ verbose: [index.js] POST /ext/:botid called: null
229
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-1a8c3b7dc05f4a54ab67a18abbdb627c","request":{"request_id":"support-group-projectID-1a8c3b7dc05f4a54ab67a18abbdb627c"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
230
+ verbose: [index.js] POST /ext/:botid called: null
231
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-c50a9b4a3ee74c47829ba80a518fd3fe","request":{"request_id":"support-group-projectID-c50a9b4a3ee74c47829ba80a518fd3fe"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
232
+ verbose: [index.js] POST /ext/:botid called: null
233
+ verbose: REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-ef85d7e490fd4555a49599d9efed9ed4","request":{"request_id":"support-group-projectID-ef85d7e490fd4555a49599d9efed9ed4"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
234
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-aa351340f1b3436699cbe00dd1693e94","request":{"request_id":"support-group-projectID-aa351340f1b3436699cbe00dd1693e94"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
235
+ verbose: (tybotRoute) message.id_project:projectID
236
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-f953b5e229a24be29cf3dc29c76e18d0","request":{"request_id":"support-group-projectID-f953b5e229a24be29cf3dc29c76e18d0"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
237
+ verbose: (tybotRoute) message.id_project:projectID
238
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-3415216af1a24ebbab9358a757a010c0","request":{"request_id":"support-group-projectID-3415216af1a24ebbab9358a757a010c0"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
239
+ verbose: (tybotRoute) message.id_project:projectID
240
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-27158fa49d0f4ab993d31f0aa8751e94","request":{"request_id":"support-group-projectID-27158fa49d0f4ab993d31f0aa8751e94"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
241
+ verbose: (tybotRoute) message.id_project:projectID
242
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-2b110425dbfa400c8c2ab8f732386e2b","request":{"request_id":"support-group-projectID-2b110425dbfa400c8c2ab8f732386e2b"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
243
+ verbose: (tybotRoute) message.id_project:projectID
244
+ debug: (tybotRoute) POST /ext/:botid called: undefined
245
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-3e5cd8aaccb6477fb42adb02e97ccf11","request":{"request_id":"support-group-projectID-3e5cd8aaccb6477fb42adb02e97ccf11"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
246
+ verbose: (tybotRoute) message.id_project:projectID
247
+ debug: (tybotRoute) POST /ext/:botid called: undefined
248
+ debug: (tybotRoute) POST /ext/:botid called: string
249
+ verbose: (tybotRoute) REQUEST BODY: {"payload":{"id_project":"projectID","metadata":"","recipient":"support-group-projectID-af0a066b29a54ca9a5336623e32937ba","request":{"request_id":"support-group-projectID-af0a066b29a54ca9a5336623e32937ba"},"sender":"A-SENDER","senderFullname":"guest#367e","text":"/add_tags_complete_for_request","type":"text"},"token":"XXX"}
250
+ verbose: (tybotRoute) message.id_project:projectID
251
+ debug: (tybotRoute) POST /ext/:botid called: undefined
252
+ debug: (tybotRoute) POST /ext/:botid called: undefined
253
+ debug: (tybotRoute) POST /ext/:botid called: undefined
254
+ debug: (tybotRoute) POST /ext/:botid called: undefined
255
+ debug: (tybotRoute) POST /ext/:botid called: undefined
256
+ debug: (tybotRoute) POST /ext/:botid called: undefined
257
+ debug: (tybotRoute) POST /ext/:botid called: undefined
258
+ debug: (tybotRoute) POST /ext/:botid called: undefined
259
+ debug: (tybotRoute) POST /ext/:botid called: undefined
260
+ debug: (tybotRoute) POST /ext/:botid called: undefined
261
+ debug: (tybotRoute) POST /ext/:botid called: undefined
262
+ debug: (tybotRoute) POST /ext/:botid called: undefined
263
+ debug: (tybotRoute) POST /ext/:botid called: undefined
264
+ debug: (tybotRoute) POST /ext/:botid called: undefined
265
+ debug: (tybotRoute) POST /ext/:botid called: undefined
266
+ debug: (tybotRoute) POST /ext/:botid called: undefined
267
+ debug: (tybotRoute) POST /ext/:botid called: undefined
268
+ debug: (tybotRoute) POST /ext/:botid called: undefined
269
+ debug: (tybotRoute) POST /ext/:botid called: undefined
270
+ debug: (tybotRoute) POST /ext/:botid called: undefined
271
+ debug: (tybotRoute) POST /ext/:botid called: undefined
272
+ debug: (tybotRoute) POST /ext/:botid called: undefined
273
+ debug: (tybotRoute) POST /ext/:botid called: undefined
274
+ debug: (tybotRoute) POST /ext/:botid called: undefined
275
+ debug: (tybotRoute) POST /ext/:botid called: null
@@ -12,16 +12,20 @@ class MockBotsDataSource {
12
12
  // let intents = await this.intentsFinder.find(message.text);
13
13
 
14
14
  async getBotById(botId) {
15
- const bot = {
16
- webhook_enabled: this.data.bots[botId].webhook_enabled,
17
- webhook_url: this.data.bots[botId].webhook_url,
18
- language: this.data.bots[botId].language,
19
- name: this.data.bots[botId].name
20
- }
21
- if (bot) {
22
- return bot;
23
- }
24
- return null;
15
+ return new Promise((resolve, reject)=>{
16
+ try{
17
+ const bot = {
18
+ webhook_enabled: this.data.bots[botId].webhook_enabled,
19
+ webhook_url: this.data.bots[botId].webhook_url,
20
+ language: this.data.bots[botId].language,
21
+ name: this.data.bots[botId].name
22
+ }
23
+ resolve(bot)
24
+ }catch(err){
25
+ reject(err);
26
+ }
27
+
28
+ })
25
29
  }
26
30
 
27
31
  async getBotByIdCache(botId, tdcache) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-tybot-connector",
3
- "version": "0.2.148",
3
+ "version": "0.2.149-rc2",
4
4
  "description": "Tiledesk Tybot connector",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -54,6 +54,7 @@ const { DirMoveToUnassigned } = require('./directives/DirMoveToUnassigned');
54
54
  const { DirAddTags } = require('./directives/DirAddTags');
55
55
  const { DirSendWhatsapp } = require('./directives/DirSendWhatsapp');
56
56
  const { DirReplaceBotV3 } = require('./directives/DirReplaceBotV3');
57
+ const { DirAiTask, DirAiPrompt } = require('./directives/DirAiPrompt');
57
58
 
58
59
  class DirectivesChatbotPlug {
59
60
 
@@ -637,6 +638,19 @@ class DirectivesChatbotPlug {
637
638
  }
638
639
  });
639
640
  }
641
+ else if (directive_name === Directives.AI_PROMPT) {
642
+ new DirAiPrompt(context).execute(directive, async (stop) => {
643
+ if (context.log) { console.log("AiPrompt stop?", stop);}
644
+ if (stop == true) {
645
+ if (context.log) { console.log("Stopping Actions on:", JSON.stringify(directive));}
646
+ this.theend();
647
+ }
648
+ else {
649
+ let next_dir = await this.nextDirective(this.directives);
650
+ this.process(next_dir);
651
+ }
652
+ });
653
+ }
640
654
  else if (directive_name === Directives.WHATSAPP_ATTRIBUTE) {
641
655
  new DirWhatsappByAttribute(context).execute(directive, async (stop) => {
642
656
  let next_dir = await this.nextDirective(this.directives);
@@ -0,0 +1,467 @@
1
+ const axios = require("axios").default;
2
+ const { TiledeskChatbot } = require("../../models/TiledeskChatbot");
3
+ const { Filler } = require("../Filler");
4
+ let https = require("https");
5
+ const { DirIntent } = require("./DirIntent");
6
+ const { TiledeskChatbotConst } = require("../../models/TiledeskChatbotConst");
7
+ const { TiledeskChatbotUtil } = require("../../models/TiledeskChatbotUtil");
8
+ require('dotenv').config();
9
+
10
+ class DirAiPrompt {
11
+
12
+ constructor(context) {
13
+ if (!context) {
14
+ throw new Error('context object is mandatory');
15
+ }
16
+ this.context = context;
17
+ this.chatbot = this.context.chatbot;
18
+ this.tdcache = this.context.tdcache;
19
+ this.requestId = this.context.requestId;
20
+ this.intentDir = new DirIntent(context);
21
+ this.API_ENDPOINT = this.context.API_ENDPOINT;
22
+ this.log = context.log;
23
+ }
24
+
25
+ execute(directive, callback) {
26
+ if (this.log) { console.log("AiPrompt directive: ", directive); }
27
+ let action;
28
+ if (directive.action) {
29
+ action = directive.action;
30
+ }
31
+ else {
32
+ console.error("Incorrect directive: ", JSON.stringify(directive));
33
+ callback();
34
+ return;
35
+ }
36
+ this.go(action, (stop) => {
37
+ callback(stop);
38
+ })
39
+ }
40
+
41
+ async go(action, callback) {
42
+ if (this.log) { console.log("DirAiPrompt action:", JSON.stringify(action)); }
43
+ if (!this.tdcache) {
44
+ console.error("Error: DirAiPrompt tdcache is mandatory");
45
+ callback();
46
+ return;
47
+ }
48
+
49
+ let trueIntent = action.trueIntent;
50
+ let falseIntent = action.falseIntent;
51
+ let trueIntentAttributes = action.trueIntentAttributes;
52
+ let falseIntentAttributes = action.falseIntentAttributes;
53
+ let transcript;
54
+ let answer = "No answer"
55
+
56
+ if (this.log) {
57
+ console.log("DirAiPrompt trueIntent", trueIntent)
58
+ console.log("DirAiPrompt falseIntent", falseIntent)
59
+ }
60
+
61
+ await this.checkMandatoryParameters(action).catch( async (missing_param) => {
62
+ await this.chatbot.addParameter("flowError", "AiPrompt Error: '" + missing_param + "' attribute is undefined");
63
+ if (falseIntent) {
64
+ await this.#executeCondition(false, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
65
+ callback(true);
66
+ return Promise.reject();
67
+ }
68
+ callback();
69
+ return Promise.reject();
70
+ })
71
+
72
+ let requestVariables = null;
73
+ requestVariables =
74
+ await TiledeskChatbot.allParametersStatic(
75
+ this.tdcache, this.requestId
76
+ )
77
+
78
+ const filler = new Filler();
79
+ const filled_question = filler.fill(action.question, requestVariables);
80
+ const filled_context = filler.fill(action.context, requestVariables);
81
+
82
+ if (action.history) {
83
+ let transcript_string = await TiledeskChatbot.getParameterStatic(
84
+ this.context.tdcache,
85
+ this.context.requestId,
86
+ TiledeskChatbotConst.REQ_TRANSCRIPT_KEY);
87
+ if (this.log) { console.log("DirAiPrompt transcript string: ", transcript_string) }
88
+
89
+ if (transcript_string) {
90
+ transcript = await TiledeskChatbotUtil.transcriptJSON(transcript_string);
91
+ if (this.log) { console.log("DirAiPrompt transcript: ", transcript) }
92
+ } else {
93
+ if (this.log) { console.log("DirAiPrompt transcript_string is undefined. Skip JSON translation for chat history") }
94
+ }
95
+ }
96
+
97
+ const llm_endpoint = process.env.KB_ENDPOINT_QA;
98
+ if (this.log) { console.log("DirAiPrompt llm_endpoint ", llm_endpoint); }
99
+
100
+ let key = await this.getKeyFromIntegrations(action.llm);
101
+
102
+ if (!key) {
103
+ console.error("Error: DirAiPrompt llm key not found in integrations");
104
+ await this.chatbot.addParameter("flowError", "AiPrompt Error: missing key for llm " + action.llm);
105
+ if (falseIntent) {
106
+ await this.#executeCondition(false, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
107
+ callback(true);
108
+ return;
109
+ }
110
+ callback();
111
+ return;
112
+ }
113
+
114
+ let json = {
115
+ question: filled_question,
116
+ llm: action.llm,
117
+ model: action.model,
118
+ llm_key: key,
119
+ temperature: action.temperature,
120
+ max_tokens: action.max_tokens,
121
+ system_context: filled_context,
122
+ }
123
+
124
+ if (transcript) {
125
+ json.chat_history_dict = await this.transcriptToLLM(transcript);
126
+ }
127
+
128
+ if (this.log) { console.log("DirAiPrompt json: ", json) }
129
+
130
+ const HTTPREQUEST = {
131
+ url: llm_endpoint + '/ask',
132
+ headers: {
133
+ 'Content-Type': 'application/json'
134
+ },
135
+ json: json,
136
+ method: 'POST'
137
+ }
138
+ if (this.log) { console.log("DirAiPrompt HTTPREQUEST: ", HTTPREQUEST); }
139
+
140
+ this.#myrequest(
141
+ HTTPREQUEST, async (err, resbody) => {
142
+ if (err) {
143
+ if (this.log) {
144
+ console.error("(httprequest) DirAiPrompt openai err:", err);
145
+ console.error("(httprequest) DirAiPrompt openai err:", err.detail[0]?.msg);
146
+ }
147
+ await this.#assignAttributes(action, answer);
148
+ if (falseIntent) {
149
+ await this.chatbot.addParameter("flowError", "AiPrompt Error: " + err.response.data.detail[0]?.msg);
150
+ await this.#executeCondition(false, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
151
+ callback(true);
152
+ return;
153
+ }
154
+ callback();
155
+ return;
156
+ } else {
157
+
158
+ if (this.log) { console.log("DirAiPrompt resbody: ", JSON.stringify(resbody)); }
159
+ answer = resbody.answer;
160
+
161
+ await this.#assignAttributes(action, answer);
162
+
163
+ if (trueIntent) {
164
+ await this.#executeCondition(true, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes);
165
+ callback(true);
166
+ return;
167
+ }
168
+ callback();
169
+ return;
170
+ }
171
+ }
172
+ )
173
+
174
+ }
175
+
176
+ async checkMandatoryParameters(action) {
177
+ return new Promise((resolve, reject) => {
178
+ let params = ['question', 'llm', 'model']; // mandatory params
179
+ params.forEach((p) => {
180
+ if (!action[p]) {
181
+ reject(p)
182
+ }
183
+ })
184
+ resolve(true);
185
+ })
186
+ }
187
+
188
+ /**
189
+ * Transforms the transcirpt array in a dictionary like '0': { "question": "xxx", "answer":"xxx"}
190
+ * merging consecutive messages with the same role in a single question or answer.
191
+ * If the first message was sent from assistant, this will be deleted.
192
+ */
193
+ async transcriptToLLM(transcript) {
194
+
195
+ let objectTranscript = {};
196
+
197
+ if (transcript.length === 0) {
198
+ return objectTranscript;
199
+ }
200
+
201
+ let mergedTranscript = [];
202
+ let current = transcript[0];
203
+
204
+ for (let i = 1; i < transcript.length; i++) {
205
+ if (transcript[i].role === current.role) {
206
+ current.content += '\n' + transcript[i].content;
207
+ } else {
208
+ mergedTranscript.push(current);
209
+ current = transcript[i]
210
+ }
211
+ }
212
+ mergedTranscript.push(current);
213
+
214
+ if (mergedTranscript[0].role === 'assistant') {
215
+ mergedTranscript.splice(0, 1)
216
+ }
217
+
218
+ let counter = 0;
219
+ for (let i = 0; i < mergedTranscript.length - 1; i += 2) {
220
+ // Check if [i] is role user and [i+1] is role assistant??
221
+ assert(mergedTranscript[i].role === 'user');
222
+ assert(mergedTranscript[i+1].role === 'assistant');
223
+
224
+ if (!mergedTranscript[i].content.startsWith('/')) {
225
+ objectTranscript[counter] = {
226
+ question: mergedTranscript[i].content,
227
+ answer: mergedTranscript[i+1].content
228
+ }
229
+ counter++;
230
+ }
231
+ }
232
+
233
+ return objectTranscript;
234
+ }
235
+
236
+ async #executeCondition(result, trueIntent, trueIntentAttributes, falseIntent, falseIntentAttributes, callback) {
237
+ let trueIntentDirective = null;
238
+ if (trueIntent) {
239
+ trueIntentDirective = DirIntent.intentDirectiveFor(trueIntent, trueIntentAttributes);
240
+ }
241
+ let falseIntentDirective = null;
242
+ if (falseIntent) {
243
+ falseIntentDirective = DirIntent.intentDirectiveFor(falseIntent, falseIntentAttributes);
244
+ }
245
+ if (result === true) {
246
+ if (trueIntentDirective) {
247
+ this.intentDir.execute(trueIntentDirective, () => {
248
+ if (callback) {
249
+ callback();
250
+ }
251
+ })
252
+ }
253
+ else {
254
+ if (this.log) { console.log("No trueIntentDirective specified"); }
255
+ if (callback) {
256
+ callback();
257
+ }
258
+ }
259
+ }
260
+ else {
261
+ if (falseIntentDirective) {
262
+ this.intentDir.execute(falseIntentDirective, () => {
263
+ if (callback) {
264
+ callback();
265
+ }
266
+ });
267
+ }
268
+ else {
269
+ if (this.log) { console.log("No falseIntentDirective specified"); }
270
+ if (callback) {
271
+ callback();
272
+ }
273
+ }
274
+ }
275
+ }
276
+
277
+ async #assignAttributes(action, answer) {
278
+ if (this.log) {
279
+ console.log("assignAttributes action:", action)
280
+ console.log("assignAttributes answer:", answer)
281
+ }
282
+ if (this.context.tdcache) {
283
+ if (action.assignReplyTo && answer) {
284
+ await TiledeskChatbot.addParameterStatic(this.context.tdcache, this.context.requestId, action.assignReplyTo, answer);
285
+ }
286
+ // Debug log
287
+ if (this.log) {
288
+ const all_parameters = await TiledeskChatbot.allParametersStatic(this.context.tdcache, this.context.requestId);
289
+ for (const [key, value] of Object.entries(all_parameters)) {
290
+ if (this.log) { console.log("(gpttask) request parameter:", key, "value:", value, "type:", typeof value) }
291
+ }
292
+ }
293
+ }
294
+ }
295
+
296
+ #myrequest(options, callback) {
297
+ if (this.log) {
298
+ console.log("API URL:", options.url);
299
+ console.log("** Options:", JSON.stringify(options));
300
+ }
301
+ let axios_options = {
302
+ url: options.url,
303
+ method: options.method,
304
+ params: options.params,
305
+ headers: options.headers
306
+ }
307
+ if (options.json !== null) {
308
+ axios_options.data = options.json
309
+ }
310
+ if (this.log) {
311
+ console.log("axios_options:", JSON.stringify(axios_options));
312
+ }
313
+ if (options.url.startsWith("https:")) {
314
+ const httpsAgent = new https.Agent({
315
+ rejectUnauthorized: false,
316
+ });
317
+ axios_options.httpsAgent = httpsAgent;
318
+ }
319
+ axios(axios_options)
320
+ .then((res) => {
321
+ if (this.log) {
322
+ console.log("Response for url:", options.url);
323
+ console.log("Response headers:\n", JSON.stringify(res.headers));
324
+ }
325
+ if (res && res.status == 200 && res.data) {
326
+ if (callback) {
327
+ callback(null, res.data);
328
+ }
329
+ }
330
+ else {
331
+ if (callback) {
332
+ callback(new Error("Response status is not 200"), null);
333
+ }
334
+ }
335
+ })
336
+ .catch((error) => {
337
+ console.error("(DirAiPrompt) Axios error: ", JSON.stringify(error));
338
+ if (callback) {
339
+ callback(error, null);
340
+ }
341
+ });
342
+ }
343
+
344
+ async getKeyFromIntegrations(model) {
345
+ return new Promise((resolve) => {
346
+
347
+ const INTEGRATIONS_HTTPREQUEST = {
348
+ url: this.API_ENDPOINT + "/" + this.context.projectId + "/integration/name/" + model,
349
+ headers: {
350
+ 'Content-Type': 'application/json',
351
+ 'Authorization': 'JWT ' + this.context.token
352
+ },
353
+ method: "GET"
354
+ }
355
+ if (this.log) { console.log("DirAiPrompt INTEGRATIONS_HTTPREQUEST ", INTEGRATIONS_HTTPREQUEST) }
356
+
357
+ this.#myrequest(
358
+ INTEGRATIONS_HTTPREQUEST, async (err, integration) => {
359
+ if (err) {
360
+ resolve(null);
361
+ } else {
362
+
363
+ if (integration &&
364
+ integration.value) {
365
+ resolve(integration.value.apikey)
366
+ }
367
+ else {
368
+ resolve(null)
369
+ }
370
+ }
371
+ })
372
+ })
373
+ }
374
+
375
+ async getKeyFromKbSettings() {
376
+ return new Promise((resolve) => {
377
+
378
+ const KB_HTTPREQUEST = {
379
+ url: this.API_ENDPOINT + "/" + this.context.projectId + "/kbsettings",
380
+ headers: {
381
+ 'Content-Type': 'application/json',
382
+ 'Authorization': 'JWT ' + this.context.token
383
+ },
384
+ method: "GET"
385
+ }
386
+ if (this.log) { console.log("DirAiPrompt KB_HTTPREQUEST", KB_HTTPREQUEST); }
387
+
388
+ this.#myrequest(
389
+ KB_HTTPREQUEST, async (err, resbody) => {
390
+ if (err) {
391
+ console.error("(httprequest) DirAiPrompt Get KnowledgeBase err:", err.message);
392
+ if (this.log) {
393
+ console.error("(httprequest) DirAiPrompt Get KnowledgeBase full err", err);
394
+ }
395
+ resolve(null);
396
+ } else {
397
+ if (!resbody.gptkey) {
398
+ resolve(null);
399
+ } else {
400
+ resolve(resbody.gptkey);
401
+ }
402
+ }
403
+ }
404
+ )
405
+ })
406
+ }
407
+
408
+ async checkQuoteAvailability() {
409
+ return new Promise((resolve) => {
410
+
411
+ const HTTPREQUEST = {
412
+ url: this.API_ENDPOINT + "/" + this.context.projectId + "/quotes/tokens",
413
+ headers: {
414
+ 'Content-Type': 'application/json',
415
+ 'Authorization': 'JWT ' + this.context.token
416
+ },
417
+ method: "GET"
418
+ }
419
+ if (this.log) { console.log("DirAiPrompt check quote availability HTTPREQUEST", HTTPREQUEST); }
420
+
421
+ this.#myrequest(
422
+ HTTPREQUEST, async (err, resbody) => {
423
+ if (err) {
424
+ resolve(true)
425
+ } else {
426
+ if (resbody.isAvailable === true) {
427
+ resolve(true)
428
+ } else {
429
+ resolve(false)
430
+ }
431
+ }
432
+ }
433
+ )
434
+ })
435
+ }
436
+
437
+ async updateQuote(tokens_usage) {
438
+ return new Promise((resolve, reject) => {
439
+
440
+ const HTTPREQUEST = {
441
+ url: this.API_ENDPOINT + "/" + this.context.projectId + "/quotes/incr/tokens",
442
+ headers: {
443
+ 'Content-Type': 'application/json',
444
+ 'Authorization': 'JWT ' + this.context.token
445
+ },
446
+ json: tokens_usage,
447
+ method: "POST"
448
+ }
449
+ if (this.log) { console.log("DirAiPrompt check quote availability HTTPREQUEST", HTTPREQUEST); }
450
+
451
+ this.#myrequest(
452
+ HTTPREQUEST, async (err, resbody) => {
453
+ if (err) {
454
+ console.error("(httprequest) DirAiPrompt Increment tokens quote err: ", err);
455
+ reject(false)
456
+ } else {
457
+ if (this.log) { console.log("(httprequest) DirAiPrompt Increment token quote resbody: ", resbody); }
458
+ resolve(true);
459
+ }
460
+ }
461
+ )
462
+ })
463
+ }
464
+
465
+ }
466
+
467
+ module.exports = { DirAiPrompt }
@@ -36,6 +36,7 @@ class Directives {
36
36
  static ASK_GPT = "askgpt";
37
37
  static ASK_GPT_V2 = "askgptv2";
38
38
  static GPT_TASK = "gpt_task";
39
+ static AI_PROMPT = "ai_prompt";
39
40
  /**** INTEGRATIONS ****/
40
41
  static QAPLA = 'qapla';
41
42
  static MAKE = 'make';