使用 Amazon SNS 傳送簡訊 - 適用於 JavaScript 的 AWS SDK

我們已宣布即將end-of-support。 適用於 JavaScript 的 AWS SDK 我們建議您遷移至 適用於 JavaScript 的 AWS SDK v3。如需日期、其他詳細資訊和如何遷移的資訊,請參閱連結的公告。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon SNS 傳送簡訊

JavaScript code example that applies to Node.js execution

這個 Node.js 程式碼範例會說明:

  • 如何取得和設定 Amazon SNS 的簡訊偏好設定。

  • 如何檢查電話號碼是否選擇不要接收簡訊。

  • 如何取得選擇不要接收簡訊的電話號碼清單。

  • 如何傳送簡訊。

使用案例

您可以使用 Amazon SNS 傳送文字訊息或簡訊至啟用簡訊功能的裝置。您可以直接傳送訊息至一組電話號碼,或一次傳送一則訊息至多組電話號碼,只要訂閱那些電話號碼到主題並且傳送您的訊息到該主題即可。

在此範例中,您會使用一系列 Node.js 模組,將 SMS 文字訊息從 Amazon SNS 發佈至啟用 SMS 的裝置。Node.js 模組使用適用於 JavaScript 的 SDK,以用戶端AWS.SNS類別的下列方法發佈 SMS 訊息:

先決條件任務

若要設定和執行此範例,您必須先完成這些任務:

取得簡訊屬性

使用 Amazon SNS 來指定簡訊的偏好設定,例如如何最佳化交付 (用於成本或可靠交付)、您的每月花費限制、如何記錄訊息交付,以及是否訂閱每日簡訊用量報告。系統會擷取這些偏好設定,並將其設定為 Amazon SNS 的 SMS 屬性。

在此範例中,使用 Node.js 模組取得 Amazon SNS 中目前的 SMS 屬性。以檔名 sns_getsmstype.js 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立一個物件,其中包含用來取得簡訊屬性的參數,包括要擷取的個別屬性名稱。如需可用 SMS 屬性的詳細資訊,請參閱《Amazon Simple Notification Service API 參考》中的 SetSMSAttributes

此範例會取得 DefaultSMSType 屬性,其可控制簡訊的傳送方式;Promotional 會將訊息交付最佳化以降低成本,而 Transactional 則會將訊息交付最佳化以達到最高的可靠性。將參數傳遞至 AWS.SNS 用戶端類別的 setTopicAttributes 方法。若要呼叫 getSMSAttributes方法,請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後,在 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 上找到這個範本程式碼。

設定簡訊屬性

在此範例中,使用 Node.js 模組取得 Amazon SNS 中目前的 SMS 屬性。以檔名 sns_setsmstype.js 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立一個物件,其中包含用來設定簡訊屬性的參數,包括要設定的個別屬性名稱,以及要為每個屬性設定的值。如需可用 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 模組來檢查電話號碼是否選擇不要接收簡訊。以檔名 sns_checkphoneoptout.js 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立一個物件,其中包含要以參數形式檢查的電話號碼。

此範例會設定 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 模組來取得選擇不要接收簡訊的電話號碼清單。以檔名 sns_listnumbersoptedout.js 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立空白物件做為參數。

接著,將物件傳遞至 AWS.SNS 用戶端類別的 listPhoneNumbersOptedOut 方法。若要呼叫 listPhoneNumbersOptedOut方法,請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後,在 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 上找到這個範本程式碼。

發佈簡訊

在此範例中,Node.js 模組可用來傳送簡訊至電話號碼。以檔名 sns_publishsms.js 建立一個 Node.js 模組。依前述內容設定軟體開發套件。建立包含 MessagePhoneNumber 參數的物件。

當您傳送簡訊時,請指定使用 E.164 格式的電話號碼。E。164 是電話號碼結構的標準,用於國際電信通訊。遵照此格式的電話號碼可以有 15 位數的上限限制,前面加上加號 (+) 字元和國碼。例如,E.164 格式的美國電話號碼顯示為 +1001XXX5550100。

此範例會設定 PhoneNumber 參數,藉此指定要傳送訊息的電話號碼。接著,將物件傳遞至 AWS.SNS 用戶端類別的 publish 方法。若要呼叫 publish方法,請建立叫用 Amazon SNS 服務物件、傳遞參數物件的承諾。然後,在 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 上找到這個範本程式碼。