我正在开发一个聊天机器人,我正在测试如何使用这些技术。我的想法是使用链接到 API.ai 的 Facebook Messenger 和 API.ai 使用 Webhook 发送到 Amazon API Gateway + Lambda 使用 DynamoDB 执行某些任务。
我的问题出在 Webhook (这是我第一次使用它),如果我有一个与 API.ai关联的网址( API网关) 。当不同的 Intents 需要它时,我调用不同的 Lambda 函数。也就是说:
Intent1 - > API网关 - > Lambda1
Intent2 - > API网关 - > Lambda2
我原以为是因为它是一个可以在 API.ai 中关联的网址( API网关)。是否应将 Lambda 函数用作过滤器?
意图1 - > API网关 - > LambdaFilter - > Lambda1
意图2 - > API网关 - > LambdaFilter - > Lambda2
我感谢任何帮助和建议。
答案 0 :(得分:0)
好吧,我也在努力解决这个架构规划问题。 您将需要一个API条目,并且表示它将指向特定的lambda函数。
您可以为Lambda激活“代理集成”,而且您将能够捕获从履行webhook上的API.ai发送的所有标题。
然后,使用LambdaFilter(这是一个Lambda),您需要使用boto3代码调用其他lambdas,这将添加更多的lambda调用和处理时间。另一件事(我还没试过)是StepFuncions,它声称要解决lambda工作流管理。
为了说明在我的测试中lambda调用另一个有多糟糕,我做了SLACK> APIGW> LAMBDAs>松弛。 4个lambda调用链(松弛处理程序,通用处理程序,通用通知程序,松弛通知程序)占用了大约.6~ .9s。我仍然没有打电话给API.ai !!!将它压缩为只有2个lambda(处理程序和通知程序,其中包含更复杂的代码)让我得到了一个.3~.4s的场景。
我这样做是为了避免将我的解决方案与API.ai或Slack耦合。