0

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

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

有任何想法吗?

4

1 回答 1

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

于 2016-04-16T00:42:35.600 回答