You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

父网页跳转时如何保持Microsoft Bot可见及会话状态,附QnA Maker问题

需求实现解决方案

一、页面跳转后保留Bot可见性与会话历史的实现方式

常规iframe嵌入方式会随父页面刷新销毁,可根据你的技术栈选择以下两种方案:

  • 方案1:公共布局集成Web Chat+会话持久化(推荐)
    放弃iframe嵌入逻辑,直接在官网所有页面的公共通用模板中集成Web Chat JS SDK,同时做两处配置:
    1. 给每个访问用户生成唯一固定标识,存储在localStorage中,调用Direct Line接口时始终携带该标识
    2. 开启Web Chat的会话持久化能力,将历史会话记录存储在localStorage/sessionStorage中,页面加载时自动读取历史记录渲染
      该方案下Bot控件会固定悬浮在页面固定位置(如右下角),用户跳转页面时每个页面都会加载Bot控件且自动恢复之前的全部会话内容,用户感知不到Bot重启,对现有业务逻辑侵入最小。
  • 方案2:顶层框架嵌套方案
    若不想调整现有多页网站的业务逻辑,可新增一个父级页面,将整站内容放在父级页面的下层iframe中,Bot控件放在父级页面的固定悬浮层,用户点击链接时仅跳转下层iframe的内容,父级页面的Bot始终保持运行,不会被刷新。
    该方案改造成本极低,只需调整全站链接的target属性指向下层iframe的name属性,避免链接跳出框架即可。

二、QnA Maker链接target属性修改方案

可选择以下两种方式实现自定义属性替换:

  • 方式1:Bot端拦截修改
    在Bot Composer中添加自定义中间件,拦截QnA Maker返回的答案内容,通过正则匹配将所有target="_blank"属性替换为你需要的target="_top"/target="_parent",再返回给前端渲染。
  • 方式2:前端层统一处理(更灵活)
    在前端集成Web Chat时,监听消息渲染事件,所有包含链接的消息渲染前,统一修改DOM元素的target属性,覆盖QnA Maker的默认配置。该方式不需要修改Bot端逻辑,调整无需重新发布Bot,推荐优先使用。

内容的提问来源于stack exchange,提问作者StellarFan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:24:00