本日の資料
以下にアップされています(限定公開URL)
http://goo.gl/bns1m5
Vol.1の目的
Twilioのことをよく知ろう
- Twilioの仕組み
- 管理コンソールの操作
- アカウント
- TwiML/RestAPI
- SMS
参考
- Vol.2 音声通話のノウハウを知ろう
- Vol.3 TwilioベースにクラウドPBXを作ろう
プロモーションアカウントについて
- トライアルアカウントではありません
- 一定額のポイントがチャージされています
- 利用規約に同意していただく必要があります
- ハンズオン終了後も使い続けられます
- Vol.2やvol.3でも引き続き使います
アジェンダ
- Twilioとは
- TwiML
- RestAPI
- Messagingサービス
自己紹介
髙橋克己(たかはしかつみ)
(株)KDDIウェブコミュニケーションズ
Twilio事業部 ソリューションアーキテクト
katsumi.takahashi@kddi-web.com
Twilioとは
Twilioの読み方
「トゥイリオ」と発音します。
「ツイリオ」←×
「トィリオ」←×
「ツイーリオ」←×
打ち方難しいので、Twilio(Tは大文字)で。
「とえりお」を早口でいうとネイティブ発音に近いらしいです。
Twilioの歴史
Twilioの機能
Voice&Video
音声通話&ビデオ通話Messaging
SMS、IP Messaging、Facebook Messanger等Authentication
Authy(二要素認証)
Twilioの構成(Voice)
Twilio for KWC
- 日本独自のアカウント管理
- 050/0120/0800番号の提供
- 通信経路の最適化
- 日本語によるサポートの提供
- ログイン画面の右上にKDDIのロゴ
Twilioに必要な環境
ネット回線
- インターネット環境
上りアクセス先
https://api.twilio.com
古いルート証明書はアクセス不可下りアクセス元
AWSのすべてのIPアドレス範囲
公開サーバー
- 外部からアクセスができること
- 固定アドレス
- HTTPもしくはHTTPS(推奨)
- Basic認証設定可(詳しくはハンズオンVol.3)
- フェイルオーバー利用可
プログラミング環境
- TwilioからのHTTP/HTTPSリクエストを処理
- Twilio RestAPIの実行
- ヘルパーライブラリあり(後述)
クライアント
- 電話機
- VoIPクライアント(ブラウザ/iOS/Android)
- VoIPクライアント用SDKあり
コンソール
ログイン後に、https://jp.twilio.com/console
実習(コンソールの基本操作)
- 新コンソールと旧コンソールの違い
- 各種メニュー
- ドキュメントの閲覧
アカウント
アカウントの種類
マスターアカウント
メールアドレスで紐づくログイン用アカウントトライアルアカウント
サインアップで作成される一定ポイントが付与された制限付きアカウント親アカウント
トライアルアカウントに対して支払情報を登録したアカウントサブアカウント
課金以外は完全に別に管理されるアカウントユーザー
別の親アカウントを招待することで作成されるユーザ
アカウントの概念図
サブアカウントを使うケース
システムを完全に分離して開発したい場合で、課金だけは一括で行うなど。
親アカウントや別のサブアカウントで購入した電話番号を使うことはできない。
サブアカウントごとにAccountSIDやTokenが管理される。
ユーザーを使うケース
受託開発などで、発注元にアカウントを作ってもらい、ベンダーが開発者として参加するケースなど。
メインアカウントが支払いを行う。
ベンダーには不要なメニューは見せなくて良い。
別の親アカウントを作成ケース
支払いだけを分けて管理したいケースなど。
ログインのID(メールアドレス)は共通。
支払情報は親アカウントごとに異なる。
実習(アカウント操作)
- 名前とメールアドレスを変更
- サブアカウントの追加
- アカウントの切り替え
課金
- 課金のしくみ
- 支払い方法
- 何に対して課金されるのか
課金の仕組み
- ポイントを事前購入し、利用した分だけがそこから引かれていく。
- 残ポイントはコンソールから確認可能。
- ポイントがなくなってしまったアカウントはサスペンド。
- ポイントを追加すればサスペンド解除。
支払い方法
- カード(Visa/Master)、PayPalによる都度決済
- オートチャージ設定も可能
- バックアップ設定
- 後払い(請求書払い)を希望する場合は営業に問い合わせ。
何に対して課金されるのか
- 電話番号(月単位)
- 通話料(通話終了時)
- 着信料(通話終了時)
- SMS送信(Twilio設備から送信された時)
- SMS受信(Twilio設備に受信した時)
- その他(録音、カンファレンスなど)
電話番号
- 電話番号の購入
- SMS送信用番号の購入
- 電話番号のリリース
- 検証済み電話番号
実習(電話番号の購入)
- 電話番号を購入する
TwiML
TwiMLとは
- 「トゥイムル」と発音します
- 表記方法は、「TwiML」です(wiだけ小文字)
- Twilio独自のXMLファイル
- Twilioからのリクエストに対して返却します
- Twilioに実行して欲しい動作を記述します
TwiMLのしくみ
Voice着信の例
TwiMLのサンプル
- 先頭行で、XMLファイルであることを規定
- <Response>と</Response>で囲む
- <Say>や<Record>は動詞
- voiceやmaxLengthは属性
- 大文字、小文字に注意
- ヘルパーライブラリに頼ると便利
TwiML動詞一覧
TwiML Apps
- TwiMLを返却するURLに名前を付けたもの
- 番号ごとにURLを指定するより、メンテナンスビリティが向上する
- VoIPクライアントから発信するときにも利用
- コンソールの電話番号→ツール or SMS→ツール
- 発信テストが可能
TwiML bins
- Webサーバーを用意しないでTwiMLを返すことができる
- TwiMLのテストを行う(文法チェックあり)
- アカウントごとに管理されている
- TwiML binsは無料
- URLも生成されるので、TwiML Appsと連携可
着信時の動作について
電話番号の設定
CONFIGURE WITH
Webhooks/TwiML
URLで指定する(Webhooks)か、TwiML binsから選択するTwiML Apps
あらかじめ作成しておいたTwiML Appsから選択するSIP Trunk
接続させたいSIP Trunkを指定する
実習:着信時の動作を設定しよう
- 応答メッセージを流す
- 電話を転送する
- 通話を録音する
- ログを確認する
TwiMLを作成しよう
<Response>
<Say language='ja-JP' voice='alice'>
この電話を転送しますので、しばらくお待ち下さい</Say>
<Dial callerId='購入した番号'
record='record-from-ringing'>
<Number>かけたい番号</Number>
</Dial>
</Response>
転送(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)
- リソース名: 2010-04-01/Accounts
- メソッド: GET
- パラメータ: -dで指定
- 認証: -uで指定
ヘルパーライブラリ
Server Side SDK
C#/.NET, Java, Node, PHP, Python, Ruby, SalesforceVoIPクライアント用SDK
JavaScript SDK, iOS SDK, Android SDK
ヘルパーライブラリの例(PHP)
TwiMLとRestAPIの使い分け
- TwiMLの<Dial>動詞と、RestAPIのコールの生成(発信)はどう違うのか
- すでに生成された呼に対してはTwiML
- 呼を生成するにはRest API
呼(コール)とは何か
- 通話の単位
- 状態を持つ(Queued → Initiated → Ringing → In-progress → Completed)
- Twilioはコール単位にログが記録される
コール(転送)の例
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送信の例
事後アンケート
お手数ですが、以下のURLよりアンケートにご協力ください。
https://goo.gl/OgVk6H