如何在 twilio-programmable-chat 的频道上进行分页?

How to do pagination on channels in twilio-programmable-chat?

我正在为 twilio-programmable-chat 使用 twilio javascript sdk。

我想对我的频道结果应用分页,但我无法弄明白。

这是我当前的代码。

this.chatClient.getUserChannelDescriptors().then(paginator => {

  // All channels are fetched

})

我试图传递一个 pageSize 类似于 getMessages(10) 的工作方式,但没有成功。

this.chatClient.getUserChannelDescriptors(10).then(paginator => {
 // The result was same, it fetched all the channels instead of just 10
})

我正在寻找一个示例,说明如何在频道上进行分页。 谢谢

根据 documentationgetUserChannelDescriptors 方法不接受任何参数。

但是您不必手动进行分页,因为方法 returns 是 Promise.<Paginator.<ChannelDescriptor>> 类型..这意味着您应该能够访问 twilio 提供的分页功能。

您的 paginator.items 应该只有单个页面中的项目。

编辑: 基本上关键是您的第一个片段是正确的。不幸的是,twilio 不是开源的,所以我无法检查他们在哪里定义了 page_size。但我鼓励您创建一百个模拟频道,然后检查 paginator.items 数组的大小。

试试这个:

this.chatClient.getUserChannelDescriptors().then(paginator => {
  console.log(paginator.items, paginator.hasNextPage(), paginator.hasPrevPage());
})

Paginator class 的文档是 here

我终于找到了方法。

它应该递归完成,因为我们通过调用 getUserChannelDescriptors() 获得初始列表,但随后可以通过调用 nextPage();

获取其余记录
async function processChannels(paginator) {

    // Now, if hasNextPage is true
    // call nextPage() to get the records instead of getUserChannelDescriptors()
    if (paginator.hasNextPage) {
        const nextPaginator = paginator.nextPage();
        processChannels(nextPaginator);
    } else {
        console.log("END OF RECORDS");
    }
}

async function getChannels() {
    const paginator = await chatClient.getUserChannelDescriptors();

    // Initiate the recursive function
    if (paginator.items) {
        await processChannels(paginator);
    }
}

这就是您将在每次通话中得到的信息。