AWS SDK for PHP バージョン 3 を使用して Amazon SNS で SMS メッセージを送信する - AWS SDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for PHP バージョン 3 を使用して Amazon SNS で SMS メッセージを送信する

Amazon Simple Notification Service (Amazon SNS) を使用して、SMS 対応デバイスにテキストメッセージ (SMS メッセージ) を送信できます。電話番号をトピックにサブスクライブし、トピックへメッセージを送信することにより、電話番号へメッセージを直接送信または、一度に複数の電話番号にメッセージを送信できます。

Amazon SNS を使用して、配信の最適化の方法 (コストに対してか、確実な配信に対してか)、毎月の使用量の上限、メッセージ配信がログに記録される方法、SMS の毎日の使用状況レポートをサブスクライブするかどうかなど、SMS メッセージのプリファレンスを指定します。これらのプリファレンスが取得され、Amazon SNS の SMS 属性として設定されます。

SMS メッセージを送信するときは、E.164 形式を使用して電話番号を指定します。E.164 は、国際的な音声通信に使用される電話番号の構造の規格です。この形式に従う電話番号には最大 15 桁を設定でき、プラス記号 (+) および国コードのプレフィックスがついています。たとえば、E.164 形式の米国の電話番号は +1001XXX5550100 として表示されます。

以下の例では、次の方法を示しています。

  • GetSMSAttributes を使用して、アカウントから SMS メッセージを送信するためのデフォルト設定を取得する。

  • SetSMSAttributes を使用して、アカウントから SMS メッセージを送信するためのデフォルト設定を更新する。

  • CheckIfPhoneNumberISOptedOut を使用して、指定された電話番号の所有者がアカウントからの SMS メッセージの受信をオプトアウトしているかどうかを調べる。

  • CheckIfPhoneNumberISOptedOut を使用して、所有者がアカウントからの SMS メッセージの受信をオプトアウトしている電話番号をリストする。

  • Publish を使用して、電話番号に直接テキストメッセージ (SMS) を送信する。

Amazon SNS の使用の詳細については、「受信者が携帯電話番号の場合のユーザー通知に Amazon SNS を使用する (SMS 送信)」を参照してください。

のすべてのサンプルコード AWS SDK for PHP はGitHub で入手できます

認証情報

サンプルコードを実行する前に、「」の説明に従って AWS 認証情報を設定しますAWS SDK for PHP バージョン 3 AWS を使用した での認証。次に AWS SDK for PHP、「」の説明に従って をインポートしますAWS SDK for PHP バージョン 3 のインストール

SMS 属性の取得

SMS メッセージのデフォルト設定を取得するには、GetSMSAttributes オペレーションを使用します。

この例では、DefaultSMSType 属性を取得します。この属性は、SMS メッセージが Promotional (コストが最も低くなるようにメッセージ配信が最適化されます) として送信されるのか、Transactional (信頼性が最も高くなるようにメッセージ配信が最適化されます) として送信されるのかを制御します。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient;

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); try { $result = $SnSclient->getSMSAttributes([ 'attributes' => ['DefaultSMSType'], ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

SMS 属性の設定

SMS メッセージのデフォルト設定を更新するには、SetSMSAttributes オペレーションを使用します。

この例では、DefaultSMSType 属性を Transactional に設定します。これにより、信頼性が最も高くなるようにメッセージ配信が最適化されます。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient;

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); try { $result = $SnSclient->SetSMSAttributes([ 'attributes' => [ 'DefaultSMSType' => 'Transactional', ], ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

電話番号がオプトアウトしているかどうかを確認する

指定された電話番号の所有者がアカウントからの SMS メッセージの受信をオプトアウトしているかどうかを調べるには、CheckIfPhoneNumberIsOptedOut オペレーションを使用します。

この例では、電話番号は E.164 形式 (国際的な音声通信の規格) です。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient;

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $phone = '+1XXX5550100'; try { $result = $SnSclient->checkIfPhoneNumberIsOptedOut([ 'phoneNumber' => $phone, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

オプトアウトした電話番号を一覧表示する

所有者がアカウントからの SMS メッセージの受信をオプトアウトしている電話番号のリストを取得するには、ListPhoneNumbersOptedOut オペレーションを使用します。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient;

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); try { $result = $SnSclient->listPhoneNumbersOptedOut(); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

テキストメッセージ (SMS メッセージ) に発行する

電話番号に直接テキストメッセージ (SMS メッセージ) を配信するには、Publish オペレーションを使用します。

この例では、電話番号は E.164 形式 (国際的な音声通信の規格) です。

SMS メッセージには最大 140 バイト含めることができます。1 回の SMS 発行アクションのサイズ制限は、1,600 バイトです。

SMS メッセージの送信の詳細については、「SMS メッセージの送信」を参照してください。

インポート

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient;

サンプルコード

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $message = 'This message is sent from a Amazon SNS code sample.'; $phone = '+1XXX5550100'; try { $result = $SnSclient->publish([ 'Message' => $message, 'PhoneNumber' => $phone, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }