Amazon SNS を使用して SMS メッセージを送信する - Amazon Simple Notification Service

Amazon SNS を使用して SMS メッセージを送信する

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

SMS メッセージを Amazon SNS トピックに発行する

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

AWS コンソールを使用してトピックにメッセージを送信する

トピックを作成する

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

  1. Amazon SNS コンソールにサインインします。

  2. コンソールメニューで、[SMS メッセージングをサポートしているリージョン] を選択します。

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

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

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

    1. [Type (タイプ)] で、[Standard (標準)] を選択してください。

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

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

      MYTOPIC> Hello World!
  6. [トピックの作成] を選択してください。トピックの名前と Amazon リソースネーム (ARN) が、[トピック] ページに表示されます。

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

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

注記

Amazon SNS を使用して SMS メッセージを送信し始めると、AWS アカウントの所在地は SMS サンドボックス内になります。SMS サンドボックスは、SMS 送信者としての評判を損なうことなく、Amazon SNS 機能を試すための安全な環境を提供します。アカウントが SMS サンドボックスにあり、Amazon SNS のすべての機能を使用できますが、SMS メッセージを送信できるのは、確認済みの送信先の電話番号だけです。詳細については、「Amazon SNS SMS サンドボックスの使用」を参照してください。

  1. Amazon SNS コンソールにサインインします。

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

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

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

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

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

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

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

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

メッセージを送信するには

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

  1. [Amazon SNS コンソール] の [トピック] ページで、SMS メッセージを送信するトピックの名前を選択します。

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

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

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

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

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

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

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

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

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

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

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

AWS SDK を使用してトピックにメッセージを送信する

AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、『AWS SDK とツールのリファレンスガイド』の「共有設定ファイルおよび認証情報ファイル」を参照してください。

次のコードの例は以下の方法を示しています。

  • Amazon SNS トピックを作成する。

  • 携帯電話番号をトピックにサブスクライブする。

  • SMS メッセージをトピックに発行して、登録されているすべての電話番号がメッセージを一度に受信できるようにします。

Java
SDK for Java 2.x
注記

GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

トピックを作成し、その 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 メッセージを携帯電話に発行する

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

注記

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

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

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

  • 160 GSM 文字

  • 140 ASCII 文字

  • 70 UCS-2 文字

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

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

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

  1. Amazon SNS コンソールにサインインします。

  2. コンソールメニューで、[SMS メッセージングをサポートしているリージョン] を選択します。

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

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

  5. リポジトリの [SMS メッセージを発行する] ページ、[メッセージの種類] で、次のいずれかを選択します。

    • プロモーション - マーケティングメッセージなどの非クリティカルなメッセージ。

    • [トランザクション] - 多要素認証のワンタイムパスコードなど、顧客のトランザクションをサポートするクリティカルメッセージ。

    注記

    このメッセージレベルの設定をすると、アカウントレベルのデフォルトメッセージタイプは上書きされます。アカウントレベルのデフォルトのメッセージタイプは、[モバイルテキストメッセージング (SMS)] ページの [テキストメッセージングの優先設定] のセクションで設定できます。

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

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

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

  8. (オプション) [送信元アイデンティティ] で、受信者を識別する方法を指定します。

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

      送信者 ID のサポートについては、国、リージョン、またはその両方によって異なります。例えば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートしている国と地域については、「AWS End User Messaging SMS ユーザーガイド」の「AWS End User Messaging SMS の SMS メッセージングがサポートされている国と地域」を参照してください。

      送信者 ID を指定しない場合、次のいずれか 1 つが送信元 ID として表示されます。

      • ロングコードをサポートしている国では、ロングコードが表示されます。

      • 送信者 ID のみがサポートされている国では、「NOTICE」が表示されます。

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

    • [送信元番号] を指定するには、受信者のデバイス上で送信者の電話番号として表示する 5~14 の数字の文字列を入力します。この文字列は、送信先の国のお客様の AWS アカウント に設定される送信元番号と一致シている必要があります。発信番号には、10DLC 番号、通話料無料の番号、個人間のロングコード、またはショートコードを指定できます。詳細については、「Amazon SNS SMS メッセージの送信元アイデンティティ」を参照してください。

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

  9. インドの受取人に 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 登録プロセス」を参照してください。

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

ヒント

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

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

AWS SDK のいずれかを使用して 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 メッセージングがサポートされている国と地域」を参照してください。

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

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

AWS.MM.SMS.OriginationNumber

5~14 個の数値のカスタム文字列で、オプションの先頭にプラス記号 (+) を付けられます。この番号文字列は、受信側のデバイスの送信者の電話番号として表示されます。この文字列は、送信先の国のお客様の AWS アカウントに設定される送信元番号と一致シている必要があります。発信番号には、10DLC 番号、通話料無料の番号、Person-to-Person (P2P) のロングコード、またはショートコードを指定できます。詳細については、「AWS End User Messaging SMS ユーザーガイド」の「電話番号」を参照してください。

送信元番号を指定しない場合、AWS アカウント設定に基づき、Amazon SNS は 送信元番号を選択します。

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 に関連付ける必要があります。

メッセージを送信する

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

.NET
SDK for .NET
注記

GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

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 .NETAPI リファレンスの「発行」を参照してください。

C++
SDK for C++
注記

GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

/** * 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++API リファレンスの「発行」を参照してください。

Java
SDK for Java 2.x
注記

GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

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」を参照してください。

Kotlin
SDK for Kotlin
注記

GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

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」を参照してください。

PHP
SDK for PHP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コードサンプルリポジトリでの設定と実行の方法を確認してください。

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()); }
Python
SDK for Python (Boto3)
注記

GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

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」を参照してください。