diff --git a/CHANGELOG.md b/CHANGELOG.md
index 374c9e5..88254fc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,7 +22,8 @@ fix: 处理uploadFiles里的Key 去掉开头的/
## [v1.4.19](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.18...v1.4.19) - 2023-08-03
feat
-- 提供base64方法
+
+- 提供base64方法
- 优化d.ts
### Merged
@@ -34,8 +35,9 @@ feat
## [v1.4.18](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.17...v1.4.18) - 2023-06-01
feat
-- 支持postBucketInventory
-- 优化d.ts
+
+- 支持postBucketInventory
+- 优化d.ts
### Commits
@@ -63,7 +65,8 @@ feat
## [v1.4.17](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.16...v1.4.17) - 2023-05-04
fix
-- 避开Windows Defender报毒
+
+- 避开Windows Defender报毒
### Merged
@@ -81,7 +84,8 @@ fix
## [v1.4.16](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.15...v1.4.16) - 2023-03-07
feat
-- 修改webpack globalObject指向this
+
+- 修改webpack globalObject指向this
### Commits
@@ -97,7 +101,8 @@ feat
## [v1.4.15](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.14...v1.4.15) - 2022-12-27
fix
-- 更新可以签入签名的headers
+
+- 更新可以签入签名的headers
### Merged
@@ -112,7 +117,8 @@ fix
## [v1.4.14](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.13...v1.4.14) - 2022-11-29
fix
-- 增加容错
+
+- 增加容错
### Merged
@@ -126,7 +132,8 @@ fix
## [v1.4.13](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.12...v1.4.13) - 2022-11-22
feat
-- 升级beacon sdk版本到4.5.14
+
+- 升级beacon sdk版本到4.5.14
### Commits
@@ -136,7 +143,8 @@ feat
## [v1.4.12](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.11...v1.4.12) - 2022-11-21
feat
-- getObjectAcl支持传VersionId
+
+- getObjectAcl支持传VersionId
### Merged
@@ -146,7 +154,8 @@ feat
## [v1.4.11](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.10...v1.4.11) - 2022-11-09
fix
-- 升级依赖包@xmldom/xmldom版本
+
+- 升级依赖包@xmldom/xmldom版本
### Commits
@@ -156,7 +165,8 @@ fix
## [v1.4.10](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.9...v1.4.10) - 2022-10-22
fix
-- getObjectUrl暂时只支持回调写法
+
+- getObjectUrl暂时只支持回调写法
### Merged
@@ -168,10 +178,10 @@ fix
## [v1.4.9](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.8...v1.4.9) - 2022-10-20
-- 修复getSourceParams使用不当部分
+- 修复getSourceParams使用不当部分
- protocol兼容不带冒号的http、https
-- 合法域名校验支持cos内网、cn域名
-- d.ts补充
+- 合法域名校验支持cos内网、cn域名
+- d.ts补充
### Merged
@@ -181,7 +191,8 @@ fix
## [v1.4.8](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.6...v1.4.8) - 2022-09-06
fix
-- 修复已知问题
+
+- 修复已知问题
### Commits
@@ -236,7 +247,8 @@ fix
## [v1.4.1](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.4.0...v1.4.1) - 2022-08-18
fix
-- 修复引入sdk在dev模式下启动报错问题
+
+- 修复引入sdk在dev模式下启动报错问题
### Merged
@@ -249,8 +261,9 @@ fix
## [v1.4.0](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.3.10...v1.4.0) - 2022-08-17
feat
-- 升级webpack版本
-- 增加beacon上报
+
+- 升级webpack版本
+- 增加beacon上报
### Merged
@@ -264,6 +277,7 @@ feat
## [v1.3.10](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.3.9...v1.3.10) - 2022-08-01
fix
+
- isNode环境判断新增webWorker场景
### Merged
@@ -279,6 +293,7 @@ fix
## [v1.3.9](https://github.com/tencentyun/cos-js-sdk-v5/compare/v1.3.8...v1.3.9) - 2022-06-23
feat
+
- putBucketCors支持ResponseVary
- 补充d.ts
@@ -790,7 +805,7 @@ fix:修复getBucketReferer已知错误
- 修复 clearQueue Bug [`a8e6f08`](https://github.com/tencentyun/cos-js-sdk-v5/commit/a8e6f0809113fa7b844acbaa0cb8e4f61df9354d)
- fix authorization error [`7e8a406`](https://github.com/tencentyun/cos-js-sdk-v5/commit/7e8a4069fbd485bbe4b92bb0a26b2b80dacc2f65)
-- 修改复制参数、任务增加 _custom 字段 [`00d04fc`](https://github.com/tencentyun/cos-js-sdk-v5/commit/00d04fc0f8d40b56968327d0b93862a2f26b92c8)
+- 修改复制参数、任务增加 \_custom 字段 [`00d04fc`](https://github.com/tencentyun/cos-js-sdk-v5/commit/00d04fc0f8d40b56968327d0b93862a2f26b92c8)
- getObjectUrl add Expires [`fe74e2d`](https://github.com/tencentyun/cos-js-sdk-v5/commit/fe74e2df5191d075483d9abb8a18c9426924f28f)
## [v0.5.13](https://github.com/tencentyun/cos-js-sdk-v5/compare/v0.5.12...v0.5.13) - 2019-04-08
@@ -1173,7 +1188,7 @@ fix:修复getBucketReferer已知错误
- 修改签名计算 [`cfff58f`](https://github.com/tencentyun/cos-js-sdk-v5/commit/cfff58fc2cc2cda803efde418a7655f7b84b8f38)
- 修改 region [`9979420`](https://github.com/tencentyun/cos-js-sdk-v5/commit/9979420c283e0c9756edff21d0e06665d9bfa165)
- 修复报错,修改签名参数 [`ccf9017`](https://github.com/tencentyun/cos-js-sdk-v5/commit/ccf901731b3b8d8bd0e6a23871f7098c36115009)
-- CORS AllowHeader 例子改成 * [`0a4d5af`](https://github.com/tencentyun/cos-js-sdk-v5/commit/0a4d5afe97bf3aa297651cac9896eb974be9e76a)
+- CORS AllowHeader 例子改成 \* [`0a4d5af`](https://github.com/tencentyun/cos-js-sdk-v5/commit/0a4d5afe97bf3aa297651cac9896eb974be9e76a)
- 修改 Readme [`75cb126`](https://github.com/tencentyun/cos-js-sdk-v5/commit/75cb126d3a3d148df16df86bec1b49b35ffe473f)
- 修改队列处理 [`d8f856e`](https://github.com/tencentyun/cos-js-sdk-v5/commit/d8f856eb698bde8b3c1e20be62b16c62392800fc)
- 如掉 async 模块引用 [`7f16e51`](https://github.com/tencentyun/cos-js-sdk-v5/commit/7f16e5112d05160b86026efc3d19c5692ed44e76)
@@ -1226,7 +1241,7 @@ fix:修复getBucketReferer已知错误
- add task demo [`20a67b0`](https://github.com/tencentyun/cos-js-sdk-v5/commit/20a67b0bd2a4655ab915f5ba86ff0558764f28e3)
- remove data=data||{}; [`1c149d3`](https://github.com/tencentyun/cos-js-sdk-v5/commit/1c149d38b5a1e0ad2bfb7cda089e24204c6dc39c)
- modify readme [`f1d6c16`](https://github.com/tencentyun/cos-js-sdk-v5/commit/f1d6c16f19e7b3f096fbb407dca05a714dfdff33)
-- fix !'()* url encode error [`04e4df8`](https://github.com/tencentyun/cos-js-sdk-v5/commit/04e4df8f0a74d474c972980405b132a57b4abca7)
+- fix !'()\* url encode error [`04e4df8`](https://github.com/tencentyun/cos-js-sdk-v5/commit/04e4df8f0a74d474c972980405b132a57b4abca7)
- fix https error [`3dada36`](https://github.com/tencentyun/cos-js-sdk-v5/commit/3dada36eab9ce1fda060d00a8cef4d65ef9caf08)
- fix onProgress error [`2248622`](https://github.com/tencentyun/cos-js-sdk-v5/commit/22486225ceece9ed0b8c639d34b30ecd6beff166)
- can cancel paused [`46e9e87`](https://github.com/tencentyun/cos-js-sdk-v5/commit/46e9e877092ac0d11afe8bca292f134d92b34031)
diff --git a/demo/CIDemos/ai.js b/demo/CIDemos/ai.js
new file mode 100644
index 0000000..36cf908
--- /dev/null
+++ b/demo/CIDemos/ai.js
@@ -0,0 +1,1567 @@
+/**
+ * AI内容识别demo集合
+*/
+
+// 开通AI内容识别
+export const CreateAIProcessBucket = {
+ name: '开通AI内容识别',
+ fn: function CreateAIProcessBucket() {
+ const key = 'ai_bucket'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 关闭AI内容识别
+export const closeAIBucket = {
+ name: '关闭AI内容识别',
+ fn: function closeAIBucket() {
+ const key = 'ai_bucket'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'DELETE', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 查询开通AI内容识别的桶
+export const DescribeAIProcessBuckets = {
+ name: '查询开通AI内容识别的桶',
+ fn: function DescribeAIProcessBuckets() {
+ const key = 'ai_bucket'; // 固定值
+ const host = `ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名;是否必传:是
+ // regions: '',
+ // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:是
+ // bucketNames: '',
+ // 存储桶名称前缀,前缀搜索;是否必传:是
+ // bucketName: '',
+ // 第几页;是否必传:是
+ // pageNumber: 1,
+ // 每页个数,大于0且小于等于100的整数;是否必传:是
+ // pageSize: 10,
+ },
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 查询AI内容识别队列
+export const DescribeAiProcessQueues = {
+ name: '查询AI内容识别队列',
+ fn: function DescribeAiProcessQueues() {
+ const key = 'ai_queue'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 队列 ID,以“,”符号分割字符串;是否必传:否
+ // queueIds: '',
+ // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
+ state: 'Active',
+ // 第几页,默认值1;是否必传:否
+ // pageNumber: 0,
+ // 每页个数,默认值10;是否必传:否
+ // pageSize: 0,
+ },
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新AI内容识别队列
+export const UpdateAiProcessQueue = {
+ name: '更新AI内容识别队列',
+ fn: function UpdateAiProcessQueue() {
+ const queueId = 'xxx'; // 队列id
+ const key = `ai_queue/${queueId}`; // 固定格式
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 队列名称,仅支持中文、英文、数字、_、-和*,长度不超过 128;是否必传:是
+ Name: 'my_queue',
+ // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:是
+ State: 'Active',
+ // 回调配置;是否必传:是
+ NotifyConfig: {
+ // 回调开关OffOn;是否必传:否
+ State: 'On',
+ // 回调事件TaskFinish:任务完成WorkflowFinish:工作流完成;是否必传:否
+ Event: 'TaskFinish',
+ // 回调格式XMLJSON;是否必传:否
+ // ResultFormat: '',
+ // 回调类型UrlTDMQ;是否必传:否
+ Type: 'Url',
+ // 回调地址,不能为内网地址。;是否必传:否
+ Url: 'http://example.com',
+ // TDMQ 使用模式Topic:主题订阅Queue: 队列服务;是否必传:否
+ // MqMode: '',
+ // TDMQ 所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:否
+ // MqRegion: '',
+ // TDMQ 主题名称;是否必传:否
+ // MqName: '',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 识别图片标签
+export const getImageLabel = {
+ name: '识别图片标签',
+ fn: function getImageLabel() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 固定值detect-label;是否必传:是
+ 'ci-process': 'detect-label',
+ // 本次调用支持的识别场景,可选值如下:web,针对网络图片优化;camera,针对手机摄像头拍摄图片优化;album,针对手机相册、网盘产品优化;news,针对新闻、资讯、广电等行业优化;如果不传此参数,则默认为camera。支持多场景(scenes)一起检测,以,分隔。例如,使用 scenes=web,camera 即对一张图片使用两个模型同时检测,输出两套识别结果。;是否必传:否
+ // scenes: '',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 二维码识别(云上图片识别)
+export const recognitionQRcode = {
+ name: '二维码识别(云上图片识别)',
+ fn: function recognitionQRcode() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/二维码.png', // 必须
+ Query: {
+ // 万象处理能力,二维码识别固定为 QRcode;是否必传:是
+ 'ci-process': 'QRcode',
+ // 二维码覆盖功能,将对识别出的二维码覆盖上马赛克。取值为0或1。0表示不开启二维码覆盖,1表示开启二维码覆盖,默认值0;是否必传:否
+ cover: 0,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 二维码识别(上传时识别)
+export const identifyQrcode_put = {
+ name: '二维码识别(上传时识别)',
+ fn: function identifyQrcode_put() {
+ util.selectLocalFile(function (files) {
+ const file = files && files[0];
+ if (!file) return;
+ cos.putObject(
+ {
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: '1/上传二维码.png',
+ Body: file,
+ Headers: {
+ // 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
+ 'Pic-Operations': '{"is_pic_info": 1, "rules": [{"fileid":"test.jpg","rule":" QRcode/cover/0"}]}',
+ },
+ onProgress: function (progressData) {
+ console.log('onProgress', JSON.stringify(progressData));
+ },
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ },
+ );
+ });
+ }
+};
+
+// 二维码识别(下载时识别)
+export const identifyQrcode_get = {
+ name: '二维码识别(下载时识别)',
+ fn: function identifyQrcode_get() {
+ const key = '1/二维码图片.png';
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ Query: {
+ 'ci-process': 'QRcode',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 二维码生成
+export const createCRcode = {
+ name: '二维码生成',
+ fn: function createCRcode() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Query: {
+ 'ci-process': 'qrcode-generate', // 必须,对象存储处理能力,二维码生成参数为 qrcode-generate
+ 'qrcode-content': '二维码文案', // 必须,可识别的二维码文本信息
+ // mode: 0, // 非必须,生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0
+ width: 200, //必须,指定生成的二维码或条形码的宽度,高度会进行等比压缩
+ },
+ }, function (err, data) {
+ if (!err) {
+ // 获得二维码base64
+ const imgBase64 = data.Response.ResultImage;
+ // 比如可拼接前缀直接展示在img里
+ // document.querySelector('#img').src = 'data:image/jpg;base64,' + imgBase64;
+ }
+ });
+ }
+};
+
+// 图片文字识别
+export const cOSOCR = {
+ name: '图片文字识别',
+ fn: function cOSOCR() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/0.jpg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,图片文字识别固定为OCR;是否必传:是
+ 'ci-process': 'OCR',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ // ocr的识别类型,有效值为general,accurate,efficient,fast,handwriting。general表示通用印刷体识别;accurate表示印刷体高精度版;efficient表示印刷体精简版;fast表示印刷体高速版;handwriting表示手写体识别。默认值为general。;是否必传:否
+ type: 'general',
+ // type值为general时有效,表示识别语言类型。支持自动识别语言类型,同时支持自选语言种类,默认中英文混合(zh),各种语言均支持与英文混合的文字识别。可选值:zh:中英混合zh_rare:支持英文、数字、中文生僻字、繁体字,特殊符号等auto:自动mix:混合语种jap:日语kor:韩语spa:西班牙语fre:法语ger:德语por:葡萄牙语vie:越语may:马来语rus:俄语ita:意大利语hol:荷兰语swe:瑞典语fin:芬兰语dan:丹麦语nor:挪威语hun:匈牙利语tha:泰语hi:印地语ara:阿拉伯语;是否必传:否
+ 'language-type': 'zh',
+ // type值为general,fast时有效,表示是否开启PDF识别,有效值为true和false,默认值为false,开启后可同时支持图片和PDF的识别。;是否必传:否
+ ispdf: false,
+ // type值为general,fast时有效,表示需要识别的PDF页面的对应页码,仅支持PDF单页识别,当上传文件为PDF且ispdf参数值为true时有效,默认值为1。;是否必传:否
+ // 'pdf-pagenumber': 0,
+ // type值为general,accurate时有效,表示识别后是否需要返回单字信息,有效值为true和false,默认为false;是否必传:否
+ isword: false,
+ // type值为handwriting时有效,表示是否开启单字的四点定位坐标输出,有效值为true和false,默认值为false。;是否必传:否
+ 'enable-word-polygon': false,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 车辆识别
+export const aIDetectCar = {
+ name: '车辆识别',
+ fn: function aIDetectCar() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/car.png', // 对象文件名,必须,例如:folder/document.jpg
+ Query: {
+ // 数据万象处理能力,车辆识别固定为 DetectCar;是否必传:是
+ 'ci-process': 'DetectCar',
+ },
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 宠物识别
+export const aIDetectPet = {
+ name: '宠物识别',
+ fn: function aIDetectPet() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 对象文件名,必须,例如:folder/document.jpg须
+ Query: {
+ // 数据万象处理能力,宠物识别固定为 detect-pet;是否必传:是
+ 'ci-process': 'detect-pet',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 创建视频目标检测模板
+export const postVideoTargetTemplete = {
+ name: '创建视频目标检测模板',
+ fn: function postVideoTargetTemplete() {
+ const key = 'template'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型:VideoTargetRec;是否必传:是
+ Tag: 'VideoTargetRec',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_videoTargetRec',
+ // 视频目标检测 参数;是否必传:是
+ VideoTargetRec: {
+ // 是否开启人体检测,取值 true/false;是否必传:否
+ Body: 'true',
+ // 是否开启宠物检测,取值 true/false;是否必传:否
+ Pet: 'true',
+ // 是否开启车辆检测,取值 true/false;是否必传:否
+ Car: 'false',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新视频目标检测模板
+export const updateVideoTargetTemplete = {
+ name: '更新视频目标检测模板',
+ fn: function updateVideoTargetTemplete() {
+ const templateId = 'xxxxxxx'; // 要更新的模板id
+ const key = `template/${templateId}`; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型:VideoTargetRec;是否必传:是
+ Tag: 'VideoTargetRec',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_videoTargetRec2',
+ // 视频目标检测 参数;是否必传:是
+ VideoTargetRec: {
+ // 是否开启人体检测,取值 true/false;是否必传:否
+ Body: 'false',
+ // 是否开启宠物检测,取值 true/false;是否必传:否
+ Pet: 'false',
+ // 是否开启车辆检测,取值 true/false;是否必传:否
+ Car: 'true',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交一个视频目标检测任务
+export const postVideoTargetRec = {
+ name: '提交一个视频目标检测任务',
+ fn: function postVideoTargetRec() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:VideoTargetRec;是否必传:是
+ Tag: 'VideoTargetRec',
+ // 操作规则;是否必传:是
+ Operation: {
+ // 视频目标检测模板 ID;与VideoTargetRec二选一传递
+ TemplateId: 'xxxx',
+ // 视频目标检测参数, 同创建视频目标检测模板接口中的 Request.VideoTargetRec;与TemplateId二选一传递
+ // VideoTargetRec: {
+ // 是否开启人体检测,取值 true/false;是否必传:否
+ // Body: '',
+ // 是否开启宠物检测,取值 true/false;是否必传:否
+ // Pet: '',
+ // 是否开启车辆检测,取值 true/false;是否必传:否
+ // Car: '',
+ // },
+ // 透传用户信息, 可打印的 ASCII 码, 长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ },
+ // 待操作的媒体信息;是否必传:是
+ Input: {
+ // 媒体文件名;是否必传:否
+ Object: 'ci/test.mp4',
+ },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填。详情请参见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交词性分析任务
+export const postWordsGeneralize = {
+ name: '提交词性分析任务',
+ fn: function postWordsGeneralize() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:WordsGeneralize;是否必传:是
+ Tag: 'WordsGeneralize',
+ // 待操作的对象信息;是否必传:是
+ Input: {
+ // 文件路径;是否必传:是
+ Object: 'ci/test.txt',
+ },
+ // 操作规则;是否必传:是
+ Operation: {
+ // 指定分词参数;是否必传:是
+ WordsGeneralize: {
+ // ner 方式,支持 NerBasic 和 DL,默认值 DL;是否必传:否
+ NerMethod: 'DL',
+ // 分词粒度,支持 SegBasic 和 MIX,默认值 MIX;是否必传:否
+ SegMethod: 'MIX',
+ },
+ // 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 活体人脸核身
+export const LivenessRecognition = {
+ name: '活体人脸核身',
+ fn: function LivenessRecognition() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tf.mp4', // 必须
+ Query: {
+ // 数据万象处理能力,人脸核身固定为 LivenessRecognition;是否必传:是
+ 'ci-process': 'LivenessRecognition',
+ // 身份证号;是否必传:是
+ IdCard: '610321199411040019',
+ // 姓名。中文请使用 UTF-8编码;是否必传:是
+ Name: '田丰',
+ // 活体检测类型,取值:LIP/ACTION/SILENTLIP 为数字模式,ACTION 为动作模式,SILENT 为静默模式,三种模式选择一种传入;是否必传:是
+ LivenessType: 'SILENT',
+ // 数字模式传参:数字验证码(1234),需先调用接口获取数字验证码动作模式传参:传动作顺序(2,1 or 1,2),需先调用接口获取动作顺序静默模式传参:空;是否必传:否
+ ValidateData: '',
+ // 需要返回多张最佳截图,取值范围1 - 10,不设置默认返回一张最佳截图;是否必传:否
+ BestFrameNum: 1,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 获取动作顺序
+export const GetActionSequence = {
+ name: '获取动作顺序',
+ fn: function GetActionSequence() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Query: {
+ // 数据万象处理能力,获取动作顺序固定为 GetActionSequence;是否必传:是
+ 'ci-process': 'GetActionSequence',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 获取数字验证码
+export const GetLiveCode = {
+ name: '获取数字验证码',
+ fn: function GetLiveCode() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Query: {
+ // 数据万象处理能力,获取数字验证码固定为 GetLiveCode;是否必传:是
+ 'ci-process': 'GetLiveCode',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 卡证识别
+export const aILicenseRec = {
+ name: '卡证识别',
+ fn: function aILicenseRec() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/card.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,卡证识别固定为AILicenseRec;是否必传:是
+ 'ci-process': 'AILicenseRec',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ 'detect-url': '',
+ // 卡证识别类型,有效值为IDCard,DriverLicense。
IDCard表示身份证;DriverLicense表示驾驶证,默认:DriverLicense;是否必传:是
+ CardType: 'IDCard',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 开通以图搜图
+export const CreateImageSearchBucket = {
+ name: '开通以图搜图',
+ fn: function CreateImageSearchBucket() {
+ const key = 'CreateImageSearchBucket'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 图库容量限制;是否必传:是
+ MaxCapacity: 1000,
+ // 图库访问限制,默认10;是否必传:否
+ MaxQps: 10,
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 商品抠图
+export const goodsMatting = {
+ name: '商品抠图',
+ fn: function goodsMatting() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/goods.jpeg', // 与detect-url二选一传递
+ Query: {
+ // ;是否必传:是
+ 'ci-process': 'GoodsMatting',
+ // ;是否必传:否
+ // 'detect-url': '',
+ },
+ RawBody: true,
+ DataType: 'blob',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 添加图库图片
+export const AddImage = {
+ name: '添加图库图片',
+ fn: function AddImage() {
+ const body = COS.util.json2xml({
+ Request: {
+ // 物品 ID,最多支持64个字符。若 EntityId 已存在,则对其追加图片;是否必传:是
+ EntityId: '123456',
+ // 用户自定义的内容,最多支持4096个字符,查询时原样带回;是否必传:否
+ CustomContent: '小商品',
+ // 图片自定义标签,最多不超过10个,json 字符串,格式为 key:value (例 key1>=1 key1>='aa' )对;是否必传:否
+ // Tags: '',
+ },
+ });
+
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST', // 固定值,必须
+ Key: 'ci/goods.jpeg', // 必须
+ Query: {
+ // 固定值:ImageSearch;是否必传:是
+ 'ci-process': 'ImageSearch',
+ // 固定值:AddImage;是否必传:是
+ action: 'AddImage',
+ },
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 删除图库图片
+export const DeleteImage = {
+ name: '删除图库图片',
+ fn: function DeleteImage() {
+ const body = COS.util.json2xml({
+ Request: {
+ // 物品 ID;是否必传:是
+ EntityId: '',
+ },
+ });
+
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 检索图片
+export const SearchImage = {
+ name: '检索图片',
+ fn: function SearchImage() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/goods.jpeg', // 必须
+ Query: {
+ 'ci-process': 'ImageSearch',
+ action: 'SearchImage',
+ // 出参 Score 中,只有超过 MatchThreshold 值的结果才会返回。默认为0;是否必传:否
+ MatchThreshold: 0,
+ // 起始序号,默认值为0;是否必传:否
+ Offset: 0,
+ // 返回数量,默认值为10,最大值为100;是否必传:否
+ Limit: 0,
+ // 针对入库时提交的 Tags 信息进行条件过滤。支持>、>=、<、<=、=、!=,多个条件之间支持 AND 和 OR 进行连接;是否必传:否
+ Filter: '',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交内容翻译任务
+export const postTranslation = {
+ name: '提交内容翻译任务',
+ fn: function postTranslation() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:Translation;是否必传:是
+ Tag: 'Translation',
+ // 待操作的对象信息;是否必传:是
+ Input: {
+ // 源文档文件名单文件(docx/xlsx/html/markdown/txt):不超过800万字符有页数的(pdf/pptx):不超过300页文本文件(txt):不超过10MB二进制文件(pdf/docx/pptx/xlsx):不超过60MB图片文件(jpg/jpeg/png/webp):不超过10MB;是否必传:是
+ Object: 'ci/test.txt',
+ // 文档语言类型zh:简体中文zh-hk:繁体中文zh-tw:繁体中文zh-tr:繁体中文en:英语ar:阿拉伯语de:德语es:西班牙语fr:法语id:印尼语it:意大利语ja:日语pt:葡萄牙语ru:俄语ko:韩语km:高棉语lo:老挝语;是否必传:是
+ Lang: 'zh-hk',
+ // 文档类型pdfdocxpptxxlsxtxtxmlhtml:只能翻译 HTML 里的文本节点,需要通过 JS 动态加载的不进行翻译markdownjpgjpegpngwebp;是否必传:是
+ Type: 'txt',
+ // 原始文档类型仅在 Type=pdf/jpg/jpeg/png/webp 时使用,当值为pdf时,仅支持 docx、pptx当值为jpg/jpeg/png/webp时,仅支持txt;是否必传:否
+ // BasicType: '',
+ },
+ // 操作规则;是否必传:是
+ Operation: {
+ // 翻译参数;是否必传:是
+ Translation: {
+ // 目标语言类型源语言类型为 zh/zh-hk/zh-tw/zh-tr 时支持:en、ar、de、es、fr、id、it、ja、it、ru、ko、km、lo、pt源语言类型为 en 时支持:zh、zh-hk、zh-tw、zh-tr、ar、de、es、fr、id、it、ja、it、ru、ko、km、lo、pt其他类型时支持:zh、zh-hk、zh-tw、zh-tr、en;是否必传:是
+ Lang: 'en',
+ // 文档类型,源文件类型与目标文件类型映射关系如下:docx:docxpptx:pptxxlsx:xlsxtxt:txtxml:xmlhtml:htmlmarkdown:markdownpdf:pdf、docxpng:txtjpg:txtjpeg:txtwebp:txt;是否必传:是
+ Type: 'txt',
+ },
+ // 结果输出地址,当NoNeedOutput为true时非必选;是否必传:否
+ Output: {
+ // 存储桶的地域;是否必传:是
+ Region: config.Region,
+ // 存储结果的存储桶;是否必传:是
+ Bucket: config.Bucket,
+ // 输出结果的文件名;是否必传:是
+ Object: 'ci/trans_test.txt',
+ },
+ // 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ // 仅输出结果,不生成结果文件。取值:true/false。该参数原文档类型为图片时有效。默认值 false;是否必传:否
+ // NoNeedOutput: '',
+ },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 人脸检测
+export const aIDetectFace = {
+ name: '人脸检测',
+ fn: function aIDetectFace() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/1.jpg', // 必须
+ Query: {
+ // 数据万象处理能力,人脸特效固定为 DetectFace。;是否必传:是
+ 'ci-process': 'DetectFace',
+ // 最多处理的人脸数目。默认值为1(仅检测图片中面积最大的那张人脸),最大���为120。此参数用于控制处理待检测图片中的人脸个数,值越小,处理速度越快。;是否必传:否
+ 'max-face-num': 1,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 人脸美颜
+export const FaceBeautify = {
+ name: '人脸美颜',
+ fn: function aIFaceEffect() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-beautify',
+ // type为face-beautify时生效,美白程度,取值范围[0,100]。0不美白,100代表最高程度。默认值30;是否必传:否
+ whitening: 50,
+ // type为face-beautify时生效,磨皮程度,取值范围[0,100]。0不磨皮,100代表最高程度。默认值10;是否必传:否
+ smoothing: 50,
+ // type为face-beautify时生效,瘦脸程度,取值范围[0,100]。0不瘦脸,100代表最高程度。默认值70;是否必传:否
+ faceLifting: 50,
+ // type为face-beautify时生效,大眼程度,取值范围[0,100]。0不大眼,100代表最高程度。默认值70;是否必传:否
+ eyeEnlarging: 50,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 人脸性别转换
+export const FaceGenderTransformation = {
+ name: '人脸性别转换',
+ fn: function FaceGenderTransformation() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-gender-transformation',
+ // type为face-gender-transformation时生效,选择转换方向,0:男变女,1:女变男。无默认值,为必选项。限制:仅对图片中面积最大的人脸进行转换。;是否必传:否
+ gender: 0,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 人脸年龄变化
+export const FaceAgeTransformation = {
+ name: '人脸年龄变化',
+ fn: function FaceAgeTransformation() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-age-transformation',
+ // type 为 face-age-transformation 时生效,变化到的人脸年龄,范围为[10,80],无默认值。注意:仅对图片中面积最大的人脸进行转换
+ age: 40,
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 人像分割
+export const FaceSegmentation = {
+ name: '人像分割',
+ fn: function FaceSegmentation() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-segmentation',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 人体识别
+export const aIBodyRecognition = {
+ name: '人体识别',
+ fn: function aIBodyRecognition() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,人体识别固定为AIBodyRecognition;是否必传:是
+ 'ci-process': 'AIBodyRecognition',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 身份证识别
+export const IDCardOCR = {
+ name: '身份证识别',
+ fn: function IDCardOCR() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/card.jpeg', // 必须
+ Query: {
+ // 数据万象处理能力,身份证识别固定为 IDCardOCR;是否必传:是
+ 'ci-process': 'IDCardOCR',
+ // FRONT:身份证有照片的一面(人像面)BACK:身份证有国徽的一面(国徽面)该参数如果不填,将为您自动判断身份证正反面;是否必传:否
+ CardSide: 'FRONT',
+ // 以下可选字段均为 bool 类型,默认 false:CropIdCard,身份证照片裁剪(去掉证件外多余的边缘、自动矫正拍摄角度)CropPortrait,人像照片裁剪(自动抠取身份证头像区域)CopyWarn,复印件告警BorderCheckWarn,边框和框内遮挡告警ReshootWarn,翻拍告警DetectPsWarn,PS 检测告警TempIdWarn,临时身份证告警InvalidDateWarn,身份证有效日期不合法告警Quality,图片质量分数(评价图片的模糊程度)MultiCardDetect,是否开启多卡证检测参数设置方式参考:Config = {"CropIdCard":true,"CropPortrait":true};是否必传:否
+ // Config: {},
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 实时文字翻译
+export const autoTranslationBlock = {
+ name: '实时文字翻译',
+ fn: function autoTranslationBlock() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Query: {
+ // 数据万象处理能力,文本块翻译固定为 AutoTranslationBlock。;是否必传:是
+ 'ci-process': 'AutoTranslationBlock',
+ // 待翻译的文本;是否必传:是
+ InputText: '我是张三',
+ // 输入语言,如 "zh";是否必传:是
+ SourceLang: 'zh',
+ // 输出语言,如 "en";是否必传:是
+ TargetLang: 'en',
+ // 文本所属业务领域,如: "ecommerce", //缺省值为 general;是否必传:否
+ // TextDomain: '',
+ // 文本类型,如: "title", //缺省值为 sentence;是否必传:否
+ // TextStyle: '',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交一个视频人像抠图任务
+export const postSegmentVideoBody = {
+ name: '提交一个视频人像抠图任务',
+ fn: function postSegmentVideoBody() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:SegmentVideoBody;是否必传:是
+ Tag: 'SegmentVideoBody',
+ // 待操作的对象信息;是否必传:是
+ Input: {
+ // 文件路径;是否必传:是
+ Object: 'ci/tf.mp4',
+ },
+ // 操作规则;是否必传:是
+ Operation: {
+ // 视频人像抠图配置;是否必传:否
+ SegmentVideoBody: {
+ // 抠图模式 Mask:输出alpha通道结果Foreground:输出前景视频Combination:输出抠图后的前景与自定义背景合成后的视频默认值:Mask;是否必传:否
+ Mode: 'Mask',
+ // 抠图类型HumanSeg:人像抠图GreenScreenSeg:绿幕抠图SolidColorSeg:纯色背景抠图默认值:HumanSeg;是否必传:否
+ // SegmentType: '',
+ // mode为 Foreground 时参数生效,背景颜色为红色,取值范围 [0, 255], 默认值为 0;是否必传:否
+ // BackgroundRed: '',
+ // mode为 Foreground 时参数生效,背景颜色为绿色,取值范围 [0, 255],默认值为 0;是否必传:否
+ // BackgroundGreen: '',
+ // mode为 Foreground 时参数生效,背景颜色为蓝色,取值范围 [0, 255],默认值为 0;是否必传:否
+ // BackgroundBlue: '',
+ // 传入背景文件。mode为 Combination 时,此参数必填,背景文件需与源文件在同存储桶下;是否必传:否
+ // BackgroundLogoUrl: '',
+ // 调整抠图的边缘位置,取值范围为[0, 255],默认值为 0;是否必传:否
+ // BinaryThreshold: '',
+ // 纯色背景抠图的背景色(红), 当 SegmentType 为 SolidColorSeg 生效,取值范围为 [0, 255],默认值为 0;是否必传:否
+ // RemoveRed: '',
+ // 纯色背景抠图的背景色(绿), 当 SegmentType 为 SolidColorSeg 生效,取值范围为 [0, 255],默认值为 0;是否必传:否
+ // RemoveGreen: '',
+ // 纯色背景抠图的背景色(蓝), 当 SegmentType 为 SolidColorSeg 生效,取���范围为 [0, 255],默认值为 0;是否必传:否
+ // RemoveBlue: '',
+ },
+ // 结果输出配置;是否必传:是
+ Output: {
+ // 存储桶的地域;是否必传:是
+ Region: config.Region,
+ // 存储结果的存储桶;是否必传:是
+ Bucket: config.Bucket,
+ // 输出结果的文件名;是否必传:是
+ Object: 'ci/ss.mp4',
+ },
+ // 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 图片上色
+export const aIImageColoring = {
+ name: '图片上色',
+ fn: function aIImageColoring() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/1.jpg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,图片上色参固定为AIImageColoring。;是否必传:是
+ 'ci-process': 'AIImageColoring',
+ // 待上色图片url,需要进行urlencode,与ObjectKey二选其一,如果同时存在,则默认以ObjectKey为准;是否必传:否
+ // 'detect-url': '',
+ },
+ RawBody: true,
+ DataType: 'blob',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 图片质量评分
+export const assessQuality = {
+ name: '图片质量评分',
+ fn: function assessQuality() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 必须
+ Query: {
+ // 数据万象处理能力,图像质量检测固定为 AssessQuality。;是否必传:是
+ 'ci-process': 'AssessQuality',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 图像超分
+export const aISuperResolution = {
+ name: '图像超分',
+ fn: function aISuperResolution() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/test.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,只能裁剪参固定为AISuperResolution。;是否必传:否
+ 'ci-process': 'AISuperResolution',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey,detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ },
+ RawBody: true,
+ DataType: 'blob'
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 图像修复
+export const imageRepair = {
+ name: '图像修复',
+ fn: function imageRepair() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/card.jpeg', // 必须
+ Query: {
+ // 固定值:ImageRepair;是否必传:是
+ 'ci-process': 'ImageRepair',
+ // 遮罩(白色区域为需要去除的水印位置)图片地址,私有图片需携带签名,需要经过 URL 安全的 Base64 编码
+ // 比如图片url为 http://test.com/test.jpg
+ MaskPic: COS.util.encodeBase64('http://test.com/test.jpg', true),
+ },
+ RawBody: true,
+ DataType: 'blob',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 图像增强
+export const aIEnhanceImage = {
+ name: '图像增强',
+ fn: function aIEnhanceImage() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/1.jpg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,只能裁剪参固定为 AIEnhanceImage。;是否必传:是
+ 'ci-process': 'AIEnhanceImage',
+ // 去噪强度值,取值范围为 0 - 5 之间的整数,值为 0 时不进行去噪操作,默认值为3。;是否必传:否
+ denoise: 0,
+ // 锐化强度值,取值范围为 0 - 5 之间的整数,值为 0 时不进行锐化操作,默认值为3。;是否必传:否
+ sharpen: 0,
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了detect-url 时,后台会处理 detect-url链接,无需再填写 ObjectKey ,detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为 http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ // ;是否必传:否
+ 'ignore-error': 0,
+ },
+ RawBody: true,
+ DataType: 'blob',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 图像智能裁剪
+export const aIImageCrop = {
+ name: '图像智能裁剪',
+ fn: function aIImageCrop() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,智能裁剪固定为AIImageCrop;是否必传:是
+ 'ci-process': 'AIImageCrop',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ // 需要裁剪区域的宽度,与height共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片宽度的像素值;是否必传:是
+ width: 0,
+ // 需要裁剪区域的高度,与width共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片高度的像素值;width : height建议取值在[1, 2.5]之间,超过这个范围可能会影响效果;是否必传:是
+ height: 0,
+ // 是否严格按照 width 和 height 的值进行输出。取值为0时,宽高比例(width : height)会简化为最简分数,即如果width输入10、height输入20,会简化为1:2;取值为1时,输出图片的宽度等于width,高度等于height;默认值为0;是否必传:否
+ fixed: 0,
+ // 当此参数为1时,针对文件过大等导致处理失败的场景,会直接返回原图而不报错;是否必传:否
+ 'ignore-error': 0,
+ },
+ RawBody: true,
+ DataType: 'blob',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 游戏场景识别
+export const aIGameRec = {
+ name: '游戏场景识别',
+ fn: function aIGameRec() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/game.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,游戏场景识别固定为 AIGameRec;是否必传:是
+ 'ci-process': 'AIGameRec',
+ // 您可以通过填写 detect-url 对任意公网可访问的图片进行游戏场景识别。不填写 detect-url 时,后台会默认处理 objectkey ;填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 objectkey , detect-url 示例:http://www.example.com/abc.jpg。;是否必传:是
+ // 'detect-url': '',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// Logo 识别
+export const recognizeLogo = {
+ name: 'Logo 识别',
+ fn: function recognizeLogo() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/logo.png', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,Logo识别固定为RecognizeLogo;是否必传:是
+ 'ci-process': 'RecognizeLogo',
+ // 待检查图片url,需要进行urlencode;是否必传:是
+ // 'detect-url': '',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
\ No newline at end of file
diff --git a/demo/CIDemos/asr.js b/demo/CIDemos/asr.js
new file mode 100644
index 0000000..d8e9627
--- /dev/null
+++ b/demo/CIDemos/asr.js
@@ -0,0 +1,927 @@
+/**
+ * 智能语音demo集合
+*/
+
+// 查询语音识别开通状态
+export const getAsrBucket = {
+ name: '查询语音识别开通状态',
+ fn: function getAsrBucket() {
+ const key = 'asrbucket'; // 固定值
+ const host = `ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名;是否必传:是
+ // regions: "",
+ // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:是
+ // bucketNames: "",
+ // 存储桶名称前缀,前缀搜索;是否必传:是
+ // bucketName: "",
+ // 第几页;是否必传:是
+ // pageNumber: 1,
+ // 每页个数,大于0且小于等于100的整数;是否必传:是
+ // pageSize: 10,
+ },
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 开通智能语音
+export const CreateAsrBucket = {
+ name: '开通智能语音',
+ fn: function CreateAsrBucket() {
+ const key = 'asrbucket'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 关闭智能语音
+export const DeleteAsrBucket = {
+ name: '关闭智能语音',
+ fn: function DeleteAsrBucket() {
+ const key = 'asrbucket'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ cos.request({
+ Method: 'DELETE', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 查询语音识别队列
+export const getAsrQueue = {
+ name: '查询语音识别队列',
+ fn: function getAsrQueue() {
+ const key = 'asrqueue'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+
+ cos.request({
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 队列 ID,以“,”符号分割字符串;是否必传:否
+ // queueIds: '',
+ // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
+ // state: '',
+ // 第几页,默认值1;是否必传:否
+ // pageNumber: '',
+ // 每页个数,默认值10;是否必传:否
+ // pageSize: '',
+ },
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新语音识别队列
+export const updateAsrQueue = {
+ name: '更新语音识别队列',
+ fn: function updateAsrQueue() {
+ // 任务所在的队列 ID,请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
+ const queueId = 'pcc77499e85c311edb9865254008618d9';
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/asrqueue/' + queueId;
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Name: 'queue-doc-process-1',
+ QueueID: queueId,
+ State: 'Paused',
+ NotifyConfig: {
+ // Url: '',
+ // Type: 'Url',
+ // Event: '',
+ State: 'Off',
+ },
+ },
+ });
+ cos.request({
+ Method: 'PUT',
+ Key: 'asrqueue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交音频降噪任务
+export const postNoiseReduction = {
+ name: '提交音频降噪任务',
+ fn: function postNoiseReduction() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'NoiseReduction',
+ Input: {
+ Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称
+ },
+ Operation: {
+ Output: {
+ Bucket: config.Bucket, // 输出的存储桶
+ Region: config.Region, // 输出的存储桶的地域
+ Object: 'ci/out.mp3', // 输出的文件Key
+ },
+ },
+ // QueueId: '', // 任务所在的队列 ID,非必须
+ // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须
+ // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须
+ // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
+ // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交人声分离任务
+export const postVoiceSeparate = {
+ name: '提交人声分离任务',
+ fn: function postVoiceSeparate() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'VoiceSeparate',
+ Input: {
+ Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称
+ },
+ Operation: {
+ // VoiceSeparate: {}, // 指定转码模板参数,非必须
+ TemplateId: 't17844a8302372436187b425271a0ae33a', // 指定的模板 ID,必须
+ // JobLevel: 0, // 任务优先级,级别限制:0 、1 、2。级别越大任务优先级越高,默认为0,非必须
+ Output: {
+ Bucket: config.Bucket, // 输出的存储桶
+ Region: config.Region, // 输出的存储桶的地域
+ Object: 'ci/out/background.mp3', // 输出的文件Key,背景音结果文件名,不能与 AuObject 同时为空
+ AuObject: 'ci/out/audio.mp3',
+ },
+ },
+ // QueueId: '', // 任务所在的队列 ID,非必须
+ // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须
+ // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须
+ // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
+ // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 创建人声分离模板
+export const postVoiceSeparateTemplete = {
+ name: '创建人声分离模板',
+ fn: function postVoiceSeparateTemplete() {
+ const key = 'template'; // 固定
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型: VoiceSeparate;是否必传:是
+ Tag: 'VoiceSeparate',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_voiceSeparate',
+ // 输出音频IsAudio:输出人声IsBackground:输出背景声AudioAndBackground:输出人声和背景声MusicMode:输出人声、背景声、Bass声、鼓声;是否必传:是
+ AudioMode: 'IsAudio',
+ // 音频配置;是否必传:是
+ AudioConfig: {
+ // 编解码格式,取值 aac、mp3、flac、amr。当 Request.AudioMode 为 MusicMode 时,仅支持 mp3、wav、acc;是否必传:否
+ Codec: 'mp3',
+ // 采样率单位:Hz可选 8000、11025、22050、32000、44100、48000、96000当 Codec 设置为 aac/flac 时,不支持 8000当 Codec 设置为 mp3 时,不支持 8000 和 96000当 Codec 设置为 amr 时,只支持 8000当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
+ // Samplerate: '',
+ // 音频码率单位:Kbps值范围:[8,1000]当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
+ // Bitrate: '',
+ // 声道数当 Codec 设置为 aac/flac,支持1、2、4、5、6、8当 Codec 设置为 mp3,支持1、2 当 Codec 设置为 amr,只支持1当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
+ // Channels: '',
+ },
+ }
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新人声分离模板
+export const updateVoiceSeparateTemplete = {
+ name: '更新人声分离模板',
+ fn: function updateVoiceSeparateTemplete() {
+ const templateId = 't18e592c70a4724b46bdcde4b711c6c0d5'; // 要更新的模版id
+ const key = `template/${templateId}`; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型: VoiceSeparate;是否必传:是
+ Tag: 'VoiceSeparate',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_voiceSeparate2',
+ // 输出音频IsAudio:输出人声IsBackground:输出背景声AudioAndBackground:输出人声和背景声MusicMode:输出人声、背景声、Bass声、鼓声;是否必传:是
+ AudioMode: 'IsAudio',
+ // 音频配置;是否必传:是
+ AudioConfig: {
+ // 编解码格式,取值 aac、mp3、flac、amr。当 Request.AudioMode 为 MusicMode 时,仅支持 mp3、wav、acc;是否必传:否
+ Codec: 'mp3',
+ // 采样率单位:Hz可选 8000、11025、22050、32000、44100、48000、96000当 Codec 设置为 aac/flac 时,不支持 8000当 Codec 设置为 mp3 时,不支持 8000 和 96000当 Codec 设置为 amr 时,只支持 8000当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
+ // Samplerate: '',
+ // 音频码率单位:Kbps值范围:[8,1000]当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
+ // Bitrate: '',
+ // 声道数当 Codec 设置为 aac/flac,支持1、2、4、5、6、8当 Codec 设置为 mp3,支持1、2 当 Codec 设置为 amr,只支持1当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
+ // Channels: '',
+ },
+ }
+ });
+
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交一个语音合成任务
+export const postVoiceSynthesis = {
+ name: '提交一个语音合成任务',
+ fn: function postVoiceSynthesis() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:Tts;是否必传:是
+ Tag: 'Tts',
+ // 操作规则;是否必传:是
+ Operation: {
+ // 语音合成模板 ID; 与TtsTpl二选一传递
+ TemplateId: 't1958211407ca54ebc8c78060a7f2ba564',
+ // 语音合成参数; 与TemplateId二选一传递
+ // TtsTpl: {
+ // // 同创建语音合成模板接口中的 Request.Mode;是否必传:否
+ // Mode: '',
+ // // 同创建语音合成模板接口中的 Request.Codec;是否必传:否
+ // Codec: '',
+ // // 同创建语音合成模板接口中的 Request.VoiceType;是否必传:否
+ // VoiceType: '',
+ // // 同创建语音合成模板接口中的 Request.Volume;是否必传:否
+ // Volume: '',
+ // // 同创建语音合成模板接口中的 Request.Speed;是否必传:否
+ // Speed: '',
+ // // 同创建语音合成模板接口中的 Request.Emotion;是否必传:否
+ // Emotion: '',
+ // },
+ // 语音合成任务参数;是否必传:是
+ TtsConfig: {
+ // 输入类型,Url/Text;是否必传:是
+ InputType: 'Text',
+ // 当 InputType 为 Url 时, 必须是合法的 COS 地址,文件必须是utf-8编码,且大小不超过 10M。如果合成方式为同步处理,则文件内容不超过 300 个 utf-8 字符;如果合成方式为异步处理,则文件内容不超过 10000 个 utf-8 字符。当 InputType 为 Text 时, 输入必须是 utf-8 字符, 且不超过 300 个字符。;是否必传:是
+ Input: '床前明月光,疑是地上霜',
+ },
+ // 结果输出配置;是否必传:是
+ Output: {
+ // 存储桶的地域;是否必传:是
+ Region: config.Region,
+ // 存储结果的存储桶;是否必传:是
+ Bucket: config.Bucket,
+ // 结果文件名;是否必传:是
+ Object: 'ci/tts.mp3',
+ },
+ // 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 创建语音合成模板
+export const postVoiceSynthesisTemplete = {
+ name: '创建语音合成模板',
+ fn: function postVoiceSynthesisTemplete() {
+ const key = 'template'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型:Tts;是否必传:是
+ Tag: 'Tts',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_tts',
+ // 处理模式Asyc(异步合成)Sync(同步合成);是否必传:否
+ // Mode: 'Asyc',
+ // 音频格式,支持 wav、mp3、pcm ;是否必传:否
+ // Codec: 'pcm',
+ // 音色,取值和限制介绍请见下表;是否必传:否
+ // VoiceType: 'ruxue',
+ // 音量,取值范围 [-10,10];是否必传:否
+ // Volume: '0',
+ // 语速,取值范围 [50,200];是否必传:否
+ // Speed: '100',
+ // 情绪,不同音色支持的情绪不同,详见下表;是否必传:否
+ // Emotion: '',
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新语音合成模板
+export const updateVoiceSynthesisTemplete = {
+ name: '更新语音合成模板',
+ fn: function updateVoiceSynthesisTemplete() {
+ const templateId = 'xxxx'; // 要更新的模板id
+ const key = `template/${templateId}`; // 固定格式
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型:Tts;是否必传:是
+ Tag: 'Tts',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_tts2',
+ // 处理模式Asyc(异步合成)Sync(同步合成);是否必传:否
+ Mode: 'Asyc',
+ // 音频格式,支持 wav、mp3、pcm ;是否必传:否
+ Codec: 'pcm',
+ // 音色,取值和限制介绍请见下表;是否必传:否
+ VoiceType: 'ruxue',
+ // 音量,取值范围 [-10,10];是否必传:否
+ Volume: '0',
+ // 语速,取值范围 [50,200];是否必传:否
+ Speed: '100',
+ // 情绪,不同音色支持的情绪不同,详见下表;是否必传:否
+ Emotion: '无',
+ },
+ });
+
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交语音识别任务
+export const postSpeechRecognition = {
+ name: '提交语音识别任务',
+ fn: function postSpeechRecognition() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'SpeechRecognition',
+ Input: {
+ Object: 'ci/music.mp3', // 文件名,取值为文件在当前存储桶中的完整名称,与Url参数二选一
+ // Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/music.mp3', // 病毒文件的链接地址,与Object参数二选一
+ },
+ Operation: {
+ SpeechRecognition: {
+ EngineModelType: '16k_zh_video', // 引擎模型类型
+ ChannelNum: 1, // 语音声道数
+ ResTextFormat: 0, // 识别结果返回形式
+ FilterDirty: 1, // 是否过滤脏词(目前支持中文普通话引擎)
+ FilterModal: 1, // 是否过语气词(目前支持中文普通话引擎)
+ ConvertNumMode: 0, // 是否进行阿拉伯数字智能转换(目前支持中文普通话引擎)
+ },
+ Output: {
+ Bucket: config.Bucket, // 输出的存储桶
+ Region: config.Region, // 输出的存储桶的地域
+ Object: 'ci/out/SpeechRecognition.mp3', // 输出的文件Key
+ },
+ },
+ // QueueId: '', // 任务所在的队列 ID,非必须
+ // CallBackFormat: '', // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式,非必须
+ // CallBackType: '', // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型,非必须
+ // CallBack: '', // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调,非必须
+ // CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: key,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 创建语音识别模板
+export const postSpeechRecognitionTemplete = {
+ name: '创建语音识别模板',
+ fn: function postSpeechRecognitionTemplete() {
+ const key = 'template'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型:SpeechRecognition;是否必传:是
+ Tag: 'SpeechRecognition',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_speechRecognition',
+ // 语音识别参数;是否必传:是
+ SpeechRecognition: {
+ // 开启极速ASR,取值 true/false;是否必传:否
+ FlashAsr: 'false',
+ // 引擎模型类型,分为电话场景和非电话场景。电话场景:8k_zh:电话 8k 中文普通话通用(可用于双声道音频)8k_zh_s:电话 8k 中文普通话话者分离(仅适用于单声道音频)8k_en:电话 8k 英语 非电话场景: 6k_zh:16k 中文普通话通用16k_zh_video:16k 音视频领域16k_en:16k 英语16k_ca:16k 粤语16k_ja:16k 日语16k_zh_edu:中文教育16k_en_edu:英文教育16k_zh_medical:医疗16k_th:泰语16k_zh_dialect:多方言,支持23种方言极速 ASR 支持8k_zh、16k_zh、16k_en、16k_zh_video、16k_zh_dialect、16k_ms(马来语)、16k_zh-PY(中英粤);是否必传:是
+ EngineModelType: '16k_zh',
+ // 语音声道数:1 表示单声道。EngineModelType为非电话场景仅支持单声道2 表示双声道(仅支持 8k_zh 引擎模型 双声道应分别对应通话双方)仅���持非极速ASR,为非极速ASR时,该参数必填;是否必传:否
+ ChannelNum: '1',
+ // 识别结果返回形式:0:识别结果文本(含分段时间戳)1:词级别粒度的详细识别结果,不含标点,含语速值(词时间戳列表,一般用于生成字幕场景)2:词级别粒度的详细识别结果(包含标点、语速值)3:标点符号分段,包含每段时间戳,特别适用于字幕场景(包含词级时间、标点、语速值)仅支持非极速ASR;是否必传:否
+ // ResTextFormat: '0',
+ // 是否过滤脏词(目前支持中文普通话引擎)0:不过滤脏词1:过滤脏词2:将脏词替换为 *;是否必传:否
+ // FilterDirty: '0',
+ // 是否过滤语气词(目前支持中文普通话引擎):0 表示不过滤语气词1 表示部分过滤2 表示严格过滤 ;是否必传:否
+ // FilterModal: '0',
+ // 是否进行阿拉伯数字智能转换(目前支持中文普通话引擎)0:不转换,直接输出中文数字1:根据场景智能转换为阿拉伯数字3 :打开数学相关数字转换仅支持非极速ASR;是否必传:否
+ // ConvertNumMode: '0',
+ // 是否开启说话人分离0:不开启1:开启(仅支持8k_zh,16k_zh,16k_zh_video,单声道音频)8k电话场景建议使用双声道来区分通话双方,设置ChannelNum=2即可,不用开启说话人分离。;是否必传:否
+ // SpeakerDiarization: '0',
+ // 说话人分离人数(需配合开启说话人分离使用),取值范围:[0, 10]0 代表自动分离(目前仅支持≤6个人)1-10代表指定说话人数分离仅支持非极速ASR;是否必传:否
+ // SpeakerNumber: '',
+ // 是否过滤标点符号(目前支持中文普通话引擎)0:不过滤。1:过滤句末标点2:过滤所有标点;是否必传:否
+ // FilterPunc: '',
+ // 输出文件类型,可选txt、srt极速ASR仅支持txt非极速Asr且ResTextFormat为3时仅支持txt;是否必传:否
+ // OutputFileType: '',
+ // 极速ASR音频格式,支持 wav、pcm、ogg-opus、speex、silk、mp3、m4a、aac极速ASR时,该参数必填;是否必传:否
+ // Format: '',
+ // 是否识别首个声道0:识别所有声道1:识别首个声道仅支持极速ASR;是否必传:否
+ // FirstChannelOnly: '',
+ // 是否显示词级别时间戳0:不显示1:显示,不包含标点时间戳2:显示,包含标点时间戳仅支持极速ASR;是否必传:否
+ // WordInfo: '',
+ // 单标点最多字数,取值范围:[6,40]默认值为 0 表示不开启该功能该参数可用于字幕生成场景,控制单行字幕最大字数当FlashAsr为false时,仅ResTextFormat为3时参数有效;是否必传:否
+ // SentenceMaxLength: '',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新语音识别模板
+export const updateSpeechRecognitionTemplete = {
+ name: '更新语音识别模板',
+ fn: function updateSpeechRecognitionTemplete() {
+ const templateId = 'xxxxx'; // 要更新的模板id
+ const key = `template/${templateId}`; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 模板类型:SpeechRecognition;是否必传:是
+ Tag: 'SpeechRecognition',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64;是否必传:是
+ Name: 'my_speechRecognition',
+ // 语音识别参数;是否必传:是
+ SpeechRecognition: {
+ // 开启极速ASR,取值 true/false;是否必传:否
+ FlashAsr: 'true',
+ // 引擎模型类型,分为电话场景和非电话场景。电话场景:8k_zh:电话 8k 中文普通话通用(可用于双声道音频)8k_zh_s:电话 8k 中文普通话话者分离(仅适用于单声道音频)8k_en:电话 8k 英语 非电话场景: 6k_zh:16k 中文普通话通用16k_zh_video:16k 音视频领域16k_en:16k 英语16k_ca:16k 粤语16k_ja:16k 日语16k_zh_edu:中文教育16k_en_edu:英文教育16k_zh_medical:医疗16k_th:泰语16k_zh_dialect:多方言,支持23种方言极速 ASR 支持8k_zh、16k_zh、16k_en、16k_zh_video、16k_zh_dialect、16k_ms(马来语)、16k_zh-PY(中英粤);是否必传:是
+ EngineModelType: '16k_zh',
+ // 语音声道数:1 表示单声道。EngineModelType为非电话场景仅支持单声道2 表示双声道(仅支持 8k_zh 引擎模型 双声道应分别对应通话双方)仅���持非极速ASR,为非极速ASR时,该参数必填;是否必传:否
+ ChannelNum: '2',
+ // 识别结果返回形式:0:识别结果文本(含分段时间戳)1:词级别粒度的详细识别结果,不含标点,含语速值(词时间戳列表,一般用于生成字幕场景)2:词级别粒度的详细识别结果(包含标点、语速值)3:标点符号分段,包含每段时间戳,特别适用于字幕场景(包含词级时间、标点、语速值)仅支持非极速ASR;是否必传:否
+ // ResTextFormat: '',
+ // 是否过滤脏词(目前支持中文普通话引擎)0:不过滤脏词1:过滤脏词2:将脏词替换为 *;是否必传:否
+ // FilterDirty: '',
+ // 是否过滤语气词(目前支持中文普通话引擎):0 表示不过滤语气词1 表示部分过滤2 表示严格过滤 ;是否必传:否
+ // FilterModal: '',
+ // 是否进行阿拉伯数字智能转换(目前支持中文普通话引擎)0:不转换,直接输出中文数字1:根据场景智能转换为阿拉伯数字3 :打开数学相关数字转换仅支持非极速ASR;是否必传:否
+ // ConvertNumMode: '',
+ // 是否开启说话人分离0:不开启1:开启(仅支持8k_zh,16k_zh,16k_zh_video,单声道音频)8k电话场景建议使用双声道来区分通话双方,设置ChannelNum=2即可,不用开启说话人分离。;是否必传:否
+ // SpeakerDiarization: '',
+ // 说话人分离人数(需配合开启说话人分离使用),取值范围:[0, 10]0 代表自动分离(目前仅支持≤6个人)1-10代表指定说话人数分离仅支持非极速ASR;是否必传:否
+ // SpeakerNumber: '',
+ // 是否过滤标点符号(目前支持中文普通话引擎)0:不过滤。1:过滤句末标点2:过滤所有标点;是否必传:否
+ // FilterPunc: '',
+ // 输出文件类型,可选txt、srt极速ASR仅支持txt非极速Asr且ResTextFormat为3时仅支持txt;是否必传:否
+ // OutputFileType: '',
+ // 极速ASR音频格式,支持 wav、pcm、ogg-opus、speex、silk、mp3、m4a、aac极速ASR时,该参数必填;是否必传:否
+ // Format: '',
+ // 是否识别首个声道0:识别所有声道1:识别首个声道仅支持极速ASR;是否必传:否
+ // FirstChannelOnly: '',
+ // 是否显示词级别时间戳0:不显示1:显示,不包含标点时间戳2:显示,包含标点时间戳仅支持极速ASR;是否必传:否
+ // WordInfo: '',
+ // 单标点最多字数,取值范围:[6,40]默认值为 0 表示不开启该功能该参数可用于字幕生成场景,控制单行字幕最大字数当FlashAsr为false时,仅ResTextFormat为3时参数有效;是否必传:否
+ // SentenceMaxLength: '',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 创建音频降噪模版
+export const postNoiseReductionTemplete = {
+ name: '创建音频降噪模版',
+ fn: function postNoiseReductionTemplete() {
+ const key = 'template'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 固定值:NoiseReduction;是否必传:是
+ Tag: 'NoiseReduction',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64。;是否必传:是
+ Name: 'my_noiseReduction',
+ // 降噪参数;是否必传:是
+ NoiseReduction: {
+ // 封装格式,支持 mp3、m4a、wav;是否必传:否
+ Format: 'mp3',
+ // 采样率单位:Hz可选 8000、12000、16000、24000、32000、44100、48000;是否必传:否
+ // Samplerate: '',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 更新音频降噪模板
+export const updateNoiseReductionTemplete = {
+ name: '更新音频降噪模板',
+ fn: function updateNoiseReductionTemplete() {
+ const templateId = 'xxxxx'; // 要更新的模板id
+ const key = `template/${templateId}`; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 固定值:NoiseReduction;是否必传:是
+ Tag: 'NoiseReduction',
+ // 模板名称,仅支持中文、英文、数字、_、-和*,长度不超过 64。;是否必传:是
+ Name: 'my_noiseReduction2',
+ // 降噪参数;是否必传:是
+ NoiseReduction: {
+ // 封装格式,支持 mp3、m4a、wav;是否必传:否
+ Format: 'mp3',
+ // 采样率单位:Hz可选 8000、12000、16000、24000、32000、44100、48000;是否必传:否
+ // Samplerate: '',
+ },
+ },
+ });
+
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 提交听歌识曲任务
+export const postSoundHound = {
+ name: '提交听歌识曲任务',
+ fn: function postSoundHound() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:SoundHound;是否必传:是
+ Tag: 'SoundHound',
+ // 待操作的对象信息;是否必传:是
+ Input: {
+ // 文件路径;是否必传:是
+ Object: 'ci/music.mp3',
+ },
+ // 操作规则;是否必传:是
+ // Operation: {
+ // 透���用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ // },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 音乐评分
+export const vocalScore = {
+ name: '音乐评分',
+ fn: function vocalScore() {
+ const key = 'jobs'; // 固定值
+ const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ // 创建任务的 Tag:VocalScore;是否必传:是
+ Tag: 'VocalScore',
+ // 待操作的对象信息;是否必传:是
+ Input: {
+ // 文件路径;是否必传:否
+ Object: 'ci/music.mp3',
+ },
+ // 操作规则;是否必传:是
+ Operation: {
+ // 音乐评分参数配置;是否必传:是
+ VocalScore: {
+ // 比对基准文件路径;是否必传:否
+ StandardObject: 'ci/base.mp3',
+ },
+ // 透传用户信息, 可打印的 ASCII 码, 长度不超过1024;是否必传:否
+ // UserData: '',
+ // 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
+ // JobLevel: '',
+ },
+ // 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
+ // CallBackFormat: '',
+ // 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
+ // CallBackType: '',
+ // 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
+ // CallBack: '',
+ // 任务回调TDMQ配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig;是否必传:否
+ // CallBackMqConfig: {
+ // 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);是否必传:是
+ // MqRegion: '',
+ // 消息队列使用模式,默认 Queue :主题订阅:Topic队列服务: Queue;是否必传:是
+ // MqMode: '',
+ // TDMQ 主题名称;是否必传:是
+ // MqName: '',
+ // },
+ },
+ });
+
+ cos.request({
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
\ No newline at end of file
diff --git a/demo/CIDemos/audit.js b/demo/CIDemos/audit.js
new file mode 100644
index 0000000..04d816a
--- /dev/null
+++ b/demo/CIDemos/audit.js
@@ -0,0 +1,537 @@
+/**
+ * 内容审核demo集合
+*/
+
+// 图片同步审核
+export const getImageAuditing = {
+ name: '图片同步审核',
+ fn: function getImageAuditing() {
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '1.png', // 与detect-url二选一传递
+ Query: {
+ 'ci-process': 'sensitive-content-recognition', // 固定值,必须
+ 'biz-type': '', // 审核类型,非必须
+ 'detect-url': '', // 审核任意公网可访问的图片链接,非必须
+ interval: 5, // 审核 GIF 动图时,每隔interval帧截取一帧,非必须
+ 'max-frames': 5, // 审核 GIF 动图时,最大截帧数,非必须
+ 'large-image-detect': '0', // 是否需要压缩图片后再审核,非必须
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 图片批量审核
+export const postImagesAuditing = {
+ name: '图片批量审核',
+ fn: function postImagesAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/image/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Input: [
+ {
+ Object: '1.png',
+ },
+ {
+ Object: '6.png',
+ },
+ ],
+ Conf: {
+ BizType: '',
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: 'image/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询图片审核任务结果
+export const getImageAuditingResult = {
+ name: '查询图片审核任务结果',
+ fn: function getImageAuditingResult() {
+ const jobId = 'si8263213daf3711eca0d1525400d88xxx'; // jobId可以通过图片批量审核返回
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/image/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/image/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 反馈处理结果
+export const reportBadCase = {
+ name: '反馈处理结果',
+ fn: function reportBadCase() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const key = 'report/badcase';
+ const url = `https://${host}/${key}`;
+ const body = COS.util.json2xml({
+ Request: {
+ ContentType: 2,
+ Url: 'https://example.com/desample_photo.jpg',
+ Label: 'Porn',
+ SuggestedLabel: 'Normal',
+ // JobId: '',
+ // ModerationTime: '',
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: key,
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交视频审核任务
+export const postVideoAuditing = {
+ name: '提交视频审核任务',
+ fn: function postVideoAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/video/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Input: {
+ Object: '1.mp4',
+ },
+ Conf: {
+ BizType: '',
+ Snapshot: {
+ Count: 1000, // 视频截帧数量
+ },
+ DetectContent: 1, // 是否审核视频声音,0-只审核视频不审核声音;1-审核视频+声音
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/video/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询视频审核任务结果
+export const getVideoAuditingResult = {
+ name: '查询视频审核任务结果',
+ fn: function getVideoAuditingResult() {
+ const jobId = 'av14d9ca15af3a11eca0d6525400d88xxx'; // jobId可以通过提交视频审核任务返回
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/video/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/video/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交音频审核任务
+export const postAudioAuditing = {
+ name: '提交音频审核任务',
+ fn: function postAudioAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/audio/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Input: {
+ Object: '1.mp3',
+ },
+ Conf: {
+ BizType: '',
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/audio/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询音频审核任务结果
+export const getAudioAuditingResult = {
+ name: '查询音频审核任务结果',
+ fn: function getAudioAuditingResult() {
+ const jobId = 'sa0c28d41daff411ecb23352540078cxxx'; // jobId可以通过提交音频审核任务返回
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/audio/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/audio/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交文本审核任务
+export const postTextAuditing = {
+ name: '提交文本审核任务',
+ fn: function postTextAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/text/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Input: {
+ // Content: COS.util.encodeBase64('乳沟'), // 经过base64编码过的文本”乳沟“,查询结果同步返回
+ Object: '中文.txt', // 存在cos里的资源,审核结果异步返回,可以调用查询文本审核结果api查询
+ },
+ Conf: {
+ BizType: '',
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/text/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询文本审核任务结果
+export const getTextAuditingResult = {
+ name: '查询文本审核任务结果',
+ fn: function getTextAuditingResult() {
+ const jobId = 'st8d88c664aff511ecb23352540078cxxx'; // jobId可以通过提交文本审核任务返回(Input传入Object)
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/text/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/text/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交文档审核任务
+export const postDocumentAuditing = {
+ name: '提交文档审核任务',
+ fn: function postDocumentAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/document/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Input: {
+ Object: 'test.xlsx', // 存在cos里的资源,审核结果异步返回,可以调用查询文本审核结果api查询
+ },
+ Conf: {
+ BizType: '',
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/document/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询文档审核任务结果
+export const getDocumentAuditingResult = {
+ name: '查询文档审核任务结果',
+ fn: function getDocumentAuditingResult() {
+ const jobId = 'sd7815c21caff611eca12f525400d88xxx'; // jobId可以通过提交文档审核任务返回
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/document/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/document/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交网页审核任务
+export const postWebpageAuditing = {
+ name: '提交网页审核任务',
+ fn: function postWebpageAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/webpage/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Input: {
+ Url: 'https://cloud.tencent.com/', // 存在cos里的资源,审核结果异步返回,可以调用查询文本审核结果api查询
+ },
+ Conf: {
+ BizType: '',
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/webpage/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询网页审核任务结果
+export const getWebpageAuditingResult = {
+ name: '查询网页审核任务结果',
+ fn: function getWebpageAuditingResult() {
+ const jobId = 'shce868019aff611ecb1155254009a4xxx'; // jobId可以通过提交网页审核任务返回
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/webpage/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/webpage/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交直播审核任务
+export const postLiveAuditing = {
+ name: '提交直播审核任务',
+ fn: function postLiveAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/video/auditing';
+ const body = COS.util.json2xml({
+ Request: {
+ Type: 'live_video',
+ Input: {
+ Url: 'rtmp://example.com/live/123', // 需要审核的直播流播放地址
+ // DataId: '',
+ // UserInfo: {},
+ },
+ Conf: {
+ BizType: '766d07a7af937c26216c51db29793ea6',
+ // Callback: 'https://callback.com', // 回调地址,非必须
+ // CallbackType: 1, // 回调片段类型,非必须
+ },
+ },
+ });
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/video/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询直播审核任务结果
+export const getLiveAuditingResult = {
+ name: '查询直播审核任务结果',
+ fn: function getLiveAuditingResult() {
+ const jobId = 'av0ca69557bd6111ed904c5254009411xx'; // jobId可以通过提交直播审核任务返回
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const url = 'https://' + host + '/video/auditing/' + jobId;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/video/auditing/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 取消直播审核
+export const cancelLiveAuditing = {
+ name: '取消直播审核',
+ fn: function cancelLiveAuditing() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
+ const jobId = 'av8088af71359c11eeb17c525400941xxx';
+ const key = `video/cancel_auditing/${jobId}`;
+ const url = `https://${host}/${key}`;
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: key,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
\ No newline at end of file
diff --git a/demo/CIDemos/common.js b/demo/CIDemos/common.js
new file mode 100644
index 0000000..0bc2c7e
--- /dev/null
+++ b/demo/CIDemos/common.js
@@ -0,0 +1,177 @@
+/**
+ * 其他demo集合
+*/
+
+// 开通数据万象
+export const createCIBucket = {
+ name: '开通数据万象',
+ fn: function createCIBucket() {
+ const host = `${config.Bucket}.pic.${config.Region}.myqcloud.com`;
+ const url = `https://${host}`;
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Url: url, // 请求的url,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+
+// 关闭数据万象
+export const deleteCIBucket = {
+ name: '关闭数据万象',
+ fn: function deleteCIBucket() {
+ const host = `${config.Bucket}.pic.${config.Region}.myqcloud.com`;
+ const url = `https://${host}`;
+ cos.request({
+ Method: 'PUT', // 固定值,必须
+ Url: url, // 请求的url,必须
+ Action: 'unbind'// 固定值
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
+ });
+ }
+};
+
+// 查询查询数据处理服务
+export const queryCIBucket = {
+ name: '查询查询数据处理服务',
+ fn: function queryCIBucket() {
+ const host = `${config.Bucket}.pic.${config.Region}.myqcloud.com`;
+ const url = `https://${host}`;
+ cos.request({
+ Method: 'GET', // 固定值,必须
+ Url: url, // 请求的url,必须
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交病毒检测任务
+export const postVirusDetect = {
+ name: '提交病毒检测任务',
+ fn: function postVirusDetect() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect';
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Input: {
+ Object: 'test/1.png', // 文件名,取值为文件在当前存储桶中的完整名称,与Url参数二选一
+ // Url: 'http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/virus.doc', // 病毒文件的链接地址,与Object参数二选一
+ },
+ Conf: {
+ DetectType: 'Virus', // 检测的病毒类型,当前固定为:Virus
+ // CallBack: 'http://callback.demo.com', // 任务回调的地址
+ },
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'virus/detect',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询病毒检测任务结果
+export const getVirusDetectResult = {
+ name: '查询病毒检测任务结果',
+ fn: function getVirusDetectResult() {
+ const jobId = 'ssdb2dab23bcdb11ed9efb5254009411xx'; // 提交病毒检测任务后会返回当前任务的jobId
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect/' + jobId;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'virus/detect/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询防盗链
+export const describeRefer = {
+ name: '查询防盗链',
+ fn: function describeRefer() {
+ const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 设置防盗链
+export const setRefer = {
+ name: '设置防盗链',
+ fn: function setRefer() {
+ const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Hotlink: {
+ Url: 'https://www.example.com', // 必须,域名地址
+ Type: 'white', // 必须,防盗链类型,white 为白名单,black 为黑名单,off 为关闭。
+ },
+ });
+ cos.request({
+ Method: 'PUT',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
\ No newline at end of file
diff --git a/demo/CIDemos/docPreview.js b/demo/CIDemos/docPreview.js
new file mode 100644
index 0000000..54c016a
--- /dev/null
+++ b/demo/CIDemos/docPreview.js
@@ -0,0 +1,281 @@
+/**
+ * 文档预览demo集合
+*/
+
+// 查询已经开通文档预览的存储桶
+export const describeDocProcessBuckets = {
+ name: '查询已经开通文档预览的存储桶',
+ fn: function describeDocProcessBuckets() {
+ const host = 'ci.' + config.Region + '.myqcloud.com/docbucket';
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'docbucket',
+ Url: url,
+ Query: {
+ // regions: '', // 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing
+ // bucketNames: '', // 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
+ // bucketName: '', // 非必须,存储桶名称前缀,前缀搜索
+ // pageNumber: 1, // 非必须,第几页
+ // pageSize: 10, // 非必须,每页个数
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 文档转码同步请求
+export const getDocPreview = {
+ name: '文档转码同步请求',
+ fn: function getDocPreview() {
+ cos.getObjectUrl({
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: '1/文档.docx',
+ Query: {
+ 'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
+ srcType: 'docx', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
+ // page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
+ // dstType: '', // 非必须,转换输出目标文件类型
+ },
+ DataType: 'blob',
+ }, function (err, data) {
+ if (err) {
+ console.log(err);
+ } else {
+ // Body为转码后的内容 可展示在img里 比如
+ const body = data.Body;
+ // const url = URL.createObjectURL(body);
+ // const img = document.getElementById('image');
+ // img.src = url;
+ // 获取总页数(需要在跨域配置的Expose-Headers配置需要暴露出的头部 比如下方的X-Total-Page)
+ // 跨域配置可参考文档 https://cloud.tencent.com/document/product/436/13318
+ const totalPage = data.headers['X-Total-Page'];
+ }
+ });
+ }
+};
+
+// 查询文档转码队列
+export const describeDocProcessQueues = {
+ name: '查询文档转码队列',
+ fn: function describeDocProcessQueues() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue';
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'docqueue',
+ Url: url,
+ Query: {
+ // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
+ // state: '', // 非必须,1=Active,2=Paused
+ // pageNumber: 1, // 非必须,第几页
+ // pageSize: 2, // 非必须,每页个数
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 更新文档预览队列
+export const updateDocProcessQueue = {
+ name: '更新文档预览队列',
+ fn: function updateDocProcessQueue() {
+ // 任务所在的队列 ID,请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
+ const queueId = 'pa2e2c3d3fae042de909cafc16f1d801b'; // 替换成自己的队列id
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue/' + queueId;
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Name: 'queue-doc-process-1', // 替换成自己的队列name
+ QueueID: queueId,
+ State: 'Active',
+ NotifyConfig: {
+ State: 'Off',
+ },
+ },
+ });
+ cos.request({
+ Method: 'PUT',
+ Key: 'docqueue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交文档转码任务
+export const createDocProcessJobs = {
+ name: '提交文档转码任务',
+ fn: function createDocProcessJobs() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'DocProcess',
+ Input: {
+ Object: '1/文档.docx', // 存在cos里的路径
+ },
+ Operation: {
+ DocProcess: {
+ TgtType: 'jpg',
+ },
+ Output: {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Object: '1/文档转码_${Number}.jpg', // 转码后存到cos的路径
+ },
+ },
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'doc_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+
+// 查询指定的文档预览任务
+export const describeDocProcessJob = {
+ name: '查询指定的文档预览任务',
+ fn: function describeDocProcessJob() {
+ const jobId = 'd87fbabd07b8611ed974b3f4b40648xxx'; // 替换成自己的jogId
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs/' + jobId;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'doc_jobs/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 拉取符合条件的文档预览任务
+export const describeDocProcessJobs = {
+ name: '拉取符合条件的文档预览任务',
+ fn: function describeDocProcessJobs() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'doc_jobs',
+ Url: url,
+ Query: {
+ tag: 'DocProcess',
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 文档转 HTML
+export const getDocHtmlUrl = {
+ name: '文档转 HTML',
+ fn: function getDocHtmlUrl() {
+ cos.getObjectUrl({
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: '1/文档.docx',
+ Query: {
+ 'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
+ // srcType: '', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
+ // page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
+ dstType: 'html', // 非必须,转换输出目标文件类型
+ },
+ }, function (err, data) {
+ if (err) {
+ console.log(err);
+ } else {
+ // 使用浏览器打开url即可预览
+ const url = data.Url;
+ console.log(url);
+ }
+ });
+ }
+};
+
+// 获取在线文档预览地址
+export const getDocHtmlPreviewUrl = {
+ name: '获取在线文档预览地址',
+ fn: function getDocHtmlPreviewUrl() {
+ const key = 'test.pdf';
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ RawBody: true,
+ Query: {
+ 'ci-process': 'doc-preview', // 必须,预览固定参数,值为 doc-preview
+ dstType: 'html', // 必须,预览类型,如需预览生成类型为 html 则填入 html
+ weboffice_url: 1, // 非必须,是否获取预览链接。填入值为1会返回预览链接和Token信息;填入值为2只返回Token信息;不传会直接预览
+ },
+ }, function (err, data) {
+ // 从响应数据中解析出在线文档预览地址
+ let body = {};
+ if (data && data.Body) {
+ body = JSON.parse(data.Body) || {};
+ }
+ if (body && body.PreviewUrl) {
+ data.PreviewUrl = body.PreviewUrl;
+ }
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
\ No newline at end of file
diff --git a/demo/CIDemos/fileProcess.js b/demo/CIDemos/fileProcess.js
new file mode 100644
index 0000000..c6384b8
--- /dev/null
+++ b/demo/CIDemos/fileProcess.js
@@ -0,0 +1,383 @@
+/**
+ * 文件处理demo集合
+*/
+
+// 开通文件处理服务
+export const createFileProcessBucket = {
+ name: '开通文件处理服务',
+ fn: function createFileProcessBucket() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_bucket';
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'POST',
+ Key: 'file_bucket',
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询文件处理服务
+export const DescribeFileProcessBuckets = {
+ name: '查询文件处理服务',
+ fn: function DescribeFileProcessBuckets() {
+ const key = 'file_bucket';
+ const host = 'ci.' + config.Region + '.myqcloud.com/' + key;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: key,
+ Url: url,
+ Query: {
+ // regions: '', // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名
+ // bucketNames: '', // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
+ // bucketName: '', // 存储桶名称前缀,前缀搜索
+ // pageNumber: '', // 第几页
+ // pageSize: '', // 每页个数,大于0且小于等于100的整数
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 关闭文件处理服务
+export const DeleteFileProcessBucket = {
+ name: '关闭文件处理服务',
+ fn: function DeleteFileProcessBucket() {
+ const key = 'file_bucket';
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/' + key;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'Delete',
+ Key: key,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交文件压缩任务
+export const postFileCompress = {
+ name: '提交文件压缩任务',
+ fn: function postFileCompress() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'FileCompress', // 必须
+ Operation: {
+ FileCompressConfig: {
+ Flatten: '0', // 文件打包时,是否需要去除源文件已有的目录结构.0:不需要;1:需要
+ Format: 'zip', // 打包压缩的类型,有效值:zip、tar、tar.gz
+ // UrlList、Prefix、Key 三者仅能选择一个,不能都为空,也不会同时生效
+ // UrlList: '', // 索引文件的对象地址
+ Prefix: 'testCompress/', // 目录前缀
+ // Key: [], // 支持对存储桶中的多个文件进行打包,个数不能超过 1000, 总大小不超过50G,否则会导致任务失败
+ },
+ Output: {
+ Bucket: config.Bucket, // 保存压缩后文件的存储桶
+ Region: config.Region, // 保存压缩后文件的存储桶地域
+ Object: 'testCompress/compressed.zip', // 压缩后文件的文件名
+ },
+ UserData: '',
+ },
+ // QueueId: '', // 任务所在的队列 ID
+ // CallBack: 'http://callback.demo.com', // 任务回调的地址
+ // CallBackFormat: 'JSON', // 任务回调格式
+ // CallBackType: 'Url', // 任务回调类型,Url 或 TDMQ,默认 Url
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'file_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询文件压缩任务结果
+export const getFileCompress = {
+ name: '查询文件压缩任务结果',
+ fn: function getFileCompress() {
+ const jobId = 'faf1d2774a13911ed88a65b0c303ae7xx'; // 提交文件压缩任务后会返回当前任务的jobId
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'file_jobs/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交文件解压任务
+export const postFileUnCompress = {
+ name: '提交文件解压任务',
+ fn: function postFileUnCompress() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'FileUncompress', // 必须
+ Input: {
+ Object: 'testCompress/compressed.zip', // 文件名,取值为文件在当前存储桶中的完整名称
+ },
+ Operation: {
+ FileUncompressConfig: {
+ Prefix: '', // 指定解压后输出文件的前缀,不填则默认保存在存储桶根路径
+ PrefixReplaced: '0', // 指定解压后的文件路径是否需要替换前缀,默认0
+ },
+ Output: {
+ Bucket: config.Bucket, // 保存解压后文件的存储桶
+ Region: config.Region, // 保存解压后文件的存储桶地域
+ },
+ },
+ // QueueId: '', // 任务所在的队列 ID
+ // CallBack: 'http://callback.demo.com', // 任务回调的地址
+ // CallBackFormat: 'JSON', // 任务回调格式
+ // CallBackType: 'Url', // 任务回调类型,Url 或 TDMQ,默认 Url
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'file_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询文件解压任务结果
+export const getFileUnCompress = {
+ name: '查询文件解压任务结果',
+ fn: function getFileUnCompress() {
+ const jobId = 'fe7b0fa34a13911eda186254bb8f3aaxx'; // 提交文件解压任务后会返回当前任务的jobId
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'file_jobs/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 提交哈希值计算任务
+export const postFileHash = {
+ name: '提交哈希值计算任务',
+ fn: function postFileHash() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Tag: 'FileHashCode', // 必须
+ Input: {
+ Object: 'test/1.pdf', // 文件名,取值为文件在当前存储桶中的完整名称
+ },
+ Operation: {
+ FileHashCodeConfig: {
+ Type: 'MD5', // 哈希值的算法类型,有效值:MD5、SHA1、SHA256
+ AddToHeader: 'false', // 是否将计算得到的哈希值添加至文件自定义header, 有效值:true、false,默认值为 false。
+ },
+ // UserData: '', // 透传用户信息, 可打印的 ASCII 码, 长度不超过1024
+ },
+ // QueueId: '', // 任务所在的队列 ID
+ // CallBack: 'http://callback.demo.com', // 任务回调的地址
+ // CallBackFormat: 'JSON', // 任务回调格式
+ // CallBackType: 'Url', // 任务回调类型,Url 或 TDMQ,默认 Url
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'file_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询哈希值计算任务结果
+export const getFileHashResult = {
+ name: '查询哈希值计算任务结果',
+ fn: function getFileHashResult() {
+ const jobId = 'f3addcbd0a13811ed9b4ff5338d756fxx'; // 提交文件哈希值计算任务后会返回当前任务的jobId
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'file_jobs/' + jobId,
+ Url: url,
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 查询文件处理队列
+export const describeFileProcessQueues = {
+ name: '查询文件处理队列',
+ fn: function describeFileProcessQueues() {
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue';
+ const url = 'https://' + host;
+ cos.request({
+ Method: 'GET',
+ Key: 'file_queue',
+ Url: url,
+ Query: {
+ // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
+ state: 'Active', // 非必须,Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响
+ pageNumber: 1, // 第几页,默认值1
+ pageSize: 10, // 非必须,每页个数,默认值10
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 更新文件处理队列
+export const updateFileProcessQueue = {
+ name: '更新文件处理队列',
+ fn: function updateFileProcessQueue() {
+ // 任务所在的队列 ID,请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
+ const queueId = 'p6160ada105a7408e95aac015f4bf8xxx';
+ const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue/' + queueId;
+ const url = 'https://' + host;
+ const body = COS.util.json2xml({
+ Request: {
+ Name: 'My-Queue-file', // 必须,队列名称,长度不超过128
+ State: 'Active', // 必须,Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
+ NotifyConfig: {
+ // 必须,回调配置
+ State: 'On', // 必须,回调开关,Off/On,默认Off
+ Event: 'TaskFinish', // 回调事件,当 State=On时, 必选。任务完成:TaskFinish;工作流完成:WorkflowFinish
+ ResultFormat: 'XML', // 非必选,回调格式,JSON/XML
+ Type: 'Url', // 回调类型,当 State=On时, 必选,Url 或 TDMQ
+ Url: 'https://www.example.com', // 回调地址,当 State=On, 且Type=Url时, 必选
+ // MqMode: 'Off', // TDMQ 使用模式,当 State=On, 且Type=TDMQ时, 必选
+ // MqRegion: 'Off', // TDMQ 所属园区,当 State=On, 且Type=TDMQ时, 必选
+ // MqName: 'Off', // TDMQ 主题名称,当 State=On, 且Type=TDMQ时, 必选
+ },
+ },
+ });
+ cos.request({
+ Method: 'POST',
+ Key: 'file_queue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
+
+// 哈希值计算同步请求
+export const generateFileHash = {
+ name: '哈希值计算同步请求',
+ fn: function generateFileHash() {
+ const key = 'test.pdf';
+ cos.request({
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ Query: {
+ 'ci-process': 'filehash', // 必须,操作类型,哈希值计算固定为:filehash
+ type: 'md5', // 必须,支持的哈希算法类型,有效值:md5、sha1、sha256
+ // 'addtoheader': false, // 非必须,是否将计算得到的哈希值,自动添加至文件的自定义header,格式为:x-cos-meta-md5/sha1/sha256;有效值:true、false,不填则默认为false。
+ },
+ }, function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
+ });
+ }
+};
\ No newline at end of file
diff --git a/demo/CIDemos/index.js b/demo/CIDemos/index.js
new file mode 100644
index 0000000..b647b12
--- /dev/null
+++ b/demo/CIDemos/index.js
@@ -0,0 +1,121 @@
+import * as common from './common.js';
+import * as taskAndWorkflow from './taskAndWorkflow.js';
+import * as picProcess from './picProcess.js';
+import * as ai from './ai.js';
+import * as mediaProcess from './mediaProcess.js';
+import * as docPreview from './docPreview.js';
+import * as audit from './audit.js';
+import * as fileProcess from './fileProcess.js';
+import * as asr from './asr.js';
+
+// 函数集合
+const moduleFn = {};
+// html排版
+const contentMap = {
+ common: {
+ title: 'Common',
+ functions: [],
+ },
+ taskAndWorkflow: {
+ title: '任务和工作流',
+ functions: [],
+ },
+ picProcess: {
+ title: '图片处理',
+ functions: [],
+ },
+ ai: {
+ title: 'AI识别',
+ functions: [],
+ },
+ mediaProcess: {
+ title: '媒体处理',
+ functions: [],
+ },
+ docPreview: {
+ title: '文档预览',
+ functions: [],
+ },
+ audit: {
+ title: '内容审核',
+ functions: [],
+ },
+ fileProcess: {
+ title: '文件处理',
+ functions: [],
+ },
+ asr: {
+ title: '智能语音',
+ functions: [],
+ },
+};
+
+function setContent(fnName, module, moduleName) {
+ const { name, fn } = module[fnName];
+ moduleFn[fnName] = module[fnName].fn;
+ contentMap[moduleName].functions.push({ name, fnName });
+}
+for (let fnName in common) {
+ setContent(fnName, common, 'common');
+}
+for (let fnName in taskAndWorkflow) {
+ setContent(fnName, taskAndWorkflow, 'taskAndWorkflow');
+}
+for (let fnName in picProcess) {
+ setContent(fnName, picProcess, 'picProcess');
+}
+for (let fnName in ai) {
+ setContent(fnName, ai, 'ai');
+}
+for (let fnName in mediaProcess) {
+ setContent(fnName, mediaProcess, 'mediaProcess');
+}
+for (let fnName in docPreview) {
+ setContent(fnName, docPreview, 'docPreview');
+}
+for (let fnName in audit) {
+ setContent(fnName, audit, 'audit');
+}
+for (let fnName in fileProcess) {
+ setContent(fnName, fileProcess, 'fileProcess');
+}
+for (let fnName in asr) {
+ setContent(fnName, asr, 'asr');
+}
+
+
+(function () {
+ const container = document.querySelector('.ci-main');
+ const html = [];
+ // 渲染html
+ for (let i in contentMap) {
+ const module = contentMap[i];
+ const content = `