WeRoBot icon indicating copy to clipboard operation
WeRoBot copied to clipboard

我使用@robot.text获取用户消息并且执行时,它自动获取了三遍用户消息,并且执行了三遍我的代码逻辑

Open bianningtao opened this issue 1 year ago • 9 comments

bianningtao avatar Mar 18 '23 13:03 bianningtao

微信服务器在将用户的消息发给公众号的开发者服务器地址(开发者中心处配置)后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html 我也遇到了同样的问题

cczhong11 avatar Mar 28 '23 06:03 cczhong11

服务端如果5s内不返回任何消息,微信会重发客户的消息,微信重发了两次,所以才会执行了三次。你可以收到消息后把业务逻辑放到子线程中处理,然后return ""。这样微信服务器就不会重发了

SMU-Rainflow avatar Apr 05 '23 16:04 SMU-Rainflow

服务端如果5s内不返回任何消息,微信会重发客户的消息,微信重发了两次,所以才会执行了三次。你可以收到消息后把业务逻辑放到子线程中处理,然后return ""。这样微信服务器就不会重发了

子线程中,你是采用客服消息的方式 继续向指定用户发送消息的吗

ericzikun avatar Apr 22 '23 08:04 ericzikun

也用了文本消息,在实践中,至少是可以回复两条的

SMU-Rainflow avatar Apr 22 '23 08:04 SMU-Rainflow

我用了两个线程现在已经解决了,我把ChatGPT接到了我的公众号上,就是为了解决响应速度的问题,现在已经正常运行一个月了

| | ab2961513324 | | @.*** |

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月22日 16:28 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [offu/WeRoBot] @.***获取用户消息并且执行时,它自动获取了三遍用户消息,并且执行了三遍我的代码逻辑 (Issue #801) |

服务端如果5s内不返回任何消息,微信会重发客户的消息,微信重发了两次,所以才会执行了三次。你可以收到消息后把业务逻辑放到子线程中处理,然后return ""。这样微信服务器就不会重发了

子线程中,你是采用客服消息的方式 继续向指定用户发送消息的吗

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

bianningtao avatar Apr 22 '23 09:04 bianningtao

我用了两个线程现在已经解决了,我把ChatGPT接到了我的公众号上,就是为了解决响应速度的问题,现在已经正常运行一个月了 | | ab2961513324 | | @.*** | ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月22日 16:28 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [offu/WeRoBot] @.获取用户消息并且执行时,它自动获取了三遍用户消息,并且执行了三遍我的代码逻辑 (Issue #801) | 服务端如果5s内不返回任何消息,微信会重发客户的消息,微信重发了两次,所以才会执行了三次。你可以收到消息后把业务逻辑放到子线程中处理,然后return ""。这样微信服务器就不会重发了 子线程中,你是采用客服消息的方式 继续向指定用户发送消息的吗 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.>

服务端如果5s内不返回任何消息,微信会重发客户的消息,微信重发了两次,所以才会执行了三次。你可以收到消息后把业务逻辑放到子线程中处理,然后return ""。这样微信服务器就不会重发了

请问如何回复两次消息呢?主进程是正常return "",回复了一次,业务逻辑放到子进程之后,是要主动给客户发消息吗?怎样实现主动发消息呢?还是用别的方式实现?

yuezx avatar Jul 26 '23 15:07 yuezx