Module: Facebook::Messenger::Incoming

Defined in:
lib/facebook/messenger/incoming.rb,
lib/facebook/messenger/incoming/read.rb,
lib/facebook/messenger/incoming/optin.rb,
lib/facebook/messenger/incoming/common.rb,
lib/facebook/messenger/incoming/message.rb,
lib/facebook/messenger/incoming/payment.rb,
lib/facebook/messenger/incoming/delivery.rb,
lib/facebook/messenger/incoming/postback.rb,
lib/facebook/messenger/incoming/referral.rb,
lib/facebook/messenger/incoming/message_echo.rb,
lib/facebook/messenger/incoming/account_linking.rb,
lib/facebook/messenger/incoming/message_request.rb,
lib/facebook/messenger/incoming/policy_enforcement.rb

Overview

Module Incoming parses and abstracts incoming requests from Messenger.

Defined Under Namespace

Modules: Common Classes: AccountLinking, Delivery, Message, MessageEcho, MessageRequest, Optin, Payment, PolicyEnforcement, Postback, Read, Referral, UnknownPayload

Constant Summary collapse

EVENTS =

Returns Hash containing facebook messenger events and its event handler classes.

Returns:

  • (Hash)

    Hash containing facebook messenger events and its event handler classes.

{
  'message' => Message,
  'delivery' => Delivery,
  'postback' => Postback,
  'optin' => Optin,
  'read' => Read,
  'account_linking' => AccountLinking,
  'referral' => Referral,
  'message_echo' => MessageEcho,
  'message_request' => MessageRequest,
  'payment' => Payment,
  'policy_enforcement' => PolicyEnforcement
}.freeze

Class Method Summary collapse

Class Method Details

.parse(payload) ⇒ Object

Parse the given payload and create new object of class related

to event in payload.

Parameters:

  • payload (Hash)

    A Hash describing a payload from Facebook.

Raises:

See Also:



47
48
49
50
51
52
53
54
55
# File 'lib/facebook/messenger/incoming.rb', line 47

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) ⇒ Boolean

Check if event is echo.

Parameters:

  • payload (Hash)

    Request payload from facebook.

Returns:

  • (Boolean)

    If event is echo return true else false.



64
65
66
# File 'lib/facebook/messenger/incoming.rb', line 64

def self.payload_is_echo?(payload)
  payload.key?('message') && payload['message']['is_echo'] == true
end