Chatwoot/app/jobs/send_reply_job.rb

36 lines
1.1 KiB
Ruby
Raw Normal View History

class SendReplyJob < ApplicationJob
queue_as :high
def perform(message_id)
message = Message.find(message_id)
2021-10-05 09:05:32 +00:00
conversation = message.conversation
channel_name = conversation.inbox.channel.class.to_s
services = {
'Channel::TwitterProfile' => ::Twitter::SendOnTwitterService,
'Channel::TwilioSms' => ::Twilio::SendOnTwilioService,
'Channel::Line' => ::Line::SendOnLineService,
'Channel::Telegram' => ::Telegram::SendOnTelegramService,
'Channel::Whatsapp' => ::Whatsapp::SendOnWhatsappService,
'Channel::Sms' => ::Sms::SendOnSmsService
}
2020-09-08 05:54:08 +00:00
case channel_name
when 'Channel::FacebookPage'
send_on_facebook_page(message)
else
services[channel_name].new(message: message).perform if services[channel_name].present?
end
end
private
def send_on_facebook_page(message)
if message.conversation.additional_attributes['type'] == 'instagram_direct_message'
::Instagram::SendOnInstagramService.new(message: message).perform
else
::Facebook::SendOnFacebookService.new(message: message).perform
end
end
end