feat: show assignment policy name in auto-assignment activity messages (#13598)
This commit is contained in:
committed by
GitHub
parent
5b167b5b5b
commit
2b85275e26
@@ -1,6 +1,7 @@
|
|||||||
module ActivityMessageHandler
|
module ActivityMessageHandler
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
include AssigneeActivityMessageHandler
|
||||||
include PriorityActivityMessageHandler
|
include PriorityActivityMessageHandler
|
||||||
include LabelActivityMessageHandler
|
include LabelActivityMessageHandler
|
||||||
include SlaActivityMessageHandler
|
include SlaActivityMessageHandler
|
||||||
@@ -104,27 +105,6 @@ module ActivityMessageHandler
|
|||||||
content = I18n.t("conversations.activity.#{change_type}", user_name: Current.user.name)
|
content = I18n.t("conversations.activity.#{change_type}", user_name: Current.user.name)
|
||||||
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_assignee_change_activity_content(user_name)
|
|
||||||
params = { assignee_name: assignee&.name || '', user_name: user_name }
|
|
||||||
key = assignee_id ? 'assigned' : 'removed'
|
|
||||||
key = 'self_assigned' if self_assign? assignee_id
|
|
||||||
I18n.t("conversations.activity.assignee.#{key}", **params)
|
|
||||||
end
|
|
||||||
|
|
||||||
def create_assignee_change_activity(user_name)
|
|
||||||
user_name = activity_message_owner(user_name)
|
|
||||||
|
|
||||||
return unless user_name
|
|
||||||
|
|
||||||
content = generate_assignee_change_activity_content(user_name)
|
|
||||||
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
||||||
end
|
|
||||||
|
|
||||||
def activity_message_owner(user_name)
|
|
||||||
user_name = I18n.t('automation.system_name') if !user_name && Current.executed_by.present?
|
|
||||||
user_name
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
ActivityMessageHandler.prepend_mod_with('ActivityMessageHandler')
|
ActivityMessageHandler.prepend_mod_with('ActivityMessageHandler')
|
||||||
|
|||||||
35
app/models/concerns/assignee_activity_message_handler.rb
Normal file
35
app/models/concerns/assignee_activity_message_handler.rb
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
module AssigneeActivityMessageHandler
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def create_assignee_change_activity(user_name)
|
||||||
|
user_name = activity_message_owner(user_name)
|
||||||
|
|
||||||
|
return unless user_name
|
||||||
|
|
||||||
|
content = generate_assignee_change_activity_content(user_name)
|
||||||
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_assignee_change_activity_content(user_name)
|
||||||
|
params = { assignee_name: assignee&.name || '', user_name: user_name }
|
||||||
|
key = assignee_id ? 'assigned' : 'removed'
|
||||||
|
key = 'self_assigned' if self_assign? assignee_id
|
||||||
|
I18n.t("conversations.activity.assignee.#{key}", **params)
|
||||||
|
end
|
||||||
|
|
||||||
|
def activity_message_owner(user_name)
|
||||||
|
if !user_name && Current.executed_by.present?
|
||||||
|
user_name = case Current.executed_by
|
||||||
|
when AssignmentPolicy
|
||||||
|
I18n.t('auto_assignment.policy_actor', policy_name: Current.executed_by.name)
|
||||||
|
when Inbox
|
||||||
|
I18n.t('auto_assignment.default_policy_name')
|
||||||
|
else
|
||||||
|
I18n.t('automation.system_name')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
user_name
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -72,13 +72,17 @@ class AutoAssignment::AssignmentService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def assign_conversation(conversation, agent)
|
def assign_conversation(conversation, agent)
|
||||||
|
Current.executed_by = inbox.assignment_policy || inbox
|
||||||
conversation.update!(assignee: agent)
|
conversation.update!(assignee: agent)
|
||||||
|
Current.executed_by = nil
|
||||||
|
|
||||||
rate_limiter = build_rate_limiter(agent)
|
rate_limiter = build_rate_limiter(agent)
|
||||||
rate_limiter.track_assignment(conversation)
|
rate_limiter.track_assignment(conversation)
|
||||||
|
|
||||||
dispatch_assignment_event(conversation, agent)
|
dispatch_assignment_event(conversation, agent)
|
||||||
true
|
true
|
||||||
|
ensure
|
||||||
|
Current.executed_by = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def dispatch_assignment_event(conversation, agent)
|
def dispatch_assignment_event(conversation, agent)
|
||||||
|
|||||||
@@ -438,6 +438,9 @@ en:
|
|||||||
seconds:
|
seconds:
|
||||||
one: '%{count} second'
|
one: '%{count} second'
|
||||||
other: '%{count} seconds'
|
other: '%{count} seconds'
|
||||||
|
auto_assignment:
|
||||||
|
default_policy_name: 'Default Policy'
|
||||||
|
policy_actor: 'Automation System via %{policy_name}'
|
||||||
automation:
|
automation:
|
||||||
system_name: 'Automation System'
|
system_name: 'Automation System'
|
||||||
crm:
|
crm:
|
||||||
|
|||||||
Reference in New Issue
Block a user