为什么不能在桌面团队应用程序中使用Microsoft Bot Framework打开带有ActionTypes.OpenUrl的网站?

马修·沃伦

我已经使用Microsoft Bot Framework在C#中创建了一个漫游器,已将其成功托管在Azure中,并已在Teams中进行了注册,并且一切运行良好-除非用户尝试单击应该打开URL的按钮。系统会为用户显示一张带有三个选项的卡,然后单击Azure中Web聊天功能中的一个选项,或者在电话上使用Teams应用程序成功启动带有所需URL的浏览器。但是,单击桌面上基于浏览器的Teams版本中的按钮会创建一个带有URL https://teams.microsoft.com/null的新选项卡,而单击桌面版本的Teams似乎不会做任何事情。卡的代码如下所示:

private static async Task SendLinkCard(ITurnContext<IMessageActivity> turnContext, HeroCard card, CancellationToken cancellationToken)
        {
            card.Title = "Link Card";
            card.Text = "Choose an option:";
            card.Buttons.Add(new CardAction
            {
                Type = ActionTypes.OpenUrl,
                Title = "Link 1",
                Value = "https://google.com/​",
            });
            card.Buttons.Add(new CardAction
            {
                Type = ActionTypes.OpenUrl,
                Title = "Link 2",
                Value = "https://stackoverflow.com​"
            });
            card.Buttons.Add(new CardAction
            {
                Type = ActionTypes.OpenUrl,
                Title = "Link 3",
                Value = "https://example.com"
            });

            var activity = MessageFactory.Attachment(card.ToAttachment());

            await turnContext.SendActivityAsync(activity, cancellationToken);
        }

我在这里没有想法,这似乎应该是如此简单-任何帮助将不胜感激!

史蒂文·坎伯格

正如您将在docs中看到的那样,以下是将元素分配给英雄卡按钮的首选方法。我没有错误地测试了此实现。

Buttons = new List<CardAction> { new CardAction(ActionTypes.OpenUrl, "Link 1", value: "https://google.com/") },
Buttons = new List<CardAction> { new CardAction(ActionTypes.OpenUrl, "Link 2", value: "https://stackoverflow.com") },
Buttons = new List<CardAction> { new CardAction(ActionTypes.OpenUrl, "Link 3", value: "https://example.com") }

现在,使用Buttons.add() 应该可以,但是如果有疑问,请采用最佳做法。

除此之外,这可能更像是Teams问题而不是BotFramework问题,因为前一天进行测试时,我还看到了错误的链接。但是,今天没有测试。值得注意的是,我更新到了最近发布的SDK的4.11.0版本。

希望有帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章