技術參考指南

本節提供有關 Studio 中指令碼的詳細技術參考資訊。這些資訊一般適用於使用動作和自訂 Snippet 編寫指令碼。在某些情況下,資訊僅適用於指令碼的其中一種方法。

本頁資訊總結了使用 Studio 編寫指令碼時需要了解的基本指令碼概念。本節的其他頁面提供了更詳細的資訊。

指令碼和 Snippet 結構

Studio 指令碼可以包含在一個檔案中,也可以由一個主指令碼和一個或多個子指令碼組成,並包含在單獨的檔案中。每個指令碼必須:

  • Begin 動作開始。子指令碼也必須以 Begin 動作開始。
  • 終止動作結束,如 End。子指令碼以 Return 結尾,這是一個將指令碼流程返回主指令碼的動作。
  • 已定義媒體類型。

在指令碼中,結構需要遵循與使用指令碼實現所需行為相符合的流程。您可以任何最適合您的方式組織和安排指令碼中的動作流程。例如,您可以將流程設定為從右到左或從左到右。同樣,也可以從上到下。

關於指令碼結構的一些注意事項:

  • 使用分支條件在指令碼中建立分支。此動作可以涵蓋指令碼中任何給定點可能發生的多種結果、變化或情況。您可以將分支用於錯誤處理、IVRClosed 自動電話選單,允許呼叫者透過語音命令或按鍵輸入或二者進行互動,以獲取資訊、路由至呼入語音通話或二者兼有。 選單中的選項或基於 IF 動作的 True/False 路徑。
  • 某些動作有多個分支條件。您不必每次都連接所有這些分支。但是,您必須始終連接 Default 分支。如果其他條件都不適用,指令碼會使用該分支。如果發生意外情況,這可以防止聯絡人卡在指令碼中的某處。
  • 事件動作未與觸發事件的動作連接。這些動作在同一指令碼檔案中啟動了一個新部分。新部分可以位於指令碼檔案的任何位置。如果您的指令碼中有多個事件動作,最好將其整理好,以便日後尋找。

除了語句邏輯順序的限制外,Snippet 對結構沒有任何要求。這些片段可以容納單個 ASSIGN 語句,也可以容納由一系列嵌套語句和代碼塊組成的複雜指令碼邏輯。如果需要建立自訂函數,則必須使用 Snippet。

使用 Snippet 的目的不僅僅是儲存自訂代碼。您還可以將變數賦值合併到更少的位置。您可以將多個聲明語句合併到一個 Snippet 動作中,而不是每次需要新增變數時都使用 ASSIGN 動作。

有一些方法可以讓您的指令碼更容易閱讀。這可以幫助以後可能需要使用該指令碼的其他指令碼編寫者。您可以:

  • 變更每個動作的 Caption 屬性。此屬性的內容會顯示在指令碼的畫布工作區中。您可以新增一個單詞或短語,幫助您了解每個動作的作用。例如,您可能想指出該動作使用的技能、播放的音樂檔案或 Snippet 代碼的作用。
  • 使用 AnnotationNote 動作在指令碼中提供附加文件。在 Snippet 動作中,您可以新增備註
  • 遵循 Studio 中有關指令碼的其他最佳做法

語法

與所有程式設計語言一樣,Snippet 也有必須遵守的語法規則。參考部分的每個説明頁面都有一個關於語法的部分,涵蓋了該語言元素的規則。您可以了解以下語法規則:

語法規則用語法摘要描述。摘要使用某些慣例來區分可選元素和必選元素。有關這些慣例的更多資訊,請參閱語句 説明頁面。

資料類型

資料類型描述了資料的表示方式以及可對資料執行的操作類型。許多程式設計語言都支援許多資料類型,這些資料類型可區分不同類型的數字和英數表示。Studio 沒有進行這些區分。在 Studio 中,值為下列類型之一:

  • 字串:變數的值包含英數和特殊字元,如句號、逗號和底線。子串必須用雙引號括起來。
  • 數字:變數的值是一個數字。數值不需要雙引號。
  • 日期/時間:變數的值是日期、時間或兩者。當日期/時間值與 Studio 中的日期/時間函數一起使用時,必須在引號中列出該值,並在引號邊上加注:var = #"11-23-2023"。
  • 布爾值:變數的值是 true1,或 false0。不要將布爾值放在引號中。

建立變數時不需要像某些程式設計語言那樣聲明資料類型。在 Studio 中,變數是隱式類型。這表示在編譯指令碼時會自動確定類型。

資料類型是指令碼不可分割的一部分。您可以在有關資料結構運算式變數的説明頁面中了解有關 Studio 指令碼中資料類型的更多資訊。如果您使用函數,則需要了解指令碼中使用的資料類型。您還需要了解您正在使用的函數的期望值,以及不同類型的函數或方法可能產生的不同輸出。

