1 parent
dee9864157
commit
2e42d0e7eb
22 files changed
+68
-6
No files matched your search
@@ -35,8 +35,8 @@ import { sleep } from '@waha/utils/promiseTimeout';
|
||||
import { Job } from 'bullmq';
|
||||
import { PinoLogger } from 'nestjs-pino';
|
||||
|
||||
import { ChatWootAppConfig } from '../../dto/config.dto';
|
||||
import { TKey } from '@waha/apps/chatwoot/i18n/templates';
|
||||
import { isJidBroadcast } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
|
||||
export function ListenEventsForChatWoot() {
|
||||
return [
|
||||
@@ -285,7 +285,7 @@ export abstract class MessageBaseHandler<Payload extends WAMessageBase> {
|
||||
const chatId = payload.from;
|
||||
|
||||
// Add participant name to group messages
|
||||
const manyParticipants = isJidGroup(chatId) || isJidStatusBroadcast(chatId);
|
||||
const manyParticipants = isJidGroup(chatId) || isJidBroadcast(chatId);
|
||||
if (!payload.fromMe && manyParticipants) {
|
||||
const key = parseMessageIdSerialized(payload.id, true);
|
||||
let participant = toCusFormat(key.participant);
|
||||
|
||||
@@ -3,8 +3,14 @@ import {
|
||||
isJidNewsletter,
|
||||
isJidStatusBroadcast,
|
||||
} from '@adiwajshing/baileys';
|
||||
import { isLidUser } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import { public_contact_create_update_payload as Contact } from '@figuro/chatwoot-sdk';
|
||||
import {
|
||||
isJidBroadcast,
|
||||
isLidUser,
|
||||
} from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import {
|
||||
public_contact_create_update_payload,
|
||||
public_contact_create_update_payload as Contact,
|
||||
} from '@figuro/chatwoot-sdk';
|
||||
import { ContactInfo } from '@waha/apps/chatwoot/client/ContactConversationService';
|
||||
import { AttributeKey } from '@waha/apps/chatwoot/const';
|
||||
import { Locale } from '@waha/apps/chatwoot/i18n/locale';
|
||||
@@ -221,6 +227,31 @@ class StatusContactInfo extends ChatContactInfo {
|
||||
}
|
||||
}
|
||||
|
||||
class BroadcastContactInfo extends ChatContactInfo {
|
||||
async Attributes() {
|
||||
return {
|
||||
[AttributeKey.WA_CHAT_ID]: this.chatId,
|
||||
};
|
||||
}
|
||||
|
||||
@CacheAsync()
|
||||
async AvatarUrl(): Promise<string | null> {
|
||||
return null;
|
||||
}
|
||||
|
||||
async PublicContactCreate(): Promise<Contact> {
|
||||
const name = this.locale
|
||||
.key(TKey.WHATSAPP_CONTACT_BROADCAST_SUFFIX)
|
||||
.render();
|
||||
|
||||
return {
|
||||
identifier: this.chatId,
|
||||
name: `${name} (${this.chatId})`,
|
||||
custom_attributes: await this.Attributes(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory function to get the appropriate ContactInfo implementation
|
||||
* based on the chat ID type
|
||||
@@ -236,6 +267,8 @@ export function WhatsAppContactInfo(
|
||||
return new ChannelContactInfo(session, chatId, locale);
|
||||
} else if (isJidStatusBroadcast(chatId)) {
|
||||
return new StatusContactInfo(session, chatId, locale);
|
||||
} else if (isJidBroadcast(chatId)) {
|
||||
return new BroadcastContactInfo(session, chatId, locale);
|
||||
} else if (isLidUser(chatId)) {
|
||||
return new LidContactInfo(session, chatId, locale);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'مجموعة'
|
||||
whatsapp.contact.channel.suffix: 'قناة'
|
||||
whatsapp.contact.broadcast.suffix: 'قائمة البث'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'الحالة'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'গ্রুপ'
|
||||
whatsapp.contact.channel.suffix: 'চ্যানেল'
|
||||
whatsapp.contact.broadcast.suffix: 'প্রচার তালিকা'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'স্ট্যাটাস'
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Gruppe'
|
||||
whatsapp.contact.channel.suffix: 'Kanal'
|
||||
whatsapp.contact.broadcast.suffix: 'Broadcast-Liste'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Group'
|
||||
whatsapp.contact.channel.suffix: 'Channel'
|
||||
whatsapp.contact.broadcast.suffix: 'Broadcast List'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grupo'
|
||||
whatsapp.contact.channel.suffix: 'Canal'
|
||||
whatsapp.contact.broadcast.suffix: 'Lista de difusión'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Estado'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'گروه'
|
||||
whatsapp.contact.channel.suffix: 'کانال'
|
||||
whatsapp.contact.broadcast.suffix: 'فهرست انتشار'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'وضعیت'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Groupe'
|
||||
whatsapp.contact.channel.suffix: 'Canal'
|
||||
whatsapp.contact.broadcast.suffix: 'Liste de diffusion'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Statut'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'קבוצה'
|
||||
whatsapp.contact.channel.suffix: 'ערוץ'
|
||||
whatsapp.contact.broadcast.suffix: 'רשימת שידור'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'סטטוס'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'समूह'
|
||||
whatsapp.contact.channel.suffix: 'चैनल'
|
||||
whatsapp.contact.broadcast.suffix: 'प्रसारण सूची'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'स्थिति'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grup'
|
||||
whatsapp.contact.channel.suffix: 'Saluran'
|
||||
whatsapp.contact.broadcast.suffix: 'Daftar Siaran'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'ਗਰੁੱਪ'
|
||||
whatsapp.contact.channel.suffix: 'ਚੈਨਲ'
|
||||
whatsapp.contact.broadcast.suffix: 'ਪ੍ਰਸਾਰਣ ਸੂਚੀ'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'ਸਥਿਤੀ'
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grupo'
|
||||
whatsapp.contact.channel.suffix: 'Canal'
|
||||
whatsapp.contact.broadcast.suffix: 'Lista de transmissão'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Группа'
|
||||
whatsapp.contact.channel.suffix: 'Канал'
|
||||
whatsapp.contact.broadcast.suffix: 'Список рассылки'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Статус'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grup'
|
||||
whatsapp.contact.channel.suffix: 'Kanal'
|
||||
whatsapp.contact.broadcast.suffix: 'Yayın Listesi'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Durum'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'Група'
|
||||
whatsapp.contact.channel.suffix: 'Канал'
|
||||
whatsapp.contact.broadcast.suffix: 'Список розсилки'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Статус'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: 'گروپ'
|
||||
whatsapp.contact.channel.suffix: 'چینل'
|
||||
whatsapp.contact.broadcast.suffix: 'براڈکاسٹ فہرست'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'سٹیٹس'
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ whatsapp.reaction.removed: |
|
||||
|
||||
whatsapp.contact.group.suffix: '群组'
|
||||
whatsapp.contact.channel.suffix: '频道'
|
||||
whatsapp.contact.broadcast.suffix: '广播列表'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: '状态'
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ export enum TKey {
|
||||
//
|
||||
WHATSAPP_CONTACT_GROUP_SUFFIX = 'whatsapp.contact.group.suffix',
|
||||
WHATSAPP_CONTACT_CHANNEL_SUFFIX = 'whatsapp.contact.channel.suffix',
|
||||
WHATSAPP_CONTACT_BROADCAST_SUFFIX = 'whatsapp.contact.broadcast.suffix',
|
||||
WHATSAPP_CONTACT_STATUS_NAME = 'whatsapp.contact.status.name',
|
||||
|
||||
//
|
||||
@@ -114,6 +115,7 @@ export type TemplatePayloads = {
|
||||
[TKey.WHATSAPP_MESSAGE_REMOVING_ERROR]: void;
|
||||
[TKey.WHATSAPP_CONTACT_GROUP_SUFFIX]: void;
|
||||
[TKey.WHATSAPP_CONTACT_CHANNEL_SUFFIX]: void;
|
||||
[TKey.WHATSAPP_CONTACT_BROADCAST_SUFFIX]: void;
|
||||
[TKey.WHATSAPP_CONTACT_STATUS_NAME]: void;
|
||||
[TKey.CW_TO_WA_MESSAGE_TEXT]: {
|
||||
content: string;
|
||||
|
||||
@@ -1914,7 +1914,12 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
if (message.Message.protocolMessage) return;
|
||||
|
||||
const normalizedContent = normalizeMessageContent(message.Message);
|
||||
const hasSomeContent = !!getContentType(normalizedContent);
|
||||
const contentType = getContentType(normalizedContent);
|
||||
// Ignore device sent message
|
||||
if (contentType == 'deviceSentMessage') {
|
||||
return;
|
||||
}
|
||||
const hasSomeContent = !!contentType;
|
||||
if (!hasSomeContent) {
|
||||
// Ignore key distribution messages
|
||||
if (message?.Message?.senderKeyDistributionMessage) return;
|
||||
|
||||
@@ -2211,7 +2211,12 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
return;
|
||||
|
||||
const normalizedContent = normalizeMessageContent(message.message);
|
||||
const hasSomeContent = !!getContentType(normalizedContent);
|
||||
const contentType = getContentType(normalizedContent);
|
||||
// Ignore device sent message
|
||||
if (contentType == 'deviceSentMessage') {
|
||||
return;
|
||||
}
|
||||
const hasSomeContent = !!contentType;
|
||||
if (!hasSomeContent) {
|
||||
// Ignore key distribution messages
|
||||
if (message?.message?.senderKeyDistributionMessage) return;
|
||||
|
||||
Reference in new issue
Block a user