

终止支持通知：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)。

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

# 一般指导原则
<a name="gl-guidelines"></a>

本节描述了使用 Amazon Lex 时的一般准则。
+ 签名请求 — [API 参考](API_Reference.md) 中的所有 Amazon Lex 模型构建和运行时 API 操作都使用签名 V4 来验证请求。有关验证请求的更多信息，请参阅《Amazon Web Services 一般参考》** 中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

   

  对于 [PostContent](API_runtime_PostContent.md)，Amazon Lex 使用**《Amazon Simple Storage Service (S3) API 参考》中的 [Authorization 标头签名计算：在单个数据块中传输负载（AWS 签名版本 4）](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html)中所述的无符号负载选项。

   

  当您使用无符号负载选项时，请勿在规范请求中包括有效负载的哈希。而应使用文字字符串“UNSIGNED-PAYLOAD”作为负载的哈希。还应在 `PostContent` 请求中包含一个名为 `x-amz-content-sha256` 并且值为 `UNSIGNED-PAYLOAD` 的标头。

   
+ 请注意以下有关 Amazon Lex 从用户言语中捕获插槽值的方式的信息：

   

  Amazon Lex 使用您在插槽类型定义中提供的枚举值来训练其机器学习模型。假设您使用以下示例表达定义了名为 `GetPredictionIntent` 的目的：

  ```
  "Tell me the prediction for {Sign}" 
  ```

  其中 `{Sign}` 是自定义类型 `ZodiacSign` 的槽。它具有 12 个枚举值 (`Aries` 到 `Pisces`)。从用户言语“告诉我预测 ...”中，Amazon Lex 了解到接下来要表达的是星座。

   

  如果使用 [PutSlotType](API_PutSlotType.md) 操作将 `valueSelectionStrategy` 字段设置为 `ORIGINAL_VALUE`，或如果在控制台中选中了**扩展值**，则当用户说“告诉我对地球的预测”时，Amazon Lex 将推断“地球”为 `ZodiacSign` 并将它传递到您的客户端应用程序或 Lambda 函数。您必须检查槽值是有效的，然后才能在完成活动中使用它们。

   

  如果您使用 [PutSlotType](API_PutSlotType.md) 操作将 `valueSelectionStrategy` 字段设置为 `TOP_RESOLUTION`，或如果在控制台中选中了 **Restrict to slot values and synonyms**，则返回的值将限制为您为槽类型定义的值。例如，如果用户说“Tell me the prediction for earth”，则无法识别此值，因为它不是为槽类型定义的值之一。如果您定义同义词作为槽值，则会将同义词视为与槽值相同，但是，将返回槽值而不是同义词。

   

  当 Amazon Lex 调用 Lambda 函数或返回与您的客户端应用程序的语音交互的结果时，无法保证返回插槽值。例如，如果引发 [AMAZON.Movie](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#movie) 内置插槽类型的插槽值，而用户说出或键入“Gone with the wind”，Amazon Lex 可能会返回“Gone with the Wind”、“gone with the wind”或“Gone With The Wind”。在文本交互中，槽值的大小写将与输入的文本或槽值匹配（具体取决于 `valueResolutionStrategy` 字段的值）。

   
+ 定义包含首字母缩略词的插槽值时，请使用以下模式：
  + 用句点分隔的大写字母（D.V.D.）
  + 用空格分隔的大写字母 (D V D)

   
+ Amazon Lex 不支持 AMAZON.LITERAL 内置插槽类型，但 Alexa Skills Kit 支持此类型。但是，Amazon Lex 支持创建您可用于实施此功能的自定义插槽类型。如上一要点中提到，您可捕获自定义槽类型定义外部的值。可添加更多不同的枚举值来提升自动语音识别 (ASR) 和自然语言理解 (NLU) 的准确度。

   
+ [AMAZON.DATE](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#date) 和 [AMAZON.TIME](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/slot-type-reference#time) 内置槽类型可同时捕获绝对和相对日期和时间。相对日期和时间在 Amazon Lex 处理请求的区域中解析。

   

  对于 `AMAZON.TIME` 内置插槽类型，如果用户不指定是在上午还是下午，则时间是不确定的，Amazon Lex 会再次提示用户。建议用户提示引发绝对时间。例如，使用这类提示：“您希望披萨什么时候送到？ 您可以说下午 6 点或晚上 6 点。” 

   
+ 在机器人中提供易混淆的训练数据将减弱 Amazon Lex 理解用户输入的能力。请考虑以下示例：

   

  假设自动程序包含两个目的 (`OrderPizza` 和 `OrderDrink`)，并且这两个目的都是使用“我需要订购”表达配置的。在构建时为机器人构建语言模型时，此言语不会映射到 Amazon Lex 可了解的特定意图。因此，当用户在运行时输入此言语时，Amazon Lex 无法高度自信地选择意图。

   

  再举个例子，您定义自定义目的 (例如，`MyCustomConfirmationIntent`) 以获取用户确认并使用表达“是”和“否”来配置目的。请注意，Amazon Lex 还有一个理解用户确认的语言模型。这可能会导致出现冲突。当用户回复“是”时，这意味着确认进行中的目的还是用户在请求您创建的自定义目的？ 

   

  通常，您提供的示例表达应映射到特定目的和 (可选) 特定槽值。

   
+ 运行时 API 操作 [PostContent](API_runtime_PostContent.md) 和 [PostText](API_runtime_PostText.md) 采用用户 ID 作为必需参数。开发人员可将此设置为满足 API 中所述约束的任何值。建议您不要使用此参数发送任何机密信息 (如用户登录名、电子邮件或身份证号)。此 ID 主要用于唯一识别与自动程序的对话 (可能有多个用户订购披萨)。

   
+ 如果您的客户端应用程序使用 Amazon Cognito 进行身份验证，您可使用 Amazon Cognito 用户 ID 作为 Amazon Lex 用户 ID。请注意，为机器人配置的任何 Lambda 函数都必须有自己的身份验证机制才能标识 Amazon Lex 代表其调用 Lambda 函数的用户。

   
+ 我们鼓励您定义捕获用户中断对话的意图的目的。例如，您可以定义具有示例言语（“我什么都不需要”、“退出”、“再见”）但没有插槽和配置为代码挂钩的 Lambda 函数的意图 (`NothingIntent`)。这将使用户能够正常关闭对话。

   