diff --git a/apps/metamigo-api/src/app/services/signald.ts b/apps/metamigo-api/src/app/services/signald.ts index e16f5b2..6a05c76 100644 --- a/apps/metamigo-api/src/app/services/signald.ts +++ b/apps/metamigo-api/src/app/services/signald.ts @@ -3,6 +3,7 @@ import { Service } from "@hapipal/schmervice"; import { promises as fs } from "fs"; import { SignaldAPI, + SendResponsev1, IncomingMessagev1, ClientMessageWrapperv1, } from "@digiresilience/node-signald"; @@ -118,17 +119,21 @@ export default class SignaldService extends Service { return db.signalBots.findBy({ token }); } - async register(bot: Bot, code: string): Promise { + async register(bot: Bot, code: string): Promise { const address = await this.signald.verify(bot.phoneNumber, code); this.server.db().signalBots.updateAuthInfo(bot, address.address.uuid); } - async send(bot: Bot, phoneNumber: string, message: string): Promise { + async send( + bot: Bot, + phoneNumber: string, + message: string + ): Promise { this.server.logger.debug( - { us: bot.phoneNumber, then: phoneNumber, message }, + { us: bot.phoneNumber, them: phoneNumber, message }, "signald send" ); - return await this.signald.send( + return this.signald.send( bot.phoneNumber, { number: phoneNumber }, undefined, @@ -136,8 +141,8 @@ export default class SignaldService extends Service { ); } - async resetSession(bot: Bot, phoneNumber: string): Promise { - return await this.signald.resetSession(bot.phoneNumber, { + async resetSession(bot: Bot, phoneNumber: string): Promise { + return this.signald.resetSession(bot.phoneNumber, { number: phoneNumber, }); } diff --git a/apps/metamigo-api/src/app/services/whatsapp.ts b/apps/metamigo-api/src/app/services/whatsapp.ts index 7efdbd0..4c3a679 100644 --- a/apps/metamigo-api/src/app/services/whatsapp.ts +++ b/apps/metamigo-api/src/app/services/whatsapp.ts @@ -136,14 +136,13 @@ export default class WhatsappService extends Service { } private async queueMessage(bot: Bot, webMessageInfo: proto.WebMessageInfo) { - const { key: { id, fromMe }, message, messageTimestamp } = webMessageInfo; - - if (!fromMe && message) { - const isMediaMessage = - message.audioMessage || - message.documentMessage || - message.imageMessage || - message.videoMessage; + const { key: { id, fromMe, remoteJid }, message, messageTimestamp } = webMessageInfo; + if (!fromMe && message && remoteJid !== "status@broadcast") { + const { audioMessage, documentMessage, imageMessage, videoMessage } = message; + const isMediaMessage = audioMessage || + documentMessage || + imageMessage || + videoMessage; const messageContent = Object.values(message)[0] let messageType: MediaType; @@ -151,25 +150,25 @@ export default class WhatsappService extends Service { let filename: string; let mimetype: string; if (isMediaMessage) { - if (message.audioMessage) { + if (audioMessage) { messageType = "audio"; filename = - id + "." + message.audioMessage.mimetype.split("/").pop(); - mimetype = message.audioMessage.mimetype; - } else if (message.documentMessage) { + id + "." + audioMessage.mimetype.split("/").pop(); + mimetype = audioMessage.mimetype; + } else if (documentMessage) { messageType = "document"; - filename = message.documentMessage.fileName; - mimetype = message.documentMessage.mimetype; - } else if (message.imageMessage) { + filename = documentMessage.fileName; + mimetype = documentMessage.mimetype; + } else if (imageMessage) { messageType = "image"; filename = - id + "." + message.imageMessage.mimetype.split("/").pop(); - mimetype = message.imageMessage.mimetype; - } else if (message.videoMessage) { + id + "." + imageMessage.mimetype.split("/").pop(); + mimetype = imageMessage.mimetype; + } else if (videoMessage) { messageType = "video" filename = - id + "." + message.videoMessage.mimetype.split("/").pop(); - mimetype = message.videoMessage.mimetype; + id + "." + videoMessage.mimetype.split("/").pop(); + mimetype = videoMessage.mimetype; } const stream = await downloadContentFromMessage(messageContent, messageType) @@ -199,7 +198,7 @@ export default class WhatsappService extends Service { } } - private async queueUnreadMessages(bot: Bot, messages: any[]) { + private async queueUnreadMessages(bot: Bot, messages: proto.IWebMessageInfo[]) { for await (const message of messages) { await this.queueMessage(bot, message); } @@ -266,9 +265,8 @@ export default class WhatsappService extends Service { } } - async receive(bot: Bot, lastReceivedDate: Date): Promise { + async receive(bot: Bot, _lastReceivedDate: Date): Promise { const connection = this.connections[bot.id]?.socket; - const messages = await connection.loadAllUnreadMessages(); return messages; }