feat: whatsapp duplicate message (#7004)

This commit is contained in:
Tejaswini Chile
2023-05-03 15:18:20 +05:30
committed by GitHub
parent 0d014d5d4b
commit b081fe08b8
4 changed files with 55 additions and 6 deletions

View File

@@ -20,13 +20,15 @@ class Whatsapp::IncomingMessageBaseService
def process_messages
# message allready exists so we don't need to process
return if find_message_by_source_id(@processed_params[:messages].first[:id])
return if find_message_by_source_id(@processed_params[:messages].first[:id]) || message_under_process?
cache_message_source_id_in_redis
set_contact
return unless @contact
set_conversation
create_messages
clear_message_source_id_from_redis
end
def process_statuses
@@ -53,11 +55,8 @@ class Whatsapp::IncomingMessageBaseService
log_error(message) && return if error_webhook_event?(message)
process_in_reply_to(message)
if message_type == 'contacts'
create_contact_messages(message)
else
create_regular_message(message)
end
message_type == 'contacts' ? create_contact_messages(message) : create_regular_message(message)
end
def create_contact_messages(message)

View File

@@ -104,4 +104,21 @@ module Whatsapp::IncomingMessageServiceHelpers
@message = Message.find_by(source_id: source_id)
end
def message_under_process?
key = format(Redis::RedisKeys::MESSAGE_SOURCE_KEY, id: @processed_params[:messages].first[:id])
Redis::Alfred.get(key)
end
def cache_message_source_id_in_redis
return if @processed_params.try(:[], :messages).blank?
key = format(Redis::RedisKeys::MESSAGE_SOURCE_KEY, id: @processed_params[:messages].first[:id])
::Redis::Alfred.setex(key, true)
end
def clear_message_source_id_from_redis
key = format(Redis::RedisKeys::MESSAGE_SOURCE_KEY, id: @processed_params[:messages].first[:id])
::Redis::Alfred.delete(key)
end
end