class Stealth::Services::Facebook::MessageHandler
Attributes
facebook_message[R]
headers[R]
params[R]
service_message[R]
Public Class Methods
new(params:, headers:)
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 17 def initialize(params:, headers:) @params = params @headers = headers end
Public Instance Methods
coordinate()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 22 def coordinate if facebook_is_validating_webhook? respond_with_validation else # Queue the request processing so we can respond quickly to FB # and also keep track of this message Stealth::Services::HandleMessageJob.perform_async( 'facebook', params, headers ) # Relay our acceptance [200, 'OK'] end end
process()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 39 def process @service_message = ServiceMessage.new(service: 'facebook') @facebook_message = params['entry'].first['messaging'].first service_message.sender_id = get_sender_id service_message.target_id = get_target_id service_message.timestamp = get_timestamp process_facebook_event service_message end
Private Instance Methods
facebook_is_validating_webhook?()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 52 def facebook_is_validating_webhook? params['hub.verify_token'].present? end
get_sender_id()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 64 def get_sender_id facebook_message['sender']['id'] end
get_target_id()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 68 def get_target_id facebook_message['recipient']['id'] end
get_timestamp()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 72 def get_timestamp Time.at(facebook_message['timestamp']/1000).to_datetime end
process_facebook_event()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 76 def process_facebook_event if facebook_message['message'].present? message_event = Stealth::Services::Facebook::MessageEvent.new( service_message: service_message, params: facebook_message ) elsif facebook_message['postback'].present? message_event = Stealth::Services::Facebook::PostbackEvent.new( service_message: service_message, params: facebook_message ) elsif facebook_message['read'].present? message_event = Stealth::Services::Facebook::MessageReadsEvent.new( service_message: service_message, params: facebook_message ) elsif facebook_message['referral'].present? message_event = Stealth::Services::Facebook::MessagingReferralEvent.new( service_message: service_message, params: facebook_message ) end message_event.process end
respond_with_validation()
click to toggle source
# File lib/stealth/services/facebook/message_handler.rb, line 56 def respond_with_validation if params['hub.verify_token'] == Stealth.config.facebook.verify_token [200, params['hub.challenge']] else [401, "Verify token did not match environment variable."] end end