Files
leadchat/app/jobs/hook_job.rb
2023-05-24 20:22:34 +05:30

43 lines
1.3 KiB
Ruby

class HookJob < ApplicationJob
queue_as :medium
def perform(hook, event_name, event_data = {})
case hook.app_id
when 'slack'
process_slack_integration(hook, event_name, event_data)
when 'dialogflow'
process_dialogflow_integration(hook, event_name, event_data)
when 'google_translate'
google_translate_integration(hook, event_name, event_data)
end
rescue StandardError => e
Rails.logger.error e
end
private
def process_slack_integration(hook, event_name, event_data)
return unless ['message.created'].include?(event_name)
message = event_data[:message]
if message.attachments.blank?
::SendOnSlackJob.perform_later(message, hook)
else
::SendOnSlackJob.set(wait: 2.seconds).perform_later(message, hook)
end
end
def process_dialogflow_integration(hook, event_name, event_data)
return unless ['message.created', 'message.updated'].include?(event_name)
Integrations::Dialogflow::ProcessorService.new(event_name: event_name, hook: hook, event_data: event_data).perform
end
def google_translate_integration(hook, event_name, event_data)
return unless ['message.created'].include?(event_name)
message = event_data[:message]
Integrations::GoogleTranslate::DetectLanguageService.new(hook: hook, message: message).perform
end
end