【问题标题】:How to implement the button click functionality in bots with respective cards如何在具有相应卡片的机器人中实现按钮单击功能
【发布时间】:2017-11-23 21:05:10
【问题描述】:

您好,我正在开发 Bot,因为我有一个要求,例如当用户单击按钮时,我想在下一张卡片中显示相关内容,如下所示。

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

【问题讨论】:

    标签: c# visual-studio-2015 bots adaptive-cards


    【解决方案1】:

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

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

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

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

    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 方法的示例项目。

    【讨论】:

    • 我已经这样做了,但我无法理解如何将值传递给我的消息给机器人。在上面提到的示例场景中,他们都在提供详细信息并获取值,但在我的场景中,我想单击按钮并按下文本中的值,因为这是有任何可能性的,并且我可以在不传递 json 数据的情况下对其进行处理。 ..如果有任何可能,请告诉我..
    • 您的意思是要使用自适应卡片并在消息的Text 属性中具有值?我使用 json 方法来传递更多信息,但我发现您可以将文本设置为 Data 而不是 DataJson,它就是这样做的。我更新了答案,看看是否有帮助。
    猜你喜欢
    • 2016-07-30
    • 2020-05-05
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2011-12-12
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多