当欢迎卡呈现时,如何在 microsoft botframework 网络聊天中禁用自动“滚动到底部”?

问题描述 投票:0回答:2

我正在使用microsoft botframework的webchat cdn来制作聊天机器人。当显示欢迎消息时,我的欢迎卡下方有几个按钮超出了聊天窗口的可见区域。因此,它会自动滚动到底部。我通过单击小部件按钮触发网络聊天。我想在欢迎消息卡出现时禁用滚动到按钮,以便用户可以看到欢迎卡区域,而不是按钮。如何禁用自动滚动?

javascript botframework direct-line-botframework web-chat
2个回答
1
投票

不幸的是,没有禁用自动滚动的选项。有一个示例 04.api/n.save-restore-scroll-position,演示了如何在遍历网络聊天记录窗口时保存和恢复滚动位置。

您可以更改该示例,以便在收到每张新卡时在某个位置自动创建保存点。

本质上,您可以利用网络聊天的

store
来监控活动,检查来自机器人并带有附件的活动。当发生这种情况时,触发一个事件,该事件可以触发保存滚动位置的过程,类似于按下的按钮。

但是,在这种情况下可能存在时间问题,因为

store
是收到活动时的第一站。然后它继续被渲染。因此,在商店中执行的任何影响渲染的代码通常需要延迟 50 - 300 毫秒才能运行。请记住,如果成功的话,不能保证每次都会停在同一位置。以下是演示设置的示例。

const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => async action => {
  if ( action.type === 'DIRECT_LINE/INCOMING_ACTIVITY' ) {
    const { activity } = action.payload;
      setTimeout(() => {
      if ( activity && activity.attachments) {
        if (activity.attachments[0].contentType === 'application/vnd.microsoft.card.adaptive' ) {
            // Do stuff
        }
      }
    }, 300);
  }
})

其他一些可能更好的选择是做一些与上面类似的事情,除了在activityMiddleware

attachmentMiddleware
中。这些选项允许您在渲染活动时进行操作,但它们也可能更加挑剔。
总而言之,尝试上述任何一种方法时,您的里程可能会有所不同,并且可能需要一些按摩才能完全知道它是否有效。

如果您认为这应该是一个包含的选项,我建议将其作为 BotFramework-WebChat 存储库中的

功能请求

如果您仍然遇到问题。请在

0
投票
下查看此标志。

autoScrollSnapOnPage

© www.soinside.com 2019 - 2024. All rights reserved.