wxwork-sendmessage-final-deploy-guide.md 11 KB

企业微信发送消息功能 - 最终部署测试指南

🚨 当前问题现状

问题1:消息显示"发送中..."但没有发送到群聊

现象

  • 点击"发送消息"按钮
  • 弹窗显示"发送中..."
  • 群聊中没有消息出现
  • 控制台日志显示开始注册JSSDK,但回调未触发

问题2:用户身份显示"未知"

现象

  • 实际用户:脑控徐福静
  • 系统显示:未知
  • 可能导致消息发送失败

✅ 已完成的代码修复

1. wxwork-sdk.service.ts ✅

  • ✅ 添加15秒超时机制
  • ✅ 增强调试日志(corpId、agentId、suiteId、url)
  • ✅ 添加project应用配置到suiteMap

2. stage-delivery.component.ts ✅

  • ✅ 导入WxworkSDKService
  • ✅ 注入wxworkSDKService到constructor
  • ✅ 在ngOnInit中初始化SDK

3. delivery-message.service.ts ✅

  • ✅ 避免重复初始化SDK
  • ✅ 添加SDK状态检查

🚀 立即部署步骤

步骤1:构建项目

cd e:\yinsanse\yss-project
ng build yss-project --base-href=/dev/yss/

等待输出

✔ Browser application bundle generation complete.
✔ Copying assets complete.
✔ Index html generation complete.

Build at: 2025-11-30T05:43:00.000Z

步骤2:部署到OBS

.\deploy.ps1

等待输出

Succeed count: 4042
Task id: xxx

步骤3:清除CDN缓存

deploy.ps1会自动执行,等待输出:

{
  "refresh_task": "xxxxxx"
}

步骤4:等待5分钟

重要:CDN缓存刷新需要3-5分钟生效


🧪 测试步骤(必须按顺序)

测试1:从群聊侧边栏打开应用

❌ 错误入口

  • 企微首页 → 工作台 → 应用
  • 浏览器直接打开

✅ 正确入口

  1. 打开企业微信
  2. 进入任意群聊(例如:测试: 十二月组-家装-客厅+厨房)
  3. 点击右上角"..."
  4. 选择你的应用

验证:URL应该包含/wxwork/cDL6R1hgSi/project/

测试2:检查SDK初始化日志

打开浏览器控制台(F12),应该看到:

🚀 StageDeliveryComponent 初始化...
📋 初始化参数: {cid: "cDL6R1hgSi", projectId: "xxx"}
🔐 初始化企业微信SDK...
🔍 [registerCorpWithSuite] 开始注册JSSDK...
🔍 [registerCorpWithSuite] 平台检测: wxwork
🔍 [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秒)

说明

  1. ❌ 不是从群聊侧边栏打开的
  2. ❌ 应用权限配置错误
  3. ❌ 企微JSSDK环境问题

解决:关闭应用,重新从群聊侧边栏打开!

测试3:检查用户身份

控制台应该显示

👤 当前用户: Profile对象
👤 用户ID: xxx
👤 用户姓名: 脑控徐福静  ← 应该显示真实姓名

如果显示"未知"

// 检查stage-delivery.component.ts的ngOnInit中
if (!this.currentUser && this.cid) {
  const wxwork = new WxworkAuth({ cid: this.cid, appId: 'project' });
  this.currentUser = await wxwork.currentProfile();
  console.log('👤 当前用户:', this.currentUser);
  console.log('👤 用户姓名:', this.currentUser?.get('name'));
}

测试4:发送消息

  1. 进入"交付执行"阶段
  2. 选择一个空间和阶段(如:办公区 - 白模)
  3. 点击"发送消息"按钮
  4. 选择话术或输入自定义消息
  5. 点击"发送中..."按钮

预期控制台日志

📤 [发送消息] 开始发送...
🔍 [sendToWxwork] ========== 开始发送流程 ==========
🔍 [sendToWxwork] 企业微信环境检测: true
🔍 [sendToWxwork] 检查SDK初始化状态...
✅ [sendToWxwork] SDK已初始化,跳过重复初始化
📧 准备发送消息到企业微信...
🔍 [sendChatMessage] ========== 开始发送消息 ==========
🔍 [sendChatMessage] 消息类型: text
🔍 [sendChatMessage] 开始注册JSSDK...
✅ [sendChatMessage] URL未变化,使用缓存的注册状态
🔍 [sendChatMessage] JSSDK注册结果: true
🔍 [sendChatMessage] 调用ww.sendChatMessage...
✅ [sendChatMessage] 消息发送成功!  ← 必须看到这个!
✅ 文本消息已发送
✅ 消息发送成功!

测试5:验证群聊中显示消息

群聊中应该看到

老师我这里硬装模型做好了,看下是否有问题,如果没有,我去做渲染

成功标志:群聊中显示消息


🔧 问题排查指南

场景1:仍然显示"发送中..."但没有消息

排查步骤

1.1 确认是否从群聊侧边栏打开

检查URL:应该包含 /wxwork/cDL6R1hgSi/project/
✅ 正确:https://app.fmode.cn/dev/yss/#/wxwork/cDL6R1hgSi/project/project-detail/xxx
❌ 错误:https://app.fmode.cn/dev/yss/#/admin/project-detail/xxx

1.2 检查是否看到注册成功

控制台搜索:"AgentConfig注册成功"
✅ 看到 → 继续下一步
❌ 没看到 → 重新从群聊侧边栏打开

