Javascript 在botframework webchat中发送消息(来自建议)后,如何清除聊天输入框?

Javascript 在botframework webchat中发送消息(来自建议)后,如何清除聊天输入框?,javascript,reactjs,botframework,direct-line-botframework,web-chat,Javascript,Reactjs,Botframework,Direct Line Botframework,Web Chat,我正在使用react js和botframework webchat开发一个机器人应用程序。问题是,我想在发送消息后清除文本输入框(从发送MSG的位置),这是从建议中选择的。建议列表(或自动完成组件)是一个自定义编码的列表。我的意思是,如果我输入“hr”,建议列表弹出窗口就会出现,如果我点击建议中的一个选项,比如“hr门户”,它就会被发送,但我写的“hr”仍保留在输入字段中,我想清除它。请注意,如果我键入一些内容并发送其工作状态良好。问题只是当我键入一些内容并从建议中选择一些内容时。其他一切都很

我正在使用react js和botframework webchat开发一个机器人应用程序。问题是,我想在发送消息后清除文本输入框(从发送MSG的位置),这是从建议中选择的。建议列表(或自动完成组件)是一个自定义编码的列表。我的意思是,如果我输入“hr”,建议列表弹出窗口就会出现,如果我点击建议中的一个选项,比如“hr门户”,它就会被发送,但我写的“hr”仍保留在输入字段中,我想清除它。请注意,如果我键入一些内容并发送其工作状态良好。问题只是当我键入一些内容并从建议中选择一些内容时。其他一切都很好。我怎样才能澄清这一点。任何帮助都将不胜感激

请查看下图以了解更多信息

这是我的密码

从“React”导入React;
从'botframework directlinejs'导入{DirectLine,ConnectionStatus};
从“botframework webchat”导入ReactWebChat;
导入“./ChatComponent.css”;
var-val;
var-apiParameters=[];
var currentFocus=-1;
导出默认类扩展React.Component{
建造师(道具){
超级(道具);
此.state={
令牌:“”,
会话ID:“”,
直接行:{},
观点:错,
反馈:空,
值:“”,
弹出内容:“”,
storeValue:“”,
建议:[],
suggestionCallback:“”,
suggestionTypedText:“”,
输入检查:“假”,
};
this.handleTokenGeneration=this.handleTokenGeneration.bind(this);
this.handleChange=this.handleChange.bind(this);
this.handleSaveFeedback=this.handleSaveFeedback.bind(this);
this.handleSuggestion=this.handleSuggestion.bind(this);
this.handleClose=this.handleClose.bind(this);
this.handleSuggestionClick=this.handleSuggestionClick.bind(this);
this.handleKeyDown=this.handleKeyDown.bind(this);
this.moveHighlight=this.moveHighlight.bind(this);
this.getSuggestionHtml=this.getSuggestionHtml.bind(this);
}
getSuggestionHtml(建议){
const lowercasessuggestion=suggestion.toLowerCase();
返回{
__html:LowercasesSuggestion.includes(this.state.suggestionTypedText)?LowercasesSuggestion
.replace(this.state.suggestionTypedText,`${this.state.suggestionTypedText}`):小写建议
};
}
handleTokenGeneration=async()=>{
控制台日志(“11111”);
const response=wait fetch(`api/TokenGenerationService/GetToken`);
const data=wait response.json();
这是我的国家({
令牌:data.categoryObject.token,会话ID:
data.categoryObject.conversationId
});
this.state.directLine=新的directLine({token:this.state.token});
this.setState({view:true});
this.setState({typingChecking:“true”});
console.log(“会话ID”);
};
异步handleSuggestion(val,存储){
如果(val==“”){
这是我的国家({
建议:[]
});
}
否则{
apiParameters=[];
var值=null;
const response=wait fetch(`api/TokenGenerationService/GetAzureSearch?myparam1=${val}`);
const data=wait response.json();
var值=[“您好”、“是”、“否”、“退出”、“欢迎”、“谢谢”、“批准”、“申请休假”、“拒绝”、“缺勤余额”、“休假余额”、“即将到来的假期”、“申请补假”、“批准休假”、“提出事件通知单”、“项目分配信息”、“报告经理变更”、“报告经理批准”、“批准独立通知单”、“我的经理”,“我的客户经理”、“生成工资证书”、“独立票证状态”、“内部职位公告”、“我的指定”、“我的加入日期”、“RM批准”、“RM更改”、“资源分配”、“E安装批准”、“SO批准”、“现金预付批准”、“采购申请批准”、“转介状态”、“HR票证”、“白金支持”];
valuess=values.filter(s=>
s、 toLocaleLowerCase().StartWith(val.toLowerCase())
);
valuess=valuess.concat(data.az_search);
这是我的国家({
建议:价值观,
suggestionCallback:store,
suggestionTypedText:val.toLowerCase()
});
//警报(data.az_搜索);
var totCount=data.az_搜索;
console.log(“kkk”+totCount);
}
}
移动突出显示(事件、方向){
event.preventDefault();
const{highlightedIndex,suggestions}=this.state;
如果(!suggestions.length)返回;
让newIndex=(highlightedIndex+方向+建议.length)%suggestions.length;
if(newIndex!==highlightedIndex){
这是我的国家({
highlightedIndex:newIndex,
});
}
}
keyDownHandlers={
向下箭头(事件){
此项。移动突出显示(事件,1);
},
向上箭头(事件){
此.moveHighlight(事件-1);
},
输入(事件){
const{suggestions}=this.state;
如果(!suggestions.length){
//菜单已关闭,因此没有可接受的选择->不执行任何操作
返回
}
event.preventDefault()
this.applySuggestion(建议[this.state.highlightedIndex]);
},
}
handleKeyDown(事件){
//console.log(“lokkkk”)
if(this.keyDownHandlers[event.key])
this.keyDownHandlers[event.key].call(this,event)
}
异步句柄建议单击(事件){
等待这个。应用建议(事件)。
if (sendBoxValue) {
  yield put(sendMessage(sendBoxValue.trim(), method, { channelData }));
  yield put(setSendBox(''));
}