我可以算一下吗?使用Microsoft Bot FormFlow时打印小计?

时间:2016-04-03 20:07:53

标签: c# botframework

这就是重点:根据用户在使用Microsoft.Bot.Builder.FormFlow构建的表单中选择的答案,我希望在此过程中不时打印出当前的小计。< / p>

我想过在FormBuilder上使用Message()方法, 但由于BuildForm()方法本身是静态的,我不确定如何检查已设置属性的值。

有什么想法吗?

1 个答案:

答案 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获取最后一个表单状态并生成您自己的提示和识别器。这样做的缺点是工作量更大,需要用户响应。