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の配列で特定の値が入っていれば それを破棄したいということがあった。 ・u ...
-
-
PHPでファイルを添付してメールを送信する方法(PHPMailer)
PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...
-
-
Codeigniter4で独自・外部ライブラリの作成と呼び出し方法
Codeigniter4で独自ライブラリを作成し、コントローラー側で呼び出したい ...
-
-
メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信
メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...
-
-
PHPにて「php-ulid」ライブラリを用いてULIDを生成する方法
先日MySQLにてUUIDを発行するメモを書いたがUUID v1だと生成時間によ ...