164 lines
7.7 KiB
Java
164 lines
7.7 KiB
Java
package com.tencent.wework;
|
||
|
||
/**
|
||
* @warning: 1. 不要修改成员变量名,native方法内有反射调用
|
||
* 2. 调用本地方法需保持包结构,本工具需放在包com.tencent.wework内
|
||
* 3. 不允许继承,类名和函数名均不可修改,会影响本地方法的引用,详见:javah生成本地方法头文件
|
||
*/
|
||
public final class SpecSDK {
|
||
|
||
/**
|
||
* @description 调用本地方法后实例化的对象指针
|
||
*/
|
||
private long specSDKptr = 0;
|
||
|
||
/**
|
||
* @usage invoke的请求
|
||
* @example "{\"limit\":1}
|
||
*/
|
||
private String request;
|
||
|
||
public void SetRequest(String request) {
|
||
this.request = request;
|
||
}
|
||
|
||
/**
|
||
* @usage 访问上一次invoke的结果
|
||
*/
|
||
private String response;
|
||
|
||
public String GetResponse() {
|
||
return response;
|
||
}
|
||
|
||
/**
|
||
* @param corpid: 企业corpid,必选参数
|
||
* @param agentid: 应用id,必选参数
|
||
* @param ability_id: 能力ID,可选参数
|
||
* @param job_info: job_info,可选参数
|
||
* */
|
||
public SpecSDK(String corpId, long agentId) {
|
||
specSDKptr = NewSDK1(corpId, agentId);
|
||
}
|
||
|
||
private native long NewSDK1(String corpId, long agentId);
|
||
|
||
public SpecSDK(String corpId, long agentId, String abilityId) {
|
||
specSDKptr = NewSDK2(corpId, agentId, abilityId);
|
||
}
|
||
|
||
private native long NewSDK2(String corpId, long agentId, String abilityId);
|
||
|
||
public SpecSDK(String corpId, long agentId, String abilityId, String jobInfo) {
|
||
specSDKptr = NewSDK3(corpId, agentId, abilityId, jobInfo);
|
||
}
|
||
|
||
private native long NewSDK3(String corpId, long agentId, String abilityId, String jobInfo);
|
||
|
||
/**
|
||
* @description 使用callback的请求来初始化
|
||
* @param callback_sdk: 要求IsOk()==true
|
||
* @return C++内部指针,创建失败时指针仍为0,并输出错误日志
|
||
* */
|
||
public SpecSDK(SpecCallbackSDK callbackSDK) {
|
||
specSDKptr = NewSDK4(callbackSDK.GetPtr());
|
||
}
|
||
|
||
private native long NewSDK4(long callbackSDK);
|
||
|
||
/**
|
||
* @usage 在Java对象的内存回收前析构C++对象
|
||
*/
|
||
@Override
|
||
protected void finalize() throws Throwable {
|
||
DeleteCPPInstance(specSDKptr);
|
||
super.finalize();
|
||
}
|
||
|
||
private native void DeleteCPPInstance(long specSDKptr);
|
||
|
||
/**
|
||
* @description 用于在专区内调用企业微信接口
|
||
* @param api_name 接口名
|
||
* @param request json格式的请求数据
|
||
* @param response json格式的返回数据
|
||
* @return errorcode 参考如下:
|
||
* 0: 成功
|
||
* -910001: SDK没有初始化
|
||
* -910002: 没有设置请求体
|
||
* -910003: 没有设置请求的API
|
||
* -910004: 在SDK成员内找不到成员"response",注意lib内有反射机制,不要修改成员变量名
|
||
* -910005: 使用未初始化的callback初始化SDK
|
||
* -910006: invoke调用失败,应检查日志查看具体原因
|
||
* -910007: 响应体为空
|
||
* @note 当返回0时,表示没有网络或请求协议层面或调用方法的失败,
|
||
* 调用方需继续检查response中的errcode字段确保业务层面的成功
|
||
*
|
||
* @usage 当前版本sdk支持的接口列表,每个接口的具体协议请查看企业微信文档:
|
||
* https://developer.work.weixin.qq.com/document/path/91201
|
||
*
|
||
* +--------------------------------+--------------------------------+
|
||
* |接口名 |描述 |
|
||
* |--------------------------------|--------------------------------|
|
||
* |program_async_job_call_back |上报异步任务结果 |
|
||
* |sync_msg |获取会话记录 |
|
||
* |get_group_chat |获取内部群信息 |
|
||
* |get_agree_status_single |获取单聊会话同意情况 |
|
||
* |get_agree_status_room |获取群聊会话同意情况 |
|
||
* |set_hide_sensitiveinfo_config |设置成员会话组件敏感信息隐藏配置|
|
||
* |get_hide_sensitiveinfo_config |获取成员会话组件敏感信息隐藏配置|
|
||
* |search_chat |会话名称搜索 |
|
||
* |search_msg |会话消息搜索 |
|
||
* |create_rule |新增关键词规则 |
|
||
* |get_rule_list |获取关键词列表 |
|
||
* |get_rule_detail |获取关键词规则详情 |
|
||
* |update_rule |修改关键词规则 |
|
||
* |delete_rule |删除关键词规则 |
|
||
* |get_hit_msg_list |获取命中关键词规则的会话记录 |
|
||
* |create_sentiment_task |创建情感分析任务 |
|
||
* |get_sentiment_result |获取情感分析结果 |
|
||
* |create_summary_task |创建摘要提取任务 |
|
||
* |get_summary_result |获取摘要提取结果 |
|
||
* |create_customer_tag_task |创建标签匹配任务 |
|
||
* |get_customer_tag_result |获取标签任务结果 |
|
||
* |create_recommend_dialog_task |创建话术推荐任务 |
|
||
* |get_recommend_dialog_result |获取话术推荐结果 |
|
||
* |create_private_task |创建自定义模型任务 |
|
||
* |get_private_task_result |获取自定义模型结果 |
|
||
* |(废弃)document_list |获取知识集列表 |
|
||
* |create_spam_task |会话反垃圾创建分析任务 |
|
||
* |get_spam_result |会话反垃圾获取任务结果 |
|
||
* |create_chatdata_export_job |创建会话内容导出任务 |
|
||
* |get_chatdata_export_job_status |获取会话内容导出任务结果 |
|
||
* |spec_notify_app |专区通知应用 |
|
||
* |create_program_task |创建自定义程序任务 |
|
||
* |get_program_task_result |获取自定义程序结果 |
|
||
* |knowledge_base_list |获取企业授权给应用的知识集列表 |
|
||
* |knowledge_base_create |创建知识集 |
|
||
* |knowledge_base_detail |获取知识集详情 |
|
||
* |knowledge_base_add_doc |添加知识集內容 |
|
||
* |knowledge_base_remove_doc |删除知识集內容 |
|
||
* |knowledge_base_modify_name |修改知识集名称 |
|
||
* |knowledge_base_delete |删除知识集 |
|
||
* |search_contact_or_customer |员工或者客户名称搜索 |
|
||
* |create_ww_model_task |创建企微通用模型任务 |
|
||
* |get_ww_model_result |获取企微通用模型结果 |
|
||
* |get_msg_list_by_page_id |page_id获取消息列表 |
|
||
* +-----------------------------------------------------------------+
|
||
* */
|
||
public int Invoke(String apiName) {
|
||
return Invoke(specSDKptr, apiName, request);
|
||
}
|
||
|
||
private native int Invoke(long sdk, String apiName, String request);
|
||
|
||
// 静态代码块内还无法调用native日志函数,这里的日志在管理系统无法查询
|
||
static {
|
||
try {
|
||
Class.forName("com.tencent.wework.SpecUtil");
|
||
} catch (ClassNotFoundException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
}
|