Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

SMS メッセージの送信

Amazon SNS を使用して、SMS 対応デバイスに SMS メッセージを送信できます。これらのデバイスの電話番号に直接メッセージを発行でき、Amazon SNS トピックに電話番号をサブスクライブする必要はありません。

各メッセージを同時に複数の電話番号に発行する場合、電話番号をトピックにサブスクライブすると便利です。SMS メッセージをトピックに発行する方法については、「複数の電話番号に SMS メッセージを送信する」を参照してください。

メッセージを送信すると、メッセージがコストまたは確実な配信用に最適化されているかどうかを制御でき、送信者 ID を指定できます。Amazon SNS API または AWS SDK を使用してメッセージをプログラムによって送信すると、メッセージ配信の上限価格を指定できます。

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

  • 160 GSM 文字

  • 140 ASCII 文字

  • 70 UCS-2 文字

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

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

メッセージの送信 (コンソール)

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

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

  3. ナビゲーションペインで、[Text messaging (SMS)] を選択します。

  4. [テキストメッセージ (SMS)] ページで、[テキストメッセージの送信 (SMS)] を選択します。[テキストメッセージの送信 (SMS)] ウィンドウが開きます。

  5. [Message type] で、以下のいずれかを選択します。

    • [プロモーション] – マーケティングメッセージなどの重要度が低いメッセージ。Amazon SNS は、コストを最も低く抑えるようにメッセージの配信を最適化します。

    • [トランザクション] – 顧客のトランザクションをサポートする重要なメッセージ (たとえば、多要素認証のためのワンタイムパスコードなど)。Amazon SNS によってメッセージの配信が最適化され、最高の信頼性が実現されます。

    このメッセージレベルの設定は、[テキストメッセージプリファレンス] ページで設定するデフォルトメッセージタイプを上書きします。

    プロモーションおよびトランザクションメッセージの料金表の詳細については、「グローバル SMS 料金表」を参照してください。

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

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

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

    送信者 ID のサポートについては、国、リージョン、またはその両方によって異なります。たとえば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートする国およびリージョンについては、「サポートされているリージョンおよび国」を参照してください。

    送信者 ID を指定しない場合、サポートされている国またはリージョンでは、メッセージは送信者 ID として長いコードを表示します。アルファベットの送信者 ID を必要とする国およびリージョンでは、メッセージは送信者 ID として NOTICE を表示します。

    このメッセージレベルの送信者 ID は、[テキストメッセージプリファレンス] ページで設定するデフォルトの送信者 ID を上書きします。

  9. [テキストメッセージの送信] を選択します。

メッセージの送信 (AWS SDK)

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

AWS.SNS.SMS.SenderID

少なくとも 1 つの文字を含み、スペースは含まない、11 文字以内の英数字のカスタム ID。送信者 ID は、受信デバイスにメッセージ送信者として表示されます。たとえば、メッセージ ソースを識別しやすいように、ビジネスブランドを使用できます。

送信者 ID のサポートについては、国、リージョン、またはその両方によって異なります。たとえば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートする国およびリージョンについては、「サポートされているリージョンおよび国」を参照してください。

送信者 ID を指定しない場合、サポートされている国およびリージョンでは、メッセージは送信者 ID として長いコードを表示します。アルファベットの送信者 ID を必要とする国またはリージョンでは、メッセージは送信者 ID として NOTICE を表示します。

このメッセージレベルの属性は、SetSMSAttributes リクエストを使用して設定する、DefaultSenderID アカウントレベルの属性を上書きします。

AWS.SNS.SMS.MaxPrice

SMS メッセージの送信に支払うことのできる上限額 (USD)。メッセージを送信することによって上限価格を超えるコストが発生すると判断した場合、Amazon SNS はメッセージを送信しません。

過去 1 か月の SMS コストが既に SetSMSAttributes リクエストを使用して設定する、MonthlySpendLimit 属性の制限を超えた場合、この属性は何も実行しません。

Amazon SNS トピックにメッセージを送信する場合、トピックにサブスクライブされている各電話番号への各メッセージの配信に上限価格が適用されます。

AWS.SNS.SMS.SMSType

送信するメッセージのタイプ。

  • Promotional (デフォルト) - マーケティングメッセージなどの重要度が低いメッセージ。Amazon SNS は、コストを最も低く抑えるようにメッセージの配信を最適化します。

  • Transactional - 顧客のトランザクションをサポートする重要なメッセージ (多要素認証のためのワンタイムパスコードなど)。 Amazon SNS によってメッセージの配信が最適化され、最高の信頼性が実現されます。

このメッセージレベルの属性は、SetSMSAttributes リクエストを使用して設定する、DefaultSMSType アカウントレベルの属性を上書きします。

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

以下の例では、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"));

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

AWS SDK for .NET

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

PublishRequest pubRequest = new PublishRequest(); // add optional MessageAttributes... 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 で提供されている 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"; String phoneNumber = "+1XXX5550100"; Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); //<set SMS attributes> sendSMSMessage(snsClient, message, phoneNumber, smsAttributes); } public static void sendSMSMessage(AmazonSNSClient snsClient, String message, String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) { PublishResult result = snsClient.publish(new PublishRequest() .withMessage(message) .withPhoneNumber(phoneNumber) .withMessageAttributes(smsAttributes)); System.out.println(result); // Prints the message ID. }

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

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

以下の例では、AWS SDK for .NET の AmazonSimpleNotificationServiceClient クラスの Publish メソッドを使用します。この例では、メッセージを電話番号に直接送信します。

static void Main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); PublishRequest pubRequest = new PublishRequest(); pubRequest.Message = "My SMS message"; pubRequest.PhoneNumber = "+1XXX5550100"; // add optional MessageAttributes, for example: // pubRequest.MessageAttributes.Add("AWS.SNS.SMS.SenderID", new MessageAttributeValue // { StringValue = "SenderId", DataType = "String" }); PublishResponse pubResponse = snsClient.Publish(pubRequest); Console.WriteLine(pubResponse.MessageId); }

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

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