发布到移动电话 - Amazon Simple Notification Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

发布到移动电话

您可以使用 Amazon SNS 直接向移动电话发送 SMS 消息,而无需订阅 Amazon SNS 主题的电话号码。

注意

如果您想要将一条消息一次发送至多个电话号码,订阅电话号码会很有用。有关向主题发布 SMS 消息的说明,请参阅发布消息至一个主题

在发送消息时,您可以控制是否对消息进行成本或可靠传输优化。您还可以指定发件人 ID 或发件人编号。如果您使用 Amazon SNS API 或Amazon开发工具包,您可以指定消息传输的最高价格。

每条 SMS 消息最多能包含 140 字节,字符配额具体取决于编码方案。例如,SMS 消息可以包含:

  • 160 个 GSM 字符

  • 140 个 ASCII 字符

  • 70 个 UCS-2 字符

如果您发布的消息超出大小配额,Amazon SNS 会将其作为多条消息发送,每条消息都符合大小配额。消息不会在一个词的中间截断,而是在整个词边界上截断。单个 SMS 发布操作的总大小配额为 1600 字节。

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

发送消息(控制台)

  1. 登录到Amazon SNS 控制台

  2. 在控制台菜单中,选择Amazon支持 SMS 消息的区域

  3. 在导航窗格中,选择 Text messaging (SMS)

  4. 在存储库的移动文本消息(短信)页面上,选择发布文本消息

  5. 在存储库的发布 SMS 消息页面, 用于消息类型,选择下列选项之一:

    • 促销— 不重要的消息,例如营销消息。

    • 事务— 为客户事务处理提供支持的重要消息,例如多重身份验证的一次性密码。

    注意

    此消息级别的设置会覆盖您的账户级默认消息类型。您可以从文本消息首选项的 部分移动文本消息(短信)页.

    有关促销和事务处理消息的定价信息,请参阅全球短信定价

  6. 适用于目标电话号码中,输入您想要向其发送消息的电话号码。

  7. 适用于消息中,输入要发送的消息内容。

  8. (可选)在发端身份下,指定如何向收件人识别自己:

    • 指定发件人 ID中,键入包含 3-11 个字母数字字字符的自定义 ID,其中包括至少一个字母,并且不能包含空格。该发件人 ID 在接收设备上显示为消息发件人。例如,您可以使用自己的企业品牌让消息来源更易于识别。

      各个国家和/或地区对发件人 ID 的支持程度各不相同。例如,发送至美国电话号码的消息不显示发件人 ID。对于支持发件人 ID 的国家和地区,请参考支持的区域和国家/地区

      如果您未指明发件人 ID,则会显示以下内容之一作为原始标识:

      • 在支持长代码的国家/地区,显示长代码。

      • 在仅支持发件人 ID 的国家/地区,版权声明将显示。

      此消息级别的发件人 ID 会覆盖您在 Text messaging preferences 页面中设置的默认发件人 ID。

    • 指定发端号码中,输入一个由 5-14 个数字组成的字符串,以显示为收件人设备上的发件人电话号码。此字符串必须匹配Amazon Web Services 账户对于目的地国家/地区。发起号码可以是 10DLC 号码、免费电话号码、人对人长代码或短代码。有关更多信息,请参阅 SMS 消息的发端身份

      如果您未指定发件号码,Amazon SNS 会根据您的Amazon Web Services 账户配置。

  9. 如果您要向位于印度的接收人发送 SMS 消息,请展开具体国家属性,并指定以下属性:

    • 实体 ID— 向位于印度的接收人发送 SMS 消息的实体 ID 或委托人实体 (PE) ID。此 ID 是由 1 至 30 个字符组成的唯一字符串,由印度电信监管局 (TRAI) 提供,用于识别您在 TRAI 中注册的实体。

    • Template ID— 向位于印度的接收人发送 SMS 消息的模板 ID。此 ID 是 TRAI 提供的唯一字符串,由 1-30 个字符组成,用于标识您在 TRAI 中注册的模板。模板 ID 必须与您为邮件指定的发件人 ID 相关联。

    有关向位于印度的接收人发送 SMS 消息的更多信息,请参阅关于向位于印度的接收人发送 SMS 消息的特殊要求

  10. 选择发布消息

