团队 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" 卡片本身让它消失 - 如果用户不想继续,他们可以简单地停止与卡片的互动。但是,这里有一些可能的替代方案:
- 您可以实现一个 "cancel" 按钮作为提交操作,您可以在 bot 中检测到它,并用适当的消息回复
- 你可以考虑一下 "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.
我相信这可能会解决问题。
我正在为使用 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" 卡片本身让它消失 - 如果用户不想继续,他们可以简单地停止与卡片的互动。但是,这里有一些可能的替代方案:
- 您可以实现一个 "cancel" 按钮作为提交操作,您可以在 bot 中检测到它,并用适当的消息回复
- 你可以考虑一下 "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 likeCancel
) I took that response and under aSwitch-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.
我相信这可能会解决问题。