@tiledesk/tiledesk-whatsapp-connector 1.0.22 → 1.0.24
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/.env +1 -1
- package/index.js +8 -3
- package/package.json +1 -1
- package/tiledesk/TiledeskChannel.js +24 -16
- package/utils/utils.js +46 -0
package/.env
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# CUSTOM ENV
|
|
2
|
-
NPM_PUBLISH_TOKEN=
|
|
2
|
+
NPM_PUBLISH_TOKEN=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
|
package/index.js
CHANGED
|
@@ -878,9 +878,14 @@ router.post('/webhook', async (req, res) => {
|
|
|
878
878
|
|
|
879
879
|
if (tiledeskJsonMessage) {
|
|
880
880
|
winston.verbose("(wab) tiledeskJsonMessage: ", tiledeskJsonMessage);
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
881
|
+
|
|
882
|
+
try {
|
|
883
|
+
const response = await tdChannel.send(tiledeskJsonMessage, message_info, settings.department_id);
|
|
884
|
+
winston.verbose("(wab) Message sent to Tiledesk!");
|
|
885
|
+
winston.debug("(wab) response: ", response);
|
|
886
|
+
} catch (err) {
|
|
887
|
+
winston.error("(wab) send message error: ", err);
|
|
888
|
+
}
|
|
884
889
|
} else {
|
|
885
890
|
winston.verbose("(wab) tiledeskJsonMessage is undefined");
|
|
886
891
|
}
|
package/package.json
CHANGED
|
@@ -2,6 +2,7 @@ const axios = require("axios").default;
|
|
|
2
2
|
const jwt = require('jsonwebtoken');
|
|
3
3
|
const { v4: uuidv4 } = require('uuid');
|
|
4
4
|
const winston = require('../winston')
|
|
5
|
+
const utils = require('../utils/utils');
|
|
5
6
|
|
|
6
7
|
class TiledeskChannel {
|
|
7
8
|
|
|
@@ -53,6 +54,7 @@ class TiledeskChannel {
|
|
|
53
54
|
async send(tiledeskMessage, messageInfo, department_id) {
|
|
54
55
|
|
|
55
56
|
let channel;
|
|
57
|
+
let request_id;
|
|
56
58
|
let new_request_id;
|
|
57
59
|
|
|
58
60
|
if (department_id) {
|
|
@@ -85,7 +87,6 @@ class TiledeskChannel {
|
|
|
85
87
|
const requestsResponse = await this.getRequests(messageInfo.channel, token);
|
|
86
88
|
winston.debug("(wab) [TiledeskChannel] get request response: ", requestsResponse.data);
|
|
87
89
|
|
|
88
|
-
let request_id;
|
|
89
90
|
if (requestsResponse.data.requests[0]) {
|
|
90
91
|
request_id = requestsResponse.data.requests[0].request_id;
|
|
91
92
|
winston.debug("(wab) [TiledeskChannel] Old request_id: " + request_id);
|
|
@@ -94,20 +95,24 @@ class TiledeskChannel {
|
|
|
94
95
|
winston.debug("(wab) [TiledeskChannel] New request_id: " + request_id);
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
winston.debug("(wab) [TiledeskChannel] tiledeskMessage:", tiledeskMessage);
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
const sendResponse = await this.sendMessage(request_id, tiledeskMessage, token);
|
|
101
|
-
winston.debug("(wab) [TiledeskChannel] send message response: ", sendResponse.data);
|
|
102
|
-
return sendResponse.data;
|
|
103
|
-
} catch (err) {
|
|
104
|
-
winston.error("(wab) [TiledeskChannel] send message error: ", err);
|
|
105
|
-
throw err;
|
|
106
|
-
}
|
|
107
98
|
} catch (err) {
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
const errorMessage = utils._extractErrorMessage(err);
|
|
100
|
+
winston.error("(wab) [TiledeskChannel] get requests error: " + errorMessage);
|
|
101
|
+
throw new Error(errorMessage);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
winston.debug("(wab) [TiledeskChannel] tiledeskMessage:", tiledeskMessage);
|
|
105
|
+
|
|
106
|
+
try {
|
|
107
|
+
const sendResponse = await this.sendMessage(request_id, tiledeskMessage, token);
|
|
108
|
+
winston.debug("(wab) [TiledeskChannel] send message response: ", sendResponse.data);
|
|
109
|
+
return sendResponse.data;
|
|
110
|
+
} catch (err) {
|
|
111
|
+
const errorMessage = utils._extractErrorMessage(err);
|
|
112
|
+
winston.error("(wab) [TiledeskChannel] send message error: " + errorMessage);
|
|
113
|
+
throw new Error(errorMessage);
|
|
110
114
|
}
|
|
115
|
+
|
|
111
116
|
}
|
|
112
117
|
|
|
113
118
|
/**
|
|
@@ -227,10 +232,12 @@ class TiledeskChannel {
|
|
|
227
232
|
}).then((response) => {
|
|
228
233
|
return response.data
|
|
229
234
|
}).catch((err) => {
|
|
230
|
-
|
|
235
|
+
const errorMessage = utils._extractErrorMessage(err);
|
|
236
|
+
winston.error("(wab) [TiledeskChannel] send message (open conversation) error: " + errorMessage);
|
|
231
237
|
})
|
|
232
238
|
}).catch((err) => {
|
|
233
|
-
|
|
239
|
+
const errorMessage = utils._extractErrorMessage(err);
|
|
240
|
+
winston.error("(wab) [TiledeskChannel] sign in error: " + errorMessage);
|
|
234
241
|
})
|
|
235
242
|
}
|
|
236
243
|
|
|
@@ -250,7 +257,8 @@ class TiledeskChannel {
|
|
|
250
257
|
}).then((response) => {
|
|
251
258
|
return this.checkPlan(response.data);
|
|
252
259
|
}).catch((err) => {
|
|
253
|
-
|
|
260
|
+
const errorMessage = utils._extractErrorMessage(err);
|
|
261
|
+
winston.error("(wab) [TiledeskChannel] get project detail error: " + errorMessage);
|
|
254
262
|
return null;
|
|
255
263
|
})
|
|
256
264
|
}
|
package/utils/utils.js
CHANGED
|
@@ -35,6 +35,50 @@ class Utils {
|
|
|
35
35
|
}
|
|
36
36
|
return phonePrefixes[matchedPrefix];
|
|
37
37
|
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Extract error message from axios error, converting it to a string
|
|
41
|
+
* @param {Error} err - The error object
|
|
42
|
+
* @returns {string} - A string representation of the error
|
|
43
|
+
*/
|
|
44
|
+
_extractErrorMessage(err) {
|
|
45
|
+
if (!err) {
|
|
46
|
+
return 'Unknown error';
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// If it's an axios error with a response
|
|
50
|
+
if (err.response) {
|
|
51
|
+
const status = err.response.status;
|
|
52
|
+
const statusText = err.response.statusText;
|
|
53
|
+
const data = err.response.data;
|
|
54
|
+
|
|
55
|
+
// Try to extract a meaningful message from response.data
|
|
56
|
+
let message = '';
|
|
57
|
+
if (typeof data === 'string') {
|
|
58
|
+
message = data;
|
|
59
|
+
} else if (data && typeof data === 'object') {
|
|
60
|
+
// Try common error message fields
|
|
61
|
+
message = data.message || data.error?.message || data.error || JSON.stringify(data);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return `HTTP ${status} ${statusText}${message ? ': ' + message : ''}`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// If it's an axios error without response (network error, timeout, etc.)
|
|
68
|
+
if (err.request) {
|
|
69
|
+
const code = err.code || '';
|
|
70
|
+
const message = err.message || 'Network error';
|
|
71
|
+
return code ? `${message} (${code})` : message;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// For other errors, use the message or convert to string
|
|
75
|
+
if (err.message) {
|
|
76
|
+
return err.message;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Last resort: convert to string
|
|
80
|
+
return String(err);
|
|
81
|
+
}
|
|
38
82
|
|
|
39
83
|
}
|
|
40
84
|
|
|
@@ -46,6 +90,8 @@ function fixNumber(phone_number) {
|
|
|
46
90
|
}
|
|
47
91
|
}
|
|
48
92
|
|
|
93
|
+
|
|
94
|
+
|
|
49
95
|
let utils = new Utils();
|
|
50
96
|
|
|
51
97
|
module.exports = utils;
|