@tiledesk/tiledesk-tybot-connector 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,17 +5,8 @@
5
5
  available on:
6
6
  ▶️ https://www.npmjs.com/package/@tiledesk/tiledesk-tybot-connector
7
7
 
8
- # v0.3.1
9
- - bug-fixed: callback is not defined
10
-
11
- # v0.2.153-rc8
12
- - added: fixToken function in TiledeskService utils class
13
-
14
- # v0.2.153-rc4
15
- - log added
16
-
17
- # v0.2.153-rc3
18
- - added: specchToText function to transcript audio file
8
+ # v0.3.2
9
+ - bug-fixed: minor improvement
19
10
 
20
11
  # v0.2.153-rc1
21
12
  - changed: context for gpt-40 and gpt-40-mini
@@ -0,0 +1,242 @@
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
+ await this.client.set(
51
+ key,
52
+ value,
53
+ 'EX', options.EX);
54
+ }
55
+ catch(error) {
56
+ reject(error)
57
+ }
58
+ }
59
+ else {
60
+ try {
61
+ //console.log("setting here...key", key, value)
62
+ await this.client.set(
63
+ key,
64
+ value);
65
+ }
66
+ catch(error) {
67
+ console.error("Error", error);
68
+ reject(error)
69
+ }
70
+ }
71
+ if (options && options.callback) {
72
+ options.callback();
73
+ }
74
+ //console.log("resolving...", key);
75
+ return resolve();
76
+ });
77
+ }
78
+
79
+ async incr(key) {
80
+ // console.log("incr key:", key)
81
+ return new Promise( async (resolve, reject) => {
82
+ try {
83
+ // console.log("incr here...key", key)
84
+ await this.client.incr(key);
85
+ }
86
+ catch(error) {
87
+ console.error("Error on incr:", error);
88
+ reject(error)
89
+ }
90
+ return resolve();
91
+ });
92
+ }
93
+
94
+ async hset(dict_key, key, value, options) {
95
+ //console.log("hsetting dict_key key value", dict_key, key, value)
96
+ return new Promise( async (resolve, reject) => {
97
+ if (options && options.EX) {
98
+ //console.log("expires:", options.EX)
99
+ try {
100
+ await this.client.hset(
101
+ dict_key,
102
+ key,
103
+ value,
104
+ 'EX', options.EX);
105
+ }
106
+ catch(error) {
107
+ reject(error)
108
+ }
109
+ }
110
+ else {
111
+ try {
112
+ //console.log("setting here...key", key, value)
113
+ await this.client.hset(
114
+ dict_key,
115
+ key,
116
+ value);
117
+ }
118
+ catch(error) {
119
+ console.error("Error", error);
120
+ reject(error)
121
+ }
122
+ }
123
+ if (options && options.callback) {
124
+ options.callback();
125
+ }
126
+ return resolve();
127
+ });
128
+ }
129
+
130
+ async hdel(dict_key, key, options) {
131
+ //console.log("hsetting dict_key key value", dict_key, key, value)
132
+ return new Promise( async (resolve, reject) => {
133
+ if (options && options.EX) {
134
+ //console.log("expires:", options.EX)
135
+ try {
136
+ await this.client.hdel(
137
+ dict_key,
138
+ key,
139
+ 'EX', options.EX);
140
+ }
141
+ catch(error) {
142
+ reject(error)
143
+ }
144
+ }
145
+ else {
146
+ try {
147
+ //console.log("setting here...key", key, value)
148
+ await this.client.hdel(
149
+ dict_key,
150
+ key);
151
+ }
152
+ catch(error) {
153
+ console.error("Error", error);
154
+ reject(error);
155
+ }
156
+ }
157
+ if (options && options.callback) {
158
+ options.callback();
159
+ }
160
+ return resolve();
161
+ });
162
+ }
163
+
164
+ async setJSON(key, value, options) {
165
+ const _string = JSON.stringify(value);
166
+ return await this.set(key, _string, options);
167
+ }
168
+
169
+ async get(key, callback) {
170
+ //console.log("getting key", key)
171
+ return new Promise( async (resolve, reject) => {
172
+ this.client.get(key, (err, value) => {
173
+ if (err) {
174
+ reject(err);
175
+ }
176
+ else {
177
+ if (callback) {
178
+ callback(value);
179
+ }
180
+ return resolve(value);
181
+ }
182
+ });
183
+ });
184
+ }
185
+
186
+ async hgetall(dict_key, callback) {
187
+ //console.log("hgetting dics", dict_key);
188
+ return new Promise( async (resolve, reject) => {
189
+ this.client.hgetall(dict_key, (err, value) => {
190
+ if (err) {
191
+ reject(err);
192
+ if (callback) {
193
+ callback(err, null);
194
+ }
195
+ }
196
+ else {
197
+ if (callback) {
198
+ callback(null, value);
199
+ }
200
+ resolve(value);
201
+ }
202
+ });
203
+ });
204
+ }
205
+
206
+ async hget(dict_key, key, callback) {
207
+ //console.log("hgetting dics", dict_key);
208
+ return new Promise( async (resolve, reject) => {
209
+ this.client.hget(dict_key, key, (err, value) => {
210
+ if (err) {
211
+ reject(err);
212
+ if (callback) {
213
+ callback(err, null);
214
+ }
215
+ }
216
+ else {
217
+ if (callback) {
218
+ callback(null, value);
219
+ }
220
+ resolve(value);
221
+ }
222
+ });
223
+ });
224
+ }
225
+
226
+ async getJSON(key, callback) {
227
+ const value = await this.get(key);
228
+ return JSON.parse(value);
229
+ }
230
+
231
+ async del(key, callback) {
232
+ return new Promise( async (resolve, reject) => {
233
+ await this.client.del(key);
234
+ if (callback) {
235
+ callback();
236
+ }
237
+ return resolve();
238
+ })
239
+ }
240
+ }
241
+
242
+ module.exports = { TdCache };
package/index.js CHANGED
@@ -65,17 +65,15 @@ router.post('/ext/:botid', async (req, res) => {
65
65
  }
66
66
 
67
67
  /** MANAGE AUDIO FILE MESSAGE */
68
- let aiService = new AiService({
68
+ let aiService = new AiService({
69
69
  API_ENDPOINT: API_ENDPOINT,
70
70
  TOKEN: token,
71
71
  PROJECT_ID: projectId
72
72
  })
73
73
  let isAudio = TiledeskChatbotUtil.isAudioMessage(message)
74
74
  if(isAudio){
75
- console.log('(chatbot index) is audio', message.metadata)
76
75
  let responseText = await aiService.speechToText(message.metadata.src).catch(err => {
77
- console.log('errrr', err)
78
- return res.status(400).send({"success": false, error: "Unable to translate audio message for request: " + requestId})
76
+ if(log) console.log('(index.js) aiService.speechToText error: ', err)
79
77
  })
80
78
  message.text= responseText.text
81
79
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-tybot-connector",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Tiledesk Tybot connector",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -15,7 +15,6 @@
15
15
  "@tiledesk/tiledesk-chatbot-client": "^0.5.30",
16
16
  "@tiledesk/tiledesk-chatbot-util": "^0.8.39",
17
17
  "@tiledesk/tiledesk-client": "^0.10.13",
18
- "@tiledesk/tiledesk-multi-worker": "^0.1.14",
19
18
  "accept-language-parser": "^1.5.0",
20
19
  "axios": "^1.7.7",
21
20
  "body-parser": "^1.19.0",
@@ -3,7 +3,6 @@ const { TiledeskChatbot } = require('../../models/TiledeskChatbot');
3
3
  const { TiledeskChatbotUtil } = require('../../models/TiledeskChatbotUtil');
4
4
  let axios = require('axios');
5
5
  const { TiledeskClient } = require('@tiledesk/tiledesk-client');
6
- const { Logger } = require('../../Logger');
7
6
 
8
7
  class DirReply {
9
8
 
@@ -17,7 +16,6 @@ class DirReply {
17
16
  this.token = context.token;
18
17
  this.tdcache = context.tdcache;
19
18
  this.log = context.log;
20
- this.logger = new Logger({ request_id: this.requestId, dev: this.context.supportRequest.draft });
21
19
 
22
20
  this.API_ENDPOINT = context.API_ENDPOINT;
23
21
  this.tdClient = new TiledeskClient({
@@ -43,10 +41,7 @@ class DirReply {
43
41
  callback();
44
42
  return;
45
43
  }
46
- this.logger.info("1 Execute action reply for " + directive.action.text)
47
-
48
44
  this.go(action, () => {
49
- this.logger.info("6 End of action reply " + directive.action.text + " -> callback")
50
45
  callback();
51
46
  });
52
47
  }
@@ -69,8 +64,6 @@ class DirReply {
69
64
  const filler = new Filler();
70
65
  // fill text attribute
71
66
  message.text = filler.fill(message.text, requestAttributes);
72
- this.logger.info("2 Sending reply " + message.text);
73
-
74
67
  if (message.metadata) {
75
68
  if (this.log) {console.log("filling message 'metadata':", JSON.stringify(message.metadata));}
76
69
  if (message.metadata.src) {
@@ -146,8 +139,6 @@ class DirReply {
146
139
  }
147
140
  // send!
148
141
  let cleanMessage = message;
149
- this.logger.info("3 Sending reply (text) " + cleanMessage.text);
150
- this.logger.info("4 Sending reply with clean message " + JSON.stringify(cleanMessage));
151
142
  // cleanMessage = TiledeskChatbotUtil.removeEmptyReplyCommands(message);
152
143
  // if (!TiledeskChatbotUtil.isValidReply(cleanMessage)) {
153
144
  // console.log("invalid message", cleanMessage);
@@ -165,10 +156,8 @@ class DirReply {
165
156
  (err) => {
166
157
  if (err) {
167
158
  console.error("Error sending reply:", err);
168
- this.logger.error("Error sending reply: " + err);
169
159
  }
170
160
  if (this.log) {console.log("Reply message sent:", JSON.stringify(cleanMessage));}
171
- this.logger.info("5 Reply message sent");
172
161
  const delay = TiledeskChatbotUtil.totalMessageWait(cleanMessage);
173
162
  // console.log("got total delay:", delay)
174
163
  if (delay > 0 && delay <= 30000) { // prevent long delays
package/Logger.js DELETED
@@ -1,74 +0,0 @@
1
- let { Publisher } = require("@tiledesk/tiledesk-multi-worker");
2
-
3
- const AMQP_MANAGER_URL = process.env.AMQP_MANAGER_URL;
4
- let publisher = new Publisher(AMQP_MANAGER_URL, {
5
- debug: false,
6
- queueName: "logs_queue",
7
- exchange: "tiledesk-multi",
8
- topic: "logs",
9
- })
10
-
11
- class Logger {
12
-
13
- constructor(config) {
14
-
15
- if (!config) {
16
- throw new Error('config is mandatory');
17
- }
18
-
19
- if (!config.request_id) {
20
- console.error('config.request_id is mandatory');
21
- //throw new Error('config.request_id is mandatory');
22
- }
23
-
24
- this.request_id = config.request_id;
25
- this.dev = config.dev;
26
-
27
- if (!AMQP_MANAGER_URL) {
28
- console.error('AMQP_MANAGER_URL is undefined. Logger not available...');
29
- return;
30
- //throw new Error("Error starting logger: AMQP_MANAGER_URL is undefined.")
31
- }
32
-
33
- }
34
-
35
- error(text) {
36
- if (!this.request_id || !publisher) {
37
- console.log("Return because request or publisher is undefined", this.request_id, publisher);
38
- return;
39
- }
40
-
41
- let data = {
42
- request_id: this.request_id,
43
- text: text,
44
- level: "error",
45
- timestamp: new Date()
46
- }
47
- publisher.publish(data, (err, ok) => {
48
- if (err) console.warn("publish log fail: ", err);
49
- return;
50
- })
51
- }
52
-
53
- info(text) {
54
- if (!this.request_id || !publisher) {
55
- console.log("Return because request or publisher is undefined", this.request_id, publisher);
56
- return;
57
- }
58
-
59
- let data = {
60
- request_id: this.request_id,
61
- text: text,
62
- level: "info",
63
- timestamp: new Date()
64
- }
65
-
66
- publisher.publish(data, (err, ok) => {
67
- if (err) console.warn("publish log fail: ", err);
68
- return;
69
- })
70
- }
71
-
72
- }
73
-
74
- module.exports = { Logger }