我在Node.js中为API.ai设计了一个webhook,它与多个API交互以收集信息并给用户做出响应。
因为,我正在与多个API进行交互,所以响应时间超过5秒,这导致API.ai请求超时。
为了解决这个问题,我试图在node.js webhook中实现缓存,它将API的响应保存到一定的时间。这将删除超时,直到达到max-age标头时间。
编辑:我可以用来缓存子请求请求的API响应的最佳节点模块是什么。
注意:我正在使用request node module来获取http请求,但它似乎没有提供缓存响应的方法。
答案 0 :(得分:1)
所有给出的答案对于解决请求方面的缓存问题都是合理的。但是,由于您指定了API.AI和Actions,因此您可能还需要在对话进行过程中存储信息。您可以使用API.AI上下文执行此操作。
甚至可能是,如果您将其限制为仅针对用户的每个响应进行一次远程调用,您可能能够在时间范围内适应它。
例如,如果您正在进行有关电影时间和故障单排序的对话,那么对话可能会像:
用户:“我想看电影。”
[您使用API查找最近的剧院,将剧院的位置存储在上下文中并回复]“您最近的剧院是购物中心Megaplex。您对那里有兴趣吗?”
用户:“当然”
[你现在已经有了影院,所以你查询它正在播放的另一个API调用并将其存储在一个上下文中]“有七种不同的电影在播放,包括星球大战和大白鲨。这些听起来有趣吗?”
用户:“否”
[你已经拥有上下文中的数据,所以你不需要另外的电话。]“Rocky或者......”
通过这种方式,您可以进行相同数量的呼叫(通常),但是将用户的结果存储在会话中,而不是收集用户的所有信息或所有可能的结果,然后缩小范围。它们。
答案 1 :(得分:0)