chore: rename service
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user