tropo-webapi-ruby 0.1.11 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.