Permalink
f8846cd Aug 26, 2014
@andrewmbenton @philnash @labcoder @jpf @guillec @dougblack
149 lines (115 sloc) 4.1 KB
# examples version 3
@account_sid = 'AC043dcf9844e04758bc3a36a84c29761'
@auth_token = '62ea81de3a5b414154eb263595357c69'
# set up a client
@client = Twilio::REST::Client.new(@account_sid, @auth_token)
################ ACCOUNTS ################
# shortcut to grab your account object (account_sid is inferred from the client's auth credentials)
@account = @client.account
# list your (sub)accounts
@client.accounts.list
# grab an account instance resource if you know the sid
@account = @client.accounts.get(@account_sid)
# http round trip happens here
puts @account.friendly_name
# update an account's friendly name
@client.accounts.get(@account_sid).update(friendly_name: 'A Fabulous Friendly Name')
################ CALLS ################
# print a list of calls (all parameters optional)
@account.calls.list(
page: 0,
page_size: 1000,
start_time: '2010-09-01'
).each do |call|
puts call.sid
end
# get a particular call and list its recording urls
@account.calls.get('CAXXXXXXX').recordings.list.each do |r|
puts r.wav
end
# make a new outgoing call. returns a call object just like calls.get
@call = @account.calls.create(
from: '+14159341234',
to: '+18004567890',
url: 'http://example.com/call-handler'
)
# cancel the call if not already in progress
@account.calls.get(@call.sid).update(status: 'canceled')
# or equivalently
@call.update(status: 'canceled')
# or simply
@call.cancel
# redirect and then terminate a call
@call = @account.calls.get('CA386025c9bf5d6052a1d1ea42b4d16662')
@call.update(url: 'http://example.com/call-redirect')
@call.update(status: 'completed')
# or, use the aliases...
@call.redirect_to('http://example.com/call-redirect')
@call.hangup
################ SMS MESSAGES ################
# print a list of messages
@account.messages.list(date_sent: '2010-09-01').each do |message|
puts message.body
end
# print a particular sms message
puts @account.messages.get('SMXXXXXXXX').body
# send an sms
@account.messages.create(
from: '+14159341234',
to: '+16105557069',
body: 'Hey there!'
)
# send an mms
@account.messages.create(
from: '+14159341234',
to: '+16105557069',
media_urls: 'http://example.com/media.png'
)
################ PHONE NUMBERS ################
# get a list of supported country codes
@account.available_phone_numbers.list
# print some available numbers
@numbers = @account.available_phone_numbers.get('US').local.list(
contains: 'AWESOME'
)
@numbers.each { |num| puts num.phone_number }
# buy the first one
@account.incoming_phone_numbers.create(phone_number: @numbers[0].phone_number)
# update an existing phone number's voice url
number = @account.incoming_phone_numbers.get('PNdba508c5616a7f5e141789f44f022cc3')
number.update(voice_url: 'http://example.com/voice')
# decommission an existing phone number
numbers = @account.incoming_phone_numbers.list(
friendly_name: 'A Fabulous Friendly Name'
)
numbers[0].delete
################ CONFERENCES ################
# get a particular conference's participants object and stash it
conference = @account.conferences.get('CFbbe46ff1274e283f7e3ac1df0072ab39')
@participants = conference.participants
# list participants
@participants.list.each do |p|
puts p.sid
end
# update a conference participant
@participants.get('CA386025c9bf5d6052a1d1ea42b4d16662').update(muted: 'true')
# or an easier way
@participants.get('CA386025c9bf5d6052a1d1ea42b4d16662').mute
# and, since we're lazy loading, this would only incur one http request
@account.conferences.get('CFbbe46ff1274e283f7e3ac1df0072ab39').participants
.get('CA386025c9bf5d6052a1d1ea42b4d16662').update(muted: 'true')
################ QUEUES ###################
# create a new queue
@queue = @account.queues.create(friendly_name: 'MyQueue', max_size: 50)
# get a list of queues for this account
@queues = @account.queues.list
# get a particular queue and its members
@queue = @account.queues.get("QQb6765b0458714964970a73dcaf55efd1")
@members = @queue.members
#list members
@members.list.each do |m|
puts m.wait_time
end
# dequeue a particular user and run twiml at a specific url
@member = @members.get('CA386025c9bf5d6052a1d1ea42b4d16662')
@member.dequeue('http://myapp.com/deque')