如何使用Python从Twilio获取超过1000条消息记录

时间:2017-10-19 12:16:37

标签: python json twilio

我的消息对象有超过1000条记录。

在我的代码中,我正在循环并从特定的"发送自"电话号码。我收回记录,然后显示发送的收件人电话号码和索引号码,以便更轻松地计算返回的记录数。

我知道有超过1000条记录,但它会在1000处停止。我怎样才能获得更多记录?

我一直在使用Twilio支持,他们派我到这里询问,因为他们不是Python精通。

这是我现在的代码(我当然拿出了敏感的帐户信息):

import requests
import json
r = requests.get('https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000', auth=('AccountSID', 'AuthToken'))
json_parsed = json.loads(r.text)
var = 0
var2 = 0
while var < 10000:
    var1 = var
    if (json_parsed['messages'][var1]['from']) == "+PhoneNumber":
        print "From:" + " " + json_parsed['messages'][var1]['from']
        print "To::" + " " +json_parsed['messages'][var1]['to']
        print "\n"
        vartotal = var1 + 1
        print vartotal

    var = var1 + 1

2 个答案:

答案 0 :(得分:1)

Twilio REST API限制了您可以返回的记录数量。你需要使用分页。关键变量为in the Twilio Paging documentation,但只需在网址中添加Page参数。

所以你会得到1000页。如果确切地返回1,000,则处理并请求下一页。如果返回的数量少于1,000,则跳出循环。

您还可以查找JSON中返回的nextpageuri。如果有,请关注它。

答案 1 :(得分:0)

这是您的代码,但写得不错:

import requests
import json
r = requests.get('https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000', auth=('AccountSID', 'AuthToken'))
for i, message in enumerate(json.loads(r.text)['messages']):
    if message['from'] == "+PhoneNumber":
        print "From: {}".format(message['from'])
        print "To: {}".format(message['to'])
        print
        print i + 1

使用for循环让它处理计数器变量并迭代您请求的完整大量消息。使用"".format()格式化字符串。

您遇到的问题是您要请求10000封邮件:(&#39; https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000&#39;)Twilio API的工作方式据我所知,但它可能具有最大价值对于此设置,您无法获取那么多。如果这是真的,他们会有某种页面设置,允许你获取下一条X消息,可能是通过指定消息从哪里开始和你想要的安装。