Feat/5733 Add private note action in macros (#5805)
This commit is contained in:
@@ -53,6 +53,7 @@ export default {
|
|||||||
send_webhook_event: params[0],
|
send_webhook_event: params[0],
|
||||||
send_message: params[0],
|
send_message: params[0],
|
||||||
send_email_transcript: params[0],
|
send_email_transcript: params[0],
|
||||||
|
add_private_note: params[0],
|
||||||
};
|
};
|
||||||
return actionsMap[key] || '';
|
return actionsMap[key] || '';
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -39,4 +39,9 @@ export const MACRO_ACTION_TYPES = [
|
|||||||
label: 'Send a message',
|
label: 'Send a message',
|
||||||
inputType: 'textarea',
|
inputType: 'textarea',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: 'add_private_note',
|
||||||
|
label: 'Add a private note',
|
||||||
|
inputType: 'textarea',
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class Macro < ApplicationRecord
|
|||||||
validate :json_actions_format
|
validate :json_actions_format
|
||||||
|
|
||||||
ACTIONS_ATTRS = %w[send_message add_label assign_team assign_best_agent mute_conversation change_status
|
ACTIONS_ATTRS = %w[send_message add_label assign_team assign_best_agent mute_conversation change_status
|
||||||
resolve_conversation snooze_conversation send_email_transcript send_attachment].freeze
|
resolve_conversation snooze_conversation send_email_transcript send_attachment add_private_note].freeze
|
||||||
|
|
||||||
def set_visibility(user, params)
|
def set_visibility(user, params)
|
||||||
self.visibility = params[:visibility]
|
self.visibility = params[:visibility]
|
||||||
|
|||||||
@@ -22,6 +22,16 @@ class Macros::ExecutionService < ActionService
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def add_private_note(message)
|
||||||
|
return if conversation_a_tweet?
|
||||||
|
|
||||||
|
params = { content: message[0], private: true }
|
||||||
|
|
||||||
|
# Added reload here to ensure conversation us persistent with the latest updates
|
||||||
|
mb = Messages::MessageBuilder.new(@user, @conversation.reload, params)
|
||||||
|
mb.perform
|
||||||
|
end
|
||||||
|
|
||||||
def send_message(message)
|
def send_message(message)
|
||||||
return if conversation_a_tweet?
|
return if conversation_a_tweet?
|
||||||
|
|
||||||
|
|||||||
@@ -234,7 +234,8 @@ RSpec.describe 'Api::V1::Accounts::MacrosController', type: :request do
|
|||||||
{ 'action_name' => 'add_label', 'action_params' => %w[support priority_customer] },
|
{ 'action_name' => 'add_label', 'action_params' => %w[support priority_customer] },
|
||||||
{ 'action_name' => 'snooze_conversation' },
|
{ 'action_name' => 'snooze_conversation' },
|
||||||
{ 'action_name' => 'assign_best_agent', 'action_params' => [user_1.id] },
|
{ 'action_name' => 'assign_best_agent', 'action_params' => [user_1.id] },
|
||||||
{ 'action_name' => 'send_message', 'action_params' => ['Send this message.'] }
|
{ 'action_name' => 'send_message', 'action_params' => ['Send this message.'] },
|
||||||
|
{ 'action_name' => 'add_private_note', 'action_params': ['We are sending greeting message to customer.'] }
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -296,6 +297,20 @@ RSpec.describe 'Api::V1::Accounts::MacrosController', type: :request do
|
|||||||
|
|
||||||
expect(conversation.reload.status).to eql('snoozed')
|
expect(conversation.reload.status).to eql('snoozed')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'Adds the private note' do
|
||||||
|
expect(conversation.messages).to be_empty
|
||||||
|
|
||||||
|
perform_enqueued_jobs do
|
||||||
|
post "/api/v1/accounts/#{account.id}/macros/#{macro.id}/execute",
|
||||||
|
params: { conversation_ids: [conversation.display_id] },
|
||||||
|
headers: administrator.create_new_auth_token
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(conversation.messages.last.content).to eq('We are sending greeting message to customer.')
|
||||||
|
expect(conversation.messages.last.sender).to eq(administrator)
|
||||||
|
expect(conversation.messages.last.private).to be_truthy
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user