vonage 7.2.1 → 7.4.1

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +46 -1
  3. data/lib/vonage/abstract_authentication.rb +1 -1
  4. data/lib/vonage/applications/list_response.rb +1 -1
  5. data/lib/vonage/applications.rb +11 -3
  6. data/lib/vonage/basic.rb +1 -1
  7. data/lib/vonage/bearer_token.rb +1 -1
  8. data/lib/vonage/config.rb +1 -1
  9. data/lib/vonage/conversations/events.rb +6 -2
  10. data/lib/vonage/conversations/legs.rb +6 -2
  11. data/lib/vonage/conversations/members.rb +6 -2
  12. data/lib/vonage/conversations/users.rb +6 -2
  13. data/lib/vonage/conversations.rb +10 -3
  14. data/lib/vonage/entity.rb +0 -2
  15. data/lib/vonage/form_data.rb +1 -1
  16. data/lib/vonage/gsm7.rb +4 -1
  17. data/lib/vonage/json.rb +1 -1
  18. data/lib/vonage/jwt.rb +1 -1
  19. data/lib/vonage/namespace.rb +121 -16
  20. data/lib/vonage/numbers/list_response.rb +1 -1
  21. data/lib/vonage/numbers/response.rb +2 -2
  22. data/lib/vonage/numbers.rb +9 -1
  23. data/lib/vonage/params.rb +1 -1
  24. data/lib/vonage/response.rb +1 -0
  25. data/lib/vonage/secrets/list_response.rb +1 -1
  26. data/lib/vonage/secrets.rb +6 -2
  27. data/lib/vonage/user_agent.rb +4 -1
  28. data/lib/vonage/verify.rb +1 -1
  29. data/lib/vonage/version.rb +1 -1
  30. data/lib/vonage/voice/actions/connect.rb +199 -0
  31. data/lib/vonage/voice/actions/conversation.rb +107 -0
  32. data/lib/vonage/voice/actions/input.rb +119 -0
  33. data/lib/vonage/voice/actions/notify.rb +57 -0
  34. data/lib/vonage/voice/actions/record.rb +130 -0
  35. data/lib/vonage/voice/actions/stream.rb +72 -0
  36. data/lib/vonage/voice/actions/talk.rb +73 -0
  37. data/lib/vonage/voice/list_response.rb +1 -1
  38. data/lib/vonage/voice/ncco.rb +42 -0
  39. data/lib/vonage/voice.rb +9 -1
  40. data/vonage.gemspec +2 -0
  41. metadata +39 -3
@@ -0,0 +1,73 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+ module Vonage
4
+ class Voice::Actions::Talk
5
+ attr_accessor :text, :bargeIn, :loop, :level, :language, :style
6
+
7
+ def initialize(attributes= {})
8
+ @text = attributes.fetch(:text)
9
+ @bargeIn = attributes.fetch(:bargeIn, nil)
10
+ @loop = attributes.fetch(:loop, nil)
11
+ @level = attributes.fetch(:level, nil)
12
+ @language = attributes.fetch(:language, nil)
13
+ @style = attributes.fetch(:style, nil)
14
+
15
+ after_initialize!
16
+ end
17
+
18
+ def after_initialize!
19
+ if self.bargeIn
20
+ verify_barge_in
21
+ end
22
+
23
+ if self.loop
24
+ verify_loop
25
+ end
26
+
27
+ if self.level
28
+ verify_level
29
+ end
30
+
31
+ if self.style
32
+ verify_style
33
+ end
34
+ end
35
+
36
+ def verify_barge_in
37
+ raise ClientError.new("Expected 'bargeIn' value to be a Boolean") unless self.bargeIn == true || self.bargeIn == false
38
+ end
39
+
40
+ def verify_loop
41
+ raise ClientError.new("Expected 'loop' value to be either 1 or 0") unless self.loop == 1 || self.loop == 0
42
+ end
43
+
44
+ def verify_level
45
+ raise ClientError.new("Expected 'level' value to be a number between -1 and 1") unless self.level.between?(-1, 1)
46
+ end
47
+
48
+ def verify_style
49
+ raise ClientError.new("Expected 'style' value to be an Integer") unless self.style.is_a?(Integer)
50
+ end
51
+
52
+ def action
53
+ create_talk!(self)
54
+ end
55
+
56
+ def create_talk!(builder)
57
+ ncco = [
58
+ {
59
+ action: 'talk',
60
+ text: builder.text
61
+ }
62
+ ]
63
+
64
+ ncco[0].merge!(bargeIn: builder.bargeIn) if (builder.bargeIn || builder.bargeIn == false)
65
+ ncco[0].merge!(loop: builder.loop) if builder.loop
66
+ ncco[0].merge!(level: builder.level) if builder.level
67
+ ncco[0].merge!(language: builder.language) if builder.language
68
+ ncco[0].merge!(style: builder.style) if builder.style
69
+
70
+ ncco
71
+ end
72
+ end
73
+ end
@@ -1,4 +1,4 @@
1
- # typed: ignore
1
+ # typed: true
2
2
 
