概要
SMS送信サービスのMediaSMSが提供するSMS送信APIを用いて、PHPから特定の電話番号に対してショートメッセージを送信する。
本記事では、MediaSMSの様々な機能を使う段階までは行かず、特定の電話番号に特定のショートメッセージを送信する最小構成の実装を行う。
前提
以下の環境で動作確認済み
要素 | バージョン |
---|---|
CentOS | 7.4 |
PHP | 5.4.16 |
なお、MediaSMS全般についての紹介と、MediaSMSの利用開始までの準備は割愛する。
ソースコード
<?php class MediaSMS { const API_END_POINT = 'https://***/api/'; private $user_name; private $password; // // MedisSMS用の認証情報を用いてオブジェクトを生成する // @params [String] user_name MedisSMS用のユーザ名 // @@arams [String] password MedisSMS用のパスワード // function __construct($user_name, $password) { $this->user_name = $user_name; $this->password = $password; } // // 指定した電話番号に対してメッセージを送信する // @params [String] $mobile_number 宛先電話番号 // @params [String] $sms_text メッセージボディ // @return [True] 送信成功 // @return [False] 送信失敗 // public function send($mobile_number, $sms_text){ $context = $this->generate_get_stream_context(); $url = $this->generate_get_request_url($mobile_number, $sms_text); $result = file_get_contents($url, false, $context); return $result == 200; } // // MediaSMS認証用のリクエストヘッダーを生成する // @return [Resource] リクエストヘッダーを含んだストリームコンテキスト // private function generate_get_stream_context() { $stream_context_option = [ 'http' => [ 'method' => 'GET', 'header' => 'Authorization: Basic ' . base64_encode($this->user_name . ':' . $this->password) ] ]; return stream_context_create($stream_context_option); } // // エンドポイントとGETパラメータを結合してURLを生成する // @params [String] $mobile_number 宛先電話番号 // @params [String] $sms_text メッセージボディ // @return [String] パラメータが付与されたURL // private function generate_get_request_url($mobile_number, $sms_text) { $get_params = [ 'mobilenumber' => $mobile_number, 'smstext' => $sms_text, ]; return self::API_END_POINT . '?' . http_build_query($get_params); } }
実行結果
以下のように実行する
$ms = new MediaSMS('user_id', 'password'); $ms->send('012345678901', 'hogee'); $ms->send('012345678901', 'おっけー!'); $ms->send('012345678901', 'もういっかい');