【问题标题】:Is there a way to check whether the user input text box is active, in WebChat?有没有办法在 WebChat 中检查用户输入文本框是否处于活动状态?
【发布时间】:2020-04-13 11:42:39
【问题描述】:

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

【问题讨论】:

  • 接受/投票支持更大的 Stack Overflow 社区和任何有类似问题的人。如果您觉得我的回答足够,请“接受”并点赞。如果没有,请告诉我我还能提供哪些帮助!

标签: botframework direct-line-botframework web-chat


【解决方案1】:

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

现在,网络聊天中可能还有其他元素具有“表单”的作用,这些元素可能是本机的,也可能是作为其他一些网络聊天(或其他)代码的功能添加的。因此,您需要在编写代码时牢记这一点。下面,出于同样的原因,即使只有一个,我也会在“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');
})

显然,您可以尝试其他 event types 来找到适合您需求的合适人选。

希望有帮助!

【讨论】:

  • 这在以打字形式输入的情况下会有所帮助,但我的用例主要是语音驱动的,还有其他方法吗?
猜你喜欢
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2014-05-24
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多