【问题标题】:How can I use the bot composer to dynamically configure the body part of a HTTP REQUEST如何使用机器人作曲家动态配置 HTTP 请求的正文部分
【发布时间】:2021-01-29 17:25:14
【问题描述】:

我正在使用 Bot Composer 发布我的第一个聊天机器人。我需要构建聊天机器人来发送 HTTP POST 请求以从远程网站获取外部资源。正如 composer 接口所指定的,我可以在 HTTP POST 请求的正文中嵌入 JSON、表单数据或字符串。我不需要对 POST 请求的正文部分进行硬编码,而是需要传入一个或多个属性(聊天机器人的变量)来动态生成 HTTP POST 的正文。以下是我的问题:

(1) 我可以将变量传递给 HTTP REQUEST(如 POST)的正文部分吗?我可以在 HTTP POST 正文中嵌入诸如 $(user.name) 的属性吗?

例如,我可以在字符串或表单数据中嵌入 $(user.name) 等属性(例如 fname=$(user.name) 来构造 HTTP POST REQUEST 的正文部分吗?

(2) 文档规定有一个预构建函数JSON来序列化数据。如果我理解正确,我无法将变量(例如 $(user.name) 传递给 JSON 预构建函数。因此,我可能需要在正文中嵌入一个表达式来传递变量。然而,我找不到任何详细信息。我是否可以在任何地方找到一个很好的示例来展示如何在 HTTP 请求的正文部分中编写表达式

感谢您提供任何信息/帮助。

【问题讨论】:

    标签: botframework chatbot azure-bot-service


    【解决方案1】:

    是的,您可以这样做。最简单的方法是将 body 设置为 Object,然后放入您的结构化 json,类似于:

    {
      "userinfo": {
        "username": "${user.username}",
        "name": "${user.personalname}",
        "favoritecolor": "${user.favcolor}",
        "profileupdated":"${dialog.userprofileuptodate}"
      }
    }
    

    我正在尝试弄清楚如何在 LG 中将其设置为自适应表达式,然后能够通过以下方式引用它:

    # APIBodyTemplate()
    -```
    {
      "userinfo": {
        "username": "${user.username}",
        "name": "${user.personalname}",
        "favoritecolor": "${user.favcolor}",
        "profileupdated":"${dialog.userprofileuptodate}"
      }
    }
    ```
    

    然后在 body 字段的表达式中使用类似以下的内容: =json(APIBodyTemplate()),但这还没有完全奏效。可能是一个错误。当我有更多信息时,我会更新。

    【讨论】:

    • 嗯,现在它对我不起作用。待命。
    • 抱歉,复制了错误的代码。占位符缺少{}。在上面的答案中修复。
    猜你喜欢
    • 2015-11-16
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多