From e6e4c36525236e5ff8035aa35f67844977497626 Mon Sep 17 00:00:00 2001 From: Rodrigo Borba Date: Sat, 28 Feb 2026 17:00:52 -0300 Subject: [PATCH] =?UTF-8?q?fix(whatsapp):=20adiciona=20m=C3=A9todo=20text?= =?UTF-8?q?=5Fcontent=20ao=20PayloadParser=20e=20ignora=20UndecryptableMes?= =?UTF-8?q?sage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrige NoMethodError que impedia todas as mensagens de texto de chegarem ao front. O método text_content era chamado mas não existia na classe. Também adiciona UndecryptableMessage à lista de eventos ignorados para evitar tentativa de processar mensagens sem conteúdo descriptografável. Co-Authored-By: Claude Sonnet 4.6 --- .../providers/wuzapi/payload_parser.rb | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/services/whatsapp/providers/wuzapi/payload_parser.rb b/app/services/whatsapp/providers/wuzapi/payload_parser.rb index f59ada021..680a0bf46 100644 --- a/app/services/whatsapp/providers/wuzapi/payload_parser.rb +++ b/app/services/whatsapp/providers/wuzapi/payload_parser.rb @@ -105,6 +105,28 @@ class Whatsapp::Providers::Wuzapi::PayloadParser params.dig(:event, :Info, :IsGroup) || params.dig(:event, :IsGroup) end + def text_content + # Direct text field (some WuzAPI versions) + return params.dig(:event, :Text) if params.dig(:event, :Text).present? + + msg = unwrap_ephemeral_message(params.dig(:event, :Message)) + return nil unless msg.is_a?(Hash) + + # Standard conversation text + return msg[:conversation] if msg[:conversation].present? + + # Extended text message (links, mentions, formatting) + return msg.dig(:extendedTextMessage, :text) if msg.dig(:extendedTextMessage, :text).present? + + # Media captions + %i[imageMessage videoMessage documentMessage audioMessage stickerMessage].each do |key| + caption = msg.dig(key, :caption) + return caption if caption.present? + end + + nil + end + private def webhook_event_type @@ -128,6 +150,7 @@ class Whatsapp::Providers::Wuzapi::PayloadParser Presence PresenceUpdate Ack + UndecryptableMessage ] ignorable.include?(webhook_event_type)