A module for using the Twilio REST API and generating valid TwiML. Click here to read the full documentation.
To install using Bundler grab the latest stable version:
gem 'twilio-ruby', '~> 5.0.0'
To manually install twilio-ruby
via Rubygems simply gem install:
gem install twilio-ruby -v 5.0.0
To build and install the development branch yourself from the latest source:
git clone [email protected]:twilio/twilio-ruby.git
cd twilio-ruby
make install
During the Release Candidate period of this library, please leave all feedback and issues in the Github Issues for twilio-ruby
.
require 'twilio-ruby'
# put your own credentials here
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new account_sid, auth_token
# alternatively, you can preconfigure the client like so
Twilio.configure do |config|
config.account_sid = account_sid
config.auth_token = auth_token
end
# and then you can create a new client without parameters
@client = Twilio::REST::Client.new
@client.api.account.calls.create(
from: '+14159341234',
to: '+16105557069',
url: 'http://example.com'
)
@client.api.account.messages.create(
from: '+14159341234',
to: '+16105557069',
body: 'Hey there!'
)
twilio-ruby uses Faraday to make HTTP requests. You can tell Twilio::REST::Client to use any of the Faraday adapters like so:
@client.http_client.adapter = :typhoeus
If you just need to generate a Capability Token for use with Twilio Client, you can do this:
require 'twilio-ruby'
# put your own account credentials here:
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# set up
capability = Twilio::JWT::ClientCapability.new account_sid, auth_token
# allow outgoing calls to an application
outgoing_scope = Twilio::JWT::ClientCapability::OutgoingClientScope.new 'AP11111111111111111111111111111111'
capability.add_scope(outgoing_scope)
# allow incoming calls to 'andrew'
incoming_scope = Twilio::JWT::ClientCapability::IncomingClientScope.new 'andrew'
capability.add_scope(incoming_scope)
# generate the token string
@token = capability.to_s
There is a slightly more detailed document in the Capability section of the wiki.
TwiML support is based on the Builder library. You can construct a TwiML response like this:
require 'twilio-ruby'
response = Twilio::TwiML::VoiceResponse.new do |r|
r.say('hello there', voice: 'alice')
r.dial(caller_id: '+14159992222') do |d|
d.client 'jenny'
end
end
# print the result
puts response.to_s
This will print the following (except for the whitespace):
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice">hello there</Say>
<Dial callerId="+14159992222">
<Client>jenny</Client>
</Dial>
</Response>
This library supports and is tested against the following Ruby implementations:
- Ruby 2.4.0
- Ruby 2.3.0
- Ruby 2.2.0
- Ruby 2.1.0
- Ruby 2.0.0