Я работаю над требованием, в котором мне нужно реализовать функцию автозаполнения в React Web Chat. Я создал и развернул Azure Echo Bot и использовал React Web Chat и прямую линию для пользовательского интерфейса. Для добавления автозавершения я создал список образцов высказываний, которые должны отображаться, когда пользователь что-то вводит. Ниже приведен мой код App.js, в котором у меня есть концепция магазина redux из веб-чата Bot framework.
Здесь, когда я запускаю код, список предложений отображается в моем пользовательском интерфейсе, но событие по щелчку для выбора предложения не работает, а также ввод пользователя не отображается в окне чата.
Может ли кто-нибудь помочь мне с решением ниже.
import React, { useMemo,useEffect } from 'react';
import ReactWebChat, { createDirectLine, createStore } from 'botframework-webchat';
const items = [
"What is your name?",
"What is your job?",
"Who are you?"];
function App() {
const [listItems, setlistItems] = React.useState([]); //for creating list of suggested values
const [textValue, setTextValue] = React.useState(''); // for saving the suggested value when user clicks
const store = createStore({},
store => next => action => {
if (action.type === 'WEB_CHAT/SET_SEND_BOX') {
let value = action.payload.text;
const regex = new RegExp(`^${value}`, 'i');
let suggestions = items.sort().filter(v => regex.test(v));
setlistItems(suggestions);
setTextValue(textValue);
}
return next(action);
}
);
function suggestionSelected(value) {
setlistItems([]);
setTextValue(value);
}
const renderSuggestions = () => {
if (listItems.length === 0) {
return null;
}
return (
<div className="srchList">
<ul>
{listItems.map((item, idx) => <li key={idx} onClick={() => suggestionSelected(item)}>{item}</li>)}
</ul>
</div>
);
}
const directLine = useMemo(() => createDirectLine({ secret: '**************' }), []);
return (
<div>
<h1> Hello</h1>
<ReactWebChat
directLine={directLine}
store={store}
/>
<div>{renderSuggestions()}</div>
</div>
)
}
export default App;