如何使用自适应卡操作从自适应卡获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?
Posted
技术标签:
【中文标题】如何使用自适应卡操作从自适应卡获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?【英文标题】:How can I get user response from adaptive card using Adaptive Cards Action.Submit action from MS Teams channel using Microsoft Bot Framework? 【发布时间】:2021-11-09 07:36:43 【问题描述】:如何使用自适应卡片操作从自适应卡片获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?
这是我的示例自适应卡,带有两个按钮是和否。一旦用户单击任何按钮,我需要在使用 Microsoft Bot Framework 4 实现的后端中的机器人应用程序中捕获响应。
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.2",
"body": [
"type": "TextBlock",
"text": "Does this information help you?"
,
"type": "ActionSet",
"actions": [
"type": "Action.Execute",
"title": "Yes",
"verb": "personalDetailsFormSubmit",
"id": "surveyReplyYes",
"userIds": "" ,
"data":
"key1": true,
"key2":"okay"
,
"fallback":
"type": "Action.Submit",
"title": "Yes"
,
"type": "Action.Execute",
"title": "No",
"verb": "personalDetailsFormSubmit",
"id": "surveyReplyNo",
"userIds": "" ,
"data":
"key1": false,
"key2":"np"
,
"fallback":
"type": "Action.Submit",
"title": "No"
]
]
【问题讨论】:
【参考方案1】:每个频道都有一些额外的要求来实现这种要求,显然 MS Teams Channels Adaptive 卡需要名为“msteams”的特殊属性到对象提交操作的数据属性中的对象。根据您的自适应卡,它仅包含 'data' 属性,因此请稍作更改并尝试一下。
示例:
"type": "Action.Submit",
"title": "Click me for messageBack",
"data":
"msteams":
"type": "messageBack",
"displayText": "I clicked this button",
"text": "text to bots",
"value": "\"bfKey\": \"bfVal\", \"conflictKey\": \"from value\""
,
"extraData":
参考:Adaptive Cards in Teams
【讨论】:
【参考方案2】:本质上,您的机器人是一项等待用户调用的服务。当用户发送常规短信时,它将作为“MessageActivity”事件进入您的机器人。但是,如果他们单击自适应卡片中的按钮,这将作为“InvokeActivity”事件出现,因此您可以挂钩并检查用户是否单击了您的一个按钮,并做出适当的响应。这是基于it's cards 之一的an example of a bot doing that。请特别参阅 OnMessageActivityAsync
与 OnInvokeActivityAsync
(仅限 C# - 请参阅下面的 Node)。
这是来自 Microsoft Bot Framework 团队的另一个 very detailed blog 处理此问题,涵盖 DotNet 和 Node。那篇文章有点旧,所以它没有涵盖您在示例中使用的内容,这是相当新的 - Universal Actions。这只是为 Action 指定 json 的一种稍新的方式。
这完全是可选,但还有一种方法可以让卡片按钮的行为稍有不同。例如,当用户单击一个按钮时,您可以让它看起来好像用户在机器人中键入了该文本。有关更多信息,请参阅here。
【讨论】:
以上是关于如何使用自适应卡操作从自适应卡获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?的主要内容,如果未能解决你的问题,请参考以下文章
自适应卡片:Action.Show Card 上的动态数据绑定
无法在 Microsoft 自适应卡中播放 youtube 视频