Class: Voice::Actions::Talk

Inherits:
Object
  • Object
show all
Defined in:
lib/vonage/voice/actions/talk.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Talk

Returns a new instance of Talk.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/vonage/voice/actions/talk.rb', line 7

def initialize(attributes= {})
  @text = attributes.fetch(:text)
  @bargeIn = attributes.fetch(:bargeIn, nil)
  @loop = attributes.fetch(:loop, nil)
  @level = attributes.fetch(:level, nil)
  @language = attributes.fetch(:language, nil)
  @style = attributes.fetch(:style, nil)
  @premium = attributes.fetch(:premium, nil)
  @eventOnCompletion = attributes.fetch(:eventOnCompletion, nil)
  @eventUrl = attributes.fetch(:eventUrl, nil)
  @eventMethod = attributes.fetch(:eventMethod, nil)

  after_initialize!
end

Instance Attribute Details

#bargeInObject

Returns the value of attribute bargeIn.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def bargeIn
  @bargeIn
end

#eventMethodObject

Returns the value of attribute eventMethod.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def eventMethod
  @eventMethod
end

#eventOnCompletionObject

Returns the value of attribute eventOnCompletion.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def eventOnCompletion
  @eventOnCompletion
end

#eventUrlObject

Returns the value of attribute eventUrl.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def eventUrl
  @eventUrl
end

#languageObject

Returns the value of attribute language.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def language
  @language
end

#levelObject

Returns the value of attribute level.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def level
  @level
end

#loopObject

Returns the value of attribute loop.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def loop
  @loop
end

#premiumObject

Returns the value of attribute premium.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def premium
  @premium
end

#styleObject

Returns the value of attribute style.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def style
  @style
end

#textObject

Returns the value of attribute text.



5
6
7
# File 'lib/vonage/voice/actions/talk.rb', line 5

def text
  @text
end

Instance Method Details

#actionObject



98
99
100
# File 'lib/vonage/voice/actions/talk.rb', line 98

def action
  create_talk!(self)
end

#after_initialize!Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/vonage/voice/actions/talk.rb', line 22

def after_initialize!
  if self.bargeIn || self.bargeIn == false
    verify_barge_in
  end

  if self.loop
    verify_loop
  end

  if self.level
    verify_level
  end

  if self.style
    verify_style
  end

  if self.premium || self.premium == false
    verify_premium
  end

  if self.eventOnCompletion || self.eventOnCompletion == false
    verify_event_on_completion
  end

  if self.eventUrl
    verify_event_url
  end

  if self.eventMethod
    verify_event_method
  end
end

#create_talk!(builder) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/vonage/voice/actions/talk.rb', line 102

def create_talk!(builder)
  ncco = [
    {
      action: 'talk',
      text: builder.text
    }
  ]

  ncco[0].merge!(bargeIn: builder.bargeIn) if (builder.bargeIn || builder.bargeIn == false)
  ncco[0].merge!(loop: builder.loop) if builder.loop
  ncco[0].merge!(level: builder.level) if builder.level
  ncco[0].merge!(language: builder.language) if builder.language
  ncco[0].merge!(style: builder.style) if builder.style
  ncco[0].merge!(premium: builder.premium) if (builder.bargeIn || builder.bargeIn == false)
  ncco[0].merge!(eventOnCompletion: builder.eventOnCompletion) if (builder.eventOnCompletion || builder.eventOnCompletion == false)
  ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
  ncco[0].merge!(eventMethod: builder.eventMethod) if builder.eventMethod

  ncco
end

#verify_barge_inObject

Raises:



56
57
58
# File 'lib/vonage/voice/actions/talk.rb', line 56

def verify_barge_in
  raise ClientError.new("Expected 'bargeIn' value to be a Boolean") unless self.bargeIn == true || self.bargeIn == false
end

#verify_event_methodObject

Raises:



92
93
94
95
96
# File 'lib/vonage/voice/actions/talk.rb', line 92

def verify_event_method
  valid_methods = ['GET', 'POST']

  raise ClientError.new("Invalid 'eventMethod' value. must be either: 'GET' or 'POST'") unless valid_methods.include?(self.eventMethod.upcase)
end

#verify_event_on_completionObject

Raises:



76
77
78
# File 'lib/vonage/voice/actions/talk.rb', line 76

def verify_event_on_completion
  raise ClientError.new("Expected 'eventOnCompletion' value to be a Boolean") unless self.eventOnCompletion == true || self.eventOnCompletion == false
end

#verify_event_urlObject

Raises:



80
81
82
83
84
85
86
87
88
89
90
# File 'lib/vonage/voice/actions/talk.rb', line 80

def verify_event_url
  unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
    raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
  end

  uri = URI.parse(self.eventUrl[0])

  raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)

  self.eventUrl
end

#verify_levelObject

Raises:



64
65
66
# File 'lib/vonage/voice/actions/talk.rb', line 64

def verify_level
  raise ClientError.new("Expected 'level' value to be a number between -1 and 1") unless self.level.between?(-1, 1)
end

#verify_loopObject

Raises:



60
61
62
# File 'lib/vonage/voice/actions/talk.rb', line 60

def verify_loop
  raise ClientError.new("Expected 'loop' value to be either 0 or a positive integer") unless self.loop >= 0
end

#verify_premiumObject

Raises:



72
73
74
# File 'lib/vonage/voice/actions/talk.rb', line 72

def verify_premium
  raise ClientError.new("Expected 'premium' value to be a Boolean") unless self.premium == true || self.premium == false
end

#verify_styleObject

Raises:



68
69
70
# File 'lib/vonage/voice/actions/talk.rb', line 68

def verify_style
  raise ClientError.new("Expected 'style' value to be an Integer") unless self.style.is_a?(Integer)
end