module Facebook::Messenger::Incoming

Module Incoming parses and abstracts incoming requests from Messenger.

Constants

EVENTS

@return [Hash] Hash containing facebook messenger events and its event

handler classes.

Public Class Methods

parse(payload) click to toggle source

Parse the given payload and create new object of class related

to event in payload.

@see developers.facebook.com/docs/messenger-platform/webhook-reference

@raise [Facebook::Messenger::Incoming::UnknownPayload] if event is not

registered in EVENTS constant

@param [Hash] payload A Hash describing a payload from Facebook.

# File lib/facebook/messenger/incoming.rb, line 53
def self.parse(payload)
  return MessageEcho.new(payload) if payload_is_echo?(payload)

  EVENTS.each do |event, klass|
    return klass.new(payload) if payload.key?(event)
  end

  raise UnknownPayload, payload
end
payload_is_echo?(payload) click to toggle source

Check if event is echo.

@param [Hash] payload Request payload from facebook.

@return [Boolean] If event is echo return true else false.

# File lib/facebook/messenger/incoming.rb, line 70
def self.payload_is_echo?(payload)
  payload.key?('message') && payload['message']['is_echo'] == true
end