Skip to main content

企业微信(内部开发)

本文档介绍如何通过插件能力自定义企业微信登录流程。

插件类型​

企业微信(内部开发)插件类型:WeComLoginInternal

扩展点说明​

目前支持两个扩展点,可以通过插件脚本进行自定义处理:

1. BeforeCreateWeComUser(创建用户前)​

触发时机:在创建企业微信用户之前

用途:

  • 自定义企业微信用户所属部门
  • 自定义用户创建逻辑

可用参数:

参数名说明示例值
Action动作类型"BeforeCreateWeComUser"
UserId用户 ID"user-001"
Name用户姓名"张三"
Email用户邮箱"zhangsan@example.com"
Phone用户手机号"13800138000"
Number用户编号"B003"
Status用户状态"Normal"
Department用户部门"技术部"
IsDeveloper是否开发者"true"
WeComDepartment企业微信部门 ID"1"
ContactAccessToken通讯录访问令牌"token-string"

修改参数:

  • WeComDepartment:设置企业微信目标部门,多个部门用逗号分隔(如 "1,2,3")

2. AfterBindingWeComUser(绑定用户后)​

触发时机:在绑定企业微信用户成功之后

用途:

  • 自定义绑定后的跳转逻辑
  • 执行额外的业务逻辑

可用参数:

参数名说明示例值
Action动作类型"AfterBindingWeComUser"
UserId用户 ID"user-001"
Name用户姓名"张三"
Email用户邮箱"zhangsan@example.com"
Phone用户手机号"13800138000"
Number用户编号"B003"
Status用户状态"Normal"
Department用户部门"技术部"
IsDeveloper是否开发者"true"
ContactAccessToken通讯录访问令牌"token-string"

特殊操作:

  • 抛出 ChameleonException 异常可以控制跳转行为

插件脚本示例​

以下是一个完整的插件脚本示例:

using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Chameleon.Common;
using Chameleon.Common.Context;
using Chameleon.Common.Exceptions;
using Chameleon.Common.Models;
using Chameleon.Database;
using Chameleon.SDK;

public class ChameleonCSharpScript
{
public async Task<object> ExecuteAsync(ComponentContext context, ChameleonSDK sdk)
{
if (context.DicParam.TryGetValue("Action", out var action))
{
switch (action)
{
case "BeforeCreateWeComUser":
// 创建人员时,设置企业微信目标部门,多个逗号分隔
context.DicParam["WeComDepartment"] = "3";
break;
case "AfterBindingWeComUser":
// 绑定企业微信用户成功后,设置跳转到某个页面
throw new ChameleonException("redirect") {
Action = Chameleon.Common.Enums.ActionEnum.Redirect,
RedirectUrl = "/User/LayoutPage/MetaPage/9f1a2c44-0c30-4160-ba68-0fd518107744"
};
default:
break;
}
}

return null;
}
}

使用场景​

1. 自定义用户部门​

在创建企业微信用户时,根据业务需求设置不同的部门:

case "BeforeCreateWeComUser":
// 根据用户编号判断部门
var number = context.DicParam["Number"];
if (number.StartsWith("IT"))
{
context.DicParam["WeComDepartment"] = "1,2"; // IT 部门
}
else if (number.StartsWith("HR"))
{
context.DicParam["WeComDepartment"] = "3"; // HR 部门
}
else
{
context.DicParam["WeComDepartment"] = "4"; // 默认部门
}
break;

2. 绑定后跳转​

在绑定企业微信用户成功后,跳转到指定页面:

case "AfterBindingWeComUser":
throw new ChameleonException("redirect") {
Action = Chameleon.Common.Enums.ActionEnum.Redirect,
RedirectUrl = "/User/LayoutPage/MetaPage/9f1a2c44-0c30-4160-ba68-0fd518107744"
};

3. 发送通知​

在绑定成功后,发送欢迎消息或通知:

case "AfterBindingWeComUser":
var userId = context.DicParam["UserId"];
var name = context.DicParam["Name"];

// 发送欢迎消息
await sdk.NotificationHelper.SendSystemMessageAsync(
userId,
"欢迎加入",
$"欢迎 {name} 加入系统!"
);
break;

配置步骤​

1. 创建插件​

在系统中创建企业微信(内部开发)插件:

  1. 进入开发工具 > 插件管理
  2. 点击创建插件
  3. 选择插件类型:WeComLoginInternal
  4. 填写插件名称和描述
  5. 编写插件脚本
  6. 启用插件

2. 测试插件​

插件创建完成后,测试插件功能:

  1. 访问企业微信登录页面
  2. 完成登录或绑定流程
  3. 检查插件是否按预期执行

注意事项​

  1. 插件执行顺序

    • 如果启用了多个同类型插件,只有第一个插件会生效
    • 建议只启用一个企业微信(内部开发)插件
  2. 错误处理

    • 插件脚本中的错误不会影响正常流程
    • 建议在脚本中添加错误处理逻辑
  3. 性能影响

    • 插件执行会增加登录流程的时间
    • 建议优化脚本逻辑,减少不必要的操作
  4. 安全性

    • 插件脚本可以访问用户敏感信息
    • 请确保脚本的安全性

相关链接​