2017-11-30
Amazon SNSのSMSをPHPで送信してみる
Amazon SNSの「SNS」とは、「Simple Notification Service」の略で、直訳すると簡易通知サービスになります。スマホやMacのデスクトップのPUSH通知や、電子メールも通知の類と言えますが、今回はAmazon SNSで携帯電話番号さえわかれば通知を送れる「SMS(ショートメッセージサービス)」を送信してみたいと思います。
まずは、送信に必要な「アクセスキー(アクセスキーIDとシークレットアクセスキー)」を発行します。
アクセスキー発行方法
管理コンソール右上のアカウント名 > セキュリティ認証情報 > アクセスキー(アクセスキーIDとシークレットアクセスキー)> 新しいアクセスキーの作成で簡単に作成できます。シークレットアクセスキーは二度と画面に表示されませんので、アクセスキーを表示してコピーするかキーファイルをダウンロードしてください。
AWS SDK for PHP
PHPでAWSを利用する場合には、「AWS SDK for PHP」が必要になりますので、下記ページからダウンロードします。今回はPhar形式を利用して説明します。
aws.pharのダウンロードページ
http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html
PHPソース
<?php
require './aws.phar';
use Aws\Sns\SnsClient;
$key = 'アクセスキーID';
$secret = 'シークレットアクセスキー';
$phone_number = '携帯電話番号';
$message = '送信メッセージ';
$client = new SnsClient([
'region' => 'ap-northeast-1',
'version' => 'latest',
'credentials' => [
'key' => $key,
'secret' => $secret,
]
]);
$result = $client->publish([
'PhoneNumber' => $phone_number,
'Message' => $message
]);
アクセスキーIDとシークレットアクセスキーそのままで良いのですが、携帯電話番号は「E.164」形式にする必要があります。例えば、日本での電話番号が03-1234-5678の場合、「+81 312345678」になります。上記ソースファイル実行するだけでSMSの送信が可能です。
料金について
SMSは、インターネット回線ではなく電話回線を使って送信します。下記ページに料金表がありますのでご確認ください。1通0.03〜0.08ドル(3〜9円)ぐらいでしょうか。
SMS料金ページ
https://aws.amazon.com/jp/sns/sms-pricing/
日本の各キャリアの料金を確認するには、Enter your country:にJapanを入力すると表示されます。「Transactional SMS」は2段階認証など即座に通知が必要なものに利用し、「Promotional SMS」は広告などの通知に利用するもののようです。こういった設定も下記のように変更可能なようですが、DefaultSMSTypeの変更は試していなく、SenderIDは今現在の日本では変更はできないようですが・・・
//publishの前に
$client->setSMSAttributes([
'attributes' => [
'DefaultSMSType' => 'Transactional',
'DefaultSenderID' => 'CyberBrain',
]
]);
setSMSAttributes
http://docs.aws.amazon.com/ja_jp/sns/latest/api/API_SetSMSAttributes.html
今回は以上です!