大佬教程收集整理的这篇文章主要介绍了有没有办法在团队消息扩展搜索查询上启用分页?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用基于 MS 团队搜索的消息传递扩展,有什么方法可以在机器人中捕获滚动事件。
因此,当用户查询关键字时,counter=1,响应将有前 10 个匹配结果。 向下滚动后,我想用 counter=2 对同一关键字进行另一个查询,以返回接下来的 10 个匹配结果。
使用 queryOption 数组可以启用分页。
分页参数:
skip:此查询的跳过计数
count:要返回的元素数。
请浏览documentation了解更多信息。
,编辑:刚刚意识到您在询问消息扩展,但我认为这可能仍然适用,因此将其留在这里。
我能够实现一个不依赖于 TeamsActivityHandler(我没有使用)的解决方案。在我的例子中,我创建了一个单独的对话框 (paginateDialog),它在开始对话框调用的选项中有一个数据数组和当前页面值。数据数组包含我显示为轮播的卡片定义。我下面的代码专门针对这种情况,因此如果您要发送不同类型的消息,您可能需要修改一些内容。
var paginate = require('array-paginate');
async displayItems (step) {
// Display the first page
var items = paginate(step._info.options.lineData,step._info.options.currentPage,PAGE_SIZE);
await step.context.sendActivity(messageFactory.carousel(items.docs));
// If there are more items,prompt to conTinue and increment
if (items.hasNextPage == truE) {
return await step.prompt(CHOICE_PROMPT,{
prompt: `I can only show you ${PAGE_SIZE} items at a time. Please SELEct Next to conTinue or Done to return to the main dialog.`,choices: [
{value: `Next ${PAGE_SIZE}`},{value: 'Done'}
]
});
} else {
return await step.next();
}
}
async loopStep (step) {
if (step.result && step.result.value == `Next ${PAGE_SIZE}`) {
step._info.options.currentPage++;
return await step.replaceDialog(WATERFall_DIALOG,step._info.options);
} else {
return await step.endDialog();
}
}
请注意,这可能不是很有效,特别是如果您有一个非常大的数组,因为我每次都从完整数组重新创建分页。不过,这允许您在需要时向前和向后遍历页面。我的函数只前进,但您可以创建前进和后退按钮,这些按钮可以根据 array-paginate
模块返回的 hasNextPage 和 hasPreviousPage 值动态显示,然后根据需要增加/减少当前页面。
另一个注意,这是通过 return await step.beginDialog('PAGINATE_DIALOG',options);
调用的。这意味着当您结束该对话时,您将返回到 NEXT 步骤的被调用者,无论您在该步骤中的哪个位置调用该对话框(就像任何其他对话调用)。因此,如果您在 beginDialog
之后有任何提示或其他任何提示,您需要在返回上一个对话框之前考虑 pgniateDialog 步骤中的那些提示。
以上是大佬教程为你收集整理的有没有办法在团队消息扩展搜索查询上启用分页?全部内容,希望文章能够帮你解决有没有办法在团队消息扩展搜索查询上启用分页?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。