查询Twilio调用列表资源不会使用Ruby或PHP对结果进行分页

时间:2018-02-27 10:31:06

标签: ruby twilio twilio-api

根据Twilio关于“分页”的文档here

  

返回给您的列表包括分页信息。如果您计划请求的记录多于单个页面上的记录,您可能需要使用提供的nextpageuri,而不是按页码递增页面。

然后给出一个例子:

# Initialize Twilio Client
@client = Twilio::REST::Client.new(account_sid, auth_token)

@client.calls.list
       .each do |call|
         puts call.direction
       end

但是,这样做只返回所有调用的数组,没有任何分页信息或结果限制或任何“页面”。

出于我的目的,我实际上是这样过滤查询:

@calls = @client.calls.list(
          start_time_after: @time
          start_time_before: @another_time
)

因为我的日期过滤范围是一个月的时间段,目前有大约4.5k的调用要求检索,所以需要花费一段时间来处理(有时它永远不会处理)

我正在使用twilio助手库ruby gem“twilio-ruby”并运行ruby 2.5 我也尝试将PHP与相应的twilio帮助程序库一起使用,并找到了相同的结果。

然而,使用curl确实可以工作并提供分页信息,与使用帮助程序库相比,它的速度也非常快

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

list将分页,加载它可以的所有资源。

如果对您的用例更有用,还有其他调用会以更加流畅的方式传输API。例如,您可以使用each,它会懒惰地加载调用,直到它们用完为止。

@calls = @client.calls.each(
  start_time_after: @time
  start_time_before: @another_time
) do |call|
  puts call.direction
end

如果您确实希望自己手动分页,可以使用page方法获取CallPage对象并从那里进行迭代。

page = @client.calls.page(
  start_time_after: @time
  start_time_before: @another_time
)
while !page.nil? do
  page.each { |call| puts call.direction }
  page = page.next_page
end

让我知道这是否有帮助。