当使用数组对象时,如何在bot框架编辑器中传递动态变量值



所以我的问题/挑战是,我通过http请求获得了一些数据,我想用这些数据来动态构建多按钮操作。

因此,从我的http请求中,我可能会得到1到多个值,然后我会使用这些值为每个项目循环构建到bot的输出操作。

如果我在向数组添加新对象时使用静态内容,例如,则一切正常

{ "type": "Action.Submit",
"title": "my title",
"data": "my data"
}

因此,这打印出一个按钮,上面写着";我的头衔";

但后来我试图使用那里的属性来传递我的数据,它只打印出属性名称,而不是其中的值

{ "type": "Action.Submit",
"title": "${turn.myTitle}",
"data": "${turn.myData}"
}

现在只打印出属性/变量名${turn.MyTitle}

那么,有什么方法可以传递这里的实际数据吗?我可以看到,如果我的类型是字符串,那么数据在其他方面是可以的,但它不再作为和对象工作(因为在开始和结束处有额外的双引号(

因此,回答我自己的问题,因为当你几天都不关注这个话题时,这似乎会有所帮助:(

因此,通过对象,然后创建数组:

  1. 使用集合属性创建对象值,例如turn.action。<名称/值>将特性设置为对象
  2. 在这之后,编辑一个数组属性,您只需将对象作为表达式"推送;turn.actions";按入阵列

一旦你有了这个,数组应该显示正确的值,比如:

[ {"type":"Action.Submit"}, {"title":"<your title value>"}, {"data":"<your data value>"} ]

然后在foreach中循环这个来构建多个动作按钮。

参考:

  • https://github.com/microsoft/BotFramework-Composer/issues/3026
  • https://learn.microsoft.com/en-us/azure/bot-service/adaptive-expressions/adaptive-expressions-prebuilt-functions?view=azure-bot-service-4.0#setProperty

最新更新