BotBuilder-MicrosoftTeams icon indicating copy to clipboard operation
BotBuilder-MicrosoftTeams copied to clipboard

Create wrappers for most of the Node BotBuilder fluent APIs

Open billbliss opened this issue 7 years ago • 3 comments

Consider the following TypeScript code:

        let msg = new msTeamsBuilder.TeamsMessage(session)
            .textFormat(builder.TextFormat.markdown)
            .text(": Retrieving incident IM10272...");
        (msg as msTeamsBuilder.TeamsMessage).addMentionToText({id: "test", name: "@nat.infra"}, msTeamsBuilder.MentionTextLocation.PrependText);

In particular, note the goofy (msg as msTeamsBuilder.TeamsMessage) cast before the botbuilder-teams addMentionToText method. If it's not there, it breaks, saying that addMentionToText is not a method of botbuilder.Message.

Which it isn't - it's a method of TeamsMessage -- but why the error? Because with the Fluent-style APIs used in botbuilder, an explicit cast back to botbuilder.Message is made with every method call (in this case, to .textFormat and .text).

The only way around this, I think, is to create wrappers for all the fluent calls in the TeamsMessage.js library which calls super. That way the objects aren't cast back to the superclass type on every method call of botbuilder.

As it stands now, this is completely mysterious and makes the SDK harder to use.

billbliss avatar Jun 13 '17 21:06 billbliss

Thanks Bill, let me figure out. I think this is a very important finding which has to be fixed.

iceNuts avatar Jun 14 '17 00:06 iceNuts

@BillZengMSFT Are we still tracking this?

RamjotSingh avatar Sep 14 '17 23:09 RamjotSingh

yes we do but I am just too busy to prioritize it

iceNuts avatar Sep 20 '17 21:09 iceNuts