mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-14 01:41:24 -06:00
feat: Added reject call and send text message when receiving a call and Added setting to ignore group messages
This commit is contained in:
parent
73d9cd62a5
commit
1fcbd4f9fd
@ -5,6 +5,8 @@
|
|||||||
* Added connection functionality via pairing code
|
* Added connection functionality via pairing code
|
||||||
* Added fetch profile endpoint in chat controller
|
* Added fetch profile endpoint in chat controller
|
||||||
* Created settings controller
|
* Created settings controller
|
||||||
|
* Added reject call and send text message when receiving a call
|
||||||
|
* Added setting to ignore group messages
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
@ -12,7 +14,7 @@
|
|||||||
|
|
||||||
### Integrations
|
### Integrations
|
||||||
|
|
||||||
- Chatwoot: v2.18.0
|
- Chatwoot: v2.18.0 - v3.0.0 (Beta)
|
||||||
|
|
||||||
# 1.3.2 (2023-07-21 17:19)
|
# 1.3.2 (2023-07-21 17:19)
|
||||||
|
|
||||||
|
@ -1086,6 +1086,7 @@ export class WAStartupService {
|
|||||||
type: MessageUpsertType;
|
type: MessageUpsertType;
|
||||||
},
|
},
|
||||||
database: Database,
|
database: Database,
|
||||||
|
settings: SettingsRaw,
|
||||||
) => {
|
) => {
|
||||||
this.logger.verbose('Event received: messages.upsert');
|
this.logger.verbose('Event received: messages.upsert');
|
||||||
const received = messages[0];
|
const received = messages[0];
|
||||||
@ -1103,6 +1104,11 @@ export class WAStartupService {
|
|||||||
received.messageTimestamp = received.messageTimestamp?.toNumber();
|
received.messageTimestamp = received.messageTimestamp?.toNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.groups_ignore && received.key.remoteJid.includes('@g.us')) {
|
||||||
|
this.logger.verbose('group ignored');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const messageRaw: MessageRaw = {
|
const messageRaw: MessageRaw = {
|
||||||
key: received.key,
|
key: received.key,
|
||||||
pushName: received.pushName,
|
pushName: received.pushName,
|
||||||
@ -1194,7 +1200,11 @@ export class WAStartupService {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
'messages.update': async (args: WAMessageUpdate[], database: Database) => {
|
'messages.update': async (
|
||||||
|
args: WAMessageUpdate[],
|
||||||
|
database: Database,
|
||||||
|
settings: SettingsRaw,
|
||||||
|
) => {
|
||||||
this.logger.verbose('Event received: messages.update');
|
this.logger.verbose('Event received: messages.update');
|
||||||
const status: Record<number, wa.StatusMessage> = {
|
const status: Record<number, wa.StatusMessage> = {
|
||||||
0: 'ERROR',
|
0: 'ERROR',
|
||||||
@ -1205,6 +1215,10 @@ export class WAStartupService {
|
|||||||
5: 'PLAYED',
|
5: 'PLAYED',
|
||||||
};
|
};
|
||||||
for await (const { key, update } of args) {
|
for await (const { key, update } of args) {
|
||||||
|
if (settings.groups_ignore && key.remoteJid.includes('@g.us')) {
|
||||||
|
this.logger.verbose('group ignored');
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (key.remoteJid !== 'status@broadcast' && !key?.remoteJid?.match(/(:\d+)/)) {
|
if (key.remoteJid !== 'status@broadcast' && !key?.remoteJid?.match(/(:\d+)/)) {
|
||||||
this.logger.verbose('Message update is valid');
|
this.logger.verbose('Message update is valid');
|
||||||
|
|
||||||
@ -1304,9 +1318,28 @@ export class WAStartupService {
|
|||||||
|
|
||||||
private eventHandler() {
|
private eventHandler() {
|
||||||
this.logger.verbose('Initializing event handler');
|
this.logger.verbose('Initializing event handler');
|
||||||
this.client.ev.process((events) => {
|
this.client.ev.process(async (events) => {
|
||||||
if (!this.endSession) {
|
if (!this.endSession) {
|
||||||
const database = this.configService.get<Database>('DATABASE');
|
const database = this.configService.get<Database>('DATABASE');
|
||||||
|
const settings = await this.findSettings();
|
||||||
|
|
||||||
|
if (events.call) {
|
||||||
|
this.logger.verbose('Listening event: call');
|
||||||
|
console.log('events.call', events.call);
|
||||||
|
const call = events.call[0];
|
||||||
|
|
||||||
|
if (settings?.reject_call && call.status == 'offer') {
|
||||||
|
this.logger.verbose('Rejecting call');
|
||||||
|
this.client.rejectCall(call.id, call.from);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings?.msg_call.trim().length > 0 && call.status == 'offer') {
|
||||||
|
this.logger.verbose('Sending message in call');
|
||||||
|
this.client.sendMessage(call.from, {
|
||||||
|
text: settings.msg_call,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (events['connection.update']) {
|
if (events['connection.update']) {
|
||||||
this.logger.verbose('Listening event: connection.update');
|
this.logger.verbose('Listening event: connection.update');
|
||||||
@ -1327,37 +1360,44 @@ export class WAStartupService {
|
|||||||
if (events['messages.upsert']) {
|
if (events['messages.upsert']) {
|
||||||
this.logger.verbose('Listening event: messages.upsert');
|
this.logger.verbose('Listening event: messages.upsert');
|
||||||
const payload = events['messages.upsert'];
|
const payload = events['messages.upsert'];
|
||||||
this.messageHandle['messages.upsert'](payload, database);
|
this.messageHandle['messages.upsert'](payload, database, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events['messages.update']) {
|
if (events['messages.update']) {
|
||||||
this.logger.verbose('Listening event: messages.update');
|
this.logger.verbose('Listening event: messages.update');
|
||||||
const payload = events['messages.update'];
|
const payload = events['messages.update'];
|
||||||
this.messageHandle['messages.update'](payload, database);
|
this.messageHandle['messages.update'](payload, database, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events['presence.update']) {
|
if (events['presence.update']) {
|
||||||
this.logger.verbose('Listening event: presence.update');
|
this.logger.verbose('Listening event: presence.update');
|
||||||
const payload = events['presence.update'];
|
const payload = events['presence.update'];
|
||||||
|
|
||||||
|
if (settings.groups_ignore && payload.id.includes('@g.us')) {
|
||||||
|
this.logger.verbose('group ignored');
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.sendDataWebhook(Events.PRESENCE_UPDATE, payload);
|
this.sendDataWebhook(Events.PRESENCE_UPDATE, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events['groups.upsert']) {
|
if (!settings?.groups_ignore) {
|
||||||
this.logger.verbose('Listening event: groups.upsert');
|
if (events['groups.upsert']) {
|
||||||
const payload = events['groups.upsert'];
|
this.logger.verbose('Listening event: groups.upsert');
|
||||||
this.groupHandler['groups.upsert'](payload);
|
const payload = events['groups.upsert'];
|
||||||
}
|
this.groupHandler['groups.upsert'](payload);
|
||||||
|
}
|
||||||
|
|
||||||
if (events['groups.update']) {
|
if (events['groups.update']) {
|
||||||
this.logger.verbose('Listening event: groups.update');
|
this.logger.verbose('Listening event: groups.update');
|
||||||
const payload = events['groups.update'];
|
const payload = events['groups.update'];
|
||||||
this.groupHandler['groups.update'](payload);
|
this.groupHandler['groups.update'](payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events['group-participants.update']) {
|
if (events['group-participants.update']) {
|
||||||
this.logger.verbose('Listening event: group-participants.update');
|
this.logger.verbose('Listening event: group-participants.update');
|
||||||
const payload = events['group-participants.update'];
|
const payload = events['group-participants.update'];
|
||||||
this.groupHandler['group-participants.update'](payload);
|
this.groupHandler['group-participants.update'](payload);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events['chats.upsert']) {
|
if (events['chats.upsert']) {
|
||||||
|
Loading…
Reference in New Issue
Block a user