@tiledesk/tiledesk-whatsapp-connector 0.1.8 → 0.1.10
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/index.js +18 -11
- package/package.json +1 -1
- package/template/configure.html +26 -6
- package/template/css/style.css +46 -0
- package/test/test_translate_whatsapp.js +35 -35
- package/tiledesk/TiledeskWhatsappTranslator.js +19 -21
package/index.js
CHANGED
|
@@ -12,7 +12,7 @@ const bodyParser = require("body-parser");
|
|
|
12
12
|
const appRoot = require('app-root-path');
|
|
13
13
|
const handlebars = require('handlebars');
|
|
14
14
|
const fs = require('fs');
|
|
15
|
-
|
|
15
|
+
const path = require('path');
|
|
16
16
|
//const FormData = require('form-data');
|
|
17
17
|
|
|
18
18
|
// tiledesk clients
|
|
@@ -28,6 +28,7 @@ const kvbase_collection = 'kvstore';
|
|
|
28
28
|
|
|
29
29
|
router.use(bodyParser.json());
|
|
30
30
|
router.use(bodyParser.urlencoded({ extended: true }));
|
|
31
|
+
router.use(express.static(path.join(__dirname, 'template')));
|
|
31
32
|
|
|
32
33
|
//const TOKEN = process.env.WHATSAPP_TOKEN; // From FB DevX getting started page
|
|
33
34
|
//const VERIFY_TOKEN = process.env.VERIFY_TOKEN; // Arbitrary, used with webhook configuration in FB DevX
|
|
@@ -340,9 +341,9 @@ router.post('/tiledesk', async (req, res) => {
|
|
|
340
341
|
let phone_number_id = recipient_id.substring(recipient_id.lastIndexOf("wab-") + 4, recipient_id.lastIndexOf("-"));
|
|
341
342
|
console.log("(Tiledesk) phone_number_id: ", phone_number_id)
|
|
342
343
|
|
|
343
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
344
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
344
345
|
|
|
345
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
346
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
346
347
|
console.log("whatsappJsonMessage: ", whatsappJsonMessage);
|
|
347
348
|
|
|
348
349
|
if (whatsappJsonMessage) {
|
|
@@ -362,7 +363,7 @@ router.post('/tiledesk', async (req, res) => {
|
|
|
362
363
|
})
|
|
363
364
|
*/
|
|
364
365
|
} else {
|
|
365
|
-
console.error("Whatsapp Json Message is
|
|
366
|
+
console.error("Whatsapp Json Message is undefined!")
|
|
366
367
|
}
|
|
367
368
|
// richiamo toWhatsapp;
|
|
368
369
|
// sendMessage
|
|
@@ -392,9 +393,15 @@ router.post("/webhook/:project_id", async (req, res) => {
|
|
|
392
393
|
|
|
393
394
|
console.log("\n***Body: ", JSON.stringify(req.body, null, 2));
|
|
394
395
|
|
|
396
|
+
if (req.body.entry[0].changes[0].value.messages[0].type == "system") {
|
|
397
|
+
console.log("Skip system message")
|
|
398
|
+
res.sendStatus(200);
|
|
399
|
+
}
|
|
400
|
+
|
|
395
401
|
//let originalWhatsappMessage = req.body;
|
|
396
402
|
let whatsappChannelMessage = req.body.entry[0].changes[0].value.messages[0];
|
|
397
403
|
|
|
404
|
+
|
|
398
405
|
let firstname = req.body.entry[0].changes[0].value.contacts[0].profile.name;
|
|
399
406
|
console.log("(WAB) firstname: ", firstname)
|
|
400
407
|
|
|
@@ -423,16 +430,16 @@ router.post("/webhook/:project_id", async (req, res) => {
|
|
|
423
430
|
|
|
424
431
|
let tiledeskJsonMessage;
|
|
425
432
|
|
|
426
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
433
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
427
434
|
|
|
428
435
|
if ((whatsappChannelMessage.type == 'text')) {
|
|
429
436
|
console.log("message type text")
|
|
430
|
-
tiledeskJsonMessage = tlr.toTiledesk(firstname);
|
|
437
|
+
tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, firstname);
|
|
431
438
|
|
|
432
439
|
}
|
|
433
440
|
else if (whatsappChannelMessage.type == 'interactive') {
|
|
434
441
|
console.log("message type interactive")
|
|
435
|
-
tiledeskJsonMessage = tlr.toTiledesk(firstname);
|
|
442
|
+
tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, firstname);
|
|
436
443
|
|
|
437
444
|
}
|
|
438
445
|
else if ((whatsappChannelMessage.type == 'image') || (whatsappChannelMessage.type == 'video') || (whatsappChannelMessage.type == 'document')) {
|
|
@@ -449,7 +456,7 @@ router.post("/webhook/:project_id", async (req, res) => {
|
|
|
449
456
|
const image_url = await util.uploadMedia(filename, "images");
|
|
450
457
|
console.log("image_url: ", image_url)
|
|
451
458
|
|
|
452
|
-
tiledeskJsonMessage = tlr.toTiledesk(firstname, image_url);
|
|
459
|
+
tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, firstname, image_url);
|
|
453
460
|
|
|
454
461
|
}
|
|
455
462
|
|
|
@@ -462,7 +469,7 @@ router.post("/webhook/:project_id", async (req, res) => {
|
|
|
462
469
|
const media_url = await util.uploadMedia(filename, "files");
|
|
463
470
|
console.log("image_url: ", media_url)
|
|
464
471
|
|
|
465
|
-
tiledeskJsonMessage = tlr.toTiledesk(firstname, media_url);
|
|
472
|
+
tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, firstname, media_url);
|
|
466
473
|
}
|
|
467
474
|
|
|
468
475
|
if (whatsappChannelMessage.type == 'document') {
|
|
@@ -474,7 +481,7 @@ router.post("/webhook/:project_id", async (req, res) => {
|
|
|
474
481
|
const media_url = await util.uploadMedia(filename, "files");
|
|
475
482
|
console.log("image_url: ", media_url)
|
|
476
483
|
|
|
477
|
-
tiledeskJsonMessage = tlr.toTiledesk(firstname, media_url);
|
|
484
|
+
tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, firstname, media_url);
|
|
478
485
|
}
|
|
479
486
|
|
|
480
487
|
} else {
|
|
@@ -492,7 +499,7 @@ router.post("/webhook/:project_id", async (req, res) => {
|
|
|
492
499
|
}
|
|
493
500
|
|
|
494
501
|
}
|
|
495
|
-
res.sendStatus(200);
|
|
502
|
+
res.sendStatus(200);
|
|
496
503
|
} else {
|
|
497
504
|
// Return a '404 Not Found' if event is not from a WhatsApp API
|
|
498
505
|
res.sendStatus(404);
|
package/package.json
CHANGED
package/template/configure.html
CHANGED
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"
|
|
24
24
|
integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous">
|
|
25
25
|
</script>
|
|
26
|
+
|
|
27
|
+
<link rel="stylesheet" href="./css/style.css">
|
|
26
28
|
|
|
27
29
|
</head>
|
|
28
30
|
|
|
@@ -43,7 +45,7 @@
|
|
|
43
45
|
<div>
|
|
44
46
|
|
|
45
47
|
<h1 style="margin-top: 0px; margin-bottom: 2px; min-width: 500px;">WhatsApp Business</h1>
|
|
46
|
-
<h7 style="color: rgb(140, 140, 140);">by Tiledesk (v. 0.1.
|
|
48
|
+
<h7 style="color: rgb(140, 140, 140);">by Tiledesk (v. 0.1.9)</h7>
|
|
47
49
|
|
|
48
50
|
{{#if wab_token}}
|
|
49
51
|
<div style="margin-top: 20px;">
|
|
@@ -94,9 +96,14 @@
|
|
|
94
96
|
<form action="./update" method="post">
|
|
95
97
|
|
|
96
98
|
<div class="form-group" style="width: 490px;">
|
|
97
|
-
<label
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
<label for="proxy_url">Webhook Endpoint
|
|
100
|
+
<span style="margin-left: 10px;">
|
|
101
|
+
<i class="fa fa-question-circle custom-tooltip" style="color: #337ab7;">
|
|
102
|
+
<span class="custom-tooltiptext">This is the endpoint to be reached by WhatsApp. Copy it to the Facebook Developer console in "Callback URL" in Whatsapp Configuration. See documention for more info.</span>
|
|
103
|
+
</i>
|
|
104
|
+
</span>
|
|
105
|
+
</label>
|
|
106
|
+
<!--<p style="margin-bottom: 5px; font-size: 12px; color: #a7a7a7;">Copy this URL in the Facebook Developer Dashboad. See documentation for more info.</p> -->
|
|
100
107
|
<div style="display: flex; flex-direction: row; justify-content: space-between">
|
|
101
108
|
<div style="width: 400px;">
|
|
102
109
|
<input type="text" readonly class="form-control" name="proxy_url" id="proxy_url"
|
|
@@ -117,13 +124,26 @@
|
|
|
117
124
|
</div>
|
|
118
125
|
|
|
119
126
|
<div class="form-group" style="width: 400px;">
|
|
120
|
-
<label for="wab_token">Whatsapp Token
|
|
127
|
+
<label for="wab_token">Whatsapp Token
|
|
128
|
+
<span style="margin-left: 10px;">
|
|
129
|
+
<i class="fa fa-question-circle custom-tooltip" style="color: #337ab7;">
|
|
130
|
+
<span class="custom-tooltiptext">Paste it the permanent WhatsApp Business token. See documention for more info.</span>
|
|
131
|
+
</i>
|
|
132
|
+
</span>
|
|
133
|
+
</label>
|
|
121
134
|
<input type="text" class="form-control" name="wab_token" value="{{ wab_token }}"
|
|
122
135
|
placeholder="Enter the Whatsapp Token">
|
|
123
136
|
</div>
|
|
124
137
|
|
|
125
138
|
<div class="form-group" style="width: 400px;">
|
|
126
|
-
<label for="verify_token">Verify Token
|
|
139
|
+
<label for="verify_token">Verify Token
|
|
140
|
+
<span style="margin-left: 10px;">
|
|
141
|
+
<i class="fa fa-question-circle custom-tooltip" style="color: #337ab7;">
|
|
142
|
+
<span class="custom-tooltiptext">This is a verification token of your choice. Copy it to the Facebook Developer console in "Verify Token" in Whatsapp Configuration.
|
|
143
|
+
See documention for more info.</span>
|
|
144
|
+
</i>
|
|
145
|
+
</span>
|
|
146
|
+
</label>
|
|
127
147
|
<input type="password" class="form-control" name="verify_token" value="{{ verify_token }}"
|
|
128
148
|
placeholder="Enter your Verify Token">
|
|
129
149
|
</div>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* Tooltip container */
|
|
2
|
+
.custom-tooltip {
|
|
3
|
+
position: relative;
|
|
4
|
+
display: inline-block;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Tooltip text */
|
|
8
|
+
.custom-tooltip .custom-tooltiptext {
|
|
9
|
+
visibility: hidden;
|
|
10
|
+
width: 260px;
|
|
11
|
+
background-color: #6e6f70;
|
|
12
|
+
font-size: 13px;
|
|
13
|
+
color: #fff;
|
|
14
|
+
text-align: center;
|
|
15
|
+
padding: 8px 8px;
|
|
16
|
+
border-radius: 6px;
|
|
17
|
+
|
|
18
|
+
/* Position the tooltip text */
|
|
19
|
+
position: absolute;
|
|
20
|
+
z-index: 1;
|
|
21
|
+
bottom: 125%;
|
|
22
|
+
left: 50%;
|
|
23
|
+
margin-left: -130px;
|
|
24
|
+
|
|
25
|
+
/* Fade in tooltip */
|
|
26
|
+
opacity: 0;
|
|
27
|
+
transition: opacity 0.3s;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Tooltip arrow */
|
|
31
|
+
.custom-tooltip .custom-tooltiptext::after {
|
|
32
|
+
content: "";
|
|
33
|
+
position: absolute;
|
|
34
|
+
top: 100%;
|
|
35
|
+
left: 50%;
|
|
36
|
+
margin-left: -5px;
|
|
37
|
+
border-width: 5px;
|
|
38
|
+
border-style: solid;
|
|
39
|
+
border-color: #555 transparent transparent transparent;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Show the tooltip text when you mouse over the tooltip container */
|
|
43
|
+
.custom-tooltip:hover .custom-tooltiptext {
|
|
44
|
+
visibility: visible;
|
|
45
|
+
opacity: 1;
|
|
46
|
+
}
|
|
@@ -10,16 +10,16 @@ describe('Test Translator\n', function() {
|
|
|
10
10
|
it("Translates a TEXT message from Tiledesk to Whatsapp", function() {
|
|
11
11
|
let tiledeskChannelMessage = {
|
|
12
12
|
text: 'Test Message',
|
|
13
|
-
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-
|
|
13
|
+
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-wab-104777398965560-393484506627',
|
|
14
14
|
attributes: {
|
|
15
15
|
userFullname: 'John Doe'
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("tel") + 1)
|
|
19
19
|
|
|
20
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
20
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
21
21
|
assert(tlr != null);
|
|
22
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
22
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
23
23
|
assert(whatsappJsonMessage != null);
|
|
24
24
|
assert(whatsappJsonMessage.messaging_product === TiledeskWhatsappTranslator.WHATSAPP_MESSAGING_PRODUCT);
|
|
25
25
|
assert(whatsappJsonMessage.to === whatsapp_receiver);
|
|
@@ -36,7 +36,7 @@ describe('Test Translator\n', function() {
|
|
|
36
36
|
let tiledeskChannelMessage = {
|
|
37
37
|
text: 'Image Caption', // can be empty --> ""
|
|
38
38
|
type: 'image',
|
|
39
|
-
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-
|
|
39
|
+
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-wab-104777398965560-393484506627',
|
|
40
40
|
metadata: {
|
|
41
41
|
src: 'https://fakeimageurl.com/',
|
|
42
42
|
},
|
|
@@ -46,9 +46,9 @@ describe('Test Translator\n', function() {
|
|
|
46
46
|
}
|
|
47
47
|
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("tel") + 3)
|
|
48
48
|
|
|
49
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
49
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
50
50
|
assert(tlr != null);
|
|
51
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
51
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
52
52
|
assert(whatsappJsonMessage != null);
|
|
53
53
|
assert(whatsappJsonMessage.messaging_product === TiledeskWhatsappTranslator.WHATSAPP_MESSAGING_PRODUCT);
|
|
54
54
|
assert(whatsappJsonMessage.to === whatsapp_receiver);
|
|
@@ -67,7 +67,7 @@ describe('Test Translator\n', function() {
|
|
|
67
67
|
let tiledeskChannelMessage = {
|
|
68
68
|
text: 'Video Caption', // can be empty --> ""
|
|
69
69
|
type: 'video',
|
|
70
|
-
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-
|
|
70
|
+
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-wab-104777398965560-393484506627',
|
|
71
71
|
metadata: {
|
|
72
72
|
src: 'https://fakevideourl.com/'
|
|
73
73
|
},
|
|
@@ -77,9 +77,9 @@ describe('Test Translator\n', function() {
|
|
|
77
77
|
}
|
|
78
78
|
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("tel") + 3)
|
|
79
79
|
|
|
80
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
80
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
81
81
|
assert(tlr != null);
|
|
82
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
82
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
83
83
|
assert(whatsappJsonMessage != null);
|
|
84
84
|
assert(whatsappJsonMessage.messaging_product === TiledeskWhatsappTranslator.WHATSAPP_MESSAGING_PRODUCT);
|
|
85
85
|
assert(whatsappJsonMessage.to === whatsapp_receiver);
|
|
@@ -98,7 +98,7 @@ describe('Test Translator\n', function() {
|
|
|
98
98
|
let tiledeskChannelMessage = {
|
|
99
99
|
text: 'Document Caption', // can be empty --> ""
|
|
100
100
|
type: 'application',
|
|
101
|
-
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-
|
|
101
|
+
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-wab-104777398965560-393484506627',
|
|
102
102
|
metadata: {
|
|
103
103
|
src: 'https://fakedocumenturl.com/'
|
|
104
104
|
},
|
|
@@ -108,9 +108,9 @@ describe('Test Translator\n', function() {
|
|
|
108
108
|
}
|
|
109
109
|
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("tel") + 3)
|
|
110
110
|
|
|
111
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
111
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
112
112
|
assert(tlr != null);
|
|
113
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
113
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
114
114
|
assert(whatsappJsonMessage != null);
|
|
115
115
|
assert(whatsappJsonMessage.messaging_product === TiledeskWhatsappTranslator.WHATSAPP_MESSAGING_PRODUCT);
|
|
116
116
|
assert(whatsappJsonMessage.to === whatsapp_receiver);
|
|
@@ -128,7 +128,7 @@ describe('Test Translator\n', function() {
|
|
|
128
128
|
|
|
129
129
|
let tiledeskChannelMessage = {
|
|
130
130
|
text: 'Test Message',
|
|
131
|
-
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-
|
|
131
|
+
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-wab-104777398965560-393484506627',
|
|
132
132
|
attributes: {
|
|
133
133
|
attachment: {
|
|
134
134
|
buttons: [
|
|
@@ -141,9 +141,9 @@ describe('Test Translator\n', function() {
|
|
|
141
141
|
}
|
|
142
142
|
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("tel") + 3)
|
|
143
143
|
|
|
144
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
144
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
145
145
|
assert(tlr != null);
|
|
146
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
146
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
147
147
|
assert(whatsappJsonMessage != null);
|
|
148
148
|
assert(whatsappJsonMessage.messaging_product === TiledeskWhatsappTranslator.WHATSAPP_MESSAGING_PRODUCT);
|
|
149
149
|
assert(!whatsappJsonMessage.text);
|
|
@@ -166,7 +166,7 @@ describe('Test Translator\n', function() {
|
|
|
166
166
|
|
|
167
167
|
let tiledeskChannelMessage = {
|
|
168
168
|
text: 'Test Message',
|
|
169
|
-
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-
|
|
169
|
+
recipient: 'support-group-62c3f10152dc7400352bab0d-86a2293e-wab-104777398965560-393484506627',
|
|
170
170
|
attributes: {
|
|
171
171
|
attachment: {
|
|
172
172
|
buttons: [
|
|
@@ -179,11 +179,11 @@ describe('Test Translator\n', function() {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("
|
|
182
|
+
let whatsapp_receiver = tiledeskChannelMessage.recipient.substring(tiledeskChannelMessage.recipient.lastIndexOf("-") + 1)
|
|
183
183
|
|
|
184
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
184
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
185
185
|
assert(tlr != null);
|
|
186
|
-
const whatsappJsonMessage = tlr.toWhatsapp(whatsapp_receiver);
|
|
186
|
+
const whatsappJsonMessage = tlr.toWhatsapp(tiledeskChannelMessage, whatsapp_receiver);
|
|
187
187
|
assert(whatsappJsonMessage != null);
|
|
188
188
|
assert(whatsappJsonMessage.messaging_product === TiledeskWhatsappTranslator.WHATSAPP_MESSAGING_PRODUCT);
|
|
189
189
|
assert(!whatsappJsonMessage.text);
|
|
@@ -214,9 +214,9 @@ describe('Test Translator\n', function() {
|
|
|
214
214
|
}
|
|
215
215
|
let fullname = "John Doe"; // from whatsapp contacts
|
|
216
216
|
|
|
217
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
217
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
218
218
|
assert(tlr != null);
|
|
219
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, null)
|
|
219
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, null)
|
|
220
220
|
assert(tiledeskJsonMessage != null);
|
|
221
221
|
assert(tiledeskJsonMessage.channel.name === TiledeskWhatsappTranslator.CHANNEL_NAME);
|
|
222
222
|
assert(tiledeskJsonMessage.text === whatsappChannelMessage.text.body);
|
|
@@ -241,9 +241,9 @@ describe('Test Translator\n', function() {
|
|
|
241
241
|
}
|
|
242
242
|
let fullname = "John Doe"; // from whatsapp contacts
|
|
243
243
|
|
|
244
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
244
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
245
245
|
assert(tlr != null);
|
|
246
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, null)
|
|
246
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, null)
|
|
247
247
|
assert(tiledeskJsonMessage != null);
|
|
248
248
|
assert(tiledeskJsonMessage.channel.name === TiledeskWhatsappTranslator.CHANNEL_NAME);
|
|
249
249
|
assert(tiledeskJsonMessage.text === whatsappChannelMessage.interactive.list_reply.title);
|
|
@@ -268,9 +268,9 @@ describe('Test Translator\n', function() {
|
|
|
268
268
|
}
|
|
269
269
|
let fullname = "John Doe"; // from whatsapp contacts
|
|
270
270
|
|
|
271
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
271
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
272
272
|
assert(tlr != null);
|
|
273
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, null)
|
|
273
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, null)
|
|
274
274
|
assert(tiledeskJsonMessage != null);
|
|
275
275
|
assert(tiledeskJsonMessage.channel.name === TiledeskWhatsappTranslator.CHANNEL_NAME);
|
|
276
276
|
assert(tiledeskJsonMessage.text === ' ');
|
|
@@ -303,9 +303,9 @@ describe('Test Translator\n', function() {
|
|
|
303
303
|
}
|
|
304
304
|
let fullname = "John Doe"; // from whatsapp contacts
|
|
305
305
|
|
|
306
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
306
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
307
307
|
assert(tlr != null);
|
|
308
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, null)
|
|
308
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, null)
|
|
309
309
|
assert(tiledeskJsonMessage != null);
|
|
310
310
|
assert(tiledeskJsonMessage.channel.name === TiledeskWhatsappTranslator.CHANNEL_NAME);
|
|
311
311
|
assert(tiledeskJsonMessage.text === whatsappChannelMessage.interactive.button_reply.title);
|
|
@@ -330,9 +330,9 @@ describe('Test Translator\n', function() {
|
|
|
330
330
|
}
|
|
331
331
|
let fullname = "John Doe"; // from whatsapp contacts
|
|
332
332
|
|
|
333
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
333
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
334
334
|
assert(tlr != null);
|
|
335
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, null)
|
|
335
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, null)
|
|
336
336
|
assert(tiledeskJsonMessage != null);
|
|
337
337
|
assert(tiledeskJsonMessage.channel.name === TiledeskWhatsappTranslator.CHANNEL_NAME);
|
|
338
338
|
assert(tiledeskJsonMessage.text === ' ');
|
|
@@ -359,9 +359,9 @@ describe('Test Translator\n', function() {
|
|
|
359
359
|
let fullname = "John Doe";
|
|
360
360
|
let media_url = "https://fakeimageurl.com/"
|
|
361
361
|
|
|
362
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
362
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
363
363
|
assert(tlr != null);
|
|
364
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, media_url);
|
|
364
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, media_url);
|
|
365
365
|
assert(tiledeskJsonMessage != null);
|
|
366
366
|
if (log) {
|
|
367
367
|
console.log("(test) tiledeskJsonMessage: ", tiledeskJsonMessage);
|
|
@@ -379,9 +379,9 @@ describe('Test Translator\n', function() {
|
|
|
379
379
|
let fullname = "John Doe";
|
|
380
380
|
let media_url = "https://fakeimageurl.com/"
|
|
381
381
|
|
|
382
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
382
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
383
383
|
assert(tlr != null);
|
|
384
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, media_url);
|
|
384
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, media_url);
|
|
385
385
|
assert(tiledeskJsonMessage != null);
|
|
386
386
|
if (log) {
|
|
387
387
|
console.log("(test) tiledeskJsonMessage: ", tiledeskJsonMessage);
|
|
@@ -399,9 +399,9 @@ describe('Test Translator\n', function() {
|
|
|
399
399
|
let fullname = "John Doe";
|
|
400
400
|
let media_url = "https://fakedocumenturl.com/"
|
|
401
401
|
|
|
402
|
-
const tlr = new TiledeskWhatsappTranslator(
|
|
402
|
+
const tlr = new TiledeskWhatsappTranslator();
|
|
403
403
|
assert(tlr != null);
|
|
404
|
-
const tiledeskJsonMessage = tlr.toTiledesk(fullname, media_url);
|
|
404
|
+
const tiledeskJsonMessage = tlr.toTiledesk(whatsappChannelMessage, fullname, media_url);
|
|
405
405
|
assert(tiledeskJsonMessage != null);
|
|
406
406
|
if (log) {
|
|
407
407
|
console.log("(test) tiledeskJsonMessage: ", tiledeskJsonMessage);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
class TiledeskWhatsappTranslator {
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -6,20 +5,16 @@ class TiledeskWhatsappTranslator {
|
|
|
6
5
|
*
|
|
7
6
|
* @example
|
|
8
7
|
* const { TiledeskWhatsappTranslator } = require('tiledesk-whatsapp-translator');
|
|
9
|
-
* const tlr = new TiledeskWhatsappTranslator(
|
|
8
|
+
* const tlr = new TiledeskWhatsappTranslator();
|
|
10
9
|
*
|
|
11
10
|
* @param {Object} config JSON configuration.
|
|
12
|
-
* @param {string} config.channelMessage Mandatory. Tiledesk channel native message
|
|
13
|
-
* @param {boolean} options.log Optional. If true HTTP requests are logged.
|
|
14
11
|
*/
|
|
15
12
|
|
|
16
13
|
static WHATSAPP_MESSAGING_PRODUCT = "whatsapp";
|
|
17
|
-
static CHANNEL_NAME = "whatsapp"
|
|
14
|
+
static CHANNEL_NAME = "whatsapp";
|
|
18
15
|
|
|
19
|
-
constructor(
|
|
20
|
-
|
|
21
|
-
throw new Error('config is mandatory');
|
|
22
|
-
}
|
|
16
|
+
constructor() {
|
|
17
|
+
|
|
23
18
|
|
|
24
19
|
/*
|
|
25
20
|
if (!config.tiledeskChannelMessage) {
|
|
@@ -28,15 +23,9 @@ class TiledeskWhatsappTranslator {
|
|
|
28
23
|
this.tiledeskChannelMessage = config.tiledeskChannelMessage;
|
|
29
24
|
console.log("this.tiledeskChannelMessage: ", this.tiledeskChannelMessage);
|
|
30
25
|
*/
|
|
31
|
-
|
|
32
|
-
if (!config.channelMessage) {
|
|
33
|
-
throw new Error('config.channelMessage is mandatory');
|
|
34
|
-
}
|
|
35
|
-
this.channelMessage = config.channelMessage;
|
|
26
|
+
|
|
36
27
|
this.log = true;
|
|
37
|
-
|
|
38
|
-
this.log = true;
|
|
39
|
-
}
|
|
28
|
+
|
|
40
29
|
|
|
41
30
|
}
|
|
42
31
|
|
|
@@ -46,11 +35,21 @@ class TiledeskWhatsappTranslator {
|
|
|
46
35
|
********* WHATSAPP BUSINESS *********
|
|
47
36
|
*************************************
|
|
48
37
|
*/
|
|
49
|
-
|
|
38
|
+
|
|
39
|
+
/** Returns a Whatsapp messagem new request ID for the specified Project.<br>
|
|
40
|
+
* A request's ID has the format:<br>
|
|
41
|
+
* <br>
|
|
42
|
+
* <i>support-group-PROJECT_ID-UNIQUE_ID</i><br>
|
|
43
|
+
* <br>
|
|
44
|
+
* <i>UNIQUE_ID</i> MUST be unique in your Project. <b>This method always returns an <i>UUID</i> for the <i>UNIQUE_ID</i> component</b>.
|
|
45
|
+
*
|
|
46
|
+
* @param {Object} tiledeskChannelMessage - The message in Tiledesk format.
|
|
47
|
+
* @param {string} whatsapp_receiver - The Whatsapp recipient fo the message.
|
|
48
|
+
*/
|
|
49
|
+
toWhatsapp(tiledeskChannelMessage, whatsapp_receiver) {
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
// to --> recipient
|
|
53
|
-
let tiledeskChannelMessage = this.channelMessage;
|
|
54
53
|
if (this.log) {
|
|
55
54
|
console.log("[Translator] tiledesk message: ", tiledeskChannelMessage)
|
|
56
55
|
}
|
|
@@ -287,9 +286,8 @@ class TiledeskWhatsappTranslator {
|
|
|
287
286
|
}
|
|
288
287
|
}
|
|
289
288
|
|
|
290
|
-
toTiledesk(from, media_url) {
|
|
289
|
+
toTiledesk(whatsappChannelMessage, from, media_url) {
|
|
291
290
|
|
|
292
|
-
let whatsappChannelMessage = this.channelMessage;
|
|
293
291
|
if (this.log) {
|
|
294
292
|
console.log("[Translator] whatsapp message: ", whatsappChannelMessage)
|
|
295
293
|
}
|