在显示带有大选择列表的自适应卡(在僵尸框架中)时,来自机器人的大小限制(262144字节的限制)出现问题



我的团队正在开发一个带有Microsoft bot框架的聊天机器人,作为一项要求,我们需要根据用户的选择显示一个动态选择列表。为此,我们使用API获取自定义响应。请参阅下面的回复示例。

{
"items": [
{
"val": {
"Field1": "Hello World"
},
"_links": {
"self": [
{
"href": "API_URL_FOR_THIS_OPTION"
}
]
}
},
{
"val": {
"Field1": "Hi World"
},
"_links": {
"self": [
{
"href": "API_URL_FOR_THIS_OPTION"
}
]
}
},
],
"_links": {
"self": [
{
"href": "MAIN_API_URL"
}
]
}
} 

这里,要在动态选择列表中显示的选项数将等于项目数组的长度。以下代码用于将此响应转换为与自适应卡兼容的选择阵列

var arr1=[]
for(var i=0; i<resp.body.items.length;i++)
{
arr1.push(resp.body.items[i].values["Field1"])
}
var choice_arr_new=[];
for(var j = 0; j<arr1.length; j++)
{
var dictionry={};
dictionry['title'] = arr[j];
dictionry['value'] = arr[j];
choice_arr_new.push(dictionry);               
}

它运行良好,但我遇到了大约250 Kb的大小限制,因为api响应有项。在某些情况下,长度超过3000。因此,我收到以下错误:在尝试将选择数组传递给自适应卡时,请求内容长度超过了262144字节的限制

问题:-

  1. 是否有任何方法可以增加大小限制以适应的大型选择数组自适应卡
  2. 有没有其他方法可以在Bot Framework中显示列表

如果你仍然想使用卡片,你必须将你的选择分成多组,并将它们分布在不同的卡片上。

如果你使用的是一个平面的选择列表,那么你可能必须同时显示许多卡片,使用旋转木马是一个好主意。您可以使用多个活动来显示多个转盘。如果你有兴趣拥有一个库,当点击其中一张卡时,它可以为你禁用多个活动,你可能想表达你对我即将推出的卡库的支持:https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/issues/137

如果你可以对你的选择进行分类,甚至可能只根据标题的第一个字母,那么你可能希望用户先选择一个类别,然后从该类别中的较小集合中选择实际的选择。

如果你想将每个选项显示为一个按钮,你可以使用常规的Bot Framework卡,而不是自适应卡。如果你曾经尝试过网络聊天示例,那么你可能已经注意到MockBot将其菜单显示为一长串带按钮的卡片。你也可以使用建议的动作,但同时显示这么多建议的动作通常不是一个好主意。

最后,您可以将所有选择显示为一个编号列表,这样用户就可以将其选择作为文本输入。

最新更新