Skip to content

Erros homolog 09/09/2025 #1925

@WanderleyGrecco

Description

@WanderleyGrecco

Welcome!

  • Yes, I have searched for similar issues on GitHub and found none.

What did you do?

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:23:30 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

[Evolution API] [wanderley] v2.3.3 190 - Tue Sep 09 2025 11:23:30 INFO [ChannelStartupService] [string] Message duplicated ignored: 3F5BB0A0F7C5814F0D52

2025/09/09 10:24AM 50 pid=190 hostname=82dd79529a66 key={"remoteJid":"120363419697103562@g.us","fromMe":false,"id":"3A62B02B158CBBC0B956","participant":"557999012820@s.whatsapp.net","participantAlt":"54095264137225@lid"} err={"type":"TypeError","message":"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received an instance of Object","stack":"TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received an instance of Object\n at Function.from (node:buffer:322:9)\n at SenderKeyState.getSigningKeyPublic (file:///evolution/node_modules/baileys/lib/Signal/Group/sender-key-state.js:61:23)\n at GroupCipher.decrypt (file:///evolution/node_modules/baileys/lib/Signal/Group/group_cipher.js:38:57)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async executeTransactionWork (file:///evolution/node_modules/baileys/lib/Utils/auth-utils.js:293:24)\n at async Object.transaction (file:///evolution/node_modules/baileys/lib/Utils/auth-utils.js:439:28)\n at async decrypt (file:///evolution/node_modules/baileys/lib/Utils/decode-wa-message.js:194:45)\n at async file:///evolution/node_modules/baileys/lib/Socket/messages-recv.js:962:21\n at async file:///evolution/node_modules/baileys/lib/Utils/make-mutex.js:16:36\n at async Promise.all (index 0)","code":"ERR_INVALID_ARG_TYPE"} messageType=skmsg sender=120363419697103562@g.us author=557999012820@s.whatsapp.net isSessionRecordError=false msg=failed to decrypt message

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:00 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:00 WARN [ChatwootService] [string] no body message found

[Evolution API] [wanderley] v2.3.3 190 - Tue Sep 09 2025 11:24:00 LOG [ChannelStartupService] [string] Update not read messages 120363419697103562@g.us

[Evolution API] [wanderley] v2.3.3 190 - Tue Sep 09 2025 11:24:00 LOG [ChannelStartupService] [object]

{

key: {

remoteJid: '120363419697103562@g.us',

remoteJidAlt: undefined,

fromMe: false,

id: '3A62B02B158CBBC0B956',

participant: '557999012820@s.whatsapp.net',

participantAlt: '54095264137225@lid'

},

pushName: 'Vitor Gabriel',

status: 'DELIVERY_ACK',


message: {

senderKeyDistributionMessage: {

  groupId: '120363419697103562@g.us',

  axolotlSenderKeyDistributionMessage: [Array]

},

messageContextInfo: { deviceListMetadata: [Object], deviceListMetadataVersion: 2 }

},

contextInfo: undefined,

messageType: 'unknown',

messageTimestamp: 1757427840,

instanceId: 'bc2c65dc-a04b-483e-b668-0d4cabec619c',

source: 'ios'

}

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:01 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

[Evolution API] [wanderley] v2.3.3 190 - Tue Sep 09 2025 11:24:01 INFO [ChannelStartupService] [string] Message duplicated ignored: 3A62B02B158CBBC0B956

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:05 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:05 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:05 ERROR [ChatwootService] [object]

PrismaClientKnownRequestError:

Invalid this.prismaRepository.message.updateMany() invocation in

/evolution/dist/main.js:86:650

83 VALUES ($1, 'Contact', $2, 'labels', NOW()),[n,e]),!0}catch{return!1}}async findContact(s,e){let t=await this.clientCw(s);if(!t)return this.logger.warn("client not found"),null;let o,i=e.includes("@g.us");i?o=e:o=+${e};let n;return i?n=await t.contacts.search({accountId:this.provider.accountId,q:o}):n=await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/contacts/filter,body:{payload:this.getFilterPayload(o)}}),!n&&n?.payload?.length===0?(this.logger.warn("contact not found"),null):i?n.payload.find(r=>r.identifier===o):n.payload.length>1?this.findContactInContactList(n.payload,o):n.payload[0]}async mergeContacts(s,e){try{return await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/actions/contact_merge,body:{base_contact_id:s,mergee_contact_id:e}})}catch{return this.logger.error("Error merging contacts"),null}}async mergeBrazilianContacts(s){try{return await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/actions/contact_merge,body:{base_contact_id:s.find(t=>t.phone_number.length===14)?.id,mergee_contact_id:s.find(t=>t.phone_number.length===13)?.id}})}catch{return this.logger.error("Error merging contacts"),null}}findContactInContactList(s,e){let t=this.getNumbers(e),o=this.getSearchableFields();if(s.length===2&&this.getClientCwConfig().mergeBrazilContacts&&e.startsWith("+55")){let r=this.mergeBrazilianContacts(s);if(r)return r}let i=t.reduce((r,a)=>a.length>r.length?a:r,""),n=s.find(r=>r.phone_number===i);if(n)return n;for(let r of s)for(let a of o)if(r[a]&&t.includes(r[a]))return r;return null}getNumbers(s){let e=[];if(e.push(s),s.startsWith("+55")&&s.length===14){let t=s.slice(0,5)+s.slice(6);e.push(t)}else if(s.startsWith("+55")&&s.length===13){let t=s.slice(0,5)+"9"+s.slice(5);e.push(t)}return e}getSearchableFields(){return["phone_number"]}getFilterPayload(s){let e=[],t=this.getNumbers(s),o=this.getSearchableFields();return o.forEach((i,n)=>{t.forEach((r,a)=>{let c=o.length-1===n&&t.length-1===a?null:"OR";e.push({attribute_key:i,filter_operator:"equal_to",values:[r.replace("+","")],query_operator:c})})}),e}async createConversation(s,e){let t=e.key.previousRemoteJid?.includes("@lid")&&e.key.senderPn,o=e.key.remoteJid,i=${s.instanceName}:createConversation-${o},n=${s.instanceName}:lock:createConversation-${o},r=5e3;try{if(t&&e.key.senderPn!==e.key.previousRemoteJid){let a=await this.findContact(s,e.key.remoteJid.split("@")[0]);if(a&&a.identifier!==e.key.senderPn&&(this.logger.verbose(Identifier needs update: (contact.identifier: ${a.identifier}, body.key.remoteJid: ${e.key.remoteJid}, body.key.senderPn: ${e.key.senderPn}),await this.updateContact(s,a.id,{identifier:e.key.senderPn,phone_number:+${e.key.senderPn.split("@")[0]}})===null)){let l=await this.findContact(s,e.key.senderPn.split("@")[0]);l&&(await this.mergeContacts(l.id,a.id),this.logger.verbose(Merge contacts: (${l.id}) ${l.phone_number} and (${a.id}) ${a.phone_number}))}}if(this.logger.verbose("--- Start createConversation ---"),this.logger.verbose(Instance: ${JSON.stringify(s)}),await this.cache.has(i)){let a=await this.cache.get(i);return this.logger.verbose(Found conversation to: ${o}, conversation ID: ${a}),a}if(await this.cache.has(n)){this.logger.verbose(Opera\xE7\xE3o de cria\xE7\xE3o j\xE1 em andamento para ${o}, aguardando resultado...);let a=Date.now();for(;await this.cache.has(n);){if(Date.now()-a>r){this.logger.warn(Timeout aguardando lock para ${o});break}if(await new Promise(c=>setTimeout(c,300)),await this.cache.has(i)){let c=await this.cache.get(i);return this.logger.verbose(Resolves creation of: ${o}, conversation ID: ${c}),c}}}await this.cache.set(n,!0,30),this.logger.verbose(Bloqueio adquirido para: ${n});try{if(await this.cache.has(i))return await this.cache.get(i);let a=await this.clientCw(s);if(!a)return null;let c=o.includes("@g.us"),l=c?o:o.split("@")[0],u=e.key.fromMe?l:e.pushName,d=await this.getInbox(s);if(!d)return null;if(c){this.logger.verbose("Processing group conversation");let E=await this.waMonitor.waInstances[s.instanceName].client.groupMetadata(l);this.logger.verbose(Group metadata: ${JSON.stringify(E)}),u=${E.subject} (GROUP);let I=await this.waMonitor.waInstances[s.instanceName].profilePicture(e.key.participant.split("@")[0]);this.logger.verbose(Participant profile picture URL: ${JSON.stringify(I)});let T=await this.findContact(s,e.key.participant.split("@")[0]);this.logger.verbose(Found participant: ${JSON.stringify(T)}),T?(!T.name||T.name===l)&&await this.updateContact(s,T.id,{name:e.pushName,avatar_url:I.profilePictureUrl||null}):await this.createContact(s,e.key.participant.split("@")[0],d.id,!1,e.pushName,I.profilePictureUrl||null,e.key.participant)}let h=await this.waMonitor.waInstances[s.instanceName].profilePicture(l);this.logger.verbose(Contact profile picture URL: ${JSON.stringify(h)});let g=await this.findContact(s,l);if(g){if(this.logger.verbose(Found contact: ${JSON.stringify(g)}),!e.key.fromMe){let E=h?.profilePictureUrl?.split("#")[0].split("?")[0].split("/").pop()||"",I=g?.thumbnail?.split("#")[0].split("?")[0].split("/").pop()||"",T=E!==I,O=!g.name||g.name===l||(+${l}.startsWith("+55")?this.getNumbers(+${l}).some(L=>g.name===L||g.name===L.substring(3)||g.name===L.substring(1)):!1);this.logger.verbose(Picture needs update: ${T}),this.logger.verbose(Name needs update: ${O}),(T||O)&&(g=await this.updateContact(s,g.id,{...O&&{name:u},...E===""&&{avatar:null},...T&&{avatar_url:h?.profilePictureUrl}}))}}else g=await this.createContact(s,l,d.id,c,u,h.profilePictureUrl||null,o);if(!g)return this.logger.warn("Contact not created or found"),null;let m=g?.payload?.id||g?.payload?.contact?.id||g?.id;this.logger.verbose(Contact ID: ${m});let y=await a.contacts.listConversations({accountId:this.provider.accountId,id:m});if(this.logger.verbose(Contact conversations: ${JSON.stringify(y)}),!y||!y.payload)return this.logger.error("No conversations found or payload is undefined"),null;let S=y.payload.find(E=>E.inbox_id==d.id);if(S&&(this.provider.reopenConversation?(this.logger.verbose(Found conversation in reopenConversation mode: ${JSON.stringify(S)}),S&&this.provider.conversationPending&&S.status!=="open"&&await a.conversations.toggleStatus({accountId:this.provider.accountId,conversationId:S.id,data:{status:"pending"}})):(S=y.payload.find(E=>E&&E.status!=="resolved"&&E.inbox_id==d.id),this.logger.verbose(Found conversation: ${JSON.stringify(S)})),S))return this.logger.verbose(Returning existing conversation ID: ${S.id}),this.cache.set(i,S.id),S.id;let C={contact_id:m.toString(),inbox_id:d.id.toString()};if(this.provider.conversationPending&&(C.status="pending"),await this.cache.has(i))return await this.cache.get(i);let v=await a.conversations.create({accountId:this.provider.accountId,data:C});return v?(this.logger.verbose(New conversation created of ${o} with ID: ${v.id}),this.cache.set(i,v.id),v.id):(this.logger.warn("Conversation not created or found"),null)}finally{await this.cache.delete(n),this.logger.verbose(Block released for: ${n})}}catch(a){return this.logger.error(Error in createConversation: ${a}),null}}async getInbox(s){let e=${s.instanceName}:getInbox;if(await this.cache.has(e))return await this.cache.get(e);let t=await this.clientCw(s);if(!t)return this.logger.warn("client not found"),null;let o=await t.inboxes.list({accountId:this.provider.accountId});if(!o)return this.logger.warn("inbox not found"),null;let i=o.payload.find(n=>n.name===this.getClientCwConfig().nameInbox);return i?(this.cache.set(e,i),i):(this.logger.warn("inbox not found"),null)}async createMessage(s,e,t,o,i,n,r,a,c){let l=await this.clientCw(s);if(!l)return this.logger.warn("client not found"),null;let u=await this.getReplyToIds(r,s),d=c?.chatwootMessageId||null,h=await l.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:t,message_type:o,attachments:n,private:i||!1,source_id:a,content_attributes:{...u},source_reply_id:d?d.toString():null}});return h||(this.logger.warn("message not found"),null)}async getOpenConversationByContact(s,e,t){let o=await this.clientCw(s);return o?(await o.contacts.listConversations({accountId:this.provider.accountId,id:t.id})).payload.find(n=>n.inbox_id===e.id&&n.status==="open")||void 0:(this.logger.warn("client not found"),null)}async createBotMessage(s,e,t,o){let i=await this.clientCw(s);if(!i)return this.logger.warn("client not found"),null;let n=await this.findContact(s,"123456");if(!n)return this.logger.warn("contact not found"),null;let r=await this.getInbox(s);if(!r)return this.logger.warn("inbox not found"),null;let a=await this.getOpenConversationByContact(s,r,n);if(!a){this.logger.warn("conversation not found");return}let c=await i.messages.create({accountId:this.provider.accountId,conversationId:a.id,data:{content:e,message_type:t,attachments:o}});return c||(this.logger.warn("message not found"),null)}async sendData(s,e,t,o,i,n,r,a,c){if(a&&this.isImportHistoryAvailable()){let h=await X.getExistingSourceIds([a],s);if(h&&h.size>0)return this.logger.warn("Message already saved on chatwoot"),null}let l=new hn.default;i&&l.append("content",i),l.append("message_type",o),l.append("attachments[]",e,{filename:t});let u=c?.chatwootMessageId||null;if(r&&n){let h=await this.getReplyToIds(r,n);if(h.in_reply_to||h.in_reply_to_external_id){let g=JSON.stringify({...h});l.append("content_attributes",g)}}u&&l.append("source_reply_id",u.toString()),a&&l.append("source_id",a);let d={method:"post",maxBodyLength:1/0,url:${this.provider.url}/api/v1/accounts/${this.provider.accountId}/conversations/${s}/messages,headers:{api_access_token:this.provider.token,...l.getHeaders()},data:l};try{let{data:h}=await Rt.default.request(d);return h}catch(h){this.logger.error(h)}}async createBotQr(s,e,t,o,i){if(!await this.clientCw(s))return this.logger.warn("client not found"),null;if(!this.configService.get("CHATWOOT").BOT_CONTACT)return this.logger.log("Chatwoot bot contact is disabled"),!0;let r=await this.findContact(s,"123456");if(!r)return this.logger.warn("contact not found"),null;let a=await this.getInbox(s);if(!a)return this.logger.warn("inbox not found"),null;let c=await this.getOpenConversationByContact(s,a,r);if(!c){this.logger.warn("conversation not found");return}let l=new hn.default;e&&l.append("content",e),l.append("message_type",t),o&&i&&l.append("attachments[]",o,{filename:i});let u={method:"post",maxBodyLength:1/0,url:${this.provider.url}/api/v1/accounts/${this.provider.accountId}/conversations/${c.id}/messages,headers:{api_access_token:this.provider.token,...l.getHeaders()},data:l};try{let{data:d}=await Rt.default.request(u);return d}catch(d){this.logger.error(d)}}async sendAttachment(s,e,t,o,i){try{let n=yn.default.parse(decodeURIComponent(t)),r=ht.default.lookup(n?.ext)||"",a=n?.name+n?.ext;if(!r){let h=t.split("/");a=decodeURIComponent(h[h.length-1]),r=(await Rt.default.get(t,{responseType:"arraybuffer"})).headers["content-type"]}let c="document";switch(r.split("/")[0]){case"image":c="image";break;case"video":c="video";break;case"audio":c="audio";break;default:c="document";break}if(c==="audio"){let h={number:e,audio:t,delay:1200,quoted:i?.quoted};return j("/message/sendWhatsAppAudio"),await s?.audioWhatsapp(h,null,!0)}c==="image"&&n&&[".gif",".svg",".tiff",".tif"].includes(n?.ext)&&(c="document");let u={number:e,mediatype:c,fileName:a,media:t,delay:1200,quoted:i?.quoted};return j("/message/sendMedia"),o&&(u.caption=o),await s?.mediaMessage(u,null,!0)}catch(n){this.logger.error(n)}}async onSendMessageError(s,e,t){this.logger.verbose(onSendMessageError ${JSON.stringify(t)});let o=await this.clientCw(s);if(o){if(t&&t?.status===400&&t?.message[0]?.exists===!1){o.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:${U.t("cw.message.numbernotinwhatsapp")},message_type:"outgoing",private:!0}});return}o.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:U.t("cw.message.notsent",{error:t?${t.toString()}:""}),message_type:"outgoing",private:!0}})}}async receiveWebhook(s,e){try{if(await new Promise(c=>setTimeout(c,500)),!await this.clientCw(s))return this.logger.warn("client not found"),null;if(this.provider.reopenConversation===!1&&e.event==="conversation_status_changed"&&e.status==="resolved"&&e.meta?.sender?.identifier){let c=${s.instanceName}:createConversation-${e.meta.sender.identifier};this.cache.delete(c)}if(!e?.conversation||e.private||e.event==="message_updated"&&!e.content_attributes?.deleted)return{message:"bot"};let o=e.conversation.meta.sender?.identifier||e.conversation.meta.sender?.phone_number.replace("+",""),i=e.content?e.content.replaceAll(/(?<!\*)\*((?!\s)([^\n*]+?)(?<!\s))\*(?!\*)/g,"_$1_").replaceAll(/\*{2}((?!\s)([^\n*]+?)(?<!\s))\*{2}/g,"*$1*").replaceAll(/~{2}((?!\s)([^\n*]+?)(?<!\s))~{2}/g,"~$1~").replaceAll(/(?<!)((?!\s)([^*]+?)(?<!\s))(?!)/g,"$1"):e.content,n=e?.conversation?.messages[0]?.sender?.available_name||e?.sender?.name,r=this.waMonitor.waInstances[s.instanceName];if(e.event==="message_updated"&&e.content_attributes?.deleted){let c=await this.prismaRepository.message.findFirst({where:{chatwootMessageId:e.id,instanceId:s.instanceId}});if(c){let l=c.key;await r?.client.sendMessage(l.remoteJid,{delete:l}),await this.prismaRepository.message.deleteMany({where:{instanceId:s.instanceId,chatwootMessageId:e.id}})}return{message:"bot"}}let a=this.configService.get("CHATWOOT").BOT_CONTACT;if(o==="123456"&&e.message_type==="outgoing"){let c=i.replace("/","");if(a&&(c.includes("init")||c.includes("iniciar")))if(r?.connectionStatus?.state!=="open"){let u=c.split(":")[1];await r.connectToWhatsapp(u)}else await this.createBotMessage(s,U.t("cw.inbox.alreadyConnected",{inboxName:e.inbox.name}),"incoming");if(c==="clearcache"&&(r.clearCacheChatwoot(),await this.createBotMessage(s,U.t("cw.inbox.clearCache",{inboxName:e.inbox.name}),"incoming")),c==="status"){let l=r?.connectionStatus?.state;l||await this.createBotMessage(s,U.t("cw.inbox.notFound",{inboxName:e.inbox.name}),"incoming"),l&&await this.createBotMessage(s,U.t("cw.inbox.status",{inboxName:e.inbox.name,state:l}),"incoming")}if(a&&(c==="disconnect"||c==="desconectar")){let l=U.t("cw.inbox.disconnect",{inboxName:e.inbox.name});await this.createBotMessage(s,l,"incoming"),await r?.client?.logout("Log out instance: "+s.instanceName),await r?.client?.ws?.close()}}if(e.message_type==="outgoing"&&e?.conversation?.messages?.length&&o!=="123456"){if(e?.conversation?.messages[0]?.source_id?.substring(0,5)==="WAID:")return{message:"bot"};if(!r&&e.conversation?.id)return this.onSendMessageError(s,e.conversation?.id,"Instance not found"),{message:"bot"};let c;if(n==null)c=i;else{let u=this.provider.signDelimiter?this.provider.signDelimiter.replaceAll("\n",`

`

85 ,d=this.provider.signMsg?[${n}:]:[];d.push(i),c=d.join(u)}for(let u of e.conversation.messages)if(u.attachments&&u.attachments.length>0)for(let d of u.attachments){i||(c=null);let h={quoted:await this.getQuotedMessage(e,s)},g=await this.sendAttachment(r,o,d.data_url,c,h);!g&&e.conversation?.id&&this.onSendMessageError(s,e.conversation?.id),await this.updateChatwootMessageId({...g,owner:s.instanceName},{messageId:e.id,inboxId:e.inbox?.id,conversationId:e.conversation?.id,contactInboxSourceId:e.conversation?.contact_inbox?.source_id},s)}else{let d={number:o,text:c,delay:1200,quoted:await this.getQuotedMessage(e,s)};j("/message/sendText");let h;try{if(h=await r?.textMessage(d,!0),!h)throw new Error("Message not sent");fn.default.isLong(h?.messageTimestamp)&&(h.messageTimestamp=h.messageTimestamp?.toNumber()),await this.updateChatwootMessageId({...h,instanceId:s.instanceId},{messageId:e.id,inboxId:e.inbox?.id,conversationId:e.conversation?.id,contactInboxSourceId:e.conversation?.contact_inbox?.source_id},s)}catch(g){throw!h&&e.conversation?.id&&this.onSendMessageError(s,e.conversation?.id,g),g}}if(this.configService.get("CHATWOOT").MESSAGE_READ){let u=await this.prismaRepository.message.findFirst({where:{key:{path:["fromMe"],equals:!1},instanceId:s.instanceId}});if(u&&!u.chatwootIsRead){let d=u.key;r?.markMessageAsRead({readMessages:[{id:d.id,fromMe:d.fromMe,remoteJid:d.remoteJid}]});let h={chatwootMessageId:u.chatwootMessageId,chatwootConversationId:u.chatwootConversationId,chatwootInboxId:u.chatwootInboxId,chatwootContactInboxSourceId:u.chatwootContactInboxSourceId,chatwootIsRead:!0};await this.prismaRepository.message.updateMany({where:{instanceId:s.instanceId,key:{path:["id"],equals:d.id}},data:h})}}}if(e.message_type==="template"&&e.event==="message_created"){let c={number:o,text:e.content.replace(/\\\r\n|\\\n|\n/g,

→ 86 `),delay:1200};j("/message/sendText"),await r?.textMessage(c)}return{message:"bot"}}catch(t){return this.logger.error(t),{message:"bot"}}}async updateChatwootMessageId(s,e,t){let o=s.key;!e.messageId||!o?.id||(await this.prismaRepository.message.updateMany(

Input error. A JSON path cannot be set without a scalar filter.

at Xn.handleRequestError (/evolution/node_modules/@prisma/client/runtime/library.js:121:7459)

at Xn.handleAndLogRequestError (/evolution/node_modules/@prisma/client/runtime/library.js:121:6784)

at Xn.request (/evolution/node_modules/@prisma/client/runtime/library.js:121:6491)

at async l (/evolution/node_modules/@prisma/client/runtime/library.js:130:9812)

at async Pe.getMessageByKeyId (/evolution/dist/main.js:86:614)

at async Pe.eventWhatsapp (/evolution/dist/main.js:135:39) {

code: 'P2019',

{

modelName: 'Message',

details: 'A JSON path cannot be set without a scalar filter.'

},

clientVersion: '6.11.1'

}

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:05 ERROR [ChatwootService] [object]

PrismaClientKnownRequestError:

Invalid this.prismaRepository.message.updateMany() invocation in

/evolution/dist/main.js:86:650

83 VALUES ($1, 'Contact', $2, 'labels', NOW()),[n,e]),!0}catch{return!1}}async findContact(s,e){let t=await this.clientCw(s);if(!t)return this.logger.warn("client not found"),null;let o,i=e.includes("@g.us");i?o=e:o=+${e};let n;return i?n=await t.contacts.search({accountId:this.provider.accountId,q:o}):n=await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/contacts/filter,body:{payload:this.getFilterPayload(o)}}),!n&&n?.payload?.length===0?(this.logger.warn("contact not found"),null):i?n.payload.find(r=>r.identifier===o):n.payload.length>1?this.findContactInContactList(n.payload,o):n.payload[0]}async mergeContacts(s,e){try{return await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/actions/contact_merge,body:{base_contact_id:s,mergee_contact_id:e}})}catch{return this.logger.error("Error merging contacts"),null}}async mergeBrazilianContacts(s){try{return await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/actions/contact_merge,body:{base_contact_id:s.find(t=>t.phone_number.length===14)?.id,mergee_contact_id:s.find(t=>t.phone_number.length===13)?.id}})}catch{return this.logger.error("Error merging contacts"),null}}findContactInContactList(s,e){let t=this.getNumbers(e),o=this.getSearchableFields();if(s.length===2&&this.getClientCwConfig().mergeBrazilContacts&&e.startsWith("+55")){let r=this.mergeBrazilianContacts(s);if(r)return r}let i=t.reduce((r,a)=>a.length>r.length?a:r,""),n=s.find(r=>r.phone_number===i);if(n)return n;for(let r of s)for(let a of o)if(r[a]&&t.includes(r[a]))return r;return null}getNumbers(s){let e=[];if(e.push(s),s.startsWith("+55")&&s.length===14){let t=s.slice(0,5)+s.slice(6);e.push(t)}else if(s.startsWith("+55")&&s.length===13){let t=s.slice(0,5)+"9"+s.slice(5);e.push(t)}return e}getSearchableFields(){return["phone_number"]}getFilterPayload(s){let e=[],t=this.getNumbers(s),o=this.getSearchableFields();return o.forEach((i,n)=>{t.forEach((r,a)=>{let c=o.length-1===n&&t.length-1===a?null:"OR";e.push({attribute_key:i,filter_operator:"equal_to",values:[r.replace("+","")],query_operator:c})})}),e}async createConversation(s,e){let t=e.key.previousRemoteJid?.includes("@lid")&&e.key.senderPn,o=e.key.remoteJid,i=${s.instanceName}:createConversation-${o},n=${s.instanceName}:lock:createConversation-${o},r=5e3;try{if(t&&e.key.senderPn!==e.key.previousRemoteJid){let a=await this.findContact(s,e.key.remoteJid.split("@")[0]);if(a&&a.identifier!==e.key.senderPn&&(this.logger.verbose(Identifier needs update: (contact.identifier: ${a.identifier}, body.key.remoteJid: ${e.key.remoteJid}, body.key.senderPn: ${e.key.senderPn}),await this.updateContact(s,a.id,{identifier:e.key.senderPn,phone_number:+${e.key.senderPn.split("@")[0]}})===null)){let l=await this.findContact(s,e.key.senderPn.split("@")[0]);l&&(await this.mergeContacts(l.id,a.id),this.logger.verbose(Merge contacts: (${l.id}) ${l.phone_number} and (${a.id}) ${a.phone_number}))}}if(this.logger.verbose("--- Start createConversation ---"),this.logger.verbose(Instance: ${JSON.stringify(s)}),await this.cache.has(i)){let a=await this.cache.get(i);return this.logger.verbose(Found conversation to: ${o}, conversation ID: ${a}),a}if(await this.cache.has(n)){this.logger.verbose(Opera\xE7\xE3o de cria\xE7\xE3o j\xE1 em andamento para ${o}, aguardando resultado...);let a=Date.now();for(;await this.cache.has(n);){if(Date.now()-a>r){this.logger.warn(Timeout aguardando lock para ${o});break}if(await new Promise(c=>setTimeout(c,300)),await this.cache.has(i)){let c=await this.cache.get(i);return this.logger.verbose(Resolves creation of: ${o}, conversation ID: ${c}),c}}}await this.cache.set(n,!0,30),this.logger.verbose(Bloqueio adquirido para: ${n});try{if(await this.cache.has(i))return await this.cache.get(i);let a=await this.clientCw(s);if(!a)return null;let c=o.includes("@g.us"),l=c?o:o.split("@")[0],u=e.key.fromMe?l:e.pushName,d=await this.getInbox(s);if(!d)return null;if(c){this.logger.verbose("Processing group conversation");let E=await this.waMonitor.waInstances[s.instanceName].client.groupMetadata(l);this.logger.verbose(Group metadata: ${JSON.stringify(E)}),u=${E.subject} (GROUP);let I=await this.waMonitor.waInstances[s.instanceName].profilePicture(e.key.participant.split("@")[0]);this.logger.verbose(Participant profile picture URL: ${JSON.stringify(I)});let T=await this.findContact(s,e.key.participant.split("@")[0]);this.logger.verbose(Found participant: ${JSON.stringify(T)}),T?(!T.name||T.name===l)&&await this.updateContact(s,T.id,{name:e.pushName,avatar_url:I.profilePictureUrl||null}):await this.createContact(s,e.key.participant.split("@")[0],d.id,!1,e.pushName,I.profilePictureUrl||null,e.key.participant)}let h=await this.waMonitor.waInstances[s.instanceName].profilePicture(l);this.logger.verbose(Contact profile picture URL: ${JSON.stringify(h)});let g=await this.findContact(s,l);if(g){if(this.logger.verbose(Found contact: ${JSON.stringify(g)}),!e.key.fromMe){let E=h?.profilePictureUrl?.split("#")[0].split("?")[0].split("/").pop()||"",I=g?.thumbnail?.split("#")[0].split("?")[0].split("/").pop()||"",T=E!==I,O=!g.name||g.name===l||(+${l}.startsWith("+55")?this.getNumbers(+${l}).some(L=>g.name===L||g.name===L.substring(3)||g.name===L.substring(1)):!1);this.logger.verbose(Picture needs update: ${T}),this.logger.verbose(Name needs update: ${O}),(T||O)&&(g=await this.updateContact(s,g.id,{...O&&{name:u},...E===""&&{avatar:null},...T&&{avatar_url:h?.profilePictureUrl}}))}}else g=await this.createContact(s,l,d.id,c,u,h.profilePictureUrl||null,o);if(!g)return this.logger.warn("Contact not created or found"),null;let m=g?.payload?.id||g?.payload?.contact?.id||g?.id;this.logger.verbose(Contact ID: ${m});let y=await a.contacts.listConversations({accountId:this.provider.accountId,id:m});if(this.logger.verbose(Contact conversations: ${JSON.stringify(y)}),!y||!y.payload)return this.logger.error("No conversations found or payload is undefined"),null;let S=y.payload.find(E=>E.inbox_id==d.id);if(S&&(this.provider.reopenConversation?(this.logger.verbose(Found conversation in reopenConversation mode: ${JSON.stringify(S)}),S&&this.provider.conversationPending&&S.status!=="open"&&await a.conversations.toggleStatus({accountId:this.provider.accountId,conversationId:S.id,data:{status:"pending"}})):(S=y.payload.find(E=>E&&E.status!=="resolved"&&E.inbox_id==d.id),this.logger.verbose(Found conversation: ${JSON.stringify(S)})),S))return this.logger.verbose(Returning existing conversation ID: ${S.id}),this.cache.set(i,S.id),S.id;let C={contact_id:m.toString(),inbox_id:d.id.toString()};if(this.provider.conversationPending&&(C.status="pending"),await this.cache.has(i))return await this.cache.get(i);let v=await a.conversations.create({accountId:this.provider.accountId,data:C});return v?(this.logger.verbose(New conversation created of ${o} with ID: ${v.id}),this.cache.set(i,v.id),v.id):(this.logger.warn("Conversation not created or found"),null)}finally{await this.cache.delete(n),this.logger.verbose(Block released for: ${n})}}catch(a){return this.logger.error(Error in createConversation: ${a}),null}}async getInbox(s){let e=${s.instanceName}:getInbox;if(await this.cache.has(e))return await this.cache.get(e);let t=await this.clientCw(s);if(!t)return this.logger.warn("client not found"),null;let o=await t.inboxes.list({accountId:this.provider.accountId});if(!o)return this.logger.warn("inbox not found"),null;let i=o.payload.find(n=>n.name===this.getClientCwConfig().nameInbox);return i?(this.cache.set(e,i),i):(this.logger.warn("inbox not found"),null)}async createMessage(s,e,t,o,i,n,r,a,c){let l=await this.clientCw(s);if(!l)return this.logger.warn("client not found"),null;let u=await this.getReplyToIds(r,s),d=c?.chatwootMessageId||null,h=await l.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:t,message_type:o,attachments:n,private:i||!1,source_id:a,content_attributes:{...u},source_reply_id:d?d.toString():null}});return h||(this.logger.warn("message not found"),null)}async getOpenConversationByContact(s,e,t){let o=await this.clientCw(s);return o?(await o.contacts.listConversations({accountId:this.provider.accountId,id:t.id})).payload.find(n=>n.inbox_id===e.id&&n.status==="open")||void 0:(this.logger.warn("client not found"),null)}async createBotMessage(s,e,t,o){let i=await this.clientCw(s);if(!i)return this.logger.warn("client not found"),null;let n=await this.findContact(s,"123456");if(!n)return this.logger.warn("contact not found"),null;let r=await this.getInbox(s);if(!r)return this.logger.warn("inbox not found"),null;let a=await this.getOpenConversationByContact(s,r,n);if(!a){this.logger.warn("conversation not found");return}let c=await i.messages.create({accountId:this.provider.accountId,conversationId:a.id,data:{content:e,message_type:t,attachments:o}});return c||(this.logger.warn("message not found"),null)}async sendData(s,e,t,o,i,n,r,a,c){if(a&&this.isImportHistoryAvailable()){let h=await X.getExistingSourceIds([a],s);if(h&&h.size>0)return this.logger.warn("Message already saved on chatwoot"),null}let l=new hn.default;i&&l.append("content",i),l.append("message_type",o),l.append("attachments[]",e,{filename:t});let u=c?.chatwootMessageId||null;if(r&&n){let h=await this.getReplyToIds(r,n);if(h.in_reply_to||h.in_reply_to_external_id){let g=JSON.stringify({...h});l.append("content_attributes",g)}}u&&l.append("source_reply_id",u.toString()),a&&l.append("source_id",a);let d={method:"post",maxBodyLength:1/0,url:${this.provider.url}/api/v1/accounts/${this.provider.accountId}/conversations/${s}/messages,headers:{api_access_token:this.provider.token,...l.getHeaders()},data:l};try{let{data:h}=await Rt.default.request(d);return h}catch(h){this.logger.error(h)}}async createBotQr(s,e,t,o,i){if(!await this.clientCw(s))return this.logger.warn("client not found"),null;if(!this.configService.get("CHATWOOT").BOT_CONTACT)return this.logger.log("Chatwoot bot contact is disabled"),!0;let r=await this.findContact(s,"123456");if(!r)return this.logger.warn("contact not found"),null;let a=await this.getInbox(s);if(!a)return this.logger.warn("inbox not found"),null;let c=await this.getOpenConversationByContact(s,a,r);if(!c){this.logger.warn("conversation not found");return}let l=new hn.default;e&&l.append("content",e),l.append("message_type",t),o&&i&&l.append("attachments[]",o,{filename:i});let u={method:"post",maxBodyLength:1/0,url:${this.provider.url}/api/v1/accounts/${this.provider.accountId}/conversations/${c.id}/messages,headers:{api_access_token:this.provider.token,...l.getHeaders()},data:l};try{let{data:d}=await Rt.default.request(u);return d}catch(d){this.logger.error(d)}}async sendAttachment(s,e,t,o,i){try{let n=yn.default.parse(decodeURIComponent(t)),r=ht.default.lookup(n?.ext)||"",a=n?.name+n?.ext;if(!r){let h=t.split("/");a=decodeURIComponent(h[h.length-1]),r=(await Rt.default.get(t,{responseType:"arraybuffer"})).headers["content-type"]}let c="document";switch(r.split("/")[0]){case"image":c="image";break;case"video":c="video";break;case"audio":c="audio";break;default:c="document";break}if(c==="audio"){let h={number:e,audio:t,delay:1200,quoted:i?.quoted};return j("/message/sendWhatsAppAudio"),await s?.audioWhatsapp(h,null,!0)}c==="image"&&n&&[".gif",".svg",".tiff",".tif"].includes(n?.ext)&&(c="document");let u={number:e,mediatype:c,fileName:a,media:t,delay:1200,quoted:i?.quoted};return j("/message/sendMedia"),o&&(u.caption=o),await s?.mediaMessage(u,null,!0)}catch(n){this.logger.error(n)}}async onSendMessageError(s,e,t){this.logger.verbose(onSendMessageError ${JSON.stringify(t)});let o=await this.clientCw(s);if(o){if(t&&t?.status===400&&t?.message[0]?.exists===!1){o.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:${U.t("cw.message.numbernotinwhatsapp")},message_type:"outgoing",private:!0}});return}o.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:U.t("cw.message.notsent",{error:t?${t.toString()}:""}),message_type:"outgoing",private:!0}})}}async receiveWebhook(s,e){try{if(await new Promise(c=>setTimeout(c,500)),!await this.clientCw(s))return this.logger.warn("client not found"),null;if(this.provider.reopenConversation===!1&&e.event==="conversation_status_changed"&&e.status==="resolved"&&e.meta?.sender?.identifier){let c=${s.instanceName}:createConversation-${e.meta.sender.identifier};this.cache.delete(c)}if(!e?.conversation||e.private||e.event==="message_updated"&&!e.content_attributes?.deleted)return{message:"bot"};let o=e.conversation.meta.sender?.identifier||e.conversation.meta.sender?.phone_number.replace("+",""),i=e.content?e.content.replaceAll(/(?<!\*)\*((?!\s)([^\n*]+?)(?<!\s))\*(?!\*)/g,"_$1_").replaceAll(/\*{2}((?!\s)([^\n*]+?)(?<!\s))\*{2}/g,"*$1*").replaceAll(/~{2}((?!\s)([^\n*]+?)(?<!\s))~{2}/g,"~$1~").replaceAll(/(?<!)((?!\s)([^*]+?)(?<!\s))(?!)/g,"$1"):e.content,n=e?.conversation?.messages[0]?.sender?.available_name||e?.sender?.name,r=this.waMonitor.waInstances[s.instanceName];if(e.event==="message_updated"&&e.content_attributes?.deleted){let c=await this.prismaRepository.message.findFirst({where:{chatwootMessageId:e.id,instanceId:s.instanceId}});if(c){let l=c.key;await r?.client.sendMessage(l.remoteJid,{delete:l}),await this.prismaRepository.message.deleteMany({where:{instanceId:s.instanceId,chatwootMessageId:e.id}})}return{message:"bot"}}let a=this.configService.get("CHATWOOT").BOT_CONTACT;if(o==="123456"&&e.message_type==="outgoing"){let c=i.replace("/","");if(a&&(c.includes("init")||c.includes("iniciar")))if(r?.connectionStatus?.state!=="open"){let u=c.split(":")[1];await r.connectToWhatsapp(u)}else await this.createBotMessage(s,U.t("cw.inbox.alreadyConnected",{inboxName:e.inbox.name}),"incoming");if(c==="clearcache"&&(r.clearCacheChatwoot(),await this.createBotMessage(s,U.t("cw.inbox.clearCache",{inboxName:e.inbox.name}),"incoming")),c==="status"){let l=r?.connectionStatus?.state;l||await this.createBotMessage(s,U.t("cw.inbox.notFound",{inboxName:e.inbox.name}),"incoming"),l&&await this.createBotMessage(s,U.t("cw.inbox.status",{inboxName:e.inbox.name,state:l}),"incoming")}if(a&&(c==="disconnect"||c==="desconectar")){let l=U.t("cw.inbox.disconnect",{inboxName:e.inbox.name});await this.createBotMessage(s,l,"incoming"),await r?.client?.logout("Log out instance: "+s.instanceName),await r?.client?.ws?.close()}}if(e.message_type==="outgoing"&&e?.conversation?.messages?.length&&o!=="123456"){if(e?.conversation?.messages[0]?.source_id?.substring(0,5)==="WAID:")return{message:"bot"};if(!r&&e.conversation?.id)return this.onSendMessageError(s,e.conversation?.id,"Instance not found"),{message:"bot"};let c;if(n==null)c=i;else{let u=this.provider.signDelimiter?this.provider.signDelimiter.replaceAll("\n",`

`

85 ,d=this.provider.signMsg?[${n}:]:[];d.push(i),c=d.join(u)}for(let u of e.conversation.messages)if(u.attachments&&u.attachments.length>0)for(let d of u.attachments){i||(c=null);let h={quoted:await this.getQuotedMessage(e,s)},g=await this.sendAttachment(r,o,d.data_url,c,h);!g&&e.conversation?.id&&this.onSendMessageError(s,e.conversation?.id),await this.updateChatwootMessageId({...g,owner:s.instanceName},{messageId:e.id,inboxId:e.inbox?.id,conversationId:e.conversation?.id,contactInboxSourceId:e.conversation?.contact_inbox?.source_id},s)}else{let d={number:o,text:c,delay:1200,quoted:await this.getQuotedMessage(e,s)};j("/message/sendText");let h;try{if(h=await r?.textMessage(d,!0),!h)throw new Error("Message not sent");fn.default.isLong(h?.messageTimestamp)&&(h.messageTimestamp=h.messageTimestamp?.toNumber()),await this.updateChatwootMessageId({...h,instanceId:s.instanceId},{messageId:e.id,inboxId:e.inbox?.id,conversationId:e.conversation?.id,contactInboxSourceId:e.conversation?.contact_inbox?.source_id},s)}catch(g){throw!h&&e.conversation?.id&&this.onSendMessageError(s,e.conversation?.id,g),g}}if(this.configService.get("CHATWOOT").MESSAGE_READ){let u=await this.prismaRepository.message.findFirst({where:{key:{path:["fromMe"],equals:!1},instanceId:s.instanceId}});if(u&&!u.chatwootIsRead){let d=u.key;r?.markMessageAsRead({readMessages:[{id:d.id,fromMe:d.fromMe,remoteJid:d.remoteJid}]});let h={chatwootMessageId:u.chatwootMessageId,chatwootConversationId:u.chatwootConversationId,chatwootInboxId:u.chatwootInboxId,chatwootContactInboxSourceId:u.chatwootContactInboxSourceId,chatwootIsRead:!0};await this.prismaRepository.message.updateMany({where:{instanceId:s.instanceId,key:{path:["id"],equals:d.id}},data:h})}}}if(e.message_type==="template"&&e.event==="message_created"){let c={number:o,text:e.content.replace(/\\\r\n|\\\n|\n/g,

→ 86 `),delay:1200};j("/message/sendText"),await r?.textMessage(c)}return{message:"bot"}}catch(t){return this.logger.error(t),{message:"bot"}}}async updateChatwootMessageId(s,e,t){let o=s.key;!e.messageId||!o?.id||(await this.prismaRepository.message.updateMany(

Input error. A JSON path cannot be set without a scalar filter.

at Xn.handleRequestError (/evolution/node_modules/@prisma/client/runtime/library.js:121:7459)

at Xn.handleAndLogRequestError (/evolution/node_modules/@prisma/client/runtime/library.js:121:6784)

at Xn.request (/evolution/node_modules/@prisma/client/runtime/library.js:121:6491)

at async l (/evolution/node_modules/@prisma/client/runtime/library.js:130:9812)

at async Pe.getMessageByKeyId (/evolution/dist/main.js:86:614)

at async Pe.eventWhatsapp (/evolution/dist/main.js:135:39) {

code: 'P2019',

{

modelName: 'Message',

details: 'A JSON path cannot be set without a scalar filter.'

},

clientVersion: '6.11.1'

}

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:06 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

Message received from phone, id= 3EB06D42EC95FEB1239B25 WebMessageInfo {

messageStubParameters: [],

labels: [],

userReceipt: [],

reactions: [],

pollUpdates: [],

eventResponses: [],

statusMentions: [],

messageAddOns: [],

statusMentionSources: [],

supportAiCitations: [],

key: MessageKey {

remoteJid: '120363419697103562@g.us',

fromMe: false,

id: '3AE3B13EA46248765B7B'

},

message: Message {

conversation: 'Nesse meu caso foi uma migração da gupshup para app próprio'

},

messageTimestamp: Long { low: 1757427768, high: 0, unsigned: true },

participant: '557999012820@s.whatsapp.net',

messageSecret: Uint8Array(32) [

244, 149,  25,  52, 181, 228, 115, 106,

 67,  92,   2, 133, 165, 236,  14, 156,

 84,  62, 221, 246, 255,  51, 129, 153,

 12, 183, 214,  65, 234,   3, 155, 224

],

reportingTokenInfo: ReportingTokenInfo {

reportingTag: Uint8Array(20) [

    1,  10,  83, 159,   2,  54,

  207,  64, 200,  16, 163, 217,

  149,  79, 147, 182, 111, 250,

  243, 138

]

},

isMentionedInStatus: false

}

[Evolution API] [wanderley] v2.3.3 190 - Tue Sep 09 2025 11:24:06 INFO [ChannelStartupService] [string] Message duplicated ignored: 3AE3B13EA46248765B7B

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:06 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

Message received from phone, id= 3EB02017DBD13BA8C1F610 WebMessageInfo {

messageStubParameters: [],

labels: [],

userReceipt: [],

reactions: [],

pollUpdates: [],

eventResponses: [],

statusMentions: [],

messageAddOns: [],

statusMentionSources: [],

supportAiCitations: [],

key: MessageKey {

remoteJid: '120363419697103562@g.us',

fromMe: false,

id: '3F5BB0A0F7C5814F0D52'

},

message: Message {

extendedTextMessage: ExtendedTextMessage {

  text: 'As vezes só aparece que esta em aprovação mas ta funcionando',

  previewType: 0,

  contextInfo: [ContextInfo],

  inviteLinkGroupTypeV2: 0

}

},

messageTimestamp: Long { low: 1757427809, high: 0, unsigned: true },

participant: '555384615886@s.whatsapp.net',

reportingTokenInfo: ReportingTokenInfo {

reportingTag: Uint8Array(16) [

    1, 10, 168, 156, 119,  16,

  240,  7, 178, 132,  91, 225,

  162, 14,  72,  48

]

},

isMentionedInStatus: false

}

[Evolution API] [wanderley] v2.3.3 190 - Tue Sep 09 2025 11:24:06 INFO [ChannelStartupService] [string] Message duplicated ignored: 3F5BB0A0F7C5814F0D52

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:16 LOG [BaileysMessageProcessor] [string] Processing batch of 1 messages

[Evolution API] v2.3.3 190 - Tue Sep 09 2025 11:24:16 ERROR [ChatwootService] [object]

PrismaClientKnownRequestError:

Invalid this.prismaRepository.message.updateMany() invocation in

/evolution/dist/main.js:86:650

83 VALUES ($1, 'Contact', $2, 'labels', NOW()),[n,e]),!0}catch{return!1}}async findContact(s,e){let t=await this.clientCw(s);if(!t)return this.logger.warn("client not found"),null;let o,i=e.includes("@g.us");i?o=e:o=+${e};let n;return i?n=await t.contacts.search({accountId:this.provider.accountId,q:o}):n=await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/contacts/filter,body:{payload:this.getFilterPayload(o)}}),!n&&n?.payload?.length===0?(this.logger.warn("contact not found"),null):i?n.payload.find(r=>r.identifier===o):n.payload.length>1?this.findContactInContactList(n.payload,o):n.payload[0]}async mergeContacts(s,e){try{return await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/actions/contact_merge,body:{base_contact_id:s,mergee_contact_id:e}})}catch{return this.logger.error("Error merging contacts"),null}}async mergeBrazilianContacts(s){try{return await(0,Mt.request)(this.getClientCwConfig(),{method:"POST",url:/api/v1/accounts/${this.provider.accountId}/actions/contact_merge,body:{base_contact_id:s.find(t=>t.phone_number.length===14)?.id,mergee_contact_id:s.find(t=>t.phone_number.length===13)?.id}})}catch{return this.logger.error("Error merging contacts"),null}}findContactInContactList(s,e){let t=this.getNumbers(e),o=this.getSearchableFields();if(s.length===2&&this.getClientCwConfig().mergeBrazilContacts&&e.startsWith("+55")){let r=this.mergeBrazilianContacts(s);if(r)return r}let i=t.reduce((r,a)=>a.length>r.length?a:r,""),n=s.find(r=>r.phone_number===i);if(n)return n;for(let r of s)for(let a of o)if(r[a]&&t.includes(r[a]))return r;return null}getNumbers(s){let e=[];if(e.push(s),s.startsWith("+55")&&s.length===14){let t=s.slice(0,5)+s.slice(6);e.push(t)}else if(s.startsWith("+55")&&s.length===13){let t=s.slice(0,5)+"9"+s.slice(5);e.push(t)}return e}getSearchableFields(){return["phone_number"]}getFilterPayload(s){let e=[],t=this.getNumbers(s),o=this.getSearchableFields();return o.forEach((i,n)=>{t.forEach((r,a)=>{let c=o.length-1===n&&t.length-1===a?null:"OR";e.push({attribute_key:i,filter_operator:"equal_to",values:[r.replace("+","")],query_operator:c})})}),e}async createConversation(s,e){let t=e.key.previousRemoteJid?.includes("@lid")&&e.key.senderPn,o=e.key.remoteJid,i=${s.instanceName}:createConversation-${o},n=${s.instanceName}:lock:createConversation-${o},r=5e3;try{if(t&&e.key.senderPn!==e.key.previousRemoteJid){let a=await this.findContact(s,e.key.remoteJid.split("@")[0]);if(a&&a.identifier!==e.key.senderPn&&(this.logger.verbose(Identifier needs update: (contact.identifier: ${a.identifier}, body.key.remoteJid: ${e.key.remoteJid}, body.key.senderPn: ${e.key.senderPn}),await this.updateContact(s,a.id,{identifier:e.key.senderPn,phone_number:+${e.key.senderPn.split("@")[0]}})===null)){let l=await this.findContact(s,e.key.senderPn.split("@")[0]);l&&(await this.mergeContacts(l.id,a.id),this.logger.verbose(Merge contacts: (${l.id}) ${l.phone_number} and (${a.id}) ${a.phone_number}))}}if(this.logger.verbose("--- Start createConversation ---"),this.logger.verbose(Instance: ${JSON.stringify(s)}),await this.cache.has(i)){let a=await this.cache.get(i);return this.logger.verbose(Found conversation to: ${o}, conversation ID: ${a}),a}if(await this.cache.has(n)){this.logger.verbose(Opera\xE7\xE3o de cria\xE7\xE3o j\xE1 em andamento para ${o}, aguardando resultado...);let a=Date.now();for(;await this.cache.has(n);){if(Date.now()-a>r){this.logger.warn(Timeout aguardando lock para ${o});break}if(await new Promise(c=>setTimeout(c,300)),await this.cache.has(i)){let c=await this.cache.get(i);return this.logger.verbose(Resolves creation of: ${o}, conversation ID: ${c}),c}}}await this.cache.set(n,!0,30),this.logger.verbose(Bloqueio adquirido para: ${n});try{if(await this.cache.has(i))return await this.cache.get(i);let a=await this.clientCw(s);if(!a)return null;let c=o.includes("@g.us"),l=c?o:o.split("@")[0],u=e.key.fromMe?l:e.pushName,d=await this.getInbox(s);if(!d)return null;if(c){this.logger.verbose("Processing group conversation");let E=await this.waMonitor.waInstances[s.instanceName].client.groupMetadata(l);this.logger.verbose(Group metadata: ${JSON.stringify(E)}),u=${E.subject} (GROUP);let I=await this.waMonitor.waInstances[s.instanceName].profilePicture(e.key.participant.split("@")[0]);this.logger.verbose(Participant profile picture URL: ${JSON.stringify(I)});let T=await this.findContact(s,e.key.participant.split("@")[0]);this.logger.verbose(Found participant: ${JSON.stringify(T)}),T?(!T.name||T.name===l)&&await this.updateContact(s,T.id,{name:e.pushName,avatar_url:I.profilePictureUrl||null}):await this.createContact(s,e.key.participant.split("@")[0],d.id,!1,e.pushName,I.profilePictureUrl||null,e.key.participant)}let h=await this.waMonitor.waInstances[s.instanceName].profilePicture(l);this.logger.verbose(Contact profile picture URL: ${JSON.stringify(h)});let g=await this.findContact(s,l);if(g){if(this.logger.verbose(Found contact: ${JSON.stringify(g)}),!e.key.fromMe){let E=h?.profilePictureUrl?.split("#")[0].split("?")[0].split("/").pop()||"",I=g?.thumbnail?.split("#")[0].split("?")[0].split("/").pop()||"",T=E!==I,O=!g.name||g.name===l||(+${l}.startsWith("+55")?this.getNumbers(+${l}).some(L=>g.name===L||g.name===L.substring(3)||g.name===L.substring(1)):!1);this.logger.verbose(Picture needs update: ${T}),this.logger.verbose(Name needs update: ${O}),(T||O)&&(g=await this.updateContact(s,g.id,{...O&&{name:u},...E===""&&{avatar:null},...T&&{avatar_url:h?.profilePictureUrl}}))}}else g=await this.createContact(s,l,d.id,c,u,h.profilePictureUrl||null,o);if(!g)return this.logger.warn("Contact not created or found"),null;let m=g?.payload?.id||g?.payload?.contact?.id||g?.id;this.logger.verbose(Contact ID: ${m});let y=await a.contacts.listConversations({accountId:this.provider.accountId,id:m});if(this.logger.verbose(Contact conversations: ${JSON.stringify(y)}),!y||!y.payload)return this.logger.error("No conversations found or payload is undefined"),null;let S=y.payload.find(E=>E.inbox_id==d.id);if(S&&(this.provider.reopenConversation?(this.logger.verbose(Found conversation in reopenConversation mode: ${JSON.stringify(S)}),S&&this.provider.conversationPending&&S.status!=="open"&&await a.conversations.toggleStatus({accountId:this.provider.accountId,conversationId:S.id,data:{status:"pending"}})):(S=y.payload.find(E=>E&&E.status!=="resolved"&&E.inbox_id==d.id),this.logger.verbose(Found conversation: ${JSON.stringify(S)})),S))return this.logger.verbose(Returning existing conversation ID: ${S.id}),this.cache.set(i,S.id),S.id;let C={contact_id:m.toString(),inbox_id:d.id.toString()};if(this.provider.conversationPending&&(C.status="pending"),await this.cache.has(i))return await this.cache.get(i);let v=await a.conversations.create({accountId:this.provider.accountId,data:C});return v?(this.logger.verbose(New conversation created of ${o} with ID: ${v.id}),this.cache.set(i,v.id),v.id):(this.logger.warn("Conversation not created or found"),null)}finally{await this.cache.delete(n),this.logger.verbose(Block released for: ${n})}}catch(a){return this.logger.error(Error in createConversation: ${a}),null}}async getInbox(s){let e=${s.instanceName}:getInbox;if(await this.cache.has(e))return await this.cache.get(e);let t=await this.clientCw(s);if(!t)return this.logger.warn("client not found"),null;let o=await t.inboxes.list({accountId:this.provider.accountId});if(!o)return this.logger.warn("inbox not found"),null;let i=o.payload.find(n=>n.name===this.getClientCwConfig().nameInbox);return i?(this.cache.set(e,i),i):(this.logger.warn("inbox not found"),null)}async createMessage(s,e,t,o,i,n,r,a,c){let l=await this.clientCw(s);if(!l)return this.logger.warn("client not found"),null;let u=await this.getReplyToIds(r,s),d=c?.chatwootMessageId||null,h=await l.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:t,message_type:o,attachments:n,private:i||!1,source_id:a,content_attributes:{...u},source_reply_id:d?d.toString():null}});return h||(this.logger.warn("message not found"),null)}async getOpenConversationByContact(s,e,t){let o=await this.clientCw(s);return o?(await o.contacts.listConversations({accountId:this.provider.accountId,id:t.id})).payload.find(n=>n.inbox_id===e.id&&n.status==="open")||void 0:(this.logger.warn("client not found"),null)}async createBotMessage(s,e,t,o){let i=await this.clientCw(s);if(!i)return this.logger.warn("client not found"),null;let n=await this.findContact(s,"123456");if(!n)return this.logger.warn("contact not found"),null;let r=await this.getInbox(s);if(!r)return this.logger.warn("inbox not found"),null;let a=await this.getOpenConversationByContact(s,r,n);if(!a){this.logger.warn("conversation not found");return}let c=await i.messages.create({accountId:this.provider.accountId,conversationId:a.id,data:{content:e,message_type:t,attachments:o}});return c||(this.logger.warn("message not found"),null)}async sendData(s,e,t,o,i,n,r,a,c){if(a&&this.isImportHistoryAvailable()){let h=await X.getExistingSourceIds([a],s);if(h&&h.size>0)return this.logger.warn("Message already saved on chatwoot"),null}let l=new hn.default;i&&l.append("content",i),l.append("message_type",o),l.append("attachments[]",e,{filename:t});let u=c?.chatwootMessageId||null;if(r&&n){let h=await this.getReplyToIds(r,n);if(h.in_reply_to||h.in_reply_to_external_id){let g=JSON.stringify({...h});l.append("content_attributes",g)}}u&&l.append("source_reply_id",u.toString()),a&&l.append("source_id",a);let d={method:"post",maxBodyLength:1/0,url:${this.provider.url}/api/v1/accounts/${this.provider.accountId}/conversations/${s}/messages,headers:{api_access_token:this.provider.token,...l.getHeaders()},data:l};try{let{data:h}=await Rt.default.request(d);return h}catch(h){this.logger.error(h)}}async createBotQr(s,e,t,o,i){if(!await this.clientCw(s))return this.logger.warn("client not found"),null;if(!this.configService.get("CHATWOOT").BOT_CONTACT)return this.logger.log("Chatwoot bot contact is disabled"),!0;let r=await this.findContact(s,"123456");if(!r)return this.logger.warn("contact not found"),null;let a=await this.getInbox(s);if(!a)return this.logger.warn("inbox not found"),null;let c=await this.getOpenConversationByContact(s,a,r);if(!c){this.logger.warn("conversation not found");return}let l=new hn.default;e&&l.append("content",e),l.append("message_type",t),o&&i&&l.append("attachments[]",o,{filename:i});let u={method:"post",maxBodyLength:1/0,url:${this.provider.url}/api/v1/accounts/${this.provider.accountId}/conversations/${c.id}/messages,headers:{api_access_token:this.provider.token,...l.getHeaders()},data:l};try{let{data:d}=await Rt.default.request(u);return d}catch(d){this.logger.error(d)}}async sendAttachment(s,e,t,o,i){try{let n=yn.default.parse(decodeURIComponent(t)),r=ht.default.lookup(n?.ext)||"",a=n?.name+n?.ext;if(!r){let h=t.split("/");a=decodeURIComponent(h[h.length-1]),r=(await Rt.default.get(t,{responseType:"arraybuffer"})).headers["content-type"]}let c="document";switch(r.split("/")[0]){case"image":c="image";break;case"video":c="video";break;case"audio":c="audio";break;default:c="document";break}if(c==="audio"){let h={number:e,audio:t,delay:1200,quoted:i?.quoted};return j("/message/sendWhatsAppAudio"),await s?.audioWhatsapp(h,null,!0)}c==="image"&&n&&[".gif",".svg",".tiff",".tif"].includes(n?.ext)&&(c="document");let u={number:e,mediatype:c,fileName:a,media:t,delay:1200,quoted:i?.quoted};return j("/message/sendMedia"),o&&(u.caption=o),await s?.mediaMessage(u,null,!0)}catch(n){this.logger.error(n)}}async onSendMessageError(s,e,t){this.logger.verbose(onSendMessageError ${JSON.stringify(t)});let o=await this.clientCw(s);if(o){if(t&&t?.status===400&&t?.message[0]?.exists===!1){o.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:${U.t("cw.message.numbernotinwhatsapp")},message_type:"outgoing",private:!0}});return}o.messages.create({accountId:this.provider.accountId,conversationId:e,data:{content:U.t("cw.message.notsent",{error:t?${t.toString()}:""}),message_type:"outgoing",private:!0}})}}async receiveWebhook(s,e){try{if(await new Promise(c=>setTimeout(c,500)),!await this.clientCw(s))return this.logger.warn("client not found"),null;if(this.provider.reopenConversation===!1&&e.event==="conversation_status_changed"&&e.status==="resolved"&&e.meta?.sender?.identifier){let c=${s.instanceName}:createConversation-${e.meta.sender.identifier};this.cache.delete(c)}if(!e?.conversation||e.private||e.event==="message_updated"&&!e.content_attributes?.deleted)return{message:"bot"};let o=e.conversation.meta.sender?.identifier||e.conversation.meta.sender?.phone_number.replace("+",""),i=e.content?e.content.replaceAll(/(?<!\*)\*((?!\s)([^\n*]+?)(?<!\s))\*(?!\*)/g,"_$1_").replaceAll(/\*{2}((?!\s)([^\n*]+?)(?<!\s))\*{2}/g,"*$1*").replaceAll(/~{2}((?!\s)([^\n*]+?)(?<!\s))~{2}/g,"~$1~").replaceAll(/(?<!)((?!\s)([^*]+?)(?<!\s))(?!)/g,"$1"):e.content,n=e?.conversation?.messages[0]?.sender?.available_name||e?.sender?.name,r=this.waMonitor.waInstances[s.instanceName];if(e.event==="message_updated"&&e.content_attributes?.deleted){let c=await this.prismaRepository.message.findFirst({where:{chatwootMessageId:e.id,instanceId:s.instanceId}});if(c){let l=c.key;await r?.client.sendMessage(l.remoteJid,{delete:l}),await this.prismaRepository.message.deleteMany({where:{instanceId:s.instanceId,chatwootMessageId:e.id}})}return{message:"bot"}}let a=this.configService.get("CHATWOOT").BOT_CONTACT;if(o==="123456"&&e.message_type==="outgoing"){let c=i.replace("/","");if(a&&(c.includes("init")||c.includes("iniciar")))if(r?.connectionStatus?.state!=="open"){let u=c.split(":")[1];await r.connectToWhatsapp(u)}else await this.createBotMessage(s,U.t("cw.inbox.alreadyConnected",{inboxName:e.inbox.name}),"incoming");if(c==="clearcache"&&(r.clearCacheChatwoot(),await this.createBotMessage(s,U.t("cw.inbox.clearCache",{inboxName:e.inbox.name}),"incoming")),c==="status"){let l=r?.connectionStatus?.state;l||await this.createBotMessage(s,U.t("cw.inbox.notFound",{inboxName:e.inbox.name}),"incoming"),l&&await this.createBotMessage(s,U.t("cw.inbox.status",{inboxName:e.inbox.name,state:l}),"incoming")}if(a&&(c==="disconnect"||c==="desconectar")){let l=U.t("cw.inbox.disconnect",{inboxName:e.inbox.name});await this.createBotMessage(s,l,"incoming"),await r?.client?.logout("Log out instance: "+s.instanceName),await r?.client?.ws?.close()}}if(e.message_type==="outgoing"&&e?.conversation?.messages?.length&&o!=="123456"){if(e?.conversation?.messages[0]?.source_id?.substring(0,5)==="WAID:")return{message:"bot"};if(!r&&e.conversation?.id)return this.onSendMessageError(s,e.conversation?.id,"Instance not found"),{message:"bot"};let c;if(n==null)c=i;else{let u=this.provider.signDelimiter?this.provider.signDelimiter.replaceAll("\n",`

`

85 ,d=this.provider.signMsg?[${n}:]:[];d.push(i),c=d.join(u)}for(let u of e.conversation.messages)if(u.attachments&&u.attachments.length>0)for(let d of u.attachments){i||(c=null);let h={quoted:await this.getQuotedMessage(e,s)},g=await this.sendAttachment(r,o,d.data_url,c,h);!g&&e.conversation?.id&&this.onSendMessageError(s,e.conversation?.id),await this.updateChatwootMessageId({...g,owner:s.instanceName},{messageId:e.id,inboxId:e.inbox?.id,conversationId:e.conversation?.id,contactInboxSourceId:e.conversation?.contact_inbox?.source_id},s)}else{let d={number:o,text:c,delay:1200,quoted:await this.getQuotedMessage(e,s)};j("/message/sendText");let h;try{if(h=await r?.textMessage(d,!0),!h)throw new Error("Message not sent");fn.default.isLong(h?.messageTimestamp)&&(h.messageTimestamp=h.messageTimestamp?.toNumber()),await this.updateChatwootMessageId({...h,instanceId:s.instanceId},{messageId:e.id,inboxId:e.inbox?.id,conversationId:e.conversation?.id,contactInboxSourceId:e.conversation?.contact_inbox?.source_id},s)}catch(g){throw!h&&e.conversation?.id&&this.onSendMessageError(s,e.conversation?.id,g),g}}if(this.configService.get("CHATWOOT").MESSAGE_READ){let u=await this.prismaRepository.message.findFirst({where:{key:{path:["fromMe"],equals:!1},instanceId:s.instanceId}});if(u&&!u.chatwootIsRead){let d=u.key;r?.markMessageAsRead({readMessages:[{id:d.id,fromMe:d.fromMe,remoteJid:d.remoteJid}]});let h={chatwootMessageId:u.chatwootMessageId,chatwootConversationId:u.chatwootConversationId,chatwootInboxId:u.chatwootInboxId,chatwootContactInboxSourceId:u.chatwootContactInboxSourceId,chatwootIsRead:!0};await this.prismaRepository.message.updateMany({where:{instanceId:s.instanceId,key:{path:["id"],equals:d.id}},data:h})}}}if(e.message_type==="template"&&e.event==="message_created"){let c={number:o,text:e.content.replace(/\\\r\n|\\\n|\n/g,

→ 86 `),delay:1200};j("/message/sendText"),await r?.textMessage(c)}return{message:"bot"}}catch(t){return this.logger.error(t),{message:"bot"}}}async updateChatwootMessageId(s,e,t){let o=s.key;!e.messageId||!o?.id||(await this.prismaRepository.message.updateMany(

Input error. A JSON path cannot be set without a scalar filter.

at Xn.handleRequestError (/evolution/node_modules/@prisma/client/runtime/library.js:121:7459)

at Xn.handleAndLogRequestError (/evolution/node_modules/@prisma/client/runtime/library.js:121:6784)

at Xn.request (/evolution/node_modules/@prisma/client/runtime/library.js:121:6491)

at async l (/evolution/node_modules/@prisma/client/runtime/library.js:130:9812)

at async Pe.getMessageByKeyId (/evolution/dist/main.js:86:614)

at async Pe.eventWhatsapp (/evolution/dist/main.js:135:39) {

code: 'P2019',

{

modelName: 'Message',

details: 'A JSON path cannot be set without a scalar filter.'

},

clientVersion: '6.11.1'

}

What did you expect?

Que não ouve erros.

What did you observe instead of what you expected?

erros.

Screenshots/Videos

No response

Which version of the API are you using?

2.3.3 homolog 09/09/2025

What is your environment?

Docker

Other environment specifications

No response

If applicable, paste the log output

No response

Additional Notes

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions