企业微信会话存档功能开发

企业微信会话存档功能开发

概述

为保障客户服务质量、提高内部协作效率和监管合规等原因,企业微信提供会话内容存档功能。企业可以统一设置存档的员工范围,并通过API获取开启存档员工的工作沟通内容,满足企业的外部监管合规和内部管理需求。

使用前帮助

企业维信官方文档
在这里插入图片描述

在这里插入图片描述

## 环境

开发:win10
部署: linux

sdk下载

把动态库拷贝到lib目录下面,Financ类放在com.tencent.wework包下面(必须的)
在这里插入图片描述

动态库加载

/**
	 * 加载动态库
	 * /lib 或者usr/lib 或者{JAVA_HOME}/jre/bin 等
	 */
	static {
		List<String> libs = new ArrayList<>();
		String property = System.getProperty("os.name","linux");
		if(property.toLowerCase().startsWith("win")){
			libs.add("libssl-1_1-x64.dll");
			libs.add("libcurl-x64.dll");
			libs.add("libcrypto-1_1-x64.dll");
			libs.add("WeWorkFinanceSdk.dll");
		}else{
			libs.add("libWeWorkFinanceSdk_Java.so");
		}
		libs.forEach(Finance::loadDynamicLibrary);
	}

	//对junit测试环境单独处理
	private static void loadDynamicLibrary(String s) {
		String resourcePath = ResourceUtils.CLASSPATH_URL_PREFIX + "lib/"+ s;
		if(isUnitTest()){
			loadDevJarDynamicLibrary(resourcePath);
		}else{
			loadJarDynamicLibrary(resourcePath,s);
		}

	}

	/**
	 * junit测试环境
	 * @param classpath
	 */
	private static void loadDevJarDynamicLibrary(String classpath) {
		URL url = null;
		try {
			url = ResourceUtils.getURL(classpath);
		} catch (FileNotFoundException e) {
			log.error("loadDynamicLibraryInSpring error,classpath={}",classpath,e);
			return;
		}
		String path = url.getPath();
		log.info("开始加载动态库classpath={},path={}",classpath,path);
		System.load(path);
	}

	/**
	 * 加载jar包里面的lib
	 * @param classpath classpath:lib/aaa.so
	 * @param filename aaa.so
	 */
	private static void loadJarDynamicLibrary(String classpath, String filename) {
		ApplicationHome applicationHome = new ApplicationHome(Finance.class);
		String rootPath = applicationHome.getSource().getParentFile().toString();
		String path = rootPath+ File.separator+filename;
		File file = new File(path);
		if(file.exists()){
			log.info("已经存在动态库file={}",file.getAbsolutePath());
		}
		try {
			URL url = ResourceUtils.getURL(classpath);
			InputStream inputStream = url.openConnection().getInputStream();
			FileUtils.copyInputStreamToFile(inputStream,file);
			String absolutePath = file.getAbsolutePath();
			log.info("开始加载动态库path={}",absolutePath);
			System.load(absolutePath);
		} catch (Exception e) {
			log.error("动态库拷贝error,classpath={},filename={}",classpath,filename);
		}
	}

	/**
	 * 是否是junit测试
	 * @return
	 */
	private static boolean isUnitTest() {
		try {
			StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
			for (int i = stackTrace.length - 1; i >= 0; i--) {
				if (stackTrace[i].getClassName().startsWith("org.junit.")) {
					return true;
				}
			}
		}
		catch (Exception ex) {
			log.error("isUnitTest error",ex);
		}
		return false;
	}
	

问题:
1.动态库加载的区别
System.load(absolutePath);//加载全路径文件,后面带dll或者so
System.loadLibrary(libName);//加载动态库,只用名字,不带路径和dll或者so
2.为什么要把文件考出来

  • 不考出来其实也是能得到文件路径的,得到的的是 /app/jar/app.jar/…/xxx.so,是不能直接加载jar包里面的动态库的
  • 考出来可以兼容windows和linux环境

demo

输入参数直接运行

返回结果解密(未完成)

未完待续

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Spring Boot是一种用于开发Java应用程序的开源框架,它简化了基于Spring框架的应用程序的配置和部署。企业微信是一款为企业提供即时通讯和协同办公的应用,它能轻松满足企业的沟通和协作需求。 为了在Spring Boot应用程序中引入企业微信会话存档SDK,需要执行以下步骤: 1. 下载企业微信会话存档SDK:你可以从企业微信官方网站或其他可信来源下载适用于Java的企业微信会话存档SDK。 2. 引入SDK依赖:将下载的SDK文件导入Spring Boot应用程序的依赖管理系统中。可以使用Maven或Gradle等构建工具来管理依赖,并在配置文件中指定SDK的版本号。 3. 创建企业微信会话存档SDK的配置文件:在Spring Boot的配置文件中,添加企业微信会话存档SDK所需的配置参数,如企业微信的Corpid、Secret和Agentid等。 4. 创建企业微信会话存档SDK的服务类:在Spring Boot应用程序中创建一个服务类,用于调用企业微信会话存档SDK的接口。根据业务需求,可以根据文档提供的接口进行数据的存储、获取等操作。 5. 在应用程序中调用企业微信会话存档服务:在需要使用企业微信会话存档功能的地方,通过注入企业微信会话存档服务的实例,调用相应的方法来实现会话存档功能。 需要注意的是,引入企业微信会话存档SDK前,要确保企业微信账号已通过认证并开通了相应的权限。 以上是使用Spring Boot引入企业微信会话存档SDK的基本步骤,根据具体的需求,可能还需要对业务逻辑进行进一步的处理和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值