【问题标题】:How to add a mention in Teams alongside an adaptive card using Bot Framework如何使用 Bot Framework 在 Teams 中与自适应卡片一起添加提及
【发布时间】:2020-01-31 11:34:30
【问题描述】:

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

【问题讨论】:

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


    【解决方案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引用您刚刚发布的消息.

    这是一个屏幕截图:

    希望对您有所帮助,并为此感谢 - 让我有机会学习一些有用的东西!

    【讨论】:

    • 我刚刚意识到过去几周我已经向您发送了几个答案,但似乎没有一个被“接受”。是我说的吗??
    • 对不起,我对发帖还很陌生!我正在按下向上按钮,但还没有声誉,没有看到 Tick 代表接受的答案,抱歉!今天会回去标记它们(再次抱歉)。他们都帮助我进一步进步。好主意,现在就试试你的建议。
    • 不用担心,只是在开玩笑,很乐意提供帮助。让我知道这是怎么回事,很想知道它是否有效。
    • 仅供参考 - “upvote”对未来的观众很有用,有助于表明答案是有帮助的,但“accept”表示它是正确的,所以人们会知道你已经接受它,并且它可以帮助他们解决相同/类似的问题
    • 我只是再次阅读您的原始问题并想知道-也许自适应卡本身应该是对原始消息的回复...
    【解决方案2】:

    目前 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

    【讨论】:

    • 无法让它工作,这就是我正在做的Adaptive Card。尝试使用此代码,code 目前在卡中它只是输出 Alex Curtis 而没有提及。
    • 要@提及用户,您需要提供您可以从活动对象本身获取的 channelId 和用户 ID。此功能目前处于开发者预览版中,但是您也可以尝试使用自适应卡版本 1.2 发送 json。希望这会有所帮助。
    • 我已经把用户 ID 和 channelId 在没有任何运气。调试时,我的 ChannelId 似乎是“msteams”,我在发送消息之前对其进行了硬编码,并且我从 turncontext.activity.from 获取了我的用户 ID,并将其设置在 json 中的提及 ID 中(使用您提供的 json)。没有成功。这可能是因为您似乎在使用对话框吗?而我已经添加了 TeamsMessagingExtensionsActionPreviewBot,因此当用户填写表单并按下提交时,自适应卡会直接发布到频道。如果你能告诉我更多关于你的代码,是否有可能?
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 2022-01-08
    • 2020-10-21
    • 2019-08-18
    • 2019-07-18
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多