Skip to content

informat.company 团队 ​

概述 ​

使用informat.company对象进行团队相关操作。

getCompany ​

查询当前团队信息

javascript
informat.company.getCompany();

返回值

类型为Company,返回团队

示例

javascript
informat.company.getCompany();
json
{
  "createAccountId": "wcueuhi1ib6ul",
  "createTime": 1664196760747,
  "dbIndex": 0,
  "favicon": "0238219de8614a6a8a27db74d2dfc82a.jpg",
  "id": "g09aj7cus3d8s",
  "maxApplicationNum": 0,
  "maxUserNum": 10000,
  "name": "深圳交付团队UAT",
  "updateTime": 1683595804684,
  "version": "enterprise"
}

queryRoleList ​

查询团队角色列表

javascript
informat.company.queryRoleList()

返回值

类型为Array<Role>,返回所有角色

示例

javascript
informat.company.queryRoleList()
json
[
  {
    "admin": true,
    "createTime": 1664196760903,
    "id": "admin",
    "isAdmin": true,
    "name": "管理员",
    "permissionIds": []
  },
  {
    "admin": false,
    "createTime": 1664196760907,
    "id": "member",
    "isAdmin": false,
    "name": "成员",
    "permissionIds": [
      "InviteMember"
    ]
  },
  {
    "admin": false,
    "createTime": 1670301261933,
    "id": "supplier",
    "isAdmin": false,
    "name": "供应商",
    "permissionIds": [
      "InviteMember"
    ]
  }
]

addCompanyMember ​

将账号添加到团队成员列表中

javascript
informat.company.addCompanyMember(accountId, departmentList, roleList)

提醒

添加账号到团队成员中会受到license中团队成员数量的限制,如果团队成员数量超过license的限制则添加不成功

参数类型描述
accountIdString账号ID
departmentListArray<String>部门ID列表,如果列表为空,则用户会被加入到根部门
roleListArray<String>角色ID列表

示例

javascript
informat.company.addCompanyMember('zhangsan', ['yanfabu'], ['tester']);

deleteCompanyMember ​

将账号从团队成员中移除

javascript
informat.company.deleteCompanyMember(accountId)
参数类型描述
accountIdString账号ID

返回值

类型为Boolean,返回是否移除成功

示例

javascript
informat.company.deleteCompanyMember('zhangsan');
text
true

updateCompanyMember ​

更新团队成员

javascript
informat.company.updateCompanyMember(member)
参数类型描述
memberCompanyMember团队成员

示例

javascript
informat.company.updateCompanyMember({
    id: 'zhangsan',
    departmentList: ['yanfabu', 'yunyingbu'],
    roleList: ['tester', 'devopser'],
    leaderList: ['lisi'],
    dingtalkUserId: 'zhangsan',
    weworkUserId: 'eobg38987',
    feishuUserId: 'ecbg46933',
});

queryCompanyMemberList ​

查询团队成员列表

javascript
informat.company.queryCompanyMemberList(query)
参数类型描述
queryQuery团队成员查询条件

返回值 类型Array<CompanyMember>,团队成员列表

示例

javascript
informat.company.queryCompanyMemberList({
	pageIndex:1,
	pageSize:100,
	filter:{
		conditionList:[{
			"fieldId":"weworkUserId",
			"opt":"isnull"
		}]
	}
});
json
[
  {
    "createTime": 1700628322740,
    "departmentKeyList": [
      "root"
    ],
    "departmentList": [
      "acocdpvd8d6a6"
    ],
    "id": "zhangsan",
    "name": "张三",
    "rowNumber": 5,
    "updateTime": 1700820250268
  }
]

queryCompanyMemberListCount ​

查询团队成员列表数量

javascript
informat.company.queryCompanyMemberListCount(filter)
参数类型描述
filterFilter团队成员查询过滤器

返回值

类型为Integer,返回匹配到的总数

示例

javascript
informat.company.queryCompanyMemberListCount(
	{
		conditionList:[{
			"fieldId":"weworkUserId",
			"opt":"isnull"
		}]
	}
);
text
2

queryAppGroupById ​

通过ID查询应用分组

javascript
informat.company.queryAppGroupById(id)
参数类型描述
idString应用分组ID

返回值

类型为AppGroup,返回应用分组

