症状:点击"发送消息"后,消息没有出现在企业微信群聊中
日志表现:
✅ [sendToWxwork] SDK初始化完成
📧 准备发送消息到企业微信...
CID: cDL6R1hgSi
AppID: project ← 🔥 关键:这里是project而不是crm
文本内容: 老师我这里硬装模型做好了...
🔍 [sendChatMessage] ========== 开始发送消息 ==========
🔍 [sendChatMessage] 消息类型: text
(之后没有成功或失败的日志)
当前URL:
https://app.fmode.cn/wxwork/cDL6R1hgSi/project/project-detail/iKvYck89zE
↑ ↑ ↑
CID AppID 路由路径
代码解析逻辑 (delivery-message.service.ts line 206-207):
const cid = urlParts[wxworkIndex + 1]; // cDL6R1hgSi
const appId = urlParts[wxworkIndex + 2]; // project ← 🔥 问题在这
原始配置 (wxwork-sdk.service.ts line 32-36):
private suiteMap: any = {
'crm': {
suiteId: 'dk2559ba758f33d8f5'
}
// ❌ 缺少'project'的配置
};
注册流程 (wxwork-sdk.service.ts line 83):
const suiteId = this.suiteMap[this.appId]?.suiteId;
// 当appId='project'时,suiteId = undefined
结果:
ww.register() 被调用时 suiteId: undefinedsendChatMessage 调用被忽略或失败,没有回调文件:src/modules/project/services/wxwork-sdk.service.ts
修改内容:添加"project"的suiteId配置
// 应用套件映射
private suiteMap: any = {
'crm': {
suiteId: 'dk2559ba758f33d8f5'
},
'project': { // 🔥 添加project应用的配置(使用相同的suiteId)
suiteId: 'dk2559ba758f33d8f5'
}
};
原因:
project和crm都是映三色公司的应用,共享同一个套件配置✅ [sendToWxwork] SDK初始化完成
📧 准备发送消息到企业微信...
CID: cDL6R1hgSi
AppID: project
文本内容: 老师我这里硬装模型做好了...
🔍 [sendChatMessage] ========== 开始发送消息 ==========
🔍 [sendChatMessage] 消息类型: text
🔍 [sendChatMessage] 开始注册JSSDK...
🔍 [registerCorpWithSuite] 套件ID: dk2559ba758f33d8f5 ← ✅ 有值了
🔍 [registerCorpWithSuite] 调用ww.register...
✅ [registerCorpWithSuite] AgentConfig注册成功!
🔍 [sendChatMessage] JSSDK注册结果: true
🔍 [sendChatMessage] 调用ww.sendChatMessage...
✅ [sendChatMessage] 消息发送成功! ← ✅ 成功!
✅ 文本消息已发送
✅ 所有消息已发送到企业微信
# 构建项目
ng build yss-project --base-href=/dev/yss/
# 部署
.\deploy.ps1
打开浏览器控制台(F12),查看:
套件ID: dk2559ba758f33d8f5AgentConfig注册成功消息发送成功在企业微信群聊中应该看到:
URL路径不同:
/wxwork/cDL6R1hgSi/crm/... 访问/wxwork/cDL6R1hgSi/project/... 访问使用不同的SDK方法:
WxworkSDKService文件:wxwork-sdk.service.ts
async initialize(cid: string, appId: string): Promise<void> {
this.cid = cid;
this.appId = appId;
// 🔥 验证appId是否在suiteMap中
if (!this.suiteMap[appId]) {
console.error(`❌ 未知的AppID: ${appId}`);
console.error(`❌ 可用的AppID:`, Object.keys(this.suiteMap));
throw new Error(`未配置的AppID: ${appId}`);
}
this.wecorp = new WxworkCorp(cid);
await this.registerCorpWithSuite();
}
文件:delivery-message.service.ts
// 从URL获取cid和appId
const cid = urlParts[wxworkIndex + 1];
let appId = urlParts[wxworkIndex + 2] || 'crm';
// 🔥 如果appId不在suiteMap中,fallback到'crm'
const validAppIds = ['crm', 'project'];
if (!validAppIds.includes(appId)) {
console.warn(`⚠️ 未知AppID: ${appId}, 使用默认值: crm`);
appId = 'crm';
}
| 文件 | 作用 | 修改内容 |
|---|---|---|
wxwork-sdk.service.ts |
企业微信SDK封装 | 添加"project"的suiteId配置 |
delivery-message.service.ts |
交付消息服务 | 从URL解析appId(未修改) |
stage-delivery.component.ts |
交付执行组件 | 调用消息发送服务(未修改) |
问题:URL中的AppID是"project",但suiteMap只配置了"crm"
修复:在suiteMap中添加"project"配置,使用相同的suiteId
结果:消息可以正常发送到企业微信群聊
修复时间:2025-11-29
修复人员:开发团队
文档版本:v1.0