我在Messenger平台上制作了一个聊天机器人,并询问用户一系列的问题。但是,当用户回答第一个问题时,它直接回到Api.AI中的回退意图,我必须保持回答同样的问题直到下一个问题。 我认为设置一个sessionID将解决这个问题,但它没有。烧瓶:如何在一定的时间内保留一个变量的值?
ai = ApiAI(os.environ["APIAI_TOKEN"])
req = ai.text_request()
req.session_id = str(uuid.uuid1(int(str(senderID)[0:15])))
事实证明的UUID1的输出变化时,有时当一个新的请求(当用户回答了这个问题),即使senderID是相同的(senderID是通过Facebook的发送的用户ID)。所以,我试图将uuid1的值保存到字典中,如果用户回答第一个问题,新请求将首先检查字典中的senderID,如果它已存在,则不会为同一个senderID生成新的uuid。 但问题是有时当一个新的请求(来自同一用户)遇到heroku时,字典中的值消失了。这不会每次都发生,但约90%的时间。 以下是新请求的日志。
2017-11-18T09:43:03.784670+00:00 heroku[router]: at=info method=POST path="/" host=website.com request_id=ab6d6488-0343-4c68-9b2a-d6faf2ee2302 fwd="173.252.123.140" dyno=web.1 connect=0ms service=633ms status=200 bytes=161 protocol=https
我该如何保留价值。还有其他方法吗? 我是一个新手,我一直陷在这个问题一个星期。
当服务器重新启动时我不会失去redis的值吗? –
如果你把它安装在同一台机器上,是的。但是大多数我认识的人,至少有一些新开发人员使用某种云服务来进行redis(azure,aws等),因为它运行在不同的服务器上,所以他们不会重置。 此外,如果答案帮助你,请接受它 – Akshay