【发布时间】:2017-11-23 21:05:10
【问题描述】:
【问题讨论】:
标签: c# visual-studio-2015 bots adaptive-cards
【问题讨论】:
标签: c# visual-studio-2015 bots adaptive-cards
使用自适应卡片,您可以为此使用 AdaptiveSubmitAction:
new AdaptiveSubmitAction()
{
Data = "show me the next card"
};
这会生成一条新的传入消息,其中message.Text 是Data 的值,您可以像处理来自用户的常规消息一样处理它。
您可以使用ImBack 和PostBack 操作来实现与其他丰富卡片/缩略图卡相同的效果:
new CardAction()
{
Type = ActionTypes.ImBack,
Value = "show me the next card"
}
AdaptiveSubmitAction 还具有 DataJson 属性,您可以使用它来代替 Data(如果同时使用 DataJson 则无效)。您可以在此处放置一个 json 结构,该结构将在传入消息的message.Value 中结束,而message.Text 在这种情况下将为空。
当您需要传递更多详细信息时,这会很方便,例如DataJson = "{ \"CardName\": \"City\", \"Name\": \"New York\" }" 可能意味着您想为纽约开一些城市卡。然后你可以像这样检索结构:
protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
{
var message = await item;
if (string.IsNullOrEmpty(message.Text))
{
dynamic value = message.Value;
if (value == null)
{
// empty message - show help, error etc.
}
dynamic cardName = value.CardName;
// check the name, respond with the wanted card ...
}
else
{
// process as usual
await base.MessageReceived(context, item);
}
}
Here 是一个使用 json 方法的示例项目。
【讨论】:
Text 属性中具有值?我使用 json 方法来传递更多信息,但我发现您可以将文本设置为 Data 而不是 DataJson,它就是这样做的。我更新了答案,看看是否有帮助。