提示

要从发件号码发送 SMS 消息,您还可以选择发端号码Amazon SNS 控制台导航面板中。选择包含SMS中的Capabilities列,然后选择发布文本消息

发送消息 (Amazon软件开发工具包)

使用以下网址发送 SMS 消息:Amazon开发工具包,请使用该开发工具包中与Publish请求。通过此请求,您可以直接向电话号码发送 SMS 消息。您也可使用 MessageAttributes 参数设置以下属性名称的值:

AWS.SNS.SMS.SenderID

包含 3—11 个字母数字字符的自定义 ID,其中包括至少一个字母,并且不能包含空格。该发件人 ID 在接收设备上显示为消息发件人。例如,您可以使用自己的企业品牌帮助让消息来源更易于识别。

不同国家或地区对发送人 ID 的支持有所不同。例如,发送至美国电话号码的消息不显示发件人 ID。有关支持发件人 ID 的国家或地区的列表,请参阅支持的区域和国家/地区

如果您不指定发件人 ID,则会显示长代码在支持的国家或地区中,会显示为发件人 ID。对于要求使用按字母顺序排列发件人 ID 的国家或地区,版权声明将显示为发件人 ID。

此消息级别的属性会覆盖帐户级别属性DefaultSenderID,您可以使用SetSMSAttributes请求.

AWS.MM.SMS.OriginationNumber

一个由 5—14 个数字组成的自定义字符串,其中可以包括一个可选的前导加号 (+)。此数字字串在接收设备上显示为发件人的电话号码。字符串必须匹配Amazon帐户目的地国家/地区。发起号码可以是 10DLC 号码、免费电话号码、人对人 (P2P) 长代码或短代码。有关更多信息,请参阅 发端号码

如果您没有指定发起号,Amazon SNS 会根据您的Amazon帐户配置。

AWS.SNS.SMS.MaxPrice

您愿意用于发送 SMS 消息的最高价格(以美元为单位)。如果 Amazon SNS 确定发送消息会产生超出您的最高价格的成本,则它不会发送消息。

如果您的当月至今 SMS 成本已超过为MonthlySpendLimit属性。您可以设置MonthlySpendLimit属性使用SetSMSAttributes请求.

如果您要向 Amazon SNS 主题发送消息,则该最高价格适用于订阅该主题的每个电话号码的每条消息传输。

AWS.SNS.SMS.SMSType

要发送的消息类型:

  • Promotional(默认)— 不重要的消息,例如营销消息。

  • Transactional— 为客户事务处理提供支持的重要消息,例如多重身份验证的一次性密码。

此消息级别的属性会覆盖帐户级别属性DefaultSMSType,您可以使用SetSMSAttributes请求.

AWS.MM.SMS.EntityId

仅当向位于印度的接收人发送 SMS 消息时,此属性才是必需的。

这是您的实体 ID 或委托人实体 (PE) ID,用于向印度的收件人发送 SMS 消息。此 ID 是由 1 至 30 个字符组成的唯一字符串,由印度电信监管局 (TRAI) 提供,用于识别您在 TRAI 中注册的实体。

AWS.MM.SMS.TemplateId

仅当向位于印度的接收人发送 SMS 消息时,此属性才是必需的。

这是您向位于印度的接收人发送 SMS 消息的模板。此 ID 是 TRAI 提供的唯一字符串,由 1-30 个字符组成,用于标识您在 TRAI 中注册的模板。模板 ID 必须与您为邮件指定的发件人 ID 相关联。

(可选)设置消息属性

以下示例说明如何使用 Amazon SNS 客户端设置消息属性,即Amazon软件开发工具包提供。

注意

请务必在使用开发工具包之前配置您的 Amazon 凭证。有关更多信息,请参阅 。配置Amazon凭证中的Amazon适 SDK for .NET 开发人员指南。或,请参阅使用凭证中的Amazon适 SDK for Java 开发人员指南

