Amazon Simple Notification Service
開発者ガイド

複数の電話番号に SMS メッセージを送信する

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

トピックへのメッセージの送信 (コンソール)

トピックを作成するには

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

  1. AWS マネジメントコンソールにサインインした後、Amazon SNS コンソール (https://console.aws.amazon.com/sns/v2/home) を開きます。

  2. コンソールメニューで、SMS メッセージングをサポートしているリージョンにリージョンセレクタを設定します。

  3. ナビゲーションパネルで、[トピック] を選択します。

  4. [Topics] ページで、[Create new topic] を選択します。[Create new topic] ウィンドウが開きます。

  5. トピック名に名前を入力します。

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

    MYTOPIC> Hello World!
  7. [トピックの作成] を選択します。表示名と Amazon リソースネーム (ARN) が、[Topics] ページのテーブルに追加されます。

SMS のサブスクリプションを追加する

トピックに 1 回だけメッセージを発行することによって、サブスクリプションを使用して SMS メッセージを複数の受取人に送信できます。

  1. [Topics] ページで、トピック ARN を選択します。

  2. トピックの詳細ページで、[サブスクリプションの作成] を選択します。

  3. [Protocol] で、[SMS] を選択します。

  4. [エンドポイント] に、メッセージを送信する電話番号を入力します。

  5. [Create Subscription] を選択します。[Subscriptions] テーブルに、サブスクリプションの情報が追加されます。

    電話番号を追加するために、この手順を繰り返すことができ、E メールなどの他の種類のサブスクリプションを追加できます。

メッセージを送信する

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

  1. トピックの詳細ページで、[Publish to topic] を選択します。

  2. トピックに E メールのサブスクリプションが含まれていない場合、および E メール と SMS のサブスクリプションの両方を発行する場合は、[Publish a message] ページで、[Subject] のフィールドを空のままにします。[Subject] に入力したテキストが E メールの件名の行として使用されます。

  3. [Message] にメッセージを入力します。

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

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

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

トピックへのメッセージの送信 (AWS SDK)

AWS SDK のいずれかを使用してトピックに SMS メッセージを送信するには、Amazon SNS API で次のリクエストに対応する SDK のアクションを使用します。

CreateTopic

電話番号をサブスクライブできるトピックを作成し、トピックに発行することで、それらの電話番号のすべてに一度にメッセージを発行します。

Subscribe

トピックに電話番号をサブスクライブします。

Publish

トピックにサブスクライブされた各電話番号にメッセージを送信します。

メッセージのいくつかの属性の設定に MessageAttributes パラメーターを使用できます (上限価格など)。詳細については、「メッセージの送信 (AWS SDK)」を参照してください。

トピックの作成

以下の例では、AWS SDK で提供される Amazon SNS クライアントを使用してトピックを作成する方法について説明します。

AWS SDK for JavaAWS SDK for .NET
AWS SDK for Java

以下の例では、AWS SDK for Java の AmazonSNSClient クラスの createTopic メソッドを使用します。

public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); String topicArn = createSNSTopic(snsClient); } public static String createSNSTopic(AmazonSNSClient snsClient) { CreateTopicRequest createTopic = new CreateTopicRequest("mySNSTopic"); CreateTopicResult result = snsClient.createTopic(createTopic); System.out.println("Create topic request: " + snsClient.getCachedResponseMetadata(createTopic)); System.out.println("Create topic result: " + result); return result.getTopicArn(); }

この例では、リクエスト ID を取得するために getCachedResponseMetadata メソッドを使用します。

この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。

{TopicArn: arn:aws:sns:us-east-1:123456789012:mySNSTopic} CreateTopicRequest - {AWS_REQUEST_ID=93f7fc90-f131-5ca3-ab18-b741fef918b5}
AWS SDK for .NET

以下の例では、AWS SDK for .NET の AmazonSimpleNotificationServiceClient クラスの createTopic メソッドを使用します。

