Bot Framework 4将其他元数据添加到Choice提示Choice

时间:2019-12-15 18:48:52

标签: c# .net-core botframework

我正在用BotFramework 4开发一个机器人,在其中我会提示用户选择一些动态的美元金额,例如:

请选择金额1)结单总额$ 29.99 2)未结余额$ 35.00

,当前我用整个文本值返回答案,我需要解析出该值。 我的问题是有没有一种方法可以将一些基础元数据添加到选择对象,例如,我将添加美元金额,因此当用户选择一个选项时,我将取回该选择的美元金额

1 个答案:

答案 0 :(得分:1)

也许在这里使用adaptive cards可以解决,请尝试以下代码:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{

    if (turnContext.Activity.Text.Equals("give me a choice"))
    {
        var adaptiveJsonString = "{\"$schema\":\"https://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.0\",\"body\":[{\"type\":\"TextBlock\",\"text\":\"choose an amount\",\"size\":\"large\"}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"total statement balance $29.99\",\"data\":\"29.99\"},{\"type\":\"Action.Submit\",\"title\":\"total outstanding balance $35.00\",\"data\":\"35.00\"}]}";

        var adaptiveCardAttachment = new Attachment()
        {
            ContentType = "application/vnd.microsoft.card.adaptive",
            Content = JsonConvert.DeserializeObject(adaptiveJsonString),
        };
        await turnContext.SendActivityAsync(MessageFactory.Attachment(adaptiveCardAttachment), cancellationToken);
    }
    else {
        await turnContext.SendActivityAsync(MessageFactory.Text("You inputed : " + turnContext.Activity.Text), cancellationToken);
    }

}

结果:

enter image description here

如果您想了解有关自适应卡的更多信息,this official blog将很有帮助。

希望有帮助。