【问题标题】:How to test my published LEX bot on a REST CLIENT如何在 REST 客户端上测试我发布的 LEX 机器人
【发布时间】:2017-12-07 18:55:00
【问题描述】:

我已经创建了我的 lex 机器人并发布了它。我现在正在尝试从其他客户端对其进行测试。

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

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

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

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

我是否应该在授权标头中添加一些内容,例如 AWS 签名或其他内容以使其正常工作。

【问题讨论】:

标签: rest amazon-web-services amazon-lex


【解决方案1】:

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

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

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

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

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

点击创建组。

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

  3. 在 Postman 的 Authorization 中,选择 AWS Signature 并输入访问密钥 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,就像正文一样。

【讨论】:

  • 做了这一切。我收到此错误“发送请求时出错:无法在'XMLHttpRequest'上执行'setRequestHeader':'runtime.lex.us-east-1.amazonaws.com'不是有效的http标头字段值”。这是因为端点 url 不正确吗?如果是这样的话,调用具有机器人名称和别名的已发布 lex 机器人的正确 url 应该是什么。
  • 我正在使用相同的.. 我在问题中添加了屏幕截图
  • { "inputText": "我要开票", "sessionAttributes": { "string" : "string" } }
  • 我猜这个请求不会进行
  • 嗯。您可以发布请求的邮递员 json 吗(如果它们在其中,只需删除密钥)
猜你喜欢
  • 1970-01-01
  • 2011-11-13
  • 2017-12-15
  • 2016-06-10
  • 2018-09-20
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
相关资源
最近更新 更多