Class: Facebook::Messenger::Incoming::Message

Inherits:
Object
  • Object
show all
Includes:
Common
Defined in:
lib/facebook/messenger/incoming/message.rb

Overview

The Message class represents an incoming Facebook Messenger message.

Direct Known Subclasses

MessageEcho

Constant Summary collapse

ATTACHMENT_TYPES =
%w[image audio video file location fallback].freeze

Instance Attribute Summary

Attributes included from Common

#messaging

Instance Method Summary collapse

Methods included from Common

#access_token, #initialize, #mark_seen, #recipient, #reply, #sender, #sent_at, #typing_off, #typing_on

Instance Method Details

#app_idObject



30
31
32
# File 'lib/facebook/messenger/incoming/message.rb', line 30

def app_id
  @messaging['message']['app_id']
end

#attachment_typeObject



40
41
42
43
44
# File 'lib/facebook/messenger/incoming/message.rb', line 40

def attachment_type
  return if attachments.nil?

  attachments.first['type']
end

#attachment_urlObject



46
47
48
49
50
51
# File 'lib/facebook/messenger/incoming/message.rb', line 46

def attachment_url
  return if attachments.nil?
  return unless %w[image audio video file].include? attachment_type

  attachments.first['payload']['url']
end

#attachmentsObject



26
27
28
# File 'lib/facebook/messenger/incoming/message.rb', line 26

def attachments
  @messaging['message']['attachments']
end

#echo?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/facebook/messenger/incoming/message.rb', line 22

def echo?
  @messaging['message']['is_echo']
end

#idObject



10
11
12
# File 'lib/facebook/messenger/incoming/message.rb', line 10

def id
  @messaging['message']['mid']
end

#location_coordinatesObject



53
54
55
56
57
58
# File 'lib/facebook/messenger/incoming/message.rb', line 53

def location_coordinates
  return [] unless attachment_type?('location')

  coordinates_data = attachments.first['payload']['coordinates']
  [coordinates_data['lat'], coordinates_data['long']]
end

#quick_replyObject



60
61
62
63
64
# File 'lib/facebook/messenger/incoming/message.rb', line 60

def quick_reply
  return unless @messaging['message']['quick_reply']

  @messaging['message']['quick_reply']['payload']
end

#seqObject



14
15
16
# File 'lib/facebook/messenger/incoming/message.rb', line 14

def seq
  @messaging['message']['seq']
end

#textObject



18
19
20
# File 'lib/facebook/messenger/incoming/message.rb', line 18

def text
  @messaging['message']['text']
end