

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# Amazon SNS の SMS メッセージの送信
<a name="sns-examples-sending-sms"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**この Node.js コード例は以下を示しています。**
+ Amazon SNS の SMS メッセージングの設定を取得および設定する方法。
+ 電話番号をチェックして SMS メッセージの受信をオプトアウトしたかどうかを確認する方法。
+ SMS メッセージの受信をオプトアウトした電話番号のリストを取得する方法。
+ SMS メッセージを送信する方法。

## シナリオ
<a name="sns-examples-sending-sms-scenario"></a>

Amazon SNS を使用して、SMS 対応デバイスにテキストメッセージ (SMS メッセージ) を送信できます。多くの電話番号にトピックを取り上げ、トピックへメッセージを送信することにより、電話番号へメッセージを直接送信または、一度に複数の電話番号にメッセージを送信できます。

この例では、一連の Node.js モジュールを使用して、Amazon SNS から SMS 対応デバイスに SMS テキストメッセージを発行します。Node.js モジュールは SDK for JavaScript を使用し、`AWS.SNS` クライアントクラスの以下のメソッドを使用して SMS メッセージを発行します。
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getSMSAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getSMSAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#checkIfPhoneNumberIsOptedOut-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#checkIfPhoneNumberIsOptedOut-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listPhoneNumbersOptedOut-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listPhoneNumbersOptedOut-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property)

