Enhancement: ability to send out an email without summary #1048 (#1049)

Right now as part of conversation continuity, we are using the
ConversationReplyMailer which sends a summary of messages including
the incoming messages when an agent replies. Ideally, we want
to send only the reply of that agent and not a summary when
Conversation continuity is enabled. Added the functionality
to send the reply email without summary. Added required unit
tests to cover the changes.

ref: #1048
This commit is contained in:
Sony Mathew
2020-07-15 16:33:52 +05:30
committed by GitHub
parent a8ce9ae59c
commit d5a6f5e352
6 changed files with 82 additions and 9 deletions

View File

@@ -20,7 +20,27 @@ class ConversationReplyMailer < ApplicationMailer
to: @contact&.email,
from: from_email,
reply_to: reply_email,
subject: mail_subject(@messages.last),
subject: mail_subject,
message_id: custom_message_id,
in_reply_to: in_reply_to_email
})
end
def reply_without_summary(conversation, message_queued_time)
return unless smtp_config_set_or_development?
@conversation = conversation
@account = @conversation.account
@contact = @conversation.contact
@agent = @conversation.assignee
@messages = @conversation.messages.outgoing.where('created_at >= ?', message_queued_time)
mail({
to: @contact&.email,
from: from_email,
reply_to: reply_email,
subject: mail_subject,
message_id: custom_message_id,
in_reply_to: in_reply_to_email
})
@@ -28,7 +48,7 @@ class ConversationReplyMailer < ApplicationMailer
private
def mail_subject(_last_message, _trim_length = 50)
def mail_subject
subject_line = I18n.t('conversations.reply.email_subject')
"[##{@conversation.display_id}] #{subject_line}"
end
@@ -50,7 +70,7 @@ class ConversationReplyMailer < ApplicationMailer
end
def custom_message_id
"<conversation/#{@conversation.uuid}/messages/#{@messages.last.id}@#{current_domain}>"
"<conversation/#{@conversation.uuid}/messages/#{@messages&.last&.id}@#{current_domain}>"
end
def in_reply_to_email

View File

@@ -0,0 +1,12 @@
<% @messages.each do |message| %>
<p>
<% if message.content %>
<%= message.content %>
<% end %>
<% if message.attachments %>
<% message.attachments.each do |attachment| %>
attachment [<a href="<%= attachment.file_url %>" _target="blank">click here to view</a>]
<% end %>
<% end %>
</p>
<% end %>

View File

@@ -6,7 +6,11 @@ class ConversationReplyEmailWorker
@conversation = Conversation.find(conversation_id)
# send the email
ConversationReplyMailer.reply_with_summary(@conversation, queued_time).deliver_later
if @conversation.messages.incoming&.last&.content_type == 'incoming_email'
ConversationReplyMailer.reply_without_summary(@conversation, queued_time).deliver_later
else
ConversationReplyMailer.reply_with_summary(@conversation, queued_time).deliver_later
end
# delete the redis set from the first new message on the conversation
Redis::Alfred.delete(conversation_mail_key)