示例

javascript
informat.company.queryAppGroupById('ruh8zp94ke3p0');
json
{
  "createTime": 1700628428167,
  "id": "qvwfhdf328lex",
  "name": "演示(gitee上有链接,供客户安装)",
  "rowNumber": 1,
  "updateTime": 1717149133338
}

queryAppGroupList ​

查询应用分组列表

javascript
informat.company.queryAppGroupList(query)
参数类型描述
queryQuery查询条件

返回值

类型为Array<AppGroup>,返回应用分组列表

示例

javascript
informat.company.queryAppGroupList({
	pageIndex:1,
	pageSize:100,
	filter:{
		conditionList:[{
			"fieldId": "name",
			"opt":"isnotnull"
		}]
	}
});
json
[
  {
    "createTime": 1717146091865,
    "id": "sjppghi7ofsci",
    "name": "⚠️案例-项目管理",
    "rowNumber": 5,
    "updateTime": 1717660920434
  },
  {
    "createTime": 1717660867337,
    "id": "mjeb7d6mnrsi7",
    "name": "⚠️案例-生产制造2",
    "rowNumber": 8,
    "updateTime": 1717660937343
  }
]

queryAppGroupListCount ​

查询应用分组列表数量

javascript
informat.company.queryAppGroupListCount(filter)
参数类型描述
filterFilter查询过滤器

返回值

类型为Integer,返回匹配到的总数

示例

javascript
informat.company.queryAppGroupListCount({
      conditionList:[{
        "fieldId":"name",
        "opt":"contains",
        "value":"案例"
      }]
    }
)
text
4

addAppGroup ​

创建应用分组

javascript
informat.company.addAppGroup(group);
参数类型描述
groupAppGroup应用分组

返回值

类型String,新增应用分组的ID

示例

javascript
informat.company.addAppGroup({
	'name':'测试分组'
});
text
qunzjrmed162w

updateAppGroup ​

编辑应用分组

javascript
informat.company.updateAppGroup(group);
参数类型描述
groupAppGroup应用分组

返回值

类型Integer,编辑成功的分组数量

javascript
informat.company.updateAppGroup({
	'id':'qunzjrmed162w',
	'name':'测试分组2'
})
text
1

deleteAppGroup ​

删除应用分组

javascript
informat.company.deleteAppGroup(id);

WARNING

分组下有应用则不能删除

参数类型描述
idString应用分组ID

返回值

类型为Integer,删除成功的分组数量

示例

javascript
informat.company.deleteAppGroup('qunzjrmed162w');
text
1

queryAppList ​

查询应用列表

javascript
informat.company.queryAppList(query)
参数类型描述
queryQuery查询条件

返回值

类型为Array<Application)>,返回应用列表

示例

javascript
informat.company.queryAppList({
	pageIndex:1,
	pageSize:100,
	filter:{
		conditionList:[{
			"fieldId":"name",
			"opt":"contains",
			"value":"测试"
		}]
	}
});
json
[
  {
    "appDefineId": "com.mycompany",
    "color": "c7",
    "createAccountId": "zhangsan",
    "createTime": 1680006873433,
    "icon": "home",
    "id": "ftegr30w93jya",
    "name": "测试一下",
    "updateAccountId": "zhangsan",
    "updateTime": 1696919628896
  },
  {
    "appDefineId": "cn.informat.test",
    "color": "c1",
    "createAccountId": "zhangsan",
    "createTime": 1664258560997,
    "icon": "community",
    "id": "btz5tka89273q",
    "name": "全字段测试",
    "updateAccountId": "zhangsan",
    "updateTime": 1696919628886
  }
]

queryAppListCount ​

查询应用列表数量

javascript
informat.company.queryAppListCount(filter)
参数类型描述
filterFilter查询过滤器

返回值

类型为Integer,返回匹配到的总数

示例

javascript
informat.company.queryAppListCount(
	{
		conditionList:[{
			"fieldId":"name",
			"opt":"contains",
			"value":"测试"
		}]
	}
);
text
2

installApp ​

安装应用

javascript
informat.company.installApp(req);
参数类型描述
reqInstallAppRequest安装信息

返回值

类型为String, 新安装的应用ID

示例

