Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Twilio入門

 Twilio入門

NSEG #40 で発表した時のスライドです。

thinkAmi

June 08, 2013
Tweet

More Decks by thinkAmi

Other Decks in Programming

Transcript

  1. Twilio 入門
    NSEG #40 2013.06.08
    @thinkAmi

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 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

    View Slide

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

    View Slide

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

    View Slide

  12. プログラムからTwilioを使う

    View Slide

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

    View Slide

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

    View Slide

  15. TwiMLの例
     

    View Slide

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

    View Slide

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



    Hello World


    View Slide

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

    View Slide

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



    ようこそ、松本へ


    View Slide

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

    View Slide

  21. メニューの選択




    再生は1を、録音は2を押してください



    TwiMLはもう省略してもいいですよね...

    View Slide

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

    View Slide

  23. 録音内容の再生
    Twilio::TwiML::Response.new do |r|
    r.Play()
    end.text

    View Slide

  24. 指定番号宛への電話発信
    client = Twilio::REST::Client.new ,

    client.account.calls.create(
    from: ,
    to: ,
    url:
    )

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. デモ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide