Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
11k
Djangoでのメール送信 - 設定からテストまで/djangocongress-jp-2019-talk
thinkami
1
13k
Django・WSGIミドルウェア入門/django-congress-jp-2018-talk
thinkami
4
5.3k
自分のための機械学習をしてみた話
thinkami
0
650
Xamarinで作るAndroid Wearアプリ
thinkami
1
2.7k
FluentMigratorでDBマイグレーション
thinkami
0
2.2k
デプロイボタンを使ってみた
thinkami
0
1.1k
Vagrant + Berkshelf でお手軽写経環境構築
thinkami
1
1.4k
おひとりさま環境でのChef-solo使用例
thinkami
2
1.5k
Other Decks in Programming
See All in Programming
認証・認可の基本を学ぼう前編
kouyuume
0
150
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
360
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
120
社内オペレーション改善のためのTypeScript / TSKaigi Hokuriku 2025
dachi023
1
420
Reactive Thinking with Signals and the new Resource API
manfredsteyer
PRO
0
160
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.2k
CSC305 Lecture 15
javiergs
PRO
0
240
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
180
AWS CDKの推しポイントN選
akihisaikeda
1
240
CSC305 Lecture 17
javiergs
PRO
0
270
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
380
React Native New Architecture 移行実践報告
taminif
1
130
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
527
40k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
4 Signs Your Business is Dying
shpigford
186
22k
Docker and Python
trallard
46
3.7k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Rails Girls Zürich Keynote
gr2m
95
14k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
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