microsoft-teams - 微软流程自适应卡在团队中提及团队用户
问题描述
我正在创建一个 Microsoft 流程,以在团队内 Flow 机器人发布的自适应卡片中提及用户。
这是我的 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>steve@example.com</at>",
}
],
"width": "stretch"
}
]
}
]
},
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "Teams Message",
"url": "-teamsUrl-"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0"
}
不幸的是,这只是显示为<at>steve@example.com</at>
如果我使用与发送到团队频道的消息相同的语法,那么用户将被提及。
是否可以通过这种方式在自适应卡片中提及用户?
解决方案
但是,仅从 1.2 版开始,提及对 Adaptive Card 有效。
官方文档:在自适应卡片 v1.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获得的值
这是一个python示例:
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)
推荐阅读
- authentication - 如何在 C 客户端中使用 MQCSP 中的 userId 进行 IBM MQ 连接认证
- ionic-framework - 如何为 Ionic 3 页面中的嵌入式网页清理此 URL?
- javascript - Javascript 迭代 Json 数组以获取值
- c++ - 此 TreeVisitor 函数如何用于此二叉搜索树分配
- sql-server - 将 Tableau 计算转换为 SQL 查询
- java - 如何为“抽屉”菜单制作自动调整大小的边框窗格
- python - 为什么这段代码不写入外部txt文档?
- python - 为什么这个表格无效?
- ios - 请求失败:客户端错误 (422) QuicBlox
- python - 将 Conda 更新到 4.6.1 以集成 PowerShell 后,Conda 无法安装 Conda-forge 包