資料結構:變數、陣列和對象

資料結構允許您儲存資料,以便在指令碼中使用。需要時,您可以從資料結構中擷取資料,或者用其他資料替代它。在其他程式設計語言中,資料結構可以有很多種類型,可以非常複雜。在 Studio 中,只有三種資料結構:

透過聲明語句,您可以為這些資料建立任何結構。

運算式

運算式是指令碼中用於比較值或產生值的任何內容。 以下均為運算式範例:

  • x = 3(5+10)

  • y = 123 North Street
  • x ! = 5

有不同類型的運算式,包括字串、數字和布爾值Closed 具有兩種可能值的子了類型:true 和 false。。運算式在 Studio 指令碼中有多種用途。可用於:

  • 配置 Studio 動作 屬性或 Snippet。
  • 在指令碼中定義邏輯,建立分支並模擬決策
  • 為動作屬性或 Snippet 提供常值。
  • 提供數學或代數計算。

運算子

運算子是數學符號,表示對數字進行何種數學或代數運算。Studio 支援所有標準數學和某些代數運算子。還支援布爾值Closed 具有兩種可能值的子了類型:true 和 false。運算子,這些適用於布爾值運算式。這些運算式的值要麼為 True,要麼為 False。您可以在某些語句中使用布爾值,以便在指令碼中建立決策機制。

語句

語句定義指令碼執行時的動作。這包括建立變數、指派新值、執行計算以及根據給定條件做出邏輯選擇。有些語句只執行一項任務,例如為變數賦值。其他語句會影響指令碼的流程。語句按邏輯循序執行,但每次執行指令碼時,順序都可能發生變化。

使用動作編寫指令碼時,一般不需要考慮語句因素。在 Snippet 中,可以使用以下類型的語句:

  • 聲明:使用 declaration 語句聲明或建立新變數、物件和函數。
  • Decision-Making: 使用 decision-making 語句讓 snippet 代碼根據您指定的條件選擇要執行的任務。您可以使用它們來控制指令碼中的線性流程。
  • Looping:使用 Looping 語句讓 snippet 重複執行一項或一組任務,直到滿足指定的結束條件。
  • 其他:這些語句允許您終止函數、在偵錯期間在 Snippet editor 視窗中顯示結果,以及在 snippet 中包含網路服務代理 DLL。

有些語句的 Studio 動作具有相同作用。例如,ASSIGNIF 動作與您可以在 Snippet 中使用的 ASSIGNIF 語句的作用相同。對於許多語句,只能在 Snippet 中使用。

預留字

Studio 有一些預留字,不能用作指令碼中變數和其他實體的名稱。預留字包括以下名稱:

如果在指令碼中使用預留字作為實體名稱,則會導致錯誤。您必須重新命名實體才能解決該錯誤。

備註

備註允許您記錄指令碼或 Snippet 中的內容。您可以用其為自己或未來的指令碼編寫者留下注釋,或解釋指令碼中某些內容的目的。

Studio 指令碼中,您可以使用 Note 動作或 Annotation 動作新增備註。這兩個動作都允許您在指令碼畫布上新增備註。註釋動作可讓畫布上的備註清晰顯示。要閱讀備註動作中的備註,必須點擊兩下該動作。

在 Snippet 中,您可以用兩個正斜線來新增備註。備註可以單獨成行,也可以放在語句末尾。

您還可以在 Snippet 中使用備註來隱藏您不希望在指令碼運行時成為其一部分的代碼行。這對疑難排解很有幫助。

函數

函數是建立可重複使用代碼的一種方法。您可以建立自己的函數,然後在需要使用函數中包含的代碼時,在指令碼的其他位置進行呼叫。Studio 也有一些內建函數,無需在指令碼中聲明即可使用。

字串處理

在 Snippet 中,您可以使用內建函數對字串執行很多動作:

  • 將它們連接起來
  • 將它們分割成子串
  • 搜尋它們
  • 替換部分內容
  • 比較它們
  • 將它們從大寫改成小寫,反之亦然。

在某些情況下,您可能需要指定涉及日期、時間或數字的字串的格式。您可以使用指定的格式說明符來定義指令碼要使用的格式。您還可以使用一些內建函數將字串轉換為不同的格式。

如果不使用轉義序列,某些字元是不能包含在字串中。由於字串必須用單引號或雙引號括起來,如果在字串中包含一個字面意義上的單引號或雙引號,指令碼就會將其解釋為字串的開始或結束。轉義序列向指令碼傳達:該字元是作為字面意義的字元,而不是預設的符號。其他需要轉義序列的字元包括標籤、空格和左大括號。