如何使用Bot Framework在团队中与自适应卡片一起添加提及

时间:2020-01-31 11:34:30

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

我正在尝试发送带有自适应卡片附件的活动,并向创建该帖子的用户提及。通过在线阅读,我发现您当前无法在自适应卡中添加提及。发送活动时是否可以提及某人,例如在其他附件中?我试过设置activity.Text =提到,这有效,但是它会创建两个帖子,第一个带有提及,然后另一个带有自适应卡作为单独消息的帖子。我觉得一定有办法做到这一点,否则,如果您创建了一条帖子并且有人回复了您,您将永远不会在回复时自动知道。 请注意,我没有使用Flow。 Code Teams Post

2 个答案:

答案 0 :(得分:1)

您是否考虑过(a)发送自适应卡和(b)向您发送的原始自适应卡发送“答复”消息?我以前没有做过,但是我猜测turnContext.SendActivityAsync(在ResourceResponse实例上)返回的ID是您可以用来“回复”刚刚创建的消息的ID。

更新:我知道了。这是非常粗糙的代码,但希望足以让您弄清楚/适应您的情况:

 var result = connector.Conversations.SendToConversationAsync([your conversation id], activity).Result;

// I'm re-using the same activity just as a test, you can do whatever (e.g. create a new one)
activity.Text = "Msg 2";
var conversationReference = activity.GetReplyConversationReference(result);
conversationReference.Conversation.Id = conversationReference.Conversation.Id + ";messageid=" + result.Id;
activity.ApplyConversationReference(conversationReference);

connector.Conversations.SendToConversationAsync(conversationReference.Conversation.Id, activity);

请注意,这一点非常重要,您需要更改您的会话ID,以在末尾添加“; messageid =“,并添加 ADD

以下是屏幕截图: Msg Reply

希望能有所帮助,并感谢您-给了我一次学习有用的东西的机会!

答案 1 :(得分:1)

当前Adaptive Card @mention在开发人员预览中,但您可以使用Adaptive card 1.2版本在自适应卡中实现@Mention。

您可以使用以下JSON @提及自适应卡中的用户

{

  "type": "AdaptiveCard",

  "body": [

    {

      "type": "TextBlock",

      "size": "Medium",

      "weight": "Bolder",

      "text": "Hi <at>Mention_Name</at> This is new feature in Adaptive Card version 1.2 Please test..."

    }

  ],

  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",

  "version": "1.0",

  "channelId": {

    "entities": [

      {

        "type": "mention",

        "text": "<at>Name</at>",

        "mentioned": {

          "id": "29:124124124124",

          "name": "Mungo"

        }

      }

    ]

  }

} 

您需要指定channelID和提及的ID,您可以从活动对象本身中获取

Fetch Channel Id and Mentioned Id from Activity Object