【问题标题】:How can I get user response from adaptive card using Adaptive Cards Action.Submit action from MS Teams channel using Microsoft Bot Framework?如何使用自适应卡操作从自适应卡获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?
【发布时间】: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"
      }  
    }
  ]
}
]
}

【问题讨论】:

    标签: botframework chatbot microsoft-teams adaptive-cards


    【解决方案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。请特别参阅 OnMessageActivityAsyncOnInvokeActivityAsync(仅限 C# - 请参阅下面的 Node)。

      这是来自 Microsoft Bot Framework 团队的另一个 very detailed blog 处理此问题,涵盖 DotNet 和 Node。那篇文章有点旧,所以它没有涵盖您在示例中使用的内容,这是相当新的 - Universal Actions。这只是为 Action 指定 json 的一种稍新的方式。

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

      【讨论】:

        猜你喜欢
        • 2020-11-07
        • 2020-05-29
        • 2019-04-22
        • 2018-11-15
        • 1970-01-01
        • 2020-06-07
        • 2019-07-18
        • 2020-02-14
        • 2020-04-06
        相关资源
        最近更新 更多