botframework - 为什么我无法在桌面 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/",
});
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);
}
我在这里没有想法,这似乎应该如此简单 - 任何帮助将不胜感激!
解决方案
正如您将在文档中看到的,以下是将元素分配给英雄卡按钮的首选方法。我测试了这个实现没有错误。
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。
希望有帮助!
推荐阅读
- c++ - LAPACKE_dgesvd 的英特尔 MKL 不匹配结果
- pine-script - 如何访问不同时间级别的数据
- .net-core - .Net Core 3.1 在 MacOS 应用程序上使用 ManagementObjectSearcher("SELECT * FROM Win32_USBHub")
- javascript - 如何在 React 和 Express 应用程序中存储身份验证状态
- python - python unittest列表比较repr问题
- javascript - 反应和画布反应性
- python - 从 XSD 架构中选择元素以填充到 Flask 应用程序中
- java - 在 Spring-boot 中成功登录后如何限制 POST Rest Api 以供公共访问
- javascript - JavaScript ES6:对象数组到数组按键分组并按属性索引
- c - 在长度为 8 的数组中找到 2 个数字的所有 256 个案例