This post is Private. Only a writer or those who know its URL can access this post.
More than 1 year has passed since last update.

本日の資料

以下にアップされています(限定公開URL)
http://goo.gl/V3sfrx


ハンズオンの目的

Twilioのことをよく知ろう

  • Twilioとは
  • 管理コンソールの操作
  • TwiML/RestAPI
  • SMS
  • もくもくしよー!

プロモーションアカウントについて

  • トライアルアカウントではありません
  • 一定額のポイントがチャージされています
  • 利用規約に同意していただく必要があります
  • ハンズオン終了後も使い続けられます

自己紹介

髙橋克己(たかはしかつみ)

(株)KDDIウェブコミュニケーションズ
Twilio事業部 ソリューションアーキテクト

katsumi.takahashi@kddi-web.com

Twilioとは


Twilioの読み方

「トゥイリオ」と発音します。
「ツイリオ」←×
「トィリオ」←×
「ツイーリオ」←×
打ち方難しいので、Twilio(Tは大文字)で。

「とえりお」を早口でいうとネイティブ発音に近いらしいです。


Twilioの歴史

  • 2007年設立、2008年サービス開始
  • 全世界での開発者が100万人を突破(2016)
  • ニューヨーク証券取引所にIPO(2016/6/29) IPO_Jeff.jpg

Twilioの機能

  • Voice&Video
    音声通話&ビデオ通話

  • Messaging
    SMS、IP Messaging、Facebook Messanger等

  • Authentication
    Authy(二要素認証)


Twilioの事例紹介


Twilioの構成(Voice)

Twilioの構成 (1).png


Twilio for KWC


Twilioに必要な環境

Twilioに必要な環境.png


ネット回線

  • インターネット環境
  • 上りアクセス先
    https://api.twilio.com

  • 下りアクセス元
    AWSのすべてのIPアドレス範囲


公開サーバー

  • 外部からアクセスができること
  • 固定アドレス
  • HTTPもしくはHTTPS(推奨)
  • Basic認証設定可
  • フェイルオーバー利用可

プログラミング環境

  • TwilioからのHTTP/HTTPSリクエストを処理
  • Twilio RestAPIの実行
  • ヘルパーライブラリあり(後述)

クライアント

  • 電話機
  • VoIPクライアント(ブラウザ/iOS/Android)
  • VoIPクライアント用SDKあり

ブラウザチェックサイト


コンソール

console.png

ログイン後に、https://jp.twilio.com/console

実習(コンソールの基本操作)

https://twilio.kddi-web.com/login

  • 旧コンソールからの切り替え
  • 各種メニュー
  • ドキュメントの閲覧
  • 名前とメールアドレスを変更してみる

課金

  • 課金のしくみ
  • 支払い方法
  • 何に対して課金されるのか

課金の仕組み

  • ポイントを事前購入し、利用した分だけがそこから引かれていく。
  • 残ポイントはコンソールから確認可能。
  • ポイントがなくなってしまったアカウントはサスペンド。
  • ポイントを追加すればサスペンド解除。

支払い方法

  • カード(Visa/Master)、PayPalによる都度決済
  • オートチャージ設定も可能
  • バックアップ設定
  • 後払い(請求書払い)を希望する場合は営業に問い合わせ。

何に対して課金されるのか

  • 電話番号(月単位)
  • 通話料(通話終了時)
  • 着信料(通話終了時)
  • SMS送信(Twilio設備から送信された時)
  • SMS受信(Twilio設備に受信した時)
  • その他(録音、カンファレンスなど)

電話番号

  • 電話番号の購入
  • SMS送信用番号の購入
  • 電話番号のリリース
  • 検証済み電話番号

実習(電話番号の購入)

  • 電話番号を購入する
    • 050番号を購入する
    • USの番号を購入する

TwiML


TwiMLとは

  • 「トゥイムル」と発音します
  • 表記方法は、「TwiML」です(wiだけ小文字)
  • Twilio独自のXMLファイル
  • Twilioからのリクエストに対して返却します
  • Twilioに実行して欲しい動作を記述します

TwiMLのしくみ

Voice着信の例

TwiMLのしくみ.png


TwiMLのサンプル

スクリーンショット 2016-06-25 12.22.43.png

  • 先頭行で、XMLファイルであることを規定
  • <Response>と</Response>で囲む
  • <Say>や<Record>は動詞
  • voiceやmaxLengthは属性
  • 大文字、小文字に注意
  • ヘルパーライブラリに頼ると便利

TwiML動詞一覧

スクリーンショット 2016-06-25 12.29.53.png


TwiML Apps

  • TwiMLを返却するURLに名前を付けたもの
  • 番号ごとにURLを指定するより、メンテナンスビリティが向上する
  • VoIPクライアントから発信するときにも利用
  • コンソールの電話番号→ツール or SMS→ツール
  • 発信テストが可能

TwiML bins

  • Webサーバーを用意しないでTwiMLを返すことができる
  • TwiMLのテストを行う(文法チェックあり)
  • アカウントごとに管理されている
  • TwiML binsは無料
  • URLも生成されるので、TwiML Appsと連携可

着信時の動作について


電話番号の設定

電話番号の設定.png


