bobot 3.7.2 → 3.7.3

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: 6c99e1858ab5920d04639c1ac7231851463efd12
4
- data.tar.gz: 6b11a790f7161b698050b77b2bbeb89f3e6a5c7c
3
+ metadata.gz: 5eaced1ce6579453fb0e8341b7da0f887447a513
4
+ data.tar.gz: 1e3a895d8f890a485d1c78a77e24371e710cf41c
5
5
  SHA512:
6
- metadata.gz: 427c44cb577011eab720a2fcd4672a187bffbde09041dbc4e6dfd2f9a5dbd662330a97deaed0020b13f64f07b0bd80fa731434cbfc0cc2efe75a5a98f267eeb0
7
- data.tar.gz: f01481c7cd962c33c1cf9973b2c33ff91f5af93f42406480dd81e3ed6ba7c261abcaf4c47a406045136ca3b9fb42dddd96f57d6dd5b9ca09ac4a77cf22b2eb29
6
+ metadata.gz: a6a5ecc9fc240af3114bc8817c5f9eeae07a3f7197ae31a16cf2e84cce5db53e6453939d6f99e1ad82c65c152e1ad2fd665a5ea8603c67e5b89632670f0fd986
7
+ data.tar.gz: c6b241d738a8dec4ca9b19c45834bd03ad9894004fbddf265609cd19f2ce3323c331bf35b50acefc2931f88328709290736e411b662a3a31df32c5fb8b03e774
@@ -34,7 +34,7 @@ module Bobot
34
34
  def receive(payload)
35
35
  Bobot::CommanderJob.send(
36
36
  Bobot.config.async ? :perform_later : :perform_now,
37
- { payload: payload }
37
+ { payload: payload },
38
38
  )
39
39
  end
40
40
 
@@ -49,6 +49,10 @@ module Bobot
49
49
  page.send_text(text: text, to: sender["id"])
50
50
  end
51
51
 
52
+ def reply_with_youtube_video(url:)
53
+ page.send_youtube_video(url: url, to: sender["id"])
54
+ end
55
+
52
56
  def reply_with_attachment(url:, type:)
53
57
  page.send_attachment(url: url, type: type, to: sender["id"])
54
58
  end
data/lib/bobot/page.rb CHANGED
@@ -90,6 +90,25 @@ module Bobot
90
90
  )
91
91
  end
92
92
 
93
+ def send_youtube_video(url:, to: nil)
94
+ raise Bobot::FieldFormat.new('url is required') unless url.present?
95
+ raise Bobot::FieldFormat.new('url is not valid', url) unless url =~ %r{^(?:https?:\/\/)?(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=)?([\w-]{10,})}
96
+ send(
97
+ payload_message: {
98
+ attachment: {
99
+ type: "template",
100
+ payload: {
101
+ template_type: "open_graph",
102
+ elements: [
103
+ { url: url },
104
+ ],
105
+ },
106
+ },
107
+ },
108
+ to: to,
109
+ )
110
+ end
111
+
93
112
  def send_image(url:, to: nil)
94
113
  send_attachment(url: url, type: 'image', to: to)
95
114
  end
@@ -220,9 +239,9 @@ module Bobot
220
239
  greeting_texts << { locale: 'default', text: greeting_text } if greeting_text.present?
221
240
  end
222
241
  if greeting_texts.present?
223
- greeting_texts.each do |greeting_text|
224
- if greeting_text[:text].present? && greeting_text[:text].size > 160
225
- raise Bobot::FieldFormat.new('greeting text for locale #{greeting_text[:locale]} is limited to 160.', "#{greeting_text[:text]} (#{greeting_text[:text].size} chars)")
242
+ greeting_texts.each do |row|
243
+ if row[:text].present? && row[:text].size > 160
244
+ raise Bobot::FieldFormat.new("greeting text for locale #{row[:locale]} is limited to 160.", "#{row[:text]} (#{row[:text].size} chars)")
226
245
  end
227
246
  end
228
247
  Bobot::Profile.set(
@@ -320,9 +339,9 @@ module Bobot
320
339
  end
321
340
  end
322
341
  if persistent_menus.present?
323
- persistent_menus.each do |persistent_menu|
324
- if persistent_menu[:title].present? && persistent_menu[:title].size > 30
325
- raise Bobot::FieldFormat.new('persistent menu text for locale #{persistent_menu[:locale]} is limited to 30.', "#{persistent_menu[:title]} (#{persistent_menu[:title].size} chars)")
342
+ persistent_menus.each do |row|
343
+ if row[:title].present? && row[:title].size > 30
344
+ raise Bobot::FieldFormat.new("persistent menu text for locale #{row[:locale]} is limited to 30.", "#{row[:title]} (#{row[:title].size} chars)")
326
345
  end
327
346
  end
328
347
  Bobot::Profile.set(
data/lib/bobot/version.rb CHANGED
@@ -2,7 +2,7 @@ module Bobot
2
2
  class Version
3
3
  MAJOR = 3
4
4
  MINOR = 7
5
- PATCH = 2
5
+ PATCH = 3
6
6
  PRE = nil
7
7
 
8
8
  class << self
@@ -110,6 +110,28 @@ RSpec.describe Bobot::Dummy do
110
110
  end
111
111
  end
112
112
 
113
+ describe '.reply_with_youtube_video' do
114
+ it 'replies to the sender' do
115
+ expect(subject.page).to receive(:deliver).with(
116
+ payload_template: {
117
+ message: {
118
+ attachment: {
119
+ type: 'template',
120
+ payload: {
121
+ template_type: "open_graph",
122
+ elements: [
123
+ { url: "https://www.youtube.com/watch?v=kJQP7kiw5Fk" }
124
+ ],
125
+ },
126
+ },
127
+ },
128
+ },
129
+ to: payload['recipient']['id'],
130
+ )
131
+ subject.reply_with_youtube_video(url: 'https://www.youtube.com/watch?v=kJQP7kiw5Fk')
132
+ end
133
+ end
134
+
113
135
  describe '.reply_with_image' do
114
136
  it 'replies to the sender' do
115
137
  expect(subject.page).to receive(:deliver).with(
@@ -33,3 +33,69 @@ ETHON: Libcurl initialized
33
33
  ETHON: Libcurl initialized
34
34
  ETHON: Libcurl initialized
35
35
  [ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 3128058b-c515-488d-9987-a121b91bfaab) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
36
+ ETHON: Libcurl initialized
37
+ [DELETE] >> https://graph.facebook.com/v2.11/me/messenger_profile
38
+ [DELETE] << {"result"=>"Successfully deleted Get Started button"}
39
+ [DELETE] >> https://graph.facebook.com/v2.11/me/messenger_profile
40
+ [DELETE] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
41
+ [POST] >> https://graph.facebook.com/v2.11/me/messenger_profile
42
+ [POST] << {"result"=>"Successfully added Get Started button"}
43
+ [POST] >> https://graph.facebook.com/v2.11/me/messenger_profile
44
+ [POST] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
45
+ [GET] >> https://graph.facebook.com/v2.11/5660527900
46
+ [GET] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
47
+ [GET] >> https://graph.facebook.com/v2.11/6083248100
48
+ [GET] << {"first_name"=>"Foo", "last_name"=>"Bar"}
49
+ [POST] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
50
+ [POST] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
51
+ [POST] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
52
+ [POST] << {"success"=>true}
53
+ [DELETE] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
54
+ [DELETE] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
55
+ [DELETE] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
56
+ [DELETE] << {"success"=>true}
57
+ [ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 6331ca30-bd85-4ed5-8c5b-34d754cbe52d) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
58
+ ETHON: Libcurl initialized
59
+ [GET] >> https://graph.facebook.com/v2.11/4127242400
60
+ [GET] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
61
+ [GET] >> https://graph.facebook.com/v2.11/9467813000
62
+ [GET] << {"first_name"=>"Foo", "last_name"=>"Bar"}
63
+ [ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 84904cdf-4e70-49f1-b453-0575f8045b8b) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
64
+ [POST] >> https://graph.facebook.com/v2.11/me/messenger_profile
65
+ [POST] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
66
+ [POST] >> https://graph.facebook.com/v2.11/me/messenger_profile
67
+ [POST] << {"result"=>"Successfully added Get Started button"}
68
+ [DELETE] >> https://graph.facebook.com/v2.11/me/messenger_profile
69
+ [DELETE] << {"result"=>"Successfully deleted Get Started button"}
70
+ [DELETE] >> https://graph.facebook.com/v2.11/me/messenger_profile
71
+ [DELETE] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
72
+ [DELETE] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
73
+ [DELETE] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
74
+ [DELETE] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
75
+ [DELETE] << {"success"=>true}
76
+ [POST] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
77
+ [POST] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
78
+ [POST] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
79
+ [POST] << {"success"=>true}
80
+ [ActiveJob] Enqueued Bobot::CommanderJob (Job ID: 0f2b73f2-ad6f-4987-8124-551b6e754a45) to Test(default) with arguments: {"sender"=>{"id"=>"2"}, "recipient"=>{"id"=>"3"}, "timestamp"=>1457764197627, "message"=>{"mid"=>"mid.1457764197618:41d102a3e1ae206a38", "seq"=>73, "text"=>"Hello, bot!"}}
81
+ ETHON: Libcurl initialized
82
+ [DELETE] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
83
+ [DELETE] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
84
+ [DELETE] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
85
+ [DELETE] << {"success"=>true}
86
+ [POST] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
87
+ [POST] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
88
+ [POST] >> https://graph.facebook.com/v2.11/page-id/subscribed_apps
89
+ [POST] << {"success"=>true}
90
+ [DELETE] >> https://graph.facebook.com/v2.11/me/messenger_profile
91
+ [DELETE] << {"result"=>"Successfully deleted Get Started button"}
92
+ [DELETE] >> https://graph.facebook.com/v2.11/me/messenger_profile
93
+ [DELETE] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
94
+ [POST] >> https://graph.facebook.com/v2.11/me/messenger_profile
95
+ [POST] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
96
+ [POST] >> https://graph.facebook.com/v2.11/me/messenger_profile
97
+ [POST] << {"result"=>"Successfully added Get Started button"}
98
+ [GET] >> https://graph.facebook.com/v2.11/9389461400
99
+ [GET] << {"first_name"=>"Foo", "last_name"=>"Bar"}
100
+ [GET] >> https://graph.facebook.com/v2.11/7482355400
101
+ [GET] << {"error"=>{"message"=>"Invalid OAuth access token.", "type"=>"OAuthException", "code"=>190, "fbtrace_id"=>"Hlssg2aiVlN"}}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bobot
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.2
4
+ version: 3.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Navid EMAD
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-22 00:00:00.000000000 Z
11
+ date: 2018-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n