1.3 检查是否看到超时警告

控制台搜索:"注册超时"
✅ 看到 → 说明回调未触发,检查入口和权限
❌ 没看到 → 继续下一步

1.4 检查sendChatMessage调用

控制台搜索:"调用ww.sendChatMessage"
✅ 看到 → 继续下一步
❌ 没看到 → 说明注册失败,检查上面步骤

1.5 检查消息发送结果

控制台搜索:"消息发送成功" 或 "消息发送失败"
✅ 成功 → 检查群聊中是否显示
❌ 失败 → 查看错误详情

场景2:权限错误

错误信息

❌ [sendChatMessage] 消息发送失败!
errMsg: "sendChatMessage:fail no permission"

解决方案

  1. 登录企业微信管理后台
  2. 应用管理 → 你的应用(项目管理)
  3. 接口权限 → 开启"发送消息到聊天中"
  4. 保存并等待5分钟生效

场景3:Not in Session错误

错误信息

errMsg: "sendChatMessage:fail not in session"

解决方案

  1. ❌ 关闭当前应用
  2. ✅ 重新从群聊侧边栏打开
  3. ✅ 确保URL包含/wxwork/路径

场景4:用户身份显示"未知"

检查

// 在stage-delivery.component.ts的ngOnInit中添加
console.log('👤 检查当前用户...');
console.log('  currentUser:', this.currentUser);
console.log('  cid:', this.cid);

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'));
}

如果仍然为"未知"

  • 检查企业微信用户信息是否同步
  • 检查Profile表中是否有该用户记录
  • 检查用户的name字段是否有值

💡 完整代码检查清单

1. wxwork-sdk.service.ts

必须包含

  • suiteMap中有project配置
  • registerCorpWithSuite有15秒超时
  • ✅ 调试日志输出corpId、agentId、suiteId
  • getDefaultApiList包含sendChatMessage

2. stage-delivery.component.ts

必须包含

import { WxworkSDKService } from '../../../services/wxwork-sdk.service'; // Line 15

constructor(
  // ...
  private wxworkSDKService: WxworkSDKService // Line 289
) {}

async ngOnInit() {
  this.cid = this.route.parent?.snapshot.paramMap.get('cid') || '';
  
  // 🔥 必须有这段
  if (this.cid) {
    console.log('🔐 初始化企业微信SDK...');
    try {
      await this.wxworkSDKService.initialize(this.cid, 'project');
      console.log('✅ 企业微信SDK初始化成功');
    } catch (error) {
      console.error('❌ 企业微信SDK初始化失败:', error);
    }
  }
  
  // ... 其他初始化
}

3. delivery-message.service.ts

必须包含

// 🔥 检查SDK是否已初始化(避免重复初始化)
if (!this.wxworkService.cid || this.wxworkService.cid !== cid) {
  await this.wxworkService.initialize(cid, appId);
} else {
  console.log('✅ SDK已初始化,跳过重复初始化');
}

📝 最终验证清单

部署前检查

  • 已修改wxwork-sdk.service.ts(添加超时和日志)
  • 已修改stage-delivery.component.ts(注入SDK并初始化)
  • 已修改delivery-message.service.ts(避免重复初始化)
  • 本地代码已保存

部署检查

  • ng build成功完成
  • .\deploy.ps1成功完成
  • CDN刷新任务已创建
  • 等待5分钟让CDN生效

测试检查

  • 从群聊侧边栏打开应用(不是工作台)
  • URL包含/wxwork/cDL6R1hgSi/project/
  • 控制台显示"AgentConfig注册成功"
  • 控制台显示用户姓名"脑控徐福静"
  • 点击发送消息
  • 控制台显示"消息发送成功"
  • 群聊中显示消息 ✅

🎯 核心要点总结

1. 必须从群聊侧边栏打开

为什么sendChatMessage只在群聊会话上下文中工作

路径

群聊 → 右上角"..." → 应用

2. 必须看到"AgentConfig注册成功"

为什么:只有注册成功才能调用sendChatMessage

检查

控制台搜索:"AgentConfig注册成功"

3. 必须等待CDN刷新

为什么:新代码需要CDN刷新才能生效

时间:3-5分钟

4. 必须在15秒内完成注册

为什么:超时机制会在15秒后返回false

检查

从"开始注册JSSDK"到"AgentConfig注册成功"应该<15秒

🚀 快速部署命令

# 1. 切换到项目目录
cd e:\yinsanse\yss-project

# 2. 构建并部署(deploy.ps1会执行所有步骤)
.\deploy.ps1

# 3. 等待5分钟

# 4. 从群聊侧边栏重新打开应用测试

📞 如果还是不工作

检查清单

  1. ✅ 代码已部署(检查OBS文件时间戳)
  2. ✅ CDN已刷新(等待5分钟)
  3. ✅ 从群聊侧边栏打开(URL包含/wxwork/)
  4. ✅ 看到"AgentConfig注册成功"
  5. ✅ 用户姓名显示正确
  6. ✅ 企微后台权限已开启

如果全部✅但仍失败

提供以下信息

  1. 完整的控制台日志截图
  2. URL地址
  3. 错误信息(如果有)
  4. 是否从群聊侧边栏打开

文档创建时间:2025-11-30 13:50
部署类型:完整部署
预计生效时间:5分钟后
关键检查点:AgentConfig注册成功 + 群聊中显示消息