Botframework &引用;网络中断。重新连接…&引用,如何在最小化或最大化chabot时自动重新连接

Botframework &引用;网络中断。重新连接…&引用,如何在最小化或最大化chabot时自动重新连接,botframework,Botframework,我们已经实现了bot框架webchat来创建一个bot。目前,我们通过组件中传递的事件(如下所示的代码)处理最小化和最大化,但当我最小化然后最大化我看到的聊天机器人“无法连接”消息,然后它会闪烁,如果一小时后,如果我们最小化并最大化我得到的“网络中断”发生,重新连接…“当我最小化和最大化Chabot时,如何保持webchat可能自动重新连接 MaximizeChatWndow () { if (this.state.token === null && this.sta

我们已经实现了bot框架webchat来创建一个bot。目前,我们通过组件中传递的事件(如下所示的代码)处理最小化和最大化,但当我最小化然后最大化我看到的聊天机器人“无法连接”消息,然后它会闪烁,如果一小时后,如果我们最小化并最大化我得到的“网络中断”发生,重新连接…“当我最小化和最大化Chabot时,如何保持webchat可能自动重新连接

MaximizeChatWndow () {
  if (this.state.token === null &&
    this.state.productService === null) {
    return
  }

  this.setState({
    directLine: this.createDirectLine()
  }, () => {
    this.setState({
      minimized: false,
      newMessage: false,
      userId: 'User_' + Math.random
    })
  })
  this.checkExpandFlag = true
}
组成部分:

render () {
  const {
    state: { minimized, store }
  } = this 
  return (
    <Row>
     <Col md={12}>
       <div>
         {minimized ? (
           <ChatDon
             handleMaximizeButtonClick={this.handleMaximizeButtonClick}
           />
         ) : (
           <ChatWin
             handleMinimizeButtonClick={this.handleMinimizeButtonClick}
             directLine={this.state.directLine}
             userId={this.state.userId}
             store={store}
           />
         )}
       </div>
     </Col>
   </Row>
  )
}
render(){
常数{
状态:{最小化,存储}
}=这个
返回(
{最小化(
) : (
)}
)
}

看起来您在“MaximizeChatWndow()”中创建了
directLine
对象,我认为这就是问题所在。在“MaximizeChatWndow()”中,您应该获取令牌并将其传递给web聊天组件。在web聊天组件中,您应该使用令牌调用
createDirectLine()

似乎对样本进行了各种更新。(这些文档看起来也过时了,与代码不再匹配)。但是,如果与可用的示例代码进行比较,则需要执行以下操作。请看上面链接中的完整代码,因为我这里只包括最相关的部分

当我进行测试时,对话重置或网络断开/重新连接没有问题

最小化WebChat.js

从“/WebChat”导入WebChat;
const minimableWebChat=()=>{
[...]
const[token,setToken]=useState();
const handleFetchToken=useCallback(异步()=>{
如果(!令牌){
const res=等待取数('http://localhost:3500/directline/token“,{方法:'POST'});
const{token}=await res.json();
setToken(token);
}
},[setToken,token]);
[...]
返回(
[...]
)
WebChat.js

constwebchat=({className,onFetchToken,store,token})=>{
const directLine=usemo(()=>createDirectLine({token}),[token]);
[...]
useffect(()=>{
onFetchToken();
},[onFetchToken]);
返回令牌(

接受/向上投票一个答案服务于更大的堆栈溢出社区和任何有类似问题的人。如果你觉得我的答案足够,请“接受”并向上投票。如果没有,请告诉我我还能提供什么帮助!