首页 > 解决方案 > 有没有办法在 WebChat 中检查用户输入文本框是否处于活动状态?

问题描述

我正在使用 Bot Framework WebChat 作为我的 Bot 的 UI。对于我的场景,我需要知道用户当前是否正在通过语音或键入在输入文本框中输入一些数据。WebChat 中是否有任何方法可以检查当前是否有一些输入被馈送到输入框?我没有在我的应用程序中使用 React,因此在使用 React 托管时可能无法使用 WebChat 提供的各种 React Hooks。

标签: botframeworkdirect-line-botframeworkweb-chat

解决方案


最简单的方法是使用eventListener()放置在您的页面中。目前,输入框位于脚本窗口下方的一个div中,具有“表单”的作用。里面是一个带有“main”类的div。在那里,您可以找到应该只有一个的输入元素。

现在,Web Chat 中可能还有其他元素具有“表单”的作用,它们可以是本机的,也可以是作为其他 Web Chat(或其他)代码的功能添加的。因此,您需要在编写代码时牢记这一点。下面,出于同样的原因,即使只有一个,我也会在“form”中选择所有具有“main”类的元素。如果你有信心,你可以把这一步删掉。

开箱即用,这将起作用:

const form = document.querySelectorAll('form');
const main = form[0].querySelectorAll('main');
const input = main[0].querySelector('input');

input.addEventListener('keyup', () => {
  console.log('typing');
})

显然,您可以尝试使用其他事件类型来找到适合您需求的合适方式。

希望有帮助!


推荐阅读