javascript
let company = informat.company.getCompany();
informat.company.installApp({
	'groupId': company.id,
	'imrUrl':'https://next.inforamt.cn/test.imr'
});
text
uzafvisn1whcq

uninstallApp ​

卸载应用

javascript
informat.company.uninstallApp(appId);
参数类型描述
appIdString应用ID

示例

javascript
informat.company.uninstallApp('uzafvisn1whcq');

getUserAppList ​

查询用户可以访问的应用列表

javascript
informat.company.getUserAppList(accountId)
参数类型描述
accountIdString账号ID

返回值

类型为UserAppList,返回应用列表

示例

javascript
informat.company.getUserAppList('zhangsan');
json
{
	"appGroupList":[
		{
			"createTime":1737464180983,
			"id":"nj4h8ci8kjpsu",
			"name":"演示应用",
			"rowNumber":1,
			"updateTime":1738810011210
		},
		{
			"createTime":1717142070955,
			"id":"qdjpyk2iw8zzt",
			"name":"开发迭代",
			"rowNumber":2,
			"updateTime":1738810011216
		}
	],
	"appList":[
		{
			"appDefineBuild":920,
			"appDefineEditable":true,
			"appDefineId":"com.demo.srm",
			"appDefineVersion":"1.0",
			"color":"c1",
			"createAccountId":"lwfwqr67xsvup",
			"createTime":1725441476365,
			"enableAppJsonLog":false,
			"enableAppLog":false,
			"icon":"instance-fill",
			"id":"dvl8ig0j3odwh",
			"logLevel":"DEBUG",
			"name":"功能演示-供应商管理",
			"groupId":"nj4h8ci8kjpsu",
			"updateTime":1739861044583
		},
		{
			"appDefineBuild":54,
			"appDefineEditable":true,
			"appDefineId":"demoApp.pm",
			"appDefineVersion":"1.0",
			"color":"c2",
			"createTime":1725503438313,
			"enableAppJsonLog":false,
			"enableAppLog":false,
			"icon":"task",
			"id":"m4mfdpi5plchm",
			"logLevel":"DEBUG",
			"name":"功能演示-项目管理",
			"groupId":"nj4h8ci8kjpsu",
			"updateTime":1740559881456
		}
	]
}

团队知识库脚本接口 ​

以下接口均使用当前执行上下文的团队和账号,要求“团队知识库”管理权限;没有登录身份或以系统账号执行时拒绝访问。知识库ID与应用知识库模块Key不是同一种标识,必须先通过 queryKnowledgeBaseList() 获取真实ID。返回对象不包含向量模型配置或API密钥。

方法说明
queryKnowledgeBaseList()返回团队知识库列表、ID、名称和文档数量
getKnowledgeBase(knowledgeBaseId)获取库详情及文档数量
createKnowledgeBase(name, description)新建知识库,返回含ID的信息
updateKnowledgeBase(knowledgeBaseId, name, description)修改名称及描述;描述为整体替换
deleteKnowledgeBase(knowledgeBaseId)级联删除文档、分块、目录、角色授权和专家引用
queryKnowledgeBaseDirectoryList(knowledgeBaseId)平铺目录列表,通过parentId组装目录树
createKnowledgeBaseDirectory(knowledgeBaseId, directory)新建目录;directory包含name、description和parentId
updateKnowledgeBaseDirectory(knowledgeBaseId, directory)修改目录;directory包含id、name和description
moveKnowledgeBaseDirectory(knowledgeBaseId, directoryId, parentId)移动目录;拒绝循环引用和跨库移动
deleteKnowledgeBaseDirectory(knowledgeBaseId, directoryId)仅可删除空目录
queryKnowledgeBaseDocumentList(knowledgeBaseId, directoryId, query)仅查询当前目录,空directoryId表示根目录;query可为null或包含status、documentType、documentName、createAccountId
getKnowledgeBaseDocument(knowledgeBaseId, documentId)文档详情、status、chunkCount和errorMessage
uploadKnowledgeBaseDocument(knowledgeBaseId, document)上传并异步处理文件,返回docId和taskId
appendKnowledgeBaseDocument(knowledgeBaseId, documentId, content)原样追加UTF-8文本,保留文档ID并重新异步处理
reIngestKnowledgeBaseDocument(knowledgeBaseId, documentId)沿用原始文件和已保存分块配置重新处理
deleteKnowledgeBaseDocument(knowledgeBaseId, documentId)删除文档及分块
moveKnowledgeBaseDocuments(knowledgeBaseId, directoryId, documentIds)在同一知识库内批量移动文档;空directoryId表示根目录
getKnowledgeBaseIngestTaskStatus(knowledgeBaseId, taskId)获取异步状态与进度;taskId必须属于该库
searchKnowledgeBase(keyword, knowledgeBaseIds)请求ID与账号AI知识库权限取交集;空列表使用获准的全部库,交集为空时返回空结果

