botframework - 如何编写一个机器人来遍历 xml json 对象?
问题描述
我正在使用作曲家发布一个机器人来从 azure 存储表中获取数据。简而言之,bot 编写器需要构造一个 bot 来遍历 azure storage rest API 返回的 XML 反序列化 JSON 对象。
在作曲家生成的我的代码中,机器人在成功返回 REST API(存储表查询)后立即执行“设置属性”步骤。给定存储 REST API 返回的反序列化对象,应该如何构造“set property”语句以便机器人可以打印我们的单个数据字段,
表达问题的另一种方式:如何使用作曲家构造机器人来迭代返回的反序列化对象(以 XML JSON 格式编码)?
我在哪里可以找到可以阐明这个问题的文件?有什么地方可以找到一个很好的例子吗?可以通过作曲家完成吗?
提前致谢。
解决方案
是的,这是可以做到的。如果 API 返回 XML,请确保将 api 调用配置为请求内容类型application/xml
。
然后您可以使用xPath 内置函数。请注意,如果结果超过值与表达式匹配,它将返回一个数组,您可以在其中使用foreach 函数对其进行迭代。我需要运行 Composer 的每晚构建(使用 bot-builder 4.12.0)才能让它为我工作。有关更多信息,请参见此处: https ://github.com/microsoft/botbuilder-js/pull/3093
这是一个对我有用的例子:
"actions": [
{
"$kind": "Microsoft.SendActivity",
"$designer": {
"id": "rGv7XC"
},
"activity": "${SendActivity_rGv7XC()}"
},
{
"$kind": "Microsoft.HttpRequest",
"$designer": {
"id": "TDA1wO"
},
"method": "GET",
"url": "http://www.geoplugin.net/xml.gp?ip=157.54.54.128",
"resultProperty": "dialog.api_response",
"contentType": "application/xml"
},
{
"$kind": "Microsoft.SetProperty",
"$designer": {
"id": "ipNhfY"
},
"property": "dialog.timezone",
"value": "=xPath(dialog.api_response.content,'/geoPlugin/geoplugin_timezone/text()')"
},
{
"$kind": "Microsoft.SendActivity",
"$designer": {
"id": "DxohEx"
},
"activity": "${SendActivity_DxohEx()}"
}
]
您可以(如果需要/您希望)使用 json 和 jPath 内置函数将 xml 转换为 json,然后进行查询。就像是:
${json(user.testXml)} and then
${jPath(user.testJson , "automobiles")}
推荐阅读
- python-3.x - APIError(code=-1099):未找到、未经身份验证或未经授权
- vue.js - 如何以编程方式扩展 v-data-table 组件中的所有行(Vuetify 1.5 版)
- python - 在 RStudio Cloud 中使用网状结构时出错:AttributeError:模块 'altair' 没有属性 'Chart'
- elasticsearch - 从 Elasticsearh 中的嵌套和聚合中删除选定的过滤器以执行过滤搜索
- php - 使用 NGINX 反向代理作为子域通过 Docker 安装 Bookstack 的完整示例
- react-native - React Native Scrollview ref 回来未定义(大部分)
- c# - C# - Linq 通过其他属性在列表属性中选择
- android - setVisibility 只能随机工作
- java - 页面旋转时如何匹配pdf坐标?
- flutter - http 请求被 Flutter Web 的 Cors 策略阻止