mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 10:42:38 +00:00
feat: Change slack bot and activity message appearance (#8349)
This commit is contained in:
@@ -44,7 +44,7 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
|
|||||||
|
|
||||||
def message_content
|
def message_content
|
||||||
private_indicator = message.private? ? 'private: ' : ''
|
private_indicator = message.private? ? 'private: ' : ''
|
||||||
sanitized_content = ActionView::Base.full_sanitizer.sanitize(message_text)
|
sanitized_content = ActionView::Base.full_sanitizer.sanitize(format_message_content)
|
||||||
|
|
||||||
if conversation.identifier.present?
|
if conversation.identifier.present?
|
||||||
"#{private_indicator}#{sanitized_content}"
|
"#{private_indicator}#{sanitized_content}"
|
||||||
@@ -53,6 +53,10 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def format_message_content
|
||||||
|
message.message_type == 'activity' ? "_#{message_text}_" : message_text
|
||||||
|
end
|
||||||
|
|
||||||
def message_text
|
def message_text
|
||||||
if message.content.present?
|
if message.content.present?
|
||||||
message.content.gsub(MENTION_REGEX, '\1')
|
message.content.gsub(MENTION_REGEX, '\1')
|
||||||
@@ -79,7 +83,7 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def avatar_url(sender)
|
def avatar_url(sender)
|
||||||
sender_type = sender.instance_of?(Contact) ? 'contact' : 'user'
|
sender_type = sender_type(sender).downcase
|
||||||
blob_key = sender&.avatar&.attached? ? sender.avatar.blob.key : nil
|
blob_key = sender&.avatar&.attached? ? sender.avatar.blob.key : nil
|
||||||
generate_url(sender_type, blob_key)
|
generate_url(sender_type, blob_key)
|
||||||
end
|
end
|
||||||
@@ -137,7 +141,15 @@ class Integrations::Slack::SendOnSlackService < Base::SendOnChannelService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def sender_type(sender)
|
def sender_type(sender)
|
||||||
sender.instance_of?(Contact) ? 'Contact' : 'Agent'
|
if sender.instance_of?(Contact)
|
||||||
|
'Contact'
|
||||||
|
elsif message.message_type == 'template' && sender.nil?
|
||||||
|
'Bot'
|
||||||
|
elsif message.message_type == 'activity' && sender.nil?
|
||||||
|
'System'
|
||||||
|
else
|
||||||
|
'Agent'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_reference_id
|
def update_reference_id
|
||||||
|
|||||||
BIN
public/integrations/slack/bot.png
Normal file
BIN
public/integrations/slack/bot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
BIN
public/integrations/slack/system.png
Normal file
BIN
public/integrations/slack/system.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
@@ -183,11 +183,11 @@ describe Integrations::Slack::SendOnSlackService do
|
|||||||
it 'sent a template message on slack' do
|
it 'sent a template message on slack' do
|
||||||
builder = described_class.new(message: template_message, hook: hook)
|
builder = described_class.new(message: template_message, hook: hook)
|
||||||
allow(builder).to receive(:slack_client).and_return(slack_client)
|
allow(builder).to receive(:slack_client).and_return(slack_client)
|
||||||
|
template_message.update!(sender: nil)
|
||||||
expect(slack_client).to receive(:chat_postMessage).with(
|
expect(slack_client).to receive(:chat_postMessage).with(
|
||||||
channel: hook.reference_id,
|
channel: hook.reference_id,
|
||||||
text: template_message.content,
|
text: template_message.content,
|
||||||
username: "#{template_message.sender.name} (Contact)",
|
username: 'Bot',
|
||||||
thread_ts: conversation.identifier,
|
thread_ts: conversation.identifier,
|
||||||
icon_url: anything,
|
icon_url: anything,
|
||||||
unfurl_links: true
|
unfurl_links: true
|
||||||
@@ -198,6 +198,24 @@ describe Integrations::Slack::SendOnSlackService do
|
|||||||
expect(template_message.external_source_id_slack).to eq 'cw-origin-6789.12345'
|
expect(template_message.external_source_id_slack).to eq 'cw-origin-6789.12345'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'sent a activity message on slack' do
|
||||||
|
template_message.update!(message_type: :activity)
|
||||||
|
template_message.update!(sender: nil)
|
||||||
|
builder = described_class.new(message: template_message, hook: hook)
|
||||||
|
allow(builder).to receive(:slack_client).and_return(slack_client)
|
||||||
|
expect(slack_client).to receive(:chat_postMessage).with(
|
||||||
|
channel: hook.reference_id,
|
||||||
|
text: "_#{template_message.content}_",
|
||||||
|
username: 'System',
|
||||||
|
thread_ts: conversation.identifier,
|
||||||
|
icon_url: anything,
|
||||||
|
unfurl_links: true
|
||||||
|
).and_return(slack_message)
|
||||||
|
|
||||||
|
builder.perform
|
||||||
|
expect(template_message.external_source_id_slack).to eq 'cw-origin-6789.12345'
|
||||||
|
end
|
||||||
|
|
||||||
it 'disables hook on Slack AccountInactive error' do
|
it 'disables hook on Slack AccountInactive error' do
|
||||||
expect(slack_client).to receive(:chat_postMessage).with(
|
expect(slack_client).to receive(:chat_postMessage).with(
|
||||||
channel: hook.reference_id,
|
channel: hook.reference_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user