Есть ли способ проверить, активно ли текстовое поле ввода пользователя в WebChat?

Я использую Bot Framework WebChat в качестве пользовательского интерфейса для своего бота. В моем сценарии мне нужно было бы знать, вводит ли пользователь какие-то данные в текстовое поле «Ввод» голосом или путем набора текста. Есть ли способ в WebChat проверить, поступает ли в настоящее время какой-либо ввод в поле ввода? Я не использую React в своем приложении и, следовательно, не смогу использовать различные React Hooks, предоставляемые WebChat при размещении с React.


person Manish Sridhar    schedule 13.04.2020    source источник
comment
Принятие / голосование ответа служит большему сообществу Stack Overflow и всем, у кого есть аналогичный вопрос. Если вы считаете, что моего ответа было достаточно, примите его и проголосуйте за него. Если нет, дайте мне знать, чем еще я могу помочь!   -  person Steven Kanberg    schedule 11.05.2020


Ответы (1)


Самый простой способ - использовать eventListener(), размещенный на вашей странице. В настоящее время поле ввода находится в блоке div под окном стенограммы и выполняет роль «формы». Внутри него находится div с классом main. Там вы можете найти элемент ввода, из которого должен быть только один.

Теперь в веб-чате могут быть другие элементы с ролью «формы», либо изначально, либо добавленные как функция какого-либо другого кода веб-чата (или другого). Итак, вам нужно будет написать свой код с учетом этого. Ниже я также выбираю все элементы с классом «main» внутри «form» по той же причине, хотя есть только один. Если вы уверены в себе, вы можете отказаться от этого шага.

Из коробки это будет работать:

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

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

Очевидно, что вы можете поэкспериментировать с другими типами событий, чтобы найти то, что вам подходит.

Надеюсь на помощь!

person Steven Kanberg    schedule 11.05.2020
comment
Это поможет в случае ввода в виде набора текста, но мой вариант использования в основном управляется голосом, есть ли другой метод для этого? - person Manish Sridhar; 13.05.2020