19 KiB
1. 登录注册类
1.1 发送验证码
请求JSON
{
"user_name":"civet148", //账户名
"email":"civet148@126.com", //邮箱地址
"action_type":0, //操作类型: 0=用户注册 1=重置密码
"language":"en" //语言: en=英文 zh-CN=简体中文
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {}
}
1.2 商户注册
请求JSON
{
"user_name":"civet148@126.com",
"password":"e10adc3949ba59abbe56e057f20f883e",
"email":"civet148@126.com",
"reg_code": "888888"
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {}
}
1.3 商户登录
请求JSON
{
"user_name":"civet148@126.com",
"password":"e10adc3949ba59abbe56e057f20f883e"
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {}
}
1.4 商户退出
请求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
{
"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
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {
"id": 1001
}
}
2.2 员工列表
Token: required
POST /api/v1/customer/list/staff
请求JSON
{
"id": 0, //按员工ID查询
"name": "", //按员工名称查询
"serial_no": "", //按员工序列号查询
"page_no": 0,
"page_size": 20
}
响应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
{
"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
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {}
}
2.4 删除员工
Token: required
POST /api/v1/customer/delete/staff
请求JSON
{
"id": 1 //员工ID (必填)
}
响应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
{
"id": 1 //员工ID
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {}
}
2.6 套餐支付
Token: required
POST /api/v1/customer/pay/staff
请求JSON
{
"id": 1, //需要支付的员工ID
"production_id": 2, //支付套餐ID
"pay_type":"alipay" //支付方式(wxpay=微信支付 alipay=支付宝 stripe=Stripe支付)
}
响应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
{
"trade_no": "NO202404251606089389209168633" //支付订单号
}
响应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
file_name => QQ.jpg
file_data => 图片二进制数据
响应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
{
"staff_id": 1, //员工ID
"page_no": 0,
"page_size": 20
}
响应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
{
"staff_id": 1, //员工ID
"docs":[
{
"file_name":"文档1.docx", //原始文件名
"file_path":"2141242323_文档1.docx", //实际文件存储路径
"file_size": 1412423, //文件大小(字节)
"file_url": "" //文件访问URL
}
]
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": { }
}
2.12 删除培训资料
Token: required
POST /api/v1/customer/delete/doc
请求JSON
{
"staff_id": 1, //员工ID
"ids": [1,2,3] //要删除的文档ID列表
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": { }
}
2.13 同步培训资料
触发同步消息给到AI服务器,更新知识库
Token: required
POST /api/v1/customer/sync/doc
请求JSON
{
"staff_id": 1 //员工ID
}
响应JSON
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {}
}
2.14 序列号查询员工
Token: no
POST /api/v1/customer/query/staff
请求JSON
{
"serial_no": "safasdfsdfs" //按员工序列号查询
}
响应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
{
"id": 0, //按账单ID查询
"page_no": 0,
"page_size": 20
}
{
"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
{
"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
{
"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
{
"id": 0, //按产品ID查询
"name": "", //按产品名称查询
"serial_no": "", //按产品序列号查询
"page_no": 0,
"page_size": 20
}
响应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
{
"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
{
"header": {
"code": 0,
"message": "OK",
"total": 1,
"count": 1
},
"data": {
}
}
3.4 删除产品 (管理端)
Token: required
POST /api/v1/admin/delete/production
请求JSON
{
"id": 1 //产品ID (必填)
}
响应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 文本问文本回复
- 请求
{
"action": "chat",
"type": "text", //text: 文本聊天会话 audio: 语音聊天会话
"content":"中本聪究竟是谁?"
}
- 响应
推流数据结束标记:|=EOF=|
这
是
推
流
回
复
.
.
.
|=EOF=|
4.2 文本问语音回复
- 请求
{
"action": "chat",
"type": "audio", //text: 文本聊天会话 audio: 语音聊天会话
"content":"中本聪究竟是谁?"
}
- 响应
语音聊天响应结果以|=JSON=|开始,后面紧跟JSON数据,数据中会带上语音推流URL信息
|=JSON=|{"code":0, "message":"OK", "result":{
"messageId": "sendMessageReplyAudio",
"conversationId": "thread_y6f7WDDXV8RhvHQwxZrTK6jS",
"streamUrl": "rtmp://14.17.80.241:11935/lvm/thread_y6f7WDDXV8RhvHQwxZrTK6jS"
}}
失败的情况下返回如下数据
|=JSON=|{"code":502, "message":"dial AI server timeout"}
4.3 语音问语音回复
前端通过插件先把用户口述内容转成文字,再调用 4.2 文本问语音回复 接口完成通信过程