webficient-twilio 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/twilio/verb.rb +64 -14
- data/test/fixtures/yml/verb_responses.yml +49 -1
- data/test/twilio/verb_test.rb +60 -4
- metadata +1 -1
data/VERSION.yml
CHANGED
data/lib/twilio/verb.rb
CHANGED
@@ -23,7 +23,7 @@ module Twilio
|
|
23
23
|
#
|
24
24
|
# Twilio::Verb.say_4_times_with_pause('Your PIN is 1 2 3 4')
|
25
25
|
#
|
26
|
-
#
|
26
|
+
# Options (see http://www.twilio.com/docs/api_reference/TwiML/say) are passed in as a hash:
|
27
27
|
#
|
28
28
|
# Twilio::Verb.say('The time is 9:35 PM.', :voice => 'woman')
|
29
29
|
# Twilio::Verb.say('The time is 9:35 PM.', {:voice => 'woman', :language => 'es'})
|
@@ -53,7 +53,7 @@ module Twilio
|
|
53
53
|
}
|
54
54
|
end
|
55
55
|
|
56
|
-
#
|
56
|
+
# The Play verb plays an audio URL back to the caller.
|
57
57
|
# Examples:
|
58
58
|
# Twilio::Verb.play('http://foo.com/cowbell.mp3')
|
59
59
|
# Twilio::Verb.play_3_times('http://foo.com/cowbell.mp3')
|
@@ -62,7 +62,7 @@ module Twilio
|
|
62
62
|
#
|
63
63
|
# Twilio::Verb.play_3_times_with_pause('http://foo.com/cowbell.mp3')
|
64
64
|
#
|
65
|
-
#
|
65
|
+
# Options (see http://www.twilio.com/docs/api_reference/TwiML/play) are passed in as a hash,
|
66
66
|
# however, since the Play verb only supports 'loop' as the current option, you can instead use the
|
67
67
|
# above form to keep things concise.
|
68
68
|
def play(*args, &block)
|
@@ -90,25 +90,75 @@ module Twilio
|
|
90
90
|
end
|
91
91
|
}
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
|
+
# The Gather verb collects digits entered by a caller into their telephone keypad.
|
95
|
+
# When the caller is done entering data, Twilio submits that data to a provided URL,
|
96
|
+
# as either a HTTP GET or POST request, just like a web browser submits data from an HTML form.
|
97
|
+
#
|
98
|
+
# Options (see http://www.twilio.com/docs/api_reference/TwiML/gather) are passed in as a hash
|
99
|
+
#
|
100
|
+
# Examples:
|
101
|
+
# Twilio::Verb.gather
|
102
|
+
# Twilio::Verb.gather(:action => 'http://foobar.com')
|
103
|
+
# Twilio::Verb.gather(:finishOnKey => '*')
|
104
|
+
# Twilio::Verb.gather(:action => 'http://foobar.com', :finishOnKey => '*')
|
94
105
|
def gather(*args, &block)
|
95
106
|
options = args.shift
|
96
|
-
|
97
107
|
xml = Builder::XmlMarkup.new
|
98
108
|
xml.instruct!
|
99
|
-
xml.Response {
|
100
|
-
xml.Gather(options)
|
101
|
-
}
|
109
|
+
xml.Response { xml.Gather(options) }
|
102
110
|
end
|
103
111
|
|
104
|
-
#
|
105
|
-
|
106
|
-
|
112
|
+
# The Record verb records the caller's voice and returns a URL that links to a file
|
113
|
+
# containing the audio recording.
|
114
|
+
#
|
115
|
+
# Options (see http://www.twilio.com/docs/api_reference/TwiML/record) are passed in as a hash
|
116
|
+
#
|
117
|
+
# Examples:
|
118
|
+
# Twilio::Verb.record
|
119
|
+
# Twilio::Verb.record(:action => 'http://foobar.com')
|
120
|
+
# Twilio::Verb.record(:finishOnKey => '*')
|
121
|
+
# Twilio::Verb.record(:transcribe => true, :transcribeCallback => '/handle_transcribe')
|
122
|
+
def record(*args, &block)
|
123
|
+
options = args.shift
|
124
|
+
xml = Builder::XmlMarkup.new
|
125
|
+
xml.instruct!
|
126
|
+
xml.Response { xml.Record(options) }
|
107
127
|
end
|
108
128
|
|
109
|
-
#
|
110
|
-
|
111
|
-
|
129
|
+
# The Dial verb connects the current caller to an another phone. If the called party picks up,
|
130
|
+
# the two parties are connected and can communicate until one hangs up. If the called party does
|
131
|
+
# not pick up, if a busy signal is received, or the number doesn't exist, the dial verb will finish.
|
132
|
+
#
|
133
|
+
# If an action verb is provided, Twilio will submit the outcome of the call attempt to the action URL.
|
134
|
+
# If no action is provided, Dial will fall through to the next verb in the document.
|
135
|
+
#
|
136
|
+
# Note: this is different than the behavior of Record and Gather. Dial does not submit back to the
|
137
|
+
# current document URL if no action is provided.
|
138
|
+
#
|
139
|
+
# Options (see http://www.twilio.com/docs/api_reference/TwiML/dial) are passed in as a hash
|
140
|
+
#
|
141
|
+
# Examples:
|
142
|
+
# Twilio::Verb.dial('415-123-4567')
|
143
|
+
# Twilio::Verb.dial('415-123-4567', :action => 'http://foobar.com')
|
144
|
+
# Twilio::Verb.dial('415-123-4567', {:timeout => 10, :callerId => '858-987-6543'})
|
145
|
+
def dial(*args, &block)
|
146
|
+
number_to_dial = ''
|
147
|
+
options = {}
|
148
|
+
args.each do |arg|
|
149
|
+
case arg
|
150
|
+
when String
|
151
|
+
number_to_dial = arg
|
152
|
+
when Hash
|
153
|
+
options.merge!(arg)
|
154
|
+
else
|
155
|
+
raise ArgumentError, 'dial expects String or Hash argument'
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
xml = Builder::XmlMarkup.new
|
160
|
+
xml.instruct!
|
161
|
+
xml.Response { xml.Dial(number_to_dial, options) }
|
112
162
|
end
|
113
163
|
|
114
164
|
def method_missing(method_id, *args) #:nodoc:
|
@@ -38,4 +38,52 @@ gather_with_finish_key:
|
|
38
38
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather finishOnKey="*"/></Response>
|
39
39
|
|
40
40
|
gather_with_num_digits:
|
41
|
-
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather numDigits="5"/></Response>
|
41
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather numDigits="5"/></Response>
|
42
|
+
|
43
|
+
gather_with_all_options_set:
|
44
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather finishOnKey="*" method="GET" action="http://foobar.com" numDigits="5" timeout="10"/></Response>
|
45
|
+
|
46
|
+
record:
|
47
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record></Record></Response>
|
48
|
+
|
49
|
+
record_with_action:
|
50
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record action="http://foobar.com"/></Response>
|
51
|
+
|
52
|
+
record_with_get_method:
|
53
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record method="GET"/></Response>
|
54
|
+
|
55
|
+
record_with_timeout:
|
56
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record timeout="10"/></Response>
|
57
|
+
|
58
|
+
record_with_finish_key:
|
59
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record finishOnKey="*"/></Response>
|
60
|
+
|
61
|
+
record_with_max_length:
|
62
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record maxLength="1800"/></Response>
|
63
|
+
|
64
|
+
record_with_transcribe:
|
65
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record transcribe="true" transcribeCallback="/handle_transcribe"/></Response>
|
66
|
+
|
67
|
+
dial:
|
68
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial>415-123-4567</Dial></Response>
|
69
|
+
|
70
|
+
dial_with_action:
|
71
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial action="http://foobar.com">415-123-4567</Dial></Response>
|
72
|
+
|
73
|
+
dial_with_get_method:
|
74
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial method="GET">415-123-4567</Dial></Response>
|
75
|
+
|
76
|
+
dial_with_timeout:
|
77
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial timeout="10">415-123-4567</Dial></Response>
|
78
|
+
|
79
|
+
dial_with_hangup_on_star:
|
80
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial hangupOnStar="true">415-123-4567</Dial></Response>
|
81
|
+
|
82
|
+
dial_with_time_limit:
|
83
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial timeLimit="3600">415-123-4567</Dial></Response>
|
84
|
+
|
85
|
+
dial_with_caller_id:
|
86
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial callerId="858-987-6543">415-123-4567</Dial></Response>
|
87
|
+
|
88
|
+
dial_with_timeout_and_caller_id:
|
89
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial callerId="858-987-6543" timeout="10">415-123-4567</Dial></Response>
|
data/test/twilio/verb_test.rb
CHANGED
@@ -58,12 +58,68 @@ class VerbTest < Test::Unit::TestCase #:nodoc: all
|
|
58
58
|
assert_equal verb_response(:gather_with_num_digits), Twilio::Verb.gather(:numDigits => 5)
|
59
59
|
end
|
60
60
|
|
61
|
-
should "
|
62
|
-
|
61
|
+
should "gather with all options set" do
|
62
|
+
assert_equal verb_response(:gather_with_all_options_set), Twilio::Verb.gather(:action => 'http://foobar.com', :method => 'GET', :timeout => 10, :finishOnKey => '*', :numDigits => 5)
|
63
63
|
end
|
64
64
|
|
65
|
-
should "
|
66
|
-
|
65
|
+
should "record" do
|
66
|
+
assert_equal verb_response(:record), Twilio::Verb.record
|
67
|
+
end
|
68
|
+
|
69
|
+
should "record with action" do
|
70
|
+
assert_equal verb_response(:record_with_action), Twilio::Verb.record(:action => 'http://foobar.com')
|
71
|
+
end
|
72
|
+
|
73
|
+
should "record with GET method" do
|
74
|
+
assert_equal verb_response(:record_with_get_method), Twilio::Verb.record(:method => 'GET')
|
75
|
+
end
|
76
|
+
|
77
|
+
should "record with timeout" do
|
78
|
+
assert_equal verb_response(:record_with_timeout), Twilio::Verb.record(:timeout => 10)
|
79
|
+
end
|
80
|
+
|
81
|
+
should "record with finish key" do
|
82
|
+
assert_equal verb_response(:record_with_finish_key), Twilio::Verb.record(:finishOnKey => '*')
|
83
|
+
end
|
84
|
+
|
85
|
+
should "record with max length" do
|
86
|
+
assert_equal verb_response(:record_with_max_length), Twilio::Verb.record(:maxLength => 1800)
|
87
|
+
end
|
88
|
+
|
89
|
+
should "record with transcribe" do
|
90
|
+
assert_equal verb_response(:record_with_transcribe), Twilio::Verb.record(:transcribe => true, :transcribeCallback => '/handle_transcribe')
|
91
|
+
end
|
92
|
+
|
93
|
+
should "dial" do
|
94
|
+
assert_equal verb_response(:dial), Twilio::Verb.dial('415-123-4567')
|
95
|
+
end
|
96
|
+
|
97
|
+
should "dial with action" do
|
98
|
+
assert_equal verb_response(:dial_with_action), Twilio::Verb.dial('415-123-4567', :action => 'http://foobar.com')
|
99
|
+
end
|
100
|
+
|
101
|
+
should "dial with GET method" do
|
102
|
+
assert_equal verb_response(:dial_with_get_method), Twilio::Verb.dial('415-123-4567', :method => 'GET')
|
103
|
+
end
|
104
|
+
|
105
|
+
should "dial with timeout" do
|
106
|
+
assert_equal verb_response(:dial_with_timeout), Twilio::Verb.dial('415-123-4567', :timeout => 10)
|
107
|
+
end
|
108
|
+
|
109
|
+
should "dial with hangup on star" do
|
110
|
+
assert_equal verb_response(:dial_with_hangup_on_star), Twilio::Verb.dial('415-123-4567', :hangupOnStar => true)
|
111
|
+
end
|
112
|
+
|
113
|
+
should "dial with time limit" do
|
114
|
+
assert_equal verb_response(:dial_with_time_limit), Twilio::Verb.dial('415-123-4567', :timeLimit => 3600)
|
115
|
+
end
|
116
|
+
|
117
|
+
should "dial with caller id" do
|
118
|
+
assert_equal verb_response(:dial_with_caller_id), Twilio::Verb.dial('415-123-4567', :callerId => '858-987-6543')
|
119
|
+
end
|
120
|
+
|
121
|
+
should "dial with timeout and caller id" do
|
122
|
+
assert_equal verb_response(:dial_with_timeout_and_caller_id), Twilio::Verb.dial('415-123-4567', {:timeout => 10, :callerId => '858-987-6543'})
|
67
123
|
end
|
68
124
|
end
|
69
125
|
|