Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置发送 SMS 消息的首选项
使用 Amazon SNS 指定 SMS 消息的首选项。例如,您可以指定是否要优化传输以确保成本或可靠性、您的每月支出限额、如何记录传输以及是否要订阅每日 SMS 使用情况报告。
这些首选项对从您的账户发送的每个 SMS 消息有效,但在您发送各条消息时可覆盖部分设置。有关更多信息,请参阅发布到移动电话。
使用 Amazon Web Services Management Console设置发送 SMS 消息的首选项
登录 Amazon SNS 控制台。
-
选择支持 SMS 消息收发的区域。
-
在导航面板上,选择移动,文本消息 (SMS)。
-
在 Mobile text messaging (SMS) (移动文本消息 (SMS)) 页上,在文本消息发送首选项部分中,选择编辑。
-
在 Edit text messaging preferences (编辑文本消息发送首选项) 页上,在 Details (详细信息) 部分中,执行以下操作:
-
对于默认消息类型,选择下列选项之一:
有关促销和事务处理消息的定价信息,请参阅全球 SMS 定价。
-
(可选)对于 Account spend limit (账户花费限额),请输入您在每个日历月想要为 SMS 消息支付的金额,以 USD 为单位。
-
默认情况下,支出配额设为 1.00 USD。如果要提高服务配额,请提交请求。
-
如果在控制台中设置的金额超过您的服务配额,Amazon SNS 会停止发布 SMS 消息。
-
由于 Amazon SNS 是分布式系统,它会在超过支出配额的几分钟内停止发送 SMS 消息。在该间隔内,如果您继续发送 SMS 消息,可能会产生超出配额的成本。
-
(可选)对于默认发件人 ID,请输入一个自定义 ID(如您的企业品牌),它显示为接收设备的发送者。
-
(可选)输入 Amazon S3 bucket name for usage reports(使用情况报告的 Amazon S3 存储桶名称)的名称。
S3 存储桶策略必须授予对 Amazon SNS 的写入权限。
-
选择 保存更改。
设置首选项(Amazon 开发工具包)
要使用其中一个 Amazon 开发工具包设置您的 SMS 首选项,请使用该开发工具包中与 Amazon SNS API 中的 SetSMSAttributes
请求相对应的操作。通过此请求,您可以将值分配给不同的 SMS 属性,例如您的每月支出配额和默认 SMS 类型(促销或事务)。有关所有 SMS 属性,参阅 Amazon Simple Notification Service API 参考中的 SetSMSAttributes。
以下代码示例演示如何使用 Amazon SNS 设置发送 SMS 消息的默认设置。
- C++
-
- 适用于 C++ 的 SDK
-
如何使用 Amazon SNS 设置 DefaultSMSType 属性。
//! Set the default settings for sending SMS messages.
/*!
\param smsType: The type of SMS message that you will send by default.
\param clientConfiguration: AWS client configuration.
\return bool: Function succeeded.
*/
bool AwsDoc::SNS::setSMSType(const Aws::String &smsType,
const Aws::Client::ClientConfiguration &clientConfiguration) {
Aws::SNS::SNSClient snsClient(clientConfiguration);
Aws::SNS::Model::SetSMSAttributesRequest request;
request.AddAttributes("DefaultSMSType", smsType);
const Aws::SNS::Model::SetSMSAttributesOutcome outcome = snsClient.SetSMSAttributes(
request);
if (outcome.IsSuccess()) {
std::cout << "SMS Type set successfully " << std::endl;
}
else {
std::cerr << "Error while setting SMS Type: '"
<< outcome.GetError().GetMessage()
<< "'" << std::endl;
}
return outcome.IsSuccess();
}
- CLI
-
- Amazon CLI
-
设置 SMS 消息属性
以下 set-sms-attributes
示例将 SMS 消息的默认发件人 ID 设置为 MyName
。
aws sns set-sms-attributes \
--attributes DefaultSenderID=MyName
此命令不生成任何输出。
- Java
-
- 适用于 Java 2.x 的 SDK
-
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);
}
}
}
- JavaScript
-
- 适用于 JavaScript (v3) 的软件开发工具包
-
在单独的模块中创建客户端并将其导出。
import { SNSClient } from "@aws-sdk/client-sns";
// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
导入 SDK 和客户端模块,然后调用 API。
import { SetSMSAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";
/**
* @param {"Transactional" | "Promotional"} defaultSmsType
*/
export const setSmsType = async (defaultSmsType = "Transactional") => {
const response = await snsClient.send(
new SetSMSAttributesCommand({
attributes: {
// Promotional – (Default) Noncritical messages, such as marketing messages.
// Transactional – Critical messages that support customer transactions,
// such as one-time passcodes for multi-factor authentication.
DefaultSMSType: defaultSmsType,
},
}),
);
console.log(response);
// {
// '$metadata': {
// httpStatusCode: 200,
// requestId: '1885b977-2d7e-535e-8214-e44be727e265',
// extendedRequestId: undefined,
// cfId: undefined,
// attempts: 1,
// totalRetryDelay: 0
// }
// }
return response;
};
- PHP
-
- 适用于 PHP 的 SDK
-
$SnSclient = new SnsClient([
'profile' => 'default',
'region' => 'us-east-1',
'version' => '2010-03-31'
]);
try {
$result = $SnSclient->SetSMSAttributes([
'attributes' => [
'DefaultSMSType' => 'Transactional',
],
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}