与我司商务合作后,我司会给客户appId和appSecret。请妥善保存appSecret
客户通过appId和appSecret获取token,将token放入HTTP Header中可以请求对应的接口。
字段 | 类型 | 是否必须 | 备注 |
---|---|---|---|
token | String | Y | 通过appId和appSecret获取token |
duix得到token和其他请求数据集合后,会先进行安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求,平台返回的参数格式如下:
字段 | 类型 | 是否必须 | 备注 |
---|---|---|---|
code | String | Y | 返回的状态码,为0表示成功 |
message | String | N | 成功/错误的描述信息 |
data | object | N | 返回的具体内容 |
success | Boolean | Y | 是否成功 |
下文中如没有特殊说明,对返回值的解释都是指data内部的结构。
错误码 | 描述 |
---|---|
0 | 正常 |
-1 | 系统异常 |
1005 | token不能为空 |
1006 | toke失效 |
1007 | 话术信息不存在 |
1009 | 用户可用次数不足 |
2002 | 会话信息不存在 |
40001 | appid或者appscrect无效 |
40002 | 内部错误 |
对接duix-openapi-v2平台时,需在自己平台中集成生成token的代码,生成token的方法可参考以下代码:
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.3</version>
</dependency>
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import java.util.Calendar;
import java.util.Date;
/**
* 创建签名
*
* @param appId 签发对象
* @param secret 密钥
* @param exp 到期时间:单位秒
* @return
*/
public static String createSig(String appId,String secret,int exp){
Calendar nowTime=Calendar.getInstance();
nowTime.add(Calendar.SECOND,exp);
Date expiresDate=nowTime.getTime();
return JWT.create()
//发行时间
.withIssuedAt(new Date())
//有效时间
.withExpiresAt(expiresDate)
//载荷
.withClaim("appId",appId)
//加密
.sign(Algorithm.HMAC256(secret));
}
接口地址:
/duix-openapi-v2/sdk/checkSig
请求方式: GET
请求数据类型: application/json
响应数据类型: application/json
验证token有效性,并返回数字人实时交互ws连接地址
参数名称 | 类型 | 传参方式 | 参数说明 |
---|---|---|---|
sig | String | Query | 与token相同 |
参数名称 | 类型 | 描述 |
---|---|---|
appId | String | appId |
wsService | String | 数字人实时交互ws地址 |
管理类HTTP请求有一个共同的约定,需要在请求头中传token
/duix-openapi-v2/v1/getconcurrentNumber
GET
接口描述:
查询某APP下并发数
参数名称 | 类型 | 传参方式 | 参数说明 |
---|---|---|---|
appId | String | Query | 从平台创建的APPID |
响应参数:
参数名称 | 类型 |
---|---|
code | String |
data | ConcurrentStatus |
cropId | String |
totalConcurrentNumber | integer(int32) |
userConcurrentNumber | integer(int32) |
message | String |
success | boolean |
响应示例:
{
"code": "",
"data": {
"cropId": "",
"totalConcurrentNumber": 0,
"userConcurrentNumber": 0
},
"message": "",
"success": true
}
/duix-openapi-v2/v1/getconcurrentList
GET
查询某APP下的”通话中“的会话列表。
参数名称 | 类型 | 传参方式 | 参数说明 |
---|---|---|---|
appId | String | Query | 从平台创建的APPID |
/duix-openapi-v2/v1/distroyCallSessionsByAppId
GET
关闭某APP下所有的会话
参数名称 | 类型 | 传参方式 | 参数说明 |
---|---|---|---|
appId | String | Query | 从平台创建的APPID |
{
"code": "",
"data": "",
"message": "",
"success": true
}
/duix-openapi-v2/v1/sessionStop
GET
参数名称 | 类型 | 传参方式 | 参数说明 |
---|---|---|---|
uuid | String | Query | start-complete 事件返回的 sessionId 字段 |
Field | Type | Description | Required |
---|---|---|---|
sid | String | 你的用户id,在创建用户时产生。可以在账号信息中查看。 | Y |
dh-code | String | 数字人编号,在每个数字人创建时产生,可以在数字人概览查看。 | Y |
dh-question | String | 你需要问数字的问题内容 | Y |
dh-conversation-id | String | 会话id,标识该会话的唯一标识 | Y |
dh-context | String | 关于该会话期间产生的上下文信息,该信息为已经字符串化的JSON格式数据。 | N |
{
"sid": "100003",
"dh-code": "187265485019156480",
"dh-question": "who are you?",
"dh-conversation-id": "0513e935-041f-48e0-9330-652ef4194511",
"dh-context": "{}"
}
响应规范: 当你收到问题请求的时候,你需要按照下面的格式返回。
有效响应类型:
Code | Status | Response |
---|---|---|
200 | OK | 按照下面规范的返回体 |
400 | Bad Request | Request body/headers are invalid |
401 | Unauthorized | 鉴权信息无效 |
403 | Forbidden | 鉴权失败 |
500 | Server Error | 服务异常 |
返回体规范:
Field | Type | Description | Required |
---|---|---|---|
conversationId | String | 会话id,标识该会话的唯一标识,与请求参数体的dh-conversation-id一致。 | Y |
question | String | 用户所问的问题。 | N |
answer | String | 用户问数字人的问题的答案,这是一个字符串化的 JSON 对象。 | Y |
intent | String | 问题匹配到平台的意图 | N |
errorMsg | String | 异常或者对错误的描述 | N |
extra | String | 额外信息,JSON字符串 | N |
{
"code": "200",
"msg": "处理成功",
"success": true,
"data": {
"conversationId": "0513e935-041f-48e0-9330-652ef4194511",
"question": "who are you?",
"answer": {
"answer": "Welcome to UneeQ, how can I help?",
"operations": {
"tipPhrases": {
"phrases": ["yes", "no"]
},
"canShowText": 1
}
},
"intent": "introduce",
"errorMsg": "",
"extra": "{}"
}
}
预期响应时间: 与数字人类的互动,由于他们的实时性,对延迟很敏感。因此,在处理来自DUIX平台的请求时,响应时间是需要考虑的一个重要因素。这些服务的响应时间需要95%以上在2000ms以内。如果响应时间超过20000ms,该请求将报出超时错误,但是数字人将继续响应。