class Stealth::Services::Smooch::MessageHandler
Attributes
headers[R]
params[R]
service_message[R]
smooch_response[R]
Public Class Methods
new(params:, headers:)
click to toggle source
# File lib/stealth/services/smooch/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/smooch/message_handler.rb, line 22 def coordinate # Queue the request processing so we can respond quickly to Smooch # and also keep track of this message Stealth::Services::HandleMessageJob.perform_async( 'smooch', params, headers ) # Relay our acceptance [200, 'OK'] end
process()
click to toggle source
# File lib/stealth/services/smooch/message_handler.rb, line 35 def process @service_message = ServiceMessage.new(service: 'smooch') @smooch_response = params service_message.sender_id = get_sender_id process_smooch_event service_message end
Private Instance Methods
get_sender_id()
click to toggle source
# File lib/stealth/services/smooch/message_handler.rb, line 47 def get_sender_id smooch_response['appUser']['_id'] end
process_smooch_event()
click to toggle source
# File lib/stealth/services/smooch/message_handler.rb, line 51 def process_smooch_event if smooch_response['trigger'] == 'message:appUser' smooch_message = smooch_response['messages'].first service_message.timestamp = Time.at(smooch_message['received']).to_datetime message_event = Stealth::Services::Smooch::MessageEvent.new( service_message: service_message, params: smooch_message ) elsif smooch_response['trigger'] == 'postback' smooch_postback = smooch_response['postbacks'].first service_message.timestamp = Time.at(smooch_postback.dig('message', 'received')).to_datetime message_event = Stealth::Services::Smooch::PostbackEvent.new( service_message: service_message, params: smooch_postback ) elsif smooch_response['trigger'] == 'conversation:start' service_message.timestamp = Time.at(smooch_response['timestamp']).to_datetime message_event = Stealth::Services::Smooch::ConversationStartEvent.new( service_message: service_message, params: smooch_response ) end message_event.process end