一个API调用,向多个用户发送短信(Twilio)

时间:2017-07-11 08:24:49

标签: twilio twilio-api

我有一个约50个电话号码列表,我需要通过Twilio的API发送相同的短信。我该怎么做(通过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逐个处理消息时,我不希望我的任务等待很长时间。我只想发送一个数字列表作为有效载荷并完成它。

2 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

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

以下是你的表现:

首先,创建一个Notify service

然后,您需要使用creating bindings的所有用户和Notify API注册所有用户及其号码。每个绑定都需要您系统中的某种身份(用户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发送更多标记。

让我知道这是否有帮助。

答案 1 :(得分:1)

您也可以这样操作: 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个电话号码。