botframework - 如何使用机器人作曲家动态配置 HTTP 请求的正文部分
问题描述
我正在使用 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 REQUEST 的正文部分中编写表达式
感谢您提供任何信息/帮助。
解决方案
是的,你可以这样做。最简单的方法是将正文设置为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())
,但这还不太有效。可能是一个错误。当我有更多信息时,我会更新。
推荐阅读
- python - Kivy 自定义按钮 on_press 更改画布颜色
- node.js - 如何杀死在 localhost:8080 (MacOS) 上运行的 VueJS 应用程序
- firebase - 专家想要 AngularFire2 firestore 嵌套集合获取数据?
- sql - 如何通过比较两个字段并考虑性能来连接表
- sql - 链接服务器“(null)”的 OLE DB 提供程序“MSDASQL”无法更新表“[MSDASQL]”。Pervasive 的未知提供程序错误
- reactjs - 如何从我的 redux 状态添加/删除项目
- javascript - 使用 rxjs 实现指数退避
- python - 通过 TCP 套接字发送消息
- sails.js - 使用 postgres 将模型添加到现有的sailsjs 应用程序
- javascript - 猫鼬查找嵌套子文档(日期类型)是否在日期间隔内