步骤 2b (可选):查看所键入信息流的详细信息 (控制台) - Amazon Lex V1

如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。

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

步骤 2b (可选):查看所键入信息流的详细信息 (控制台)

本部分介绍了客户端和 Amazon Lex (客户端在其中使用 PostText API 来发送请求) 之间的信息流。有关更多信息,请参阅PostText

  1. 用户类型:我想要订些花

    1. 客户端 (控制台) 将向 Amazon Lex 发送以下 PostText 请求:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "I would like to order some flowers", "sessionAttributes": {} }

      请求 URI 和正文都将向 Amazon Lex 提供信息:

      • 请求 URI — 提供机器人名称 (OrderFlowers)、机器人别名 ($LATEST) 和用户名称(用于标识用户的随机字符串)。后面的 text 表示它是一个 PostText API 请求 (而不是 PostContent)。

         

      • 请求正文 – 包括用户输入 (inputText) 和空 sessionAttributes。在客户端发出第一个请求时,没有会话属性。稍后,Lambda 函数会启动这些属性。

    2. inputText 中,Amazon Lex 可检测意图 (OrderFlowers)。此意图没有任何代码挂钩(即 Lambda 函数)用于初始化和验证用户输入或履行。

      Amazon Lex 将选择其中一个意图插槽 (FlowerType) 来引发值。此外,它还会选择槽的其中一个值引出提示 (目的配置的所有部分),然后将以下响应发送回客户端。控制台向用户显示响应中的消息。

      包含发送到客户端的 JSON 数据的消息。

      客户端将显示响应中的消息。

  2. 用户类型:玫瑰

    1. 客户端 (控制台) 将向 Amazon Lex 发送以下 PostText 请求:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "roses", "sessionAttributes": {} }

      请求正文中的 inputText 将提供用户输入。sessionAttributes 将保留为空。

    2. Amazon Lex 首先解读当前意图的上下文中的 inputText(服务记得它已经向特定用户询问了关于 FlowerType 插槽的信息)。Amazon Lex 首先更新当前意图的插槽值,然后选择另一个插槽 (PickupDate) 以及该插槽 的其中一个提示消息(“您想在哪天取玫瑰?”)。

      然后,Amazon Lex 将返回以下响应:

      在对 FlowerType 槽的请求的响应中发送的 JSON 数据。

      客户端将显示响应中的消息。

  3. 用户类型:明天

    1. 客户端 (控制台) 将向 Amazon Lex 发送以下 PostText 请求:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "tomorrow", "sessionAttributes": {} }

      请求正文中的 inputText 将提供用户输入。sessionAttributes 将保留为空。

    2. Amazon Lex 首先解读当前意图的上下文中的 inputText(服务记得它已经向特定用户询问了关于 PickupDate 插槽的信息)。Amazon Lex 将更新当前意图的插槽 (PickupDate) 值。它将选择另一个槽来引出 (PickupTime) 的值。它向客户端返回其中一个值引发提示(在 2017 年 1 月 5 日的什么时间交付玫瑰?)。

      Amazon Lex 将返回以下响应:

      在请求 PickupDate 槽后返回的 JSON 消息。

      客户端将显示响应中的消息。

  4. 用户类型:下午 6 点

    1. 客户端 (控制台) 将向 Amazon Lex 发送以下 PostText 请求:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "6 pm", "sessionAttributes": {} }

      请求正文中的 inputText 将提供用户输入。sessionAttributes 将保留为空。

    2. Amazon Lex 首先解读当前意图的上下文中的 inputText(服务记得它已经向特定用户询问了关于 PickupTime 插槽的信息)。Amazon Lex 将首先更新当前意图的插槽值。现在,Amazon Lex 将检测到它拥有所有插槽的信息。

      OrderFlowers 目的配置了确认消息。因此,Amazon Lex 需要先获得用户的显式确认,然后才能继续履行意图。在订花之前,Amazon Lex 将向请求确认的客户端发送以下消息:

      包含要求对鲜花订购进行确认的 JSON 数据的消息。

      客户端将显示响应中的消息。

  5. 用户类型:是

    1. 客户端 (控制台) 将向 Amazon Lex 发送以下 PostText 请求:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "Yes", "sessionAttributes": {} }

      请求正文中的 inputText 将提供用户输入。sessionAttributes 将保留为空。

    2. Amazon Lex 将解释确认当前意图的上下文中的 inputText。它将了解用户希望继续完成订单。OrderFlowers 意图配置有 ReturnIntent 作为履行活动(没有 Lambda 函数用来履行意图)。因此,Amazon Lex 向客户端返回插槽数据。

      当对话结束且订单已准备好履单时发送的 JSON 数据。

      Amazon Lex 将 dialogState 设置为 ReadyForFulfillment。然后,客户端可以完成目的。

  6. 现在,再次测试自动程序。为此,您必须在控制台中选择 Clear 链接以建立新的 (用户) 上下文。现在,在您提供订花目的的数据时,请尝试提供无效数据。例如:

    • “茉莉花”作为鲜花类型 (它不是一种受支持的鲜花类型)。

    • “昨天”作为您想要取花的日期。

    请注意,自动程序将接受这些值,因为您没有任何代码来初始化/验证用户数据。在下一节中,您将添加 Lambda 函数来完成此操作。请注意有关 Lambda 函数的以下内容:

    • Lambda 函数将在每个用户输入后验证插槽数据。它将在结束时完成目的。即自动程序将处理鲜花订单,然后向用户返回一条消息,而不是只向客户端返回槽数据。有关更多信息,请参阅使用 Lambda 函数

    • Lambda 函数还将设置会话属性。有关会话属性的更多信息,请参阅 PostText

      完成“入门”部分后,您可以做其他练习 (其他示例:创建 Amazon Lex 机器人)。预订旅程 使用会话属性来共享各个目的的信息,以与用户进行动态对话。

下一个步骤

步骤 3:创建 Lambda 函数(控制台)