首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  微博

公众号超时判断的问题.

  •  
  •   colorsand · 2015-07-04 15:38:02 +08:00 · 1806 次点击
    这是一个创建于 1593 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    我疑惑 po 主描述的是公众号的客服微信问题。那个我还没看微信的文档,因此上面的并不适合客服微信需求,请自行查找处理。
        4
    colorsand   2015-07-04 17:36:04 +08:00
    没错,我就是用的客服接口。我尝试用sleep,暂停程序的执行,然后发起一个请求调用客服接口,暂停的时间设为30秒的时候,微信收不到消息,暂停10的时候可以收到消息。
        5
    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,也可以用计划任务来跑一跑。
        6
    colorsand   2015-07-06 18:38:18 +08:00
    @alex321 是逻辑上有问题,由于我是在sleep之后返回信息的,这时候微信服务器和公众号服务器已经由于超时,会提示出错。导致后边不能正常调用客服端口。
    我现在的解决办法是在返回信息之前发起一个异步请求,然后在另一个脚本中执行sleep,这样就不会影响正常返回信息了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4046 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 07:57 · PVG 15:57 · LAX 23:57 · JFK 02:57
    ♥ Do have faith in what you're doing.