Botframework 为什么可以';我是否在桌面团队应用程序中使用Microsoft Bot Framework打开ActionTypes.OpenUrl网站?

Botframework 为什么可以';我是否在桌面团队应用程序中使用Microsoft Bot Framework打开ActionTypes.OpenUrl网站?,botframework,bots,microsoft-teams,azure-bot-service,Botframework,Bots,Microsoft Teams,Azure Bot Service,我已经使用Microsoft bot框架在C#中创建了一个bot,在Azure中成功托管了它,在团队中注册了它,一切都很好——除了当用户尝试单击一个按钮打开URL时。用户将看到一张卡,卡上有三个选项,单击Azure中Web聊天功能中的其中一个选项,或者在手机上使用Teams应用程序时,成功启动具有所需URL的浏览器。但是,在桌面上单击基于浏览器版本的团队中的按钮会创建一个带有url的新选项卡,而在桌面版本的团队中单击按钮似乎没有任何作用。卡的代码如下所示: private static asyn

我已经使用Microsoft bot框架在C#中创建了一个bot,在Azure中成功托管了它,在团队中注册了它,一切都很好——除了当用户尝试单击一个按钮打开URL时。用户将看到一张卡,卡上有三个选项,单击Azure中Web聊天功能中的其中一个选项,或者在手机上使用Teams应用程序时,成功启动具有所需URL的浏览器。但是,在桌面上单击基于浏览器版本的团队中的按钮会创建一个带有url的新选项卡,而在桌面版本的团队中单击按钮似乎没有任何作用。卡的代码如下所示:

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);
        }
专用静态异步任务SendLinkCard(iTurContext turnContext、HeroCard卡、CancellationToken CancellationToken)
{
card.Title=“链接卡”;
card.Text=“选择一个选项:”;
卡片。按钮。添加(新卡片操作
{
Type=ActionTypes.OpenUrl,
Title=“链接1”,
值=”https://google.com/​",
});
卡片。按钮。添加(新卡片操作
{
Type=ActionTypes.OpenUrl,
Title=“链接2”,
值=”https://stackoverflow.com​"
});
卡片。按钮。添加(新卡片操作
{
Type=ActionTypes.OpenUrl,
Title=“链接3”,
值=”https://example.com"
});
var activity=MessageFactory.Attachment(card.ToAttachment());
等待turnContext.SendActivityAsync(活动,取消令牌);
}
我在这里没有想法,这看起来应该很简单-任何帮助都将不胜感激!

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

Buttons=new List{new CardAction(ActionTypes.OpenUrl,“Link 1”,值:https://google.com/") },
按钮=新列表{new CardAction(ActionTypes.OpenUrl,“链接2”,值:“https://stackoverflow.com") },
按钮=新列表{new CardAction(ActionTypes.OpenUrl,“链接3”,值:“https://example.com") }
现在,使用
Buttons.add()
应该可以了,但如果有疑问,请使用最佳实践

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


希望得到帮助!

马上,一切看起来都是正确的,不知道为什么它不起作用。出于兴趣,您是否需要专门的英雄卡?您可能会更幸运地使用自适应卡,它有更多(而且还在增长)无论如何,希尔顿,我并不特别需要英雄卡,但我永远无法让自适应卡正常工作,我限制自己只在每张卡上写一些文字和几个可点击的按钮,所以英雄卡似乎是一个不错的选择。史蒂文,谢谢你的帮助-我终于回到我的电脑上尝试你的代码,它的功能非常强大现在更好了。这很好用-谢谢!在你的例子中括号有点松鼠,但我把它弄直了。