我需要发送 200 条短信,在亚马逊文档中我找到了如何通过订阅一个主题但只能一条一条地做到这一点。
public static void main(String[] args) {
AmazonSNSClient snsClient = new AmazonSNSClient();
String phoneNumber = "+1XXX5550100";
String topicArn = createSNSTopic(snsClient);
subscribeToTopic(snsClient, topicArn, "sms", phoneNumber);
}
public static void subscribeToTopic(AmazonSNSClient snsClient, String topicArn,
String protocol, String endpoint) {
SubscribeRequest subscribe = new SubscribeRequest(topicArn, protocol,
endpoint);
SubscribeResult subscribeResult = snsClient.subscribe(subscribe);
}
有什么方法可以将电话号码列表发送到端点,或者订阅 SubscribeRequest 列表吗?
目前,当您为 SNS 主题创建订阅时,您无法传递
list of phone numbers
作为端点。每个订阅只能有 ONE
电话号码作为端点。
对于电子邮件,我们只需提供群组电子邮件 ID,电子邮件服务器将处理分发列表。但对于电话号码来说,类似的事情是不可能的。
As far as SNS is concerned, it needs a single endpoint for a selected protocol(SMS/EMAIL)
。
为了简化事情,您所做的就是维护代码中电话号码的列表。您可以循环遍历列表并每次使用
subscribeToTopic
调用
same topic ARN but different phone number
方法。但我相信您自己也想过这个问题。
我们可以使用 AWS SDK 将电话号码列表传递到端点。
如果您需要向多个收件人发送消息,则值得阅读 Amazon 的文档:(https://docs.amazonaws.cn/en_us/sns/latest/dg/sms_publish-to-topic.html) 关于发送多个电话号码。
SNS 服务实现了发布-订阅模式,您可以使用它向主题发送消息。以下是完成这项工作的步骤:
Python 代码看起来像这样:
import boto3
# Create an SNS client
client = boto3.client(
"sns",
aws_access_key_id="YOUR ACCES KEY",
aws_secret_access_key="YOUR SECRET KEY",
region_name=us-east-1
)
# Create the topic if it doesn't exist
topic = client.create_topic(Name="invites-for-push-notifications")
topic_arn = topic['TopicArn'] # get its Amazon Resource Name
#Get List of Contacts
list_of_contacts = ["+919*********", "+917********", "+918********"]
# Add SMS Subscribers
for number in some_list_of_contacts:
client.subscribe(
TopicArn=topic_arn,
Protocol='sms',
Endpoint=number # <-- number who'll receive an SMS message.
)
# Publish a message.
client.publish(Message="Good news everyone!", TopicArn=topic_arn)