1

我正在开发一个聊天机器人,我正在测试如何使用这些技术。我的想法是使用链接到API.ai的Facebook Messenger并从API.ai使用Webhook发送到Amazon API Gateway + Lambda以使用DynamoDB执行一些任务。

如果我有一个与API.ai关联的 url ( API Gateway ),我的问题是在Webhook中(这是我第一次使用它) 。当不同的Intent需要时,我会调用不同的Lambda函数。也就是说:

Intent1 -> API 网关 -> Lambda1

Intent2 -> API 网关 -> Lambda2

我认为,因为它是一个可以在API.ai中关联的 url ( API Gateway ) 。是否应该将Lambda函数用作过滤器?

Intention1 -> API 网关 -> LambdaFilter -> Lambda1

Intention2 -> API 网关 -> LambdaFilter -> Lambda2

我感谢任何帮助和建议。

4

1 回答 1

0

好吧,我也在为这个架构规划而苦苦挣扎。您将需要一个 API 条目,也就是说,它将指向一个特定的 lambda 函数。

您可以为您的 Lambda 激活“代理集成”,然后您将能够在履行 webhook 上捕获从 API.ai 发送的所有标头。

然后,使用 LambdaFilter(它是一个 Lambda),您将需要使用 boto3 进行编码以调用其他 lambda,这将增加更多的 lambda 调用和处理时间。另一个要尝试的东西(我还没有尝试过)是 StepFuncions,它声称可以解决 lambda 工作流管理。

为了说明一个 lambda 在我的测试中调用另一个 lambda 有多糟糕,我做了 SLACK > APIGW > LAMBDAs > SLACK。4 个 lambda 调用链(slack-handler、general-handler、general-notifier、slack-notifier)大约需要 0.6~0.9 秒。而且我仍然没有调用 API.ai !!!将它压缩到只有 2 个 lambdas(处理程序和通知程序,其中包含更复杂的代码)让我进入了 .3~.4s 的场景。

我这样做是为了避免将我的解决方案耦合到 API.ai 或 Slack。

于 2017-10-18T16:07:13.090 回答