Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>This is a notification to inform you that an account has been permanently deleted from your Chatwoot instance.</p>
|
||||
|
||||
<p>
|
||||
<strong>Chatwoot Installation:</strong> {{ meta.instance_url }}<br>
|
||||
<strong>Account ID:</strong> {{ meta.account_id }}<br>
|
||||
<strong>Account Name:</strong> {{ meta.account_name }}<br>
|
||||
<strong>Deletion due at:</strong> {{ meta.marked_for_deletion_at }}<br>
|
||||
<strong>Deleted At:</strong> {{ meta.deleted_at }}<br>
|
||||
<strong>Deletion Reason:</strong> {{ meta.deletion_reason }}
|
||||
</p>
|
||||
|
||||
{% if meta.deleted_user_count > 0 %}
|
||||
<p>
|
||||
<strong>Deleted Users ({{ meta.deleted_user_count }}):</strong><br>
|
||||
{% for user in meta.soft_deleted_users %}
|
||||
User ID: {{ user.user_id }}, Email: {{ user.user_email }}{% unless forloop.last %}<br>{% endunless %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
<strong>Deleted Users:</strong> None
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<p>This email serves as a record for compliance purposes.</p>
|
||||
|
||||
<p>Thank you,<br>
|
||||
Chatwoot System</p>
|
||||
@@ -0,0 +1,21 @@
|
||||
<p>Hello there,</p>
|
||||
|
||||
<p>We've noticed that your Chatwoot account <strong>{{ meta.account_name }}</strong> has been inactive for some time. Because of this, it's scheduled for deletion on <strong>{{ meta.deletion_date }}</strong>.</p>
|
||||
|
||||
<p><strong>How do I keep my account?</strong></p>
|
||||
|
||||
<p>Log in to your Chatwoot account before <strong>{{ meta.deletion_date }}</strong>. From your account settings, you can <a href="{{ action_url }}">cancel the deletion</a> and continue using your account.</p>
|
||||
|
||||
<p><strong>What happens if I don't cancel?</strong></p>
|
||||
|
||||
<p>Unless you cancel the account deletion before <strong>{{ meta.deletion_date }}</strong>, your account and all associated data — including conversations, contacts, reports, and settings — will be permanently deleted.</p>
|
||||
|
||||
<p><strong>Why are we doing this?</strong></p>
|
||||
|
||||
<p>To keep things secure and efficient, we regularly remove inactive accounts so our systems remain optimized for active teams.</p>
|
||||
|
||||
<p>If you have any questions, feel free to reach us at <a href="mailto:hello@chatwoot.com">hello@chatwoot.com</a>.</p>
|
||||
|
||||
<p>— The Chatwoot Team</p>
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<p>Hello there,</p>
|
||||
|
||||
<p>An account administrator has requested deletion of the Chatwoot account <strong>{{ meta.account_name }}</strong>. The account is scheduled for deletion on <strong>{{ meta.deletion_date }}</strong>.</p>
|
||||
|
||||
<p><strong>What happens next?</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>The account will remain accessible until the scheduled deletion date.</li>
|
||||
<li>After that, all data including conversations, contacts, integrations, and settings will be permanently removed.</li>
|
||||
</ul>
|
||||
|
||||
<p>If you change your mind before the deletion date, you can <a href="{{ action_url }}">cancel this request</a> by visiting your account settings.</p>
|
||||
|
||||
<p>— The Chatwoot Team</p>
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hello there,</p>
|
||||
|
||||
<p>The automation rule <b>{{meta['rule_name']}}</b> has been disabled becuase it has invalid conditions.</p>
|
||||
<p>This typically happens when you delete any custom attributes which are still being used in automation rules.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to update the conditions.
|
||||
</p>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hi</p>
|
||||
|
||||
|
||||
<p>Your contact export file is ready to download.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{ action_url }}">here</a> to download the export file.
|
||||
</p>
|
||||
@@ -0,0 +1,17 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your contact import has been completed. Please check the contacts tab to view the imported contacts.</p>
|
||||
|
||||
<p>Number of records imported: {{meta['imported_contacts']}}</p>
|
||||
|
||||
<p>Number of records failed: {{meta['failed_contacts']}}</p>
|
||||
|
||||
{% if meta['failed_contacts'] == 0 %}
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to view the imported contacts.
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
Click <a href="{{ action_url }}" target="_blank">here</a> to view failed records.
|
||||
</p>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your contact import has failed. It appears that the CSV file you uploaded may not be valid. We kindly request that you review the file and ensure it complies with the required format.<p/>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your email inbox has been disconnected due to configuration errors. </p>
|
||||
<p>Please update it to continue receiving messages.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to re-connect.
|
||||
</p>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your Facebook Inbox Access has expired. </p>
|
||||
<p>Please reconnect Facebook Page to continue receiving messages.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to re-connect.
|
||||
</p>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your Instagram Inbox Access has expired. </p>
|
||||
<p>Please reconnect Instagram to continue receiving messages.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to re-connect.
|
||||
</p>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your Whatsapp Access has expired. </p>
|
||||
<p>Please reconnect Whatsapp to continue receiving messages.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to re-connect.
|
||||
</p>
|
||||
@@ -0,0 +1,3 @@
|
||||
<p>Hello there,</p>
|
||||
|
||||
<p>Your Dialogflow integration was disconnected because of permission issues. To resolve this, please delete the integration from the admin dashboard and reconnect it using new credentials.</p>
|
||||
@@ -0,0 +1,7 @@
|
||||
<p>Hello,</p>
|
||||
|
||||
<p>Your Slack integration has expired. To continue receiving messages on Slack, please delete the integration and connect your workspace again. </p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to re-connect.
|
||||
</p>
|
||||
@@ -0,0 +1,7 @@
|
||||
<p>Hi {{user.available_name}},</p>
|
||||
|
||||
<p>You have received a new message in your assigned conversation.</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to get cracking.
|
||||
</p>
|
||||
@@ -0,0 +1,31 @@
|
||||
<p>Hi {{user.available_name}},</p>
|
||||
|
||||
<p>Time to save the world. A new conversation has been assigned to you</p>
|
||||
|
||||
{% for chat_message in conversation.recent_messages %}
|
||||
<div>
|
||||
<h4 style="margin: 0;">
|
||||
{% if chat_message.sender == user.available_name %}
|
||||
You
|
||||
{% else %}
|
||||
{{chat_message.sender}}
|
||||
{% endif %}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div style="padding: 10px 20px; margin: 5px 0 20px 0; background: #F2F3F7; border-radius: 10px; display: inline-block; font-family: 'Helvetica Neue',Tahoma,Arial,sans-serif; text-align: start; unicode-bidi: plaintext;">
|
||||
{% if chat_message.content %}
|
||||
{{chat_message.content}}
|
||||
{% endif %}
|
||||
|
||||
{% if chat_message.attachments %}
|
||||
{% for attachment in chat_message.attachments %}
|
||||
Attachment [<a href="{{ attachment }}" _target="blank">Click here to view</a>]
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<p>
|
||||
Click <a href="{{action_url}}">here</a> to get cracking.
|
||||
</p>
|
||||
@@ -0,0 +1,30 @@
|
||||
<p>Hi {{user.available_name}}</p>
|
||||
|
||||
<p>
|
||||
A new conversation (<a href="{{ action_url }}">#{{conversation.display_id}}</a>) has been created in {{ inbox.name }}.
|
||||
<strong>{{ conversation.contact_name }}</strong> wrote:
|
||||
</p>
|
||||
|
||||
{% for chat_message in conversation.recent_messages %}
|
||||
<div>
|
||||
<h4 style="margin: 0;">
|
||||
{% if chat_message.sender == user.available_name %}
|
||||
You
|
||||
{% else %}
|
||||
{{chat_message.sender}}
|
||||
{% endif %}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div style="padding: 10px 20px; margin: 5px 0 20px 0; background: #F2F3F7; border-radius: 10px; display: inline-block; font-family: 'Helvetica Neue',Tahoma,Arial,sans-serif; text-align: start; unicode-bidi: plaintext;">
|
||||
{% if chat_message.content %}
|
||||
{{chat_message.content}}
|
||||
{% endif %}
|
||||
|
||||
{% if chat_message.attachments %}
|
||||
{% for attachment in chat_message.attachments %}
|
||||
Attachment [<a href="{{ attachment }}" _target="blank">Click here to view</a>]
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,34 @@
|
||||
<p>Hi {{user.available_name}}, </p>
|
||||
|
||||
<p>You've been mentioned in a conversation. <b>{{message.sender_display_name}}</b> wrote:</p>
|
||||
<blockquote style="box-sizing:border-box; padding:8px 16px; margin:0 0 20px; font-size:14px; border-left:5px solid #eeeeee">
|
||||
{{message.text_content}}
|
||||
</blockquote>
|
||||
|
||||
<p><b>Previous messages:</b></p>
|
||||
{% for chat_message in conversation.recent_messages %}
|
||||
<div>
|
||||
<h4 style="margin: 0;">
|
||||
{% if chat_message.sender == user.available_name %}
|
||||
You
|
||||
{% else %}
|
||||
{{chat_message.sender}}
|
||||
{% endif %}
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div style="padding: 10px 20px; margin: 5px 0 20px 0; background: #F2F3F7; border-radius: 10px; display: inline-block; font-family: 'Helvetica Neue',Tahoma,Arial,sans-serif; text-align: start; unicode-bidi: plaintext;">
|
||||
{% if chat_message.content %}
|
||||
{{chat_message.content}}
|
||||
{% endif %}
|
||||
|
||||
{% if chat_message.attachments %}
|
||||
{% for attachment in chat_message.attachments %}
|
||||
Attachment [<a href="{{ attachment }}" _target="blank">Click here to view</a>]
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<p>
|
||||
<a href="{{ action_url }}">View Message</a>
|
||||
</p>
|
||||
@@ -0,0 +1,5 @@
|
||||
<p>Hi {{user.available_name}},</p>
|
||||
|
||||
<p>You have received a new message in a conversation you are participating.</p>
|
||||
|
||||
<p>Click <a href="{{action_url}}">here</a> to get cracking.</p>
|
||||
@@ -0,0 +1,10 @@
|
||||
<p>Hi {{user.available_name}},</p>
|
||||
|
||||
<p>
|
||||
Conversation #{{conversation.display_id}} in {{ inbox.name }}
|
||||
has missed the SLA for first response under policy {{ sla_policy.name }}.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="{{action_url}}">Please address immediately.</a>
|
||||
</p>
|
||||
@@ -0,0 +1,10 @@
|
||||
<p>Hi {{user.available_name}},</p>
|
||||
|
||||
<p>
|
||||
Conversation #{{conversation.display_id}} in {{ inbox.name }}
|
||||
has missed the SLA for next response under policy {{ sla_policy.name }}..
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="{{action_url}}">Please address immediately.</a>
|
||||
</p>
|
||||
@@ -0,0 +1,10 @@
|
||||
<p>Hi {{user.available_name}},</p>
|
||||
|
||||
<p>
|
||||
Conversation #{{conversation.display_id}} in {{ inbox.name }}
|
||||
has missed the SLA for resolution time under policy {{ sla_policy.name }}.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="{{action_url}}">Please address immediately.</a>
|
||||
</p>
|
||||
@@ -0,0 +1,50 @@
|
||||
<% @messages.each do |message| %>
|
||||
<tr>
|
||||
<td>
|
||||
<b><%= message.sender&.try(:available_name) || message.sender&.name || '' %></b>
|
||||
<% if message.conversation.inbox&.inbox_type == 'Email' %>
|
||||
<div style="font-size: 90%; color: #899096; line-height: 16px">
|
||||
<% if message.content_attributes.dig(:email, :from).present? %>
|
||||
<div>From: <%= message.content_attributes.dig(:email, :from).join(", ") %></div>
|
||||
<% else %>
|
||||
<div>From: <%= message.sender&.try(:email) %></div>
|
||||
<% end %>
|
||||
|
||||
<% if message.content_attributes.dig(:email, :subject).present? %>
|
||||
<div>Subject: <%= message.content_attributes.dig(:email, :subject) %></div>
|
||||
<% end %>
|
||||
|
||||
<% if message.content_attributes[:to_emails].present? %>
|
||||
<div>To: <%= message.content_attributes[:to_emails].join(", ") %></div>
|
||||
<% end %>
|
||||
<% if message.content_attributes[:cc_emails].present? %>
|
||||
<div>CC: <%= message.content_attributes[:cc_emails].join(", ") %></div>
|
||||
<% end %>
|
||||
<% if message.content_attributes[:bcc_emails].present? %>
|
||||
<div>BCC: <%= message.content_attributes[:bcc_emails].join(", ") %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-bottom: 32px;">
|
||||
<% if message.content %>
|
||||
<%= ChatwootMarkdownRenderer.new(message.content).render_message %>
|
||||
<% end %>
|
||||
<% if message.attachments.present? %>
|
||||
<p>Attachments:</p>
|
||||
<% message.attachments.each do |attachment| %>
|
||||
<p><a href="<%= attachment.file_url %>" target="_blank"><%= attachment.file.filename.to_s %></a></p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<p style="font-size: 90%; font-size: 90%;color: #899096;margin-top: -8px; margin-bottom: 0px;">
|
||||
<% if @inbox.timezone.present? %>
|
||||
<%= message.created_at.in_time_zone(@inbox.timezone).strftime('%b %d, %I:%M %p %Z') %>
|
||||
<% else %>
|
||||
<%= message.created_at.strftime('%b %d, %I:%M %p %Z') %>
|
||||
<% end %>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
@@ -0,0 +1,11 @@
|
||||
<% if @message.content_attributes.dig('email', 'html_content', 'reply').present? %>
|
||||
<%= @message.content_attributes.dig('email', 'html_content', 'reply').html_safe %>
|
||||
<% elsif @message.content %>
|
||||
<%= @message.outgoing_content.html_safe %>
|
||||
<% end %>
|
||||
<% if @large_attachments.present? %>
|
||||
<p>Attachments:</p>
|
||||
<% @large_attachments.each do |attachment| %>
|
||||
<p><a href="<%= attachment.file_url %>" target="_blank"><%= attachment.file.filename.to_s %></a></p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
@@ -0,0 +1,32 @@
|
||||
<p>Hi <%= @contact.name %>,</p>
|
||||
|
||||
<p>You have new messages on your conversation.</p>
|
||||
|
||||
<% @messages.each do |message| %>
|
||||
<tr>
|
||||
<td>
|
||||
<b><%= message.incoming? ? 'You' : message.sender&.available_name || message.sender&.name || 'Bot' %></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 16px; margin: 4px 0 8px 0; background: #F5FAFF; border-radius: 5px; display: inline-block; font-family: 'Helvetica Neue',Tahoma,Arial,sans-serif; text-align: start; unicode-bidi: plaintext;">
|
||||
<% if (message.content_type == 'input_csat' && message.message_type == 'template') %>
|
||||
<p>Click <a href="<%= message.conversation.csat_survey_link %>" _target="blank">here</a> to rate the conversation.</p>
|
||||
<% elsif message.content.present? %>
|
||||
<%= ChatwootMarkdownRenderer.new(message.content).render_message %>
|
||||
<% end %>
|
||||
<% if message.attachments.count.positive? %>
|
||||
<p>
|
||||
<% if message.content.present? %>
|
||||
<hr style="border: 0; border-bottom: 1px solid #AEC3D5;"/>
|
||||
<% end %>
|
||||
Attachments:
|
||||
<% message.attachments.each_with_index do |attachment, index| %>
|
||||
<% if index > 0 %><br /><% end %>
|
||||
<a href="<%= attachment.file_url %>" target="_blank"><%= attachment.file.filename.to_s %></a>
|
||||
<% end %>
|
||||
</p>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
@@ -0,0 +1,13 @@
|
||||
<% @messages.each do |message| %>
|
||||
<p style="font-family: Roboto,"Helvetica Neue",Tahoma,Arial,sans-serif; text-align: start; unicode-bidi: plaintext;">
|
||||
<% if message.content %>
|
||||
<%= ChatwootMarkdownRenderer.new(message.content).render_message %>
|
||||
<% end %>
|
||||
<% if message.attachments.present? %>
|
||||
<p>Attachments:</p>
|
||||
<% message.attachments.each do |attachment| %>
|
||||
<p><a href="<%= attachment.file_url %>" target="_blank"><%= attachment.file.filename.to_s %></a></p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</p>
|
||||
<% end %>
|
||||
@@ -0,0 +1,30 @@
|
||||
<tr>
|
||||
<td>
|
||||
<p>Hello there,</p>
|
||||
<p>To complete the setup of your help center, you'll need to update the DNS settings for your custom domain: <strong>{{ cname_record | split: ' ' | first }}</strong>.</p>
|
||||
<p>Please add the following CNAME record to your DNS provider's configuration:</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<p><strong>{{ cname_record }}</strong></p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<p>Step-by-step Instructions:</p>
|
||||
|
||||
<ol>
|
||||
<li>Log in to your DNS provider’s dashboard</li>
|
||||
<li>Go to the DNS management section</li>
|
||||
<li>Create a new CNAME record using the information above</li>
|
||||
<li>Save the changes and allow up to 24 hours for the DNS to propagate</li>
|
||||
</ol>
|
||||
|
||||
<p>Once the DNS record is live, your custom domain will automatically be secured with an SSL certificate.</p>
|
||||
|
||||
<p>If you have any questions or need help, feel free to reach out to our support team—we’re here to assist you.</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -0,0 +1,7 @@
|
||||
<p>This is the mail from Automation System</p>
|
||||
|
||||
<p>{{ custom_message }}</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{ action_url }}">here</a> to get cracking.
|
||||
</p>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hi {{user.available_name}}</p>
|
||||
|
||||
|
||||
<p>{{ custom_message }}</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{ action_url }}">here</a> to get cracking.
|
||||
</p>
|
||||
@@ -0,0 +1,8 @@
|
||||
<p>Hi {{user.available_name}}</p>
|
||||
|
||||
|
||||
<p>{{ custom_message }}</p>
|
||||
|
||||
<p>
|
||||
Click <a href="{{ action_url }}">here</a> to get cracking.
|
||||
</p>
|
||||
Reference in New Issue
Block a user