static void Main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); String topicArn = CreateSNSTopic(snsClient); } public static String CreateSNSTopic(AmazonSimpleNotificationServiceClient snsClient) { //create a new SNS topic CreateTopicRequest createTopicRequest = new CreateTopicRequest("MyNewTopic200"); CreateTopicResponse createTopicResponse = snsClient.CreateTopic(createTopicRequest); //get request id for CreateTopicRequest from SNS metadata Console.WriteLine("CreateTopicRequest - " + createTopicResponse.ResponseMetadata.RequestId); return createTopicResponse.TopicArn; }

この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。

{TopicArn: arn:aws:sns:us-east-1:123456789012:mySNSTopic} CreateTopicRequest - 93f7fc90-f131-5ca3-ab18-b741fef918b5

トピックに SMS のサブスクリプションを追加します

以下の例では、AWS SDK で提供される Amazon SNS クライアントを使用してトピックに SMS サブスクリプションを追加する方法について説明します。

AWS SDK for JavaAWS SDK for .NET
AWS SDK for Java

以下の例では、AWS SDK for Java の AmazonSNSClient クラスの subscribe メソッドを使用します。

public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); String phoneNumber = "+1XXX5550100"; String topicArn = createSNSTopic(snsClient); subscribeToTopic(snsClient, topicArn, "sms", phoneNumber); } //<create SNS topic> public static void subscribeToTopic(AmazonSNSClient snsClient, String topicArn, String protocol, String endpoint) { SubscribeRequest subscribe = new SubscribeRequest(topicArn, protocol, endpoint); SubscribeResult subscribeResult = snsClient.subscribe(subscribe); System.out.println("Subscribe request: " + snsClient.getCachedResponseMetadata(subscribe)); System.out.println("Subscribe result: " + subscribeResult); }

この例では、subscribeRequest オブジェクトを作成し、次の引数を渡します。

  • topicArn - サブスクリプションが追加されるトピックの Amazon リソースネーム (ARN)。

  • "sms" - SMS のサブスクリプションのプロトコル オプション。

  • endpoint - トピックにサブスクライブする電話番号。

この例では、サブスクリプションのリクエストのリクエスト ID を取得するために、getCachedResponseMetadata メソッドを使用します。

この例を実行すると、IDE のコンソールウィンドウにサブスクリプションのリクエストの ID が表示されます。

SubscribeRequest - {AWS_REQUEST_ID=f38fe925-8093-5bd4-9c19-a7c7625de38c}
AWS SDK for .NET

以下の例では、AWS SDK for .NET の AmazonSimpleNotificationServiceClient クラスの subscribe メソッドを使用します。

static void Main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); String phoneNumber = "+1XXX5550100"; String topicArn = CreateSNSTopic(snsClient); SubscribeToTopic(snsClient, topicArn, "sms", phoneNumber); } //<create SNS topic> static public void SubscribeToTopic(AmazonSimpleNotificationServiceClient snsClient, String topicArn, String protocol, String endpoint) { SubscribeRequest subscribeRequest = new SubscribeRequest(topicArn, protocol, endpoint); SubscribeResponse subscribeResponse = snsClient.Subscribe(subscribeRequest); Console.WriteLine("Subscribe request: " + subscribeResponse.ResponseMetadata.RequestId); Console.WriteLine("Subscribe result: " + subscribeResponse.); }

この例では、SubscribeRequest オブジェクトを作成し、次の引数を渡します。

  • topicArn - サブスクリプションが追加されるトピックの Amazon リソースネーム (ARN)。

  • "sms" - SMS のサブスクリプションのプロトコル オプション。

  • endpoint - トピックにサブスクライブする電話番号。

この例を実行すると、IDE のコンソールウィンドウにサブスクリプションのリクエストの ID が表示されます。

SubscribeRequest - f38fe925-8093-5bd4-9c19-a7c7625de38c

(オプション) メッセージ属性設定

以下の例では、AWS SDK で提供される Amazon SNS クライアントを使用してメッセージ属性を設定する方法について説明します。

AWS SDK for JavaAWS SDK for .NET
AWS SDK for Java

AWS SDK for Java では、属性キーを MessageAttributeValue オブジェクトと関連付けるマップを構築することで、メッセージ属性値を設定します。各 MessageAttributeValue オブジェクトは属性値で初期化され、各オブジェクトは値のデータ型を宣言します。次の例では、上限価格を 0.50 USD、SMS 型をプロモーションとして、「mySenderID」に送信者 ID を設定します。

Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue() .withStringValue("mySenderID") //The sender ID shown on the device. .withDataType("String")); smsAttributes.put("AWS.SNS.SMS.MaxPrice", new MessageAttributeValue() .withStringValue("0.50") //Sets the max price to 0.50 USD. .withDataType("Number")); smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue() .withStringValue("Promotional") //Sets the type to promotional. .withDataType("String"));

