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.4k
おひとりさま環境でのChef-solo使用例
thinkami
2
1.5k
Other Decks in Programming
See All in Programming
Honoアップデート 2025年夏
yusukebe
1
910
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
1.3k
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
120
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
200
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
3
260
AIでLINEスタンプを作ってみた
eycjur
1
220
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
120
旅行プランAIエージェント開発の裏側
ippo012
2
820
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
17
7.8k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
190
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
0
240
為你自己學 Python - 冷知識篇
eddie
1
340
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
KATA
mclloyd
32
14k
RailsConf 2023
tenderlove
30
1.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Practical Orchestrator
shlominoach
190
11k
A better future with KSS
kneath
239
17k
Bash Introduction
62gerente
615
210k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Side Projects
sachag
455
43k
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