我的网聊可以在Chrome中正常运行,但不能在IE中运行。
我的应用程序是一个使用WebChat连接到我的机器人的Angular网站。

代码看起来像这样(从技术上讲,这是TypeScript,而不是JavaScript,箭头函数被编译出来):

directLine: DirectLine = new DirectLine({ secret: environment.botDirectLineSecretKey })

@ViewChild("botWindow") botWindowElement: ElementRef;

ngOnInit() {

    this.directLine.activity$
      .filter(activity => activity.type === "event" && activity.name === "init")
      .subscribe(activity => this.changeSize());

    BotChat.App({
      botConnection: this.directLine,
      user: { id: 'user' },
      bot: { id: 'bot' },
    }, this.botWindowElement.nativeElement);

}

changeSize(){
    console.log("here")
    var container = document.getElementById("bot-chat-container");
    container.classList.add("fullSize");
}


在Internet Explorer中,我在控制台中收到此错误:


  错误TypeError:您提供了一个无效对象,其中流是
  预期。您可以提供一个Observable,Promise,Array或Iterable。


如果我将botConnection: this.directLine切换为directLine: this.directLine,则可以进行网络聊天,但changeSize()方法将永远不会被调用。

任何帮助表示赞赏。该机器人正在一个公共网站上运行,并且必须支持IE。

最佳答案

我找到了答案。阅读了发布的答案和评论后,我创建了此代码的“原始” html / JavaScript版本,正如上面的Eric Dahlvang所述,它可以完美地工作。然后,我专注于事物的角度一侧。

然后,我注意到我的原始Angular代码与普通的JavaScript版本存在一个区别,并在此处找到了示例:https://github.com/Microsoft/BotFramework-WebChat。我做了一个简单的更改:

改变了这个:
directLine: DirectLine = new DirectLine({ secret: environment.botDirectLineSecretKey })

对此:
directLine: DirectLine = new BotChat.DirectLine({ secret: environment.botDirectLineSecretKey })(请注意,我现在正在使用BotChat.DirectLine)

一切正常。不幸的是,我不知道为什么。

09-11 20:47