3
3
  class Vonage::Voice::ListResponse < Vonage::Response
4
4
  include Enumerable
@@ -0,0 +1,42 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module Vonage
5
+ class Voice::Ncco
6
+ ACTIONS = {
7
+ connect: Vonage::Voice::Actions::Connect,
8
+ conversation: Vonage::Voice::Actions::Conversation,
9
+ input: Vonage::Voice::Actions::Input,
10
+ notify: Vonage::Voice::Actions::Notify,
11
+ record: Vonage::Voice::Actions::Record,
12
+ stream: Vonage::Voice::Actions::Stream,
13
+ talk: Vonage::Voice::Actions::Talk
14
+ }
15
+
16
+ ACTIONS.keys.each do |method|
17
+ self.class.send :define_method, method do |attributes|
18
+ ACTIONS[method].new(**attributes).action
19
+ end
20
+ end
21
+
22
+ def self.method_missing(method)
23
+ raise ClientError.new("NCCO action must be one of the valid options. Please refer to https://developer.nexmo.com/voice/voice-api/ncco-reference#ncco-actions for a complete list.")
24
+ end
25
+
26
+ # Create an NCCO
27
+ #
28
+ # @example
29
+ # talk = Vonage::Voice::Ncco.talk(text: 'This is sample text')
30
+ # input = Vonage::Voice::Ncco.input(type: ['dtmf'])
31
+ # ncco = Vonage::Voice::Ncco.create(talk, input)
32
+ #
33
+ # @option actions [Vonage::Voice::Ncco]
34
+ #
35
+ # @return [Array]
36
+ #
37
+ # @see https://developer.nexmo.com/voice/voice-api/ncco-reference
38
+ def self.create(*actions)
39
+ actions.flatten!
40
+ end
41
+ end
42
+ end
data/lib/vonage/voice.rb CHANGED
@@ -87,13 +87,21 @@ module Vonage
87
87
  # @option params [String] :conversation_uuid
88
88
  # Return all the records associated with a specific conversation.
89
89
  #
90
+ # @option params [Boolean] :auto_advance
91
+ # Set this to `false` to not auto-advance through all the pages in the record
92
+ # and collect all the data. The default is `true`.
93
+ #
90
94
  # @param [Hash] params
91
95
  #
92
96
  # @return [ListResponse]
93
97
  #
94
98
  # @see https://developer.nexmo.com/api/voice#getCalls
95
99
  #
96
- def list(params = nil)
100
+ def list(params = nil, auto_advance = true)
101
+ if params && !params.key?(:auto_advance)
102
+ params.merge!(auto_advance: true)
103
+ end
104
+
97
105
  request('/v1/calls', params: params, response_class: ListResponse)
98
106
  end
99
107
 
data/vonage.gemspec CHANGED
@@ -15,6 +15,8 @@ Gem::Specification.new do |s|
15
15
  s.add_dependency('nexmo-jwt', '~> 0.1.2')
16
16
  s.add_dependency('zeitwerk', '~> 2', '>= 2.2')
17
17
  s.add_dependency('sorbet-runtime', '~> 0.5')
18
+ s.add_runtime_dependency('rexml')
19
+ s.add_runtime_dependency('phonelib')
18
20
  s.require_path = 'lib'
19
21
  s.metadata = {
20
22
  'homepage' => 'https://github.com/Vonage/vonage-ruby-sdk',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vonage
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.1
4
+ version: 7.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vonage
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-14 00:00:00.000000000 Z
11
+ date: 2022-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nexmo-jwt
@@ -58,6 +58,34 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0.5'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rexml
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: phonelib
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
61
89
  description: Vonage Server SDK for Ruby
62
90
  email:
63
91
  - devrel@vonage.com
@@ -118,8 +146,16 @@ files:
118
146
  - lib/vonage/verify.rb
119
147
  - lib/vonage/version.rb
120
148
  - lib/vonage/voice.rb
149
+ - lib/vonage/voice/actions/connect.rb
150
+ - lib/vonage/voice/actions/conversation.rb
151
+ - lib/vonage/voice/actions/input.rb
152
+ - lib/vonage/voice/actions/notify.rb
153
+ - lib/vonage/voice/actions/record.rb
154
+ - lib/vonage/voice/actions/stream.rb
155
+ - lib/vonage/voice/actions/talk.rb
121
156
  - lib/vonage/voice/dtmf.rb
122
157
  - lib/vonage/voice/list_response.rb
158
+ - lib/vonage/voice/ncco.rb
123
159
  - lib/vonage/voice/stream.rb
124
160
  - lib/vonage/voice/talk.rb
125
161
  - vonage.gemspec
@@ -147,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
183
  - !ruby/object:Gem::Version
148
184
  version: '0'
149
185
  requirements: []
150
- rubygems_version: 3.0.0
186
+ rubygems_version: 3.3.6
151
187
  signing_key:
152
188
  specification_version: 4
153
189
  summary: This is the Ruby Server SDK for Vonage APIs. To use it you'll need a Vonage