Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Look Who's Talking
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Pablo Cantero
March 09, 2013
Programming
58
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Look Who's Talking
Pablo Cantero
March 09, 2013
More Decks by Pablo Cantero
See All by Pablo Cantero
Deploy in the cloud
phstc
0
71
Auto Scaling Guided By Code
phstc
0
70
Other Decks in Programming
See All in Programming
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
JIS keyboard support in Omarchy
lef237
0
110
SREの越境 / SRE Collaboration
y0hgi
2
310
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
残高管理から台帳サービスへの進化
artoy
1
200
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
Workers Cache を知る
syumai
0
360
AWSに止められる覚悟してますか?
morizo_1984
2
530
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
AmebaブログはKMPから卒業します
kmars0605
0
180
気持ちぃ〜角丸 Squircle
ryu1013
0
310
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
570
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Unsuck your backbone
ammeep
672
58k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
Balancing Empowerment & Direction
lara
6
1.3k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
The SEO Collaboration Effect
kristinabergwall1
1
590
Tell your own story through comics
letsgokoyo
1
1.1k
Un-Boring Meetings
codingconduct
0
460
Chasing Engaging Ingredients in Design
codingconduct
0
360
Transcript
Look Who’s Talking Pablo Cantero @pablocantero http://pablocantero.com 28° GURU-SP -
09/03/2013
Why I started with it?
We had a problem We needed a phone support 24x7
in case the website becomes unavailable and other possible urgent issues.
None
None
Solution We decided to use a Communication as a Service
(CaaS) to register a fixed phone number in Brazil, which receives a call and redirects it to the developer on duty cellphone.
http://www.twilio.com
Why Twilio? • No Contracts • Pay as you go
• Simple and well documented API
Brazilian pricing • To receive a call = 1¢/minute •
To make a call = 33¢/minute • To send a text: starts at =1.2¢/message • Fixed brazilian number = 3$/month • Fixed american number = 1$/month
Support Roulette https://github.com/phstc/support-roulette
None
Plantão Elo7
Call me maybe WebRTC
gem “twilio-ruby”
account_sid = ENV["TWILIO_ACCOUNT_SID"] auth_token =
ENV["TWILIO_AUTH_TOKEN"] twiml_app_sid = ENV["TWILIO_TWIML_APP"] capability = Twilio::Util::Capability.new account_sid, auth_token capability.allow_client_outgoing twiml_app_sid token = capability.generate
<ul id="user-‐list" data-‐token="<%= token %>"> <% @users.each do |user| %>
<li> <%= user.name %> -‐ <a href="#" rel="phone-‐number"> <%= user.name %> </a> </li> <% end %> </ul>
<ul id="user-‐list" data-‐token="eyJ0..."> <li> Pablo
Cantero <a href="#" rel="phone-‐number"> +551199... </a> </li> </ul>
<script src="//static.twilio.com/libs/twiliojs/1.1/twilio.min.js"></script>
$ -‐> Twilio.Device.setup $("#user-‐list").data "token" $("a[rel=phone-‐number]").on "click",
(e) -‐> e.preventDefault() if Twilio.Device.status() != "ready" Twilio.Device.disconnectAll() return $this = $ e.target Twilio.Device.connect $this.text()
$(function(){ Twilio.Device.setup($("#user-‐list").data("token")); $("a[rel=phone-‐number]").on("click", function(e){
e.preventDefault(); if(Twilio.Device.status() !== "ready"){ Twilio.Device.disconnectAll(); return; } $this = $(e.target); Twilio.Device.connect($this.text()); }); });
Other examples
Twilio + Monit = Pingdom Mingdom https://gist.github.com/phstc/5044114
# /etc/monitrc check host localhost with address 127.0.0.1
if failed port 8080 with timeout 15 seconds then exec "ruby /usr/bin/notify-‐site-‐is-‐down.rb'"
# /usr/bin/notify-‐site-‐is-‐down.rb require "rubygems" require "twilio-‐ruby" account_sid =
ENV["TWILIO_ACCOUNT_SID"] auth_token = ENV["TWILIO_AUTH_TOKEN"] @client = Twilio::REST::Client.new(account_sid, auth_token) @client.account.SMS.messages.create( from: "+5511…", to: "+5511…", body: "Houston we have a problem, the website is down." )
SMS Forwarding <Response> <Sms from="+5511.." to="+5511...">
Hello World </Sms> </Response>
Twimlets https://www.twilio.com/labs/twimlets Twimlets are tiny web applications that implement basic
voice and text functionality. Think of them as "Widgets" in the web world.
Apps which talk • Alerts & Notifications • Rewards •
Reminders • System administration • Sales Automation • Bike Sampa • Identity Verification • Security token • Support Roulette ;)
Thank you Pablo Cantero @pablocantero http://pablocantero.com