上传请求:name为带扩展名的文件名;base64Content为标准Base64文件内容(不带data URL前缀,解码后最多15MB);directoryId为空时上传到根目录。可选 documentType、category、chunkConfig,分块配置沿用应用知识库的父子分块模型。使用团队默认配置或库独立配置,接口不会修改向量模型设置。

javascript
// 此Base64示例解码后是简单的Markdown验收标题;实际文件内容由调用方提供。
var kb = informat.company.createKnowledgeBase("验收资料", "测试专用资料");
var queued = informat.company.uploadKnowledgeBaseDocument(kb.id, {
  name: "acceptance.md",
  base64Content: "IyBBY2NlcHRhbmNlCg==",
  documentType: "MARKDOWN"
});
// 在后续调用中查询,避免在单个脚本中忙等。
var task = informat.company.getKnowledgeBaseIngestTaskStatus(kb.id, queued.taskId);
// 只有task.status为COMPLETED后再检索;FAILED时检查errorMessage。

返回上传任务成功只表示任务已提交,并不代表文档已完成入库。实际问答需在异步处理完成后,将检索结果交给智能体;searchKnowledgeBase本身不调用聊天模型生成答案。

参数与返回对象 ​

knowledgeBaseId、directoryId、documentId、taskId 均使用查询或创建接口返回的真实 ID。方法不接收 companyId 或操作账号参数,传入对象中的同名属性也不能切换团队或执行人。

返回类型使用接口主要字段
InformatCompanyKnowledgeBase库详情、新建、编辑;列表为此对象的数组id、name、description、documentCount、rowNumber、createTime、updateTime;文档数量在列表和详情中回填,新建/编辑的返回值不用于判断实时文档数量
InformatCompanyKnowledgeBaseDirectory目录新建、编辑、移动;列表为此对象的数组id、knowledgeBaseId、parentId、name、description、rowNumber
InformatCompanyKnowledgeBaseDocument文档详情;列表为此对象的数组id、title、directoryId、fileName、fileSize、documentType、category、status、errorMessage、chunkCount、createAccountId、createdTime、updatedTime;不返回原始文件存储路径
InformatKnowledgeBaseWriteResult上传、追加、重新处理docId、taskId;用于后续状态查询
InformatKnowledgeBaseIngestTask任务状态查询taskId、docId、status、totalChunks、processedChunks、progress、errorMessage、startTime、endTime、duration
检索分块列表内容检索由现有检索引擎返回,包含 docId、content 等分块信息;章节、页码和评分等信息视原文及检索配置而定
无返回值删除知识库、删除目录、删除文档、移动文档成功时正常结束,失败时抛出平台异常

任务的 progress 为百分数(0—100),duration 为毫秒,startTime/endTime 为 ISO-8601 字符串。任务状态包括 PENDING、PROCESSING、COMPLETED、FAILED。只有 COMPLETED 表示处理成功;FAILED 时查看 errorMessage。文档列表的 status 表示文档状态,getKnowledgeBaseIngestTaskStatus 表示某一次任务的状态,重新处理后应使用新返回的 taskId。

上传请求与分段配置 ​

参数类型说明
nameString必填,带扩展名的文件名,例如 product.md;不能包含 /、\ 或空字符,不能为 . 或 ..
base64ContentString必填,标准 Base64 字符串;不接受 URL、服务器路径或 data:...;base64, 前缀,解码后上限为 15MB;空文件无法完成内容摄入
directoryIdString可选,目标库内目录 ID;null 或空白值表示根目录
documentTypeString可选,例如 MARKDOWN、CODE、API、FAQ、ARTICLE、TABLE、CUSTOM;省略时按文件名推断,类型设置不改变原始文件格式
categoryString可选,文档分类
chunkConfigObject可选,父子分块配置;省略时按文档类型采用推荐配置

