feat: Add webhook event support for macros (#11235)

Fixes https://github.com/chatwoot/chatwoot/issues/5968

We will not support custom payload in V1.
This commit is contained in:
Pranav
2025-04-02 20:26:55 -07:00
committed by GitHub
parent c35edc9c49
commit 8bf2081aff
6 changed files with 24 additions and 4 deletions

View File

@@ -97,7 +97,8 @@
"SEND_ATTACHMENT": "Send Attachment",
"SEND_MESSAGE": "Send a Message",
"CHANGE_PRIORITY": "Change Priority",
"ADD_PRIVATE_NOTE": "Add a Private Note"
"ADD_PRIVATE_NOTE": "Add a Private Note",
"SEND_WEBHOOK_EVENT": "Send Webhook Event"
}
}
}

View File

@@ -65,7 +65,7 @@ const resolvedMacro = computed(() => {
class="absolute -left-[0.21875rem] top-[0.2734375rem] w-2 h-2 rounded-full bg-n-solid-1 border-2 border-solid border-n-weak dark:border-slate-600"
/>
<p class="mb-1 text-xs text-n-slate-11">
{{ action.actionName }}
{{ $t(`MACROS.ACTIONS.${action.actionName}`) }}
</p>
<p class="text-n-slate-12 text-sm">{{ action.actionValue }}</p>
</div>

View File

@@ -64,4 +64,9 @@ export const MACRO_ACTION_TYPES = [
label: 'CHANGE_PRIORITY',
inputType: 'search_select',
},
{
key: 'send_webhook_event',
label: 'SEND_WEBHOOK_EVENT',
inputType: 'url',
},
];

View File

@@ -31,7 +31,8 @@ class Macro < ApplicationRecord
validate :json_actions_format
ACTIONS_ATTRS = %w[send_message add_label assign_team assign_agent mute_conversation change_status remove_label remove_assigned_team
resolve_conversation snooze_conversation change_priority send_email_transcript send_attachment add_private_note].freeze
resolve_conversation snooze_conversation change_priority send_email_transcript send_attachment
add_private_note send_webhook_event].freeze
def set_visibility(user, params)
self.visibility = params[:visibility]

View File

@@ -62,4 +62,9 @@ class Macros::ExecutionService < ActionService
mb = Messages::MessageBuilder.new(@user, @conversation.reload, params)
mb.perform
end
def send_webhook_event(webhook_url)
payload = @conversation.webhook_data.merge(event: 'macro.executed')
WebhookJob.perform_later(webhook_url.first, payload)
end
end