LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

Twilioハンズオン&もくもく会

Last updated at Posted at 2016-07-23
1 / 56

本日の資料

以下にアップされています(限定公開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

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

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

課金

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

課金の仕組み

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

支払い方法

  • カード(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>
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up