chunkConfig 可使用以下字段:

字段类型默认值及约束
parentMaxLenint默认 1500,必须大于 0
childMaxLenint默认 400,必须大于 0
childMinLenint默认 80,必须大于等于 0 且小于 childMaxLen
childOverlapLenint默认 50,必须大于等于 0 且小于 childMaxLen
enableOverlapboolean默认 true
parentSeparatorString默认分隔表达式 \n\n,仅 CUSTOM 类型使用
childSeparatorString默认分隔表达式 \n,仅 CUSTOM 类型使用

表内默认值指显式传入 chunkConfig 时公开 SPI 模型的字段默认值;完全省略 chunkConfig 时采用文档类型推荐值。首次调用前应确认团队知识库已启用,并已在页面配置可用的团队默认向量模型或知识库独立配置。

示例一:创建知识库、目录并上传文件 ​

下面会创建新的测试资料。实际业务应先查询列表,复用已有目标,避免重复创建。

javascript
var libraries = informat.company.queryKnowledgeBaseList();
var kb = informat.company.createKnowledgeBase("产品验收资料", "验收测试专用");
var directory = informat.company.createKnowledgeBaseDirectory(kb.id, {
  name: "产品说明",
  description: "产品文档",
  parentId: null
});
var queued = informat.company.uploadKnowledgeBaseDocument(kb.id, {
  name: "acceptance.md",
  // 解码后为Markdown标题“# Acceptance”及换行。
  base64Content: "IyBBY2NlcHRhbmNlCg==",
  directoryId: directory.id,
  documentType: "MARKDOWN",
  category: "验收"
});
// 保存这些返回值供后续调用使用,不要把示例ID替换成自行编造的值。
var uploaded = {
  knowledgeBaseId: kb.id,
  directoryId: directory.id,
  documentId: queued.docId,
  taskId: queued.taskId
};

示例一补充:上传 Word 文件 ​

Word 文件使用同一个上传接口,支持 .doc、.docx。knowledgeBaseId 来自已有知识库的查询或创建结果,wordBase64 由调用方传入,必须是原始 Word 文件二进制内容的标准 Base64,不是正文文字的 Base64,也不带 data:...;base64, 前缀。

javascript
// 文件名扩展名应与真实文件格式一致;这里上传的是.docx文件。
var wordQueued = informat.company.uploadKnowledgeBaseDocument(knowledgeBaseId, {
  name: "产品说明.docx",
  base64Content: wordBase64,
  directoryId: null, // 根目录;上传到子目录时填已有目录ID。
  category: "产品资料"
  // documentType省略,由系统按文件名推断,无需填写WORD或DOCX。
});
// 保存返回值,传给后续脚本查询处理状态。
var wordUploaded = {
  knowledgeBaseId: knowledgeBaseId,
  documentId: wordQueued.docId,
  taskId: wordQueued.taskId
};

接口会自动将 Base64 解码为原始附件,解析 Word 文字,再异步分块、生成向量并建立索引;原始文件不超过 15MB。返回成功仅表示已提交处理,不能立即视为可检索。

在后续另一次脚本中,传入上一步返回的 knowledgeBaseId、documentId、taskId:

javascript
var wordTask = informat.company.getKnowledgeBaseIngestTaskStatus(knowledgeBaseId, taskId);
var wordDocument = informat.company.getKnowledgeBaseDocument(knowledgeBaseId, documentId);
var wordChunks = [];
if (wordTask.status === "COMPLETED") {
  wordChunks = informat.company.searchKnowledgeBase("产品说明", [knowledgeBaseId]);
}
// FAILED时查看wordTask.errorMessage;不要在单次脚本中循环忙等。

当前不会自动识别 Word 内嵌图片中的文字或图像含义。appendKnowledgeBaseDocument 仅支持文本文件,不能用于向 Word 原始附件追加内容。

示例二:查询处理结果后检索 ​

下面的 knowledgeBaseId、directoryId、documentId、taskId 来自前一次上传的返回值,由调用方传入本次脚本。不要在单次脚本中使用循环忙等处理完成。

