

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 文法槽類型
<a name="building-srgs"></a>

使用文法槽類型，您可以根據 SRGS 規格以 XML 格式編寫自己的文法，以在對話中收集資訊。Amazon Lex V2 會辨識文法中指定規則相符的表達用語。您也可以在文法檔案中使用 ECMAScript 標籤提供語意解釋規則。然後，Amazon Lex 會在配對發生時，將標籤中設定的屬性傳回為解析值。

您只能在英文 （澳洲）、英文 （英國） 和英文 （美國） 地區設定中建立文法槽類型。

文法槽類型有兩個部分。第一個是使用 SRGS 規格格式撰寫的文法本身。文法會解譯使用者的表達用語。如果文法接受表達用語，則會相符，否則會遭到拒絕。如果表達用語相符，如果有的話，則會傳遞至指令碼。

第二個是文法槽類型的一部分，是以 ECMAScript 撰寫的選用指令碼，可將輸入轉換為槽類型傳回的解析值。例如，您可以使用指令碼將口語號碼轉換為數字。ECMAScript 陳述式包含在 <tag> 元素中。

下列範例是根據 SRGS 規格的 XML 格式，顯示 Amazon Lex V2 接受的有效文法。它定義了一個文法槽類型，接受卡號，並確定它們是用於一般還是高級帳戶。如需可接受語法的詳細資訊，請參閱 [文法定義](grammar-srgs-spec.md)和 [指令碼格式](grammar-ecmascript-spec.md)主題。

```
<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。這兩者都可以選擇性地加上 “card number” 字首。它還包含可用於語意解譯的 ECMAScript 標籤。透過語意解釋，表達用語「卡片編號七二四一」會傳回下列物件：

```
{
    "value": "7241",
    "card_type": "premium"
}
```

在 [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)、[RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) 和 [StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html) 操作傳回的物件中，會以 JSON 序列化字串傳回此`resolvedValues`物件。

## 新增文法槽類型
<a name="adding-grammar-slot-type"></a>

**新增文法槽類型**

1. 將插槽類型的 XML 定義上傳至 S3 儲存貯體。記下儲存貯體名稱和檔案的路徑。
**注意**  
檔案大小上限為 100 KB。

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) 開啟 Amazon Lex 主控台。

1. 從左側功能表中，選擇**機器人**，然後選擇要新增文法槽類型的機器人。

1. 選擇**檢視語言**，然後選擇要新增文法槽類型的語言。

1. 選擇**檢視槽類型**。

1. 選擇**新增插槽類型**，然後選擇**新增文法插槽類型**。

1. 為插槽類型命名，然後選擇**新增**。

1. 選擇包含定義檔案的 S3 儲存貯體，然後輸入檔案的路徑。選擇**儲存槽類型**。