首页 > 解决方案 > 如何使用自适应卡片操作从自适应卡片获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?

问题描述

如何使用自适应卡片操作从自适应卡片获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?

这是我的示例自适应卡,带有两个按钮是和否。一旦用户单击任何按钮,我需要在使用 Microsoft Bot Framework 4 实现的后端中的 bot 应用程序中捕获响应。

{
"$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"
      }  
    }
  ]
}
]
}

标签: botframeworkchatbotmicrosoft-teamsadaptive-cards

解决方案


本质上,您的机器人是一项等待用户调用的服务。当用户发送常规短信时,它将作为“MessageActivity”事件进入您的机器人。但是,如果他们单击自适应卡片中的按钮,这将作为“InvokeActivity”事件出现,因此您可以挂钩并检查用户是否单击了您的按钮之一,并做出适当的响应。这是一个基于其中一张卡片的机器人执行此操作的示例。特别参见vs (仅限 C# - 参见下面的 Node)。OnMessageActivityAsyncOnInvokeActivityAsync

这是 Microsoft Bot Framework 团队的另一个非常详细的博客,涵盖了 DotNet 和 Node。那篇文章有点旧,所以它没有涵盖您在示例中使用的内容,这是相当新的 - Universal Actions。这只是为 Action 指定 json 的一种稍新的方式。

这完全是可选的,但还有一种方法可以让卡片按钮的行为有所不同。例如,当用户单击一个按钮时,您可以让它看起来好像用户在机器人中键入了该文本。有关更多信息,请参见此处


推荐阅读