本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用文法槽類型,您可以根據 SRGS 規格以 XML 格式編寫自己的文法,以在對話中收集資訊。Amazon Lex V2 會辨識文法中指定規則相符的用語。您也可以在文法檔案中使用 ECMAScript 標籤提供語意解釋規則。然後,Amazon Lex 會在配對發生時,將標籤中設定的屬性傳回為解析的值。
您只能在英文 (澳洲)、英文 (英國) 和英文 (美國) 區域建立文法槽類型。
文法槽類型有兩個部分。第一個是使用 SRGS 規格格式撰寫的文法本身。文法會解譯使用者的表達用語。如果文法接受表達式,則會相符,否則會被拒絕。如果表達式相符,如果有的話,則會傳遞給指令碼。
第二個是文法槽類型的一部分,是以 ECMAScript 撰寫的選用指令碼,可將輸入轉換為槽類型傳回的解析值。例如,您可以使用指令碼將口語號碼轉換為數字。ECMAScript 陳述式包含在 <tag> 元素中。
下列範例是依 SRGS 規格的 XML 格式,顯示 Amazon Lex V2 接受的有效語法。它定義了一個文法槽類型,可接受卡號,並判斷它們是用於一般還是高級帳戶。如需可接受語法的詳細資訊,請參閱 文法定義和 指令碼格式主題。
<grammar version="1.0" xmlns="http://www.w3.org/2001/06/grammar"
xml:lang="en-US" tag-format="semantics/1.0" root="card_number">
<rule id="card_number" scope="public">
<item repeat="0-1">
card number
</item>
<item>
seven
<tag>out.value = "7";</tag>
</item>
<item>
<one-of>
<item>
two four one
<tag> out.value = out.value + "241"; out.card_type = "premium"; </tag>
</item>
<item>
zero zero one
<tag> out.value = out.value + "001"; out.card_type = "regular";</tag>
</item>
</one-of>
</item>
</rule>
</grammar>
上述文法僅接受兩種類型的卡號:7241 或 7001。這兩者都可以選擇使用「卡號」字首。它也包含可用於語意解釋的 ECMAScript 標籤。透過語意解釋,「卡編號七二四一」會傳回下列物件:
{
"value": "7241",
"card_type": "premium"
}
此物件會在 RecognizeText、RecognizeUtterance 和 StartConversation 操作傳回的resolvedValues
物件中,以 JSON 序列化字串的形式傳回。
新增文法槽類型
新增文法槽類型
-
將插槽類型的 XML 定義上傳至 S3 儲存貯體。記下儲存貯體名稱和檔案的路徑。
注意
檔案大小上限為 100 KB。
-
登入 AWS Management Console ,並在 https://console.aws.amazon.com/lex/
:// 開啟 Amazon Lex 主控台。 -
從左側選單中,選擇機器人,然後選擇要新增文法槽類型的機器人。
-
選擇檢視語言,然後選擇要新增文法槽類型的語言。
-
選擇檢視槽類型。
-
選擇新增插槽類型,然後選擇新增文法插槽類型。
-
為插槽類型命名,然後選擇新增。
-
選擇包含定義檔案的 S3 儲存貯體,然後輸入檔案的路徑。選擇儲存槽類型。