Bot Framework Composer能否通过自定义动作/HTTP调用保存对话数据到外部关系型数据库
Bot Framework Composer 保存对话Transcript到外部关系型数据库的实现方案
答案是完全可以,你提到的两种方式都能实现需求,具体操作方案如下:
方案1:通过HTTP调用实现(新手友好,无需修改后端代码框架)
- 第一步:自行开发对应后端接口,接口接收POST请求,内部封装好和你的关系型数据库(MySQL、SQL Server、PostgreSQL等)的连接、数据写入逻辑即可。
- 第二步:在Composer的设置页面,将你部署的接口域名添加到允许的外部服务调用列表中。
- 第三步:在对话流的对应节点(单轮交互结束节点、会话结束节点均可)添加
Send an HTTP request内置动作,请求方式选POST,请求地址填你的接口地址,请求体传入需要存储的对话字段即可,常用的transcript字段都可以从Composer内置变量中直接获取:- 会话ID:
turn.activity.conversation.id - 消息发送方ID:
turn.activity.from.id - 消息内容:
turn.activity.text - 消息时间戳:
turn.activity.timestamp - 发送方类型(用户/机器人):
turn.activity.from.role
- 会话ID:
方案2:通过Custom Actions实现(适合复杂存储逻辑,性能更高)
- 第一步:使用C#创建自定义动作类,继承
OnDialogEvent基类,在类内部直接编写关系型数据库的连接、写入逻辑,可直接获取当前会话上下文的全量transcript数据。 - 第二步:将编写完成的自定义动作打包后导入Composer,之后可以像使用平台内置动作一样,在对话流中拖拽调用该自定义存储动作即可。
额外优化建议
如果需要存储全量完整的对话Transcript,不需要在每个对话节点单独添加存储动作,可以直接配置全局对话中间件,拦截每一轮交互事件自动触发存储逻辑,开发效率更高。
内容的提问来源于stack exchange,提问作者liyk50
相关产品推荐
相关产品推荐

