curl で SMS 送信
こんにちは。KDDI ウェブコミュニケーションズ(KWC)の小原です。
1992年12月3日に世界ではじめて SMS が送信されました。そのメッセージは Merry Christmas でした。その日、Vodafone のオフィスでクリスマスパーティーをしていたからだそうです。
この12月3日の Vonage Advent Calendar 2024 の記事では curl を使って SMS 送信します。障害通知やリマインダなど、いろいろと活用できると思います。
curl による完全な例は下記です。Windows ユーザは curl の注意点をご参照ください。
curl -X POST https://rest.nexmo.com/sms/json \
-d "from=KWCPLUS" \
-d "to=8160XXXXYYYY" \
-d "text=SMS本文は660文字まで書くことができます" \
-d "type=unicode" \
-d "api_key=$VONAGE_API_KEY" \
-d "api_secret=$VONAGE_API_SECRET"
from と to は見慣れないかもしれません。後ほどご案内します。
api_key と api_secret は Vonage(ボネージ)に契約することで発行されます。
Vonage とは
Vonage は米国ニュージャージー州に本社を置く CPaaS(Communication Platform as a Service)企業です。現在はスウェーデンの大手通信機器会社エリクソンの傘下です。
2024年2月14日より、弊社 KWC が Vonage の再販事業を開始しました。
契約が完了すると API Key と API Secret が発行されます。
仕様
従量課金のため送信しなければ 0 円です。
項目 | 概要 |
---|---|
初期費用 | 0 円 |
月額費用 | 0 円 |
発信料 | 70 文字あたり 11 円。改行も 1 文字換算 |
最大文字数 | 660 文字 |
秒間送信数 | 30 通 |
From | Alphanumeric Sender ID(後述) |
To | E.164/MSISDN(後述) |
From
From には 3 ~ 11 文字の大小英数字、スペースが利用できます(Alphanumeric Sender ID より)。
数字のみの利用はできないため、電話番号は指定できません。
例
- SMS Test
- DiskUsage80
To
To は 8180XXXXYYYY の形式(E.164/MSISDN)にします。
電話番号の先頭の 0 を外し、先頭に国番号を追加します。日本の国番号は 81 です。
たとえば電話番号が 080-XXXX-YYYY であれば 8180XXXXYYYY になります。
送信
実際に送信してみましょう。
to と api_key, api_secret を設定すれば送信可能です。届きましたか?
curl -X POST https://rest.nexmo.com/sms/json \
-d "from=KWCPLUS" \
-d "to=8160XXXXYYYY" \
-d "text=送信成功おめでとうございます" \
-d "type=unicode" \
-d "api_key=$VONAGE_API_KEY" \
-d "api_secret=$VONAGE_API_SECRET"
複雑な本文の送信
SMS の本文が複数行あったり、シェルのエスケープが必要な場合はファイルから読み込むと便利です。
送信したい内容を body.txt に保存します。
★
****
**o**
****x**
**o******
********x***
{||}
{||}
curl の --data-urlencode の @filename を利用して body.txt を読み込みます。
curl -X POST https://rest.nexmo.com/sms/json \
-d "from=KWCPLUS" \
-d "to=8160XXXXYYYY" \
--data-urlencode "text@body.txt" \
-d "type=unicode" \
-d "api_key=$VONAGE_API_KEY" \
-d "api_secret=$VONAGE_API_SECRET"
ハッピーホリデー!
さいごに
SMS のより詳細や、プログラムを利用した方法、届かなかった場合のトラブルシューティングは Vonage SMS ガイド をご参照ください。
Windows で curl を使う
Windows ユーザは WSL をインストールすることで、記事にある内容そのままで curl が利用できます。
もし Windows 10 build 17063 以降の cmd.exe で curl を利用する場合は下記の変更が必要になります。
UNIX | Windows | |
---|---|---|
行の継続 | \ | ^ |
環境変数 | $VAR | %VAR% |
SMS の本文は UTF-8 の必要があるため、--data-urlencode の @filename を利用し、UTF-8 で書かれたファイルを読み込む方法が便利です。
改行も一文字として換算します。70 文字単位で課金されるため、UTF-8/CRLF ではなく、UTF-8/LF をおすすめします。
curl -X POST https://rest.nexmo.com/sms/json ^
-d "from=KWCPLUS" ^
-d "to=8160XXXXYYYY" ^
--data-urlencode "text@body.txt" ^
-d "type=unicode" ^
-d "api_key=%VONAGE_API_KEY%" ^
-d "api_secret=%VONAGE_API_SECRET%"
Discussion