AmazonSNSのSMS送信をLaravelでやってみた
基盤にAWSを使っているところでSMS送信をしなきゃいけなくなったのでやってみました。
AmazonSNS自体初でめちゃめちゃ時間かかったんですが、実装自体はすごく楽でした。。
前提
Laravel5.4
やってみる
-
AWS SDKのサービスプロバイダーを仕込む
やっぱりありますね。
https://github.com/aws/aws-sdk-php-laravel
インストールはREADME通りにやれば大丈夫なので割愛します。
私が一番悩んだのはアクセスキーとシークレットアクセスキーって何?!ってところでした笑
そもそもAWSもコンソールに入ってからGUIでちょこちょこと作業することはあったんですが、細かいこと全然わかってなかったもので。。
-
実装する
今回はPoC的なところだけ私の担当で、本実装は他の人だったので、コンソールコマンドで実装しました。
Console/Commands/SendSms.php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use AWS;
class SendSms extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:send:sms';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send SMS';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$sms = AWS::createClient('Sns');
// 細かい設定はpublishする前にsetSMSAttributesで設定する
// $sms->setSMSAttributes([
// 'DefaultSMSType' => 'Transactional',
// ...
// ..
// .
// ]);
$sms->publish([
'Message' => 'send sms test',
'PhoneNumber' => '+819000001234'
]);
}
}
一番注意しなければいけなのは SMSClient
ではなく SNSClient
を使うってとこですね笑
最初aws-sdkのサンプルでS3Client使ってるのをみて勝手に SMSClient
使おうって思ったんですが、中身が何もなく、他の方から そのSMS、ショートメッセージサービスじゃなくてAWS Server Migration Serviceじゃん
とご指摘を頂きようやく気付きました。。。
ここにJavaのサンプルがあって、ちゃんと SNSClient
使ってるのにちゃんと見なかった私が悪かったです。。。
なかなかドキュメントの場所がわからなかったんですが、ここにあります。
確認する
CLIから php artisan command:send:sms
を実行したら無事PhoneNumberにある電話番号にSMSが送信されました!
さいごに
AWS SDKのサービスプロバイダーを仕込む
やっぱりありますね。
https://github.com/aws/aws-sdk-php-laravel
インストールはREADME通りにやれば大丈夫なので割愛します。
私が一番悩んだのはアクセスキーとシークレットアクセスキーって何?!ってところでした笑
そもそもAWSもコンソールに入ってからGUIでちょこちょこと作業することはあったんですが、細かいこと全然わかってなかったもので。。
実装する
今回はPoC的なところだけ私の担当で、本実装は他の人だったので、コンソールコマンドで実装しました。
namespace App\Console\Commands;
use Illuminate\Console\Command;
use AWS;
class SendSms extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:send:sms';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send SMS';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$sms = AWS::createClient('Sns');
// 細かい設定はpublishする前にsetSMSAttributesで設定する
// $sms->setSMSAttributes([
// 'DefaultSMSType' => 'Transactional',
// ...
// ..
// .
// ]);
$sms->publish([
'Message' => 'send sms test',
'PhoneNumber' => '+819000001234'
]);
}
}
一番注意しなければいけなのは SMSClient
ではなく SNSClient
を使うってとこですね笑
最初aws-sdkのサンプルでS3Client使ってるのをみて勝手に SMSClient
使おうって思ったんですが、中身が何もなく、他の方から そのSMS、ショートメッセージサービスじゃなくてAWS Server Migration Serviceじゃん
とご指摘を頂きようやく気付きました。。。
ここにJavaのサンプルがあって、ちゃんと SNSClient
使ってるのにちゃんと見なかった私が悪かったです。。。
なかなかドキュメントの場所がわからなかったんですが、ここにあります。
確認する
CLIから php artisan command:send:sms
を実行したら無事PhoneNumberにある電話番号にSMSが送信されました!
まずはしっかりドキュメント読め
ってのは重々承知してたつもりなのに思い込みで突っ走ったのがいけなかったです。。
ただ、SMSClientって名前はちょっとなぁ。。。(言い訳)
Author And Source
この問題について(AmazonSNSのSMS送信をLaravelでやってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/TsukasaGR/items/322800196400b41e4534著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .