2

嗨,我正在研究 Bot,因为我有一个要求,比如当用户单击按钮时,我想在下一张卡片中显示相关内容,如下所示。

在此处输入图像描述

谁能告诉我如何通过使用自适应卡、丰富卡或缩略图卡等任何卡在机器人中实现上述场景?

4

1 回答 1

3

使用自适应卡片,您可以使用AdaptiveSubmitAction

new AdaptiveSubmitAction()
{
    Data = "show me the next card"
};

这会生成一条新的传入消息,message.Text其值为 ,Data您可以像处理来自用户的常规消息一样处理它。

您可以使用其他丰富的卡片/缩略图卡来实现相同的效果,使用ImBackPostBack操作:

new CardAction()
{
    Type = ActionTypes.ImBack,
    Value = "show me the next card"
}

AdaptiveSubmitAction还具有DataJson您可以使用的属性,而不是(Data如果DataJson同时使用则无效)。您可以在此处放置一个 json 结构,该结构最终将message.Value包含在传入消息中,而message.Text在这种情况下将为 null。

当您需要传递更多详细信息时,这可能会很方便,例如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);
        }
    }

是一个使用 json 方法的示例项目。

于 2017-11-23T09:29:37.650 回答