Slide 1

Slide 1 text

Twilio 入門 NSEG #40 2013.06.08 @thinkAmi

Slide 2

Slide 2 text

自己紹介 • @thinkAmi • hatenaID: thinkAmi • C#, Python, Ruby • 自社インフラ管理 • NSEG, GDG信州 • あとで資料&ソースコードは公開します

Slide 3

Slide 3 text

Twilio http://www.twilio.com/company/logos

Slide 4

Slide 4 text

Twilioとは • プログラムからAPI経由で電話を操作 – 電話への発信 – 電話からの着信 – 通話の録音 – SMSの送受信 など、いろいろ

Slide 5

Slide 5 text

日本では • KDDIウェブコミュニケーションズと提携 • 4/17、日本版提供のプレスリリース http://www.kddi-webcommunications.co.jp/news/press/20130417.html • 最近はいろいろなイベントを見かけます • クラスメソッドさんのBlogに連載あり – 実装の参考に。ありがとうございます。 http://dev.classmethod.jp/series/クラウド電話api-twilio/

Slide 6

Slide 6 text

事例 • アメリカ – 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/

Slide 7

Slide 7 text

身近な例 • CTIとかの構築をしたいけれど、コスト... – プログラムを組んで対応できるかも • 出張時に独自のモーニングコールが... – プログラムを組んで、Cronでコールすれば! • インフラ障害時に (ry

Slide 8

Slide 8 text

対応プログラム言語 • 公式ライブラリはいろいろとあり – PHP, Ruby, Python, .NET, Java, Salesforce/Force.com, Node.js • その他言語は、以下を参照 – http://www.twilio.com/docs/libraries

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

TwilioのTrialアカウント • いくつか制限がある – アカウントで認証した電話番号のみ、 Twilioへの発信や着信が可能 – 他にもいくつかある (How does Twilio’s Free Trial work?) http://www.twilio.com/help/faq/twilio-basics/how-does-twilios-free-trial-work

Slide 11

Slide 11 text

Trialアカウントの不明点 • Twilioへの費用は発生しないものの、 電話の着信・発信時の通話料は必要? • まだ明細確認してなかった...

Slide 12

Slide 12 text

プログラムからTwilioを使う

Slide 13

Slide 13 text

Twilioの設定 • Twilioの電話番号とTwiMLのURLを設定 Trialアカウントの場合は、手元の電話番号も認証しておく – TwiML: Twilioの動作を記載したXML

Slide 14

Slide 14 text

TwiML • 静的TwiMLを公開する – XMLを作るのが、めんどうくさい – あんまり自由ではない • プログラムでTwiMLを生成する – ライブラリを使えば、めんどくさくない • 例: Rubyであれば、twilio-ruby とか

Slide 15

Slide 15 text

TwiMLの例  

Slide 16

Slide 16 text

英語テキストの読み上げ • デフォルトは男性の声、女性の声もあり Twilio::TwiML::Response.new do |r| r.Say('Hello World', voice: 'man') end.text

Slide 17

Slide 17 text

英語テキストの読み上げ • デフォルトは男性の声、女性の声もあり Hello World

Slide 18

Slide 18 text

日本語テキストの読み上げ • 今のところ、女性の声でしか再生できず Twilio::TwiML::Response.new do |r| r.Say('ようこそ、松本へ', language: 'ja-jp') end.text

Slide 19

Slide 19 text

日本語テキストの読み上げ • 今のところ、女性の声でしか再生できず ようこそ、松本へ

Slide 20

Slide 20 text

メニューの選択 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

Slide 21

Slide 21 text

メニューの選択 再生は1を、録音は2を押してください TwiMLはもう省略してもいいですよね...

Slide 22

Slide 22 text

音声の録音 Twilio::TwiML::Response.new do |r| r.Record(action: '/fuga', method: 'GET', maxLength: 10 finishOnKey: '#') end.text

Slide 23

Slide 23 text

録音内容の再生 Twilio::TwiML::Response.new do |r| r.Play(<録音したデータのURL>) end.text

Slide 24

Slide 24 text

指定番号宛への電話発信 client = Twilio::REST::Client.new , client.account.calls.create( from: <発信番号(Twilioの電話番号を指定)>, to: <着信番号(Trialの場合は、認証した電話番号)>, url: <着信時に再生するTwiMLのURL> )

Slide 25

Slide 25 text

基本的な流れ • 携帯からTwilioへ電話をかける • Webから携帯へ電話をかける 携帯 Twilio TwiMLの ホスティング先    兼 Webの ホスティング先

Slide 26

Slide 26 text

基本的な流れ • 携帯からTwilioへ電話をかける ①Twilio番号へ発信 ②TwiMLを確認 ③TwiMLを返却 ④TwiMLに従い動作

Slide 27

Slide 27 text

基本的な流れ • Webから携帯へ電話をかける ②TwiMLを確認 ③TwiMLを返却 ④TwiMLに従い動作 ①Twilioへアクセス

Slide 28

Slide 28 text

デモ

Slide 29

Slide 29 text

デモ環境 • 米TwilioのTrialアカウント • Ruby + twilio-ruby • Heroku • Redis To Go (Herokuのアドオン版) – テキストデータの保存先として利用

Slide 30

Slide 30 text

デモ:テキストの読み上げ1 • Redis To Goへテキストを保存 • Webから携帯へ発信 • テキストの読み上げを確認

Slide 31

Slide 31 text

デモ:テキストの読み上げ2 • Redis To Goへテキストを保存 • 携帯からTwilioへ発信 • メニューから、テキスト再生を選択 • テキストの読み上げを確認

Slide 32

Slide 32 text

デモ:音声の記録と再生 • 携帯からTwilioへ発信 • メニューから、録音を選択 • 声を録音 • 直後に、内容を再生・確認

Slide 33

Slide 33 text

デモ:ブラウザから録音を再生 • 指定した録音内容を再生

Slide 34

Slide 34 text

デモ:ブラウザから録音を削除 • 指定した録音内容を削除

Slide 35

Slide 35 text

デモ:wavファイルの再生 • web上にあるwavファイルを再生する • どうせなので、話題のCeVIOと聴き比べ – CeVIO • http://cevio.jp/ • 参考 – 業務改善提案「さとうささらで弁当の注文忘れ防止」 – http://sho.tdiary.net/20130605.html#p01

Slide 36

Slide 36 text

やってみて • テキストをもとにTwilioが話す内容は、 意外と聞き取りやすい • 句読点で一呼吸置いてくれる • アルファベットはもちろん、ひらがな・ カタカナ・漢字も読み上げる – ただし、漢字の読み方は微妙なので、 ひらがなで設定したほうが確実

Slide 37

Slide 37 text

やってみて • 通話料のところが不明だけれど、 Trialアカウントでもいろいろと試せそう • URLへGET/POSTで発着信できるので、 いたずらとかアタックに気をつける – 実際、作成中に食らって電話が鳴り続いた...

Slide 38

Slide 38 text

参考文献 • 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