来自 c# sdk 的单个号码的 Amazon SMS,无需创建主题

Amazon SMS for single number from c# sdk without creating topic

根据文档,要为单个号码发送短信,我们不需要创建 SNS 主题。 很明显,他们给出了一个示例代码,显示我们可以为发布请求方法

设置phone数字

http://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html

根据 java 文档,我可以清楚地看到该方法。

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sns/model/PublishRequest.html#setPhoneNumber-java.lang.String-

但是,我们如何在 C# 中实现相同的功能?如果不创建 SNS 主题,我找不到任何发送短信的方法。

有人可以指导我如何在不从 C# SDK 创建 SNS 主题的情况下发送 SMS 吗?

Publish(PublishRequest)

Amazon.SimpleNotificationService.Model.PublishRequest有一个PhoneNumber属性,用于设置直接发送短信时的号码。

相信你会在这里找到答案:https://forums.aws.amazon.com/thread.jspa?threadID=250183&tstart=0

基本上是在说什么并引用:“...PhoneNumber 属性 已添加到 AWSSDK.SimpleNotificationService 的 3.1.1.0 版中...”

我没有放示例代码,因为 PhoneNumber 属性 是请求中缺少的内容,其余部分应该与 Java 类似示例:D。

希望对您有所帮助:

var smsAttributes = new Dictionary<string, MessageAttributeValue>();
MessageAttributeValue senderID = new MessageAttributeValue();
senderID.DataType = "String";
senderID.StringValue = "mySenderId";

MessageAttributeValue sMSType = new MessageAttributeValue();
sMSType.DataType = "String";
sMSType.StringValue = "Promotional";

////MessageAttributeValue maxPrice = new MessageAttributeValue();
////maxPrice.DataType = "Number";
////maxPrice.StringValue = "0.1";

CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;

smsAttributes.Add("AWS.SNS.SMS.SenderID", senderID);
smsAttributes.Add("AWS.SNS.SMS.SMSType", sMSType);
////smsAttributes.Add("AWS.SNS.SMS.MaxPrice", maxPrice);

PublishRequest publishRequest = new PublishRequest();
publishRequest.Message = vm.Message;
publishRequest.MessageAttributes = smsAttributes;
publishRequest.PhoneNumber = vm.PhoneNumber;
AmazonSimpleNotificationServiceClient client = new AmazonSimpleNotificationServiceClient(vm.AccessKey, vm.SecretKey, config);
AmazonSNSResponse resp = new AmazonSNSResponse();
await client.PublishAsync(publishRequest);

AmazonSNSResponse response = new AmazonSNSResponse();
response.Status = HttpStatusCode.OK.ToString();
response.Message = "Success";
return response;