facebook-messenger 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f510182ff271bbc196d32186dc1ffb79cfc85a8b
4
- data.tar.gz: 7280598efce0fb8f35a5a553bcbad5c62e461064
3
+ metadata.gz: 3a67d299ebe188c1b50d8adcae153084eb694c4c
4
+ data.tar.gz: 2b882acad66c7260c99670b8b11dcd6771c18b1f
5
5
  SHA512:
6
- metadata.gz: aa769ba01fb9ec3415e6536a83fe73836e7d54c2f6278176aa9f19356f6d930337f11f22b6e97f85852f5956323f1c25deffec4de4e5c2e4282e6e53cb5a9695
7
- data.tar.gz: 4b36aa6de38e44616b07663d8a94112cb0c45aa5875cb786128ee3ed698ee0ba02d1fae3e611b0ad2b1b9f9fb52905a59f202b45ecf0c0fe38d827707c66b382
6
+ metadata.gz: 8fa27eacf08884194a942969822356c84e1de6c74d88b02451a858c5227351305a77e33d4c7eeba4dae146891b8d3c9d429924009bacb2055433db4c3947c071
7
+ data.tar.gz: 9f7975f548098478e922daf12433e19c28483edde278f0b7b6ee885ca2748c4d4107c06c4e25693f640210f35f1dc407fe9e3a5f461292fdade85fc4a9249933
data/README.md CHANGED
@@ -111,6 +111,29 @@ end
111
111
 
112
112
  *See Facebook's [documentation][message-documentation] for all message options.*
113
113
 
114
+ #### Send to Facebook
115
+
116
+ When the human clicks the [Send to Messenger button][send-to-messenger-plugin]
117
+ embedded on a website, you will receive an `optin` event.
118
+
119
+ ```ruby
120
+ Bot.on :optin do |optin|
121
+ postback.sender # => { id: '1008372609250235' }
122
+ postback.recipient # => { id: '2015573629214912' }
123
+ postback.sent_at # => 2016-04-22 21:30:36 +0200
124
+ postback.ref # => 'CONTACT_SKYNET'
125
+
126
+ Bot.deliver(
127
+ recipient: {
128
+ id: '45123'
129
+ },
130
+ message: {
131
+ text: 'Ah, human!'
132
+ }
133
+ )
134
+ end
135
+
136
+
114
137
  #### Message delivery receipts
115
138
 
116
139
  You can stalk the human:
@@ -123,7 +146,7 @@ Bot.on :delivery do |delivery|
123
146
  delivery.at # => 2016-04-22 21:30:36 +0200
124
147
  delivery.seq # => 37
125
148
 
126
- puts "Human received messages before #{delivery.at}"
149
+ puts "Human was online at #{delivery.at}"
127
150
  end
128
151
  ```
129
152
 
@@ -204,3 +227,4 @@ If you're using Facebook Messenger, we probably want to [hire you].
204
227
  [message-documentation]: https://developers.facebook.com/docs/messenger-platform/send-api-reference#request
205
228
  [facebook-developers]: https://developers.facebook.com
206
229
  [rack]: https://github.com/rack/rack
230
+ [send-to-messenger-plugin]: https://developers.facebook.com/docs/messenger-platform/plugin-reference
@@ -6,7 +6,7 @@ module Facebook
6
6
 
7
7
  base_uri 'https://graph.facebook.com/v2.6/me'
8
8
 
9
- EVENTS = [:message, :delivery].freeze
9
+ EVENTS = [:message, :delivery, :postback, :optin].freeze
10
10
 
11
11
  class << self
12
12
  # Deliver a message with the given payload.
@@ -51,6 +51,7 @@ module Facebook
51
51
  when Incoming::Message then trigger(:message, klass)
52
52
  when Incoming::Delivery then trigger(:delivery, klass)
53
53
  when Incoming::Postback then trigger(:postback, klass)
54
+ when Incoming::Optin then trigger(:optin, klass)
54
55
  end
55
56
  end
56
57
 
@@ -1,6 +1,7 @@
1
1
  require 'facebook/messenger/incoming/message'
2
2
  require 'facebook/messenger/incoming/delivery'
3
3
  require 'facebook/messenger/incoming/postback'
4
+ require 'facebook/messenger/incoming/optin'
4
5
 
5
6
  module Facebook
6
7
  module Messenger
@@ -16,7 +17,8 @@ module Facebook
16
17
  {
17
18
  'message' => Message,
18
19
  'delivery' => Delivery,
19
- 'postback' => Postback
20
+ 'postback' => Postback,
21
+ 'optin' => Optin
20
22
  }.each do |key, klass|
21
23
  return klass.new(payload) if payload.key? key
22
24
  end
@@ -0,0 +1,31 @@
1
+ module Facebook
2
+ module Messenger
3
+ module Incoming
4
+ # The Optin class represents an incoming Facebook Messenger optin,
5
+ # which occurs when a user engages by using the Send-to-Messenger Plugin.
6
+ #
7
+ # https://developers.facebook.com/docs/messenger-platform/plugin-reference
8
+ class Optin
9
+ def initialize(payload)
10
+ @payload = payload
11
+ end
12
+
13
+ def sender
14
+ @payload['sender']
15
+ end
16
+
17
+ def recipient
18
+ @payload['recipient']
19
+ end
20
+
21
+ def sent_at
22
+ Time.at(@payload['timestamp'] / 1000)
23
+ end
24
+
25
+ def ref
26
+ @payload['optin']['ref']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  module Facebook
2
2
  module Messenger
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook-messenger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johannes Gorset
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-23 00:00:00.000000000 Z
11
+ date: 2016-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -153,6 +153,7 @@ files:
153
153
  - lib/facebook/messenger/incoming.rb
154
154
  - lib/facebook/messenger/incoming/delivery.rb
155
155
  - lib/facebook/messenger/incoming/message.rb
156
+ - lib/facebook/messenger/incoming/optin.rb
156
157
  - lib/facebook/messenger/incoming/postback.rb
157
158
  - lib/facebook/messenger/server.rb
158
159
  - lib/facebook/messenger/subscriptions.rb