首页 > 解决方案 > 为什么我无法在桌面 Teams 应用程序中使用 Microsoft Bot Framework 打开带有 ActionTypes.OpenUrl 的网站?

问题描述

我已经使用 Microsoft Bot Framework 在 C# 中创建了一个机器人,成功地将其托管在 Azure 中,并在 Teams 中注册了它,并且一切正常 - 除非用户尝试单击应该打开 URL 的按钮。用户会看到一张卡片,上面有三个选项,然后单击 Azure 中的网络聊天功能中的一个选项,或者在手机上使用 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/​&quot;,
            });
            card.Buttons.Add(new CardAction
            {
                Type = ActionTypes.OpenUrl,
                Title = "Link 2",
                Value = "https://stackoverflow.com​&quot;
            });
            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);
        }

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

标签: botframeworkbotsmicrosoft-teamsazure-bot-service

解决方案


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

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() 应该可以工作,但如果有疑问,请使用最佳实践。

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

希望有帮助!


推荐阅读