15

我已经创建了我的 lex 机器人并发布了它。我现在正试图从一个休息客户端测试它。

这个想法一旦从休息客户端工作,我可以使用休息调用将它与我的自定义 UI 集成。

在此处输入图像描述

我正在按照此链接 http://docs.aws.amazon.com/lex/latest/dg/API_runtime_PostText.html使用来自 posttext 的请求正文​</p>

当我从休息客户端使用它时,我得到了缺少身份验证令牌。

在此处输入图像描述

使用的端点 url 是https://runtime.lex.us-east-1.amazonaws.com

我是否应该在授权标头中添加一些东西,比如 AWS 签名或其他东西来完成这项工作。

4

1 回答 1

12

您需要在授权选项卡中包含一个 AWS 签名,其中包含有权运行您的 Lex 机器人的 IAM 用户的详细信息。

步骤: 1. 在 AWS 中转到 IAM -> 用户 -> 添加用户

在此处输入图像描述

  1. 给它一个像“myBotUser”这样的用户名,然后选择“程序访问”的访问类型。点击下一步:权限。

在此处输入图像描述

  1. 点击创建组以创建一个组以授予用户权限。

在此处输入图像描述

  1. 为其命名,然后过滤 Lex 的策略 - 并选择“AmazonLexReadOnly”和“AmazonLexRunBotsOnly”。

在此处输入图像描述

点击创建组。

  1. 然后点击“下一步:回顾”。
  2. 然后点击“创建用户” - 您的 IAM 用户已准备就绪。您将看到一个访问密钥 ID 和一个秘密访问密钥。

  3. 在 Postman 中的 Authorization 中,选择 AWS 签名并输入访问密钥 ID 和秘密访问密钥,以及“us-east-1”的 AWS 区域和“lex”的服务名称:

在此处输入图像描述

  1. 确保您的身体符合要求(这里我只是发送文本):

在此处输入图像描述

点击发送,您应该会收到如下回复:

{
    "dialogState": "Fulfilled",
    "intentName": "yourIntentName",
    "message": "A response for that intent",
    "responseCard": null,
    "sessionAttributes": {},
    "slotToElicit": null,
    "slots": {}
}

更新

另请注意 - POST url 的格式为:

https://runtime.lex.us-east-1.amazonaws.com/bot/MyBotName/alias/myMyAlias/user/aUniqueUserID/text and it should be a POST

还要确保标头 Content-Type 是 application/json,就像正文一样。

于 2017-07-10T12:49:26.763 回答