class Fb::Messenger::Receiver

handles the incoming fb webhook data

Public Class Methods

config() click to toggle source
# File lib/fb/messenger/receiver.rb, line 30
def config
  @_config ||= {}
end
configure() { |self| ... } click to toggle source
# File lib/fb/messenger/receiver.rb, line 22
def configure
  yield self
end
event_type(msg_event) click to toggle source
# File lib/fb/messenger/receiver.rb, line 34
def event_type(msg_event)
  return 'message' if msg_event[:message]
  return 'postback' if msg_event[:postback]
  return 'delivery' if msg_event[:delivery]
end
handle_unsupported_event(msg_event) click to toggle source

TODO: log this error better

# File lib/fb/messenger/receiver.rb, line 41
def handle_unsupported_event(msg_event)
  puts ">>> unsupported event: #{msg_event}"
end
receive(entries, opts = {}) click to toggle source

expecting params

# File lib/fb/messenger/receiver.rb, line 7
def receive(entries, opts = {})
  entries.each do |entry|
    entry[:messaging].each do |msg_event|
      event_type = event_type(msg_event)
      unless event_type
        handle_unsupported_event(msg_event)
        next
      end
      event_class = event_type.classify
      event = "Fb::Messenger::Event::#{event_class}".constantize.new(msg_event)
      config[event_type].call(event, opts)
    end
  end
end
subscribe(event, subscriber) click to toggle source
# File lib/fb/messenger/receiver.rb, line 26
def subscribe(event, subscriber)
  config[event] = subscriber
end