在 Bot Framework .net 中按变量过滤数组
Filter array by variable in Bot Framework .net
对于 array1 中的每个项目,我想通过机器人当前所在的 array1 项目过滤 array2。
在编辑数组 属性 中,如果我像这样硬编码过滤 array2,它会创建一个漂亮的数组:
"changeType": "push",
"itemsProperty": "user.array2",
"value": "=where(json(user.apiResponse.content).value,x,x.myKey=='magazine')"
但是,如果我使用基于 array1 中当前项目的动态键,这将不起作用:
"changeType": "push",
"itemsProperty": "user.array2",
"value":"=where(json(user.apiResponse.content).value,x,x.myKey==concat('\'',json(dialog.forEachThing.value).name,'\''))
我试过设置 属性、user.myFilter 并传递它,如下所示。
"property": "user.myFilter",
"value": "=concat('\'',json(dialog.forEachThing.value).name,'\'')"
虽然此 user.myFilter 正确计算为 'magazine',但编辑数组 property/push 没有获得任何值。
我真的很欢迎任何关于我哪里出错的想法。我在 user.myFilter 中尝试了一些类似 '''' 的东西,但这些评估为空。
好的,这里为关注者更新了答案。
原来我错了。无论如何,在 .Net 中,解决方案就是不要将变量用单引号引起来。感谢 github 中的 Dana V 提醒。
但似乎在 Javascript 中可能不起作用。
对于 array1 中的每个项目,我想通过机器人当前所在的 array1 项目过滤 array2。
在编辑数组 属性 中,如果我像这样硬编码过滤 array2,它会创建一个漂亮的数组:
"changeType": "push",
"itemsProperty": "user.array2",
"value": "=where(json(user.apiResponse.content).value,x,x.myKey=='magazine')"
但是,如果我使用基于 array1 中当前项目的动态键,这将不起作用:
"changeType": "push",
"itemsProperty": "user.array2",
"value":"=where(json(user.apiResponse.content).value,x,x.myKey==concat('\'',json(dialog.forEachThing.value).name,'\''))
我试过设置 属性、user.myFilter 并传递它,如下所示。
"property": "user.myFilter",
"value": "=concat('\'',json(dialog.forEachThing.value).name,'\'')"
虽然此 user.myFilter 正确计算为 'magazine',但编辑数组 property/push 没有获得任何值。
我真的很欢迎任何关于我哪里出错的想法。我在 user.myFilter 中尝试了一些类似 '''' 的东西,但这些评估为空。
好的,这里为关注者更新了答案。
原来我错了。无论如何,在 .Net 中,解决方案就是不要将变量用单引号引起来。感谢 github 中的 Dana V 提醒。
但似乎在 Javascript 中可能不起作用。