如何更新已经从BOT发送给用户的自适应卡?

时间:2019-04-05 09:35:14

标签: c# botframework microsoft-teams adaptive-cards

我已经发送了带有详细信息和按钮的卡片。单击任务模块中的提交后,将通过http API保存详细信息,此处的活动类型为调用。 现在,我必须更新现有的自适应卡。

我有更新消息的代码,但是如何更新卡或重新发送卡。

                connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                reply = activity.CreateReply($"You sent {activity.Text} which was {activity.Text.Length} characters");
                var msgToUpdate = await connector.Conversations.ReplyToActivityAsync(reply);
                Activity updatedReply = activity.CreateReply($"This is an updated message");
                await connector.Conversations.UpdateActivityAsync(reply.Conversation.Id, msgToUpdate.Id, updatedReply);

2 个答案:

答案 0 :(得分:3)

这涉及几个步骤。

  1. 创建自适应卡并在自适应卡操作中添加唯一ID(GUID)。

    var Card = new AdaptiveCard()
    {
          Body = new List<AdaptiveElement>()
    {
        new AdaptiveTextBlock(){Text="This is a test adaptive card"}
    },
    Actions = new List<AdaptiveAction>()
    {
        new AdaptiveSubmitAction()
        {
            Title="UpdateMe",
            DataJson= @"{'id':'uniqueId'}"
        }
    }
    };
    
  2. 发送消息后,请保持自适应卡uniqueId和消息ID的映射。

    connector = new ConnectorClient(new Uri(activity.ServiceUrl));
    reply = activity.CreateReply();
    reply.Attachments.Add(Card.ToAttachment());
    var msgToUpdate = await connector.Conversations.ReplyToActivityAsync(reply);
    // Keep mapping of uniqueId and messageToUpdate.Id
    // UniqueId1 => messageId1
    // UniqueId2 => messageId2
    
  3. 当用户单击UpdateMe操作按钮时,检查uniqueId的映射(将在activity.Value中)。

  4. 创建新卡并使用更新后的代码致电connector.Conversations.UpdateActivityAsync

如果您需要更多详细信息,请告诉我们。

答案 1 :(得分:0)

您可以在MS Teams之类的渠道中更新自适应卡,而不是在直线上。要更新卡,您需要访问器存储在发送当前消息时生成的ActivityId。

这里我提供了更新消息的方法

Code snippet