

终止支持通知：2025年9月15日， AWS 我们将停止对Amazon Lex V1的支持。2025 年 9 月 15 日之后，您将无法再访问 Amazon Lex V1 控制台或 Amazon Lex V1 资源。如果您使用的是 Amazon Lex V2，请改为参阅 [Amazon Lex V2 指南](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 练习 4：发布版本 (AWS CLI)
<a name="gs-cli-publish"></a>

现在，为您在练习 1 中创建的自动程序创建一个版本。*版本* 是自动程序的快照。版本创建后便无法更改。您可以更新的唯一自动程序版本是 `$LATEST` 版本。有关版本的更多信息，请参阅[版本控制和别名](versioning-aliases.md)。

在发布自动程序版本前，必须先发布它所使用的目的。同样，还必须发布这些目的引用的槽类型。一般而言，发布自动程序版本需要执行以下操作：

1. 使用 [CreateSlotTypeVersion](API_CreateSlotTypeVersion.md) 操作发布一个槽类型版本。

1. 使用 [CreateIntentVersion](API_CreateIntentVersion.md) 操作发布一个目的版本。

1. 使用 [CreateBotVersion](API_CreateBotVersion.md) 操作发布一个自动程序版本。

要运行本练习中的命令，您需要知道将在其中运行命令的区域。有关区域列表，请参阅[模型构建配额](gl-limits.md#gl-limits-model-building)。

**Topics**
+ [

# 步骤 1：发布槽类型 (AWS CLI)
](gs-cli-publish-slot-type.md)
+ [

# 步骤 2：发布目的 (AWS CLI)
](gs-cli-publish-intent.md)
+ [

# 步骤 3：发布自动程序 (AWS CLI)
](gs-cli-publish-bot.md)

# 步骤 1：发布槽类型 (AWS CLI)
<a name="gs-cli-publish-slot-type"></a>

在发布使用某一槽类型的任意目的的版本之前，必须发布该槽类型的一个版本。在本例中，您将发布 `FlowerTypes` 槽类型。

**注意**  
以下 AWS CLI 示例是针对 Unix、Linux 和 macOS 进行格式化的。对于 Windows，请将 `"\$LATEST"` 更改为 `$LATEST` 并将每行末尾的反斜杠 (\$1) 继续符替换为脱字号 (^)。

**发布槽类型 (AWS CLI)**

1. 在中 AWS CLI，获取最新版本的插槽类型：

   ```
   aws lex-models get-slot-type \
       --region region \
       --name FlowerTypes \
       --slot-type-version "\$LATEST"
   ```

   来自 Amazon Lex 的响应如下。请记录 `$LATEST` 版本最新修订版的校验和。

   ```
   {
       "enumerationValues": [
           {
               "value": "tulips"
           }, 
           {
               "value": "lilies"
           }, 
           {
               "value": "roses"
           }
       ], 
       "name": "FlowerTypes", 
       "checksum": "checksum", 
       "version": "$LATEST", 
       "lastUpdatedDate": timestamp, 
       "createdDate": timestamp, 
       "description": "Types of flowers to pick up"
   }
   ```

1. 发布一个槽类型版本。请使用在上一步中记录的校验和。

   ```
   aws lex-models create-slot-type-version \
       --region region \
       --name FlowerTypes \
       --checksum "checksum"
   ```

   来自 Amazon Lex 的响应如下。请记录版本号以供下一步使用。

   ```
   {
       "version": "1", 
       "enumerationValues": [
           {
               "value": "tulips"
           }, 
           {
               "value": "lilies"
           }, 
           {
               "value": "roses"
           }
       ], 
       "name": "FlowerTypes", 
       "createdDate": timestamp, 
       "lastUpdatedDate": timestamp, 
       "description": "Types of flowers to pick up"
   }
   ```

## 下一个步骤
<a name="gs-cli-publish-2"></a>

[步骤 2：发布目的 (AWS CLI)](gs-cli-publish-intent.md)

# 步骤 2：发布目的 (AWS CLI)
<a name="gs-cli-publish-intent"></a>

在发布某个目的之前，必须先发布该目的引用的所有槽类型。槽类型必须是编号版本，而不是 `$LATEST` 版本。

首先，更新 `OrderFlowers` 目的以使用您在上一步中发布的 `FlowerTypes` 槽类型版本。然后发布 `OrderFlowers` 目的的新版本。

**注意**  
以下 AWS CLI 示例是针对 Unix、Linux 和 macOS 进行格式化的。对于 Windows，请将 `"\$LATEST"` 更改为 `$LATEST` 并将每行末尾的反斜杠 (\$1) 继续符替换为脱字号 (^)。

**发布目的版本 (AWS CLI)**

1. 在中 AWS CLI，获取 `OrderFlowers` Intent 的`$LATEST`版本并将其保存到文件中：

   ```
   aws lex-models get-intent \
       --region region \
       --name OrderFlowers \
       --intent-version "\$LATEST" > OrderFlowers_V4.json
   ```

1. 在文本编辑器中，打开 **OrderFlowers\$1V4.json**文件。删除 `createdDate`、`lastUpdatedDate` 和 `version` 字段。找到 `FlowerTypes` 槽类型并将版本更改为您在上一步中记录的版本号。下面的 **OrderFlowers\$1V4.json** 文件片段显示了更改的位置：

   ```
           {
               "slotType": "FlowerTypes", 
               "name": "FlowerType", 
               "slotConstraint": "Required", 
               "valueElicitationPrompt": {
                   "maxAttempts": 2, 
                   "messages": [
                       {
                           "content": "What type of flowers?", 
                           "contentType": "PlainText"
                       }
                   ]
               }, 
               "priority": 1, 
               "slotTypeVersion": "version", 
               "sampleUtterances": []
           },
   ```

1. 在中 AWS CLI，保存意图的修订版：

   ```
   aws lex-models put-intent \
       --name OrderFlowers \
       --cli-input-json file://OrderFlowers_V4.json
   ```

1. 获取最新目的修订版的校验和：

   ```
   aws lex-models get-intent \
       --region region \
       --name OrderFlowers \
       --intent-version "\$LATEST" > OrderFlowers_V4a.json
   ```

   以下响应片段显示了目的的校验和。请记下此校验和供下一步使用。

   ```
       "name": "OrderFlowers", 
       "checksum": "checksum", 
       "version": "$LATEST",
   ```

1. 发布新目的版本：

   ```
   aws lex-models create-intent-version \
       --region region \
       --name OrderFlowers \
       --checksum "checksum"
   ```

   以下响应片段显示了新目的版本。请记录版本号以供下一步使用。

   ```
       "name": "OrderFlowers", 
       "checksum": "checksum", 
       "version": "version",
   ```

## 下一个步骤
<a name="gs-cli-publish-3"></a>

[步骤 3：发布自动程序 (AWS CLI)](gs-cli-publish-bot.md)

# 步骤 3：发布自动程序 (AWS CLI)
<a name="gs-cli-publish-bot"></a>

发布完您的自动程序所使用的所有槽类型和目的后，就可以发布自动程序了。

更新 `OrderFlowersBot` 自动程序以使用您在上一步中更新的 `OrderFlowers` 目的。然后发布 `OrderFlowersBot` 自动程序的新版本。

**注意**  
以下 AWS CLI 示例是针对 Unix、Linux 和 macOS 进行格式化的。对于 Windows，请将 `"\$LATEST"` 更改为 `$LATEST` 并将每行末尾的反斜杠 (\$1) 继续符替换为脱字号 (^)。

**发布自动程序版本 (AWS CLI)**

1. 在中 AWS CLI，获取`OrderFlowersBot`机器人的`$LATEST`版本并将其保存到文件中：

   ```
   aws lex-models get-bot \
       --region region \
       --name OrderFlowersBot \
       --version-or-alias "\$LATEST" > OrderFlowersBot_V4.json
   ```

1. 在文本编辑器中，打开 **OrderFlowersBot\$1V4.json**文件。删除 `createdDate`、`lastUpdatedDate`、`status` 和 `version` 字段。找到 `OrderFlowers` 目的并将版本更改为您在上一步中记录的版本号。下面的 **OrderFlowersBot\$1V4.json** 文件片段显示了更改的位置。

   ```
       "intents": [
           {
               "intentVersion": "version", 
               "intentName": "OrderFlowers"
           }
   ```

1. 在中 AWS CLI，保存机器人的新版本。记下调用 `put-bot` 所返回的版本号。

   ```
   aws lex-models put-bot \
       --name OrderFlowersBot \
       --cli-input-json file://OrderFlowersBot_V4.json
   ```

1. 获取最新自动程序修订版的校验和。使用步骤 3 中返回的版本号。

   ```
   aws lex-models get-bot \
       --region region \
       --version-or-alias version \
       --name OrderFlowersBot > OrderFlowersBot_V4a.json
   ```

   以下响应片段显示了自动程序的校验和。请记下此校验和供下一步使用。

   ```
       "name": "OrderFlowersBot", 
       "locale": "en-US", 
       "checksum": "checksum",
   ```

1. 发布机器人的新版本：

   ```
   aws lex-models create-bot-version \
       --region region \
       --name OrderFlowersBot \
       --checksum "checksum"
   ```

   以下响应片段显示了自动程序的新版本。

   ```
       "checksum": "checksum", 
       "abortStatement": {
           ...
       }, 
       "version": "1",
       "lastUpdatedDate": timestamp,
   ```

## 下一个步骤
<a name="gs-cli-next-exercise-5"></a>

[练习 5：创建别名 (AWS CLI)](gs-cli-create-alias.md)