FormBuilderJson 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
透過 JSON Schema 或程式化方式,指定訊息、欄位和確認函數來建立表單。
public sealed class FormBuilderJson : Microsoft.Bot.Builder.FormFlow.FormBuilderBase<Newtonsoft.Json.Linq.JObject>
type FormBuilderJson = class
inherit FormBuilderBase<JObject>
Public NotInheritable Class FormBuilderJson
Inherits FormBuilderBase(Of JObject)
- 繼承
備註
透過 JSON 架構 定義表單,並可選地附加對應 C# 屬性的註解。
%FormFlow 會使用多種標準 的 JSON Schema 關鍵字,包括:
-
type-- 定義欄位類型。 *enum-- 定義可能的場值。 *minimum-- 定義最小允許值,如 所述 NumericAttribute。 *maximum-- 定義最大允許值,詳見 NumericAttribute。 *required—— 定義所需的欄位。 *pattern-- 對於字串欄位,將使用來驗證輸入的模式,詳見 PatternAttribute。模板和提示詞使用與 TemplateAttributePromptAttribute和 相同的詞彙。 屬性名稱與底層 C# 列舉中的值相同。 例如,若要定義一個模板來覆寫該 NotUnderstood 模板並指定 TemplateBaseAttribute.ChoiceStyle,你可以在結構中放置以下內容:~~~ “Templates”:{ “NotUnderunderstanded”: { Patterns: [“我不懂”], “ChoiceStyle”: Auto“}} ~~~
%Extensions 在結構根定義 *
OnCompletion: script-- C# 腳本,並以參數(IDialogContext 上下文、JObject 狀態)來完成表單。 *References: [assemblyReference, ...]-- 定義腳本中可包含的參考。 路徑應該是絕對的,或是相對於目前目錄的。 預設情況下 Microsoft.Bot.Builder.dll 包含在內。 *Imports: [import, ...]-- 定義匯入,包含在腳本中,並包含使用值。 預設情況下,這些命名空間包含:Microsoft。Bot.Builder,Microsoft。Bot.Builder.Dialogs,Microsoft。Bot.Builder.FormFlow, Microsoft.Bot.Builder.FormFlow.Advanced、System.Collections.Generic、System.Linq%Extensions 定義在結構的根端,或作為「型別」屬性的對等節點。 *
Templates:{TemplateUsage: { Patterns:[string, ...], <args> }, ...}-- 定義範本。 *Prompt: { Patterns:[string, ...] <args>}—— 定義一個提示詞。%Extensions 在屬性描述中作為 JSON Schema 的「型別」屬性的對應。 *
DateTime:bool-- 將欄位標記為DateTime欄位。 *Describe:string-- 描述於 DescribeAttribute的場。 *Terms:[string,...]-- 用於匹配欄位值的正則表達式,如 TermsAttribute。 *MaxPhrase:int——這會讓你的條件通過 GenerateTerms(String, Int32) ,以擴大它們。 *Values:{ string: {Describe:string, Terms:[string, ...], MaxPhrase}, ...}-- 字串必須在「enum」類型中找到,這樣你才能覆蓋自動產生的描述和術語。 若指定 MaxPhrase,則該項會通過 GenerateTerms(String, Int32)。 *Active:script-- C# 腳本,包含參數(JObject state)->bool,用以測試欄位/訊息/確認是否啟用。 *Validate:script-- C# 腳本,包含參數(JObject 狀態、物件值)->ValidateResult,用於驗證欄位值。 *Define:script-- 帶有參數(JObject 狀態、欄位<JObject> 欄位)用於動態定義欄位的 C# 腳本。 *Before:[confirm|message, ...]-- 包含欄位前的訊息或確認。 *After:[confirm|message, ...]-- 包含欄位後的訊息或確認。 *{Confirm:script|[string, ...], ...templateArgs}-- 在 Before/After 中,透過帶有參數的 C# 腳本(JObject 狀態)或一組隨機選取的模式,並搭配可選的模板參數來定義確認。 *{Message:script|[string, ...] ...templateArgs}-- 使用 Before/After 可透過 C# 腳本(帶參數)或一組隨機選取的模式(可選模板參數)定義訊息。 *Dependencies:[弦,...]-- Fields that this field, message or confirm depends on.</p><p>Scripts can be any C# code you would find in a method body. You can add references through "References" and using through "Imports". Special global variables include: *選擇-- internal dispatch for script to execute. *狀態-- JObject form state bound for all scripts. *ifield-- <xref data-throw-if-not-resolved="true" uid="Microsoft.Bot.Builder.FormFlow.Advanced.IField1“> 讓除了 /Confirm 提示建構器 %Message外,所有腳本都能對目前欄位進行推理。 *value-- 物件值需驗證以驗證。 *field-- Field<T> 允許在 Dedefine 中動態更新欄位。 *context-- IDialogContext 提供上下文以便允許在 OnCompletion 中發佈結果。透過此類別定義的 %Fields,具備與其他領域相同的程式化擴展或覆寫定義的能力。 它們也可以以相同方式進行在地化。
建構函式
| 名稱 | Description |
|---|---|
| FormBuilderJson(JObject) |
建立一個 JSON 表單建構器。 |
欄位
| 名稱 | Description |
|---|---|
| _form |
透過 JSON Schema 或程式化方式,指定訊息、欄位和確認函數來建立表單。 (繼承來源 FormBuilderBase<T>) |
屬性
| 名稱 | Description |
|---|---|
| Configuration |
透過 JSON Schema 或程式化方式,指定訊息、欄位和確認函數來建立表單。 (繼承來源 FormBuilderBase<T>) |
| Schema |
透過 JSON Schema 或程式化方式,指定訊息、欄位和確認函數來建立表單。 |