Botframework-WebChat - Защо не работи с Internet Explorer?

Уеб чатът работи правилно в Chrome, но не и в IE. Приложението ми е уебсайт на Angular, използващ WebChat за свързване с моя бот.

Кодът изглежда така (технически това е 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 трябва да се поддържа.


person Schwammy    schedule 17.01.2018    source източник
comment
Това е изстрел в тъмното, но опитвали ли сте .subscribe преди .filter   -  person D4RKCIDE    schedule 18.01.2018
comment
Благодаря, но не. разбирам това Свойството „филтър“ не съществува за тип „Абонамент“. Но си струваше да се опита.   -  person Schwammy    schedule 18.01.2018


Отговори (2)


Намерих отговора. След като прочетох отговорите и коментарите, които бяха публикувани, създадох "ванилия" html/JavaScript версия на този код и той, както е посочено от Ерик Далванг по-горе, работи перфектно. След това се съсредоточих за известно време върху ъгловата страна на нещата.

След това забелязах една разлика в моя оригинален 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)

и всичко работи. За съжаление, не знам защо.

person Schwammy    schedule 18.01.2018
comment
Радвам се да видя, че си го поправил. Чудите се защо new DirectLine() не е уловен от TypeScript, защото DirectLine изглежда недефиниран във вашия случай. - person Compulim; 18.01.2018

Функциите със стрелки не се поддържат в IE:

https://caniuse.com/#feat=arrow-functions

https://docs.microsoft.com/en-us/scripting/javascript/functions-javascript#arrow-functions

Кодът, който споделихте, трябва да работи в IE, ако е модифициран да използва действителни функции:

    this.directLine.activity$
        .filter(isInitEvent)
        .subscribe(changeSize);

...

    function isInitEvent(activity) {
        return activity.type === "event" && activity.name === "init";
    }

    function changeSize(activity) {
        console.log("here")
        var container = document.getElementById("bot");
        container.classList.add("fullSize");
    }  
person Eric Dahlvang    schedule 17.01.2018
comment
Благодаря за отговора За съжаление, все още получавам грешката. Ако разширя съобщението за грешка в IE, мога да получа следното проследяване на стека: at e.prototype.error (https://cdn.botframework.com/botframework-webchat/latest/botchat.js:6:4949) - person Schwammy; 18.01.2018
comment
Също така разгледах това малко повече. Съжалявам, че не бях ясен, но моят код е TypeScript, така че функциите на стрелките са транспилирани. - person Schwammy; 18.01.2018
comment
@Schwammy, почти невъзможно е да помогнем повече, ако нямаме повече информация / подробности за кода. Webchat работи с IE, това е само конкретна точка от ваша страна и имаме нужда от повече подробности - person Nicolas R; 18.01.2018