最も簡単なTwilioの使い方

最も簡単なTwilioの使い方

Twilioとは?

下記を参照。

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

何ができるの?

この記事では「WindowsPowerShellからTwilioのWebAPIを使ってSMSを送信する」のみ。
正直Twilioの機能の1%も使っていないけれど、これだけでも便利。

用途は?

  • 最低限の通知を最小限の労力で実現したい。
  • メールでは確認が遅れる or 埋もれる場合にSMSで通知したい。
  • 自身の電話番号を隠しつつSMSで連絡したい(※送信のみの一方通行)。

等々。

実装は?

下記だけでSMSを通知可能(※Twilioのサンプルを丸パクリに近い形で参考にしている)。
実際の運用ではログ監視処理を別途動かして、エラーログを吐いていたらこのスクリプトを呼ぶ。

Send-Sms-FromTwilio.ps1

<#
.SYNOPSIS
Twilio REST APIを利用してSMSでメッセージを通知します。
<CommonParameters> はサポートしていません。

.DESCRIPTION
パラメータで受け取った宛先へSMSメッセージを通知します。
単純に通知するのみで、エラー制御や複数回通知の防止等は一切実施しません。    

事前にTwilioアカウント情報を環境変数へ設定しておく必要があります。
Twilioコンソールで情報を確認のうえ、
    TWILIO_ACCOUNT_SID に アカウントSID を
    TWILIO_AUTH_TOKEN に AuthToken を
    TWILIO_PHONE_NUMBER に Twilio電話番号 を
それぞれ設定してください。       
.EXAMPLE
./Send-Sms-FromTwilio.ps1 "+81XXXXXXXXXX" "○○エラー発生!! 至急対応してください!!"
.PARAMETER ToNumber
宛先電話番号(E.164形式)
.PARAMETER Msg
通知メッセージ本文
.LINK
https://twilio.kddi.web.com/
#>

# Twilioアカウント情報設定
$sid = $env:TWILIO_ACCOUNT_SID
$token = $env:TWILIO_AUTH_TOKEN
$from_number = $env:TWILIO_PHONE_NUMBER

# Twilio REST APIのURI
$uri = "https://api.twilio.com/2010-04-01/Accounts/$sid/Messages.json"
# 通知先電話番号
$to_number = $Args[0]

# 認証情報設定
$pass = $token | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($sid, $pass)

# 通知
$params = @{To = $to_number; From = $from_number; Body = $Args[1]}
Invoke-WebRequest $uri -Method Post -Credential $credential -Body $params -UseBasicParsing | ConvertFrom-Json | Select-Object sid, body

注意点は?

  • SMS通知1回につき数円かかる。何回も通知するようなケースにはそぐわない。1ヶ月に1回程度とか、そもそもエラーは起きない想定だが念のためとか、といったケースが合う。
  • 日本国内へSMS通知するためには、Twilioの電話番号はUSの番号が必要。
  • 送信先となる携帯電話側で国際SMSを拒否していると届かない。