TwimlTemplate
TwiML templates for Tilt.
An easy way to work with TwiML for responding to Twilio webhooks in Rails or Sinatra applications using template files with a .twiml extension.
Example
If you create a template called hello_world.twiml with the following code:
twiml.say(message: "Hello World!")and rendered it from an application you would get the following response:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>Hello World!</Say>
</Response>See Rails or Sinatra below for full instructions.
Installation
Add this line to your application's Gemfile:
gem 'twiml_template'And then execute:
$ bundle install
Or install it yourself as:
$ gem install twiml_template
Usage
twiml_template allows you to use a template with the extension .twiml to write TwiML. The template makes a single variable, twiml available. twiml is an instance of a TwimlTemplate::Response which unifies the twilio-ruby gem's Twilio::TwiML::VoiceResponse and Twilio::TwiML::MessagingResponse classes. This means you only need one type of template file, but you can use it for either voice or messaging responses. twiml_template passes methods through to objects of each of those classes to generate the response.
If you start writing a voice response, you can only continue writing a voice response. If you start writing a messaging response, you can only continue with a messaging response. This should never cause you a problem (you would never normally write a response with a <Say> and a <Message> in it!).
Rails
By including the twiml_template gem in your Rails project Gemfile you will be able to write TwiML templates easily.
Create a controller, like below:
class VoiceController < ApplicationController
def index
@name = "World"
end
endAdd a route:
Rails.application.routes.draw do
get 'voice' => 'voice#index'
# Other routes...
endAnd then add your TwiML view:
twiml.say message: "Hello #{@name}"Save the file as #{RAILS_ROOT}/app/views/voice/index.twiml.
Run the app using rails s and visit http://localhost:3000/voice and you will see:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>Hello World!</Say>
</Response>Sinatra
Create your application file like below:
require 'sinatra'
require 'sinatra/twiml'
helpers Sinatra::TwiML
get '/voice' do
@name = "World!"
twiml :voice
endAnd then add your TwiML view:
twiml.say message: "Hello #{@name}"Save the file as #{APP_ROOT}/views/voice.twiml.
Start the app with ruby app.rb and visit http://localhost:4567/voice and you will see:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>Hello World!</Say>
</Response>Contributing
- Fork it ( https://github.com/philnash/twiml_template/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request