VONAGEとPHPでショートメッセージ(SMS)を送信する方法
PHPからショートメッセージ(SMS)を送信してみたかった。また、SMS送信は基本的に他サービスとの連携且つ有料になると思うが、テスト段階なので無料で試してみたい。有名どころのTwilioは微妙に分かりにくかったが、VONAGEというサービスが分かりやすかったので実装方法を以下にメモ。
目次
VONAGE
公式サイト
https://www.vonagebusiness.jp/
事前準備
アカウント作成
以下ページ右上の「無料お試し」からアカウントを作成する。
https://www.vonagebusiness.jp/communications-apis/sms/
ライブラリのインストール
サーバにSSH接続し以下コマンドでライブラリをインストールする。
composer require vonage/client
PHP用のソースコードをコピーしておく
以下ページよりPHP用のソースコードをコピーしておく。
https://dashboard.nexmo.com/getting-started/sms
実装方法
ソースコード
<?php
require 'vendor/autoload.php';
$basic = new \Vonage\Client\Credentials\Basic("xxxxxxx", "xxxxxxx"); //「xxxxxxx」部分は管理画面からコピペすると記述されている筈
$client = new \Vonage\Client($basic);
define('BRAND_NAME', 'sendname1234'); //送信者名。恐らく日本語不可
$response = $client->sms()->send(
new \Vonage\SMS\Message\SMS("xxxxxxxx", BRAND_NAME, 'テストメッセージ', 'unicode') //「xxxxxxx」部分は管理画面からコピペすると記述されている筈。また、日本語メッセージを送信したい場合は第4引数が必要
);
$message = $response->current();
if ($message->getStatus() == 0) {
echo "The message was sent successfully\n";
} else {
echo "The message failed with status: " . $message->getStatus() . "\n";
}
解説等
以下ページよりPHP用のソースコードそのままだとBRAND_NAME(送信者名)が指定されていないためエラーが出る筈。そのためBRAND_NAMEを指定すること。尚、送信者名は日本語不可っぽい。
https://dashboard.nexmo.com/getting-started/sms
また、送信メッセージに日本語を指定する場合は「new \Vonage\SMS\Message\SMS」の第4引数にunicodeを指定する必要あり。未指定だと「????」のように文字化けする。
尚、無料版(トライアル版)だと最初に登録した電話番号にのみ送信でき、他の番号には送信できない。
その他
送信料について
以下ページによると1通あたり$0.08856かかるとのこと(送信料は定期的に更新される)。
https://www.vonagebusiness.jp/communications-apis/sms/pricing/
仮に1ドル140円とすると約12.4円 / 通になる。
所感
そもそもの送信料の相場を知らなかったが1通10円以上って結構するなぁと思った。
プレゼンとかする時用に価格感は覚えておきたいところ。
関連記事
-
-
PHPで配列のキーの最大値を取得する方法
配列のキーに整数値が入っていて、その中から最大値を取得したいケースがあった。調べ ...
-
-
PHPとPAY.JPを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法
先日PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する ...
-
-
PHPでの$_REQUESTは色々危険
extract($_REQUEST)はかなり怖いよ、という話が最近あった。 でき ...
-
-
PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法
PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...
-
-
PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法
PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...