1
shoaly 2018-08-18 18:44:03 +08:00
这不是微信相关的, 是 session 去处理的....
|
2
bombless 2018-08-18 19:03:02 +08:00 via Android
存哪无所谓,可以存文件里
看要不要区分用户,区分的话可以一个 openid 对应一个文件 |
3
notedown 2018-08-18 20:53:20 +08:00
redis 咯.
检测是活动关键字 触发..存起来... hset quaere:001 openid:xxxxxx {用户填写的内容一些东西 obj to string} 主要是看你的活动流程.而不是怎么储存 |
4
opengps 2018-08-18 20:58:13 +08:00 via Android
微信的一问一答不太适合你的需求,硬要做也行
首先,你得有记录, 然后,你得有办法识别。某个计算之前多少条信息参与计算 |
5
hlwjia 2018-08-18 21:07:28 +08:00
楼主,你先说说你会什么吧
|
9
InternetExplorer 2018-08-19 00:01:04 +08:00
你想哈,有个叫 session 的东西,自带过期时间,每个用户一个,微信服务器发请求过来的时候,获取来源用户的 session,然后根据 session 来还原出 之前的环境,然后进行操作。
|
10
zhjits 2018-08-19 00:15:05 +08:00
写一个状态机,给每个 user id 存储当前状态
|
12
eb22fbb4 2018-08-19 01:31:15 +08:00
问题的核心不在于存储,数据库、文件、缓存什么的可以,重要的是区分两次消息是否来自同一个人,服务端接收到消息里会包含用户 OpenID,用 OpenID 作为区分用户的唯一标识,把消息内容每次都存起来(只存两条也可以),判断回复时只需要根据 OpenID 取出前两次的消息内容就可以了。
|
13
tudage 2018-08-19 01:47:33 +08:00
不太明白需求啊,是用户第一次发送信息,数据库记录,第二次发送信息,数据库记录,然后返回吗,那就直接存数据就是了啊,在返回的时候删除记录的数据
|
14
cz5424 2018-08-19 02:00:39 +08:00 via Android
12 楼正解
|
15
ivanlw 2018-08-19 04:25:52 +08:00 via iPhone
大家别看不起,楼主的态度至少是在学习,是非常积极的,要给予肯定!
换个人来,分分钟就是“有搞微信开发的吗?我这里有个简单的 idea,谁来帮我实现下,100 块钱” |
16
sky101001 2018-08-19 08:01:29 +08:00 via iPad
如果需要找到第一次请求的信息,那就得用上 openid 之类的标识符,每次请求都需要有读写操作,可能效率不是很高。
虽然不清楚具体需求,但仅对微信而言,其实可以把每次请求的内容存在 localstorage 里,处理后一并发出。避免服务器端消耗资源去找该用户上一次的请求内容 |
17
asd123456cxz 2018-08-19 09:18:07 +08:00
@sky101001 请教下 这个处理是指 预存带有 OpenId 标识的 localstorage 然后添加消息内容 满足条件后发出吗?那该如何在没有和服务器通信之前获取 OpenId 呢?本人比教新手,不太懂前端,谢谢指教
|
18
hhacker 2018-08-19 10:06:57 +08:00
微信公众号接收普通消息(比如文本)时,你会受到微信的主动推送,消息体内就包含有该用户的 openid,你可以对同一个用户短时间内发送的消息视为一次上下文相关的对话,相当于第一次收到消息时开启了一次会话,当你认为收到了足够的会话信息时(比如你需要用户发送的 1 和 2 ),你就可以对该推送进行回复,回复的内容完全是你自己决定的(比如你想要的 3 )
|
19
kalman03 2018-08-19 10:14:33 +08:00 via Android
难道 16 楼不才是正解吗?
|
20
sky101001 2018-08-19 22:27:16 +08:00 via iPad
@asd123456cxz
如果是在客户端用 localstorage 存储请求,那就不需要 openid,只要将每次请求的内容记录在本地即可。比如 localstorage 中已经记录的数据是 1 (当然 post 出去的数据不仅仅是 1 ),目前想要发送的数据是 2,那就生成一段用于 post 的数据{'previous':1,'current':2},然后刷新 localstorage。 |