plivo 4.56.0 → 4.57.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: f30ff0d80407fc770beb03a8889bf6dacafc8742
4
- data.tar.gz: 930c4826d997a597f909dc4eb83aac4d43e6729e
3
+ metadata.gz: a90c7167882dbe60104e0ff29cf88e4b4df1d762
4
+ data.tar.gz: e52148f05ce9e96049b63ea1453f9c050932c303
5
5
  SHA512:
6
- metadata.gz: 8293924cb842fb82415f1b3c4e1116a99340d9467d8827caa95906b4b249f2d82855d03379c8d80edff4cfb9ebcb4558933e7e9ae7f87ba85afb90e6f5b9eef7
7
- data.tar.gz: 57337155f190fd2d39abd96e0f6bb8304d3428ccbef7dafa61f3e0cde573ce3d24184a44db61da8bc92a4b29cbf125066dc2acb35a1dbee581d2e35b148381cf
6
+ metadata.gz: 418f3f2d85ea8482e99314de098c8719dae66581a5f9ea9d470ecb7f3820b3829a0348ea704810928d73a513b3704fcce6b3c2058eab247c63fd7bcb6b2916cb
7
+ data.tar.gz: 7f69bf8b16f6d7408d0767b58f8b041fe89eb66c2360b8a0fbafd2cb3b6c517118875b19204f3c7259210e98dce611113814771d78f6ed5d82451597e2177e2c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## [4.57.0](https://github.com/plivo/plivo-ruby/tree/v4.57.0) (2023-05-07)
4
+ **Feature - Adding support for interactive whatsapp messages**
5
+ - Added new param `interactive` to [send message API](https://www.plivo.com/docs/sms/api/message#send-a-message) to support interactive `whatsapp` messages
6
+
3
7
  ## [4.56.0](https://github.com/plivo/plivo-ruby/tree/v4.56.0) (2023-04-18)
4
8
  **Feature - Support for dynamic button components when sending a templated WhatsApp message**
5
9
  - Added new param `payload` in templates to support dynamic payload in templates
data/README.md CHANGED
@@ -9,7 +9,7 @@ The Plivo Ruby SDK makes it simpler to integrate communications into your Ruby a
9
9
  Add this line to your application's Gemfile:
10
10
 
11
11
  ```ruby
12
- gem 'plivo', '>= 4.56.0'
12
+ gem 'plivo', '>= 4.57.0'
13
13
  ```
14
14
 
15
15
  And then execute:
@@ -0,0 +1,139 @@
1
+ require_relative "template"
2
+
3
+ module Plivo
4
+ class Interactive
5
+ attr_accessor :type, :header, :body, :footer, :action
6
+
7
+ def initialize(type: nil, header: nil, body: nil, footer: nil, action: nil)
8
+ @type = type
9
+ @header = header
10
+ @body = body
11
+ @footer = footer
12
+ @action = action
13
+ end
14
+
15
+ def to_hash
16
+ {
17
+ type: @type,
18
+ header: @header&.to_hash,
19
+ body: @body&.to_hash,
20
+ footer: @footer&.to_hash,
21
+ action: @action&.to_hash
22
+ }.reject { |_, v| v.nil? }
23
+ end
24
+ end
25
+
26
+ class Header
27
+ attr_accessor :type, :text, :media
28
+
29
+ def initialize(type: nil, text: nil, media: nil)
30
+ @type = type
31
+ @text = text
32
+ @media = media
33
+ end
34
+
35
+ def to_hash
36
+ {
37
+ type: @type,
38
+ text: @text,
39
+ media: @media
40
+ }.reject { |_, v| v.nil? }
41
+ end
42
+ end
43
+
44
+ class Body
45
+ attr_accessor :text
46
+
47
+ def initialize(text: nil)
48
+ @text = text
49
+ end
50
+
51
+ def to_hash
52
+ {
53
+ text: @text
54
+ }.reject { |_, v| v.nil? }
55
+ end
56
+ end
57
+
58
+ class Footer
59
+ attr_accessor :text
60
+
61
+ def initialize(text: nil)
62
+ @text = text
63
+ end
64
+
65
+ def to_hash
66
+ {
67
+ text: @text
68
+ }.reject { |_, v| v.nil? }
69
+ end
70
+ end
71
+
72
+ class Action
73
+ attr_accessor :buttons, :sections
74
+
75
+ def initialize(buttons: nil, sections: nil)
76
+ @buttons = buttons ? buttons.map { |b| Buttons.new(**b) } : []
77
+ @sections = sections ? sections.map { |s| Section.new(**s) } : []
78
+ end
79
+
80
+ def to_hash
81
+ {
82
+ buttons: @buttons.map(&:to_hash),
83
+ sections: @sections.map(&:to_hash),
84
+ }.reject { |_, v| v.nil? }
85
+ end
86
+ end
87
+
88
+ class Buttons
89
+ attr_accessor :id, :title, :cta_url
90
+
91
+ def initialize(id: nil, title: nil, cta_url: nil)
92
+ @id = id
93
+ @title = title
94
+ @cta_url = cta_url
95
+ end
96
+
97
+ def to_hash
98
+ {
99
+ id: @id,
100
+ title: @title,
101
+ cta_url: @cta_url
102
+ }.reject { |_, v| v.nil? }
103
+ end
104
+ end
105
+
106
+ class Section
107
+ attr_accessor :title, :rows
108
+
109
+ def initialize(title: nil, rows: nil)
110
+ @title = title
111
+ @rows = rows ? rows.map { |r| Row.new(**r) } : []
112
+ end
113
+
114
+ def to_hash
115
+ {
116
+ title: @title,
117
+ rows: @rows.map(&:to_hash),
118
+ }.reject { |_, v| v.nil? }
119
+ end
120
+ end
121
+
122
+ class Row
123
+ attr_accessor :id, :title, :description
124
+
125
+ def initialize(id: nil, title: nil, description: nil)
126
+ @id = id
127
+ @title = title
128
+ @description = description
129
+ end
130
+
131
+ def to_hash
132
+ {
133
+ id: @id,
134
+ title: @title,
135
+ description: @description
136
+ }.reject { |_, v| v.nil? }
137
+ end
138
+ end
139
+ end
@@ -92,6 +92,7 @@ module Plivo
92
92
  # @option options [String] :dlt_template_id This is the DLT template id passed in the message request.
93
93
  # @option options [String] :dlt_template_category This is the DLT template category passed in the message request.
94
94
  # @option options [Hash] :template This is the template used in the whatsapp message request. It can handle both JSON and String.
95
+ # @option options [Hash] :interactive This is the interactive parameter used in the whatsapp message request. It can handle both JSON and String.
95
96
 
96
97
  def create(src = nil, dst = nil, text = nil, options = nil, powerpack_uuid = nil)
97
98
  #All params in One HASH
@@ -227,6 +228,29 @@ module Plivo
227
228
  end
228
229
  end
229
230
 
231
+ if value.key?(:template) && value.key?(:type) && (value[:type] != "whatsapp")
232
+ raise InvalidRequestError, 'template parameter is only applicable when type is whatsapp'
233
+ end
234
+
235
+ if value.is_a?(Hash) && !value[:interactive].nil?
236
+ if value.key?(:interactive)
237
+ if value[:interactive].is_a?(String)
238
+ begin
239
+ json_interactive = JSON.parse(value[:interactive])
240
+ params[:interactive] = json_interactive
241
+ rescue JSON::ParserError => e
242
+ raise InvalidRequestError, 'failed to parse interactive as JSON'
243
+ end
244
+ elsif value[:interactive].is_a?(Hash)
245
+ params[:interactive] = value[:interactive]
246
+ elsif value[:interactive].is_a?(Plivo::Interactive)
247
+ params[:interactive] = value[:interactive].to_hash
248
+ else
249
+ raise InvalidRequestError, 'invalid interactive format'
250
+ end
251
+ end
252
+ end
253
+
230
254
  #legacy code compatibility
231
255
  else
232
256
  valid_param?(:src, src, [Integer, String, Symbol], false)
@@ -372,6 +396,25 @@ module Plivo
372
396
  end
373
397
  end
374
398
 
399
+ if options.is_a?(Hash) && !options[:interactive].nil?
400
+ if options.key?(:interactive)
401
+ if options[:interactive].is_a?(String)
402
+ begin
403
+ json_interactive = JSON.parse(options[:interactive])
404
+ params[:interactive] = json_interactive
405
+ rescue JSON::ParserError => e
406
+ raise InvalidRequestError, 'failed to parse interactive as JSON'
407
+ end
408
+ elsif options[:interactive].is_a?(Hash)
409
+ params[:interactive] = options[:interactive]
410
+ elsif options[:interactive].is_a?(Plivo::Interactive)
411
+ params[:interactive] = options[:interactive].to_hash
412
+ else
413
+ raise InvalidRequestError, 'invalid interactive format'
414
+ end
415
+ end
416
+ end
417
+
375
418
  end
376
419
  perform_create(params)
377
420
  end
data/lib/plivo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Plivo
2
- VERSION = "4.56.0".freeze
2
+ VERSION = "4.57.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plivo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.56.0
4
+ version: 4.57.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Plivo SDKs Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-18 00:00:00.000000000 Z
11
+ date: 2024-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -166,6 +166,7 @@ files:
166
166
  - lib/plivo/base/response.rb
167
167
  - lib/plivo/base_client.rb
168
168
  - lib/plivo/exceptions.rb
169
+ - lib/plivo/interactive.rb
169
170
  - lib/plivo/jwt.rb
170
171
  - lib/plivo/phlo_client.rb
171
172
  - lib/plivo/resources.rb