如何以编程方式清除聊天窗口中输入字段(发送框)的内容| MS Bot框架|直线机器人

问题描述 投票:0回答:2

我在后端的聊天机器人中使用QnAMaker,该聊天机器人在直接机器人通道中运行。在这种情况下,我想清除输入字段中的内容,为此,我使用了以下简单的JavaScript行

document.querySelector("[aria-label='Sendbox']").value ="";

此时会清除内容,但是当我们在输入字段中单击以键入下一个问题时,它会再次出现。因此,内容实际上并未清除。

因此,建议我一种以编程方式永久清除聊天窗口的输入字段(发送框)的方法。

javascript botframework direct-line-botframework
2个回答
0
投票

您可能对此答案感兴趣:How to add AutoComplete/AutoSuggestion in Microsoft botframework webchat using React.js

网络聊天使用的Redux具有可以使用的Redux storeRedux middleware。网络聊天有一个名为WEB_CHAT/SET_SEND_BOX可以用来回应用户在文本输入框中输入以下内容:

WEB_CHAT/SET_SEND_BOX

[当用户单击建议或按右键时,您可以使用相同的操作来更改文本输入框中的内容,如下所示:

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);
    }
);

网络聊天存储中有store.dispatch({ type: 'WEB_CHAT/SET_SEND_BOX', payload: { text: user_selected_suggestion, } }); ,可能有助于使用网络聊天中的Redux操作

您正在尝试在不使用Redux存储的情况下编辑发件箱中的内容,因此Web Chat不会知道您要进行的更改。如果将samples操作与空文本一起使用,则可以正确清除发送框。


-1
投票

通过代码清除输入字段似乎没有问题。如果这是您想要的。

WEB_CHAT/SET_SEND_BOX
function clearField() {
  document.querySelector("[aria-label='Sendbox']").value ="";
}
© www.soinside.com 2019 - 2024. All rights reserved.