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
Twilio入門
Search
thinkAmi
June 08, 2013
Programming
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Twilio入門
NSEG #40 で発表した時のスライドです。
thinkAmi
June 08, 2013
More Decks by thinkAmi
See All by thinkAmi
知ろう!使おう!HDF5ファイル!/pycon-jp-2019-talk
thinkami
5
11k
Djangoでのメール送信 - 設定からテストまで/djangocongress-jp-2019-talk
thinkami
1
13k
Django・WSGIミドルウェア入門/django-congress-jp-2018-talk
thinkami
4
5.7k
自分のための機械学習をしてみた話
thinkami
0
690
Xamarinで作るAndroid Wearアプリ
thinkami
1
2.8k
FluentMigratorでDBマイグレーション
thinkami
0
2.3k
デプロイボタンを使ってみた
thinkami
0
1.1k
Vagrant + Berkshelf でお手軽写経環境構築
thinkami
1
1.4k
おひとりさま環境でのChef-solo使用例
thinkami
2
1.5k
Other Decks in Programming
See All in Programming
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
310
Crash Auto Pipelines
veronikapj
1
380
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
150
SODA - FACT BOOK(EN)
sodainc
1
210
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
16
8.7k
Event is what happens
moro
2
3.6k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
160
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
110
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
150
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
370
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
300
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Making Projects Easy
brettharned
120
6.8k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
290
WENDY [Excerpt]
tessaabrams
14
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
480
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
290
Statistics for Hackers
jakevdp
799
230k
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