diff --git a/app/services/conversations/can_reply_service.rb b/app/services/conversations/can_reply_service.rb index c56740e4e..7f94f890a 100644 --- a/app/services/conversations/can_reply_service.rb +++ b/app/services/conversations/can_reply_service.rb @@ -1,66 +1,55 @@ class Conversations::CanReplyService - DEFAULT_MESSAGING_WINDOW = 24 - EXTENDED_MESSAGING_WINDOW = 7.days - INSTAGRAM_MESSENGER_TYPE = 'instagram_direct_message' - def initialize(conversation) @conversation = conversation end def can_reply? - return false if last_incoming_message.nil? - channel = @conversation.inbox&.channel + + return can_reply_on_instagram_via_messenger? if instagram_via_messenger? + return can_reply_on_instagram? if @conversation.inbox.instagram_direct? return true unless channel&.messaging_window_enabled? - case channel_type - when :instagram_messenger - can_reply_on_instagram_via_messenger? - when :instagram_direct - can_reply_on_instagram? - else - last_message_in_messaging_window?(messaging_window) - end + last_message_in_messaging_window?(messaging_window) end private - def channel_type - return :instagram_messenger if instagram_via_messenger? - return :instagram_direct if @conversation.inbox.instagram_direct? - :other - end - def messaging_window - return DEFAULT_MESSAGING_WINDOW unless @conversation.inbox.api? - - window = @conversation.inbox.channel.additional_attributes['agent_reply_time_window'].to_i - window.positive? ? window : DEFAULT_MESSAGING_WINDOW + @conversation.inbox.api? ? @conversation.inbox.channel.additional_attributes['agent_reply_time_window'].to_i : 24 end def last_message_in_messaging_window?(time) + return false if last_incoming_message.nil? + Time.current < last_incoming_message.created_at + time.hours end def instagram_via_messenger? - @conversation.additional_attributes['type'] == INSTAGRAM_MESSENGER_TYPE + @conversation.additional_attributes['type'] == 'instagram_direct_message' end def can_reply_on_instagram_via_messenger? global_config = GlobalConfig.get('ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT') - extended_window_enabled?(global_config['ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT']) + + return false if last_incoming_message.nil? + + if global_config['ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT'] + Time.current < last_incoming_message.created_at + 7.days + else + last_message_in_messaging_window?(24) + end end def can_reply_on_instagram? global_config = GlobalConfig.get('ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT') - extended_window_enabled?(global_config['ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT']) - end - def extended_window_enabled?(enabled) - if enabled - Time.current < last_incoming_message.created_at + EXTENDED_MESSAGING_WINDOW + return false if last_incoming_message.nil? + + if global_config['ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT'] + Time.current < last_incoming_message.created_at + 7.days else - last_message_in_messaging_window?(DEFAULT_MESSAGING_WINDOW) + last_message_in_messaging_window?(24) end end