[PHP] MediaSMSを用いてSMSを送信する

概要

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', 'もういっかい');

指定した電話番号の端末にSMSが届く

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です