找不到 API ? 点击 反馈吧
- 数据上传
- 质检规则&方案
- 呼叫中心-质检任务管理
- 数据集
- 质检结果
- 语音模型训练
- 系统管理
- 不推荐或白名单开放
- 新版本(V4)弃用
- 其他
Deprecated UploadData
上传离线文本质检数据(纯文本会话):适用于在线坐席场景。
推荐使用UploadDataV4接口。
UploadDataV4与UploadData的差异:1、V4仅支持POST请求。2、V4支持更长的JsonStr
目前该API接口已标记为弃用,推荐使用替代API:
服务地址:
华东1(杭州)
参数配置
高级配置
输入参数
只看必填
注意事项
JsonStrjsonStr是一个JSON字符串
BaseMeAgentId业务空间Id
文档
调用结果
SDK 示例
CLI示例
相关示例 (1)
调用历史
错误码
流控
插件下载了解更多
Alibaba Cloud Developer ToolkitbetaAlibaba Cloud OpenAPI
Alibaba Cloud Developer Toolkit is a collection of extensions that can help access Alibaba Cloud services in Visual Studio Code.
安装插件之前,确保已安装 JetBrains IDE安装插件之前,确保已安装 JetBrains IDE
Alibaba Cloud Developer ToolkitbetaAlibaba Cloud OpenAPI
The Alibaba Cloud Developer Toolkit for JetBrains makes it easier to access Alibaba Cloud services.
接口说明
调用 UploadData.json 上传文本质检数据,文本通常来源于在线客服、工单等,接口会返回 taskId,您可以通过 3 种方式获取结果:
- 消息通知:详情请查看消息队列,收到消息后再通过 GetResult 接口获取详细结果。(推荐)
- 回调:通过在请求参数中指定 callbackUrl,在任务完成后由系统主动发起回调;接到回调后再通过 GetResult 接口获取详细结果。
- 轮询:通过此接口返回的任务 ID 轮询 GetResult 接口异步获取结果,判断返回中的 status 是否完成。(不推荐)。
请求参数
字段名称 | 字段详情 |
---|---|
JsonStrstring | jsonStr 是一个 JSON 字符串,里面是该接口所有的自定义参数,具体内容参见下方的 jsonStr 属性说明。 示例值:xxx |
BaseMeAgentIdinteger<int64> | 业务空间 Id,用于区分多业务空间场景下选择指定业务空间,默认为默认业务空间。 注意
该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 示例值:123456 |
请求说明
jsonStr 属性说明:
属性 | 值类型 | 是否必须 | 说明 |
---|---|---|---|
tickets | List | 是 | 待检文本数据信息,每个元素是一个完整对话,详见下方jsonStr.tickets 属性说明。 |
business | String | 否 | 业务线名称,用于分类统计,此请求中的数据应该都属于一个业务线。 |
callbackUrl | String | 否 | 回调地址,不指定则不回调,请保证回调地址与 SCA 应用的连通性,不支持 IP;质检分析完成后会发起回调;详细说明请查看下方的回调参数说明 |
jsonStr.tickets 属性说明:
属性 | 值类型 | 是否必须 | 说明 |
---|---|---|---|
dialogue | List | 是 | 待检文本对话,详见下方dialogue 属性说明。 |
tid | String | 否 | 本段对话 ID,注意不要重复;若不提供,则会随机生成一个 UUID。 |
fileName | String | 否 | 文本名称。 |
customerServiceId | Long | 否 | 客服 ID。可从控制台-基础设置-人员管理页面获取,正确填入客服 ID,客服登录控制塔时可以查看与自己关联的文件。 |
customerServiceName | String | 否 | 客服姓名。 |
skillGroupId | String | 否 | 坐席所在技能组 ID。 |
skillGroupName | String | 否 | 坐席所在技能组名称。 |
callType | Integer | 否 | 呼叫类型,可选值:1(呼出);3(呼入)。适用于您本地已经安装有录音转文本服务,直接将文本上传到 SCA 系统时的场景,来指定该通话的呼叫类型。 |
sessionGroupId | String | 否 | 会话组 ID,通常把同一个客服和同一个客户的会话称之为一个会话组,当传入会话组 ID 后,可在会话组结果页查看会话组维度的质检结果。 |
customerId | String | 否 | 客户 ID。 |
customerName | String | 否 | 客户姓名。 |
schemeTaskConfigId | String | 否 | 手动指定的质检任务 ID(手动指定后则会使用指定的质检任务进行质检) 。 |
remark1 | String | 否 | 自定义数据 1,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark2 | String | 否 | 自定义数据 2,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark3 | String | 否 | 自定义数据 3,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark4 | String | 否 | 自定义数据 4,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark5 | Long | 否 | 自定义数据 5,可以存放与您业务相关的自定义字段,格式为有符号的 long 型。 |
remark6 | String | 否 | 自定义数据 6,可以存放与您业务相关的自定义字段,最大长度为 1024 字符。 |
remark7 | String | 否 | 自定义数据 7,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark8 | String | 否 | 自定义数据 8,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark9 | String | 否 | 自定义数据 9,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark10 | String | 否 | 自定义数据 10,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark11 | String | 否 | 自定义数据 11,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark12 | String | 否 | 自定义数据 12,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark13 | String | 否 | 自定义数据 13,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark14 | Long | 否 | 自定义数据 14,可以存放与您业务相关的自定义字段,格式为有符号的 long 型。 |
remark15 | Long | 否 | 自定义数据 15,可以存放与您业务相关的自定义字段,格式为有符号的 long 型。 |
remark16 | String | 否 | 自定义数据 16,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark17 | String | 否 | 自定义数据 17,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark18 | String | 否 | 自定义数据 18,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark19 | String | 否 | 自定义数据 19,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark20 | String | 否 | 自定义数据 20,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark21 | String | 否 | 自定义数据 21,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark22 | String | 否 | 自定义数据 22,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark23 | String | 否 | 自定义数据 23,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark24 | String | 否 | 自定义数据 24,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
remark25 | String | 否 | 自定义数据 25,可以存放与您业务相关的自定义字段,最大长度为 64 字符。 |
jsonParamStr | String | 否 | 更多自定义字段,格式为 JSON 字符串,key 为字段名称,value 为字段内容,示例:{"客户等级": 3,"渠道":"官网"}。 |
dialogue 属性说明:
属性 | 值类型 | 是否必须 | 说明 |
---|---|---|---|
role | String | 是 | 对话内容角色,取值:客服、客户。 |
customerServiceType | Integer | 否 | 区分角色是人工还是机器人,取值:0(人工),1(机器人),默认值:0。该字段作用:若为机器人,则在复核页面展示的头像为机器人头像。 |
identity | String | 否 | 对话角色的具体身份标识。 |
words | String | 是 | 这个角色说的一句话,仅支持 UTF-8 编码,若句子包含表情包,请查看下方表情包显示说明 |
type | String | 否 | 当前句子类型,取值:TEXT(文本);AUDIO(语音);IMAGE(图片),图片可在复核详情页显示,音频可在复核详情页中播放,默认为 TEXT,当为 AUDIO 或 IMAGE 时,words 字段中传入对应资源的 URL 地址即可。(仅新版智能对话分析适用) |
begin | Integer | 是 | 本句话的开始时间,是相对起始点的开始时间偏移,单位 ms。 |
end | Integer | 是 | 本句话的结束时间,是相对起始点的结束时间偏移,单位 ms。 |
beginTime | Date | 是 | 这句话的开始时间,示例值:2019-11-25 15:37:16。 |
表情包显示说明
在复核详情页查看对话详情时,仅支持通用 Emoji 表情包的展示,上传时,需将表情替换为 UTF8 字符集的字符,例如😀;笑脸表情对应的字符为😀
,以&#开头,分号结尾,相关文档说明: Emoji 字符对照表, HTML 页面展示字符说明
回调参数说明
假设调用方传入的回调地址是:http://aliyun.com/callback
,那么回调时的完整 URL 为http://aliyun.com/callback?taskId=xxx×tamp=xxx&signature=xxx&event=xxx
,其中:
- taskId:为任务 id
- timestamp:为调用时的时间戳,单位:毫秒
- aliUid:为调用方阿里云主账号 uid
- signature:为签名,调用方可用来判断请求是否来自阿里云;计算说明:将
taskId=xxx×tamp=xxx&aliUid=xxx
,进行 md5+base64 加密,注意顺序;调用方接到回调后,taskId 和 timestamp 可以从回调 URL 中获取,aliUid 即为阿里云主账号 ID。通过计算来比对自己计算出的 signature,与 URL 中的 signature 是否一致,详见下方 Java 代码示例。 - event:为事件名称,调用方可用来判断是什么事件触发的回调,取值为 TaskComplete:任务完成时的回调;
public static void signature() {
long timestamp = System.currentTimeMillis();
String taskId = "xxxx";
String aliUid = "xxxxx";
// 将 taskId=xxx×tamp=xxx&aliUid=xxx 进行 md5 + base64 加密,放在 signature 字段
String signature;
try {
signature = URLEncoder.encode(md5Base64("taskId=" + taskId + "×tamp=" + timestamp + "&aliUid=" + aliUid), "utf-8");
System.out.println(signature);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String md5Base64(String str) throws NoSuchAlgorithmException {
//string 编码必须为 utf-8
byte[] utfBytes = str.getBytes(StandardCharsets.UTF_8);
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(utfBytes);
byte[] md5Bytes = mdTemp.digest();
return Base64.encodeBase64String(md5Bytes);
}
请求入参示例
{
"callbackUrl": "https://123.123.com/sca-callback",
"tickets": [
{
"schemeTaskConfigId": "389",
"customerName": "张三 1",
"customerId": "zhangsan-vip-audio",
"dialogue": [
{
"beginTime": "2019-11-25 15:36:01",
"role": "客户",
"identity": "某客户",
"emotionValue": 6,
"speechRate": 153,
"words": "你好。",
"end": 2580,
"begin": 1800,
"channelId": 1,
},
{
"beginTime": "2019-11-25 15:37:01",
"role": "客服",
"identity": "某客服",
"emotionValue": 6,
"speechRate": 153,
"words": "请问有什么可以帮您?你要买什么东西吗?请说吧啊",
"end": 2580,
"begin": 1800,
"channelId": 1,
},
{
"beginTime": "2019-11-25 15:37:06",
"role": "客服",
"identity": "某客服",
"emotionValue": 6,
"speechRate": 305,
"words": "我要买毛衣",
"end": 12540,
"begin": 6770,
"channelId": 0,
}
]
}
]
}
请求代码示例
public class sca {
private static String ak = "YOUR_ACCESS_KEY_ID";
private static String sk = "YOUR_ACCESS_KEY_SECRET";
private static void uploadText() throws Exception {
String json="{\n" +
" \"callbackUrl\":\"https://123.123.com/sca-callback\",\n" +
" \"tickets\":[\n" +
" {\n" +
" \"schemeTaskConfigId\":\"389\",\n" +
" \"customerName\": \"张三 1\",\n" +
" \"customerId\": \"zhangsan-vip-audio\",\n" +
" \"dialogue\":[\n" +
" {\n" +
" \"beginTime\":\"2019-11-25 15:36:01\",\n" +
" \"role\":\"客户\",\n" +
" \"identity\":\"某客户\",\n" +
" \"emotionValue\":6,\n" +
" \"speechRate\":153,\n" +
" \"words\":\"你好。\",\n" +
" \"end\":2580,\n" +
" \"begin\":1800,\n" +
" \"channelId\":0,\n" +
" \n" +
" },\n" +
" {\n" +
" \"beginTime\":\"2019-11-25 15:37:01\",\n" +
" \"role\":\"客服\",\n" +
" \"identity\":\"某客服\",\n" +
" \"emotionValue\":6,\n" +
" \"speechRate\":153,\n" +
" \"words\":\"请问有什么可以帮您?你要买什么东西吗?请说吧啊\"\",\n" +
" \"end\":2580,\n" +
" \"begin\":1800,\n" +
" \"channelId\":1,\n" +
" \n" +
" },\n" +
" {\n" +
" \"beginTime\":\"2019-11-25 15:37:06\",\n" +
" \"role\":\"客户\",\n" +
" \"identity\":\"某客户\",\n" +
" \"emotionValue\":6,\n" +
" \"speechRate\":305,\n" +
" \"words\":\"我要买毛衣\",\n" +
" \"end\":12540,\n" +
" \"begin\":6770,\n" +
" \"channelId\":0,\n" +
" \n" +
" }\n" +
" ],\n" +
" }\n" +
" \n" +
" ]\n" +
" \n" +
" }";
Config config = new Config();
config.setAccessKeyId(ak).setAccessKeySecret(sk).setEndpoint("qualitycheck.cn-hangzhou.aliyuncs.com")
.setRegionId("cn-hangzhou").setProtocol("HTTPS");
Client client = new Client(config);
UploadDataRequest result = new UploadDataRequest();
result.setJsonStr(json);
UploadDataResponse response = client.uploadData(result);
System.out.println(JSONObject.toJSONString(response));
}
public static void main(String[] args) throws Exception {
uploadText();
}
}
返回参数
字段名称 | 字段详情 |
---|---|
Codestring | 结果代码,200 表示成功,若为别的值则表示失败,调用方可根据此字段判断失败原因。 示例值:200 |
Messagestring | 出错时表示出错详情,成功时为 successful。 示例值:successful |
Datastring | 该任务的 taskId。 示例值:6F5934C7-C223-4F0F-BBF3-5B3594*** |
RequestIdstring | 请求 ID,请求唯一标识,可以用来定位追踪请求。 示例值:6F5934C7-C223-4F0F-BBF3-5B3594**** |
Successboolean | 请求是否成功,调用方可根据此字段来判断请求是否成功:true 表示成功;false/null 表示失败。 示例值:true |