API.ai Node.js webhook的缓存响应

API.ai Node.js webhook的缓存响应,node.js,caching,node-modules,dialogflow-es,actions-on-google,Node.js,Caching,Node Modules,Dialogflow Es,Actions On Google,我在Node.js for API.ai中设计了一个webhook,它与多个API交互以收集信息并向用户提供响应 由于我正在与多个API交互,因此所用的响应时间超过5秒,这导致API.ai请求超时 为了克服这个问题,我尝试将缓存实现到node.js webhook中,这样可以在一定时间内保存API的响应。这将删除超时,直到达到最大期限标头时间 编辑:我可以使用什么样的最佳节点模块来缓存子请求的API响应 注意:我正在使用http请求,但它似乎没有提供缓存响应的方法 给出的所有答案对于解决请求端的

我在Node.js for API.ai中设计了一个webhook,它与多个API交互以收集信息并向用户提供响应

由于我正在与多个API交互,因此所用的响应时间超过5秒,这导致API.ai请求超时

为了克服这个问题,我尝试将缓存实现到node.js webhook中,这样可以在一定时间内保存API的响应。这将删除超时,直到达到最大期限标头时间

编辑:我可以使用什么样的最佳节点模块来缓存子请求的API响应


注意:我正在使用http请求,但它似乎没有提供缓存响应的方法

给出的所有答案对于解决请求端的缓存问题都是合理的。但是,由于您指定了API.AI和操作,因此您可能还能够或需要在对话进行时存储信息。您可以使用API.AI上下文执行此操作

甚至可能是,如果您将用户的每个响应限制为仅一个远程调用,那么您可能能够在时间范围内适应它

例如,如果您正在进行一次关于电影时间和订票的对话,对话可能类似于:

用户:我想看电影

[您使用API查找最近的剧院,将剧院的位置存储在上下文中并回复]您最近的剧院是购物中心Megaplex。你对那里的有兴趣吗

用户:当然可以

[您现在已经拥有剧院,因此您可以通过另一个API调用查询它正在播放什么,并将其存储在上下文中]有七部不同的电影正在播放,包括《星球大战》和《大白鲨》。这些听起来有趣吗

用户:没有

[你已经有了上下文中的数据,所以你不需要再打电话了。]Rocky或


通过这种方式,您通常会拨打相同数量的电话,但会在通话过程中存储用户的结果,而不是为用户收集所有信息或所有可能的结果,然后缩小范围。

最后决定使用以下模块:


这更符合我的设想。可能会在我有时间的时候尝试使用Redis。

不清楚您想要从StackOverflow获得什么。编辑问题:-。希望现在一切都清楚了。如果您的服务器上有mongodb,那么您可以使用我不久前创建的这个模块:您可以将TTL传递给.cache方法或全局定义它。对不起。不使用MongoDB:-为此,您应该查看一些内存中的数据库,如redis或memcached。