fix(whatsapp): adiciona método text_content ao PayloadParser e ignora UndecryptableMessage

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 <noreply@anthropic.com>
This commit is contained in:
Rodrigo Borba 2026-02-28 17:00:52 -03:00
parent c48047ba50
commit e6e4c36525

View File

@ -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)