我如何编写一个机器人来遍历 xml json 对象?
how can I compose a bot to iterate trough a xml json object?
我正在使用 composer 发布一个机器人以从 azure 存储中获取数据 table。
简而言之,bot composer 需要构建一个 bot 来遍历由 azure storage rest API.
编辑的 XML 反序列化 JSON 对象 return
在我由作曲家生成的代码中,机器人在 REST API(存储 table 成功 return 之后立即执行“设置 属性”步骤询问)。给定由存储 REST API 编辑的反序列化对象 return,应该如何构造“set 属性”语句以便机器人可以打印我们的个人数据字段,
问题的另一种表达方式:如何使用作曲家构建机器人来遍历 returned 反序列化对象(以 XML JSON 格式编码)?
我在哪里可以找到可以阐明这个问题的文件?
有什么地方可以找到一个很好的例子吗?可以通过 composer 完成吗?
提前致谢。
是的,可以做到。如果 API returns XML,请确保将 api 调用配置为请求内容类型 application/xml
.
然后你可以使用 xPath built in function. Make note that it will return an array if results in more than value matches the expression, in which you can use the foreach function 来迭代它。我需要 运行 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()}"
}
]
您可以(如果 needed/you 希望)使用 json 和 jPath 内置函数将 xml 转换为 json 然后查询。类似于:
${json(user.testXml)} and then
${jPath(user.testJson , "automobiles")}
我正在使用 composer 发布一个机器人以从 azure 存储中获取数据 table。 简而言之,bot composer 需要构建一个 bot 来遍历由 azure storage rest API.
编辑的 XML 反序列化 JSON 对象 return在我由作曲家生成的代码中,机器人在 REST API(存储 table 成功 return 之后立即执行“设置 属性”步骤询问)。给定由存储 REST API 编辑的反序列化对象 return,应该如何构造“set 属性”语句以便机器人可以打印我们的个人数据字段,
问题的另一种表达方式:如何使用作曲家构建机器人来遍历 returned 反序列化对象(以 XML JSON 格式编码)?
我在哪里可以找到可以阐明这个问题的文件? 有什么地方可以找到一个很好的例子吗?可以通过 composer 完成吗?
提前致谢。
是的,可以做到。如果 API returns XML,请确保将 api 调用配置为请求内容类型 application/xml
.
然后你可以使用 xPath built in function. Make note that it will return an array if results in more than value matches the expression, in which you can use the foreach function 来迭代它。我需要 运行 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()}"
}
]
您可以(如果 needed/you 希望)使用 json 和 jPath 内置函数将 xml 转换为 json 然后查询。类似于:
${json(user.testXml)} and then
${jPath(user.testJson , "automobiles")}