@tiledesk/tiledesk-tybot-connector 0.2.601-rc1 → 0.3.1
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 +387 -1
- package/ExtApi.js +6 -7
- package/Logger.js +74 -0
- package/TdCache.js +81 -176
- package/TdCache_v3.js +261 -0
- package/TiledeskExpression.js +7 -3
- package/TiledeskServices/AIService.js +43 -0
- package/TiledeskServices/utils.js +99 -0
- package/index.js +305 -50
- package/logs/app.log +279 -0
- package/models/IntentsMachineFactory.js +5 -2
- package/models/MockBotsDataSource.js +19 -11
- package/models/TiledeskChatbot.js +97 -79
- package/models/TiledeskChatbotConst.js +12 -17
- package/models/TiledeskChatbotUtil.js +359 -109
- package/models/TiledeskIntentsMachine.js +1 -1
- package/models/faqKbService.js +1 -1
- package/package.json +8 -6
- package/tiledeskChatbotPlugs/DirectivesChatbotPlug.js +172 -106
- package/tiledeskChatbotPlugs/Filler.js +13 -2
- package/tiledeskChatbotPlugs/TildeskContextForCodeOrchestrator.js +8 -0
- package/tiledeskChatbotPlugs/WebhookChatbotPlug.js +13 -7
- package/tiledeskChatbotPlugs/directives/DirAddTags.js +374 -0
- package/tiledeskChatbotPlugs/directives/DirAiPrompt.js +476 -0
- package/tiledeskChatbotPlugs/directives/DirAskGPT.js +16 -19
- package/tiledeskChatbotPlugs/directives/DirAskGPTV2.js +221 -34
- package/tiledeskChatbotPlugs/directives/DirAssign.js +0 -11
- package/tiledeskChatbotPlugs/directives/DirAssignFromFunction.js +11 -21
- package/tiledeskChatbotPlugs/directives/DirAssistant.js +728 -0
- package/tiledeskChatbotPlugs/directives/DirBrevo.js +353 -0
- package/tiledeskChatbotPlugs/directives/DirCaptureUserReply.js +3 -30
- package/tiledeskChatbotPlugs/directives/DirClearTranscript.js +22 -0
- package/tiledeskChatbotPlugs/directives/DirClose.js +16 -3
- package/tiledeskChatbotPlugs/directives/DirCode.js +1 -1
- package/tiledeskChatbotPlugs/directives/DirCondition.js +0 -26
- package/tiledeskChatbotPlugs/directives/DirConnectBlock.js +182 -0
- package/tiledeskChatbotPlugs/directives/DirContactUpdate.js +121 -0
- package/tiledeskChatbotPlugs/directives/DirCustomerio.js +5 -8
- package/tiledeskChatbotPlugs/directives/DirDeflectToHelpCenter.js +11 -1
- package/tiledeskChatbotPlugs/directives/DirDepartment.js +15 -6
- package/tiledeskChatbotPlugs/directives/DirFireTiledeskEvent.js +17 -6
- package/tiledeskChatbotPlugs/directives/DirForm.js +12 -2
- package/tiledeskChatbotPlugs/directives/DirGptTask.js +83 -38
- package/tiledeskChatbotPlugs/directives/DirGptTask_OLD.js +4 -7
- package/tiledeskChatbotPlugs/directives/DirHubspot.js +5 -8
- package/tiledeskChatbotPlugs/directives/DirIfOnlineAgents.js +14 -27
- package/tiledeskChatbotPlugs/directives/DirIfOnlineAgentsV2.js +278 -0
- package/tiledeskChatbotPlugs/directives/DirIfOpenHours.js +147 -51
- package/tiledeskChatbotPlugs/directives/DirIfOpenHours_OLD.js +125 -0
- package/tiledeskChatbotPlugs/directives/DirIntent.js +8 -37
- package/tiledeskChatbotPlugs/directives/DirJSONCondition.js +5 -26
- package/tiledeskChatbotPlugs/directives/DirMessage.js +19 -17
- package/tiledeskChatbotPlugs/directives/DirMessageToBot.js +135 -0
- package/tiledeskChatbotPlugs/directives/DirMoveToAgent.js +20 -87
- package/tiledeskChatbotPlugs/directives/DirMoveToUnassigned.js +59 -0
- package/tiledeskChatbotPlugs/directives/DirQapla.js +6 -9
- package/tiledeskChatbotPlugs/directives/DirRandomReply.js +17 -7
- package/tiledeskChatbotPlugs/directives/DirRemoveCurrentBot.js +17 -7
- package/tiledeskChatbotPlugs/directives/DirReplaceBot.js +11 -2
- package/tiledeskChatbotPlugs/directives/DirReplaceBotV2.js +135 -21
- package/tiledeskChatbotPlugs/directives/DirReplaceBotV3.js +163 -0
- package/tiledeskChatbotPlugs/directives/DirReply.js +53 -9
- package/tiledeskChatbotPlugs/directives/DirReplyV2.js +347 -0
- package/tiledeskChatbotPlugs/directives/DirSendEmail.js +13 -23
- package/tiledeskChatbotPlugs/directives/DirSendWhatsapp.js +247 -0
- package/tiledeskChatbotPlugs/directives/DirSetAttributeV2.js +202 -15
- package/tiledeskChatbotPlugs/directives/DirSetConversationTags.js +13 -4
- package/tiledeskChatbotPlugs/directives/DirWait.js +21 -4
- package/tiledeskChatbotPlugs/directives/DirWebRequest.js +1 -2
- package/tiledeskChatbotPlugs/directives/DirWebRequestV2.js +166 -103
- package/tiledeskChatbotPlugs/directives/DirWhatsappByAttribute.js +2 -60
- package/tiledeskChatbotPlugs/directives/Directives.js +16 -1
- /package/tiledeskChatbotPlugs/directives/{DirOfflineHours.js → DEPRECATED_DirOfflineHours.js} +0 -0
package/TdCache.js
CHANGED
|
@@ -3,37 +3,63 @@ const redis = require('redis');
|
|
|
3
3
|
class TdCache {
|
|
4
4
|
|
|
5
5
|
constructor(config) {
|
|
6
|
+
console.log("TdCache config: ", config);
|
|
6
7
|
this.redis_host = config.host;
|
|
7
8
|
this.redis_port = config.port;
|
|
8
9
|
this.redis_password = config.password;
|
|
10
|
+
console.log("TdCache this.redis_host: ", this.redis_host);
|
|
11
|
+
console.log("TdCache this.redis_port: ", this.redis_port);
|
|
12
|
+
console.log("TdCache this.redis_password: ", this.redis_password);
|
|
9
13
|
this.client = null;
|
|
14
|
+
this.redis_sub = null;
|
|
10
15
|
}
|
|
11
16
|
|
|
12
17
|
async connect(callback) {
|
|
13
|
-
|
|
18
|
+
|
|
14
19
|
return new Promise( async (resolve, reject) => {
|
|
20
|
+
/**
|
|
21
|
+
* Connect redis client
|
|
22
|
+
*/
|
|
15
23
|
this.client = redis.createClient(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
24
|
+
{
|
|
25
|
+
url: `redis://${this.redis_host}:${this.redis_port}`,
|
|
26
|
+
password: this.redis_password
|
|
27
|
+
});
|
|
21
28
|
this.client.on('error', err => {
|
|
22
29
|
reject(err);
|
|
23
30
|
if (callback) {
|
|
24
31
|
callback(err);
|
|
25
32
|
}
|
|
26
33
|
});
|
|
27
|
-
// this.client.on('connect', function() {
|
|
28
|
-
// console.log('Redis Connected!');
|
|
29
|
-
// });
|
|
30
34
|
this.client.on('ready',function() {
|
|
31
35
|
resolve();
|
|
32
36
|
if (callback) {
|
|
33
37
|
callback();
|
|
34
38
|
}
|
|
35
|
-
//console.log("Redis is ready.");
|
|
36
39
|
});
|
|
40
|
+
await this.client.connect();
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Connect redis subscription client
|
|
44
|
+
*/
|
|
45
|
+
this.redis_sub = redis.createClient(
|
|
46
|
+
{
|
|
47
|
+
url: `redis://${this.redis_host}:${this.redis_port}`,
|
|
48
|
+
password: this.redis_password
|
|
49
|
+
});
|
|
50
|
+
this.redis_sub.on('error', err => {
|
|
51
|
+
reject(err);
|
|
52
|
+
if (callback) {
|
|
53
|
+
callback(err);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
this.redis_sub.on('ready',function() {
|
|
57
|
+
resolve();
|
|
58
|
+
if (callback) {
|
|
59
|
+
callback();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
await this.redis_sub.connect();
|
|
37
63
|
});
|
|
38
64
|
}
|
|
39
65
|
|
|
@@ -42,184 +68,59 @@ class TdCache {
|
|
|
42
68
|
if (!options) {
|
|
43
69
|
options = {EX: 86400}
|
|
44
70
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
await this.client.set(
|
|
50
|
-
key,
|
|
51
|
-
value,
|
|
52
|
-
'EX', options.EX);
|
|
53
|
-
}
|
|
54
|
-
catch(error) {
|
|
55
|
-
reject(error)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
try {
|
|
60
|
-
//console.log("setting here...key", key, value)
|
|
61
|
-
await this.client.set(
|
|
62
|
-
key,
|
|
63
|
-
value);
|
|
64
|
-
}
|
|
65
|
-
catch(error) {
|
|
66
|
-
console.error("Error", error);
|
|
67
|
-
reject(error)
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (options && options.callback) {
|
|
71
|
-
options.callback();
|
|
72
|
-
}
|
|
73
|
-
//console.log("resolving...", key);
|
|
74
|
-
return resolve();
|
|
75
|
-
});
|
|
71
|
+
await this.client.set(
|
|
72
|
+
key,
|
|
73
|
+
value,
|
|
74
|
+
options);
|
|
76
75
|
}
|
|
77
76
|
|
|
78
77
|
async incr(key) {
|
|
79
|
-
|
|
80
|
-
return new Promise( async (resolve, reject) => {
|
|
81
|
-
try {
|
|
82
|
-
// console.log("incr here...key", key)
|
|
83
|
-
await this.client.incr(key);
|
|
84
|
-
}
|
|
85
|
-
catch(error) {
|
|
86
|
-
console.error("Error on incr:", error);
|
|
87
|
-
reject(error)
|
|
88
|
-
}
|
|
89
|
-
return resolve();
|
|
90
|
-
});
|
|
78
|
+
await this.client.incr(key);
|
|
91
79
|
}
|
|
92
80
|
|
|
93
81
|
async hset(dict_key, key, value, options) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
catch(error) {
|
|
106
|
-
reject(error)
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
try {
|
|
111
|
-
//console.log("setting here...key", key, value)
|
|
112
|
-
await this.client.hset(
|
|
113
|
-
dict_key,
|
|
114
|
-
key,
|
|
115
|
-
value);
|
|
116
|
-
}
|
|
117
|
-
catch(error) {
|
|
118
|
-
console.error("Error", error);
|
|
119
|
-
reject(error)
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (options && options.callback) {
|
|
123
|
-
options.callback();
|
|
124
|
-
}
|
|
125
|
-
return resolve();
|
|
126
|
-
});
|
|
82
|
+
if (!value) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (!options) {
|
|
86
|
+
options = {EX: 86400}
|
|
87
|
+
}
|
|
88
|
+
await this.client.HSET(
|
|
89
|
+
dict_key,
|
|
90
|
+
key,
|
|
91
|
+
value,
|
|
92
|
+
options);
|
|
127
93
|
}
|
|
128
94
|
|
|
129
|
-
async hdel(dict_key, key
|
|
130
|
-
|
|
131
|
-
return new Promise( async (resolve, reject) => {
|
|
132
|
-
if (options && options.EX) {
|
|
133
|
-
//console.log("expires:", options.EX)
|
|
134
|
-
try {
|
|
135
|
-
await this.client.hdel(
|
|
136
|
-
dict_key,
|
|
137
|
-
key,
|
|
138
|
-
'EX', options.EX);
|
|
139
|
-
}
|
|
140
|
-
catch(error) {
|
|
141
|
-
reject(error)
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
try {
|
|
146
|
-
//console.log("setting here...key", key, value)
|
|
147
|
-
await this.client.hdel(
|
|
148
|
-
dict_key,
|
|
149
|
-
key);
|
|
150
|
-
}
|
|
151
|
-
catch(error) {
|
|
152
|
-
console.error("Error", error);
|
|
153
|
-
reject(error);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (options && options.callback) {
|
|
157
|
-
options.callback();
|
|
158
|
-
}
|
|
159
|
-
return resolve();
|
|
160
|
-
});
|
|
95
|
+
async hdel(dict_key, key) {
|
|
96
|
+
await this.client.HDEL(dict_key, key);
|
|
161
97
|
}
|
|
162
98
|
|
|
163
99
|
async setJSON(key, value, options) {
|
|
100
|
+
if (!value) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (!options) {
|
|
104
|
+
options = {EX: 86400}
|
|
105
|
+
}
|
|
164
106
|
const _string = JSON.stringify(value);
|
|
165
107
|
return await this.set(key, _string, options);
|
|
166
108
|
}
|
|
167
109
|
|
|
168
|
-
async get(key
|
|
169
|
-
|
|
170
|
-
return
|
|
171
|
-
this.client.get(key, (err, value) => {
|
|
172
|
-
if (err) {
|
|
173
|
-
reject(err);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
if (callback) {
|
|
177
|
-
callback(value);
|
|
178
|
-
}
|
|
179
|
-
return resolve(value);
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
});
|
|
110
|
+
async get(key) {
|
|
111
|
+
const value = await this.client.GET(key);
|
|
112
|
+
return value;
|
|
183
113
|
}
|
|
184
114
|
|
|
185
|
-
async hgetall(dict_key
|
|
186
|
-
|
|
187
|
-
return
|
|
188
|
-
this.client.hgetall(dict_key, (err, value) => {
|
|
189
|
-
if (err) {
|
|
190
|
-
reject(err);
|
|
191
|
-
if (callback) {
|
|
192
|
-
callback(err, null);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
if (callback) {
|
|
197
|
-
callback(null, value);
|
|
198
|
-
}
|
|
199
|
-
resolve(value);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
});
|
|
115
|
+
async hgetall(dict_key) {
|
|
116
|
+
const all = await this.client.HGETALL(dict_key);
|
|
117
|
+
return all;
|
|
203
118
|
}
|
|
204
119
|
|
|
205
|
-
async hget(dict_key, key
|
|
206
|
-
//console.log("hgetting dics", dict_key);
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (err) {
|
|
210
|
-
reject(err);
|
|
211
|
-
if (callback) {
|
|
212
|
-
callback(err, null);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
if (callback) {
|
|
217
|
-
callback(null, value);
|
|
218
|
-
}
|
|
219
|
-
resolve(value);
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
});
|
|
120
|
+
async hget(dict_key, key) {
|
|
121
|
+
// console.log("hgetting dics", dict_key);
|
|
122
|
+
const value = await this.client.HGET(dict_key, key);
|
|
123
|
+
return value;
|
|
223
124
|
}
|
|
224
125
|
|
|
225
126
|
async getJSON(key, callback) {
|
|
@@ -227,15 +128,19 @@ class TdCache {
|
|
|
227
128
|
return JSON.parse(value);
|
|
228
129
|
}
|
|
229
130
|
|
|
230
|
-
async del(key
|
|
231
|
-
return new Promise( async (resolve, reject) => {
|
|
131
|
+
async del(key) {
|
|
232
132
|
await this.client.del(key);
|
|
233
|
-
if (callback) {
|
|
234
|
-
callback();
|
|
235
|
-
}
|
|
236
|
-
return resolve();
|
|
237
|
-
})
|
|
238
133
|
}
|
|
134
|
+
|
|
135
|
+
async publish(key, value) {
|
|
136
|
+
await this.redis_sub.publish(key, value);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// subscribe(key, callback) {
|
|
140
|
+
// this.redis_sub.subscribe(key, (message) => {
|
|
141
|
+
// callback(message);
|
|
142
|
+
// });
|
|
143
|
+
// }
|
|
239
144
|
}
|
|
240
145
|
|
|
241
146
|
module.exports = { TdCache };
|
package/TdCache_v3.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
const redis = require('redis');
|
|
2
|
+
|
|
3
|
+
class TdCache {
|
|
4
|
+
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.redis_host = config.host;
|
|
7
|
+
this.redis_port = config.port;
|
|
8
|
+
this.redis_password = config.password;
|
|
9
|
+
this.client = null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async connect(callback) {
|
|
13
|
+
// client = redis.createClient();
|
|
14
|
+
return new Promise( async (resolve, reject) => {
|
|
15
|
+
this.client = redis.createClient(
|
|
16
|
+
{
|
|
17
|
+
host: this.redis_host,
|
|
18
|
+
port: this.redis_port,
|
|
19
|
+
password: this.redis_password
|
|
20
|
+
});
|
|
21
|
+
this.client.on('error', err => {
|
|
22
|
+
reject(err);
|
|
23
|
+
if (callback) {
|
|
24
|
+
callback(err);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// this.client.on('connect', function() {
|
|
28
|
+
// console.log('Redis Connected!');
|
|
29
|
+
// });
|
|
30
|
+
this.client.on('ready',function() {
|
|
31
|
+
// console.log("connected")
|
|
32
|
+
resolve();
|
|
33
|
+
if (callback) {
|
|
34
|
+
callback();
|
|
35
|
+
}
|
|
36
|
+
//console.log("Redis is ready.");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async set(key, value, options) {
|
|
42
|
+
//console.log("setting key value", key, value)
|
|
43
|
+
if (!options) {
|
|
44
|
+
options = {EX: 86400}
|
|
45
|
+
}
|
|
46
|
+
return new Promise( async (resolve, reject) => {
|
|
47
|
+
if (options && options.EX) {
|
|
48
|
+
//console.log("expires:", options.EX)
|
|
49
|
+
try {
|
|
50
|
+
this.client.set(
|
|
51
|
+
key,
|
|
52
|
+
value,
|
|
53
|
+
'EX', options.EX,
|
|
54
|
+
(err) => {
|
|
55
|
+
if (err) {
|
|
56
|
+
reject(err);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return resolve();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
catch(error) {
|
|
65
|
+
reject(error)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
try {
|
|
70
|
+
//console.log("setting here...key", key, value)
|
|
71
|
+
await this.client.set(
|
|
72
|
+
key,
|
|
73
|
+
value,
|
|
74
|
+
(err) => {
|
|
75
|
+
if (err) {
|
|
76
|
+
reject(err);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return resolve();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
catch(error) {
|
|
85
|
+
console.error("TdCache Error:", error);
|
|
86
|
+
reject(error)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// if (options && options.callback) {
|
|
90
|
+
// options.callback();
|
|
91
|
+
// }
|
|
92
|
+
//console.log("resolving...", key);
|
|
93
|
+
// return resolve();
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async incr(key) {
|
|
98
|
+
// console.log("incr key:", key)
|
|
99
|
+
return new Promise( async (resolve, reject) => {
|
|
100
|
+
try {
|
|
101
|
+
// console.log("incr here...key", key)
|
|
102
|
+
await this.client.incr(key);
|
|
103
|
+
}
|
|
104
|
+
catch(error) {
|
|
105
|
+
console.error("Error on incr:", error);
|
|
106
|
+
reject(error)
|
|
107
|
+
}
|
|
108
|
+
return resolve();
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async hset(dict_key, key, value, options) {
|
|
113
|
+
//console.log("hsetting dict_key key value", dict_key, key, value)
|
|
114
|
+
return new Promise( async (resolve, reject) => {
|
|
115
|
+
if (options && options.EX) {
|
|
116
|
+
//console.log("expires:", options.EX)
|
|
117
|
+
try {
|
|
118
|
+
await this.client.hset(
|
|
119
|
+
dict_key,
|
|
120
|
+
key,
|
|
121
|
+
value,
|
|
122
|
+
'EX', options.EX);
|
|
123
|
+
}
|
|
124
|
+
catch(error) {
|
|
125
|
+
reject(error)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
try {
|
|
130
|
+
//console.log("setting here...key", key, value)
|
|
131
|
+
await this.client.hset(
|
|
132
|
+
dict_key,
|
|
133
|
+
key,
|
|
134
|
+
value);
|
|
135
|
+
}
|
|
136
|
+
catch(error) {
|
|
137
|
+
console.error("Error", error);
|
|
138
|
+
reject(error)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (options && options.callback) {
|
|
142
|
+
options.callback();
|
|
143
|
+
}
|
|
144
|
+
return resolve();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
async hdel(dict_key, key, options) {
|
|
149
|
+
//console.log("hsetting dict_key key value", dict_key, key, value)
|
|
150
|
+
return new Promise( async (resolve, reject) => {
|
|
151
|
+
if (options && options.EX) {
|
|
152
|
+
//console.log("expires:", options.EX)
|
|
153
|
+
try {
|
|
154
|
+
await this.client.hdel(
|
|
155
|
+
dict_key,
|
|
156
|
+
key,
|
|
157
|
+
'EX', options.EX);
|
|
158
|
+
}
|
|
159
|
+
catch(error) {
|
|
160
|
+
reject(error)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
try {
|
|
165
|
+
//console.log("setting here...key", key, value)
|
|
166
|
+
await this.client.hdel(
|
|
167
|
+
dict_key,
|
|
168
|
+
key);
|
|
169
|
+
}
|
|
170
|
+
catch(error) {
|
|
171
|
+
console.error("Error", error);
|
|
172
|
+
reject(error);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (options && options.callback) {
|
|
176
|
+
options.callback();
|
|
177
|
+
}
|
|
178
|
+
return resolve();
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
async setJSON(key, value, options) {
|
|
183
|
+
const _string = JSON.stringify(value);
|
|
184
|
+
return await this.set(key, _string, options);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async get(key, callback) {
|
|
188
|
+
//console.log("getting key", key)
|
|
189
|
+
return new Promise( async (resolve, reject) => {
|
|
190
|
+
this.client.get(key, (err, value) => {
|
|
191
|
+
if (err) {
|
|
192
|
+
reject(err);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
if (callback) {
|
|
196
|
+
callback(value);
|
|
197
|
+
}
|
|
198
|
+
return resolve(value);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
async hgetall(dict_key, callback) {
|
|
205
|
+
//console.log("hgetting dics", dict_key);
|
|
206
|
+
return new Promise( async (resolve, reject) => {
|
|
207
|
+
this.client.hgetall(dict_key, (err, value) => {
|
|
208
|
+
if (err) {
|
|
209
|
+
reject(err);
|
|
210
|
+
if (callback) {
|
|
211
|
+
callback(err, null);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
if (callback) {
|
|
216
|
+
callback(null, value);
|
|
217
|
+
}
|
|
218
|
+
resolve(value);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
async hget(dict_key, key, callback) {
|
|
225
|
+
//console.log("hgetting dics", dict_key);
|
|
226
|
+
return new Promise( async (resolve, reject) => {
|
|
227
|
+
this.client.hget(dict_key, key, (err, value) => {
|
|
228
|
+
if (err) {
|
|
229
|
+
reject(err);
|
|
230
|
+
if (callback) {
|
|
231
|
+
callback(err, null);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
if (callback) {
|
|
236
|
+
callback(null, value);
|
|
237
|
+
}
|
|
238
|
+
resolve(value);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
async getJSON(key, callback) {
|
|
245
|
+
const value = await this.get(key);
|
|
246
|
+
return JSON.parse(value);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
async del(key, callback) {
|
|
250
|
+
return new Promise( async (resolve, reject) => {
|
|
251
|
+
this.client.del(key, () => {
|
|
252
|
+
if (callback) {
|
|
253
|
+
callback();
|
|
254
|
+
}
|
|
255
|
+
return resolve();
|
|
256
|
+
});
|
|
257
|
+
})
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
module.exports = { TdCache };
|
package/TiledeskExpression.js
CHANGED
|
@@ -218,6 +218,10 @@ class TiledeskExpression {
|
|
|
218
218
|
name: "roundAsNumber",
|
|
219
219
|
applyPattern: "TiledeskMath.round(Number(#1))"
|
|
220
220
|
},
|
|
221
|
+
"convertToNumber": {
|
|
222
|
+
name: "convertToNumber",
|
|
223
|
+
applyPattern: "Number(#1)"
|
|
224
|
+
},
|
|
221
225
|
"JSONparse": {
|
|
222
226
|
name: "JSONparse",
|
|
223
227
|
applyPattern: "JSON.parse(String(#1))"
|
|
@@ -259,7 +263,7 @@ class TiledeskExpression {
|
|
|
259
263
|
// console.log("res=", res)
|
|
260
264
|
}
|
|
261
265
|
catch (err) {
|
|
262
|
-
console.error("(evaluateJavascriptExpression) TiledeskExpression.evaluate() error:", err.message, "- while evaluating the following expression: '" + expression + "'");
|
|
266
|
+
// console.error("(evaluateJavascriptExpression) TiledeskExpression.evaluate() error:", err.message, "- while evaluating the following expression: '" + expression + "'");
|
|
263
267
|
}
|
|
264
268
|
return res;
|
|
265
269
|
}
|
|
@@ -333,7 +337,7 @@ class TiledeskExpression {
|
|
|
333
337
|
res = vm.run(`let $data = this;${expression}`);
|
|
334
338
|
}
|
|
335
339
|
catch (err) {
|
|
336
|
-
console.error("TiledeskExpression.evaluate() error:", err.message, "evaluating expression: '" + expression + "'");
|
|
340
|
+
// console.error("TiledeskExpression.evaluate() error:", err.message, "evaluating expression: '" + expression + "'");
|
|
337
341
|
}
|
|
338
342
|
return res;
|
|
339
343
|
}
|
|
@@ -355,7 +359,7 @@ class TiledeskExpression {
|
|
|
355
359
|
// console.log("operand1_s:", operand1_s);
|
|
356
360
|
}
|
|
357
361
|
else {
|
|
358
|
-
console.error("Condition evaluation stopped because of invalid
|
|
362
|
+
console.error("Condition evaluation stopped because of invalid operand1", condition.operand1);
|
|
359
363
|
return null;
|
|
360
364
|
}
|
|
361
365
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const Utils = require('./utils')
|
|
2
|
+
class AiService {
|
|
3
|
+
|
|
4
|
+
constructor(options){
|
|
5
|
+
this.APIURL = options.API_ENDPOINT
|
|
6
|
+
this.TOKEN = options.TOKEN
|
|
7
|
+
this.PROJECT_ID = options.PROJECT_ID
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
async speechToText(url){
|
|
11
|
+
return new Promise((resolve, reject)=> {
|
|
12
|
+
const HTTPREQUEST = {
|
|
13
|
+
url: `${this.APIURL}/${this.PROJECT_ID}/llm/transcription`,
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type' : 'application/json',
|
|
16
|
+
'Authorization': Utils.fixToken(this.TOKEN)
|
|
17
|
+
},
|
|
18
|
+
json: {
|
|
19
|
+
url: url
|
|
20
|
+
},
|
|
21
|
+
method: 'POST',
|
|
22
|
+
httpsOptions: this.httpsOptions
|
|
23
|
+
};
|
|
24
|
+
Utils.myrequest(
|
|
25
|
+
HTTPREQUEST,
|
|
26
|
+
function(err, resbody) {
|
|
27
|
+
if (err) {
|
|
28
|
+
reject(err)
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
resolve(resbody)
|
|
32
|
+
}
|
|
33
|
+
}, this.LOG
|
|
34
|
+
);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports= AiService
|