mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
FEATURE: add outgoing web hooks for Chat messages
This commit is contained in:
@ -67,6 +67,7 @@ after_initialize do
|
||||
Jobs::UserEmail.prepend Chat::UserEmailExtension
|
||||
Plugin::Instance.prepend Chat::PluginInstanceExtension
|
||||
Jobs::ExportCsvFile.class_eval { prepend Chat::MessagesExporter }
|
||||
WebHook.prepend Chat::OutgoingWebHookExtension
|
||||
end
|
||||
|
||||
if Oneboxer.respond_to?(:register_local_handler)
|
||||
@ -381,6 +382,35 @@ after_initialize do
|
||||
end
|
||||
end
|
||||
|
||||
# outgoing webhook events
|
||||
%i[
|
||||
chat_message_created
|
||||
chat_message_edited
|
||||
chat_message_trashed
|
||||
chat_message_restored
|
||||
].each do |chat_message_event|
|
||||
on(chat_message_event) do |message, channel, user|
|
||||
guardian = Guardian.new(user)
|
||||
|
||||
payload = {
|
||||
message: Chat::MessageSerializer.new(message, { scope: guardian, root: false }).as_json,
|
||||
channel:
|
||||
Chat::ChannelSerializer.new(
|
||||
channel,
|
||||
{ scope: guardian, membership: channel.membership_for(user), root: false },
|
||||
).as_json,
|
||||
}
|
||||
|
||||
category_id = channel.chatable_type == "Category" ? channel.chatable_id : nil
|
||||
|
||||
WebHook.enqueue_chat_message_hooks(
|
||||
chat_message_event,
|
||||
payload.to_json,
|
||||
category_id: category_id,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
Discourse::Application.routes.append do
|
||||
mount ::Chat::Engine, at: "/chat"
|
||||
|
||||
|
Reference in New Issue
Block a user