Twilio 中的分页 Java SDK returns 只有第一页
Pagination in Twilio Java SDK returns only the first page
我需要通过特定的 phone 号码前缀列出所有可供购买的号码,方法如下:
def queryLocal(numberToBuy: NumberToBuy)
(implicit client: TwilioRestClient, ec: ExecutionContext): List[String] ={
val cc = numberToBuy.countryCode
val prefix = numberToBuy.numberPrefix.tail
val reader: LocalReader = Local.reader(cc).setVoiceEnabled(true).setContains(prefix)
@tailrec def inner(acc: List[String], currentPage: Page[Local]): List[String] = {
if (currentPage.hasNextPage){
val nextPage = reader.nextPage(currentPage)
val newAcc = nextPage.getRecords.asScala.toList.map(_.getPhoneNumber.toString) ++ acc
inner(newAcc, nextPage)
} else {
acc
}
}
val page: Page[Local] = reader.firstPage(client)
inner(page.getRecords.asScala.toList.map(_.getPhoneNumber.toString), page)
}
但它总是 returns 只有第一页(30 条记录),因为 hasNextPage
总是错误的,即使有超过 30 个数字可用
这里是 Twilio 开发人员布道者。
我认为这是因为没有分页信息 return 可用的 phone 号码资源,所以您无法显示所有可用的 phone 号码在目录中。
相反,如果您想选择第一个列表中不可用的其他号码 return,只需再次向列表资源发出请求,就会 returned .
我需要通过特定的 phone 号码前缀列出所有可供购买的号码,方法如下:
def queryLocal(numberToBuy: NumberToBuy)
(implicit client: TwilioRestClient, ec: ExecutionContext): List[String] ={
val cc = numberToBuy.countryCode
val prefix = numberToBuy.numberPrefix.tail
val reader: LocalReader = Local.reader(cc).setVoiceEnabled(true).setContains(prefix)
@tailrec def inner(acc: List[String], currentPage: Page[Local]): List[String] = {
if (currentPage.hasNextPage){
val nextPage = reader.nextPage(currentPage)
val newAcc = nextPage.getRecords.asScala.toList.map(_.getPhoneNumber.toString) ++ acc
inner(newAcc, nextPage)
} else {
acc
}
}
val page: Page[Local] = reader.firstPage(client)
inner(page.getRecords.asScala.toList.map(_.getPhoneNumber.toString), page)
}
但它总是 returns 只有第一页(30 条记录),因为 hasNextPage
总是错误的,即使有超过 30 个数字可用
这里是 Twilio 开发人员布道者。
我认为这是因为没有分页信息 return 可用的 phone 号码资源,所以您无法显示所有可用的 phone 号码在目录中。
相反,如果您想选择第一个列表中不可用的其他号码 return,只需再次向列表资源发出请求,就会 returned .