Skip to content

Commit

Permalink
Feat/5733 Add private note action in macros (#5805)
Browse files Browse the repository at this point in the history
  • Loading branch information
tejaswinichile committed Nov 7, 2022
1 parent 894234e commit a23974d
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 2 deletions.
Expand Up @@ -53,6 +53,7 @@ export default {
send_webhook_event: params[0],
send_message: params[0],
send_email_transcript: params[0],
add_private_note: params[0],
};
return actionsMap[key] || '';
},
Expand Down
Expand Up @@ -39,4 +39,9 @@ export const MACRO_ACTION_TYPES = [
label: 'Send a message',
inputType: 'textarea',
},
{
key: 'add_private_note',
label: 'Add a private note',
inputType: 'textarea',
},
];
2 changes: 1 addition & 1 deletion app/models/macro.rb
Expand Up @@ -33,7 +33,7 @@ class Macro < ApplicationRecord
validate :json_actions_format

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)
self.visibility = params[:visibility]
Expand Down
10 changes: 10 additions & 0 deletions app/services/macros/execution_service.rb
Expand Up @@ -22,6 +22,16 @@ def perform

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)
return if conversation_a_tweet?

Expand Down
17 changes: 16 additions & 1 deletion spec/controllers/api/v1/accounts/macros_controller_spec.rb
Expand Up @@ -234,7 +234,8 @@
{ 'action_name' => 'add_label', 'action_params' => %w[support priority_customer] },
{ 'action_name' => 'snooze_conversation' },
{ '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

Expand Down Expand Up @@ -296,6 +297,20 @@

expect(conversation.reload.status).to eql('snoozed')
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
Expand Down

0 comments on commit a23974d

Please sign in to comment.