TEST-WXWORK-CHAT.md 6.6 KB

测试企业微信群聊 - wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A

🎯 使用你的企微群聊ID测试

方法1:直接访问URL(如果Parse中已有记录)

http://localhost:4200/wxwork/cDL6R1hgSi/chat-activation/wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A

方法2:在控制台创建/查询群聊记录

打开浏览器控制台(F12),运行以下脚本:

(async () => {
  try {
    const cid = 'cDL6R1hgSi';
    const wxworkChatId = 'wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A'; // 你的企微群聊ID
    const userid = 'woAs2qCQAAGQckyg7AQBxhMEoSwnlTvg';
    
    // 配置localStorage
    localStorage.setItem('company', cid);
    localStorage.setItem(`${cid}/USERINFO`, JSON.stringify({
      userid: userid,
      errcode: 0,
      errmsg: 'ok',
      cid: cid
    }));
    
    console.log('✅ localStorage配置成功');
    
    // 导入Parse
    const { FmodeParse } = await import('fmode-ng/parse');
    const Parse = FmodeParse.with('nova');
    
    console.log('🔍 查询群聊记录...');
    
    // 1. 先查询Parse数据库中是否已有记录
    const query = new Parse.Query('GroupChat');
    query.equalTo('chat_id', wxworkChatId);
    query.equalTo('company', { __type: 'Pointer', className: 'Company', objectId: cid });
    query.include('project');
    
    let groupChat = await query.first();
    
    if (groupChat) {
      console.log('✅ 找到现有群聊记录:', {
        objectId: groupChat.id,
        chat_id: groupChat.get('chat_id'),
        name: groupChat.get('name'),
        memberCount: (groupChat.get('member_list') || []).length
      });
      
      const url = `http://localhost:4200/wxwork/${cid}/chat-activation/${groupChat.id}`;
      
      await navigator.clipboard.writeText(url);
      alert(`✅ 找到群聊记录!地址已复制\n\n群聊名称: ${groupChat.get('name')}\n\n${url}\n\n点击确定后自动打开...`);
      
      setTimeout(() => window.open(url, '_blank'), 500);
      
    } else {
      console.log('⚠️ Parse数据库中未找到记录,正在创建...');
      
      // 2. 创建新的群聊记录
      const GroupChat = Parse.Object.extend('GroupChat');
      const newGroupChat = new GroupChat();
      
      newGroupChat.set('chat_id', wxworkChatId);
      newGroupChat.set('name', '企微群聊 - ' + new Date().toLocaleString('zh-CN'));
      newGroupChat.set('company', { __type: 'Pointer', className: 'Company', objectId: cid });
      newGroupChat.set('member_list', []); // 企微API会同步
      newGroupChat.set('data', {
        createdFrom: 'test-script',
        createdAt: new Date(),
        wxworkChatId: wxworkChatId
      });
      
      groupChat = await newGroupChat.save();
      
      console.log('✅ 群聊记录已创建:', {
        objectId: groupChat.id,
        chat_id: groupChat.get('chat_id')
      });
      
      const url = `http://localhost:4200/wxwork/${cid}/chat-activation/${groupChat.id}`;
      
      await navigator.clipboard.writeText(url);
      alert(`✅ 群聊记录已创建!地址已复制\n\n${url}\n\n页面会自动从企微API同步群聊信息\n\n点击确定后自动打开...`);
      
      setTimeout(() => window.open(url, '_blank'), 500);
    }
    
  } catch (e) {
    console.error('❌ 错误:', e);
    alert('❌ 发生错误: ' + e.message + '\n\n请确保:\n1. 项目已启动\n2. Parse Server已连接');
  }
})();

🔧 代码更新说明

我已经更新了 chat-activation.component.ts,现在支持:

1. 双重查询机制

// 方式1:通过Parse objectId查询
gcQuery.equalTo('objectId', this.chatId);

// 方式2:通过企微chat_id查询
gcQuery.equalTo('chat_id', this.chatId);
gcQuery.equalTo('company', { __type: 'Pointer', className: 'Company', objectId: this.cid });

2. 企微API同步

async syncFromWxwork() {
  // 调用企微API获取最新信息
  const chatInfo = await this.wecorp.externalContact.groupChat.get(chatIdValue);
  
  // 更新群聊名称、成员列表等
  this.groupChat.set('name', chatInfo.group_chat.name);
  this.groupChat.set('member_list', chatInfo.group_chat.member_list);
  
  // 保存到Parse数据库
  await this.groupChat.save();
}

3. 自动创建记录

async createFromWxwork() {
  // 如果Parse中没有记录,从企微API获取并创建
  const chatInfo = await this.wecorp.externalContact.groupChat.get(this.chatId);
  
  // 创建新的GroupChat记录
  const newGroupChat = new GroupChat();
  newGroupChat.set('chat_id', this.chatId);
  newGroupChat.set('name', chatInfo.group_chat.name);
  // ... 保存到Parse
}

📋 测试步骤

步骤1:启动项目

cd yss-project
npm start

步骤2:访问浏览器

http://localhost:4200

步骤3:打开控制台(F12)

步骤4:运行上面的脚本

脚本会:

  1. ✅ 配置localStorage(使用你的密钥)
  2. 🔍 查询Parse数据库中是否有该群聊记录
  3. 📝 如果没有,自动创建记录
  4. 📋 复制测试URL到剪贴板
  5. 🚀 自动打开测试页面

步骤5:页面会自动:

  1. 从Parse加载群聊基本信息
  2. 调用企微API同步最新数据(成员、名称等)
  3. 显示群聊信息和消息列表

⚠️ 关于企微API权限

企微API可能的限制:

  1. 需要配置应用权限

    • 客户联系 → 客户群管理权限
    • 需要在企微后台配置
  2. API调用限制

    • 每个应用有调用频率限制
    • 需要正确的access_token
  3. 数据访问范围

    • 只能访问应用可见范围内的群聊
    • 需要群主或管理员权限

如果企微API调用失败:

页面会:

  • ⚠️ 显示警告但不阻塞
  • 📦 使用Parse缓存的数据继续显示
  • 💾 可以手动添加测试数据到Parse

🔍 调试信息

打开控制台可以看到详细的日志:

📥 开始加载数据...
📋 参数: { cid: 'cDL6R1hgSi', chatId: 'wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A' }
🔍 查询群聊...
✅ 找到群聊: XXX群聊
📊 群聊信息: { objectId: 'xxx', chat_id: 'wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A', ... }
🔄 从企微API同步群聊信息, chat_id: wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A
✅ 企微API返回数据: { name: 'xxx', member_list: [...] }

🎯 直接测试URL

如果Parse中已有记录,可以直接访问:

http://localhost:4200/wxwork/cDL6R1hgSi/chat-activation/wrgKCxBwAALwOgUC9jMwdHiVTFmyXs_A

页面会:

  1. 先尝试通过 objectId 查询
  2. 如果失败,通过 chat_id 查询
  3. 如果还是失败,尝试从企微API创建记录

现在运行上面的脚本开始测试吧! 🚀