twilio 2.9.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -1
- data/CHANGELOG.rdoc +27 -0
- data/Gemfile +4 -0
- data/README.rdoc +16 -6
- data/Rakefile +6 -46
- data/lib/twilio.rb +21 -6
- data/lib/twilio/account.rb +1 -1
- data/lib/twilio/available_phone_numbers.rb +56 -0
- data/lib/twilio/call.rb +4 -4
- data/lib/twilio/conference.rb +6 -6
- data/lib/twilio/incoming_phone_number.rb +16 -2
- data/lib/twilio/notification.rb +2 -2
- data/lib/twilio/outgoing_caller_id.rb +5 -4
- data/lib/twilio/recording.rb +2 -2
- data/lib/twilio/sms.rb +2 -2
- data/lib/twilio/twilio_object.rb +8 -5
- data/lib/twilio/version.rb +3 -0
- data/spec/fixtures/xml/account.xml +23 -0
- data/{test → spec}/fixtures/xml/account_renamed.xml +0 -0
- data/spec/fixtures/xml/available_phone_numbers_local.xml +26 -0
- data/spec/fixtures/xml/available_phone_numbers_local_search.xml +15 -0
- data/spec/fixtures/xml/available_phone_numbers_toll_free.xml +14 -0
- data/spec/fixtures/xml/available_phone_numbers_toll_free_search.xml +10 -0
- data/{test → spec}/fixtures/xml/call.xml +0 -0
- data/{test → spec}/fixtures/xml/call_new.xml +0 -0
- data/{test → spec}/fixtures/xml/call_redirected.xml +0 -0
- data/{test → spec}/fixtures/xml/calls.xml +0 -0
- data/{test → spec}/fixtures/xml/conference.xml +1 -1
- data/{test → spec}/fixtures/xml/conference_participant.xml +0 -0
- data/{test → spec}/fixtures/xml/conference_participant_muted.xml +0 -0
- data/{test → spec}/fixtures/xml/conference_participants.xml +0 -0
- data/{test → spec}/fixtures/xml/conferences.xml +0 -0
- data/{test → spec}/fixtures/xml/incoming_phone_number.xml +0 -0
- data/{test → spec}/fixtures/xml/incoming_phone_numbers.xml +0 -0
- data/{test → spec}/fixtures/xml/notification.xml +0 -0
- data/{test → spec}/fixtures/xml/notifications.xml +0 -0
- data/{test → spec}/fixtures/xml/outgoing_caller_id.xml +0 -0
- data/{test → spec}/fixtures/xml/outgoing_caller_id_new.xml +0 -0
- data/{test → spec}/fixtures/xml/outgoing_caller_ids.xml +0 -0
- data/{test → spec}/fixtures/xml/recording.xml +0 -0
- data/{test → spec}/fixtures/xml/recordings.xml +0 -0
- data/{test → spec}/fixtures/xml/sms.xml +0 -0
- data/{test → spec}/fixtures/xml/sms_messages.xml +0 -0
- data/{test → spec}/fixtures/xml/sms_new.xml +0 -0
- data/{test → spec}/fixtures/xml/sms_new_with_callback.xml +0 -0
- data/{test → spec}/fixtures/xml/transcription.xml +0 -0
- data/{test → spec}/fixtures/xml/transcriptions.xml +0 -0
- data/{test → spec}/fixtures/yml/verb_responses.yml +0 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/twilio_helpers.rb +52 -0
- data/spec/twilio/account_spec.rb +21 -0
- data/spec/twilio/available_phone_numbers_spec.rb +53 -0
- data/spec/twilio/call_spec.rb +64 -0
- data/spec/twilio/conference_spec.rb +58 -0
- data/spec/twilio/incoming_phone_number_spec.rb +42 -0
- data/spec/twilio/live_connection_spec.rb +21 -0
- data/spec/twilio/notification_spec.rb +29 -0
- data/spec/twilio/outgoing_caller_id_spec.rb +43 -0
- data/spec/twilio/recording_spec.rb +44 -0
- data/spec/twilio/sms_spec.rb +36 -0
- data/spec/twilio/verb_spec.rb +235 -0
- data/twilio.gemspec +23 -111
- metadata +164 -82
- data/VERSION.yml +0 -5
- data/lib/twilio/connection.rb +0 -24
- data/lib/twilio/local_phone_number.rb +0 -26
- data/lib/twilio/toll_free_phone_number.rb +0 -26
- data/test/fixtures/xml/account.xml +0 -11
- data/test/test_helper.rb +0 -33
- data/test/twilio/account_test.rb +0 -28
- data/test/twilio/call_test.rb +0 -66
- data/test/twilio/conference_test.rb +0 -46
- data/test/twilio/connection_test.rb +0 -25
- data/test/twilio/incoming_phone_number_test.rb +0 -31
- data/test/twilio/local_phone_number_test.rb +0 -37
- data/test/twilio/notification_test.rb +0 -35
- data/test/twilio/outgoing_caller_id_test.rb +0 -45
- data/test/twilio/recording_test.rb +0 -47
- data/test/twilio/sms_test.rb +0 -27
- data/test/twilio/toll_free_phone_number_test.rb +0 -38
- data/test/twilio/verb_test.rb +0 -244
data/.gitignore
CHANGED
data/CHANGELOG.rdoc
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
= Twilio Gem Changelog
|
2
|
+
|
3
|
+
== 3.0
|
4
|
+
|
5
|
+
* SSL validation (thanks Kyle Humberto)
|
6
|
+
* Available phone numbers search support (thanks Mark Turner)
|
7
|
+
* Deprecated Twilio::Connection method has been removed, use Twilio.connect(...)
|
8
|
+
* LocalPhoneNumber and TollFreeNumber have been removed to reflect API changes
|
9
|
+
* New phone numbers are now provisioned via the IncomingPhoneNumber class
|
10
|
+
* Several classes improved to avoid adding a stray "?" when no params were set
|
11
|
+
* Compatibility with 1.9.2 (and tested on 1.8.7 MRI and REE)
|
12
|
+
* Now uses Bundler, Rspec 2, and WebMock
|
13
|
+
|
14
|
+
== 2.9
|
15
|
+
|
16
|
+
* Compatibility with Twilio's 2010-04-01 API publish
|
17
|
+
|
18
|
+
== 2.8
|
19
|
+
|
20
|
+
* SMS callback URLs
|
21
|
+
* Ability to delete phone numbers
|
22
|
+
|
23
|
+
== 2.7
|
24
|
+
|
25
|
+
* SMS functionality
|
26
|
+
|
27
|
+
For earlier versions, see https://github.com/webficient/twilio/commits/master
|
data/Gemfile
ADDED
data/README.rdoc
CHANGED
@@ -4,8 +4,6 @@ The Twilio gem provides two major pieces of functionality: (1) a Ruby wrapper fo
|
|
4
4
|
|
5
5
|
See http://www.twilio.com/docs/index for Twilio's API documentation.
|
6
6
|
|
7
|
-
For an overview of the Twilio Gem and a sample use case, check out our cached blog entry: http://webcache.googleusercontent.com/search?q=cache:AejgwBra3fMJ:www.webficient.com/2009/06/22/hello-this-is-your-rails-app-calling-you+site:http://www.webficient.com/2009/06/22/hello-this-is-your-rails-app-calling-you&hl=en&gl=us&strip=1
|
8
|
-
|
9
7
|
== Calling the Twilio REST API
|
10
8
|
|
11
9
|
First set your credentials by calling the connect method:
|
@@ -36,14 +34,26 @@ and you can nest multiple verbs inside a block:
|
|
36
34
|
|
37
35
|
== Installation
|
38
36
|
|
39
|
-
|
37
|
+
gem install twilio
|
40
38
|
|
41
|
-
|
39
|
+
== Contributing
|
40
|
+
|
41
|
+
1. Run 'bundle' from the command line to install dependencies
|
42
|
+
2. Write test(s) for your patch
|
43
|
+
3. Submit a pull request
|
44
|
+
|
45
|
+
Note: don't require 'rubygems' in any file (http://www.rubyinside.com/why-using-require-rubygems-is-wrong-1478.html)
|
42
46
|
|
43
47
|
== Copyright
|
44
48
|
|
45
|
-
Copyright (c) 2009-
|
49
|
+
Copyright (c) 2009-2011 Phil Misiowiec, Webficient LLC. See LICENSE for details.
|
46
50
|
|
47
51
|
== Contributors
|
48
52
|
|
49
|
-
Kyle Daigle
|
53
|
+
* Kyle Daigle
|
54
|
+
* Yuri Gadow
|
55
|
+
* Kyle Humberto
|
56
|
+
* Jonathan Rudenberg
|
57
|
+
* Mark Turner
|
58
|
+
* Jeff Wigal
|
59
|
+
* Alex K Wolfe
|
data/Rakefile
CHANGED
@@ -1,49 +1,9 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'jeweler'
|
5
|
-
Jeweler::Tasks.new do |gem|
|
6
|
-
gem.name = "twilio"
|
7
|
-
gem.summary = %Q{Twilio API Client}
|
8
|
-
gem.description = %Q{Twilio API wrapper}
|
9
|
-
gem.email = "github@webficient.com"
|
10
|
-
gem.homepage = "http://github.com/webficient/twilio"
|
11
|
-
gem.authors = ["Phil Misiowiec", "Jonathan Rudenberg", "Alex K Wolfe", "Kyle Daigle", "Jeff Wigal", "Yuri Gadow"]
|
12
|
-
gem.add_dependency 'builder', '>= 2.1.2'
|
13
|
-
gem.add_dependency 'httparty', '>= 0.4.3'
|
14
|
-
end
|
15
|
-
rescue LoadError
|
16
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
17
|
-
end
|
18
|
-
|
19
|
-
require 'rake/rdoctask'
|
20
|
-
Rake::RDocTask.new do |rdoc|
|
21
|
-
rdoc.rdoc_dir = 'rdoc'
|
22
|
-
rdoc.title = 'twilio'
|
23
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
24
|
-
rdoc.rdoc_files.include('README*')
|
25
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
26
|
-
end
|
1
|
+
require 'bundler/setup'
|
2
|
+
Bundler::GemHelper.install_tasks
|
27
3
|
|
28
|
-
require 'rake
|
29
|
-
|
30
|
-
test.libs << 'lib' << 'test'
|
31
|
-
test.pattern = 'test/**/*_test.rb'
|
32
|
-
test.verbose = false
|
33
|
-
end
|
34
|
-
|
35
|
-
begin
|
36
|
-
require 'rcov/rcovtask'
|
37
|
-
Rcov::RcovTask.new do |test|
|
38
|
-
test.libs << 'test'
|
39
|
-
test.pattern = 'test/**/*_test.rb'
|
40
|
-
test.verbose = true
|
41
|
-
end
|
42
|
-
rescue LoadError
|
43
|
-
task :rcov do
|
44
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
45
|
-
end
|
46
|
-
end
|
4
|
+
require 'rake'
|
5
|
+
require 'rspec/core/rake_task'
|
47
6
|
|
7
|
+
RSpec::Core::RakeTask.new
|
48
8
|
|
49
|
-
task :default => :
|
9
|
+
task :default => :spec
|
data/lib/twilio.rb
CHANGED
@@ -23,16 +23,31 @@
|
|
23
23
|
|
24
24
|
require 'httparty'
|
25
25
|
require 'builder'
|
26
|
+
|
26
27
|
require 'twilio/twilio_object'
|
28
|
+
|
27
29
|
require 'twilio/account'
|
30
|
+
require 'twilio/available_phone_numbers'
|
28
31
|
require 'twilio/call'
|
29
|
-
require 'twilio/
|
30
|
-
require 'twilio/connection'
|
32
|
+
require 'twilio/conference'
|
31
33
|
require 'twilio/incoming_phone_number'
|
32
|
-
require 'twilio/local_phone_number'
|
33
34
|
require 'twilio/notification'
|
34
35
|
require 'twilio/outgoing_caller_id'
|
35
36
|
require 'twilio/recording'
|
36
|
-
require 'twilio/
|
37
|
-
require 'twilio/
|
38
|
-
|
37
|
+
require 'twilio/sms'
|
38
|
+
require 'twilio/verb'
|
39
|
+
|
40
|
+
module Twilio
|
41
|
+
include HTTParty
|
42
|
+
TWILIO_URL = "https://api.twilio.com/2010-04-01/Accounts"
|
43
|
+
SSL_CA_PATH = "/etc/ssl/certs"
|
44
|
+
|
45
|
+
# The connect method caches your Twilio account id and authentication token
|
46
|
+
# Example:
|
47
|
+
# Twilio.connect('AC309475e5fede1b49e100272a8640f438', '3a2630a909aadbf60266234756fb15a0')
|
48
|
+
def self.connect(account_sid, auth_token)
|
49
|
+
self.base_uri "#{TWILIO_URL}/#{account_sid}"
|
50
|
+
self.basic_auth account_sid, auth_token
|
51
|
+
self.default_options[:ssl_ca_path] ||= SSL_CA_PATH unless self.default_options[:ssl_ca_file]
|
52
|
+
end
|
53
|
+
end
|
data/lib/twilio/account.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
module Twilio
|
2
|
+
# An AvailablePhoneNumbers resources represents the available phone numbers
|
3
|
+
# that Twilio can provide you based on your search criteria. The valid
|
4
|
+
# query terms are outlined in the search methods.
|
5
|
+
# Example:
|
6
|
+
# Twilio.connect('my_twilio_sid', 'my_auth_token')
|
7
|
+
# Twilio.AvailablePhoneNumbers.search_local(:area_code => 541)
|
8
|
+
class AvailablePhoneNumbers < TwilioObject
|
9
|
+
|
10
|
+
# The Search method handles the searching of both local and toll-free
|
11
|
+
# numbers.
|
12
|
+
def search(opts={})
|
13
|
+
iso_country_code = opts[:iso_country_code] || 'US'
|
14
|
+
resource = opts.delete(:resource)
|
15
|
+
|
16
|
+
params = {
|
17
|
+
:AreaCode => opts[:area_code],
|
18
|
+
:InPostalCode => opts[:postal_code],
|
19
|
+
:InRegion => opts[:in_region],
|
20
|
+
:Contains => opts[:contains],
|
21
|
+
:NearLatLong => opts[:near_lat_long],
|
22
|
+
:NearNumber => opts[:near_number],
|
23
|
+
:InLata => opts[:in_lata],
|
24
|
+
:InRateCenter => opts[:in_rate_center],
|
25
|
+
:Distance => opts[:distance]
|
26
|
+
}.reject {|k,v| v == nil} unless opts.empty?
|
27
|
+
|
28
|
+
Twilio.get("/AvailablePhoneNumbers/#{iso_country_code}/#{resource}", :query => params)
|
29
|
+
end
|
30
|
+
|
31
|
+
# The search_local method searches for numbers in local areas (i.e. state, zip, etc..)
|
32
|
+
# Search Options:
|
33
|
+
# :area_code
|
34
|
+
# :postal_code
|
35
|
+
# :in_region
|
36
|
+
# :contains
|
37
|
+
# :near_lat_long
|
38
|
+
# :near_number
|
39
|
+
# :in_lata
|
40
|
+
# :in_rate_center
|
41
|
+
# :distance
|
42
|
+
def search_local(opts ={})
|
43
|
+
opts = {:resource => 'Local'}.merge(opts)
|
44
|
+
search(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
# The search_toll_free method searches for available toll-free numbers
|
48
|
+
# Search Options
|
49
|
+
# :contains
|
50
|
+
def search_toll_free(opts ={})
|
51
|
+
opts = {:resource => 'TollFree'}.merge(opts)
|
52
|
+
search(opts)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
data/lib/twilio/call.rb
CHANGED
@@ -6,12 +6,12 @@ module Twilio
|
|
6
6
|
# Example:
|
7
7
|
# Twilio.connect('my_twilio_sid', 'my_auth_token')
|
8
8
|
# Twilio::Call.make(CALLER_ID, user_number, 'http://myapp.com/twilio_response_handler')
|
9
|
-
def make(from, to, url,
|
10
|
-
Twilio.post("/Calls", :body => {:From => from, :To => to, :Url => url}.merge(
|
9
|
+
def make(from, to, url, opts = {})
|
10
|
+
Twilio.post("/Calls", :body => {:From => from, :To => to, :Url => url}.merge(opts))
|
11
11
|
end
|
12
12
|
|
13
|
-
def list(
|
14
|
-
Twilio.get("/Calls", :query =>
|
13
|
+
def list(opts = {})
|
14
|
+
Twilio.get("/Calls", :query => (opts.empty? ? nil : opts))
|
15
15
|
end
|
16
16
|
|
17
17
|
def get(call_sid)
|
data/lib/twilio/conference.rb
CHANGED
@@ -4,20 +4,20 @@ module Twilio
|
|
4
4
|
# a Conference Instance Resource is created to represent the conference room
|
5
5
|
# and a Participant Instance Resource is created to represent the caller who joined.
|
6
6
|
class Conference < TwilioObject
|
7
|
-
def list(
|
8
|
-
Twilio.get("/Conferences", :query =>
|
7
|
+
def list(opts = {})
|
8
|
+
Twilio.get("/Conferences", :query => (opts.empty? ? nil : opts))
|
9
9
|
end
|
10
10
|
|
11
11
|
def get(conference_sid)
|
12
|
-
Twilio.get("/Conferences/#{conference_sid}")
|
12
|
+
Twilio.get("/Conferences/#{conference_sid}")
|
13
13
|
end
|
14
14
|
|
15
|
-
def participants(conference_sid,
|
16
|
-
Twilio.get("/Conferences/#{conference_sid}/Participants", :query =>
|
15
|
+
def participants(conference_sid, opts = {})
|
16
|
+
Twilio.get("/Conferences/#{conference_sid}/Participants", :query => (opts.empty? ? nil : opts))
|
17
17
|
end
|
18
18
|
|
19
19
|
def participant(conference_sid, call_sid)
|
20
|
-
Twilio.get("/Conferences/#{conference_sid}/Participants/#{call_sid}")
|
20
|
+
Twilio.get("/Conferences/#{conference_sid}/Participants/#{call_sid}")
|
21
21
|
end
|
22
22
|
|
23
23
|
def mute_participant(conference_sid, call_sid)
|
@@ -5,12 +5,26 @@ module Twilio
|
|
5
5
|
# Twilio.connect('my_twilio_sid', 'my_auth_token')
|
6
6
|
# Twilio::IncomingPhoneNumber.list
|
7
7
|
class IncomingPhoneNumber < TwilioObject
|
8
|
-
def list(
|
9
|
-
Twilio.get("/IncomingPhoneNumbers", :query =>
|
8
|
+
def list(opts = {})
|
9
|
+
Twilio.get("/IncomingPhoneNumbers", :query => (opts.empty? ? nil : opts))
|
10
10
|
end
|
11
11
|
|
12
12
|
def get(incoming_sid)
|
13
13
|
Twilio.get("/IncomingPhoneNumbers/#{incoming_sid}")
|
14
14
|
end
|
15
|
+
|
16
|
+
# Creates a phone number in Twilio. You must first find an existing number using
|
17
|
+
# the AvailablePhoneNumber class before creating one here.
|
18
|
+
#
|
19
|
+
# Required: you must either set PhoneNumber or AreaCode as a required option
|
20
|
+
# For additional options, see http://www.twilio.com/docs/api/rest/incoming-phone-numbers
|
21
|
+
def create(opts)
|
22
|
+
raise "You must set either :PhoneNumber or :AreaCode" if !opts.include?(:AreaCode) && !opts.include?(:PhoneNumber)
|
23
|
+
Twilio.post("/IncomingPhoneNumbers", :body => opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
def delete(incoming_sid)
|
27
|
+
Twilio.delete("/IncomingPhoneNumbers/#{incoming_sid}")
|
28
|
+
end
|
15
29
|
end
|
16
30
|
end
|
data/lib/twilio/notification.rb
CHANGED
@@ -5,8 +5,8 @@ module Twilio
|
|
5
5
|
# Twilio.connect('my_twilio_sid', 'my_auth_token')
|
6
6
|
# Twilio::Notification.list
|
7
7
|
class Notification < TwilioObject
|
8
|
-
def list(
|
9
|
-
Twilio.get('/Notifications', :query =>
|
8
|
+
def list(opts = {})
|
9
|
+
Twilio.get('/Notifications', :query => (opts.empty? ? nil : opts))
|
10
10
|
end
|
11
11
|
|
12
12
|
def get(notification_sid)
|
@@ -5,16 +5,17 @@ module Twilio
|
|
5
5
|
# Twilio.connect('my_twilio_sid', 'my_auth_token')
|
6
6
|
# Twilio::OutgoingCallerId.list
|
7
7
|
class OutgoingCallerId < TwilioObject
|
8
|
-
def create(phone_number, friendly_name = phone_number, call_delay = 0)
|
8
|
+
def create(phone_number, friendly_name = phone_number, call_delay = 0, extension = nil)
|
9
9
|
Twilio.post("/OutgoingCallerIds", :body => {
|
10
10
|
:PhoneNumber => phone_number,
|
11
11
|
:FriendlyName => friendly_name,
|
12
|
-
:CallDelay => call_delay
|
12
|
+
:CallDelay => call_delay,
|
13
|
+
:Extension => extension
|
13
14
|
})
|
14
15
|
end
|
15
16
|
|
16
|
-
def list(
|
17
|
-
Twilio.get("/OutgoingCallerIds", :query =>
|
17
|
+
def list(opts = {})
|
18
|
+
Twilio.get("/OutgoingCallerIds", :query => (opts.empty? ? nil : opts))
|
18
19
|
end
|
19
20
|
|
20
21
|
def get(callerid_sid)
|
data/lib/twilio/recording.rb
CHANGED
@@ -5,8 +5,8 @@ module Twilio
|
|
5
5
|
# Twilio.connect('my_twilio_sid', 'my_auth_token')
|
6
6
|
# Twilio::Recording.list
|
7
7
|
class Recording < TwilioObject
|
8
|
-
def list(
|
9
|
-
Twilio.get("/Recordings", :query =>
|
8
|
+
def list(opts = {})
|
9
|
+
Twilio.get("/Recordings", :query => (opts.empty? ? nil : opts))
|
10
10
|
end
|
11
11
|
|
12
12
|
def get(recording_sid)
|
data/lib/twilio/sms.rb
CHANGED
@@ -10,8 +10,8 @@ module Twilio
|
|
10
10
|
Twilio.post("/SMS/Messages", :body => {:From => from, :To => to, :Body => body}.merge(callback))
|
11
11
|
end
|
12
12
|
|
13
|
-
def list(
|
14
|
-
Twilio.get("/SMS/Messages", :query =>
|
13
|
+
def list(opts = {})
|
14
|
+
Twilio.get("/SMS/Messages", :query => (opts.empty? ? nil : opts))
|
15
15
|
end
|
16
16
|
|
17
17
|
def get(sms_message_sid)
|
data/lib/twilio/twilio_object.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
module Twilio
|
2
|
-
class TwilioObject #:nodoc: all
|
3
|
-
|
4
|
-
|
5
|
-
def initialize(connection = nil)
|
6
|
-
@connection = connection
|
2
|
+
class TwilioObject #:nodoc: all
|
3
|
+
def initialize
|
7
4
|
end
|
8
5
|
|
9
6
|
class << self
|
10
7
|
def method_missing(method_id, *args) #:nodoc:
|
11
8
|
o = self.new
|
12
9
|
o.send(method_id, *args)
|
10
|
+
rescue HTTParty::UnsupportedURIScheme
|
11
|
+
raise "You must set Twilio.connect before calling #{self.inspect}##{method_id}"
|
13
12
|
end
|
14
13
|
end
|
14
|
+
|
15
|
+
def connected?
|
16
|
+
self.class.base_uri
|
17
|
+
end
|
15
18
|
end
|
16
19
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<TwilioResponse>
|
2
|
+
<Account>
|
3
|
+
<Sid>mysid</Sid>
|
4
|
+
<FriendlyName>Do you like my friendly name?</FriendlyName>
|
5
|
+
<Status>active</Status>
|
6
|
+
<DateCreated>Wed, 04 Aug 2010 21:37:41 +0000</DateCreated>
|
7
|
+
<DateUpdated>Fri, 06 Aug 2010 01:15:02 +0000</DateUpdated>
|
8
|
+
<AuthToken>mytoken</AuthToken>
|
9
|
+
<Uri>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d</Uri>
|
10
|
+
<SubresourceUris>
|
11
|
+
<AvailablePhoneNumbers>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/AvailablePhoneNumbers</AvailablePhoneNumbers>
|
12
|
+
<Calls>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/Calls</Calls>
|
13
|
+
<Conferences>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/Conferences</Conferences>
|
14
|
+
<IncomingPhoneNumbers>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/IncomingPhoneNumbers</IncomingPhoneNumbers>
|
15
|
+
<Notifications>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/Notifications</Notifications>
|
16
|
+
<OutgoingCallerIds>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/OutgoingCallerIds</OutgoingCallerIds>
|
17
|
+
<Recordings>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/Recordings</Recordings>
|
18
|
+
<Sandbox>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/Sandbox</Sandbox>
|
19
|
+
<SMSMessages>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/SMS/Messages</SMSMessages>
|
20
|
+
<Transcriptions>/2010-04-01/Accounts/ACba8bc05eacf94afdae398e642c9cc32d/Transcriptions</Transcriptions>
|
21
|
+
</SubresourceUris>
|
22
|
+
</Account>
|
23
|
+
</TwilioResponse>
|
File without changes
|
@@ -0,0 +1,26 @@
|
|
1
|
+
TwilioResponse>
|
2
|
+
<AvailablePhoneNumbers uri="/2010-04-01/Accounts/ACde6f1e11047ebd6fe7a55f120be3a900/AvailablePhoneNumbers/US/Local?AreaCode=510">
|
3
|
+
<AvailablePhoneNumber>
|
4
|
+
<FriendlyName>(510) 564-7903</FriendlyName>
|
5
|
+
<PhoneNumber>+15105647903</PhoneNumber>
|
6
|
+
<Lata>722</Lata>
|
7
|
+
<RateCenter>OKLD TRNID</RateCenter>
|
8
|
+
<Latitude>37.780000</Latitude>
|
9
|
+
<Longitude>-122.380000</Longitude>
|
10
|
+
<Region>CA</Region>
|
11
|
+
<PostalCode>94703</PostalCode>
|
12
|
+
<IsoCountry>US</IsoCountry>
|
13
|
+
</AvailablePhoneNumber>
|
14
|
+
<AvailablePhoneNumber>
|
15
|
+
<FriendlyName>(510) 488-4379</FriendlyName>
|
16
|
+
<PhoneNumber>+15104884379</PhoneNumber>
|
17
|
+
<Lata>722</Lata>
|
18
|
+
<RateCenter>OKLD FRTVL</RateCenter>
|
19
|
+
<Latitude>37.780000</Latitude>
|
20
|
+
<Longitude>-122.380000</Longitude>
|
21
|
+
<Region>CA</Region>
|
22
|
+
<PostalCode>94602</PostalCode>
|
23
|
+
<IsoCountry>US</IsoCountry>
|
24
|
+
</AvailablePhoneNumber>
|
25
|
+
</AvailablePhoneNumbers>
|
26
|
+
</TwilioResponse>
|