Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Twilio入門
Search
thinkAmi
June 08, 2013
Programming
0
1.6k
Twilio入門
NSEG #40 で発表した時のスライドです。
thinkAmi
June 08, 2013
Tweet
Share
More Decks by thinkAmi
See All by thinkAmi
知ろう!使おう!HDF5ファイル!/pycon-jp-2019-talk
thinkami
4
10k
Djangoでのメール送信 - 設定からテストまで/djangocongress-jp-2019-talk
thinkami
1
12k
Django・WSGIミドルウェア入門/django-congress-jp-2018-talk
thinkami
4
5.2k
自分のための機械学習をしてみた話
thinkami
0
630
Xamarinで作るAndroid Wearアプリ
thinkami
1
2.7k
FluentMigratorでDBマイグレーション
thinkami
0
2.2k
デプロイボタンを使ってみた
thinkami
0
1k
Vagrant + Berkshelf でお手軽写経環境構築
thinkami
1
1.3k
おひとりさま環境でのChef-solo使用例
thinkami
2
1.5k
Other Decks in Programming
See All in Programming
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
0
160
CDK引数設計道場100本ノック
badmintoncryer
2
580
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
740
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
33
9.6k
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
650
MCPで実現できる、Webサービス利用体験について
syumai
7
2.1k
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
それ CLI フレームワークがなくてもできるよ / Building CLI Tools Without Frameworks
orgachem
PRO
10
2.2k
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
460
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
210
AI Ramen Fight
yusukebe
0
110
知って得する@cloudflare_vite-pluginのあれこれ
chimame
1
120
Featured
See All Featured
Embracing the Ebb and Flow
colly
86
4.8k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Designing for humans not robots
tammielis
253
25k
GraphQLとの向き合い方2022年版
quramy
49
14k
Fireside Chat
paigeccino
37
3.5k
Rails Girls Zürich Keynote
gr2m
95
14k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Documentation Writing (for coders)
carmenintech
72
4.9k
Scaling GitHub
holman
461
140k
Speed Design
sergeychernyshev
32
1k
Transcript
Twilio 入門 NSEG #40 2013.06.08 @thinkAmi
自己紹介 • @thinkAmi • hatenaID: thinkAmi • C#, Python, Ruby
• 自社インフラ管理 • NSEG, GDG信州 • あとで資料&ソースコードは公開します
Twilio http://www.twilio.com/company/logos
Twilioとは • プログラムからAPI経由で電話を操作 – 電話への発信 – 電話からの着信 – 通話の録音 –
SMSの送受信 など、いろいろ
日本では • KDDIウェブコミュニケーションズと提携 • 4/17、日本版提供のプレスリリース http://www.kddi-webcommunications.co.jp/news/press/20130417.html • 最近はいろいろなイベントを見かけます • クラスメソッドさんのBlogに連載あり
– 実装の参考に。ありがとうございます。 http://dev.classmethod.jp/series/クラウド電話api-twilio/
事例 • アメリカ – Uber:配車コール – Airbnb・Hulu:ユーザーサポート • 日本 –
ヤフー:サーバーの監視 – イプロス: B2B向けビジネスマッチングサイトのコールトラッキング http://jp.startup-dating.com/2013/04/twilio-launched-in-japan-what-kind-of-business-can-work-well http://ascii.jp/elem/000/000/781/781134/
身近な例 • CTIとかの構築をしたいけれど、コスト... – プログラムを組んで対応できるかも • 出張時に独自のモーニングコールが... – プログラムを組んで、Cronでコールすれば! •
インフラ障害時に (ry
対応プログラム言語 • 公式ライブラリはいろいろとあり – PHP, Ruby, Python, .NET, Java, Salesforce/Force.com,
Node.js • その他言語は、以下を参照 – http://www.twilio.com/docs/libraries
Twilioアカウント • 今回は、米TwilioのTrialアカウント – 以前GDG信州でやったものをリサイクル • KDDIのTwilioアカウントでは試せず – 米Twilioのアカウントでは KDDIのTwilioにログインできなかった
• 日本の電話番号ではSMSの送受信できず http://www.twilio.com/help/faq/phone-numbers/which-countries-does-twilio-have-phone-numbers- in-and-what-are-their-capabilities
TwilioのTrialアカウント • いくつか制限がある – アカウントで認証した電話番号のみ、 Twilioへの発信や着信が可能 – 他にもいくつかある (How does
Twilio’s Free Trial work?) http://www.twilio.com/help/faq/twilio-basics/how-does-twilios-free-trial-work
Trialアカウントの不明点 • Twilioへの費用は発生しないものの、 電話の着信・発信時の通話料は必要? • まだ明細確認してなかった...
プログラムからTwilioを使う
Twilioの設定 • Twilioの電話番号とTwiMLのURLを設定 Trialアカウントの場合は、手元の電話番号も認証しておく – TwiML: Twilioの動作を記載したXML
TwiML • 静的TwiMLを公開する – XMLを作るのが、めんどうくさい – あんまり自由ではない • プログラムでTwiMLを生成する –
ライブラリを使えば、めんどくさくない • 例: Rubyであれば、twilio-ruby とか
TwiMLの例
英語テキストの読み上げ • デフォルトは男性の声、女性の声もあり Twilio::TwiML::Response.new do |r| r.Say('Hello World', voice: 'man')
end.text
英語テキストの読み上げ • デフォルトは男性の声、女性の声もあり <?xml version='1.0' encoding='utf-8'?> <response> <say voice="man"> Hello
World </say> </response>
日本語テキストの読み上げ • 今のところ、女性の声でしか再生できず Twilio::TwiML::Response.new do |r| r.Say('ようこそ、松本へ', language: 'ja-jp') end.text
日本語テキストの読み上げ • 今のところ、女性の声でしか再生できず <?xml version='1.0' encoding='utf-8'?> <response> <say language="ja-jp"> ようこそ、松本へ
</say> </response>
メニューの選択 Twilio::TwiML::Response.new do |r| r.Gather(action: '/hoge', method: 'GET', numDigits: 1
) do |g| g.Say('再生は1、録音は2', language: 'ja-jp') end end.text
メニューの選択 <?xml version='1.0' encoding='utf-8'?> <response> <gather action="/selection" method="GET" numdigits="1"> <say
language="ja-jp"> 再生は1を、録音は2を押してください </say> </gather> </response> TwiMLはもう省略してもいいですよね...
音声の録音 Twilio::TwiML::Response.new do |r| r.Record(action: '/fuga', method: 'GET', maxLength: 10
finishOnKey: '#') end.text
録音内容の再生 Twilio::TwiML::Response.new do |r| r.Play(<録音したデータのURL>) end.text
指定番号宛への電話発信 client = Twilio::REST::Client.new <TwilioのSID>, <Twilioのトークン> client.account.calls.create( from: <発信番号(Twilioの電話番号を指定)>, to:
<着信番号(Trialの場合は、認証した電話番号)>, url: <着信時に再生するTwiMLのURL> )
基本的な流れ • 携帯からTwilioへ電話をかける • Webから携帯へ電話をかける 携帯 Twilio TwiMLの ホスティング先
兼 Webの ホスティング先
基本的な流れ • 携帯からTwilioへ電話をかける ①Twilio番号へ発信 ②TwiMLを確認 ③TwiMLを返却 ④TwiMLに従い動作
基本的な流れ • Webから携帯へ電話をかける ②TwiMLを確認 ③TwiMLを返却 ④TwiMLに従い動作 ①Twilioへアクセス
デモ
デモ環境 • 米TwilioのTrialアカウント • Ruby + twilio-ruby • Heroku •
Redis To Go (Herokuのアドオン版) – テキストデータの保存先として利用
デモ:テキストの読み上げ1 • Redis To Goへテキストを保存 • Webから携帯へ発信 • テキストの読み上げを確認
デモ:テキストの読み上げ2 • Redis To Goへテキストを保存 • 携帯からTwilioへ発信 • メニューから、テキスト再生を選択 •
テキストの読み上げを確認
デモ:音声の記録と再生 • 携帯からTwilioへ発信 • メニューから、録音を選択 • 声を録音 • 直後に、内容を再生・確認
デモ:ブラウザから録音を再生 • 指定した録音内容を再生
デモ:ブラウザから録音を削除 • 指定した録音内容を削除
デモ:wavファイルの再生 • web上にあるwavファイルを再生する • どうせなので、話題のCeVIOと聴き比べ – CeVIO • http://cevio.jp/ •
参考 – 業務改善提案「さとうささらで弁当の注文忘れ防止」 – http://sho.tdiary.net/20130605.html#p01
やってみて • テキストをもとにTwilioが話す内容は、 意外と聞き取りやすい • 句読点で一呼吸置いてくれる • アルファベットはもちろん、ひらがな・ カタカナ・漢字も読み上げる –
ただし、漢字の読み方は微妙なので、 ひらがなで設定したほうが確実
やってみて • 通話料のところが不明だけれど、 Trialアカウントでもいろいろと試せそう • URLへGET/POSTで発着信できるので、 いたずらとかアタックに気をつける – 実際、作成中に食らって電話が鳴り続いた...
参考文献 • Twilio http://www.twilio.com/ • KDDIウェブコミュニケーションズ http://kddi-web.twilio.jp/ http://blog.twilio.kddi-web.com/ • クラスメソッドBlog
– Twilioシリーズ (中村 修太 さん) http://dev.classmethod.jp/series/クラウド電話api-twilio/ • koeだめ - 「ぼくもTwilioで爆速な電話ツールをつくりたい」->通知ツールつくった \(^o^)/ http://d.hatena.ne.jp/bash0C7/20130420/1366443003