javascript
var task = informat.company.getKnowledgeBaseIngestTaskStatus(knowledgeBaseId, taskId);
var document = informat.company.getKnowledgeBaseDocument(knowledgeBaseId, documentId);
var files = informat.company.queryKnowledgeBaseDocumentList(knowledgeBaseId, directoryId, {
  status: "COMPLETED",
  documentName: "acceptance"
});
var chunks = [];
if (task.status === "COMPLETED") {
  chunks = informat.company.searchKnowledgeBase("Acceptance", [knowledgeBaseId]);
}
// chunks是检索材料;智能体需基于材料组织回答,并在资料不足时明确说明。

queryKnowledgeBaseDocumentList(knowledgeBaseId, null, null) 只返回根目录文档,不递归遍历子目录;需要遍历全库时先查目录列表,再逐个查询。searchKnowledgeBase 按知识库检索,不按内部目录限制范围。

示例三:编辑、移动与重新处理 ​

下面所有 ID 均应来自当前团队的前序查询结果。目录编辑只修改名称和描述,移动目录必须使用专门的移动接口。

javascript
var detail = informat.company.getKnowledgeBase(knowledgeBaseId);
var updated = informat.company.updateKnowledgeBase(knowledgeBaseId, "产品验收资料(更新)", "最新验收资料");
var directories = informat.company.queryKnowledgeBaseDirectoryList(knowledgeBaseId);
var editedDirectory = informat.company.updateKnowledgeBaseDirectory(knowledgeBaseId, {
  id: directoryId,
  name: "产品说明(更新)",
  description: "更新后的目录说明"
});
// 移动到根目录;null表示根目录,不改变知识库归属。
var movedDirectory = informat.company.moveKnowledgeBaseDirectory(knowledgeBaseId, directoryId, null);
informat.company.moveKnowledgeBaseDocuments(knowledgeBaseId, null, [documentId]);
var retried = informat.company.reIngestKnowledgeBaseDocument(knowledgeBaseId, documentId);
// 重新处理保留documentId,但应使用retried.taskId查询新任务。

追加现有文本文件 ​

对已上传或脚本创建的 UTF-8 .md、.markdown、.txt 文档,可以追加正文并保持原 documentId:

javascript
// knowledgeBaseId、documentId取自前序查询或上传返回值。
var appended = informat.company.appendKnowledgeBaseDocument(
  knowledgeBaseId,
  documentId,
  "\n\n## 新内容\n这里是追加的资料。\n"
);
// appended.docId仍是原文档ID;保存appended.taskId,在后续调用中查询新任务状态。

追加文本按原样写入,不自动补换行;原文及新增内容均须为有效 UTF-8,追加内容不能仅为空白,合并后的文件不超过 15MB。不支持向 Word、PDF 等二进制附件追加文本。

接口保留原文档名称、标题、目录、分类、创建时间和分块配置,保存合并后的新原始文件,清理旧分块后重新注册异步摄入。返回成功只代表任务已提交;应等待新任务 COMPLETED 后检索追加内容。事务失败时保留旧附件,提交成功后清理被替换的旧附件。

文档行锁用于避免并发覆盖;文档处于 PENDING 或 PROCESSING 时拒绝追加,应等待当前任务结束再提交。追加不是幂等操作,不要在执行结果不明时直接重放同一请求,否则可能重复追加。

删除与异常处理 ​

删除前先查询核对真实目标。以下是相互独立的调用方式,按业务需要选择,不要将其作为固定清理步骤自动执行:

javascript
// 删除单篇文档及其分块。
informat.company.deleteKnowledgeBaseDocument(knowledgeBaseId, documentId);
// 删除空目录;存在子目录或文档时会失败。
informat.company.deleteKnowledgeBaseDirectory(knowledgeBaseId, directoryId);
// 删除整个库及文档、分块、内部目录、角色授权引用和专家绑定。
informat.company.deleteKnowledgeBase(knowledgeBaseId);

常见失败原因包括:当前账号无团队知识库管理权限、目标属于其他团队或知识库、团队知识库未启用、配置重建尚未完成、目录不为空或存在循环引用、文件大小或 Base64 格式不合法、分段参数不合法,以及任务不存在。异常信息由平台返回;不要把失败当作空结果。检索范围与账号 AI 知识库权限取交集后为空,则正常返回空列表,不会自动扩大到其他库。