Amazon SDK for Java

随着AmazonSDK for Java,您可以通过构建将属性键与MessageAttributeValue对象。通过属性值来初始化每个 MessageAttributeValue 对象,并且由每个对象声明值的数据类型。以下示例将发件人 ID 设为 “mySenderID”、最高价格为 “0.50” USD 且 SMS 类型为 “Promacy”:

Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue() .withStringValue("mySenderID") //The sender ID shown on the device. .withDataType("String")); smsAttributes.put("AWS.SNS.SMS.MaxPrice", new MessageAttributeValue() .withStringValue("0.50") //Sets the max price to 0.50 USD. .withDataType("Number")); smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue() .withStringValue("Promotional") //Sets the type to promotional. .withDataType("String"));

在发送 SMS 消息时,您的属性将应用至PublishRequest对象。

Amazon SDK for .NET

随着AmazonSDK for .NET,您可以通过构建将属性键与MessageAttributeValue对象。通过属性值来初始化每个 MessageAttributeValue 对象,并且由每个对象声明值的数据类型。以下示例将发件人 ID 设为 “mySenderID”、最高价格为 “0.50” USD 且 SMS 类型为 “Promacy”:

PublishRequest pubRequest = new PublishRequest(); // add optional MessageAttributes... pubRequest.MessageAttributes["AWS.SNS.SMS.SenderID"] = new MessageAttributeValue{ StringValue = "mySenderId", DataType = "String"}; pubRequest.MessageAttributes["AWS.SNS.SMS.MaxPrice"] = new MessageAttributeValue { StringValue = "0.50", DataType = "Number" }; pubRequest.MessageAttributes["AWS.SNS.SMS.SMSType"] = new MessageAttributeValue { StringValue = "Promotional", DataType = "String" };

发送消息

以下示例演示如何使用 Amazon SNS 客户端发送消息,指出Amazon软件开发工具包提供。

注意

请务必在使用开发工具包之前配置您的 Amazon 凭证。有关更多信息,请参阅 。配置Amazon凭证中的Amazon适 SDK for .NET 开发人员指南。或,请参阅使用凭证中的Amazon适 SDK for Java 开发人员指南

Amazon SDK for Java

以下示例使用publish一个AmazonSNSClient类AmazonSDK for Java。本示例直接将消息发送到电话号码:

public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); String message = "My SMS message"; String phoneNumber = "+1XXX5550100"; Map<String, MessageAttributeValue> smsAttributes = new HashMap<String, MessageAttributeValue>(); //<set SMS attributes> sendSMSMessage(snsClient, message, phoneNumber, smsAttributes); } public static void sendSMSMessage(AmazonSNSClient snsClient, String message, String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) { PublishResult result = snsClient.publish(new PublishRequest() .withMessage(message) .withPhoneNumber(phoneNumber) .withMessageAttributes(smsAttributes)); System.out.println(result); // Prints the message ID. }

运行此示例时,IDE 控制台的输出窗口会显示消息 ID:

{MessageId: 9b888f80-15f7-5c30-81a2-c4511a3f5229}
Amazon SDK for .NET

以下示例使用Publish一个AmazonSimpleNotificationServiceClient类AmazonSDK for .NET。本示例直接将消息发送到电话号码:

static void Main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); PublishRequest pubRequest = new PublishRequest(); pubRequest.Message = "My SMS message"; pubRequest.PhoneNumber = "+1XXX5550100"; // add optional MessageAttributes, for example: // pubRequest.MessageAttributes.Add("AWS.SNS.SMS.SenderID", new MessageAttributeValue // { StringValue = "SenderId", DataType = "String" }); PublishResponse pubResponse = snsClient.Publish(pubRequest); Console.WriteLine(pubResponse.MessageId); }

运行此示例时,消息 ID 会显示在 IDE 控制台的输出窗口中:

9b888f80-15f7-5c30-81a2-c4511a3f5229