chore: Add attachments key to message_created
webhook payload (#5659)
- Add attachments key to `message_created` webhook payload
This commit is contained in:
parent
1c44e43c43
commit
2423def8e8
4 changed files with 21 additions and 4 deletions
|
@ -54,7 +54,7 @@ class WebhookListener < BaseListener
|
|||
private
|
||||
|
||||
def deliver_account_webhooks(payload, inbox)
|
||||
inbox.account.webhooks.account.each do |webhook|
|
||||
inbox.account.webhooks.account_type.each do |webhook|
|
||||
next unless webhook.subscriptions.include?(payload[:event])
|
||||
|
||||
WebhookJob.perform_later(webhook.url, payload)
|
||||
|
|
|
@ -116,7 +116,7 @@ class Message < ApplicationRecord
|
|||
end
|
||||
|
||||
def webhook_data
|
||||
{
|
||||
data = {
|
||||
account: account.webhook_data,
|
||||
additional_attributes: additional_attributes,
|
||||
content_attributes: content_attributes,
|
||||
|
@ -131,6 +131,8 @@ class Message < ApplicationRecord
|
|||
sender: sender.try(:webhook_data),
|
||||
source_id: source_id
|
||||
}
|
||||
data.merge!(attachments: attachments.map(&:push_event_data)) if attachments.present?
|
||||
data
|
||||
end
|
||||
|
||||
def content
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# id :bigint not null, primary key
|
||||
# subscriptions :jsonb
|
||||
# url :string
|
||||
# webhook_type :integer default("account")
|
||||
# webhook_type :integer default("account_type")
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# account_id :integer
|
||||
|
@ -23,7 +23,7 @@ class Webhook < ApplicationRecord
|
|||
validates :account_id, presence: true
|
||||
validates :url, uniqueness: { scope: [:account_id] }, format: URI::DEFAULT_PARSER.make_regexp(%w[http https])
|
||||
validate :validate_webhook_subscriptions
|
||||
enum webhook_type: { account: 0, inbox: 1 }
|
||||
enum webhook_type: { account_type: 0, inbox_type: 1 }
|
||||
|
||||
ALLOWED_WEBHOOK_EVENTS = %w[conversation_status_changed conversation_updated conversation_created message_created message_updated
|
||||
webwidget_triggered].freeze
|
||||
|
|
|
@ -33,6 +33,21 @@ RSpec.describe Message, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
context 'with webhook_data' do
|
||||
it 'contains the message attachment when attachment is present' do
|
||||
message = create(:message)
|
||||
attachment = message.attachments.new(account_id: message.account_id, file_type: :image)
|
||||
attachment.file.attach(io: File.open(Rails.root.join('spec/assets/avatar.png')), filename: 'avatar.png', content_type: 'image/png')
|
||||
attachment.save!
|
||||
expect(message.webhook_data.key?(:attachments)).to be true
|
||||
end
|
||||
|
||||
it 'does not contain the message attachment when attachment is not present' do
|
||||
message = create(:message)
|
||||
expect(message.webhook_data.key?(:attachments)).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when message is created' do
|
||||
let(:message) { build(:message, account: create(:account)) }
|
||||
|
||||
|
|
Loading…
Reference in a new issue