0

我正在使用作曲家发布一个机器人来从 azure 存储表中获取数据。简而言之,bot 编写器需要构造一个 bot 来遍历 azure storage rest API 返回的 XML 反序列化 JSON 对象。

在作曲家生成的我的代码中,机器人在成功返回 REST API(存储表查询)后立即执行“设置属性”步骤。给定存储 REST API 返回的反序列化对象,应该如何构造“set property”语句以便机器人可以打印我们的单个数据字段,

表达问题的另一种方式:如何使用作曲家构造机器人来迭代返回的反序列化对象(以 XML JSON 格式编码)?

我在哪里可以找到可以阐明这个问题的文件?有什么地方可以找到一个很好的例子吗?可以通过作曲家完成吗?

提前致谢。

4

1 回答 1

0

是的,这是可以做到的。如果 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")}

于 2021-01-25T20:33:49.687 回答