如何在带有相应卡片的机器人中实现按钮点击功能
How to implement the button click functionality in bots with respective cards
您好,我正在开发 Bot,因为我有一个要求,比如当用户单击按钮时,我想在下一张卡片中显示相关内容,如下所示。
谁能告诉我如何使用任何卡片(如自适应卡片、丰富卡片或缩略图卡片)在机器人中实现上述场景?
使用自适应卡片,您可以使用 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 方法的示例项目。
您好,我正在开发 Bot,因为我有一个要求,比如当用户单击按钮时,我想在下一张卡片中显示相关内容,如下所示。
谁能告诉我如何使用任何卡片(如自适应卡片、丰富卡片或缩略图卡片)在机器人中实现上述场景?
使用自适应卡片,您可以使用 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 方法的示例项目。