这就是重点:根据用户在使用Microsoft.Bot.Builder.FormFlow构建的表单中选择的答案,我希望在此过程中不时打印出当前的小计。< / p>
我想过在FormBuilder上使用Message()方法, 但由于BuildForm()方法本身是静态的,我不确定如何检查已设置属性的值。
有什么想法吗?
答案 0 :(得分:0)
感谢您的反馈。现在没有一个很好的方法可以做到这一点。我刚刚将以下内容添加到Builder库中。这应该是我们下周初的下一个版本。它会满足你的需求吗?
#region Documentation
/// <summary> Given <paramref name="state"/> return a <see cref="PromptAttribute"/> with a template for the message to display. </summary>
/// <typeparam name="T"> Form state type. </typeparam>
/// <param name="state"> Form state. </param>
/// <returns> A PromptAttribute describing the message to display. </returns>
#endregion
public delegate PromptAttribute MessageDelegate<T>(T state);
IFormBuilder<T>
...
#region Documentation
/// <summary> Generate a message using a delegate. </summary>
/// <param name="generateMessage"> Delegate for building message. </param>
/// <param name="condition"> Whether or not this step is active. </param>
/// <returns>This form.</returns>
#endregion
IFormBuilder<T> Message(MessageDelegate<T> generateMessage, ConditionalDelegate<T> condition = null);
如果您不能等待,可以使用validate更新表单状态中的总字段,并在消息中显示字段值。这有一个缺点,尽管该领域是用户流程的一部分。
您也可以自己实现IField,并从Active获取最后一个表单状态并生成您自己的提示和识别器。这样做的缺点是工作量更大,需要用户响应。