diff --git a/app/builders/messages/facebook/message_builder.rb b/app/builders/messages/facebook/message_builder.rb index fec298bce..bfca31870 100644 --- a/app/builders/messages/facebook/message_builder.rb +++ b/app/builders/messages/facebook/message_builder.rb @@ -53,7 +53,21 @@ class Messages::Facebook::MessageBuilder < Messages::Messenger::MessageBuilder end def conversation - @conversation ||= Conversation.find_by(conversation_params) || build_conversation + @conversation ||= begin + lock_to_single_conversation = @inbox.lock_to_single_conversation + + if lock_to_single_conversation + Conversation.find_by(conversation_params) || build_conversation + else + # If lock to single conversation is disabled, we will create a new conversation if previous conversation is resolved + last_conversation = Conversation.where(conversation_params).order(created_at: :desc).first + if last_conversation&.status == 'resolved' + build_conversation + else + last_conversation + end + end + end end def build_conversation diff --git a/app/builders/messages/instagram/message_builder.rb b/app/builders/messages/instagram/message_builder.rb index e9debb767..48c2c8529 100644 --- a/app/builders/messages/instagram/message_builder.rb +++ b/app/builders/messages/instagram/message_builder.rb @@ -69,9 +69,23 @@ class Messages::Instagram::MessageBuilder < Messages::Messenger::MessageBuilder end def conversation - @conversation ||= Conversation.where(conversation_params).find_by( - "additional_attributes ->> 'type' = 'instagram_direct_message'" - ) || build_conversation + @conversation ||= begin + lock_to_single_conversation = @inbox.lock_to_single_conversation + + if lock_to_single_conversation + Conversation.where(conversation_params).find_by( + "additional_attributes ->> 'type' = 'instagram_direct_message'" + ) || build_conversation + else + # If lock to single conversation is disabled, we will create a new conversation if previous conversation is resolved + last_conversation = Conversation.where(conversation_params).order(created_at: :desc).first + if last_conversation&.status == 'resolved' + build_conversation + else + last_conversation + end + end + end end def message_content