如何以编程方式清除聊天中输入字段(发送框)的内容 window | MS Bot 框架 |直线机器人
How to programmatically clear the content of the input field (sendbox) in the chat window | MS Bot framework | Directline bot
我在聊天机器人的后端使用 QnAMaker,它在直线机器人频道中 运行。在我想清除输入字段中的内容的情况下,我使用了以下简单的 JavaScript 行
document.querySelector("[aria-label='Sendbox']").value ="";
它在那一刻清除了内容,但是当我们在输入字段内单击以键入下一个问题时它又出现了。所以内容实际上并没有被清除。
所以建议我一种方法,我应该以编程方式永久清除聊天 window 的输入字段(发送框)。
您可能对此答案感兴趣:How to add AutoComplete/AutoSuggestion in Microsoft botframework webchat using React.js
Web Chat uses Redux which has a Redux store that can use
Redux middleware. Web chat has an action called
WEB_CHAT/SET_SEND_BOX
that can be used to respond to what the
user types in the text input box like this:
const store = window.WebChat.createStore(
{},
store => next => action => {
if (action.type === 'WEB_CHAT/SET_SEND_BOX') {
const user_entered_text = action.payload.text;
// Use the text to query the Azure database and display suggestions
}
return next(action);
}
);
When the user clicks on a suggestion or presses the right key, you can
use that same action to change what's in the text input box like this:
store.dispatch({
type: 'WEB_CHAT/SET_SEND_BOX',
payload: {
text: user_selected_suggestion,
}
});
There are samples in the Web Chat repo that may help with using
Redux actions in Web Chat
您正在尝试在不使用 Redux 存储的情况下编辑发送箱的内容,因此网络聊天不知道您正在尝试进行的更改。如果您使用带有空文本的 WEB_CHAT/SET_SEND_BOX
操作,那么您可以正确清除发送框。
问题的确切解决方案是以下代码。
function clearinput()
{
store.dispatch({
type: 'WEB_CHAT/SET_SEND_BOX',
payload: {
text: "",
}
});
document.querySelector("[aria-label='Sendbox']").value ="";
}
感谢 Kyle Delaney 的详细解释,根据您的意见我已经做到了。
我在聊天机器人的后端使用 QnAMaker,它在直线机器人频道中 运行。在我想清除输入字段中的内容的情况下,我使用了以下简单的 JavaScript 行
document.querySelector("[aria-label='Sendbox']").value ="";
它在那一刻清除了内容,但是当我们在输入字段内单击以键入下一个问题时它又出现了。所以内容实际上并没有被清除。
所以建议我一种方法,我应该以编程方式永久清除聊天 window 的输入字段(发送框)。
您可能对此答案感兴趣:How to add AutoComplete/AutoSuggestion in Microsoft botframework webchat using React.js
Web Chat uses Redux which has a Redux store that can use Redux middleware. Web chat has an action called
WEB_CHAT/SET_SEND_BOX
that can be used to respond to what the user types in the text input box like this:const store = window.WebChat.createStore( {}, store => next => action => { if (action.type === 'WEB_CHAT/SET_SEND_BOX') { const user_entered_text = action.payload.text; // Use the text to query the Azure database and display suggestions } return next(action); } );
When the user clicks on a suggestion or presses the right key, you can use that same action to change what's in the text input box like this:
store.dispatch({ type: 'WEB_CHAT/SET_SEND_BOX', payload: { text: user_selected_suggestion, } });
There are samples in the Web Chat repo that may help with using Redux actions in Web Chat
您正在尝试在不使用 Redux 存储的情况下编辑发送箱的内容,因此网络聊天不知道您正在尝试进行的更改。如果您使用带有空文本的 WEB_CHAT/SET_SEND_BOX
操作,那么您可以正确清除发送框。
问题的确切解决方案是以下代码。
function clearinput()
{
store.dispatch({
type: 'WEB_CHAT/SET_SEND_BOX',
payload: {
text: "",
}
});
document.querySelector("[aria-label='Sendbox']").value ="";
}
感谢 Kyle Delaney 的详细解释,根据您的意见我已经做到了。