个人微信主动发送在长时间无入站消息后被 iLink 拒绝
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: Lee
**客户端版本**: 0.1.64
---
## 现象
个人微信连接可以正常接收消息,Cindy 回复微信消息也能正常送达。但在较长时间没有新的微信入站消息后,从 Cindy 桌面端主动向已绑定的个人微信发送一条短文本,偶发返回 `SEND_FAILED`;本地日志记录为 iLink 拒绝消息。
## 复现步骤
1. 绑定个人微信并保持连接。
2. 在较长时间没有新的微信入站消息后,从 Cindy 桌面端的其他会话调用个人微信主动发送能力。
3. 发送一条短文本。
4. 观察发送结果。
## 期望行为
主动发送应可靠送达。若 iLink 使用的上下文已过期或失效,Cindy 应自动刷新上下文并重试一次,或返回明确、可操作的错误原因。
## 实际行为
iLink 拒绝主动发送,Cindy 只返回通用的 `SEND_FAILED`,没有自动刷新上下文或重试。随后从微信端发送一条新消息后,Cindy 的正常回复可以送达,主动发送重试也能成功。
## 复现频率
偶发,已在多个日期观察到;目前看与较长时间没有新的微信入站消息有关,具体过期时长未知。
## 已尝试
- 确认个人微信连接仍处于活动状态,且可以继续接收微信消息。
- 确认微信入站消息及对应的 Cindy 正常回复均能完成投递。
- 从微信端发送新消息以刷新上下文,再次发送后成功。
- 未通过解绑或删除凭证的方式处理。
## 脱敏诊断摘要
本次失败发生在个人微信主动发送路径,日志明确记录为 “iLink rejected the message”。同一时间段的轮询、微信入站处理和正常回复投递没有显示连接中断;刷新上下文后重试成功。未包含凭据、令牌、邮箱、个人路径、会话 ID 或无关文件内容。
初步判断:主动发送可能复用了已过期或不匹配的 iLink `context_token`。请考虑在 iLink 业务拒绝时识别具体返回码,刷新上下文并自动重试,同时将具体原因传递给上层。
---
**版本区域**: CN
**OS**: win32 x64 (10.0.19045)
**界面语言**: zh-CN
Contributor guide
Research direction
No files or tests are named. Start at the personal WeChat proactive-send entry point and inspect the logs and iLink response handling for the rejected context_token; compare behavior before and after an inbound message. Done means an expired-context rejection is identified, refreshed and retried once when appropriate, or surfaced as a specific actionable error, with regression coverage if the relevant test location is found.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100