Адаптивная карточка Microsoft Flow для упоминания пользователей команд в командах

Я создаю поток Microsoft, чтобы упомянуть пользователя в адаптивной карточке, опубликованной ботом Flow внутри команд.

Это действие, которое я пытаюсь использовать  PostAdaptiveCardAsFlowBot

Это упрощенная версия моего JSON для этого

{
   "type": "AdaptiveCard",
   "body": [
      {
        "type": "Container",
        "items": [
            {
                "type": "TextBlock",
                "size": "Medium",
                "weight": "Bolder",
                "color": "Attention",
                "text": "Hey!"
            },
            {
                "type": "ColumnSet",
                "columns": [
                    {
                        "type": "Column",
                        "items": [
                            {
                                "type": "TextBlock",
                                "text": "<at>[email protected]</at>",
                            }
                        ],
                        "width": "stretch"
                    }
                ]
            }
        ]
      },
   ],
   "actions": [
      {
        "type": "Action.OpenUrl",
        "title": "Teams Message",
        "url": "-teamsUrl-"
      }
   ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.0"
}

К сожалению, это отображается как <at>[email protected]</at>

Если я использую тот же синтаксис, что и сообщение для канала команд, пользователь будет упомянут.

PostMessageAsFlowBot

Можно ли таким образом упомянуть пользователя в адаптивной карточке?


person Java Devil    schedule 04.06.2019    source источник
comment
Пожалуйста, проверьте официальную ссылку Microsoft. docs.microsoft.com/en-us/business-applications-release-notes/ он может работать только в публикации как сообщение   -  person Ragavan Rajan    schedule 07.06.2019


Ответы (1)


Однако упоминания работают для Adaptive Card только с версии 1.2.

Официальные документы: Упоминание о поддержке в адаптивных картах версии 1.2

{
  "version":"1.2",
  "type":"AdaptiveCard",
  "body":[
    {
       "type":"TextBlock",
       "text":"Ahoj <at>Michal Macejko</at>",
       "wrap":True
    }
  ],
  "$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
  "msteams":{
    "entities":[
       {
         "additional_properties": {},
         "text": "<at>Michal Macejko</at>",
         "type": "mention",
         "mentioned": 
           {
             "additional_properties": {},
             "id": "channelAccountID",
             "name": "Michal Macejko",
             "aad_object_id": "userID"
           }
       }
    ]
  }
}

aad_object_id - это userId атрибут, полученный из https://graph.microsoft.com/v1.0/teams/#{team_id}/members

channelAccountID - это значение, которое вы должны получить из SDK get_conversation_member

Вот пример на питоне:

from botbuilder.schema import Activity, ActivityTypes, Attachment, Mention
from pyadaptivecards.card import AdaptiveCard
from pyadaptivecards.components import TextBlock

connector_client = await ADAPTER.create_connector_client(service_url)
 text_block = TextBlock(text="Hey! <at>Michal Macejko<at>", wrap=True)
 entities = []
 channel_account = await connector_client.conversations.get_conversation_member(conversation_id=teams_channel_id, member_id=aad_object_id)
 mention_object = Mention(mentioned=channel_account, text="<at>Michal Macejko</at>", type='mention')
 entities.append(Mention().deserialize(mention_object.serialize()))

 card = AdaptiveCard(body=[text_block])
 card.version = '1.2'
 card_hash = card.to_dict()
 card_hash['msteams'] = { 'entities': entities }

 attachment = Attachment(content_type='application/vnd.microsoft.card.adaptive', content=card_hash)
 message = Activity(type=ActivityTypes.message, attachments=[attachment])
 await connector_client.conversations.send_to_conversation(teams_channel_id, message)
person Michal Macejko    schedule 25.11.2020