BotBuilder-MicrosoftTeams
BotBuilder-MicrosoftTeams copied to clipboard
Create wrappers for most of the Node BotBuilder fluent APIs
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.
Thanks Bill, let me figure out. I think this is a very important finding which has to be fixed.
@BillZengMSFT Are we still tracking this?
yes we do but I am just too busy to prioritize it