メッセージ属性の詳細については、「メッセージの送信 (AWS SDK)」を参照してください

SMS メッセージを送信する場合、PublishRequest オブジェクトに属性を適用します。

AWS SDK for .NET

AWS SDK for .NET では、属性キーを MessageAttributeValue オブジェクトと共に PublishRequest オブジェクトの MessageAttributes フィールドに追加することで、メッセージ属性値を設定します。各 MessageAttributeValue オブジェクトは属性値で初期化され、各オブジェクトは値のデータ型を宣言します。次の例では、上限価格を 0.50 USD、SMS 型をプロモーションとして、「mySenderID」に送信者 ID を設定します。

PublishRequest pubRequest = new PublishRequest(); pubRequest.MessageAttributes["AWS.SNS.SMS.SenderID"] = new MessageAttributeValue{ StringValue = "mySenderId", DataType = "String"}; pubRequest.MessageAttributes["AWS.SNS.SMS.MaxPrice"] = new MessageAttributeValue { StringValue = "0.50", DataType = "Number" }; pubRequest.MessageAttributes["AWS.SNS.SMS.SMSType"] = new MessageAttributeValue { StringValue = "Promotional", DataType = "String" };

メッセージ属性の詳細については、「メッセージの送信 (AWS SDK)」を参照してください

SMS メッセージを送信する場合、PublishRequest オブジェクトに属性を適用します。

トピックにメッセージを発行します

以下の例では、AWS SDK で提供される Amazon SNS クライアントを使用してトピックにメッセージを発行する方法について説明します。

AWS SDK for JavaAWS SDK for .NET
AWS SDK for Java

以下の例では、AWS SDK for Java の AmazonSNSClient クラスの publish メソッドを使用します。

public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); String message = "My SMS message"; Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); //<set SMS attributes> String topicArn = createSNSTopic(snsClient); //<subscribe to topic> sendSMSMessageToTopic(snsClient, topicArn, message, smsAttributes); } //<create topic method> //<subscribe to topic method> public static void sendSMSMessageToTopic(AmazonSNSClient snsClient, String topicArn, String message, Map<String, MessageAttributeValue> smsAttributes) { PublishResult result = snsClient.publish(new PublishRequest() .withTopicArn(topicArn) .withMessage(message) .withMessageAttributes(smsAttributes)); System.out.println(result); }

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

この例では、トピックの Amazon リソースネーム (ARN) およびメッセージを引数として渡すときに、publishRequest オブジェクトを作成します。publishResult オブジェクトは、Amazon SNS によって返されるメッセージ ID をキャプチャします。

この例を実行すると、IDE のコンソール出力ウィンドウにメッセージ ID が表示されます。

{MessageId: 9b888f80-15f7-5c30-81a2-c4511a3f5229}
AWS SDK for .NET

以下の例では、AWS SDK for .NET の AmazonSimpleNotificationServiceClient クラスの Publish メソッドを使用します。

public static void main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); String topicArn = createSNSTopic(snsClient); PublishRequest pubRequest = new PublishRequest(); pubRequest.Message = "My SMS message"; pubRequest.TopicArn = topicArn; // add optional MessageAttributes... // pubRequest.MessageAttributes["AWS.SNS.SMS.SenderID"] = // new MessageAttributeValue{ StringValue = "mySenderId", DataType = "String"}; PublishResponse pubResponse = snsClient.Publish(pubRequest); Console.WriteLine(pubResponse.MessageId); } //<create topic method> //<subscribe to topic method>

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

この例では、publishRequest オブジェクトを作成し、トピックの Amazon リソースネーム (ARN) およびメッセージを割り当てます。publishResponse オブジェクトは、Amazon SNS によって返されるメッセージ ID をキャプチャします。

この例を実行すると、IDE のコンソール出力ウィンドウにメッセージ ID が表示されます。

9b888f80-15f7-5c30-81a2-c4511a3f5229