MS Bot Composer中Custom Action下拉菜单通过HTTP请求填充问题咨询
MS Bot Composer自定义动作属性面板动态下拉选项实现方案
核心实现逻辑
Bot Composer的自定义动作属性面板通过配套的schema文件定义渲染规则,要实现从HTTP接口拉取数据填充下拉选项,不需要修改Composer底层代码,只要调整自定义动作的.schema和.uischema配置即可。
具体实现步骤
- 第一步:定义下拉字段
在你自定义动作的.schema文件中新增下拉对应的字段声明,示例如下:
{ "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", "title": "你的自定义动作名称", "type": "object", "properties": { "serviceName": { "title": "Service Name", "type": "string", "description": "选择需要调用的服务" } // 其他字段保持原有配置即可 } }
- 第二步:配置动态下拉规则
在自定义动作对应的.uischema文件中,给serviceName字段指定动态选择器的渲染规则,配置API请求信息:
{ "ui:order": ["serviceName", "*"], "properties": { "serviceName": { "ui:field": "dynamicSelect", "ui:options": { "fetchUrl": "你用来拉取服务列表的API地址", "method": "GET", // 按照你的API返回结构配置映射规则 "labelKey": "serviceLabel", // 数组项中作为下拉显示文本的字段名,如果API返回纯字符串数组填$value "valueKey": "serviceId", // 数组项中作为实际存储值的字段名,如果API返回纯字符串数组填$value // 接口需要鉴权的话补充headers配置 "headers": { "Authorization": "Bearer 你的鉴权凭证" } } } } }
- 第三步:生效配置
重新打包自定义动作组件,卸载项目中原有的旧版本自定义动作后重新安装,重启Bot Composer即可看到Service Name下拉会自动调用配置的API拉取数据填充选项。
注意事项
- 如果接口存在跨域问题,需要在接口服务端配置允许Bot Composer的访问域名(本地开发通常是
http://localhost:3978)的跨域请求。 - 鉴权凭证如果需要动态调整,可以配置为Composer环境变量,通过
${env.变量名}的方式在headers中引用。
内容的提问来源于stack exchange,提问作者Vignesh
相关产品推荐
相关产品推荐

