Botframework 要显示自适应卡中单击的按钮的文本吗

Botframework 要显示自适应卡中单击的按钮的文本吗,botframework,microsoft-teams,adaptive-cards,Botframework,Microsoft Teams,Adaptive Cards,我已经创建了一个团队机器人,我有几个提交操作按钮。 单击这些按钮时,我想让用户知道按钮已被单击。 Im使用自适应卡并提交操作 card.Actions.Add(new AdaptiveSubmitAction() { Title = item.Key, Data = item.Value, DataJson = "{\"Type\": \"

我已经创建了一个团队机器人,我有几个提交操作按钮。 单击这些按钮时,我想让用户知道按钮已被单击。 Im使用自适应卡并提交操作

card.Actions.Add(new AdaptiveSubmitAction()
            {
                Title = item.Key,
                Data = item.Value,
                DataJson = "{\"Type\": \"Sort\"}"

            });
单击“排序”按钮后,我希望bot回发“排序”。

这就是我对团队的看法


提前感谢

可以使用特殊的“msteams”负载,并将“messageBack”或“imBack”指定为消息类型,类似于:

{
  "type": "Action.Submit",
  "title": "Click me for messageBack",
  "data": {
    "msteams": {
        "type": "messageBack",
        "displayText": "I clicked this button",
        "text": "text to bots",
        "value": "{\"bfKey\": \"bfVal\", \"conflictKey\": \"from value\"}"
    }
  }
}
你可以阅读更多关于它的内容

因为您使用的是C#,所以需要一个实际的类来表示它,所以您可以执行以下操作:

public class msteams
{
   public string type {get; set;} = "messageBack";
   public string displayText {get; set;}
   public string text {get; set;}
   public string value {get; set;}
}
然后将其设置为:

card.Actions.Add(new AdaptiveSubmitAction()
            {
                Title = item.Key,
                Data = new msTeams() { displayText = "...", ... }
            });
显然,您可以使用属性来更改类的名称、属性名称等。对于更简单的方法,您可以只使用“imBack”选项,我在下面用属性包装了该选项:

    public class AdaptiveCardImBackButton
    {
        [JsonProperty("type")]
        public string Type { get; set; } = "imBack";

        [JsonProperty("value")]
        public string Value { get; set; }
    }
然后我再次包装它,以使其序列化外部“msteams”属性,如下所示:

 public class AdaptiveCardImBackButtonContainer
    {
        [JsonProperty("msteams")]
        public AdaptiveCardImBackButton AdaptiveCardImBackButton { get; private set; }

        public AdaptiveCardImBackButtonContainer(string value)
        {
            AdaptiveCardImBackButton = new AdaptiveCardImBackButton() { Value = value };
        }
    }
代码中的最终用法非常简单:

            card.Actions.Add(new AdaptiveSubmitAction()
            {
                Title = "sort",
                Data = new AdaptiveCardImBackButtonContainer("sort")
            });

可以使用特殊的“msteams”有效负载,并指定“messageBack”或“imBack”作为消息类型,类似于:

{
  "type": "Action.Submit",
  "title": "Click me for messageBack",
  "data": {
    "msteams": {
        "type": "messageBack",
        "displayText": "I clicked this button",
        "text": "text to bots",
        "value": "{\"bfKey\": \"bfVal\", \"conflictKey\": \"from value\"}"
    }
  }
}
你可以阅读更多关于它的内容

因为您使用的是C#,所以需要一个实际的类来表示它,所以您可以执行以下操作:

public class msteams
{
   public string type {get; set;} = "messageBack";
   public string displayText {get; set;}
   public string text {get; set;}
   public string value {get; set;}
}
然后将其设置为:

card.Actions.Add(new AdaptiveSubmitAction()
            {
                Title = item.Key,
                Data = new msTeams() { displayText = "...", ... }
            });
显然,您可以使用属性来更改类的名称、属性名称等。对于更简单的方法,您可以只使用“imBack”选项,我在下面用属性包装了该选项:

    public class AdaptiveCardImBackButton
    {
        [JsonProperty("type")]
        public string Type { get; set; } = "imBack";

        [JsonProperty("value")]
        public string Value { get; set; }
    }
然后我再次包装它,以使其序列化外部“msteams”属性,如下所示:

 public class AdaptiveCardImBackButtonContainer
    {
        [JsonProperty("msteams")]
        public AdaptiveCardImBackButton AdaptiveCardImBackButton { get; private set; }

        public AdaptiveCardImBackButtonContainer(string value)
        {
            AdaptiveCardImBackButton = new AdaptiveCardImBackButton() { Value = value };
        }
    }
代码中的最终用法非常简单:

            card.Actions.Add(new AdaptiveSubmitAction()
            {
                Title = "sort",
                Data = new AdaptiveCardImBackButtonContainer("sort")
            });

@Elma Sarah Daniel,这能回答你的问题吗?@Abhijit MSFT,不,它对我不起作用。@hilton giesenow,不,我仍然看不到按钮文本。我已经用团队频道的图片更新了我的问题。请发布更新的代码。请尝试使用我更新的代码+类。如果序列化结果不完全正确,它将被忽略(例如,您的团队看起来像“msTeams”,而不是“msTeams”)@Elma Sarah Daniel,这能回答你的问题吗?@Abhijit MSFT,不,它对我不起作用。@hilton giesenow,不,我仍然看不到按钮文本。我已经用团队频道的图片更新了我的问题。请发布更新的代码。请尝试使用我更新的代码+类。如果序列化结果不完全正确,它将被忽略(例如,您的团队看起来像“msTeams”,而不是“msTeams”)