Memo/twilio

https://dexlab.net:443/pukiwiki/index.php?Memo/twilio
 

twilio: APIでSMS/電話/ビデオ等を管理

  • https://twilio.kddi-web.com/
    • KDDIコミュニケーションが代理店になっている。
    • こちらでアカウントと取ると、本家からログインできない。

API

認証方法が複数ある:

  • API Keys
    • ACCOUNT SID, AUTH TOKEN, API SIDで認証
    • 複数発行できる。
    • 権限設定ができる。(standard, masterしかないが)
    • 用途毎に複数発行できるため、更新/不正利用/流出時のリスクが低いので良さそう。
  • General Settings
    • ACCOUNT SID, AUTH TOKEN で認証。
    • LIVEとTEST用がある。
    • root アクセスキーであり、一つしかもてない?
    • 権限の設定ができない
    • 同じキーを複数の用途で使い回すと、更新/不正利用/流出時のリスクが高いので

エラー処理

エラーの時は .status があるので、エラー時だけjsonを表示したい場合。

cat error.json | jq -r "select(.status!=null) | @text"

{"code":20003,"detail":"Your AccountSid or AuthToken was incorrect.","message":"Authentication Error - No password provided","more_info":"https://www.twilio.com/docs/errors/20003","status":401}

Usage:

  • REST API: 使用状況記録 (Usage Records
    • レスポンスフォーマット: XML, JSON, CSV, HTML他 代替表現
    • timezoneはGMT固定
    • jsonで取得できるので、jq等で整形可能
    • 複数日付の場合、降順で取得。
    • PageSizeで1ページあたりのリソース数を変更可能。default:50, max:1000

例: 当日のsmsの使用量を取得

account_sid=AC****
api_sid=SK****
category=sms # sms,calls,totalprice
date=$(date +%Y-%m-%d)
read -sp "apikey: " apikey

curl -s -G https://api.twilio.com/2010-04-01/Accounts/$account_sid/Usage/Records/Daily.json \
    -d "Category=$category" \
    -d "StartDate=$date" \
    -d "EndDate=$date" \
    -u "$api_sid:$apikey" > Daily.$date.json

Read multiple UsageRecord resources

  • Categoryを指定しない場合、sms-inbound, sms-outboundのように分かれて出力される。smsを指定すればinbound/outbound合計を取得できる
  • 例: 当日の全カテゴリを取得
    curl -s -G https://api.twilio.com/2010-04-01/Accounts/$account_sid/Usage/Records.json \
        -d "StartDate=$date" \
        -d "EndDate=$date" \
        -u "$api_sid:$apikey" > Records.$date.json
    
    # jqで、全カテゴリとCountのみ取得
    cat Records.$date.json | jq '.usage_records[] | [.category, .count]' | less

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-01-06 (月) 14:49:00 (146d)