tropo-webapi-ruby 0.1.11 → 0.1.13

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9b4ec4c8d2ed601fb2adb371218c73800ece5218
4
+ data.tar.gz: a1731101b04b7e32c84ac237e7a617c2f58cbb98
5
+ SHA512:
6
+ metadata.gz: 1f2290d05796f3f6091796b2143fdff8bf8aaf737db340d089a4077659761f8f8f90461f0a60ac0d528cba609bb6b65cfb7068b3c38211608a80f4209e571b21
7
+ data.tar.gz: 0508b0d936a4e7b263f557f7a7886acb01c8f17421fdb0ea8dab502017e75b47cc63a4b946d54e70b2edc5795bba2211b8d3718423ca3149365a1401c3373447
@@ -1,20 +1,21 @@
1
- = Tropo Web API Ruby Library
1
+ # Tropo Web API Ruby Library
2
+ [![Build Status](https://drone.io/github.com/tropo/tropo-webapi-ruby/status.png)](https://drone.io/github.com/tropo/tropo-webapi-ruby/latest)
2
3
 
3
4
  A Ruby library for interaction with the Tropo Web API (http://tropo.com) using JSON.
4
5
 
5
- == Tropo Web API Overview
6
+ ## Tropo Web API Overview
6
7
 
7
8
  The Tropo Remote API provides a RESTful JSON API for controlling realtime communications applications from
8
9
  your own web servers.
9
10
 
10
- == Requirements
11
+ ## Requirements
11
12
 
12
- * Unit tests passed on: Ruby MRI v1.8.6/1.8.7 and JRuby v1.5.0
13
- * RubyGems
13
+ * Unit tests passed on: Ruby MRI v1.8.6/1.8.7/1.9.3/2.1.0 and JRuby v1.5.0/v1.7.9
14
+ * RubyGems
14
15
 
15
16
  Note: If using with ActiveSupport, v2.3.5 or better of ActiveSupport is required.
16
17
 
17
- == Installation
18
+ ## Installation
18
19
 
19
20
  $ sudo gem install tropo-webapi-ruby
20
21
 
@@ -22,13 +23,13 @@ Optional, if you would like to use with Sinatra:
22
23
 
23
24
  $ sudo gem install sinatra
24
25
 
25
- == Generate Documentation
26
+ ## Generate Documentation
26
27
 
27
- === Developer
28
+ ### Developer
28
29
 
29
30
  $ gemserver
30
31
 
31
- === Project Developer
32
+ ### Project Developer
32
33
 
33
34
  $ sudo gem install yard
34
35
 
@@ -36,8 +37,8 @@ From within the project:
36
37
 
37
38
  $ yardoc
38
39
 
39
- == Usage
40
-
40
+ ## Usage
41
+ ```ruby
41
42
  require 'rubygems'
42
43
  require 'tropo-webapi-ruby'
43
44
 
@@ -52,15 +53,15 @@ From within the project:
52
53
  response = tropo.parse(json_string)
53
54
  p 'Hey, this is a voice session!' if tropo.voice_session
54
55
  p 'Hey, this is a text messaging session!' if tropo.text_session
56
+ ```
57
+ ## Examples
55
58
 
56
- == Examples
57
-
58
- === Sinatra
59
+ ### Sinatra
59
60
 
60
61
  Using the great RESTful Web Services framework Sinatra for Ruby.
61
62
 
62
- ==== Hello World
63
-
63
+ #### Hello World
64
+ ```ruby
64
65
  require 'rubygems'
65
66
  require 'sinatra'
66
67
  require 'tropo-webapi-ruby'
@@ -82,9 +83,9 @@ Using the great RESTful Web Services framework Sinatra for Ruby.
82
83
  tropo.say 'Hello again.'
83
84
  tropo.response
84
85
  end
85
-
86
- ==== Getting Session Information
87
-
86
+ ```
87
+ #### Getting Session Information
88
+ ```ruby
88
89
  # Produces a Ruby hash:
89
90
  #
90
91
  # { :session =>
@@ -117,9 +118,9 @@ Using the great RESTful Web Services framework Sinatra for Ruby.
117
118
  tropo_session = Tropo::Generator.parse request.env["rack.input"].read
118
119
  p tropo_session
119
120
  end
120
-
121
- ==== Asking for input and receiving the response, or catching a hangup
122
-
121
+ ```
122
+ #### Asking for input and receiving the response, or catching a hangup
123
+ ```ruby
123
124
  post '/ask.json' do
124
125
  tropo = Tropo::Generator.new do
125
126
  on :event => 'hangup', :next => '/hangup.json'
@@ -170,23 +171,23 @@ Using the great RESTful Web Services framework Sinatra for Ruby.
170
171
  tropo_event = Tropo::Generator.parse request.env["rack.input"].read
171
172
  p tropo_event
172
173
  end
173
-
174
- ==== Redirect a call before answering
175
-
174
+ ```
175
+ #### Redirect a call before answering
176
+ ```ruby
176
177
  # A redirect method
177
178
  post '/redirect.json' do
178
179
  Tropo::Generator.redirect({ :to => 'sip:1234', :from => '4155551212' })
179
180
  end
180
-
181
- ==== Reject a call before answering
182
-
181
+ ```
182
+ #### Reject a call before answering
183
+ ```ruby
183
184
  # A reject method
184
185
  post '/reject.json' do
185
186
  Tropo::Generator.reject
186
187
  end
187
-
188
- ==== Setting a default voice for speech synthesis (text-to-speech/TTS)
189
-
188
+ ```
189
+ #### Setting a default voice for speech synthesis (text-to-speech/TTS)
190
+ ```ruby
190
191
  post '/speak.json' do
191
192
  t = Tropo::Generator.new(:voice => 'kate')
192
193
  t.say 'Hello!' # Will speak as kate now
@@ -197,9 +198,9 @@ Using the great RESTful Web Services framework Sinatra for Ruby.
197
198
  t.voice = 'kate'
198
199
  t.say 'Hello!' # Will speak as kate now
199
200
  end
200
-
201
- ==== Setting a default recognizer for speech recognition (ASR)
202
-
201
+ ```
202
+ #### Setting a default recognizer for speech recognition (ASR)
203
+ ```ruby
203
204
  post '/ask.json' do
204
205
  t = Tropo::Generator.new(:recognizer => 'fr-fr')
205
206
  t.ask({ :name => 'account_number', # Will now use the French speech recognition engine
@@ -222,12 +223,12 @@ Using the great RESTful Web Services framework Sinatra for Ruby.
222
223
  choices :value => '[5 DIGITS]'
223
224
  end
224
225
  end
225
-
226
- === Additional Examples
226
+ ```
227
+ ### Additional Examples
227
228
 
228
229
  May be found by checking out the project from Github, and then looking in $PROJECT_HOME/examples and $PROJECT_HOME/spec/tropo-webapi-ruby_spec.rb.
229
230
 
230
- === Documentation
231
+ ### Documentation
231
232
 
232
233
  * API Documentation:
233
234
 
@@ -237,12 +238,12 @@ http://voxeo.github.com/tropo-webapi-ruby
237
238
 
238
239
  http://docs.tropo.com/webapi/2.0/home.htm
239
240
 
240
- == Notes
241
+ ## Notes
241
242
 
242
243
  In order to maintain compatibility between Ruby MRI and JRuby the gem requires 'json_pure'. If you are using the Ruby MRI and would prefer to use the C version of 'json', simply install the 'json' gem as follows:
243
244
 
244
245
  sudo gem install json
245
246
 
246
- == Copyright
247
+ ## Copyright
247
248
 
248
- Copyright (c) 2010 Voxeo, Corporation. See LICENSE for details.
249
+ Copyright (c) 2014 Tropo, Inc. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.11
1
+ 0.1.13
@@ -0,0 +1,27 @@
1
+ require 'tropo-webapi-ruby'
2
+ require 'sinatra'
3
+
4
+ post '/index.json' do
5
+
6
+ v = Tropo::Generator.parse request.env["rack.input"].read
7
+ t = Tropo::Generator.new
8
+
9
+ callerID = v[:session][:from][:id]
10
+
11
+ t.say({:value => "You are about to enter the conference room"})
12
+
13
+ t.conference({
14
+ :name => "joinLeave",
15
+ :id => "1234",
16
+ :joinPrompt => {
17
+ :value => "Please welcome #{callerID} to the party"
18
+ },
19
+ :leavePrompt => {
20
+ :value => "#{callerID} has left the party"
21
+ }
22
+ })
23
+
24
+ t.response
25
+
26
+ end
27
+
@@ -0,0 +1,31 @@
1
+ require 'tropo-webapi-ruby'
2
+ require 'sinatra'
3
+
4
+ post '/index.json' do
5
+
6
+ t = Tropo::Generator.new
7
+
8
+ t.call :to => "+14071234321",
9
+ :machineDetection => {
10
+ :introduction => "This is just a test to see if you are a human or a machine. PLease hold while we determine. Almost finished. Thank you!",
11
+ :voice => "Victor"
12
+ }
13
+
14
+ t.on :event => 'continue', :next => '/continue.json'
15
+ t.response
16
+
17
+ end
18
+
19
+
20
+ post '/continue.json' do
21
+
22
+ v = Tropo::Generator.parse request.env["rack.input"].read
23
+ t = Tropo::Generator.new
24
+ puts v
25
+ userType = v[:result][:user_type]
26
+ puts userType
27
+ t.say(:value => "You are a #{userType}")
28
+
29
+ t.response
30
+
31
+ end
@@ -0,0 +1,38 @@
1
+ require 'tropo-webapi-ruby'
2
+ require 'sinatra'
3
+
4
+ post '/index.json' do
5
+
6
+ t = Tropo::Generator.new
7
+
8
+ t.say("Please hold while we transfer your call")
9
+
10
+ whisper = [{
11
+ :event => "connect",
12
+ :ask => {
13
+ :say => {:value => "Press 1 to accept this call or any other key to decline"},
14
+ :choices => {:value => "1", :mode => "dtmf"},
15
+ :name => "transfer",
16
+ :interdigitTimeout => 1
17
+ },
18
+ :event => "connect",
19
+ :say => {:value => "You are now being connected to the transfer"}
20
+ }]
21
+ puts whisper
22
+
23
+ t.transfer :to => "+14071234321",
24
+ :on => whisper
25
+
26
+ t.on :event => 'incomplete', :next => '/hangup.json', :say => {:value =>'You have opted out from accepting this call. Goodbye'}
27
+
28
+ t.response
29
+
30
+ end
31
+
32
+ post '/hangup.json' do
33
+ t = Tropo::Generator.new
34
+
35
+ t.hangup
36
+ t.response
37
+
38
+ end
@@ -39,6 +39,8 @@ module Tropo
39
39
  return build_elements(params)
40
40
  when 'transfer'
41
41
  has_params?(params, 'transfer', 'to')
42
+ when 'wait'
43
+ has_params?(params, 'wait', 'milliseconds')
42
44
  end
43
45
 
44
46
  if action == 'on'
@@ -53,21 +53,33 @@ module Tropo
53
53
  #
54
54
  # @overload ask(params)
55
55
  # @param [Hash] params the options to create an ask action request with.
56
- # @option params [String] :name the name to assign to the result when returned to the application, default is true
56
+ # @option params [required, String] :choices indicates the structure of the expected data and acceptable modes of input - value, mode, terminator
57
+ # @option params [optional, String] :say determines what is played or sent to the caller - also takes an event key to determine if prompt will be played based on a nomatch or timeout
58
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to ask which can be used with REST to interrupt the function
59
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
57
60
  # @option params [optional, Integer] :attempts (1) the number of times to prompt the user for input
58
- # @option params [optional, Boolean] :bargein (true) allows a user to enter a key to stop the ask action
59
- # @option params [optional, Float] :min_confidence (.5) the minimum confidence by which to accept the response expressed from 0-1, as opposed to asking again
60
- # @option params [optional, Boolean] :required (true) if this is a field that must be completed by the user
61
+ # @option params [optional, Boolean] :bargein (true) allows a user to say or enter a key to stop the prompt from playing further
62
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
63
+ # @option params [optional, Integer] :min_confidence (30) the minimum confidence by which to accept the response, as opposed to asking again
64
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
61
65
  # @option params [optional, Integer] :timeout (30) the amount of time, in seconds, to wait for a response before moving on
66
+ # @option params [optional, String] :recognizer this tells Tropo what language to listen for
67
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
62
68
  # @overload ask(params, &block)
63
69
  # @param [Hash] params the options to create an ask action request with.
64
70
  # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
65
- # @option params [String] :name the name to assign to the result when returned to the application
71
+ # @option params [required, String] :choices indicates the structure of the expected data and acceptable modes of input - value, mode, terminator
72
+ # @option params [optional, String] :say determines what is played or sent to the caller - also takes an event key to determine if prompt will be played based on a nomatch or timeout
73
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to ask which can be used with REST to interrupt the function
74
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
66
75
  # @option params [optional, Integer] :attempts (1) the number of times to prompt the user for input
67
- # @option params [optional, Boolean] :bargein (true) allows a user to enter a key to stop the ask action
68
- # @option params [optional, Float] :min_confidence (.5) the minimum confidence by which to accept the response expressed from 0-1, as opposed to asking again
69
- # @option params [optional, Boolean] :required (true) if this is a field that must be completed by the user
76
+ # @option params [optional, Boolean] :bargein (true) allows a user to say or enter a key to stop the prompt from playing further
77
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
78
+ # @option params [optional, Integer] :min_confidence (30) the minimum confidence by which to accept the response, as opposed to asking again
79
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
70
80
  # @option params [optional, Integer] :timeout (30) the amount of time, in seconds, to wait for a response before moving on
81
+ # @option params [optional, String] :recognizer this tells Tropo what language to listen for
82
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
71
83
  # @return [String, nil] the JSON string to be passed back to Tropo or nil
72
84
  # if the method has been called from inside a block
73
85
  def ask(params={}, &block)
@@ -89,25 +101,31 @@ module Tropo
89
101
  #
90
102
  # @overload call(params)
91
103
  # @param [Hash] params the options to create a call action request with.
104
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
92
105
  # @option params [String] :to the destination of the call, may be a phone number, SMS number or IM address
93
106
  # @option params [optional, String] :from the phone number or IM address the call will come from
94
107
  # @option params [optional, String] :network which network the call will be initiated with, such as SMS
95
108
  # @option params [optional, String] :channel the channel the call will be initiated over, may be TEXT or VOICE
96
109
  # @option params [optional, Integer] :timeout (30) the amount of time, in seconds, to wait for a response before moving on
97
- # @option params [optional, Boolean] :answer_on_media (true)
110
+ # @option params [optional, Boolean] :answer_on_media (false) if true, the call will be concisdered answered and audio will being playing as soon as media is received (ringing, busy, etc)
98
111
  # @options params [optional, Hash] :headers A set of key/values to apply as customer SIP headers to the outgoing call
99
- # @options params [optional, Hash] :recording Refer to the recording method for paramaters in the hash
100
- # @overload ask(params, &block)
112
+ # @options params [optional, Hash] :recording allow you to start call recording as soon as the call is answered; refer to the recording method for paramaters in the hash
113
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
114
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to call which can be used with REST to interrupt the function
115
+ # @overload call(params, &block)
101
116
  # @param [Hash] params the options to create an message action request with.
102
117
  # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
118
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
103
119
  # @option params [String] :to the destination of the call, may be a phone number, SMS number or IM address
104
120
  # @option params [optional, String] :from the phone number or IM address the call will come from
105
121
  # @option params [optional, String] :network which network the call will be initiated with, such as SMS
106
- # @option params [optional, String] :channel the channel the call will be initiated over, may be TEXT or VOICE
122
+ # @option params [optional, String] :channel (voice) the channel the call will be initiated over, may be TEXT or VOICE
107
123
  # @option params [optional, Integer] :timeout (30) the amount of time, in seconds, to wait for a response before moving on
108
- # @option params [optional, Boolean] :answer_on_media (true)
124
+ # @option params [optional, Boolean] :answer_on_media (false) if true, the call will be concisdered answered and audio will being playing as soon as media is received (ringing, busy, etc)
109
125
  # @options params [optional, Hash] :headers A set of key/values to apply as customer SIP headers to the outgoing call
110
- # @options params [optional, Hash] :recording Refer to the recording method for paramaters in the hash
126
+ # @options params [optional, Hash] :recording allow you to start call recording as soon as the call is answered; refer to the recording method for paramaters in the hash
127
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
128
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to call which can be used with REST to interrupt the function
111
129
  # @return [String, nil] the JSON string to be passed back to Tropo or nil
112
130
  # if the method has been called from inside a block
113
131
  def call(params={}, &block)
@@ -126,10 +144,9 @@ module Tropo
126
144
  # Choices to give the user on input
127
145
  #
128
146
  # @param [Hash] params the options used to construct the grammar for the user
129
- # @option params [String] :value the name to assign to the result when returned to the app
147
+ # @option params [String] :value this is the grammar which determines the type of expected data, such as [DIGITS]
130
148
  # @option params [optional, String] :mode (ANY) the mode to use when asking the user [DTMF, SPEECH or ANY]
131
- # @option params [optional, String] :term_char the user may enter a keypad entry to stop the request
132
- # @option params [optional, String] :type (simple/grammar) the type of grammar to use
149
+ # @option params [optional, String] :terminator (#) the user may enter a keypad entry to stop the request
133
150
  # @option [String, nil] the JSON string to be passed back to Tropo or nil
134
151
  # if the method has been called from inside a block
135
152
  def choices(params={})
@@ -148,21 +165,25 @@ module Tropo
148
165
  #
149
166
  # @overload conference(params)
150
167
  # @param [Hash] params the options to create a message with.
151
- # @option params [String] :name the name to assign to the conference room and to identify events back to the application
152
- # @option params [Integer] :id the number to assign to the conference room
168
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
169
+ # @option params [required, Integer] :id the number to assign to the conference room
170
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
153
171
  # @option params [optional, Boolean] :mute (false) whether to mute this caller in the conference
154
- # @option params [optional, Integer] :max_time the maximum time, in seconds, to allow this user to stay in conference
155
- # @option params [optional, Integer] :send_tones whether to send the DTMF a user may enter to the audio of the conference
156
- # @option params [optional, String] :exit_tone whether to play a beep when this user exits a conference
172
+ # @option params [optional, Integer] :play_tones whether to allow the DTMF input from a user to play into the conference
173
+ # @option params [optional, String] :terminator this is the touch-tone key (DTMF) used to exit the conference
174
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
175
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to conference which can be used with REST to interrupt the function
157
176
  # @overload conference(params, &block)
158
177
  # @param [Hash] params the options to create a message with.
159
178
  # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
160
- # @option params [String] :name the name to assign to the conference room and to identify events back to the application
179
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
161
180
  # @option params [Integer] :id the number to assign to the conference room
181
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
162
182
  # @option params [optional, Boolean] :mute (false) whether to mute this caller in the conference
163
- # @option params [optional, Integer] :max_time the maximum time, in seconds, to allow this user to stay in conference
164
- # @option params [optional, Integer] :send_tones whether to send the DTMF a user may enter to the audio of the conference
165
- # @option params [optional, String] :exit_tone whether to play a beep when this user exits a conference
183
+ # @option params [optional, Integer] :play_tones whether to allow the DTMF input from a user to play into the conference
184
+ # @option params [optional, String] :terminator this is the touch-tone key (DTMF) used to exit the conference
185
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
186
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to conference which can be used with REST to interrupt the function
166
187
  # @return [String, nil] the JSON string to be passed back to Tropo or nil
167
188
  # if the method has been called from inside a block
168
189
  def conference(params={}, &block)
@@ -183,7 +204,13 @@ module Tropo
183
204
  # May trigger these events:
184
205
  # - hangup
185
206
  # - error
186
- #
207
+ # @overload hangup(params)
208
+ # @param [Hash] params the options to create a message action request with.
209
+ # @option params [String] :headers contains the Session Initiation Protocol (SIP) Headers for the current session.
210
+ # @overload hangup(params, &block)
211
+ # @param [Hash] params the options to create an message action request with.
212
+ # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
213
+ # @option params [String] :headers contains the Session Initiation Protocol (SIP) Headers for the current session.
187
214
  # @return [String, nil] returns the JSON string to hangup/stop the current session or nil
188
215
  # if the method has been called from inside a block
189
216
  def hangup
@@ -198,25 +225,29 @@ module Tropo
198
225
  #
199
226
  # @overload message(params)
200
227
  # @param [Hash] params the options to create a message action request with.
201
- # @option params [String] :to the destination of the call, may be a phone number, SMS number or IM address
228
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
229
+ # @option params [required, String] :say determines what is played or sent to the caller
230
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
231
+ # @option params [required, String] :to the destination of the call, may be a phone number, SMS number or IM address
202
232
  # @option params [optional, String] :from the phone number or IM address the call will come from
203
233
  # @option params [optional, String] :network which network the call will be initiated with, such as SMS
204
234
  # @option params [optional, String] :channel the channel the call will be initiated over, may be TEXT or VOICE
205
235
  # @option params [optional, Integer] :timeout (30) the amount of time, in seconds, to wait for a response before moving on
206
- # @option params [optional, Boolean] :answer_on_media (true)
207
- # @options params [optional, Hash] :headers A set of key/values to apply as customer SIP headers to the outgoing call
208
- # @options params [optional, Hash] :recording Refer to the recording method for paramaters in the hash
209
- # @overload ask(params, &block)
236
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
237
+ # @option params [optional, Boolean] :answer_on_media (false) if true, the call will be concisdered answered and audio will being playing as soon as media is received (ringing, busy, etc)
238
+ # @overload message(params, &block)
210
239
  # @param [Hash] params the options to create an message action request with.
211
240
  # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
212
- # @option params [String] :to the destination of the call, may be a phone number, SMS number or IM address
241
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
242
+ # @option params [required, String] :say determines what is played or sent to the caller
243
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
244
+ # @option params [required, String] :to the destination of the call, may be a phone number, SMS number or IM address
213
245
  # @option params [optional, String] :from the phone number or IM address the call will come from
214
246
  # @option params [optional, String] :network which network the call will be initiated with, such as SMS
215
247
  # @option params [optional, String] :channel the channel the call will be initiated over, may be TEXT or VOICE
216
248
  # @option params [optional, Integer] :timeout (30) the amount of time, in seconds, to wait for a response before moving on
217
- # @option params [optional, Boolean] :answer_on_media (true)
218
- # @options params [optional, Hash] :headers A set of key/values to apply as customer SIP headers to the outgoing call
219
- # @options params [optional, Hash] :recording Refer to the recording method for paramaters in the hash
249
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
250
+ # @option params [optional, Boolean] :answer_on_media (false) if true, the call will be concisdered answered and audio will being playing as soon as media is received (ringing, busy, etc)
220
251
  # @return [String, nil] the JSON string to be passed back to Tropo or nil
221
252
  # if the method has been called from inside a block
222
253
  def message(params={}, &block)
@@ -236,13 +267,15 @@ module Tropo
236
267
  #
237
268
  # @overload initialize(params)
238
269
  # @param [Hash] params the options to create a message with.
239
- # @option params [String] :event the event name that should trigger the callback
240
- # @option params [String] :next the resource to send the callback to, such as '/error.json'
270
+ # @option params [required, String] :event the event name that should trigger the callback
271
+ # @option params [optional, String] :next the resource to send the callback to, such as '/error.json'
272
+ # @option params [optional, String] :say determines what is played or sent to the caller
241
273
  # @overload initialize(params, &block)
242
274
  # @param [Hash] params the options to create a message with.
243
- # @option params [String] :event the event name that should trigger the callback
244
- # @option params [String] :next the resource to send the callback to, such as '/error.json'
245
275
  # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
276
+ # @option params [required, String] :event the event name that should trigger the callback
277
+ # @option params [optional, String] :next the resource to send the callback to, such as '/error.json'
278
+ # @option params [optional, String] :say determines what is played or sent to the caller
246
279
  # @option [String, nil] the JSON string to be passed back to Tropo or nil
247
280
  # if the method has been called from inside a block
248
281
  def on(params={}, &block)
@@ -314,21 +347,49 @@ module Tropo
314
347
  #
315
348
  # @overload record(params)
316
349
  # @param [Hash] params the options to create a message with.
317
- # @option params [String] :name the event name that should trigger the callback
318
- # @option params [String] :url a valid URI, an HTTP, FTP or email address to POST the recording file to
350
+ # @option params [optional, Integer] :attempts (1) the number of times to prompt the user for input
351
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to record which can be used with REST to interrupt the function
352
+ # @option params [optional, Boolean] :bargein (true) allows a user to say or enter a key to stop the prompt from playing further
353
+ # @option params [optional, Boolean] :beep (true) when true, callers will hear a tone indicating the recording has begun
354
+ # @option params [optional, String] :choices when used with record, this defines the terminator
355
+ # @option params [required, String] :say determines what is played or sent to the caller
356
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
319
357
  # @option params [optional, String] :format (audio/wav) the audio format to record in, either a wav or mp3
358
+ # @option params [optional, Float] :max_silence (5.0) the max amount of time in seconds to wait for silence before considering the user finished speaking
359
+ # @option params [optional, Float] :max_time (30.0) the max amount of time in seconds the user is allotted for input
360
+ # @option params [optional, String] :method (POST) this defines how to send the audio file, either POST or PUT, and only applies to HTTP
361
+ # @option params [optional, Integer] :min_confidence (30) the minimum confidence by which to accept the response, as opposed to asking again
362
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
363
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
364
+ # @option params [optional, Hash] :transcription allows you to submit a recording to be transcribed - takes parameters id, url and emailFormat
365
+ # @option params [optional, String] :url the destination URL to send the recording, either via FTP or HTTP
320
366
  # @option params [optional, String] :username if posting to FTP, the username for the FTP server
321
367
  # @option params [optional, String] :password if posting to FTP, the password for the FTP server
322
- # @option params [optional, Hash] :transcription parameters used to transcribe the recording
368
+ # @option params [optional, Float] :timeout amount of time Tropo will wait--in seconds and after sending or playing the prompt--for the user to begin a response
369
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
323
370
  # @overload record(params, &block)
324
371
  # @param [Hash] params the options to create a message with.
325
372
  # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
326
- # @option params [String] :name the event name that should trigger the callback
327
- # @option params [String] :url a valid URI, an HTTP, FTP or email address to POST the recording file to
373
+ # @option params [optional, Integer] :attempts (1) the number of times to prompt the user for input
374
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to record which can be used with REST to interrupt the function
375
+ # @option params [optional, Boolean] :bargein (true) allows a user to say or enter a key to stop the prompt from playing further
376
+ # @option params [optional, Boolean] :beep (true) when true, callers will hear a tone indicating the recording has begun
377
+ # @option params [optional, String] :choices when used with record, this defines the terminator
378
+ # @option params [required, String] :say determines what is played or sent to the caller
379
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
328
380
  # @option params [optional, String] :format (audio/wav) the audio format to record in, either a wav or mp3
381
+ # @option params [optional, Float] :max_silence (5.0) the max amount of time in seconds to wait for silence before considering the user finished speaking
382
+ # @option params [optional, Float] :max_time (30.0) the max amount of time in seconds the user is allotted for input
383
+ # @option params [optional, String] :method (POST) this defines how to send the audio file, either POST or PUT, and only applies to HTTP
384
+ # @option params [optional, Integer] :min_confidence (30) the minimum confidence by which to accept the response, as opposed to asking again
385
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
386
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
387
+ # @option params [optional, Hash] :transcription allows you to submit a recording to be transcribed - takes parameters id, url and emailFormat
388
+ # @option params [optional, String] :url the destination URL to send the recording, either via FTP or HTTP
329
389
  # @option params [optional, String] :username if posting to FTP, the username for the FTP server
330
390
  # @option params [optional, String] :password if posting to FTP, the password for the FTP server
331
- # @option params [optional, Hash] :transcription parameters used to transcribe the recording
391
+ # @option params [optional, Float] :timeout amount of time Tropo will wait--in seconds and after sending or playing the prompt--for the user to begin a response
392
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
332
393
  # @option [String, nil] the JSON string to be passed back to Tropo or nil
333
394
  # if the method has been called from inside a block
334
395
  def record(params={}, &block)
@@ -344,16 +405,15 @@ module Tropo
344
405
  end
345
406
 
346
407
  ##
347
- # The redirect function forwards an incoming call to another destination / phone number before answering it.
408
+ # The redirect function forwards an incoming SIP call to another destination before answering it.
348
409
  # The redirect function must be called before answer is called; redirect expects that a call be in the ringing or answering state.
349
410
  # Use transfer when working with active answered calls.
350
411
  #
351
- # tel: classic phone number (See RFC 2896), must be proceeded by a + and the country code (ie - +14155551212 for a US #)
352
- # sip: Session Initiation Protocol (SIP) address
353
412
  #
354
413
  # @param [Hash] params the options to create a message with.
355
- # @option params [required, String] :to where to redirect the session to
356
- # @option params [optional, String] :from set the from id for the session when redirecting
414
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
415
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
416
+ # @option params [required, String] :to where to redirect the session to
357
417
  # @return [String, nil] the JSON string to redirect the current session or nil
358
418
  # if the method has been called from inside a block
359
419
  def redirect(params={})
@@ -400,19 +460,22 @@ module Tropo
400
460
  #
401
461
  # @overload say(params)
402
462
  # @param [Hash] params the options to create a message with.
403
- # @option params [String] :value the text or audio to be spoken or played back to the user
404
- # @option params [Boolean] :event assigns a callback when a particular event occurs
405
- # @option params [Integer] :as instructs the engine on how to handle the grammar
406
- # @option params [Boolean] :format instructs the engine on how to handle the grammar
407
- # @return [String, nil] the JSON string to be passed back to Tropo or nil
408
- # if the method has been called from inside a block
409
- # @overload say(value, params)
410
- # @param [String] the text or audio to be spoken or played back to the user
463
+ # @option params [required, String] :value the text or audio to be spoken or played back to the user
464
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
465
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
466
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
467
+ # @option params [optional, Integer] :as specifies the type of data being spoken, so the TTS Engine can interpret it correctly. The possible values are "DATE", "DIGITS" and "NUMBER"
468
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to say which can be used with REST to interrupt the function
469
+ # @overload say(params, &block)
411
470
  # @param [Hash] params the options to create a message with.
412
- # @option params [Boolean] :event assigns a callback when a particular event occurs
413
- # @option params [Integer] :as instructs the engine on how to handle the grammar
414
- # @option params [Boolean] :format instructs the engine on how to handle the grammar
415
- # @return [String, nil] the JSON string to be passed back to Tropo or nil
471
+ # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
472
+ # @option params [required, String] :value the text or audio to be spoken or played back to the user
473
+ # @option params [optional, String] :voice (allison) specifies the voice to be used when speaking text to a user
474
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
475
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
476
+ # @option params [optional, Integer] :as specifies the type of data being spoken, so the TTS Engine can interpret it correctly. The possible values are "DATE", "DIGITS" and "NUMBER"
477
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to say which can be used with REST to interrupt the function
478
+ # @return [String, nil] the JSON string to be passed back to Tropo or nil
416
479
  # if the method has been called from inside a block
417
480
  def say(value=nil, params={})
418
481
 
@@ -458,10 +521,11 @@ module Tropo
458
521
  # The resulting recording may then be sent via FTP or an HTTP POST/Multipart Form.
459
522
  #
460
523
  # @param [Hash] params the options to create a message with.
461
- # @option params [String] :url a valid URI, an HTTP, FTP or email address to POST the recording file to
524
+ # @option params [required, String] :url a valid URI, an HTTP, FTP or email address to POST the recording file to
462
525
  # @option params [optional, String] :format (audio/wav) the audio format to record in, either a wav or mp3
463
526
  # @option params [optional, String] :username if posting to FTP, the username for the FTP server
464
527
  # @option params [optional, String] :password if posting to FTP, the password for the FTP server
528
+ # @option params [optional, String] :method (POST) defines how to send the audio file - values are POST or PUT and applies only to HTTP
465
529
  # @return [String, nil] returns the JSON string to start the recording of a session or nil
466
530
  # if the method has been called from inside a block
467
531
  def start_recording(params={})
@@ -506,22 +570,34 @@ module Tropo
506
570
  #
507
571
  # @overload transfer(params)
508
572
  # @param [Hash] params the options to create a transfer action request with
509
- # @option params [String] :name the name to assign to the result when returned to the application, default is true
510
- # @option params [optional, Boolean] :answer_on_media ???
511
- # @option params [optional, Integer] :answer_timeout the amount of time to ring the far side before giving up and going to the next step
512
- # @option params [optional, Boolean] :required (true) ???
513
- # @option params [required, String] :to where to redirect the session to
573
+ # @option params [required, String] :to the new destination for the incoming call as a URL
514
574
  # @option params [optional, String] :from set the from id for the session when redirecting
515
- # @option params [optional, Integer] :ring_repeat ???
575
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
576
+ # @option params [optional, Integer] :ring_repeat This specifies the number of times the audio file specified in the ring event will repeat itself.
577
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
578
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
579
+ # @option params [optional, Float] :timeout amount of time Tropo will wait--in seconds--for the other party to answer the call
580
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
581
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to record which can be used with REST to interrupt the function
582
+ # @option params [optional, String] :on adds event callback to enable "ring" event, which allows you to play an audio file or say something while the outbound call rings
583
+ # @option params [optional, Boolean] :answer_on_media (false) if true, the call will be concisdered answered and audio will being playing as soon as media is received (ringing, busy, etc)
584
+ # @options params [optional, Hash] :headers A set of key/values to apply as customer SIP headers to the outgoing call
585
+ # @option params [optional, String] :choices when used with transfer, this defines the terminator
516
586
  # @overload transfer(params, &block)
517
587
  # @param [Hash] params the options to create a transfer action request with
518
- # @option params [String] :name the name to assign to the result when returned to the application, default is true
519
- # @option params [optional, Boolean] :answer_on_media ???
520
- # @option params [optional, Integer] :answer_timeout the amount of time to ring the far side before giving up and going to the next step
521
- # @option params [optional, Boolean] :required (true) ???
522
- # @option params [required, String] :to where to redirect the session to
588
+ # @param [Block] takes a block so that you may trigger actions, such as a say, on a specific event
589
+ # @option params [required, String] :to the new destination for the incoming call as a URL
523
590
  # @option params [optional, String] :from set the from id for the session when redirecting
524
- # @option params [optional, Integer] :ring_repeat ???
591
+ # @option params [optional, Integer] :ring_repeat This specifies the number of times the audio file specified in the ring event will repeat itself.
592
+ # @option params [optional, String] :name this is the key used to identify the result of an operation, so you can differentiate between multiple results
593
+ # @option params [optional, Boolean] :required (true) determines whether Tropo should move on to the next verb - if true, Tropo will only move on if the current operation completed
594
+ # @option params [optional, Float] :timeout amount of time Tropo will wait--in seconds--for the other party to answer the call
595
+ # @option params [optional, Integer] :interdigit_timeout (nil) defines how long to wait between key presses to determine the user has stopped entering input
596
+ # @option params [optional, String or Array] :allow_signals allows you to assign a signal to record which can be used with REST to interrupt the function
597
+ # @option params [optional, String] :on adds event callback to enable "ring" event, which allows you to play an audio file or say something while the outbound call rings
598
+ # @option params [optional, Boolean] :answer_on_media (false) if true, the call will be concisdered answered and audio will being playing as soon as media is received (ringing, busy, etc)
599
+ # @options params [optional, Hash] :headers A set of key/values to apply as customer SIP headers to the outgoing call
600
+ # @option params [optional, String] :choices when used with transfer, this defines the terminator
525
601
  # @return [nil, String]
526
602
  def transfer(params={}, &block)
527
603
  if block_given?
@@ -550,5 +626,17 @@ module Tropo
550
626
  def voice=(voice)
551
627
  @voice = voice
552
628
  end
629
+
630
+ def wait(params={}, &block)
631
+ if block_given?
632
+ create_nested_hash('wait', params)
633
+ instance_exec(&block)
634
+ @response[:tropo] << @nested_hash
635
+ else
636
+ hash = build_action('wait', params)
637
+ @response[:tropo] << hash
638
+ end
639
+ render_response if @building.nil?
640
+ end
553
641
  end
554
642
  end
@@ -2,6 +2,9 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "Tropo" do
4
4
 
5
+
6
+ response = Tropo::Generator.wait({ :milliseconds => 10, :allowSignals => "exit"})
7
+
5
8
  # Ask action tests (and alias Prompt)
6
9
  it "should generate a complete 'ask' JSON document" do
7
10
  response = Tropo::Generator.ask({ :name => 'foo',
@@ -362,15 +365,6 @@ describe "Tropo" do
362
365
  @@new_session.should == 'foobar'
363
366
  end
364
367
 
365
- it "should see an object passed into the block" do
366
- session = 'foobar'
367
- result = Tropo::Generator.new(session) do
368
- session.should == 'foobar'
369
- say :value => 'blah'
370
- on :event => 'error', :next => 'error.json'
371
- end
372
- end
373
-
374
368
  it "should allow you to create a Tropo::Generator object and build up a JSON request with two says" do
375
369
  tropo = Tropo::Generator.new
376
370
  tropo.say('foo')
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{tropo-webapi-ruby}
8
- s.version = "0.1.11"
8
+ s.version = "0.1.13"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jason Goecke"]
@@ -14,16 +14,19 @@ Gem::Specification.new do |s|
14
14
  s.email = %q{jsgoecke@voxeo.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.md"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- "HISTORY.rdoc",
21
+ # "HISTORY.rdoc",
22
22
  "LICENSE",
23
- "README.rdoc",
23
+ "README.md",
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "examples/sinatra_server.rb",
27
+ "examples/conferenceJoinLeave.rb",
28
+ "examples/machineDetection.rb",
29
+ "examples/transferWhisper.rb",
27
30
  "lib/tropo-webapi-ruby.rb",
28
31
  "lib/tropo-webapi-ruby/object_patch.rb",
29
32
  "lib/tropo-webapi-ruby/tropo-webapi-ruby-helpers.rb",
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tropo-webapi-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 11
10
- version: 0.1.11
4
+ version: 0.1.13
11
5
  platform: ruby
12
6
  authors:
13
7
  - Jason Goecke
@@ -15,22 +9,15 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2011-06-24 00:00:00 -07:00
19
- default_executable:
12
+ date: 2011-06-24 00:00:00 Z
20
13
  dependencies:
21
14
  - !ruby/object:Gem::Dependency
22
15
  name: rspec
23
16
  prerelease: false
24
17
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
18
  requirements:
27
19
  - - ">="
28
20
  - !ruby/object:Gem::Version
29
- hash: 13
30
- segments:
31
- - 1
32
- - 2
33
- - 9
34
21
  version: 1.2.9
35
22
  type: :development
36
23
  version_requirements: *id001
@@ -38,15 +25,9 @@ dependencies:
38
25
  name: json_pure
39
26
  prerelease: false
40
27
  requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
28
  requirements:
43
29
  - - ">="
44
30
  - !ruby/object:Gem::Version
45
- hash: 31
46
- segments:
47
- - 1
48
- - 2
49
- - 0
50
31
  version: 1.2.0
51
32
  type: :runtime
52
33
  version_requirements: *id002
@@ -54,15 +35,9 @@ dependencies:
54
35
  name: hashie
55
36
  prerelease: false
56
37
  requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
58
38
  requirements:
59
39
  - - ">="
60
40
  - !ruby/object:Gem::Version
61
- hash: 23
62
- segments:
63
- - 0
64
- - 2
65
- - 0
66
41
  version: 0.2.0
67
42
  type: :runtime
68
43
  version_requirements: *id003
@@ -74,15 +49,17 @@ extensions: []
74
49
 
75
50
  extra_rdoc_files:
76
51
  - LICENSE
77
- - README.rdoc
52
+ - README.md
78
53
  files:
79
54
  - .document
80
- - HISTORY.rdoc
81
55
  - LICENSE
82
- - README.rdoc
56
+ - README.md
83
57
  - Rakefile
84
58
  - VERSION
59
+ - examples/conferenceJoinLeave.rb
60
+ - examples/machineDetection.rb
85
61
  - examples/sinatra_server.rb
62
+ - examples/transferWhisper.rb
86
63
  - lib/tropo-webapi-ruby.rb
87
64
  - lib/tropo-webapi-ruby/object_patch.rb
88
65
  - lib/tropo-webapi-ruby/tropo-webapi-ruby-helpers.rb
@@ -91,41 +68,33 @@ files:
91
68
  - spec/spec_helper.rb
92
69
  - spec/tropo-webapi-ruby_spec.rb
93
70
  - tropo-webapi-ruby.gemspec
94
- has_rdoc: true
95
71
  homepage: http://tropo.com
96
72
  licenses: []
97
73
 
74
+ metadata: {}
75
+
98
76
  post_install_message:
99
77
  rdoc_options: []
100
78
 
101
79
  require_paths:
102
80
  - lib
103
81
  required_ruby_version: !ruby/object:Gem::Requirement
104
- none: false
105
82
  requirements:
106
83
  - - ">="
107
84
  - !ruby/object:Gem::Version
108
- hash: 59
109
- segments:
110
- - 1
111
- - 8
112
- - 6
113
85
  version: 1.8.6
114
86
  required_rubygems_version: !ruby/object:Gem::Requirement
115
- none: false
116
87
  requirements:
117
88
  - - ">="
118
89
  - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
90
  version: "0"
123
91
  requirements: []
124
92
 
125
93
  rubyforge_project:
126
- rubygems_version: 1.5.0
94
+ rubygems_version: 2.2.2
127
95
  signing_key:
128
96
  specification_version: 3
129
97
  summary: Tropo Web API Ruby Gem
130
98
  test_files: []
131
99
 
100
+ has_rdoc:
@@ -1,19 +0,0 @@
1
- = Tropo Release History
2
-
3
- == Version 0.1.5
4
-
5
- - First public release
6
-
7
- == Version 0.1.6
8
-
9
- - Added the appropriate ActiveSupport dependency for 'instance_exec' for Ruby 1.8.6 support.
10
- - Added a dependency and support for Hashie.
11
-
12
- == Version 0.1.9
13
-
14
- - Fixed the start_recording so it does not require a 'name' parameter
15
- - Aliased start_call_recording -> start_recording
16
- - Aliased stop_call_recording -> stop_recording
17
- - Fixes to the README
18
- - Fixed the yardoc install
19
- - The Tropo::Generator.parse method will now take a JSON string or a Ruby hash.