使用 Amazon SNS 发送 SMS 消息 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon SNS 发送 SMS 消息


                    JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何获取并设置 Amazon SNS 的 SMS 消息发送首选项。

  • 如何检查电话号码以确定是否选择退出接收 SMS 消息。

  • 如何获取已选择退出接收 SMS 消息的电话号码列表。

  • 如何发送 SMS 消息。

情景

您可以使用 Amazon SNS 将文本消息或 SMS 消息发送到支持 SMS 的设备上。您可以直接向电话号码发送消息,也可以使用多个电话号码订阅主题,然后通过向该主题发送消息来一次向这些电话号码发送消息。

在本示例中,您使用一系列 Node.js 模块将 Amazon SNS 的 SMS 文本消息从发送到支持 SMS 的设备。Node.js 模块使用 JavaScript 开发工具包,通过以下方法发布 SMS 消息:SNS客户端类:

先决条件任务

要设置和运行此示例,您必须先完成以下任务:

  • 设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的Amazon SDK for JavaScript和第三方模块。按照上的说明操作GitHub.

  • 使用用户凭证创建共享配置文件。有关提供凭证 JSON 文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证

重要

这些示例演示了如何使用 ECMASCRIPT6 (ES6) 导入/导出客户端服务对象和命令。

获取 SMS 属性

使用 Amazon SNS 来指定发送 SMS 消息的首选项,例如如何优化消息传输(在成本或可靠传输方面)、您的每月支出限额、如何记录消息传输以及是否要订阅每日 SMS 使用率报告。这些首选项通过检索得到,并设置为 Amazon SNS 的 SMS 属性。

在本示例中,使用 Node.js 模块获取 Amazon SNS 中的当前 SMS 属性。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_getsmstype.js 的 Node.js 模块。

如前所示配置 SDK,包括下载所需的客户端和软件包。创建包含用于获取 SMS 属性的参数的对象,包括要获取的单个属性的名称。有关可用 SMS 属性的详细信息,请参阅SetSMSAttributes在 Amazon Simple Notification Service API 参考中。

此示例获取 DefaultSMSType 属性,该属性控制 SMS 消息是作为 Promotional 发送(这将优化消息传送以尽可能降低成本)还是作为 Transactional 发送(这将优化消息传送以实现最高的可靠性)。将参数传递到 SNS 客户端类的 SetTopicAttributesCommand 方法。调用SetSMSAttributesCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplaceATTRIBUTE_NAME属性的名称。

// Import required AWS SDK clients and commands for Node.js import {GetSMSAttributesCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters var params = { attributes: [ "DefaultSMSType", "ATTRIBUTE_NAME", /* more items */ ], }; const run = async () => { try { const data = await snsClient.send(new GetSMSAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_getsmstype.js

可以找到这个示例代码GitHub 上的.

设置 SMS 属性

在本示例中,使用 Node.js 模块获取 Amazon SNS 中的当前 SMS 属性。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_setsmstype.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。创建包含用于设置 SMS 属性的参数的对象,其中包括要设置的单个属性的名称以及为各个属性设置的值。有关可用 SMS 属性的详细信息,请参阅SetSMSAttributes在 Amazon Simple Notification Service API 参考中。

此示例将 DefaultSMSType 属性设置为 Transactional,这会优化消息传送以实现最高的可靠性。将参数传递到 SNS 客户端类的 SetTopicAttributesCommand 方法。调用SetSMSAttributesCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

// Import required AWS SDK clients and commands for Node.js import {SetSMSAttributesCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { attributes: { /* required */ DefaultSMSType: "Transactional" /* highest reliability */, //'DefaultSMSType': 'Promotional' /* lowest cost */ }, }; const run = async () => { try { const data = await snsClient.send(new SetSMSAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_setsmstype.js

可以找到这个示例代码GitHub 上的.

检查电话号码是否已选择不接收消息

在本示例中,使用 Node.js 模块检查电话号码,确定该号码是否已退出接收 SMS 消息。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_checkphoneoptout.js 的 Node.js 模块。按前面所示配置开发工具包。创建一个对象,其中将要检查的电话号码包含作为参数。

此示例设置 PhoneNumber 参数以指定要检查的电话号码。将对象发布到 SNS 客户端类的 CheckIfPhoneNumberIsOptedOutCommand 方法。调用CheckIfPhoneNumberIsOptedOutCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

注意

ReplacePHONE_NUMBER用电话号码。

// Import required AWS SDK clients and commands for Node.js import {CheckIfPhoneNumberIsOptedOutCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { phoneNumber: "353861230764" }; //PHONE_NUMBER, in the E.164 phone number structure const run = async () => { try { const data = await snsClient.send( new CheckIfPhoneNumberIsOptedOutCommand(params) ); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_checkphoneoptout.js

可以找到这个示例代码GitHub 上的.

列出已退出的电话号码

在本示例中,使用 Node.js 模块获取已退出接收 SMS 消息的电话号码列表。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_listnumbersoptedout.js 的 Node.js 模块。按前面所示配置开发工具包。创建一个空对象作为参数。

将对象发布到 SNS 客户端类的 ListPhoneNumbersOptedOutCommand 方法。调用ListPhoneNumbersOptedOutCommand方法中,请创建一个异步函数,调用 Amazon SNS 客户端服务对象并传递参数对象。

// Import required AWS SDK clients and commands for Node.js import {ListPhoneNumbersOptedOutCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; const run = async () => { try { const data = await snsClient.send(new ListPhoneNumbersOptedOutCommand({})); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_listnumbersoptedout.js

可以找到这个示例代码GitHub 上的.

发布 SMS 消息

在本示例中,使用 Node.js 模块将 SMS 消息发布到电话号码。

创建libs创建文件名为的 Node.js 模块。snsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SNS 客户端对象。Replace领域与您的Amazon区域。

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 sns_publishsms.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。创建一个包含 MessagePhoneNumber 参数的对象。

在发送 SMS 消息时,请使用 E.164 格式指定电话号码。E.164 是用于国际电信的电话号码结构标准。遵循此格式的电话号码最多可包含 15 位,并以加号 (+) 和国家/地区代码作为前缀。例如,E.164 格式的美国电话号码将显示为 +1001XXX5550100。

此示例设置 PhoneNumber 参数以指定将消息发送到的电话号码。将对象发布到 SNS 客户端类的 PublishCommand 方法。调用PublishCommand方法中,请创建一个异步函数,调用 Amazon SNS 服务对象并传递参数对象。

注意

ReplaceTEXT_MESSAGE用文本消息进行操作,以及PHONE_NUMBER用电话号码。

// Import required AWS SDK clients and commands for Node.js import {PublishCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { Message: "MESSAGE_TEXT" /* required */, PhoneNumber: "PHONE_NUMBER", //PHONE_NUMBER, in the E.164 phone number structure }; const run = async () => { try { const data = await snsClient.send(new PublishCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node sns_publishsms.js

可以找到这个示例代码GitHub 上的.