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
9.7k
Djangoでのメール送信 - 設定からテストまで/djangocongress-jp-2019-talk
thinkami
1
12k
Django・WSGIミドルウェア入門/django-congress-jp-2018-talk
thinkami
4
5k
自分のための機械学習をしてみた話
thinkami
0
600
Xamarinで作るAndroid Wearアプリ
thinkami
1
2.6k
FluentMigratorでDBマイグレーション
thinkami
0
2.1k
デプロイボタンを使ってみた
thinkami
0
960
Vagrant + Berkshelf でお手軽写経環境構築
thinkami
1
1.3k
おひとりさま環境でのChef-solo使用例
thinkami
2
1.4k
Other Decks in Programming
See All in Programming
Beyond ORM
77web
2
210
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
Haze - Real time background blurring
chrisbanes
1
510
Recoilを剥がしている話
kirik
5
6.6k
talk-with-local-llm-with-web-streams-api
kbaba1001
0
180
ドメインイベント増えすぎ問題
h0r15h0
1
190
今年のアップデートで振り返るCDKセキュリティのシフトレフト/2024-cdk-security-shift-left
tomoki10
0
190
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
Security_for_introducing_eBPF
kentatada
0
110
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
120
Zoneless Testing
rainerhahnekamp
0
120
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Six Lessons from altMBA
skipperchong
27
3.5k
Thoughts on Productivity
jonyablonski
67
4.4k
Fireside Chat
paigeccino
34
3.1k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Music & Morning Musume
bryan
46
6.2k
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