@@ -911,16 +911,7 @@ export class BaileysStartupService extends ChannelStartupService {
911911 continue ;
912912 }
913913
914- messagesRaw . push ( {
915- key : m . key ,
916- pushName : m . pushName || m . key . remoteJid . split ( '@' ) [ 0 ] ,
917- participant : m . participant ,
918- message : { ...m . message } ,
919- messageType : getContentType ( m . message ) ,
920- messageTimestamp : m . messageTimestamp as number ,
921- instanceId : this . instanceId ,
922- source : getDevice ( m . key . id ) ,
923- } ) ;
914+ messagesRaw . push ( this . prepareMessage ( m ) ) ;
924915 }
925916
926917 this . sendDataWebhook ( Events . MESSAGES_SET , [ ...messagesRaw ] ) ;
@@ -1040,24 +1031,7 @@ export class BaileysStartupService extends ChannelStartupService {
10401031 return ;
10411032 }
10421033
1043- const contentMsg = received ?. message [ getContentType ( received . message ) ] as any ;
1044-
1045- const messageRaw : any = {
1046- key : received . key ,
1047- pushName : received . pushName ,
1048- message : { ...received . message } ,
1049- contextInfo : contentMsg ?. contextInfo ,
1050- messageType : getContentType ( received . message ) || 'unknown' ,
1051- messageTimestamp : received . messageTimestamp as number ,
1052- instanceId : this . instanceId ,
1053- source : getDevice ( received . key . id ) ,
1054- } ;
1055-
1056- if ( messageRaw . message . extendedTextMessage ) {
1057- messageRaw . messageType = 'conversation' ;
1058- messageRaw . message . conversation = messageRaw . message . extendedTextMessage . text ;
1059- delete messageRaw . message . extendedTextMessage ;
1060- }
1034+ const messageRaw = this . prepareMessage ( received ) ;
10611035
10621036 const isMedia =
10631037 received ?. message ?. imageMessage ||
@@ -1093,6 +1067,30 @@ export class BaileysStartupService extends ChannelStartupService {
10931067 }
10941068 }
10951069
1070+ if ( this . configService . get < Openai > ( 'OPENAI' ) . ENABLED ) {
1071+ const openAiDefaultSettings = await this . prismaRepository . openaiSetting . findFirst ( {
1072+ where : {
1073+ instanceId : this . instanceId ,
1074+ } ,
1075+ include : {
1076+ OpenaiCreds : true ,
1077+ } ,
1078+ } ) ;
1079+
1080+ if (
1081+ openAiDefaultSettings &&
1082+ openAiDefaultSettings . openaiCredsId &&
1083+ openAiDefaultSettings . speechToText &&
1084+ received ?. message ?. audioMessage
1085+ ) {
1086+ messageRaw . message . speechToText = await this . openaiService . speechToText (
1087+ openAiDefaultSettings . OpenaiCreds ,
1088+ received ,
1089+ this . client . updateMediaMessage ,
1090+ ) ;
1091+ }
1092+ }
1093+
10961094 if ( this . configService . get < Database > ( 'DATABASE' ) . SAVE_DATA . NEW_MESSAGE ) {
10971095 const msg = await this . prismaRepository . message . create ( {
10981096 data : messageRaw ,
@@ -1159,30 +1157,6 @@ export class BaileysStartupService extends ChannelStartupService {
11591157 messageRaw . message . base64 = buffer ? buffer . toString ( 'base64' ) : undefined ;
11601158 }
11611159
1162- if ( this . configService . get < Openai > ( 'OPENAI' ) . ENABLED ) {
1163- const openAiDefaultSettings = await this . prismaRepository . openaiSetting . findFirst ( {
1164- where : {
1165- instanceId : this . instanceId ,
1166- } ,
1167- include : {
1168- OpenaiCreds : true ,
1169- } ,
1170- } ) ;
1171-
1172- if (
1173- openAiDefaultSettings &&
1174- openAiDefaultSettings . openaiCredsId &&
1175- openAiDefaultSettings . speechToText &&
1176- received ?. message ?. audioMessage
1177- ) {
1178- messageRaw . message . speechToText = await this . openaiService . speechToText (
1179- openAiDefaultSettings . OpenaiCreds ,
1180- received ,
1181- this . client . updateMediaMessage ,
1182- ) ;
1183- }
1184- }
1185-
11861160 this . logger . log ( messageRaw ) ;
11871161
11881162 this . sendDataWebhook ( Events . MESSAGES_UPSERT , messageRaw ) ;
@@ -1951,6 +1925,12 @@ export class BaileysStartupService extends ChannelStartupService {
19511925 messageSent = await this . sendMessage ( sender , message , mentions , linkPreview , quoted ) ;
19521926 }
19531927
1928+ if ( Long . isLong ( messageSent ?. messageTimestamp ) ) {
1929+ messageSent . messageTimestamp = messageSent . messageTimestamp ?. toNumber ( ) ;
1930+ }
1931+
1932+ const messageRaw = this . prepareMessage ( messageSent ) ;
1933+
19541934 const isMedia =
19551935 messageSent ?. message ?. imageMessage ||
19561936 messageSent ?. message ?. videoMessage ||
@@ -1959,41 +1939,12 @@ export class BaileysStartupService extends ChannelStartupService {
19591939 messageSent ?. message ?. documentWithCaptionMessage ||
19601940 messageSent ?. message ?. audioMessage ;
19611941
1962- const contentMsg = messageSent . message [ getContentType ( messageSent . message ) ] as any ;
1963-
1964- if ( Long . isLong ( messageSent ?. messageTimestamp ) ) {
1965- messageSent . messageTimestamp = messageSent . messageTimestamp ?. toNumber ( ) ;
1966- }
1967-
1968- const messageRaw : any = {
1969- key : messageSent . key ,
1970- pushName : messageSent . pushName ,
1971- message : { ...messageSent . message } ,
1972- contextInfo : contentMsg ?. contextInfo ,
1973- messageType : getContentType ( messageSent . message ) ,
1974- messageTimestamp : messageSent . messageTimestamp as number ,
1975- instanceId : this . instanceId ,
1976- source : getDevice ( messageSent . key . id ) ,
1977- } ;
1978-
1979- if ( messageRaw . message . extendedTextMessage ) {
1980- messageRaw . messageType = 'conversation' ;
1981- messageRaw . message . conversation = messageRaw . message . extendedTextMessage . text ;
1982- delete messageRaw . message . extendedTextMessage ;
1983- }
1984-
1985- if ( isMedia ) {
1986- const buffer = await downloadMediaMessage (
1987- { key : messageSent . key , message : messageSent ?. message } ,
1988- 'buffer' ,
1989- { } ,
1990- {
1991- logger : P ( { level : 'error' } ) as any ,
1992- reuploadRequest : this . client . updateMediaMessage ,
1993- } ,
1942+ if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled && ! isIntegration ) {
1943+ this . chatwootService . eventWhatsapp (
1944+ Events . SEND_MESSAGE ,
1945+ { instanceName : this . instance . name , instanceId : this . instanceId } ,
1946+ messageRaw ,
19941947 ) ;
1995-
1996- messageRaw . message . base64 = buffer ? buffer . toString ( 'base64' ) : undefined ;
19971948 }
19981949
19991950 if ( this . configService . get < Openai > ( 'OPENAI' ) . ENABLED ) {
@@ -2010,100 +1961,97 @@ export class BaileysStartupService extends ChannelStartupService {
20101961 openAiDefaultSettings &&
20111962 openAiDefaultSettings . openaiCredsId &&
20121963 openAiDefaultSettings . speechToText &&
2013- messageSent ?. message ?. audioMessage
1964+ messageRaw ?. message ?. audioMessage
20141965 ) {
20151966 messageRaw . message . speechToText = await this . openaiService . speechToText (
20161967 openAiDefaultSettings . OpenaiCreds ,
2017- messageSent ,
1968+ messageRaw ,
20181969 this . client . updateMediaMessage ,
20191970 ) ;
20201971 }
20211972 }
20221973
2023- this . logger . log ( messageRaw ) ;
2024-
2025- this . sendDataWebhook ( Events . SEND_MESSAGE , messageRaw ) ;
2026-
2027- if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled && ! isIntegration ) {
2028- this . chatwootService . eventWhatsapp (
2029- Events . SEND_MESSAGE ,
2030- { instanceName : this . instance . name , instanceId : this . instanceId } ,
2031- messageRaw ,
2032- ) ;
2033- }
2034-
2035- if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled && isIntegration )
2036- await chatbotController . emit ( {
2037- instance : { instanceName : this . instance . name , instanceId : this . instanceId } ,
2038- remoteJid : messageRaw . key . remoteJid ,
2039- msg : messageRaw ,
2040- pushName : messageRaw . pushName ,
2041- isIntegration,
2042- } ) ;
2043-
20441974 if ( this . configService . get < Database > ( 'DATABASE' ) . SAVE_DATA . NEW_MESSAGE ) {
20451975 const msg = await this . prismaRepository . message . create ( {
20461976 data : messageRaw ,
20471977 } ) ;
20481978
2049- const isMedia =
2050- messageRaw ?. message ?. imageMessage ||
2051- messageRaw ?. message ?. videoMessage ||
2052- messageRaw ?. message ?. stickerMessage ||
2053- messageRaw ?. message ?. documentMessage ||
2054- messageRaw ?. message ?. documentWithCaptionMessage ||
2055- messageRaw ?. message ?. audioMessage ;
2056-
2057- if ( isMedia ) {
2058- if ( this . configService . get < S3 > ( 'S3' ) . ENABLE ) {
2059- try {
2060- const message : any = messageRaw ;
2061- const media = await this . getBase64FromMediaMessage (
2062- {
2063- message,
2064- } ,
2065- true ,
2066- ) ;
1979+ if ( isMedia && this . configService . get < S3 > ( 'S3' ) . ENABLE ) {
1980+ try {
1981+ const message : any = messageRaw ;
1982+ const media = await this . getBase64FromMediaMessage (
1983+ {
1984+ message,
1985+ } ,
1986+ true ,
1987+ ) ;
20671988
2068- const { buffer, mediaType, fileName, size } = media ;
1989+ const { buffer, mediaType, fileName, size } = media ;
20691990
2070- const mimetype = mime . getType ( fileName ) . toString ( ) ;
1991+ const mimetype = mime . getType ( fileName ) . toString ( ) ;
20711992
2072- const fullName = join ( `${ this . instance . id } ` , messageRaw . key . remoteJid , mediaType , fileName ) ;
1993+ const fullName = join ( `${ this . instance . id } ` , messageRaw . key . remoteJid , mediaType , fileName ) ;
20731994
2074- await s3Service . uploadFile ( fullName , buffer , size . fileLength ?. low , {
2075- 'Content-Type' : mimetype ,
2076- } ) ;
1995+ await s3Service . uploadFile ( fullName , buffer , size . fileLength ?. low , {
1996+ 'Content-Type' : mimetype ,
1997+ } ) ;
20771998
2078- await this . prismaRepository . media . create ( {
2079- data : {
2080- messageId : msg . id ,
2081- instanceId : this . instanceId ,
2082- type : mediaType ,
2083- fileName : fullName ,
2084- mimetype,
2085- } ,
2086- } ) ;
1999+ await this . prismaRepository . media . create ( {
2000+ data : {
2001+ messageId : msg . id ,
2002+ instanceId : this . instanceId ,
2003+ type : mediaType ,
2004+ fileName : fullName ,
2005+ mimetype,
2006+ } ,
2007+ } ) ;
20872008
2088- const mediaUrl = await s3Service . getObjectUrl ( fullName ) ;
2009+ const mediaUrl = await s3Service . getObjectUrl ( fullName ) ;
20892010
2090- messageRaw . message . mediaUrl = mediaUrl ;
2011+ messageRaw . message . mediaUrl = mediaUrl ;
20912012
2092- await this . prismaRepository . message . update ( {
2093- where : { id : msg . id } ,
2094- data : messageRaw ,
2095- } ) ;
2096- } catch ( error ) {
2097- this . logger . error ( 'line 1181' ) ;
2098- this . logger . error ( [ 'Error on upload file to minio' , error ?. message , error ?. stack ] ) ;
2099- }
2013+ await this . prismaRepository . message . update ( {
2014+ where : { id : msg . id } ,
2015+ data : messageRaw ,
2016+ } ) ;
2017+ } catch ( error ) {
2018+ this . logger . error ( 'line 1181' ) ;
2019+ this . logger . error ( [ 'Error on upload file to minio' , error ?. message , error ?. stack ] ) ;
21002020 }
21012021 }
21022022 }
21032023
2024+ if ( isMedia && ! this . configService . get < S3 > ( 'S3' ) . ENABLE ) {
2025+ const buffer = await downloadMediaMessage (
2026+ { key : messageRaw . key , message : messageRaw ?. message } ,
2027+ 'buffer' ,
2028+ { } ,
2029+ {
2030+ logger : P ( { level : 'error' } ) as any ,
2031+ reuploadRequest : this . client . updateMediaMessage ,
2032+ } ,
2033+ ) ;
2034+
2035+ messageRaw . message . base64 = buffer ? buffer . toString ( 'base64' ) : undefined ;
2036+ }
2037+
2038+ this . logger . log ( messageRaw ) ;
2039+
2040+ this . sendDataWebhook ( Events . SEND_MESSAGE , messageRaw ) ;
2041+
2042+ if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled && isIntegration ) {
2043+ await chatbotController . emit ( {
2044+ instance : { instanceName : this . instance . name , instanceId : this . instanceId } ,
2045+ remoteJid : messageRaw . key . remoteJid ,
2046+ msg : messageRaw ,
2047+ pushName : messageRaw . pushName ,
2048+ isIntegration,
2049+ } ) ;
2050+ }
2051+
21042052 return messageRaw ;
21052053 } catch ( error ) {
2106- this . logger . error ( 'line 2081 ' ) ;
2054+ this . logger . error ( 'line 2097 ' ) ;
21072055 this . logger . error ( error ) ;
21082056 throw new BadRequestException ( error . toString ( ) ) ;
21092057 }
@@ -3683,4 +3631,27 @@ export class BaileysStartupService extends ChannelStartupService {
36833631 public async templateMessage ( ) {
36843632 throw new Error ( 'Method not available in the Baileys service' ) ;
36853633 }
3634+
3635+ private prepareMessage ( message : proto . IWebMessageInfo ) : any {
3636+ const contentMsg = message ?. message [ getContentType ( message . message ) ] as any ;
3637+
3638+ const messageRaw = {
3639+ key : message . key ,
3640+ pushName : message . pushName ,
3641+ message : { ...message . message } ,
3642+ contextInfo : contentMsg ?. contextInfo ,
3643+ messageType : getContentType ( message . message ) || 'unknown' ,
3644+ messageTimestamp : message . messageTimestamp as number ,
3645+ instanceId : this . instanceId ,
3646+ source : getDevice ( message . key . id ) ,
3647+ } ;
3648+
3649+ if ( messageRaw . message . extendedTextMessage ) {
3650+ messageRaw . messageType = 'conversation' ;
3651+ messageRaw . message . conversation = messageRaw . message . extendedTextMessage . text ;
3652+ delete messageRaw . message . extendedTextMessage ;
3653+ }
3654+
3655+ return messageRaw ;
3656+ }
36863657}
0 commit comments