现象:
🔍 [registerCorpWithSuite] 调用ww.register...
(之后没有任何回调日志)
原因:
onAgentConfigSuccess和onAgentConfigFail回调都未执行现象:用户实际是"脑控徐福静",但系统显示"未知"
原因:
currentUser未正确加载现象:控制台显示准备发送,但群聊中没有消息
原因:JSSDK注册失败导致sendChatMessage无法执行
文件:wxwork-sdk.service.ts
问题:如果回调永不触发,会一直等待
修复:
return new Promise((resolve) => {
// 🔥 添加15秒超时机制
const timeout = setTimeout(() => {
console.warn('⚠️ [registerCorpWithSuite] 注册超时(15秒),可能原因:');
console.warn(' 1. 回调函数未被触发');
console.warn(' 2. 企业微信JSSDK加载失败');
console.warn(' 3. 不在正确的群聊会话中');
console.warn(' 4. 应用权限配置错误');
resolve(false);
}, 15000);
ww.register({
// ...
onAgentConfigSuccess: () => {
clearTimeout(timeout); // ✅ 清除超时
resolve(true);
},
onAgentConfigFail: (err: any) => {
clearTimeout(timeout); // ✅ 清除超时
resolve(false);
}
});
});
文件:delivery-message.service.ts
问题:stage-delivery和DeliveryMessageService都会初始化SDK
修复:
// 🔥 检查SDK是否已初始化(避免重复初始化)
console.log('🔍 [sendToWxwork] 检查SDK初始化状态...');
console.log(' 当前SDK.cid:', this.wxworkService.cid);
console.log(' 当前SDK.appId:', this.wxworkService.appId);
if (!this.wxworkService.cid || this.wxworkService.cid !== cid) {
console.log('🔍 [sendToWxwork] SDK未初始化或CID不匹配,开始初始化...');
await this.wxworkService.initialize(cid, appId);
console.log('✅ [sendToWxwork] SDK初始化完成');
} else {
console.log('✅ [sendToWxwork] SDK已初始化,跳过重复初始化');
}
文件:wxwork-sdk.service.ts
添加的日志:
console.log('🔍 [registerCorpWithSuite] corpId:', corpConfig.corpId);
console.log('🔍 [registerCorpWithSuite] agentId:', corpConfig.agentId);
console.log('🔍 [registerCorpWithSuite] suiteId:', suiteId);
console.log('🔍 [registerCorpWithSuite] url:', location.href);
console.log('🔍 [registerCorpWithSuite] 签名生成完成:', {
nonceStr: '666',
timestamp: (now.getTime() / 1000).toFixed(0),
url: location.href
});
必须从企业微信群聊侧边栏打开应用
✅ 正确入口:群聊 → 右上角"..." → 应用 → 你的应用
❌ 错误入口:企业微信首页 → 工作台 → 应用
❌ 错误入口:浏览器直接打开
原因:
sendChatMessage只能在群聊会话上下文中使用正确格式:
https://app.fmode.cn/dev/yss/#/wxwork/cDL6R1hgSi/project/project-detail/xxx
↑ ↑ ↑
固定 CID 应用ID
检查日志:
console.log('🔍 [sendToWxwork] 当前URL:', window.location.href);
// 应该包含 /wxwork/cDL6R1hgSi/project/
如果看到超时日志:
⚠️ [registerCorpWithSuite] 注册超时(15秒),可能原因:
1. 回调函数未被触发
2. 企业微信JSSDK加载失败
3. 不在正确的群聊会话中
4. 应用权限配置错误
解决方法:
企业微信管理后台检查清单:
1. 登录企业微信管理后台
2. 应用管理 → 你的应用
3. 接口权限:
✅ "发送消息到聊天中" (sendChatMessage)
4. 可信域名:
✅ app.fmode.cn
5. 应用状态:
✅ 已启用
添加调试日志:
console.log('👤 当前用户:', this.currentUser);
console.log('👤 用户ID:', this.currentUser?.id);
console.log('👤 用户姓名:', this.currentUser?.get('name'));
如果显示"未知":
ngOnInit中是否正确加载了currentUser预期日志顺序:
🔐 初始化企业微信SDK...
🔍 [registerCorpWithSuite] 开始注册JSSDK...
🔍 [registerCorpWithSuite] 平台检测: wxwork
🔍 [registerCorpWithSuite] API列表: [...]
🔍 [registerCorpWithSuite] 获取企业配置,CID: cDL6R1hgSi
🔍 [registerCorpWithSuite] 企业配置: {...}
🔍 [registerCorpWithSuite] 套件ID: dk2559ba758f33d8f5
🔍 [registerCorpWithSuite] 调用ww.register...
🔍 [registerCorpWithSuite] corpId: wpAs2qCQAAYofoUhMXBDS8L7z1YCXHYw
🔍 [registerCorpWithSuite] agentId: 1000017
🔍 [registerCorpWithSuite] suiteId: dk2559ba758f33d8f5
🔍 [registerCorpWithSuite] url: https://app.fmode.cn/...
🔍 [registerCorpWithSuite] 获取签名...
🔍 [registerCorpWithSuite] Ticket: ...
🔍 [registerCorpWithSuite] 签名生成完成: {...}
✅ [registerCorpWithSuite] AgentConfig注册成功! ← 关键!
✅ 企业微信SDK初始化成功
如果15秒后看到超时警告:
⚠️ [registerCorpWithSuite] 注册超时(15秒)
说明:回调未触发,需要检查入口和权限
点击"发送消息"后的预期日志:
📤 [发送消息] 开始发送...
🔍 [sendToWxwork] ========== 开始发送流程 ==========
🔍 [sendToWxwork] 当前URL: https://...
🔍 [sendToWxwork] 企业微信环境检测: true
🔍 [sendToWxwork] 检查SDK初始化状态...
✅ [sendToWxwork] SDK已初始化,跳过重复初始化
📧 准备发送消息到企业微信...
🔍 [sendChatMessage] ========== 开始发送消息 ==========
🔍 [sendChatMessage] 消息类型: text
🔍 [sendChatMessage] 开始注册JSSDK...
✅ [sendChatMessage] URL未变化,使用缓存的注册状态
🔍 [sendChatMessage] JSSDK注册结果: true
🔍 [sendChatMessage] 调用ww.sendChatMessage...
✅ [sendChatMessage] 消息发送成功!
✅ 文本消息已发送
✅ 所有消息已发送到企业微信
// 在stage-delivery.component.ts中
await this.deliveryMessageService.createTextMessage(
this.project.id!,
'white_model',
'老师,白模阶段完成,请查看确认',
this.currentUser
);
效果:群聊中显示文本消息
await this.deliveryMessageService.createImageMessage(
this.project.id!,
'rendering',
['https://example.com/image1.jpg', 'https://example.com/image2.jpg'],
'老师,渲染图已完成,请查看效果',
this.currentUser
);
效果:
// 直接调用WxworkSDKService(用于测试)
await this.wxworkSDKService.sendChatMessage({
msgtype: 'text',
text: {
content: '测试消息'
}
});
await this.wxworkSDKService.sendChatMessage({
msgtype: 'news',
news: {
link: 'https://app.fmode.cn/survey/xxx',
title: '项目需求调查问卷',
desc: '请填写项目需求,我们会尽快为您设计',
imgUrl: 'https://example.com/survey-cover.jpg'
}
});
效果:群聊中显示卡片式图文消息,点击跳转到问卷链接
错误信息:
⚠️ [registerCorpWithSuite] 注册超时(15秒)
解决方案:
错误信息:
❌ [sendChatMessage] 消息发送失败!
errMsg: "sendChatMessage:fail no permission"
解决方案:
错误信息:
errMsg: "sendChatMessage:fail not in session"
解决方案:
现象:显示"未知"而不是"脑控徐福静"
解决方案:
// 在ngOnInit中确保正确加载用户
if (!this.currentUser && this.cid) {
console.log('👤 获取当前用户...');
const wxwork = new WxworkAuth({ cid: this.cid, appId: 'project' });
this.currentUser = await wxwork.currentProfile();
console.log('👤 当前用户:', this.currentUser);
console.log('👤 用户姓名:', this.currentUser?.get('name'));
}
✅ 群聊侧边栏 → 应用
❌ 企微首页工作台
❌ 浏览器直接打开
https://app.fmode.cn/dev/yss/#/wxwork/cDL6R1hgSi/project/...
↑必须包含这部分
1. 组件ngOnInit → wxworkSDKService.initialize()
2. 用户点击发送 → DeliveryMessageService.sendToWxwork()
3. 检查已初始化 → 跳过重复初始化
4. 调用sendChatMessage → 发送消息
修改内容:
修改内容:
内容:
ng build yss-project --base-href=/dev/yss/
.\deploy.ps1
✅ 应该看到:AgentConfig注册成功!
❌ 如果看到:注册超时
✅ 应该显示:脑控徐福静
❌ 如果显示:未知
修复完成时间:2025-11-30 13:45
修复类型:超时机制 + 重复初始化避免 + 调试增强
优先级:🔥 高
测试状态:待部署验证