

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

# Amazon SNS を使用して SMS メッセージを送信する
<a name="sms_sending-overview"></a>

このセクションでは、Amazon SNS を使用して SMS メッセージを送信する方法について説明します。ここでは、トピックへの発行、トピックへの電話番号のサブスクライブ、メッセージの属性の設定、携帯電話への直接発行などについて説明します。

## SMS メッセージを Amazon SNS トピックに発行する
<a name="sms_publish-to-topic"></a>

Amazon SNS トピックにこれらの電話番号を登録することで、1 通の SMS メッセージを一度に複数の電話番号に送信できます。SNS トピックは通信チャンネルで、受信者を追加し、すべての受信者にメッセージを発行できます。サブスクライバーは、サブスクリプションをキャンセルするか、サブスクライバーが AWS アカウントからの SMS メッセージの受信をオプトアウトするまで、トピックに発行されたすべてのメッセージを受信します。

### AWS コンソールを使用してトピックにメッセージを送信する
<a name="sms_publish-to-topic_console"></a>

**トピックを作成する**

SMS メッセージを送信するトピックがまだない場合は、次の手順を実行します。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[[SMS メッセージングをサポートしているリージョン]](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html) を選択します。

1. ナビゲーションペインで、[**トピック**] を選択してください。

1. [**トピック**] ページで、[**トピックの作成**] を選択します。

1. [**トピックの作成**] ページの [**詳細**] で、次の操作を行います。

   1. **[Type]** (タイプ) で、**[Standard]** (標準) を選択します。

   1. [**名前**] にトピック名を入力します。

   1. (オプション) [**表示名**] に SMS メッセージのカスタムプレフィックスを入力します。トピックにメッセージを送信する場合、Amazon SNS によって右アングルブラケット (>) とスペースに続いて表示名が付加されます。表示名では大文字と小文字が区別されず、Amazon SNS は表示名を大文字に変換します。例えば、トピックの表示名が `MyTopic` で、メッセージが `Hello World!` である場合、メッセージは次のように表示されます。

      ```
      MYTOPIC> Hello World!
      ```

1. **[トピックを作成]** を選択します。トピックの名前と Amazon リソースネーム (ARN) が、[**トピック**] ページに表示されます。

**SMS サブスクリプションを作成するには**

トピックに 1 回だけメッセージを発行することによって、サブスクリプションを使用して SMS メッセージを複数の受信者に送信できます。
**注記**  
Amazon SNS を使用して SMS メッセージを送信し始めると、 AWS アカウントは *SMS サンドボックス*にあります。SMS サンドボックスは、SMS 送信者としての評判を損なうことなく、Amazon SNS 機能を試すための安全な環境を提供します。アカウントが SMS サンドボックスにあり、Amazon SNS のすべての機能を使用できますが、SMS メッセージを送信できるのは、確認済みの送信先の電話番号だけです。詳細については、「[Amazon SNS SMS サンドボックスの使用](sns-sms-sandbox.md)」を参照してください。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. ナビゲーションペインで [**サブスクリプション**] を選択します。

1. [**サブスクリプション**] ページで [**サブスクリプションの作成**] を選択します。

1. [**サブスクリプションの作成**] ページで [**詳細**] セクションで、以下を実行します。

   1. **トピック ARN**で、SMS メッセージを送信するトピックの Amazon リソースネーム (ARN) を入力または選択します。

   1. [**プロトコル**] で **SMS** を選択します。

   1. [**エンドポイント**] に、トピックをサブスクライブする電話番号を入力します。

1. [**サブスクリプションの作成**] を選択します。サブスクリプション情報は [**サブスクリプション**] ページに表示されます。

   さらに電話番号を追加するには、このステップを繰り返します。電子メールなど、他の種類のサブスクリプションを追加することもできます。

**単一のメッセージを送信するには**

トピックにメッセージを発行すると、Amazon SNS はトピックにサブスクライブされているすべての電話番号にメッセージの配信を試みます。

1. [[Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)] の [**トピック**] ページで、SMS メッセージを送信するトピックの名前を選択します。

