【问题标题】:One API call to send SMS to multiple users (Twilio)一个 API 调用向多个用户发送 SMS (Twilio)
【发布时间】:2017-07-11 08:24:49
【问题描述】:

我有一个大约 50 个电话号码的列表,我需要通过 Twilio 的 API 向其发送相同的 SMS。我该怎么做(通过 Python)?

我可以像这样在 for 循环中做到这一点:

from twilio.rest import Client
client = Client(SID, AT)

for number in number_list:
    client.messages.create(to=number, from_="+18328955063",body="foo bar")

但是,与其多次访问 Twilio 的 API,我更愿意批量发送电话号码的数组/列表,然后只进行一次 API 调用。那么我该怎么做呢?有可能吗?

我正在设置一个后台异步任务来处理传出的短信,理想情况下,我不希望我的任务在 Twilio 一条一条地处理消息时等待很长时间。我只想发送一个数字列表作为有效负载并完成它。

【问题讨论】:

    标签: twilio twilio-api


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    您可以使用Twilio Notify API 实现此目的。 Notify 用于向多个平台发送通知,但其中包括 SMS。

    你会这样做:

    首先,创建一个Notify service

    然后您需要通过creating bindings 为所有用户注册您的所有用户及其号码。每个绑定都需要系统中的某种身份(用户 ID 或类似名称)。

    from twilio.rest import Client
    
    account = "YOUR_ACCOUNT_TOKEN"
    token = "YOUR_AUTH_TOKEN"
    client = Client(account, token)
    
    service = client.notify.services("YOUR_NOTIFY_SERVICE_SID")
    
    for identity, number in user_dict.items():
        service.bindings.create(
            identity=identity,
            binding_type="sms",
            address=number
        )
    

    然后,要向一组用户发送通知,您只需为他们的身份创建一个通知:

    service.notifications.create(identity=list_of_identities,
                                 body="Hello world!")
    

    这一次只需要 20 个身份,但您也可以在创建绑定时使用标签或segments 发送更多身份。

    让我知道这是否有帮助。

    【讨论】:

    • 配置Notify service 时,是否需要创建并选择APN、GCM、FCM 或消息服务SID 之一?我不确定这一步是关于什么的。
    • 啊,要发送短信,您需要messaging service。消息服务基本上是一个号码池,您可以从中发送 SMS,它会执行其他操作,例如地理匹配电话号码,但如果您只是将一个号码添加到服务中,那么它只会充当该号码的代理。
    • 嗯,当我尝试将用户注册到绑定时,我得到 'Client' object has no attribute 'notify'(我的 twilio 包版本是 6.4.1)。在这里创建了一个单独的问题:stackoverflow.com/questions/45081365/…
    • 我已经回答了你的问题:)
    • 查看这部分文档以了解所有详细信息:twilio.com/docs/api/notify/rest/…
    【解决方案2】:

    您也可以这样做: https://www.twilio.com/docs/notify/api/notification-resource#code-send-a-notification-to-bindings-in-the-request-1

    notification = client.notify.services("ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")\
        .notifications.create(
            to_binding=[
                "{\"binding_type\":\"sms\",\"address\":\"+15555555555\"}",
                "{\"binding_type\":\"facebook-messenger\",\"address\":\"123456789123\"}"
            ],
            body="Hello Bob")
    

    无需创建绑定, 顺便说一句,twilio 可以接受 10,000 个数字

    指定为 JSON 字符串的目标地址。可以包含多个 to_binding 参数,但请求实体的总大小不应超过 1MB。这通常足以容纳 10,000 个电话号码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      相关资源
      最近更新 更多