勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

VONAGEとPHPでショートメッセージ(SMS)を送信する方法

  PHP

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でURLを解析してクエリ(GETパラメータ)を抽出する方法

formからGETで送信したクエリ(パラメータ)を、受信した側で抽出し、キーと値 ...

PHPページングテンプレ

使いやすいのがあったのでメモ。   $page            ...

PHPのswitch文で「>」「<」等、比較演算子の使用について

switch文は指定の変数が、特定の値もしくは文字列だった場合のみに使うようなも ...

PHPでパスワードを保存する際に暗号(パスワードハッシュ)化させ、ログイン認証時に用いる方法

PHPでログイン認証を組み込む際に今までは特に暗号化は行っていなかった。と言うの ...

PHPでCookie保存時にSameSite属性を設定する方法

あるシステムのセキュリティ対策としてCookie保存時にSameSite属性をS ...