1. トピックの詳細ページで、[**トピックへの発行**] を選択します。

1. [**トピックへのメッセージの発行**] ページの **[メッセージの詳細]** で、次の操作を行います。

   1. トピックに E メールのサブスクリプションが含まれていない場合、および E メール と SMS のサブスクリプションの両方を発行する場合は、[**件名**] のフィールドを空のままにします。Amazon SNS の [**件名**] は、E メールの件名の欄とにあたります。

   1. (オプション) [**有効期限 (TTL)**] に、Amazon SNS がモバイルアプリケーションエンドポイント受信者に SMS メッセージを送信するのに必要な秒数を入力します。

1. [**メッセージ本文**] で、次の作業を行います。

   1. [**メッセージ構造**] で、[**すべての配信プロトコルに同一のペイロード**] をクリックして、トピックに登録されているすべてのプロトコルタイプに同じメッセージを送信します。または、[**配信プロトコルごとにカスタムペイロード**] を選択して、異なるプロトコルタイプの受信者用のメッセージをカスタマイズします。例えば、電話番号受信者にはデフォルトメッセージを入力し、E メール受信者にはカスタムメッセージを入力できます。

   1. [**エンドポイントに送信するメッセージ本文**] を選択し、メッセージを入力するか、配信プロトコルごとにカスタムメッセージを入力します。

      トピックに表示名がある場合、Amazon SNS はそれをメッセージの長さを増やすメッセージに追加します。表示名の長さは、名前の文字数に Amazon SNS が追加する右アングルブラケット (>) とスペースの 2 文字をプラスしたものです。

      SMS メッセージのサイズ限度の詳細については、「[Amazon SNS を使用して SMS メッセージを携帯電話に発行する](#sms_publish-to-phone)」を参照してください。

1. (オプション) [**メッセージ属性**] で、タイムスタンプ、署名、ID などのメッセージメタデータを追加します。

1. [**メッセージの発行**] を選択します。Amazon SNS から SMS メッセージを送信し、成功のメッセージを表示します。

### AWS SDKs
<a name="sms_publish-to-topic_sdk"></a>

 AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、『*AWS SDK とツールのリファレンスガイド*』の「[共有設定ファイルおよび認証情報ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)」を参照してください。

次のコードの例は以下の方法を示しています。
+ Amazon SNS トピックを作成します。
+ 携帯電話番号をトピックにサブスクライブする。
+ SMS メッセージをトピックに発行して、登録されているすべての電話番号がメッセージを一度に受信できるようにします。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。
トピックを作成し、その ARN を返します。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.CreateTopicRequest;
import software.amazon.awssdk.services.sns.model.CreateTopicResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class CreateTopic {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <topicName>

                Where:
                   topicName - The name of the topic to create (for example, mytopic).

                """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String topicName = args[0];
        System.out.println("Creating a topic with name: " + topicName);
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        String arnVal = createSNSTopic(snsClient, topicName);
        System.out.println("The topic ARN is" + arnVal);
        snsClient.close();
    }

    public static String createSNSTopic(SnsClient snsClient, String topicName) {
        CreateTopicResponse result;
        try {
            CreateTopicRequest request = CreateTopicRequest.builder()
                    .name(topicName)
                    .build();

            result = snsClient.createTopic(request);
            return result.topicArn();

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }
}
```
トピックへのエンドポイントのサブスクライブ。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SnsException;
import software.amazon.awssdk.services.sns.model.SubscribeRequest;
import software.amazon.awssdk.services.sns.model.SubscribeResponse;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class SubscribeTextSMS {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <topicArn> <phoneNumber>

                Where:
                   topicArn - The ARN of the topic to subscribe.
                   phoneNumber - A mobile phone number that receives notifications (for example, +1XXX5550100).
                """;

        if (args.length < 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String topicArn = args[0];
        String phoneNumber = args[1];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        subTextSNS(snsClient, topicArn, phoneNumber);
        snsClient.close();
    }

    public static void subTextSNS(SnsClient snsClient, String topicArn, String phoneNumber) {
        try {
            SubscribeRequest request = SubscribeRequest.builder()
                    .protocol("sms")
                    .endpoint(phoneNumber)
                    .returnSubscriptionArn(true)
                    .topicArn(topicArn)
                    .build();

            SubscribeResponse result = snsClient.subscribe(request);
            System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is "
                    + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
送信者の ID、上限価格、タイプなど、メッセージ上の属性を設定します。メッセージ属性はオプションです。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesRequest;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesResponse;
import software.amazon.awssdk.services.sns.model.SnsException;
import java.util.HashMap;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class SetSMSAttributes {
    public static void main(String[] args) {
        HashMap<String, String> attributes = new HashMap<>(1);
        attributes.put("DefaultSMSType", "Transactional");
        attributes.put("UsageReportS3Bucket", "janbucket");

        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        setSNSAttributes(snsClient, attributes);
        snsClient.close();
    }

    public static void setSNSAttributes(SnsClient snsClient, HashMap<String, String> attributes) {
        try {
            SetSmsAttributesRequest request = SetSmsAttributesRequest.builder()
                    .attributes(attributes)
                    .build();

            SetSmsAttributesResponse result = snsClient.setSMSAttributes(request);
            System.out.println("Set default Attributes to " + attributes + ". Status was "
                    + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
トピックへのメッセージの発行 メッセージは、すべての受信者に送信されます。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.PublishRequest;
import software.amazon.awssdk.services.sns.model.PublishResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class PublishTextSMS {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <message> <phoneNumber>

                Where:
                   message - The message text to send.
                   phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String message = args[0];
        String phoneNumber = args[1];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        pubTextSMS(snsClient, message, phoneNumber);
        snsClient.close();
    }

    public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) {
        try {
            PublishRequest request = PublishRequest.builder()
                    .message(message)
                    .phoneNumber(phoneNumber)
                    .build();

            PublishResponse result = snsClient.publish(request);
            System.out
                    .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```

------

## Amazon SNS を使用して SMS メッセージを携帯電話に発行する
<a name="sms_publish-to-phone"></a>

Amazon SNS を使用して、Amazon SNS トピックに電話番号を登録せずに、SMS メッセージを携帯電話に直接送信できます。

**注記**  
1 つのメッセージを同時に複数の電話番号に送信する場合、電話番号をトピックにサブスクライブすると便利です。SMS メッセージをトピックに発行する方法については、「[SMS メッセージを Amazon SNS トピックに発行する](#sms_publish-to-topic)」を参照してください。

メッセージを送信するとき、メッセージがコストまたは信頼性に対して最適化されているかどうかを制御できます。[送信者 ID または発信番号](channels-sms-originating-identities.md)を指定することもできます。Amazon SNS API または AWS SDKs を使用してプログラムでメッセージを送信する場合は、メッセージ配信の上限価格を指定できます。

各 SMS メッセージは最大 140 バイトまで含めることができ、文字限度はエンコーディングスキームによって異なります。例えば、SMS メッセージには以下を含めることができます。
+ 160 GSM 文字
+ 140 ASCII 文字
+ 70 UCS-2 文字

サイズ限度を超えてメッセージを発行する場合は、Amazon SNS により、複数のメッセージとして送信され、それぞれが文字数の限度以内に収められます。メッセージは単語の途中ではなく、単語の境目で切り離されます。1 回の SMS 発行アクションの合計サイズ限度は、1,600 バイトです。

SMS メッセージを送信するときは、E.164 形式を使用して電話番号を指定します。E.164 形式は国際電気通信に使用される標準電話番号付与構造です。この形式に従う電話番号は最大 15 桁を設定でき、プラス記号 (\$1) および国コードのプレフィックスが付いています。例えば、E.164 形式の米国の電話番号は \$11XXX5550100 と表示されます。

### メッセージの送信 (コンソール)
<a name="sms_publish_console"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[[SMS メッセージングをサポートしているリージョン]](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html) を選択します。

1. ナビゲーションペインで、[**テキストメッセージング (SMS)**] を選択します。

1. リポジトリの [**モバイルテキストメッセージング (SMS)**] ページで、[**テキストメッセージの発行**]。

1. リポジトリの [**SMS メッセージを発行する**] ページ、[**メッセージの種類]** で、次のいずれかを選択します。
   + **プロモーション** - マーケティングメッセージなどの非クリティカルなメッセージ。
   + [**トランザクション**] - 多要素認証のワンタイムパスコードなど、顧客のトランザクションをサポートするクリティカルメッセージ。
**注記**  
このメッセージレベルの設定をすると、アカウントレベルのデフォルトメッセージタイプは上書きされます。アカウントレベルのデフォルトのメッセージタイプは、[**モバイルテキストメッセージング (SMS)**] ページの [**テキストメッセージングの優先設定**] のセクションで設定できます。

   プロモーションおよびトランザクションメッセージの料金表の詳細については、「[世界各地の SMS 料金表](https://aws.amazon.com/sns/sms-pricing/)」を参照してください。

1. [**送信先電話番号**] に、メッセージを送信する電話番号を入力します。

1. [**メッセージ**] に、送信するメッセージを入力します。

1. (オプション) [**送信元アイデンティティ**] で、受信者を識別する方法を指定します。
   + (オプション) [**送信者 ID**] に、少なくとも 1 つの文字を含み、スペースは含まない、3～11 文字の英数字のカスタム ID を入力します。送信者 ID は、受信側デバイスにメッセージ送信者として表示されます。例えば、メッセージソースを識別しやすいように、ビジネスブランドを使用できます。

     送信者 ID のサポートについては、国、リージョン、またはその両方によって異なります。例えば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートしている国と地域については、「*AWS End User Messaging SMS ユーザーガイド*」の「[AWS End User Messaging SMSの SMS メッセージングがサポートされている国と地域](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。

     送信者 ID を指定しない場合、次のいずれか 1 つが送信元 ID として表示されます。
     + ロングコードをサポートしている国では、ロングコードが表示されます。
     + 送信者 ID のみがサポートされている国では、「*NOTICE*」が表示されます。

     このメッセージレベルの送信者 ID は、[**テキストメッセージプリファレンス**] ページで設定するデフォルトの送信者 ID を上書きします。
   + [**送信元番号**] を指定するには、受信者のデバイス上で送信者の電話番号として表示する 5～14 の数字の文字列を入力します。この文字列は、 AWS アカウント 送信先の国の で設定されている送信元番号と一致する必要があります。発信番号には、10DLC 番号、通話料無料の番号、個人間のロングコード、またはショートコードを指定できます。詳細については、「[Amazon SNS SMS メッセージの送信元アイデンティティ](channels-sms-originating-identities.md)」を参照してください。

     発信番号を指定しない場合、 AWS アカウント 設定に基づき、Amazon SNS は SMS テキストメッセージに使用する送信元番号を選択します。

1. インドの受取人に SMS メッセージを送信する場合は、[**国固有の属性** を展開し、次の属性を指定します。
   + **エンティティ ID** - インドの受信者に SMS メッセージを送信するためのエンティティ ID または プリンシパルエンティティ (PE) ID。この ID は、1 ～ 50 文字の一意の文字列で、Telecom Regulatory Authority of India (TRAI) が提供する、TRAI に登録したエンティティを識別するものです。
   + **テンプレート ID** - インドの受信者に SMS メッセージを送信するためのテンプレート ID。この ID は、TRAI に登録したテンプレートを識別する 1 ～ 50 文字の一意の文字列です。テンプレート ID は、メッセージに対して指定した送信者 ID に関連付ける必要があります。

   インドの受信者に SMS メッセージを送信する方法の詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[インドの送信者 ID 登録プロセス](https://docs.aws.amazon.com/sms-voice/latest/userguide/registrations-sms-senderid-india.html)」を参照してください。

1. [**メッセージの発行**] を選択します。

**ヒント**  
送信元番号から SMS メッセージを送信するには、Amazon SNS コンソールのナビゲーションパネルで**送信元番号**を送信します。[**機能**] 列で [**SMS**] 含む送信元番号を選択し、次に [**テキストメッセージの発行**] を選択します。

### メッセージの送信 (AWS SDKs)
<a name="sms_publish_sdk"></a>

 AWS SDKs のいずれかを使用して SMS メッセージを送信するには、Amazon SNS API の`Publish`リクエストに対応する SDK の API オペレーションを使用します。このリクエストでは、電話番号に SMS メッセージを直接送信できます。次の属性名の値を設定する場合、`MessageAttributes` パラメータも使用できます。

**`AWS.SNS.SMS.SenderID`**  
少なくとも 1 つの文字を含み、スペースは含まない、3 ～ 11 文字の英数字のカスタム ID。送信者 ID は、受信デバイスにメッセージ送信者として表示されます。例えば、メッセージ ソースを識別しやすいように、ビジネスブランドを使用できます。  
送信者 ID のサポートについては、国またはリージョンによって異なります。例えば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートする国または地域のリストについては、「*AWS End User Messaging SMS ユーザーガイド*」での「[AWS End User Messaging SMSの SMS メッセージングがサポートされている国と地域](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。  
送信者 ID を指定しない場合、サポートされている国またはリージョンでは、メッセージは送信者 ID として[ロングコード](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request-long-code.html)を表示します。アルファベットの送信者 ID を必要とする国またはリージョンでは、送信者 ID は「*NOTICE*」と表示されます。  
このメッセージレベルの属性は、`SetSMSAttributes` リクエストを使用して設定する、アカウントレベルの属性 `DefaultSenderID` を上書きします。

**`AWS.MM.SMS.OriginationNumber`**  
5～14 個の数値のカスタム文字列で、オプションの先頭にプラス記号 (`+`) を付けられます。この番号文字列は、受信側のデバイスの送信者の電話番号として表示されます。文字列は、送信先の国の AWS アカウントで設定された送信元番号と一致する必要があります。発信番号には、10DLC 番号、通話料無料の番号、Person-to-Person (P2P) のロングコード、またはショートコードを指定できます。詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[電話番号](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers.html)」を参照してください。  
発信元番号を指定しない場合、Amazon SNS は AWS アカウント設定に基づいて発信元番号を選択します。

**`AWS.SNS.SMS.MaxPrice`**  
SMS メッセージの送信に使用できる上限価格 (USD)。Amazon SNS がメッセージの送信により上限価格を超えるコストが発生すると判断した場合、Amazon SNS はメッセージを送信しません。  
過去 1 か月の SMS コストが既に `MonthlySpendLimit` 属性の限度を超えた場合、この属性は何も実行しません。`SetSMSAttributes` リクエストを使用して `MonthlySpendLimit` 属性を設定できます。  
Amazon SNS トピックにメッセージを送信する場合、トピックにサブスクライブされている各電話番号への各メッセージの配信に上限価格が適用されます。

**`AWS.SNS.SMS.SMSType`**  
送信するメッセージのタイプ。  
+ **`Promotional`** (デフォルト) - マーケティングメッセージなどの非クリティカルなメッセージ。
+ **`Transactional`** - 多要素認証のワンタイムパスコードなど、顧客のトランザクションをサポートするクリティカルメッセージ。
このメッセージレベルの属性は、`SetSMSAttributes` リクエストを使用して設定する、アカウントレベルの属性 `DefaultSMSType` を上書きします。

**`AWS.MM.SMS.EntityId`**  
この属性は、インドの受信者に SMS メッセージを送信するときにのみ必要です。  
これは、インドの受信者に SMS メッセージを送信するためのエンティティ ID またはプリンシパルエンティティ (PE) ID です。この ID は、1 ～ 50 文字の一意の文字列で、Telecom Regulatory Authority of India (TRAI) が提供する、TRAI に登録したエンティティを識別するものです。

**`AWS.MM.SMS.TemplateId`**  
この属性は、インドの受信者に SMS メッセージを送信するときにのみ必要です。  
これは、インドの受信者に SMS メッセージを送信するためのテンプレートです。この ID は、TRAI に登録したテンプレートを識別する 1 ～ 50 文字の一意の文字列です。テンプレート ID は、メッセージに対して指定した送信者 ID に関連付ける必要があります。

#### メッセージを送信する
<a name="sms_publish_sdks"></a>

次のコード例は、Amazon SNS を使用して SMS メッセージを発行する方法を示しています。

------
#### [ .NET ]

**SDK for .NET**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/SNS#code-examples)での設定と実行の方法を確認してください。

```
namespace SNSMessageExample
{
    using System;
    using System.Threading.Tasks;
    using Amazon;
    using Amazon.SimpleNotificationService;
    using Amazon.SimpleNotificationService.Model;

    public class SNSMessage
    {
        private AmazonSimpleNotificationServiceClient snsClient;

        /// <summary>
        /// Initializes a new instance of the <see cref="SNSMessage"/> class.
        /// Constructs a new SNSMessage object initializing the Amazon Simple
        /// Notification Service (Amazon SNS) client using the supplied
        /// Region endpoint.
        /// </summary>
        /// <param name="regionEndpoint">The Amazon Region endpoint to use in
        /// sending test messages with this object.</param>
        public SNSMessage(RegionEndpoint regionEndpoint)
        {
            snsClient = new AmazonSimpleNotificationServiceClient(regionEndpoint);
        }

        /// <summary>
        /// Sends the SMS message passed in the text parameter to the phone number
        /// in phoneNum.
        /// </summary>
        /// <param name="phoneNum">The ten-digit phone number to which the text
        /// message will be sent.</param>
        /// <param name="text">The text of the message to send.</param>
        /// <returns>Async task.</returns>
        public async Task SendTextMessageAsync(string phoneNum, string text)
        {
            if (string.IsNullOrEmpty(phoneNum) || string.IsNullOrEmpty(text))
            {
                return;
            }

            // Now actually send the message.
            var request = new PublishRequest
            {
                Message = text,
                PhoneNumber = phoneNum,
            };

            try
            {
                var response = await snsClient.PublishAsync(request);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error sending message: {ex}");
            }
        }
    }
}
```
+  API の詳細については、*AWS SDK for .NET API リファレンス*の「[Publish](https://docs.aws.amazon.com/goto/DotNetSDKV3/sns-2010-03-31/Publish)」を参照してください。

------
#### [ C\$1\$1 ]

**SDK for C\$1\$1**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
/**
 * Publish SMS: use Amazon Simple Notification Service (Amazon SNS) to send an SMS text message to a phone number.
 * Note: This requires additional AWS configuration prior to running example. 
 * 
 *  NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is in the SMS sandbox and you can only
 *  use verified destination phone numbers. See https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html.
 *  NOTE: If destination is in the US, you also have an additional restriction that you have use a dedicated
 *  origination ID (phone number). You can request an origination number using Amazon Pinpoint for a fee.
 *  See https://aws.amazon.com/blogs/compute/provisioning-and-using-10dlc-origination-numbers-with-amazon-sns/ 
 *  for more information. 
 * 
 *  <phone_number_value> input parameter uses E.164 format. 
 *  For example, in United States, this input value should be of the form: +12223334444
 */

//! Send an SMS text message to a phone number.
/*!
  \param message: The message to publish.
  \param phoneNumber: The phone number of the recipient in E.164 format.
  \param clientConfiguration: AWS client configuration.
  \return bool: Function succeeded.
 */
bool AwsDoc::SNS::publishSms(const Aws::String &message,
                             const Aws::String &phoneNumber,
                             const Aws::Client::ClientConfiguration &clientConfiguration) {
    Aws::SNS::SNSClient snsClient(clientConfiguration);

    Aws::SNS::Model::PublishRequest request;
    request.SetMessage(message);
    request.SetPhoneNumber(phoneNumber);

    const Aws::SNS::Model::PublishOutcome outcome = snsClient.Publish(request);

    if (outcome.IsSuccess()) {
        std::cout << "Message published successfully with message id, '"
                  << outcome.GetResult().GetMessageId() << "'."
                  << std::endl;
    }
    else {
        std::cerr << "Error while publishing message "
                  << outcome.GetError().GetMessage()
                  << std::endl;
    }

    return outcome.IsSuccess();
}
```
+  API の詳細については、*AWS SDK for C\$1\$1 API リファレンス*の「[Publish](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/Publish)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.PublishRequest;
import software.amazon.awssdk.services.sns.model.PublishResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class PublishTextSMS {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <message> <phoneNumber>

                Where:
                   message - The message text to send.
                   phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String message = args[0];
        String phoneNumber = args[1];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        pubTextSMS(snsClient, message, phoneNumber);
        snsClient.close();
    }

    public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) {
        try {
            PublishRequest request = PublishRequest.builder()
                    .message(message)
                    .phoneNumber(phoneNumber)
                    .build();

            PublishResponse result = snsClient.publish(request);
            System.out
                    .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[Publish](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/Publish)」を参照してください。

------
#### [ Kotlin ]

**SDK for Kotlin**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/sns#code-examples)での設定と実行の方法を確認してください。

```
suspend fun pubTextSMS(
    messageVal: String?,
    phoneNumberVal: String?,
) {
    val request =
        PublishRequest {
            message = messageVal
            phoneNumber = phoneNumberVal
        }

    SnsClient.fromEnvironment { region = "us-east-1" }.use { snsClient ->
        val result = snsClient.publish(request)
        println("${result.messageId} message sent.")
    }
}
```
+  API の詳細については、*AWS SDK for Kotlin API リファレンス*の「[Publish](https://sdk.amazonaws.com/kotlin/api/latest/index.html)」を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;


/**
 * Sends a text message (SMS message) directly to a phone number using Amazon SNS.
 *
 * This code expects that you have AWS credentials set up per:
 * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
 */

$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());
}
```
+  詳細については、「[AWS SDK for PHP デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#publish-to-a-text-message-sms-message)」を参照してください。
+  API の詳細については、*AWS SDK for PHP API リファレンス*の「[発行](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/Publish)」を参照してください。

------
#### [ Python ]

**SDK for Python (Boto3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
class SnsWrapper:
    """Encapsulates Amazon SNS topic and subscription functions."""

    def __init__(self, sns_resource):
        """
        :param sns_resource: A Boto3 Amazon SNS resource.
        """
        self.sns_resource = sns_resource


    def publish_text_message(self, phone_number, message):
        """
        Publishes a text message directly to a phone number without need for a
        subscription.

        :param phone_number: The phone number that receives the message. This must be
                             in E.164 format. For example, a United States phone
                             number might be +12065550101.
        :param message: The message to send.
        :return: The ID of the message.
        """
        try:
            response = self.sns_resource.meta.client.publish(
                PhoneNumber=phone_number, Message=message
            )
            message_id = response["MessageId"]
            logger.info("Published message to %s.", phone_number)
        except ClientError:
            logger.exception("Couldn't publish message to %s.", phone_number)
            raise
        else:
            return message_id
```
+  API の詳細については、**「AWS SDK for Python (Boto3) API リファレンス」の「[Publish](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/Publish)」を参照してください。

------
#### [ SAP ABAP ]

**SDK for SAP ABAP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap/services/sns#code-examples)での設定と実行の方法を確認してください。

```
    " iv_phone_number = '+12065550101' - Phone number in E.164 format
    TRY.
        oo_result = lo_sns->publish(              " oo_result is returned for testing purposes. "
          iv_phonenumber = iv_phone_number
          iv_message = iv_message ).
        MESSAGE 'Message published to phone number.' TYPE 'I'.
      CATCH /aws1/cx_snsnotfoundexception.
        MESSAGE 'Phone number does not exist.' TYPE 'E'.
    ENDTRY.
```
+  API の詳細については、*AWS SDK for SAP ABAP API リファレンス*の「[Publish](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)」(発行) を参照してください。

------