## 前提条件タスク
<a name="sns-examples-sending-sms-prerequisites"></a>

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。
+ Node.js をインストールします。Node.js をインストールする方法の詳細については、[Node.js ウェブサイト](http://nodejs.org)を参照してください。
+ ユーザーの認証情報を使用して、共有設定ファイルを作成します。認証情報 JSON ファイルの提供の詳細については、「[共有認証情報ファイルから Node.js に認証情報をロードする](loading-node-credentials-shared.md)」を参照してください。

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

Amazon SNS を使用して、配信の最適化の方法 (コストに対してか、確実な配信に対してか)、毎月の使用量の上限、メッセージ配信がログに記録される方法、SMS の毎日の使用状況レポートをサブスクライブするかどうかなど、SMS メッセージのプリファレンスを指定します。これらのプリファレンスが取得され、Amazon SNS の SMS 属性として設定されます。

この例では、Node.js モジュールを使用して Amazon SNS の現在の SMS 属性を取得します。`sns_getsmstype.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。取得する個々の属性の名前など、SMS 属性を取得するためのパラメータを含むオブジェクトを作成します。利用可能な SMS 属性の詳細については、Amazon Simple Notification Service API リファレンスの [SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) を参照してください。

この例では、`DefaultSMSType` 属性を取得します。これは、SMS メッセージが `Promotional` (コストが最も低くなるようにメッセージ配信が最適化されます) として送信されるのか、`Transactional` (信頼性が最も高くなるようにメッセージ配信が最適化されます) として送信されるのかを制御します。`setTopicAttributes` クライアントクラスの `AWS.SNS` メソッドにパラメータを渡します。`getSMSAttributes` メソッドを呼び出すには、Amazon SNS サービスオブジェクトを呼び出すための promise を作成し、パラメータオブジェクトを渡します。その後、promise コールバックの `response` を処理します。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create SMS Attribute parameter you want to get
var params = {
  attributes: [
    "DefaultSMSType",
    "ATTRIBUTE_NAME",
    /* more items */
  ],
};

// Create promise and SNS service object
var getSMSTypePromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .getSMSAttributes(params)
  .promise();

// Handle promise's fulfilled/rejected states
getSMSTypePromise
  .then(function (data) {
    console.log(data);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

この例を実行するには、コマンドラインに次のように入力します。

```
node sns_getsmstype.js
```

 このサンプルコードは、[このGitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_getsmstype.js)にあります。

## SMS 属性の設定
<a name="sending-sms-setattributes"></a>

この例では、Node.js モジュールを使用して Amazon SNS の現在の SMS 属性を取得します。`sns_setsmstype.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。設定する個々の属性の名前とそれぞれに設定する値を含む、SMS 属性を設定するためのパラメータを含むオブジェクトを作成します。利用可能な SMS 属性の詳細については、Amazon Simple Notification Service API リファレンスの [SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) を参照してください。

この例では、`DefaultSMSType` 属性を `Transactional` に設定します。これにより、信頼性が最も高くなるようにメッセージ配信が最適化されます。`setTopicAttributes` クライアントクラスの `AWS.SNS` メソッドにパラメータを渡します。`getSMSAttributes` メソッドを呼び出すには、Amazon SNS サービスオブジェクトを呼び出すための promise を作成し、パラメータオブジェクトを渡します。その後、promise コールバックの `response` を処理します。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create SMS Attribute parameters
var params = {
  attributes: {
    /* required */
    DefaultSMSType: "Transactional" /* highest reliability */,
    //'DefaultSMSType': 'Promotional' /* lowest cost */
  },
};

// Create promise and SNS service object
var setSMSTypePromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .setSMSAttributes(params)
  .promise();

// Handle promise's fulfilled/rejected states
setSMSTypePromise
  .then(function (data) {
    console.log(data);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

この例を実行するには、コマンドラインに次のように入力します。

```
node sns_setsmstype.js
```

 このサンプルコードは、[このGitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_setsmstype.js)にあります。

## 電話番号がオプトアウトしているかどうかの確認
<a name="sending-sms-checkifphonenumberisoptedout"></a>

この例では、Node.js モジュールを使用して電話番号をチェックし、SMS メッセージの受信をオプトアウトしたかどうかを確認します。`sns_checkphoneoptout.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。パラメータとして確認する電話番号を含むオブジェクトを作成します。

この例では、確認する電話番号を指定するために `PhoneNumber` パラメータを設定します。`checkIfPhoneNumberIsOptedOut` クライアントクラスの `AWS.SNS` メソッドにオブジェクトを渡します。`checkIfPhoneNumberIsOptedOut` メソッドを呼び出すには、Amazon SNS サービスオブジェクトを呼び出すための promise を作成し、パラメータオブジェクトを渡します。その後、promise コールバックの `response` を処理します。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create promise and SNS service object
var phonenumPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .checkIfPhoneNumberIsOptedOut({ phoneNumber: "PHONE_NUMBER" })
  .promise();

// Handle promise's fulfilled/rejected states
phonenumPromise
  .then(function (data) {
    console.log("Phone Opt Out is " + data.isOptedOut);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

この例を実行するには、コマンドラインに次のように入力します。

```
node sns_checkphoneoptout.js
```

 このサンプルコードは、[このGitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_checkphoneoptout.js)にあります。

## オプトアウトした電話番号の一覧表示
<a name="sending-sms-listphonenumbersoptedout"></a>

この例では、Node.js モジュールを使用して、SMS メッセージの受信からオプトアウトされた電話番号のリストを取得します。`sns_listnumbersoptedout.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。空のオブジェクトをパラメータとして作成します。

`listPhoneNumbersOptedOut` クライアントクラスの `AWS.SNS` メソッドにオブジェクトを渡します。`listPhoneNumbersOptedOut` メソッドを呼び出すには、Amazon SNS サービスオブジェクトを呼び出すための promise を作成し、パラメータオブジェクトを渡します。その後、promise コールバックの `response` を処理します。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create promise and SNS service object
var phonelistPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .listPhoneNumbersOptedOut({})
  .promise();

// Handle promise's fulfilled/rejected states
phonelistPromise
  .then(function (data) {
    console.log(data);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

この例を実行するには、コマンドラインに次のように入力します。

```
node sns_listnumbersoptedout.js
```

 このサンプルコードは、[このGitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_listnumbersoptedout.js)にあります。

## SMS メッセージの発行
<a name="sending-sms-publishsms"></a>

この例では、Node.js モジュールを使用して SMS メッセージを電話番号に送信します。`sns_publishsms.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。`Message` および `PhoneNumber` パラメータを含むオブジェクトを作成します。

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

この例では、メッセージを送信するための電話番号を指定する `PhoneNumber` パラメータを設定します。`publish` クライアントクラスの `AWS.SNS` メソッドにオブジェクトを渡します。`publish` メソッドを呼び出すには、Amazon SNS サービスオブジェクトを呼び出すための promise を作成し、パラメータオブジェクトを渡します。その後、promise コールバックの `response` を処理します。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set region
AWS.config.update({ region: "REGION" });

// Create publish parameters
var params = {
  Message: "TEXT_MESSAGE" /* required */,
  PhoneNumber: "E.164_PHONE_NUMBER",
};

// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
  .publish(params)
  .promise();

// Handle promise's fulfilled/rejected states
publishTextPromise
  .then(function (data) {
    console.log("MessageID is " + data.MessageId);
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

この例を実行するには、コマンドラインに次のように入力します。

```
node sns_publishsms.js
```

 このサンプルコードは、[このGitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_publishsms.js)にあります。