



# 1. 登录注册类

## 1.1 发送验证码

**请求JSON**

```json
{
    "user_name":"civet148", //账户名
    "email":"civet148@126.com", //邮箱地址
    "action_type":0, //操作类型: 0=用户注册 1=重置密码
    "language":"en"  //语言: en=英文 zh-CN=简体中文
}
```

**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```



## 1.2 商户注册

**请求JSON**

```sh
{
    "user_name":"civet148@126.com",
    "password":"e10adc3949ba59abbe56e057f20f883e",
    "email":"civet148@126.com",
    "reg_code": "888888"
}
```

**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```



## 1.3 商户登录


**请求JSON**

```sh
{
    "user_name":"civet148@126.com",
    "password":"e10adc3949ba59abbe56e057f20f883e"
}
```

**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```


## 1.4 商户退出


**请求JSON**

```sh
{
}
```

**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```

# 2. AI员工类接口

## 2.1 创建员工

Token: required

POST   /api/v1/customer/create/staff

**请求JSON**

```json
{
    "name":"我的AI员工1号",     //员工名称(必填)
    "org_name":"销售部",    //组织名称(必填)
    "tone":"friendly and sincere", //语气：friendly and sincere（友好且真诚）, professional and cautious（专业且稳重）, clear and direct（清晰且直接）
    "output_length":"normal-length",    //回复长度：detailed（详细）, normal-length（正常长度）, concise（简洁）
    "language_mode":"written", //语言模式：written（书面），spoken（口语）
    "language_response":"Chinese", //回复语言：Chinese、English
    "description":"销冠的潜质", //员工描述
    "greetings":"您好，我是1号员工，很高兴为您服务!", //问候语
    "avatar_url":"https://www.pic.com/avatar001.jpg" //头像URL
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
      "id": 1001
  }
}
```



## 2.2 员工列表

Token: required

POST   /api/v1/customer/list/staff

**请求JSON**

```json
{
    "id": 0, //按员工ID查询
    "name": "", //按员工名称查询
    "serial_no": "", //按员工序列号查询
    "page_no": 0,    
    "page_size": 20
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
      "list": [
        {
            "id":1,                 //员工ID
            "serial_no":"123456",   //员工序列号
            "customer_id":1,        //归属客户ID
            "name":"AI001",         //员工名称
            "org_name":"SellDepartment",    //组织名称
            "tone":"",          //语气(亲切/严肃/专业等等)
            "output_length":"", //回复长度(短/中/长等等)
            "language_mode":"written", //语言模式：written（书面），spoken（口语）
            "language_response":"Chinese", //回复语言：Chinese、English
            "description":"",   //描述
            "trial_time":"",    //试用结束时间
            "expiring_time":"", //有效期截止时间
            "state":0,          //状态(0=未激活 1=正常 2=接近过期 3=已过期)
            "edit_user":"",     //最后编辑人
            "is_frozen": false, //是否已冻结
            "api_key": "",      //API key (系统自定生成,不能编辑)
            "secret_key": "",   //Secret key (系统自定生成,不能编辑)
            "chat_url":"",      //智能员工URL
            "avatar_url":"",    //智能员工头像
            "greetings":"您好，我是1号员工，很高兴为您服务!", //问候语
            "repo_name":"我的资料库",             //知识库名称
            "repo_descr":"大堂经理培训资料库",     //知识库描述
            "is_deleted": false, //是否已删除(0=未删除 1=已删除)
            "created_time":"2024-04-23 10:32:30",  //创建时间
            "updated_time":"2024-04-23 10:32:30"   //更新时间
        }
      ]
  }
}


```


## 2.3 编辑员工

Token: required

POST   /api/v1/customer/edit/staff 

**请求JSON**

```json
{
    "id": 1,                 //员工ID (必填)
    "serial_no": "123456",   //员工序列号
    "name": "AI001",         //员工名称
    "org_name": "SellDepartment",    //组织名称
    "tone":"friendly and sincere", //语气：friendly and sincere（友好且真诚）, professional and cautious（专业且稳重）, clear and direct（清晰且直接）
    "output_length":"normal-length",    //回复长度：detailed（详细）, normal-length（正常长度）, concise（简洁）
    "language_mode":"written", //语言模式：written（书面），spoken（口语）
    "language_response":"Chinese", //回复语言：Chinese、English
    "description": "",   //描述
    "is_frozen": false,  //是否已冻结
    "chat_url": "",      //智能员工URL
    "avatar_url": "",     //智能员工头像
    "greetings":"您好，我是1号员工，很高兴为您服务!", //问候语
    "repo_name":"我的资料库",             //知识库名称
    "repo_descr":"大堂经理培训资料库"     //知识库描述
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```


