AI聊天(webSocket)
# 1 概述
本文介绍用户如何使用webSocket方式接入“北冥复刻人”系统聊天服务。
# 2 接口说明
# 2.1 连接&认证
- 连接地址:
wss://open.galaxyeye-api.com/intellect-saas-v4/v2/intellect/open/aiChat?accessToken=tokenValue&userIdentity=12&robotId=ert
- 请求数据类型:
query params - 业务说明:如果30分钟内未发送聊天请求消息,连接会自动断开;
# 参数说明:
| 参数名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| accessToken | 是 | string | 访问令牌(详情参见token获取接口;token刷新接口) |
| userIdentity | 是 | string | 客户的终端用户的唯一身份标识,可数字、大小写字母、下划线、中划线组合,最大不超过100个字符 |
| robotId | 是 | string | 机器人id |
# 响应参数:
| 参数名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| method | 是 | string | authResp |
| code | 是 | int | 状态码 |
| msg | 是 | String | 状态描述信息 |
示例:
{
"method":"authResp",
"code":0,
"msg":"OK"
}
# 2.2 心跳消息
- 参数说明:
| 参数名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| method | 是 | string | heartBeat(请求和回复相同) |
注:建议客户每10s-20s发送一次心跳消息,服务端1分钟未收到心跳消息将断开链接。
示例:
{
"method":"heartbeat"
}
# 2.3 AI聊天请求消息
# 参数说明:
| 参数名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| method | 是 | String | aiChatReq |
| content | 是 | String | 用户聊天内容,最大不超过200个字符 |
| seq | 是 | String | 流水号 |
| chatModel | 否 | int | 回复模式(0:非流式回复;1:流式回复),默认为流式回复 注: 流式回复:如果AI回复长文本,在回复生成过程中,程序会将回复内容逐句发送给聊天对象。 非流式回复:程序获取到完整的AI回复文本后,统一发给聊天对象。 |
示例:
{
"method":"aiChatReq",
"content":"你好",
"seq":"xxx",
"chatModel":0
}
# 2.4 AI聊天应答消息
# 参数说明:
| 参数名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| method | 是 | String | aiChatAck |
| code | 是 | int | 状态码 |
| msg | 是 | String | 状态描述信息 |
| seq | 是 | String | 流水号,与aichatReq消息seq字段值相同 |
示例:
{
"method":"aiChatAck",
"code":0,
"msg":"ok",
"seq":"xxx"
}
# 2.5 AI聊天回复消息
# 参数说明:
| 参数名称 | 必选 | 类型 | 说明 |
|---|---|---|---|
| userIdentity | 否 | string | 客户的终端用户的唯一身份标识 |
| uid | 是 | String | 用户在北冥复刻人系统中的身份标识,可忽略 |
| data | 是 | jsonarray | 业务数据 |
| robotId | 否 | String | 复刻人ID |
| code | 是 | String | 状态码 |
| msg | 是 | String | "ok"代表正常,如果code非0里面就是具体的错误信息 |
data业务数据示例:
| 参数名称 | 必选 | 字段类型 | 描述 |
|---|---|---|---|
| data | 是 | json | 消息内容 |
| data.msgId | 是 | String | 消息id(唯一标识) |
| data.msgStatus | 否 | int | //0代表消息开始;1代表消息进行中,2代表消息结束 (流式消息特有字段) |
| data.content | 是 | string | 聊天回复的数据,具体由AI引擎端定义 |
| data.sentenceId | 否 | int | 一条消息可能被分成多个分段(序号从0开始),流式消息特有字段 |
| data.task_id | 否 | string | 该字段暂时忽略 |
| data.uid | 是 | String | 用户在北冥复刻人系统中的身份标识,可忽略 |
| data.robotId | 是 | String | 复刻人ID |
| type | 是 | string | 默认是文本 |
- 示例:
{
"code":0,
"method":"aiChatResp",
"msg":"ok",
"robotId":"asdFds-HFhyutq****",
"uid":"18087801387********",
"userIdentity":"**002",
"data":[
{
"data":
{
"uid":"18087801387********",
"msgId":"1808780138733637632_********",
"sentenceId":9,
"task_id":"1808780138733637632_********",
"robotId":"asdFds-HFhyutq****",
"msgStatus":2,
"content":""
},
"type":"文本"
}
]
}
# 2.6 状态码
| 返回码 | 返回码说明 | 备注 |
|---|---|---|
| 0 | OK | |
| 8801 | userIdentity或者robotId字段不能为空 | |
| 8802 | 系统错误,请稍后重试 | |
| 8223 | 复刻人不属于当前租户! | |
| 8301 | 聊天次数超出限制! | |
| 8100 | content字段不能为空/seq字段不能为空 | |
| 8218 | 不支持的调用方式!(首先查看method里面的字段是否错误了。) | |
| 8998 | 系统内部异常! | 请联系管理员 |
上次更新: 2024/07/15, 14:36:24