Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
bianningtao opened this issue Mar 18, 2023 · 9 comments

Comments

@bianningtao
Copy link

No description provided.

@cczhong11
Copy link

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

@SMU-Rainflow
Copy link

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

@ericzikun
Copy link

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

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

@SMU-Rainflow
Copy link

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

@bianningtao
Copy link
Author

bianningtao commented Apr 22, 2023 via email

@yuezx
Copy link

yuezx commented Jul 26, 2023

我用了两个线程现在已经解决了,我把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 "",回复了一次,业务逻辑放到子进程之后,是要主动给客户发消息吗?怎样实现主动发消息呢?还是用别的方式实现?

@yinzhuoqun
Copy link

yinzhuoqun commented Sep 25, 2024

我用了两个线程现在已经解决了,我把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 "",回复了一次,业务逻辑放到子进程之后,是要主动给客户发消息吗?怎样实现主动发消息呢?还是用别的方式实现?

如果用 send_text_message 发送异步消息,由于 个人认证的订阅号 没有客服接口权限,所以不能异步回复消息,只能在 5 秒做出回应,客服发送消息接口文档:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Service_Center_messages.html#7

@yinzhuoqun
Copy link

我用了两个线程现在已经解决了,我把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 "",回复了一次,业务逻辑放到子进程之后,是要主动给客户发消息吗?怎样实现主动发消息呢?还是用别的方式实现?

假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示。详见下面说明:

1、直接回复success(推荐方式) 2、直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空)

@yinzhuoqun
Copy link

我用了两个线程现在已经解决了,我把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 "",回复了一次,业务逻辑放到子进程之后,是要主动给客户发消息吗?怎样实现主动发消息呢?还是用别的方式实现?

个人的订阅号(没有客服发消息接口的)找了一个实现的方法,还是用线程组来实现,直接返回一个网页链接,链接里面再返回处理结果(网页就自己方便处理了,爱咋整咋整,要备案的域名哦,不然在微信不能直接打开)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants