公众号超时判断的问题.

2015-07-04 15:38:02 +08:00
 colorsand

公众号里边需要几个微信轮流发言,公众号通知一个微信后,如果在规定的时间内这个微信号没有发送消息,就通知下一个微信发言,这个功能服务端怎么实现呢?如何判断是否超时?

3772 次点击
所在节点    微博
6 条回复
sarices
2015-07-04 16:12:43 +08:00
微信号发送消息时间-公众号通知时间>超时时间
colorsand
2015-07-04 16:18:52 +08:00
难道要用一个死循环,不断进行“微信号发送消息时间-公众号通知时间>超时时间”的判断?
alex321
2015-07-04 17:22:13 +08:00
超时时间是你确定的吧。。目前微信向公众号发送消息是没有超时这一说的。
实际执行情况是这样的。我们假设有微信 A、B、C。当 A 向公众号发起消息的时候,微信会推送到公众号的服务器,并带有时间戳。公众号通知微信 B,这个过程中需要注意微信的服务器再推送消息给公众号服务器的时候会保持连接 5s,如果超时会尝试发起最多 3 次连接,也就是大约 15s。如果这 15s 比你自己设置的超时时间长,那么你需要在超时之后通知微信 C;如果相比短,在 15s 内通知微信 C,有相应则需要立即回应微信,否则需要利用服务号认证高级接口 48h 回复推送。
但是,微信目前针对特定粉丝微信号一个月只可以发送 4 次消息。你这里就已经用掉了不少了。

我疑惑 po 主描述的是公众号的客服微信问题。那个我还没看微信的文档,因此上面的并不适合客服微信需求,请自行查找处理。
colorsand
2015-07-04 17:36:04 +08:00
没错,我就是用的客服接口。我尝试用sleep,暂停程序的执行,然后发起一个请求调用客服接口,暂停的时间设为30秒的时候,微信收不到消息,暂停10的时候可以收到消息。
alex321
2015-07-06 14:32:58 +08:00
@colorsand 微信被动回复消息用的是 xml 格式;客服消息用的是 json 格式。
正常来说,微信公众号接收到微信粉丝的消息后 48h 内,都可以不限定字数地调用客服接口。。
我肿么赶脚 po 主用的是被动回复消息呢,因为你说 30s 收不到,10s 却能收到,非常符合微信服务器想公众号服务器发起请求如果没有回应会重复发起,中间的时间大约在 15s。。
微信的文档中,被动回复消息: https://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html;主动的客服消息: https://mp.weixin.qq.com/wiki/1/70a29afed17f56d537c833f89be979c9.html。

关于那个 sleep,也可以用计划任务来跑一跑。
colorsand
2015-07-06 18:38:18 +08:00
@alex321 是逻辑上有问题,由于我是在sleep之后返回信息的,这时候微信服务器和公众号服务器已经由于超时,会提示出错。导致后边不能正常调用客服端口。
我现在的解决办法是在返回信息之前发起一个异步请求,然后在另一个脚本中执行sleep,这样就不会影响正常返回信息了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203295

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX