hts/apps/staffai/AI员工商户和管理端接口.md

979 lines
19 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 文本问语音回复** 接口完成通信过程