## 2.4 删除员工

Token: required

 POST   /api/v1/customer/delete/staff 

 **请求JSON**

```json
{
    "id": 1                 //员工ID (必填)
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```



## 2.5 冻结/解冻员工

Token: required

冻结：POST   /api/v1/customer/frozen/staff
解冻：POST   /api/v1/customer/unfrozen/staff

**请求JSON**

```json
{
    "id": 1  //员工ID
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```


## 2.6 套餐支付

Token: required

POST  /api/v1/customer/pay/staff 

**请求JSON**

```json
{
    "id": 1, //需要支付的员工ID
	"production_id": 2, //支付套餐ID
	"pay_type":"alipay" //支付方式(wxpay=微信支付 alipay=支付宝 stripe=Stripe支付)
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
    "pay_type": "alipay", //支付方式
	"trade_no": "NO202404251606089389209168633" //支付订单号
	"pay_url": "https://qr.alipay.com/bax02518wkpb3p3e9fro3071"  //支付链接(自行用插件转为二维码)
  }
}
```

## 2.7 查询支付状态

Token: required

POST   /api/v1/customer/query/trade

**请求JSON**

```json
{
    "trade_no": "NO202404251606089389209168633" //支付订单号
}
```



**响应JSON**

```json

{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
    "state": 0,          //支付状态(0=等待付款 1=已完成付款 2=付款超时关闭 3=已退款 4=已结束[不可退款] 5=支付平台异常)
	"message": "Success" //订单交易状态信息
  }
}
```

## 2.8 上传资料

Token: required

POST  /api/v1/customer/upload/file 

**请求Form-data**

```json
file_name => QQ.jpg
file_data => 图片二进制数据
```



**响应JSON**

```json
{
    "header": {
        "code": 0,
        "message": "",
        "total": 1,
        "count": 1
    },
    "data": {
        "file_name": "QQ.jpg",
        "file_path": "1713856350987496426_QQ.jpg"
        "file_size": 1034123,
        "file_url": "http://116.213.39.234:8084/assets/files/1713856350987496426_QQ.jpg"
    }
}
```



## 2.9 客服聊天

[**WEBSOCKET**]

ws://116.213.39.234:8084/ws 

以AI员工的api key**和**secret key**作为用户名密码采用**BasicAuth**方式鉴权

## 2.10 培训资料列表

Token: required

POST   /api/v1/customer/list/doc

**请求JSON**

```json
{
    "staff_id": 1, //员工ID
    "page_no": 0,
    "page_size": 20
}
```



**响应JSON**

```json

{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
    "list":[
        {
            "id": 1,           //文档ID
            "file_name":"文档1.docx",    //原始文件名
            "file_path":"2141242323_文档1.docx",    //文件存储相对路径
            "file_size": 1412423,   //文件大小(字节)
            "file_url":"",     //文件访问URL
            "created_time":"2024-04-26 18:23:33", //创建时间
            "updated_time":"2024-04-26 18:23:33" //更新时间
        }
    ]
  }
}
```

## 2.11 更新培训资料

Token: required

POST   /api/v1/customer/update/doc

**请求JSON**

```json
{
    "staff_id": 1, //员工ID
    "docs":[
       {
       	    "file_name":"文档1.docx",    //原始文件名
            "file_path":"2141242323_文档1.docx", //实际文件存储路径
            "file_size": 1412423,   //文件大小(字节)
            "file_url": ""          //文件访问URL
       }
    ]
}
```



**响应JSON**

```json

{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": { }
}
```


## 2.12 删除培训资料

Token: required

POST   /api/v1/customer/delete/doc

**请求JSON**

```json
{
    "staff_id": 1, //员工ID
    "ids": [1,2,3]  //要删除的文档ID列表
}
```



**响应JSON**

```json

{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": { }
}
```



## 2.13 同步培训资料

触发同步消息给到AI服务器，更新知识库

Token: required

POST   /api/v1/customer/sync/doc

**请求JSON**

```json
{
    "staff_id": 1 //员工ID
}
```



**响应JSON**

```json

{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {}
}
```

## 2.14 序列号查询员工

Token: no

POST   /api/v1/customer/query/staff

**请求JSON**

```json
{
    "serial_no": "safasdfsdfs" //按员工序列号查询
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
      "list": [
        {
            "id":1,                 //自增ID
            "serial_no":"123456",   //员工序列号
            "customer_id":1,        //归属客户ID
            "name":"AI001",         //员工名称
            "org_name":"SellDepartment",    //组织名称
            "tone":"",          //语气(亲切/严肃/专业等等)
            "output_length":"", //回复长度(短/中/长等等)
            "language_mode":"written", //语言模式：written（书面），spoken（口语）
            "language_response":"Chinese", //回复语言：Chinese、English
            "description":"",   //描述
            "trial_time":"",    //试用结束时间
            "expiring_time":"", //有效期截止时间
            "state":0,          //状态(0=未激活 1=正常 2=接近过期 3=已过期)
            "edit_user":"",     //最后编辑人
            "is_frozen": false, //是否已冻结
            "api_key": "",      //API key (系统自定生成,不能编辑)
            "secret_key": "",   //Secret key (系统自定生成,不能编辑)
            "chat_url":"",      //智能员工URL
            "avatar_url":"",    //智能员工头像
            "greetings":"您好，我是1号员工，很高兴为您服务!", //问候语
            "repo_name":"我的资料库",             //知识库名称
            "repo_descr":"大堂经理培训资料库",     //知识库描述
            "is_deleted": false, //是否已删除(0=未删除 1=已删除)
            "created_time":"2024-04-23 10:32:30",  //创建时间
            "updated_time":"2024-04-23 10:32:30"   //更新时间
        }
      ]
  }
}

```



## 2.15 账单列表

Token: required

POST   /api/v1/customer/list/billing

**请求JSON**

```json
{
    "id": 0, //按账单ID查询
    "page_no": 0,    
    "page_size": 20
}
```



```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
      "list": [
        {
          "id":1, 						  //自增ID
          "customer_id": 1,     //客户ID
          "staff_id": 2,        //员工ID
          "pay_type":"alipay",  //支付方式(wxpay=微信 alipay=支付宝 stripe=Stripe支付)
          "trade_no":"NO20240510150293234234234", //商家交易订单号(商家系统唯一ID)
          "transaction_id":"2024051015029323423", //支付平台唯一交易ID
          "customer_email":"", //客户邮箱地址(Stripe支付必填)
          "prod_id": 1, //产品ID
          "prod_no": "", //产品序列号
          "prod_name":"标准版包月￥199", //产品名称
          "prod_price":"199.00",  //产品价格
          "currency":"CNY",  //单位(CNY/USD...)
          "pay_amount":"199.00", //支付金额(单位: 元)
          "refund_amount":"0", //退款金额(单位: 元)
          "state": 1, //支付状态(0=等待付款 1=已完成付款 2=付款超时关闭 3=已退款 4=已结束[不可退款] 5=支付平台异常)
          "created_time":"2024-05-10 15:33:03", //创建时间
          "updated_time":"2024-05-10 15:34:24", //更新时间
          "pay_url":"", //支付链接
          "extra_data":null,       //附带数据(JSON)
          "message":"Success",            //支付交易信息
          "payer":"civet148@163.com" //支付人信息
        }
      ]
  }
}





```





# 3. 产品类接口

## 3.1 创建产品 (管理端)

Token: required

POST   /api/v1/admin/create/production

**请求JSON**

```json
{
    "name":"标准版包月套餐"                                  //产品名称
	"price":"199",                                         //产品价格(单位: 元)
	"currency":"CNY",                                      //单位(CNY/USD...)
	"state": 0,                                            //状态(0=待上架 1=已上架 2=已下架)
	"language":"zh-CN",                                    //区域语言(中国=zh-CN 英美=en)
	"description":"标准版包月套餐，中小企业福利",             //产品描述
	"trial_days": 7,                                       //产品试用期(单位: 天)
	"expiring_days":31                                     //产品有效期(单位: 天)
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
      "id": 10
  }
}
```


## 3.2 产品列表 (商户和管理端)

Token: required

POST   /api/v1/customer/list/production (**商户端**)  

POST  /api/v1/admin/list/production (**管理端**) 

**请求JSON**

```json
{
    "id": 0, //按产品ID查询
    "name": "", //按产品名称查询
    "serial_no": "", //按产品序列号查询
    "page_no": 0,    
    "page_size": 20
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
      "list": [
        {
            "id": 1, 										   //产品ID
            "name":"标准版包月套餐"                                  //产品名称
            "price":"199",                                         //产品价格(单位: 元)
            "currency":"CNY",                                      //单位(CNY/USD...)
            "state": 0,                                            //状态(0=待上架 1=已上架 2=已下架)
            "language":"zh-CN",                                    //区域语言(中国=zh-CN 英美=en)
            "description":"标准版包月套餐，中小企业福利",             //产品描述
            "trial_days": 7,                                       //产品试用期(单位: 天)
            "expiring_days":31                                     //产品有效期(单位: 天)
            "serial_no": "asfsafasfs"                              //产品序列号(唯一)
            "is_deleted": false,                                   //是否已删除(0=未删除 1=已删除)
            "create_user": "admin",                                //创建人
            "edit_user": "admin",                                  //编辑人
            "created_time":"2024-04-23 10:32:30",  				 //创建时间
            "updated_time":"2024-04-23 10:32:30"   				 //更新时间
        }
      ]
  }
}
```

## 3.3 编辑产品 (管理端)

Token: required

POST   /api/v1/admin/edit/production

**请求JSON**

```json
{
    "id": 1, 										   //产品ID (必填)
    "name":"标准版包月套餐"                                  //产品名称
	"price":"199",                                         //产品价格(单位: 元)
	"currency":"CNY",                                      //单位(CNY/USD...)
	"state": 0,                                            //状态(0=待上架 1=已上架 2=已下架)
	"language":"zh-CN",                                    //区域语言(中国=zh-CN 英美=en)
	"description":"标准版包月套餐，中小企业福利",             //产品描述
	"trial_days": 7,                                       //产品试用期(单位: 天)
	"expiring_days":31                                     //产品有效期(单位: 天)
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
  }
}
```

## 3.4 删除产品 (管理端)

Token: required

POST   /api/v1/admin/delete/production

**请求JSON**

```json
{
    "id": 1 //产品ID (必填)
}
```



**响应JSON**

```json
{
  "header": {
    "code": 0,
    "message": "OK",
    "total": 1,
    "count": 1
  },
  "data": {
  }
}
```



# 4. 客服前端通信协议

[**WEBSOCKET**]

ws://116.213.39.234:8084/ws 

以AI员工的**api key**和**secret key**作为用户名密码采用**BasicAuth**方式鉴权



## 4.1 文本问文本回复

- **请求**

```json
{
  "action": "chat",
  "type": "text", //text: 文本聊天会话 audio: 语音聊天会话
  "content":"中本聪究竟是谁？"
}
```

- **响应**

 推流数据结束标记：|=EOF=| 

```text
这
是
推
流
回
复
.
.
.
|=EOF=|
```



## 4.2 文本问语音回复

- 请求

```json
{
  "action": "chat",
  "type": "audio", //text: 文本聊天会话 audio: 语音聊天会话
  "content":"中本聪究竟是谁？"
}
```

- 响应

语音聊天响应结果以|=JSON=|开始，后面紧跟JSON数据，数据中会带上语音推流URL信息

```text
|=JSON=|{"code":0, "message":"OK", "result":{
    "messageId": "sendMessageReplyAudio",
    "conversationId": "thread_y6f7WDDXV8RhvHQwxZrTK6jS",
    "streamUrl": "rtmp://14.17.80.241:11935/lvm/thread_y6f7WDDXV8RhvHQwxZrTK6jS"
}}
```

失败的情况下返回如下数据

```text
|=JSON=|{"code":502, "message":"dial AI server timeout"}
```



## 4.3 语音问语音回复

前端通过插件先把用户口述内容转成文字，再调用 **4.2 文本问语音回复** 接口完成通信过程



