

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

# AWS SDK for PHP バージョン 3 による Amazon SNS での SMS メッセージの送信
<a name="sns-examples-sending-sms"></a>

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](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes) を使用して、アカウントから SMS メッセージを送信するためのデフォルト設定を取得する。
+ [SetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes) を使用して、アカウントから SMS メッセージを送信するためのデフォルト設定を更新する。
+ [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout) を使用して、指定された電話番号の所有者がアカウントからの SMS メッセージの受信をオプトアウトしているかどうかを調べる。
+ [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout) を使用して、所有者がアカウントからの SMS メッセージの受信をオプトアウトしている電話番号をリストする。
+ [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish) を使用して、電話番号に直接テキストメッセージ (SMS) を送信する。

Amazon SNS の使用の詳細については、「[受信者が携帯電話番号の場合のユーザー通知に Amazon SNS を使用する (SMS 送信)](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html)」を参照してください。

AWS SDK for PHP 用のすべてのサンプルコードは [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code) で入手できます。

## 認証情報
<a name="examplecredentials"></a>

サンプルコードを実行する前に、AWS の認証情報を設定します ([AWS SDK for PHP バージョン 3 AWS を使用した での認証](credentials.md) を参照)。AWS SDK for PHP からのインポート ([AWS SDK for PHP バージョン 3 のインストール](getting-started_installation.md) を参照)。

## SMS 属性の取得
<a name="get-sms-attributes"></a>

SMS メッセージのデフォルト設定を取得するには、[GetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html) オペレーションを使用します。

この例では、`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 属性の設定
<a name="set-sms-attributes"></a>

SMS メッセージのデフォルト設定を更新するには、[SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) オペレーションを使用します。

この例では、`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());
}
```

## 電話番号がオプトアウトしているかどうかを確認する
<a name="check-if-a-phone-number-has-opted-out"></a>

指定された電話番号の所有者がアカウントからの SMS メッセージの受信をオプトアウトしているかどうかを調べるには、[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html) オペレーションを使用します。

この例では、電話番号は 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());
}
```

## オプトアウトした電話番号を一覧表示する
<a name="list-opted-out-phone-numbers"></a>

所有者がアカウントからの SMS メッセージの受信をオプトアウトしている電話番号のリストを取得するには、[ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html) オペレーションを使用します。

 **インポート**。

```
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 メッセージ) に発行する
<a name="publish-to-a-text-message-sms-message"></a>

電話番号に直接テキストメッセージ (SMS メッセージ) を配信するには、[Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) オペレーションを使用します。

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

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

SMS メッセージの送信の詳細については、「[SMS メッセージの送信](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html)」を参照してください。

 **インポート**。

```
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());
}
```