【问题标题】:Why can't I open a website with ActionTypes.OpenUrl using Microsoft Bot Framework in the desktop Teams app?为什么我无法在桌面 Teams 应用程序中使用 Microsoft Bot Framework 打开带有 ActionTypes.OpenUrl 的网站?
【发布时间】:2021-02-19 15:13:12
【问题描述】:

我已经使用 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/​",
            });
            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);
        }

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

【问题讨论】:

  • 副手,一切看起来都正确,不知道为什么它不起作用。出于兴趣,您是否需要专门的英雄卡?自适应卡可能会让你的运气更好,反正它有更多(并且不断增长的)选择
  • 希尔顿,我并不特别需要英雄卡,但我永远无法让自适应卡正常工作,而且我将自己限制在每张卡上只有一些文字和几个可点击按钮所以英雄卡似乎是一个不错的选择。史蒂文,谢谢你的帮助 - 我终于回到我的电脑上尝试你的代码,现在它在一个更好的地方。

标签: botframework bots microsoft-teams azure-bot-service


【解决方案1】:

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

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

希望有帮助!

【讨论】:

  • 这很好 - 谢谢!在你的例子中括号有点松散,但我把它弄直了。
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
相关资源
最近更新 更多