Я использую Bot Framework WebChat в качестве пользовательского интерфейса для своего бота. В моем сценарии мне нужно было бы знать, вводит ли пользователь какие-то данные в текстовое поле «Ввод» голосом или путем набора текста. Есть ли способ в WebChat проверить, поступает ли в настоящее время какой-либо ввод в поле ввода? Я не использую React в своем приложении и, следовательно, не смогу использовать различные React Hooks, предоставляемые WebChat при размещении с React.
Есть ли способ проверить, активно ли текстовое поле ввода пользователя в WebChat?
Ответы (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');
})
Очевидно, что вы можете поэкспериментировать с другими типами событий, чтобы найти то, что вам подходит.
Надеюсь на помощь!