@open-wa/wa-automate 4.64.4 → 4.64.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -474,92 +474,101 @@ class ChatwootClient {
|
|
474
474
|
processWAMessage(message) {
|
475
475
|
var _a;
|
476
476
|
return __awaiter(this, void 0, void 0, function* () {
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
/**
|
483
|
-
* Does the contact exist in chatwoot?
|
484
|
-
*/
|
485
|
-
if (!contactReg[message.chatId]) {
|
486
|
-
const contact = yield this.searchContact(message.chatId);
|
487
|
-
if (contact) {
|
488
|
-
contactReg[message.chatId] = contact.id;
|
489
|
-
}
|
490
|
-
else {
|
491
|
-
//create the contact
|
492
|
-
contactReg[message.chatId] = (yield this.createContact(message.sender)).id;
|
477
|
+
try {
|
478
|
+
let isNewConversation = false;
|
479
|
+
if (message.chatId.includes('g')) {
|
480
|
+
//chatwoot integration does not support group chats
|
481
|
+
return;
|
493
482
|
}
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
if (conversation) {
|
498
|
-
convoReg[message.chatId] = conversation.id;
|
483
|
+
if (message.chatId.includes('broadcast')) {
|
484
|
+
//chatwoot integration does not support broadcast or story messages
|
485
|
+
return;
|
499
486
|
}
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
487
|
+
/**
|
488
|
+
* Does the contact exist in chatwoot?
|
489
|
+
*/
|
490
|
+
if (!contactReg[message.chatId]) {
|
491
|
+
const contact = yield this.searchContact(message.chatId);
|
492
|
+
if (contact) {
|
493
|
+
contactReg[message.chatId] = contact.id;
|
494
|
+
}
|
495
|
+
else {
|
496
|
+
//create the contact
|
497
|
+
contactReg[message.chatId] = (yield this.createContact(message.sender)).id;
|
498
|
+
}
|
504
499
|
}
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
let text = message.body;
|
510
|
-
let hasAttachments = false;
|
511
|
-
switch (message.type) {
|
512
|
-
case 'list_response':
|
513
|
-
/**
|
514
|
-
* Possible CSAT response:
|
515
|
-
*/
|
516
|
-
yield this.processCSATResponse(message);
|
517
|
-
break;
|
518
|
-
case 'location':
|
519
|
-
text = `Location Message:\n\n${message.loc}\n\nhttps://www.google.com/maps?q=${message.lat},${message.lng}`;
|
520
|
-
break;
|
521
|
-
case 'buttons_response':
|
522
|
-
text = message.selectedButtonId;
|
523
|
-
break;
|
524
|
-
case 'document':
|
525
|
-
case 'image':
|
526
|
-
case 'audio':
|
527
|
-
case 'ptt':
|
528
|
-
case 'video':
|
529
|
-
if (message.cloudUrl) {
|
530
|
-
text = `FILE:\t${message.cloudUrl}\n\nMESSAGE:\t${message.text}`;
|
500
|
+
if (!convoReg[message.chatId]) {
|
501
|
+
const conversation = yield this.getContactConversation(message.chatId);
|
502
|
+
if (conversation) {
|
503
|
+
convoReg[message.chatId] = conversation.id;
|
531
504
|
}
|
532
505
|
else {
|
533
|
-
|
534
|
-
|
506
|
+
//create the conversation
|
507
|
+
convoReg[message.chatId] = (yield this.createConversation(contactReg[message.chatId])).id;
|
508
|
+
isNewConversation = convoReg[message.chatId];
|
535
509
|
}
|
536
|
-
|
537
|
-
default:
|
538
|
-
text = ((_a = message === null || message === void 0 ? void 0 : message.ctwaContext) === null || _a === void 0 ? void 0 : _a.sourceUrl) ? `${message.body}\n\n${message.ctwaContext.sourceUrl}` : message.body || "__UNHANDLED__";
|
539
|
-
break;
|
540
|
-
}
|
541
|
-
const newCWMessage = hasAttachments ? yield this.sendAttachmentMessage(text, message.chatId, message) : yield this.sendConversationMessage(text, message.chatId, message);
|
542
|
-
if (isNewConversation !== false) {
|
543
|
-
/**
|
544
|
-
* Wait 3 seconds before trying to check for an automated message
|
545
|
-
*/
|
546
|
-
yield (0, tools_1.timeout)(3000);
|
547
|
-
/**
|
548
|
-
* Check the messages to see if a message_type: 3 comes through after the initial message;
|
549
|
-
*/
|
550
|
-
const msgs = yield this.getAllInboxMessages(`${isNewConversation}`);
|
551
|
-
if (!msgs)
|
552
|
-
return;
|
553
|
-
/**
|
554
|
-
* Message IDs are numbers (for now)
|
555
|
-
*/
|
556
|
-
const possibleWelcomeMessage = msgs.filter(m => m.id > newCWMessage.id).find(m => m.message_type === 3 && m.content_type !== 'input_csat');
|
557
|
-
if (!possibleWelcomeMessage)
|
558
|
-
return;
|
510
|
+
}
|
559
511
|
/**
|
560
|
-
*
|
512
|
+
* Does the conversation exist in
|
561
513
|
*/
|
562
|
-
|
514
|
+
let text = message.body;
|
515
|
+
let hasAttachments = false;
|
516
|
+
switch (message.type) {
|
517
|
+
case 'list_response':
|
518
|
+
/**
|
519
|
+
* Possible CSAT response:
|
520
|
+
*/
|
521
|
+
yield this.processCSATResponse(message);
|
522
|
+
break;
|
523
|
+
case 'location':
|
524
|
+
text = `Location Message:\n\n${message.loc}\n\nhttps://www.google.com/maps?q=${message.lat},${message.lng}`;
|
525
|
+
break;
|
526
|
+
case 'buttons_response':
|
527
|
+
text = message.selectedButtonId;
|
528
|
+
break;
|
529
|
+
case 'document':
|
530
|
+
case 'image':
|
531
|
+
case 'audio':
|
532
|
+
case 'ptt':
|
533
|
+
case 'video':
|
534
|
+
if (message.cloudUrl) {
|
535
|
+
text = `FILE:\t${message.cloudUrl}\n\nMESSAGE:\t${message.text}`;
|
536
|
+
}
|
537
|
+
else {
|
538
|
+
text = message.text;
|
539
|
+
hasAttachments = true;
|
540
|
+
}
|
541
|
+
break;
|
542
|
+
default:
|
543
|
+
text = ((_a = message === null || message === void 0 ? void 0 : message.ctwaContext) === null || _a === void 0 ? void 0 : _a.sourceUrl) ? `${message.body}\n\n${message.ctwaContext.sourceUrl}` : message.body || "__UNHANDLED__";
|
544
|
+
break;
|
545
|
+
}
|
546
|
+
const newCWMessage = hasAttachments ? yield this.sendAttachmentMessage(text, message.chatId, message) : yield this.sendConversationMessage(text, message.chatId, message);
|
547
|
+
if (isNewConversation !== false) {
|
548
|
+
/**
|
549
|
+
* Wait 3 seconds before trying to check for an automated message
|
550
|
+
*/
|
551
|
+
yield (0, tools_1.timeout)(3000);
|
552
|
+
/**
|
553
|
+
* Check the messages to see if a message_type: 3 comes through after the initial message;
|
554
|
+
*/
|
555
|
+
const msgs = yield this.getAllInboxMessages(`${isNewConversation}`);
|
556
|
+
if (!msgs)
|
557
|
+
return;
|
558
|
+
/**
|
559
|
+
* Message IDs are numbers (for now)
|
560
|
+
*/
|
561
|
+
const possibleWelcomeMessage = msgs.filter(m => m.id > newCWMessage.id).find(m => m.message_type === 3 && m.content_type !== 'input_csat');
|
562
|
+
if (!possibleWelcomeMessage)
|
563
|
+
return;
|
564
|
+
/**
|
565
|
+
* Ok reply with the welcome message now
|
566
|
+
*/
|
567
|
+
yield this.client.sendText(message.chatId, possibleWelcomeMessage.content || "...");
|
568
|
+
}
|
569
|
+
}
|
570
|
+
catch (error) {
|
571
|
+
console.error(`Something went wrong processing this message: ${message.id}`, error);
|
563
572
|
}
|
564
573
|
});
|
565
574
|
}
|
package/package.json
CHANGED