我想进行控制,以使在两个Input.Number中输入的数字之和小于9。 例如,如果您在0到9之间,则在A Input.Number中输入5。 B Input.Number最多可以输入4。 或者,如果Input.Choiceset中的值介于0到9之间,那么如果我在A中选择5,则我只能自动选择0〜4。
下面是我的代码无法正常工作。
card.Body.Add(new AdaptiveTextBlock()
{
HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
Spacing = AdaptiveSpacing.None,
Size = AdaptiveTextSize.Small,
Weight = AdaptiveTextWeight.Bolder,
Color = AdaptiveTextColor.Accent,
Text = "A"
});
card.Body.Add(new AdaptiveNumberInput()
{
Id = "AInput",
Spacing = AdaptiveSpacing.None,
Placeholder = "0",
Min = 0,
Max = maxNum - BNum
});
//I want to put the value that the user chooses into AResult.
card.Body.Add(new AdaptiveTextBlock()
{
HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
Spacing = AdaptiveSpacing.None,
Size = AdaptiveTextSize.Small,
Weight = AdaptiveTextWeight.Bolder,
Color = AdaptiveTextColor.Accent,
Text = "B"
});
card.Body.Add(new AdaptiveNumberInput()
{
Id = "BInput",
Spacing = AdaptiveSpacing.None,
Placeholder = "0",
Min = 0,
Max = maxNum - ANum
});
如果您能帮助我,我将不胜感激。
答案 0 :(得分:0)
如果您查看InputNumber Schema,则可以看到有关最小/最大的信息:
我不确定哪些客户端实际使用了这些客户端进行验证,但我猜大多数客户端不会。也有一个feature request,但这似乎并没有太大的吸引力。
很高兴,您可以自己执行此操作。它只需要您付出额外的努力。请记住,这并不容易。
但是,您会注意到,当前这是一个抽象类,因此您不能直接使用它。您将要编写自己的类extends the abstract class。
您必须进行自己的验证,以检查输入是否在最小值/最大值之内。如果不是,请发送消息告诉用户出了什么问题,然后重新提示。
这里是an example of how to validate in the next step。
您还可以将验证器传递给ActivityPrompt。这应该可以帮助您开始:
AddDialog(new MyActivityPrompt(nameof(TextPrompt), Validator));
[...]
private Task<bool> Validator(PromptValidatorContext<string> promptContext, CancellationToken cancellationToken)
{
return Task.FromResult(true);
}
真正的窍门是从卡中将您的最小/最大设置传递给验证器。
为此,您需要向AdaptiveCard.Action.Submit.data
添加其他数据。您可以执行以下操作:
var card = new AdaptiveCard();
var action = new AdaptiveSubmitAction()
{
Data = new {
AInputMin = 0,
AInputMax = 5,
}
};
card.Actions.Add(action);
然后,当用户单击提交时,卡的最小/最大设置将与结果一起显示。
我还写了一个AdaptiveCardPrompt
,可以为您完成其中的一些操作,但是它在TypeScript中,还没有在Bot Framework SDK中。