如何将电话号码列表订阅到 aws-sns 主题

问题描述 投票:0回答:2

我需要发送 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 列表吗?

java amazon-web-services sms amazon-sns
2个回答
2
投票

目前,当您为 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
方法。但我相信您自己也想过这个问题。


0
投票

我们可以使用 AWS SDK 将电话号码列表传递到端点。

如果您需要向多个收件人发送消息,则值得阅读 Amazon 的文档:(https://docs.amazonaws.cn/en_us/sns/latest/dg/sms_publish-to-topic.html) 关于发送多个电话号码。

SNS 服务实现了发布-订阅模式,您可以使用它向主题发送消息。以下是完成这项工作的步骤:

  1. 创建一个命名主题。这只是一个沟通渠道,您可以订阅电话号码。
  2. 为您的收件人订阅该主题。
  3. 发布有关该主题的消息。

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)
© www.soinside.com 2019 - 2024. All rights reserved.