目前正在尝试为自适应卡实现用户特定视图。
文档展示了如何自动刷新自适应卡以及如何处理调用。我实现了 BotMessageActivity,每当我用卡片向机器人响应写入内容时:
await turnContext.SendActivityAsync(MessageFactory.Attachment(cardAttachment), cancellationToken);
到目前为止一切顺利。我收到卡片,但不知何故我的 I InvokeActivity 没有被触发:
protected override async Task<InvokeResponse> OnInvokeActivityAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken){...}
我的主要目标是更改末尾 URL 的标题和值。
这就是我的自适应卡的样子:
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"refresh": {
"action": {
"type": "Action.Execute",
"title": "Refresh",
"verb": "refresh",
"data": {
"CreatedBy": "test"
}
},
"userIds": [
"999111999111999111"
]
},
"body": [
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "auto",
"items": [
{
"type": "Image",
"url": "URL"
}
]
}
]
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "auto",
"items": [
{
"type": "Image",
"url": "URL"
}
]
},
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "TextBlock",
"text": "TestText",
"wrap": true,
"weight": "Bolder"
},
{
"color": "default",
"horizontalAlignment": "left",
"isSubtle": false,
"size": "medium",
"weight": "default",
"type": "TextBlock",
"text": "TestText",
"wrap": true,
"spacing": "medium"
}
],
"verticalContentAlignment": "center"
}
]
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "FactSet",
"facts": [
{
"title": "TestId",
"value": "JustAnId"
},
{
"title": "AnyData",
"value": "AnyTest"
}
]
}
]
}
],
"spacing": "medium"
},
{
"type": "ActionSet",
"actions": [
{
"type": "Action.OpenUrl",
"title": "ButtonA",
"url": "UrlA"
}
],
"spacing": "medium"
}
]
}
我认为我可以简单地使用用户对象 ID 进行测试,并且用户对象 ID 与 MRI 的值相同。然而我发现事实并非如此; MRI 和用户对象 ID 确实是不同的实体。
输入正确的 MRI 值后,机器人能够调用 Invoke 方法。