智能小e-外联系统文档 - 教程
前言
- 集成配置
- 同步
- 单点
- 外联系统
- 智能办公
- 智能问答
- 智能体
一、 外联系统
智能小e外联系统用于处理第三方API调用、统一认证功能;分别应用在智能办公、数智台、智能问答和智能体中。
创建外联系统,智能小e内置了:e9协同办公系统、e10协同办公系统、e-office协同办公系统。
1、e9协同办公系统
1.1、e9系统appid如何获取
在ecology系统数据库执行以下脚本示例(请不要直接使用示例中的数据):
INSERT INTO ECOLOGY_BIZ_EC(ID,APPID,NAME) VALUES('123456','EEAA5436-7577-4BE0-8C6C-89E9D88805EA','智能小e');
COMMIT;
-- 查询是否创建成功
SELECT* FROM ECOLOGY_BIZ_EC;
ECOLOGY_BIZ_EC字段说明:
字段 | 说明 |
---|---|
ID | 数据库主键。随便写,保证与ECOLOGY_BIZ_EC表主键标识不冲突即可(对应示例:123456) |
APPID | 许可证号码。随便写,保证与ECOLOGY_BIZ_EC表许可证号码不冲突即可(对应示例:EEAA5436-7577-4BE0-8C6C-89E9D88805EA) |
NAME | 许可证名称。随便写(对应示例:上海泛微网络科技股份有限公司) |
1.2、配置接口白名单
在ecology系统代码目录中找到以下配置文件:ecology/WEB-INF/prop/weaver_session_filter.properties
checkurl=/api/hrm/emmanager;/api/userPhrase;
uncheckurl=/api/ec/dev/app/getCheckSystemInfo;/api/ec/dev/app/emjoin;
unchecksessionurl=/api/ec/dev/util/accesspage;.../api/loginportal/element/;/api/edc/fillin/;
在unchecksessionurl
后面添加:
unchecksessionurl=...;/api/ec/dev/auth/regist;/api/ec/dev/auth/applytoken;
1.3、使用许可证appid开放IP地址
在ecology系统代码目录中找到以下配置文件:ecology/WEB-INF/prop/weaver_rest_token.properties
# 限制Rest API Token Invoke注册端IP地址,多个IP地址之间用逗号分隔
# 例如:allowIp=124.221.180.37,182.254.156.222
allowIp=
在allowIp=后面添加客户调用方服务器实际的ip地址(不设置将代表不限制任何ip,生产环境建议设置
)
若客户为内网,则需要在服务器上开放IP白名单 124.221.132.20、110.42.214.213、124.220.90.142、42.192.108.51、124.221.180.37、182.254.156.222
具体配置可以参考文档 e9Token认证
1.4、常见问题
注意
:
错误排查地址:https://e-cloudstore.com/doc.html?appId=c19494db68b34e5883bb1379c6afef2d
1.4.1、无法访问,请检查访问地址
问题原因排查:
- 域名访问地址不存在、填写错误
- ip地址为内网ip,需要修改外网ip
- 端口号没有开放
- 客户系统网络问题,服务有防火墙配置,需要客户服务端 开放ip白名单: 124.221.132.20、110.42.214.213、124.220.90.142、42.192.108.51、 124.221.180.37、182.254.156.222
1.4.2、token:不存在或者超时a25ed7ba-6027-424d-96ec-99daef56a51d
- 1、如果客户是集群环境,并且经常复现此类错误,请检查redis是否正常,如果没有使用redis,我这边可以修改为只使用数据库进行存储token,防止复现
- 2、正常调用出现此类错误的,可以使用postman进行测试,看看token是否很快过期,token很快就过期可能是因为缓存问题,我这边可以修改为只使用数据库进行存储token,防止复现.
1.4.3、注册失败没有在找到正确的APPID:EEAA5436-7577-4BE0-8C6C-89E9D888
问题原因:
1.appid填写错误(有可能是换行,加入了特殊字符导致的问题,建议使用postman或其它工具先测试)
2.在数据库执行上面没有提交事务(没有使用commit)
3.请求服务器对应的数据库并不是插入记录的数据库
4.缓存问题,需要清理缓存解决:oa地址+/commcache/cacheMonitor.jsp
1.4.4、执行e9接口注册:未被允许的ip请求
解决方案:
ecology/WEB-INF/prop/weaver_rest_token.properties
该配置文件中未配置接口调用方客户端出口IP地址。在allowIp=后面添加客户调用方服务器实际的ip地址。(不设置将代表不限制任何ip,生产环境建议设置)配置好 重启,再次尝试
- 如果按照上面没有解决;原因可能是
没有找到实际到达OA的IP
- 在ecology日志里面搜索一下“非法ip请求”,搜索这个关键字,找到实际到达OA的IP
- 在ecology日志里面搜索一下“非法ip请求”,搜索这个关键字,找到实际到达OA的IP
2、e10协同办公系统
字段 | 说明 |
---|---|
访问地址 | e10访问地址,后台管理中心-> 开放平台->接口文档, 这里示例有私有化地址: http://ip:port/papi/openapi 云地址: https://api.eteams.cn |
corpid | 后台管理中心-> 开放平台-> 开发者资料-> Corpid |
app_key | 后台管理中心->开放平台->应用管理->通用型应用中的 app_key |
app_secret | 后台管理中心->开放平台->应用管理->通用型应用中的 app_secret |
tenantKey | 台管理中心->基本信息->授权信息->组织识别码 |
2.1、访问地址
e10访问地址,后台管理中心-> 开放平台->接口文档(接口示例), 这里格式:
- 云地址: https://api.eteams.cn
- 私有化地址,格式示例有以下几种:
- http://ip:port
/papi/openapi
- https://ip:port
/papi/openapi
- http://域名
/papi/openapi
- https://域名
/papi/openapi
- http://ip:port
云地址
私有化地址
注意
私有化访问地址,多一个路径/papi/openapi
2.2、corpid
后台管理中心, 开放平台,开发者资料,Corpid
2.3、app_key和app_secre
后台管理中心,开放平台,应用管理,通用型应用中的 app_key、app_secret
2.4、tenantKey
后台管理中心,基本信息,授权信息,组织识别码
2.5、常见问题
2.5.1、无法访问,请检查访问地址
问题原因排查:
- 域名访问地址不存在、填写错误
- ip地址为内网ip,需要修改外网ip
- 端口号没有开放
- 客户系统网络问题,服务有防火墙配置,需要客户服务端 开放ip白名单: 124.221.132.20、110.42.214.213、124.220.90.142、42.192.108.51、 124.221.180.37、182.254.156.222
2.5.2、没有通用型应用,如何创建
说明
添加接口,选择第一个图标,所有接口
说明
1、如果是e-teams云,需要审核,请联系相关负责人通过
2、如果是e-teams私有化(e10),2.1、首先,切换进入第一个创建租户,
2.2、然后,进入管理后台中心
2.3、其次,进入开放平台
2.4、最后,进入应用管理右上角,有审核管理入口,进入后执行通过即可
2.5.3、创建e-teams通用型应用,没有找到“千里聆”接口权限
如果创建e-teams通用型应用,没有找到“千里聆”接口权限,你需要执行e-teamsSQL脚本:
mysql
INSERT INTO open_api_classification (id, create_time, update_time, creator, delete_type, tenant_key,classification_name, classification_lang_id, classification_type)
VALUES (1048892547885711111, now(), now(), -1, 0, 'all_teams', '千里聆', 286732, 'qianliling')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE, API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164260, '1', now(),now(), '语料同步获取文件夹','/api/mobile/plugin/rpa/docDir', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE, API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164261, '1', now(),now(), '语料同步获取文档','/api/mobile/plugin/rpa/docsync', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE, API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164262, '1', now(),now(), '语料同步获取附件','/api/mobile/plugin/rpa/docfile', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
oracle
INSERT INTO open_api_classification (id, create_time, update_time, creator, delete_type, tenant_key,classification_name, classification_lang_id, classification_type)
VALUES (1048892547885711111, sysdate, sysdate, -1, 0, 'all_teams', '千里聆', 286732, 'qianliling')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE, API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164260, '1', sysdate, sysdate, '语料同步获取文件夹','/api/mobile/plugin/rpa/docDir', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE, API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164261, '1', sysdate, sysdate, '语料同步获取文档','/api/mobile/plugin/rpa/docsync', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE, API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164262, '1', sysdate, sysdate, '语料同步获取附件','/api/mobile/plugin/rpa/docfile', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
postgresql (pgsql)
INSERT INTO open_api_classification (id, create_time, update_time, creator, delete_type, tenant_key,classification_name, classification_lang_id, classification_type)
VALUES (1048892547885711111, clock_timestamp(), clock_timestamp(), -1, 0, 'all_teams', '千里聆', 286732, 'qianliling')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE,API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164260, '1', clock_timestamp(), clock_timestamp(), '语料同步获取文件夹','/api/mobile/plugin/rpa/docDir', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE,API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164261, '1', clock_timestamp(), clock_timestamp(), '语料同步获取文档','/api/mobile/plugin/rpa/docsync', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE,API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164262, '1', clock_timestamp(), clock_timestamp(), '语料同步获取附件','/api/mobile/plugin/rpa/docfile', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
sqlServer
INSERT INTO open_api_classification (id, create_time, update_time, creator, delete_type, tenant_key,classification_name, classification_lang_id, classification_type)
VALUES (1048892547885711111, getdate(), getdate(), -1, 0, 'all_teams', '千里聆', 286732, 'qianliling')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE,API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164260, '1', getdate(), getdate(), '语料同步获取文件夹','/api/mobile/plugin/rpa/docDir', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE,API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164261, '1', getdate(), getdate(), '语料同步获取文档','/api/mobile/plugin/rpa/docsync', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
INSERT INTO open_api_info (ID, api_status, CREATE_TIME, UPDATE_TIME, API_NAME, API_PATH, api_version, API_TYPE,API_TYPE_NAME, classification_id, delete_type, creator, tenant_key, service_name, data_id)
VALUES (7350237803345164262, '1', getdate(), getdate(), '语料同步获取附件','/api/mobile/plugin/rpa/docfile', 'V1', 'qianliling', '千里聆', 1048892547885711111, 0, -1, 'all_teams','weaver-qianliling-service', 'weaver-open-gateway.properties')
;
2.5.4、设置应用接口权限
步骤如下:
- 后台管理中心,开放平台
- 应用管理
- 找到自己配置的应用,编辑
- 按照上图,添加所有接口权限
- 保存
3、其他系统
默认新增自定义外联认证系统:
- 提供名称
- 提供访问地址
- 全局变量
- 全局header
3.1、全局变量
全局变量作用于引入外联系统的各模块中,定义的全局变量作为参数使用,可以通过三种方式创建:
- 固定值
- 脚本
- Request请求
3.2、定义全局变量案例
3.2.1 人员卡片
根据人员卡片接口,可以配置获取分部信息
下面是e9接口文档
- 请求地址:
/api/hrm/simpleinfo/getHrmSimpleInfo
- 请求方式:
GET
参数示例
参数名称 | 类型 | 必填 | 描述 |
---|---|---|---|
userid | String | 必填 | 用户id |
返回结果
直接复制到结果中!
{"simpleInfo":{"departmentName":"PMO服务部","jobtitleName":"PMO管理部主管","locationName":"上海","workcode":"CZW011","jobtitle":"13031","sex":"Ms.","departmentid":"24032","ip":"","mobile":"","telephone":"","isOnline":"","subcompanyid1":"22523","managerid":"4200","managerName":"严11","lastname":"李22","locationid":"21","statusName":"正式","id":"4201","subcompanyName":"EBU事业本部","messageUrls":"","email":"","status":"1"},"fieldInfo":[{"fieldlabel":"部门","fieldvalue":"PMO服务部","linkurl":"/spa/hrm/engine.html#/hrmengine/organization?showTree=false&isView=1&type=department&id=24032"},{"fieldlabel":"分部","fieldvalue":"EBU事业本部","linkurl":"/spa/hrm/engine.html#/hrmengine/organization?showTree=false&isView=1&type=subcompany&id=22523"},{"fieldlabel":"岗位","fieldvalue":"PMO管理部主管","linkurl":"/spa/hrm/engine.html#/hrmengine/posts?id=13031"},{"fieldlabel":"上级","fieldvalue":"严11","linkurl":"/spa/hrm/index_mobx.html#/main/hrm/card/cardInfo/4200"},{"fieldlabel":"状态","fieldvalue":"正式"},{"fieldlabel":"电话","fieldvalue":""},{"fieldlabel":"手机","fieldvalue":""},{"fieldlabel":"邮件","fieldvalue":""}],"validate":{"36":{"isValidate":true,"validateName":"照片"},"37":{"isValidate":true,"validateName":"二维码"},"19":{"isValidate":false,"validateName":"发送邮件"},"hasEmessage":{"isValidate":true,"validateName":"发消息"},"31":{"isValidate":true,"validateName":"发送短信"},"32":{"isValidate":true,"validateName":"新建日程"}},"status":"1"}
二、外联系统关联后,常见问题
算法中台,创建EC语料同步任务,“获取e10系统accessToken失败”
解决方案:参考 2.1、访问地址
请求外联系统响应失败,请检查非标包
在浏览中,F12后,再次选择外联系统,找到请求接口“/checkSystemReason”,如下图:
或者如下:
解决方案:参考, 2.5.3、创建e-teams通用型应用,没有找到“千里聆”接口权限
e10系统,“应用没有权限访问该接口”
针对问题2,解决方案如下:
参考文章中《2.5.4、设置应用接口权限》
e10系统,“您还未创建过应用,请先创建一个通用型应用”
解决方案:参考文章中《2.5.2、没有通用型应用,如何创建》