Если вы хотите открыть URL, тогда вы можете использовать Карты Героев только с помощью кнопок.Вы можете создать словарь с заголовком и ссылкой или использовать перечисление.Вот кое-что, с чем я работал:
Вместо отправки Prompt
var reply = context.MakeMessage();
List<CardAction> enumOptions = new List<CardAction>();
foreach(ProductGroups option in Enum.GetValues(typeof(ProductGroups)))
{
enumOptions.Add(new CardAction
{
Title = option.ToString(),
Type = option.ToString().Equals("MoreCategories") ? ActionTypes.ImBack : ActionTypes.OpenUrl,
Value = option.GetType()
.GetMember(option.ToString())
.First()
.GetCustomAttribute<DescribeAttribute>()
.Description
});
}
reply.Attachments.Add(GetHeroCard(null, null, null, null, enumOptions));
await context.PostAsync(reply);
Тип атрибута в CardAction решит, что делать при нажатии кнопки.Поэтому, если пользователь нажал любую кнопку, кроме MoreCategories, откроется ссылка, и если пользователь нажал MoreCategories, бот получит сообщение moreCategories, и вы сможете обработать его после этого.
GetHeroCard - это просто базовая функция, которую вы можете вызвать для создания любой карты героя:
public static Attachment GetHeroCard(string title, string subTitle, string text, List<CardImage> images, List<CardAction> action)
{
HeroCard card = new HeroCard();
if (!String.IsNullOrEmpty(title))
card.Title = title;
if (!String.IsNullOrEmpty(subTitle))
card.Subtitle = subTitle;
if (!String.IsNullOrEmpty(text))
card.Text = text;
if (images != null)
card.Images = images;
if (action != null)
card.Buttons = action ;
return card.ToAttachment();
}
Вы можете обновить перечисление следующим образом:
public enum ProductGroups
{
[Describe("https://stackoverflow.com/")]
Toys,
[Describe("https://stackoverflow.com/")]
Electronics,
[Describe("https://stackoverflow.com/")]
Phones,
[Describe("https://stackoverflow.com/")]
Health,
[Describe("https://stackoverflow.com/")]
Beauty,
[Describe("https://stackoverflow.com/")]
Computers,
[Describe("https://stackoverflow.com/")]
Cameras,
[Describe("https://stackoverflow.com/")]
Jewelery,
[Describe("https://stackoverflow.com/")]
Watches,
[Describe("https://stackoverflow.com/")]
Weddings,
[Describe("More categories")]
MoreCategories
}
ВЫХОД