检查是否在Adaptive Card Bot框架C#中填写了输入表单

时间:2019-03-29 10:51:11

标签: c# botframework

我们可以检查自适应卡中的输入表格是否填写警告消息。 我当前正在使用自适应卡来收集机器人应用程序中的用户输入,我已经添加了isRequired以进行输入验证,但是当我单击Submit时它不会给出任何警告消息,因此不会转到下一个方法。 用户按下提交后,我要确保表单不为空

2 个答案:

答案 0 :(得分:0)

如果您有这样的自适应卡(请注意输入的ID):

var card = new AdaptiveCard
{
    Body =
    {
        new AdaptiveTextBlock("Adaptive Card"),
        new AdaptiveTextInput { Id = "text" },
    },
    Actions = {
        new AdaptiveSubmitAction { Title = "Submit" } },
    },
};

您可以像这样验证通过Submit操作发送的值:

if (string.IsNullOrEmpty(turnContext.Activity.Text))
{
    dynamic value = turnContext.Activity.Value;
    string text = value["text"];   // The property will be named after your input's ID
    var emailRegex = new Regex(@"^\S+@\S+$");   // This is VERY basic email Regex. You might want something different.

    if (emailRegex.IsMatch(text))
    {
        await turnContext.SendActivityAsync($"I think {text} is a valid email address");
    }
    else
    {
        await turnContext.SendActivityAsync($"I don't think {text} is a valid email address");
    }
}

使用正则表达式验证电子邮件可能会变得非常复杂,我采用了一种简单的方法。您可以在此处阅读有关电子邮件正则表达式的更多信息:How to validate an email address using a regular expression?

答案 1 :(得分:0)

我采取的方法与此处接受的答案完全不同。如果您打算在机器人中大量使用自适应卡,那么创建卡模型并将验证属性应用于需要验证的每个字段都没有意义。创建自Prompt<object>类继承的自定义卡片提示。覆盖OnPromptAsyncOnRecognizeAsync并检查那里每个字段的有效性。