CONFIGURE WITH

  • Webhooks/TwiML
    URLで指定する(Webhooks)か、TwiML binsから選択する

  • TwiML Apps
    あらかじめ作成しておいたTwiML Appsから選択する

  • SIP Trunk
    接続させたいSIP Trunkを指定する


実習(着信時の動作)

  • 応答メッセージを流す
  • 電話を転送する
  • 通話を録音する
  • ログを確認する

TwiMLを作成しよう

TwiML
<Response>
  <Say language='ja-JP' voice='alice'>
  この電話を転送しますので、しばらくお待ち下さい</Say>
  <Dial callerId='購入した番号' 
     record='record-from-ringing'>
    <Number>かけたい番号</Number>
  </Dial>
</Response>

TwiMLのドキュメント


転送(TwiMLで発信)の仕様


<Dial>動詞で指定できる名詞

  • <Client>: VoIPクライアントを呼び出す
  • <Conference>: カンファレンスに参加させる
  • <Number>: PSTN経由で発信する
  • <Queue>: キューに滞留した呼を取り出す
  • <Sip>: SIPクライアントを呼び出す

<Dial>動詞のパラメータ

  • action: 通話が終了したときに呼び出されるWebhook
  • method: POST/GET
  • timeout: 最大呼び出し秒数(Max60秒、初期値30秒)
  • hangupOnStar: アスタリスクで通話終了
  • timeLimit: 最大通話秒数(Max14400、4時間)
  • callerId: Twilioで購入した番号(必須)
  • record: 通話録音するかどうか
  • trim: 録音データの先頭と最後の無音を削除するか

<Number>名詞のパラメータ

  • sendDigits: 応答後に送信するDTMF信号

  • url: 応答直後に実行するTwiMLを返すWebhook

  • method: urlに対するPOST/GET

  • statusCallback: イベント発生時のWebhook
    statusCallbackについては、Vol.2で詳しくやります。

  • statusCallbackEvent: 呼の状態を受け取るイベント

  • statusCallbackMethod: statusCallbackのPOST/GET


Twilio RestAPI


Twilio RestAPIとは

  • Twilioの機能を外部から呼び出すRest API
  • VoiceやSMSの機能の他、電話番号の購入、アカウント操作や、ログの管理も可能
  • HTTPS+Basic認証(AccountSidとAuthToken)
  • ヘルパーライブラリが用意されている

(参考) Rest API

  • Webサービスを外部から呼び出すための規約
  • Webhookとも呼ばれる
  • HTTPプロトコルベース
  • GET/POST/PUT/DELETE

Twilio RestAPIの例(Curl)

  • 電話発信の例
curl
curl -XPOST \
https://api.twilio.com/2010-04-01/Accounts/ACXXXX/Calls.json \
-d "Url=http://demo.twilio.com/docs/voice.xml" \
-d "To=%2B8150XXXXXXXX" \
-d "From=%2B8150XXXXXXXX" \
-u 'ACXXXX:your_auth_token'

ヘルパーライブラリ

  • Server Side SDK
    C#/.NET, Java, Node, PHP, Python, Ruby, Salesforce

  • VoIPクライアント用SDK
    JavaScript SDK, iOS SDK, Android SDK


ヘルパーライブラリの例(PHP)

ヘルパーライブラリの例(PHP).png


TwiMLとRestAPIの使い分け

  • TwiMLの<Dial>動詞と、RestAPIのコールの生成(発信)はどう違うのか
  • すでに生成された呼に対してはTwiML
  • 呼を生成するにはRest API

呼(コール)とは何か

  • 通話の単位
  • 状態を持つ(Queued → Initiated → Ringing → In-progress → Completed)
  • Twilioはコール単位にログが記録される

コール(転送)の例

コールの例.png


Voiceサービスの制限事項

  • 050番号からは、0AB0、1XY、#ABCD、0120、0800には発信できません(177は市外局番を付与すればOK)
  • 0120、0800番号からは、0AB0、1XY、#ABCDには発信できません(177は市外局番を付与すればOK)
  • 1秒間に1発信の制限があります
  • 非通知着信は266696687が表示されます

SMS


Twilio for KWCにおけるSMS

  • 050番号ではSMSサービスを提供していません(国の仕様)
  • 050番号以外のSMSが送信できる番号を購入してください
  • 国際SMSを利用するため、複数のアグリゲーターを経由します
  • 1通/秒/番号の送信制限があります
  • 到達率は70%(2016年7月現在)
  • 送信料、着信料が必要です(140文字単位)
  • 送信者IDに、電話番号以外は指定できません

コパイロットSMS

  • 通常のSMSを包含した、より高機能なメッセージングサービス

  • 送信時に、From番号ではなく、Sidを指定する

  • 以下の機能を用意(StickySender、Scaler以外は国内未対応)
    StickySender/Alpha Sender Id/Scaler/Geomatch/Shortcode-reroute/MMS Converter


Rest APIを使ったSMS送信の例

スクリーンショット 2016-06-27 00.43.23.png


実習(SMSの送信)

  • SMSを送信するTwiMLを作成
  • 電話番号の着信時設定
TwiML
<Response>
  <Say language='ja-JP' voice='alice'>
  お電話ありがとうございます。ショートメールを送信します。</Say>
  <Sms from='購入したUSの番号'>Welcome CPI MEGA MIX !\n
http://www.shared-blog.kddi-web.com/mega-mix2016/
  </Sms>
</Response>