团队 Microsoft 自适应卡上的取消按钮

Cancel button on microsoft adaptive cards for teams

我正在为使用 nodejs 的团队使用 ms 自适应卡。我可以看到操作具有 Action.Submit 类型的按钮来传递表单数据。但是,我想了解如何处理取消情况。

有没有一种方法可以在单击取消按钮时简单地关闭表单,或者我必须让它像保存按钮一样运行,并且 return 当按下取消按钮时,服务器端什么也没有。

我的卡如下

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "size": "Medium",
            "weight": "Bolder",
            "text": "{title}"
        },
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "items": [
                        {
                            "type": "Image",
                            "style": "Person",
                            "url": "{creator.profileImage}",
                            "size": "Small"
                        }
                    ],
                    "width": "auto"
                },
                {
                    "type": "Column",
                    "items": [
                        {
                            "type": "TextBlock",
                            "weight": "Bolder",
                            "text": "{creator.name}",
                            "wrap": true
                        },
                        {
                            "type": "TextBlock",
                            "spacing": "None",
                            "text": "Created {{DATE({createdUtc},SHORT)}}",
                            "isSubtle": true,
                            "wrap": true
                        }
                    ],
                    "width": "stretch"
                }
            ]
        }
    ],
    "actions": [
        {
            "type": "Action.ShowCard",
            "title": "Set due date",
            "card": {
                "type": "AdaptiveCard",
                "body": [

                    {
                        "type": "Input.Text",
                        "id": "comment",
                        "placeholder": "Add a comment",
                        "isMultiline": true
                    }
                ],
                "actions": [
                    {
                        "type": "Action.Submit",
                        "title": "OK"
                    },
                     {
                        "type": "Action.Submit",
                        "title": "Cancel"
                    }
                ],
                "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
            }
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}

没有办法 "Cancel" 卡片本身让它消失 - 如果用户不想继续,他们可以简单地停止与卡片的互动。但是,这里有一些可能的替代方案:

  1. 您可以实现一个 "cancel" 按钮作为提交操作,您可以在 bot 中检测到它,并用适当的消息回复
  2. 你可以考虑一下 "ShowCard" 行动吗?它基本上可以让您折叠卡片的一部分,并且仅在用户单击按钮时才将其打开。这样你就可以将你的卡片分成几个部分并一次显示每个部分。有关更多信息,请参阅 here

未来的另一个选择是 AdaptiveCards 1.2 中新的 ToggleVisibility 操作,但前提是您的客户端支持 1.2。 (例如,它现在仅在 Developer Preview for Teams 可用(所以非常 likely/hopefully 将来会出现,但目前不可用))

没有精确定义的方法来处理 Cancel 功能。

你必须另外管理它的代码,是的你是对的 Save Action 你还必须为 Cancel

设置功能

For example what I did is when my user choose sorry, not now (Think like Cancel) I took that response and under a Switch-Case reply as required.

//Check Each User Input
 switch (checkUserInput.ToLower())
                        {
       case "sorry, not now":
                                await turnContext.SendActivityAsync(MessageFactory.Text("Okay, Can I help with anything else?"), cancellationToken);
                                //Send Another Yes/No Card
                                var yesNoFlow = _customFlowRepository.YesNoFlow();
                                await turnContext.SendActivityAsync(yesNoFlow).ConfigureAwait(false);
                                break;
      default: //When nothing found in user intent
                                await turnContext.SendActivityAsync(MessageFactory.Text("What are you looking for?"), cancellationToken);
                                break;

                        }

您可以看看下面的屏幕截图:

希望这能帮助您解决问题。如果您还有任何顾虑,请告诉我。

Adaptive Cards 中没有诸如取消按钮之类的东西。如果您想关闭 card/not 展示卡片,您可以尝试 updating that card 使用您想要展示的另一张新卡片。

  • 从您的代码来看,“取消”按钮的作用与“提交”按钮的作用相同。它是 因为提交按钮将与所有字段相关联,并且 您从机器人提供的输入,同样适用于 取消,因为它默认用于所有输入。

  • 通过添加如下更改,点击取消按钮后, 您将从表单中跳出并导航至 dialog/flow 接下来。

     {
        "type": "Action.Submit",
        "title": "Cancel",
        "associatedInputs": "none"
     }
    
    

有关详细信息,请查找此 link: https://adaptivecards.io/explorer/Action.Submit.html.

我相信这可能会解决问题。