AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表
Amazon SNS の SMS メッセージの送信
この Node.js コード例は以下を示しています。
-
Amazon SNS の SMS メッセージングの設定を取得および設定する方法。
-
電話番号をチェックして SMS メッセージの受信をオプトアウトしたかどうかを確認する方法。
-
SMS メッセージの受信をオプトアウトした電話番号のリストを取得する方法。
-
SMS メッセージを送信する方法。
シナリオ
Amazon SNS を使用して、SMS 対応デバイスにテキストメッセージ (SMS メッセージ) を送信できます。電話番号をトピックにサブスクライブし、トピックへメッセージを送信することにより、電話番号へメッセージを直接送信または、一度に複数の電話番号にメッセージを送信できます。
この例では、一連の Node.js モジュールを使用して、Amazon SNS から SMS 対応デバイスに SMS テキストメッセージを発行します。Node.js モジュールは SDK for JavaScript を使用し、AWS.SNS
クライアントクラスの以下のメソッドを使用して SMS メッセージを発行します。
前提条件タスク
この例をセットアップして実行するには、まず次のタスクを完了する必要があります。
-
Node.js をインストールします。Node.js をインストールする方法の詳細については、Node.js ウェブサイト
を参照してください。 -
ユーザーの認証情報を使用して、共有設定ファイルを作成します。認証情報 JSON ファイルの提供の詳細については、「共有認証情報ファイルから Node.js に認証情報をロードする」を参照してください。
SMS 属性の取得
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 を参照してください。
この例では、DefaultSMSType
属性を取得します。これは、SMS メッセージが Promotional
(コストが最も低くなるようにメッセージ配信が最適化されます) として送信されるのか、Transactional
(信頼性が最も高くなるようにメッセージ配信が最適化されます) として送信されるのかを制御します。AWS.SNS
クライアントクラスの setTopicAttributes
メソッドにパラメータを渡します。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
SMS 属性の設定
この例では、Node.js モジュールを使用して Amazon SNS の現在の SMS 属性を取得します。sns_setsmstype.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。設定する個々の属性の名前とそれぞれに設定する値を含む、SMS 属性を設定するためのパラメータを含むオブジェクトを作成します。利用可能な SMS 属性の詳細については、Amazon Simple Notification Service API リファレンスの SetSMSAttributes を参照してください。
この例では、DefaultSMSType
属性を Transactional
に設定します。これにより、信頼性が最も高くなるようにメッセージ配信が最適化されます。AWS.SNS
クライアントクラスの setTopicAttributes
メソッドにパラメータを渡します。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
電話番号がオプトアウトしているかどうかの確認
この例では、Node.js モジュールを使用して電話番号をチェックし、SMS メッセージの受信をオプトアウトしたかどうかを確認します。sns_checkphoneoptout.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。パラメータとして確認する電話番号を含むオブジェクトを作成します。
この例では、確認する電話番号を指定するために PhoneNumber
パラメータを設定します。AWS.SNS
クライアントクラスの checkIfPhoneNumberIsOptedOut
メソッドにオブジェクトを渡します。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
オプトアウトした電話番号の一覧表示
この例では、Node.js モジュールを使用して、SMS メッセージの受信からオプトアウトされた電話番号のリストを取得します。sns_listnumbersoptedout.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。空のオブジェクトをパラメータとして作成します。
AWS.SNS
クライアントクラスの listPhoneNumbersOptedOut
メソッドにオブジェクトを渡します。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
SMS メッセージの発行
この例では、Node.js モジュールを使用して SMS メッセージを電話番号に送信します。sns_publishsms.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。Message
および PhoneNumber
パラメータを含むオブジェクトを作成します。
SMS メッセージを送信するときは、E.164 形式を使用して電話番号を指定します。E.164 は、国際的な音声通信に使用される電話番号の構造の規格です。この形式に従う電話番号には最大 15 桁を設定でき、プラス記号 (+) および国コードのプレフィックスがついています。たとえば、E.164 形式の米国の電話番号は +1001XXX5550100 として表示されます。
この例では、メッセージを送信するための電話番号を指定する PhoneNumber
パラメータを設定します。AWS.SNS
クライアントクラスの publish
メソッドにオブジェクトを渡します。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