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

时间:2017-09-27 13:06:20

标签: node.js caching node-modules dialogflow actions-on-google

我在Node.js中为API.ai设计了一个webhook,它与多个API交互以收集信息并给用户做出响应。

因为,我正在与多个API进行交互,所以响应时间超过5秒,这导致API.ai请求超时。

为了解决这个问题,我试图在node.js webhook中实现缓存,它将API的响应保存到一定的时间。这将删除超时,直到达到max-age标头时间。

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

注意:我正在使用request node module来获取http请求,但它似乎没有提供缓存响应的方法。

2 个答案:

答案 0 :(得分:1)

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

甚至可能是,如果您将其限制为仅针对用户的每个响应进行一次远程调用,您可能能够在时间范围内适应它。

例如,如果您正在进行有关电影时间和故障单排序的对话,那么对话可能会像:

  

用户:“我想看电影。”

     

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

     

用户:“当然”

     

[你现在已经有了影院,所以你查询它正在播放的另一个API调用并将其存储在一个上下文中]“有七种不同的电影在播放,包括星球大战和大白鲨。这些听起来有趣吗?”

     

用户:“否”

     

[你已经拥有上下文中的数据,所以你不需要另外的电话。]“Rocky或者......”

通过这种方式,您可以进行相同数量的呼叫(通常),但是将用户的结果存储在会话中,而不是收集用户的所有信息或所有可能的结果,然后缩小范围。它们。

答案 1 :(得分:0)

最后决定使用以下模块:

https://www.npmjs.com/package/memory-cache

这更适合我的情景。我很快就会尝试使用Redis。