2020-07-16 19:02:32 +00:00
|
|
|
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
|
|
|
|
|
2022-02-03 23:22:13 +00:00
|
|
|
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'
|
2021-10-05 18:05:06 +00:00
|
|
|
send_on_facebook_page(message)
|
2022-02-03 23:22:13 +00:00
|
|
|
else
|
|
|
|
services[channel_name].new(message: message).perform if services[channel_name].present?
|
2021-10-05 18:05:06 +00:00
|
|
|
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
|
2020-07-16 19:02:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|