本章描述了身份认证接口,基本工作流程如下
通过用户凭证获取访问令牌和刷新令牌
| 要素 | 说明 |
|---|---|
| Method | POST |
| Endpoint | /oauth/token |
| 协议 | HTTPS(强制要求) |
Content-Type: application/json
Authorization: Basic {base64_encoded_client_credentials}
🔑 客户端凭证生成方式:
echo -n "client_id:client_secret" | base64
{
"grant_type": "password",
"username": "test@icec.com",
"password": "abcdabcd"
}
字段说明:
grant_type:固定值 passwordusername:用户登录邮箱password:用户密码{
"access_token": "943d592f-3f74-416b-b1a2-f3ea89106fd5",
"token_type": "bearer",
"expires_in": 10599,
"refresh_token": "eb7a83e0-a14a-492f-9b4e-4b79fc35bee0",
"scope": "all"
}
字段说明:
access_token:访问令牌,用于后续API请求token_type:令牌类型,固定为 bearerexpires_in:令牌过期时间(秒)refresh_token:刷新令牌,用于刷新访问令牌curl -X POST 'https://oauth.hypers.com.cn/oauth/token' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic cGhcawVkOjMxeDZDQ2pxM3U0M2FIUE8=' \
--data-raw '{
"grant_type": "password",
"username": "test@icec.com",
"password": "adcdabcd"
}'
使用刷新令牌获取新的访问令牌(支持JSON格式)
| 要素 | 说明 |
|---|---|
| Method | POST |
| Endpoint | /oauth/token |
| 协议 | HTTPS(强制要求) |
Content-Type: application/json
Authorization: Basic {base64_encoded_client_credentials}
{
"grant_type": "refresh_token",
"refresh_token": "add1dde0-21ad-4ec2-857e-7dc788306c40"
}
{
"access_token": "233a0639-8db3-4705-9657-002adb7594b1",
"token_type": "bearer",
"expires_in": `10599,
"refresh_token": "3902d5f1-5784-49b9-bfc2-f8bb8b3d7c4f",
"scope": "all"
}
⚠️ 注意:每次刷新后原
refresh_token将失效
curl -X POST 'https://oauth.hypers.com.cn/oauth/token' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic aGhpbWVkOjMxeDZDQ2pxM3U0M2FIUE8=' \
--data-raw '{
"grant_type": "refresh_token",
"refresh_token": "add1dde0-21ad-4ec2-857e-7dc788306c40"
}'
所有认证和授权操作,由API Gateway和Oauth Server统一控制。
在请求头中携带访问令牌:
Authorization: Bearer {access_token}
参考文档《身份认证接口文档》
本章描述了群通知任务API,包括新建、查询、终止、列表查询等操作
POST https://szhl-phiskin.hypers.com.cn/api/v1/notification-tasks
{
"taskName": "双十一促销提醒",
"taskType": "CUSTOMER_RESOURCE_REMINDER",
"scheduledStartTime": "2023-11-10 09:00:00",
"scheduledEndTime": "2023-11-10 19:00:00",
"contents": [
{
"contentType": "TEXT",
"contentValue": "尊敬的{{name}},您的专属优惠即将到期!"
},
{
"contentType": "IMAGE",
"contentValue": "https://szhl.hypers.com.cn/api/file/17"
}
],
"fileIds": [12345, 45678], // 通过文件上传接口上传的Excel的文件ID,与members仅能选一个
"members": [ // 直接通过接口传入会员列表(以及动态参数)
{
"userId": "222", // 与ciq必须存在一个
"ciq": "333",
"nickname": "zhangsan"
}
]
}
字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| taskName | string | 是 | 任务名称(长度≤120) |
| taskType | enum | 是 | APPOINTMENT_REMINDER/CUSTOMER_RESOURCE_REMINDER 预约提醒/客资提醒 |
| scheduledStartTime | datetime | 是 | yyyy-MM-dd HH:mm:ss 任务开始时间 |
| scheduledEndTime | datetime | 否 | yyyy-MM-dd HH:mm:ss 任务结束时间,到期未完成将自动结束。与开始时间必须为同一天,默认当日22:00 |
| contents | array | 是 | 通知内容列表(至少1条) |
| ∟contentType | enum | 是 | TEXT/IMAGE |
| ∟contentValue | string | 是 | 文本内容(变量用{{}}包裹)或图片URL(长度≤1024) |
| fileIds | array(long) | 否 | 与members选其一。 文件上传参考 《文件上传与访问》接口文档 |
| members | array | 否 | 客户列表 (与fileIds选其一) |
| ∟memberId | long | 是 | 会员ID |
| ∟otherParam1 | string | 是 | 其它动态参数(会做校验) |
{
"id": 34,
"createTime": "2025-04-24 14:48:40",
"lastUpdateTime": "2025-04-24 14:49:19",
"taskName": "双十一促销提醒",
"taskType": "CUSTOMER_RESOURCE_REMINDER",
"status": "PENDING",
"scheduledStartTime": "2025-04-24 17:36:40",
"scheduledEndTime": "2025-04-24 18:36:40",
"totalMembers": 2
}
校验规则:
变量匹配GET https://szhl-phiskin.hypers.com.cn/api/v1/notification-tasks/{taskId}
{
"id": 789,
"taskName": "双十一促销提醒",
"taskType": "CUSTOMER_RESOURCE_REMINDER",
"status": "COMPLETED",
"scheduledStartTime": "2023-11-10 09:00:00",
"scheduledEndTime": "2023-11-10 19:00:05",
"statistics": {
"totalMembers": 3,
"successCount": 2
},
"contents": [
{"type":"TEXT","value":"尊敬的{{name}}..."},
{"type":"IMAGE","value":"https://..."}
],
"fileIds": [12345, 45678],
"members": [
]
}
PUT https://szhl-phiskin.hypers.com.cn/api/v1/notification-tasks/{taskId}/termination
{
"reason": "客户临时取消活动"
}
{
"previousStatus": "EXECUTING",
"currentStatus": "TERMINATED"
}
限制条件:
PENDING或EXECUTING状态的任务GET https://szhl-phiskin.hypers.com.cn/api/v1/notification-tasks
| 参数 | 类型 | 说明 |
|---|---|---|
| taskType | enum | 任务类型过滤(必填) |
| status | enum | 状态过滤 |
| startTime | datetime | 查询起始时间(≥ scheduledStartTime) |
| endTime | datetime | 查询结束时间(≤ scheduledStartTime) |
| current | int | 当前页(从0开始) |
| size | int | 分页大小 |
{
"page": {
"current": 0,
"size": 20,
"total": 14
},
"records": [
{
"id": 789,
"taskName": "双十一促销提醒",
"taskType": "CUSTOMER_RESOURCE_REMINDER",
"status": "COMPLETED",
"scheduledStartTime": "2023-11-10 09:00:00",
"scheduledEndTime": "2023-11-10 19:00:00",
"contents": [
{"contentType":"TEXT","contentValue":"尊敬的{{name}}..."},
{"contentType":"IMAGE","contentValue":"https://..."}
]
},
//...其他任务
]
}
GET https://szhl-phiskin.hypers.com.cn/api/v1/notification-tasks/{taskId}/executions
查询指定任务下所有会员的通知执行明细,支持分页查询
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| current | int | 否 | 当前页(从0开始) |
| size | int | 否 | 分页大小(默认20,最大100) |
| orderBy | string | 否 | 排序字段(executeTime/status) |
| orderDirection | string | 否 | 排序方式(ASC/DESC) |
{
"page": {
"current": 0,
"size": 20,
"total": 14
},
"records": [
{
"memberId": 123,
"memberName": "张三(nickname)",
"status": "COMPLETED",
"executeTime": "2024-11-10 09:00:05"
},
{
"memberId": 124,
"memberName": "李四",
"status": "FAILED",
"executeTime": null
}
]
}
响应字段:
task_id: 关联的任务IDtotal_members: 总会员数(非分页总数)executions[]: 执行明细列表
memberId: 会员IDmemberName: nicknamestatus: 执行状态(SUCCESS/FAILED/PENDING)notificationTime: 实际通知时间(成功时有效)failureReason: 失败原因(失败时返回)除特殊标注外,所有API需在请求头中携带访问令牌
Authorization: Bearer {access_token}
POST https://szhl-phiskin.hypers.com.cn/api/v1/file
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
| 参数名称 | 位置 | 类型 | 必填 | 验证规则 | 说明 |
|---|---|---|---|---|---|
| file | formData | file | 是 | 文件名非空,文件内容非空 | 上传的文件(支持任意文件类型) |
| moduleName | formData | string | 是 | 长度1-50,仅允许字母数字和下划线 | 业务模块标识(如:notification) |
curl --location --request POST 'https://szhl.hypers.com.cn/api/file' \
--header 'Authorization: Bearer {access_token}' \
--form 'file=@"/path/to/file.pdf"' \
--form 'moduleName="notification"'
{
"id": 123456,
"fileName": "report.pdf",
"signature": "a1b2c3d4...(SHA-256哈希值)",
"fileSize": 1048576,
"createTime": 1741773532634
}
| 字段 | 类型 | 格式 | 说明 |
|---|---|---|---|
| id | Long | - | 文件唯一标识(可用于后续下载操作) |
| fileName | String | 原始文件名 | 上传时的完整文件名(包含扩展名) |
| signature | String | 64字符HEX字符串 | 基于文件内容生成的SHA-256哈希值(用于内容去重) |
| fileSize | Long | 字节数 | 文件实际大小(单位:bytes) |
| createTime | Date | 时间戳 | 文件创建时间 |
GET https://szhl-phiskin.hypers.com.cn/api/v1/file/{id}
⚠️ 本接口无需认证
| 参数 | 类型 | 验证规则 | 说明 |
|---|---|---|---|
| id | Long | 正整数 | 文件上传时返回的ID |
HTTP/1.1 200 OK
Content-Type: {根据文件类型自动判断} # 如:image/png, application/pdf
Content-Disposition: inline; filename="report.pdf" # 保持原始文件名
Cache-Control: public, max-age=31536000 # 基于内容哈希的长期缓存
直接返回文件二进制流,响应头包含:
Content-Length: 文件大小(与fileSize字段一致)Last-Modified: 文件创建时间(与createTime字段一致)可直接通过本接口访问图片文件
如:https://szhl-phiskin.hypers.com.cn/api/file/17
GET /api/v1/marketing-notice/group
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| current | query | integer | 否 | 分页字段 当前页,从 0 开始 |
| size | query | integer | 否 | 分页字段 页长度 |
| orderBy | query | array[string] | 否 | 排序字段名称 |
| orderDirection | query | string | 否 | 排序方式 |
| orderNullHandling | query | string | 否 | 排序空值处理 |
| keyWord | query | string | 否 | 搜索关键字 |
| ids | query | string | 否 | 分组id过滤 |
current: 分页字段 当前页,从 0 开始
默认为空,不分页
orderDirection: 排序方式
ASC :ASC
DESC :DESC
orderNullHandling: 排序空值处理
NATIVE :Lets the data store decide what to do with nulls.
NULLS_FIRST :A hint to the used data store to order entries with null values before non null entries.
NULLS_LAST :A hint to the used data store to order entries with null values after non null entries.
| 属性 | 值 |
|---|---|
| orderDirection | ASC |
| orderDirection | DESC |
| orderNullHandling | NATIVE |
| orderNullHandling | NULLS_FIRST |
| orderNullHandling | NULLS_LAST |
返回示例
200 Response
{
"content": [
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": ""
}
],
"pageable": {
"paged": false,
"unpaged": false,
"pageNumber": 0,
"pageSize": 0,
"offset": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
]
},
"total": 0,
"empty": false,
"number": 0,
"size": 0,
"numberOfElements": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
],
"first": false,
"last": false,
"totalPages": 0,
"totalElements": 0
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » content | [MarketingNoticeGroupOutput] | false | none | none | |
| »» id | integer(int64) | false | none | 组id | |
| »» createTime | string | false | none | 创建时间 | |
| »» lastUpdateTime | string | false | none | 最后修改时间 | |
| »» name | string | false | none | 名称 | |
| » pageable | Pageable | false | none | none | |
| »» paged | boolean | false | none | Returns whether the current{@link Pageable} contains pagination information. | |
| »» unpaged | boolean | false | none | Returns whether the current{@link Pageable} does not contain pagination information. | |
| »» pageNumber | integer | false | none | Returns the page to be returned. | |
| »» pageSize | integer | false | none | Returns the number of items to be returned. | |
| »» offset | integer(int64) | false | none | Returns the offset to be taken according to the underlying page and page size. | |
| »» sort | [Sort] | false | none | Returns the sorting parameters. | |
| »»» direction | string | false | none | none | |
| »»» property | string | false | none | none | |
| »»» ignoreCase | boolean | false | none | none | |
| »»» nullHandling | string | false | none | none | |
| »»» ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| »»» descending | boolean | false | none | Returns whether sorting for this property shall be descending. | |
| » total | integer(int64) | false | none | none | |
| » empty | boolean | false | none | Returns whether the current{@link Streamable} is empty. | |
| » number | integer | false | none | none | |
| » size | integer | false | none | none | |
| » numberOfElements | integer | false | none | none | |
| » sort | [Sort] | false | none | none | |
| »» direction | string | false | none | none | |
| »» property | string | false | none | none | |
| »» ignoreCase | boolean | false | none | none | |
| »» nullHandling | string | false | none | none | |
| »» ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| »» descending | boolean | false | none | Returns whether sorting for this property shall be descending. | |
| » first | boolean | false | none | none | |
| » last | boolean | false | none | none | |
| » totalPages | integer | false | none | none | |
| » totalElements | integer(int64) | false | none | none |
| 属性 | 值 |
|---|---|
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
POST /api/v1/marketing-notice/group
Body 请求参数
{
"name": "string"
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| body | body | MarketingNoticeGroupInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 组id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 |
DELETE /api/v1/marketing-notice/group/
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
PUT /api/v1/marketing-notice/group/
Body 请求参数
{
"name": "string"
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
| body | body | MarketingNoticeGroupInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 组id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 |
GET /api/v1/marketing-notice/group/
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 组id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 |
POST /api/v1/marketing-notice/scene
Body 请求参数
{
"name": "string",
"statisticalMethod": "GRAND_TOTAL",
"prompt": "string",
"externalId": "string",
"planId": 0
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| body | body | ConversationalTaskSceneInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"statisticalMethod": "",
"prompt": "",
"externalId": "",
"sceneType": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 场景id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 场景名称 | |
| » statisticalMethod | string | false | none | 统计方式 | |
| » prompt | string | false | none | 场景提示词 | |
| » externalId | string | false | none | 外部id | |
| » sceneType | string | false | none | 场景类型 |
| 属性 | 值 |
|---|---|
| statisticalMethod | GRAND_TOTAL |
| statisticalMethod | ONLY |
| sceneType | SYSTEM |
| sceneType | CUSTOM |
GET /api/v1/marketing-notice/scene
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| current | query | integer | 否 | 分页字段 当前页,从 0 开始 |
| size | query | integer | 否 | 分页字段 页长度 |
| orderBy | query | array[string] | 否 | 排序字段名称 |
| orderDirection | query | string | 否 | 排序方式 |
| orderNullHandling | query | string | 否 | 排序空值处理 |
| keyWord | query | string | 否 | 搜索关键字 |
| externalId | query | string | 否 | 外部计划id |
| planId | query | integer(int64) | 否 | 关联的计划id |
current: 分页字段 当前页,从 0 开始
默认为空,不分页
orderDirection: 排序方式
ASC :ASC
DESC :DESC
orderNullHandling: 排序空值处理
NATIVE :Lets the data store decide what to do with nulls.
NULLS_FIRST :A hint to the used data store to order entries with null values before non null entries.
NULLS_LAST :A hint to the used data store to order entries with null values after non null entries.
| 属性 | 值 |
|---|---|
| orderDirection | ASC |
| orderDirection | DESC |
| orderNullHandling | NATIVE |
| orderNullHandling | NULLS_FIRST |
| orderNullHandling | NULLS_LAST |
返回示例
200 Response
{
"content": [
{}
],
"pageable": {
"paged": false,
"unpaged": false,
"pageNumber": 0,
"pageSize": 0,
"offset": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
]
},
"total": 0,
"empty": false,
"number": 0,
"size": 0,
"numberOfElements": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
],
"first": false,
"last": false,
"totalPages": 0,
"totalElements": 0
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » content | [object] | false | none | none | |
| » pageable | Pageable | false | none | none | |
| »» paged | boolean | false | none | Returns whether the current{@link Pageable} contains pagination information. | |
| »» unpaged | boolean | false | none | Returns whether the current{@link Pageable} does not contain pagination information. | |
| »» pageNumber | integer | false | none | Returns the page to be returned. | |
| »» pageSize | integer | false | none | Returns the number of items to be returned. | |
| »» offset | integer(int64) | false | none | Returns the offset to be taken according to the underlying page and page size. | |
| »» sort | [Sort] | false | none | Returns the sorting parameters. | |
| »»» direction | string | false | none | none | |
| »»» property | string | false | none | none | |
| »»» ignoreCase | boolean | false | none | none | |
| »»» nullHandling | string | false | none | none | |
| »»» ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| »»» descending | boolean | false | none | Returns whether sorting for this property shall be descending. | |
| » total | integer(int64) | false | none | none | |
| » empty | boolean | false | none | Returns whether the current{@link Streamable} is empty. | |
| » number | integer | false | none | none | |
| » size | integer | false | none | none | |
| » numberOfElements | integer | false | none | none | |
| » sort | [Sort] | false | none | none | |
| »» direction | string | false | none | none | |
| »» property | string | false | none | none | |
| »» ignoreCase | boolean | false | none | none | |
| »» nullHandling | string | false | none | none | |
| »» ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| »» descending | boolean | false | none | Returns whether sorting for this property shall be descending. | |
| » first | boolean | false | none | none | |
| » last | boolean | false | none | none | |
| » totalPages | integer | false | none | none | |
| » totalElements | integer(int64) | false | none | none |
| 属性 | 值 |
|---|---|
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
PUT /api/v1/marketing-notice/scene/
Body 请求参数
{
"name": "string",
"prompt": "string",
"externalId": "string"
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
| body | body | ConversationalTaskSceneUpdateInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"statisticalMethod": "",
"prompt": "",
"externalId": "",
"sceneType": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 场景id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 场景名称 | |
| » statisticalMethod | string | false | none | 统计方式 | |
| » prompt | string | false | none | 场景提示词 | |
| » externalId | string | false | none | 外部id | |
| » sceneType | string | false | none | 场景类型 |
| 属性 | 值 |
|---|---|
| statisticalMethod | GRAND_TOTAL |
| statisticalMethod | ONLY |
| sceneType | SYSTEM |
| sceneType | CUSTOM |
GET /api/v1/marketing-notice/scene/
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"statisticalMethod": "",
"prompt": "",
"externalId": "",
"sceneType": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 场景id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 场景名称 | |
| » statisticalMethod | string | false | none | 统计方式 | |
| » prompt | string | false | none | 场景提示词 | |
| » externalId | string | false | none | 外部id | |
| » sceneType | string | false | none | 场景类型 |
| 属性 | 值 |
|---|---|
| statisticalMethod | GRAND_TOTAL |
| statisticalMethod | ONLY |
| sceneType | SYSTEM |
| sceneType | CUSTOM |
PATCH /api/v1/marketing-notice/scene/{id}/unbundled-externalId
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"statisticalMethod": "",
"prompt": "",
"externalId": "",
"sceneType": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 场景id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 场景名称 | |
| » statisticalMethod | string | false | none | 统计方式 | |
| » prompt | string | false | none | 场景提示词 | |
| » externalId | string | false | none | 外部id | |
| » sceneType | string | false | none | 场景类型 |
| 属性 | 值 |
|---|---|
| statisticalMethod | GRAND_TOTAL |
| statisticalMethod | ONLY |
| sceneType | SYSTEM |
| sceneType | CUSTOM |
POST /api/v1/marketing-notice
Body 请求参数
{
"options": "DRAFT",
"data": {
"name": "string",
"groupId": 0,
"description": "string",
"startTime": "string",
"endTime": "string",
"replyStrategy": "CONSULTANT_CONTINUE_AFTER_REPLY",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "string",
"minReplyInterval": 0,
"sceneIds": [
0
],
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
"AI_SERVICE_END_UNTIL_RESTART"
]
}
],
"prompt": "string",
"backgroundInfo": "string",
"timeInfo": "string",
"referenceCase": "string",
"timeoutWakeUp": true,
"timeout": 0,
"timeoutPrompt": "string",
"greetings": [
{
"type": "IMAGE"
}
]
}
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| body | body | MarketingNoticeInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"groupId": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"description": "",
"startTime": "",
"endTime": "",
"replyStrategy": "",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "",
"minReplyInterval": 0,
"prompt": "",
"backgroundInfo": "",
"timeInfo": "",
"referenceCase": "",
"timeoutWakeUp": false,
"timeout": 0,
"timeoutPrompt": "",
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
""
]
}
],
"status": "",
"greetings": [
{
"type": ""
}
]
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 营销通知版本记录id | |
| » groupId | integer(int64) | false | none | 关联的组id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 | |
| » description | string | false | none | 描述 | |
| » startTime | string | false | none | 任务时间段的开始时间 | |
| » endTime | string | false | none | 任务时间段的结束时间 | |
| » replyStrategy | string | false | none | 回复策略 | |
| » replyDelay | integer | false | none | 回复延迟 | |
| » unifiedReply | boolean | false | none | 是否统一回复 | |
| » segmentSeparator | string | false | none | 段落分隔符 | |
| » minReplyInterval | integer | false | none | 最小回复间隔 | |
| » prompt | string | false | none | 提示词 | |
| » backgroundInfo | string | false | none | 营销通知背景信息 | |
| » timeInfo | string | false | none | 营销通知时间信息 | |
| » referenceCase | string | false | none | 营销通知引用案例 | |
| » timeoutWakeUp | boolean | false | none | 是否开启超时唤醒 | |
| » timeout | integer | false | none | 超时唤醒时间,单位分 | |
| » timeoutPrompt | string | false | none | 超时唤醒提示词 | |
| » monitoringStrategy | [MonitoringStrategyMo] | false | none | 监控策略 | |
| »» sceneId | integer(int64) | false | none | 使用的场景id | |
| »» strategy | [string] | false | none | 触发场景后执行的策略 | |
| » status | string | false | none | 状态 | |
| » greetings | [ConversationalTaskGreetingMo] | false | none | 开场白 | |
| »» type | string | true | none | 类型 |
| 属性 | 值 |
|---|---|
| replyStrategy | CONSULTANT_CONTINUE_AFTER_REPLY |
| replyStrategy | CONSULTANT_NO_FURTHER_REPLY |
| replyStrategy | AI_HOSTING_END_AFTER_REPLY |
| status | DRAFT |
| status | EXECUTION |
| status | TERMINATION |
| status | COMPLETE |
| type | IMAGE |
| type | TEXT |
GET /api/v1/marketing-notice
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| current | query | integer | 否 | 分页字段 当前页,从 0 开始 |
| size | query | integer | 否 | 分页字段 页长度 |
| orderBy | query | array[string] | 否 | 排序字段名称 |
| orderDirection | query | string | 否 | 排序方式 |
| orderNullHandling | query | string | 否 | 排序空值处理 |
| keyWord | query | string | 否 | 搜索关键字 |
| groupIds | query | string | 否 | 分组id |
| status | query | string | 否 | 查询状态 |
current: 分页字段 当前页,从 0 开始
默认为空,不分页
orderDirection: 排序方式
ASC :ASC
DESC :DESC
orderNullHandling: 排序空值处理
NATIVE :Lets the data store decide what to do with nulls.
NULLS_FIRST :A hint to the used data store to order entries with null values before non null entries.
NULLS_LAST :A hint to the used data store to order entries with null values after non null entries.
status: 查询状态
DRAFT :草稿
EXECUTION :执行中
TERMINATION :终止
COMPLETE :完成
| 属性 | 值 |
|---|---|
| orderDirection | ASC |
| orderDirection | DESC |
| orderNullHandling | NATIVE |
| orderNullHandling | NULLS_FIRST |
| orderNullHandling | NULLS_LAST |
| status | DRAFT |
| status | EXECUTION |
| status | TERMINATION |
| status | COMPLETE |
返回示例
200 Response
{
"records": [
{
"groupId": 0,
"groupName": "",
"plan": [
{
"id": 0,
"name": "",
"memberNumber": 0,
"lastTriggerTime": "",
"contactSuccessOfPeopl": 0,
"completeServiceOfPeopl": 0,
"effectiveCommunicationOfPeopl": 0,
"invitationSuccessfulOfPeopl": 0,
"status": "",
"taskCount": 0
}
]
}
],
"page": {
"current": 0,
"size": 0,
"total": 0
},
"summary": {}
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » records | [MarketingNoticeGroupListOutput] | false | none | none | |
| »» groupId | integer(int64) | false | none | 组id | |
| »» groupName | string | false | none | 组名称 | |
| »» plan | [MarketingNoticeListOutput] | false | none | 关联计划 | |
| »»» id | integer(int64) | false | none | 营销通知计划id | |
| »»» name | string | false | none | 名称 | |
| »»» memberNumber | integer(int64) | false | none | 成员数量 | |
| »»» lastTriggerTime | string | false | none | 最近触发时间 | |
| »»» contactSuccessOfPeopl | integer(int64) | false | none | 联系成功人数 | |
| »»» completeServiceOfPeopl | integer(int64) | false | none | 完成服务人数 | |
| »»» effectiveCommunicationOfPeopl | integer(int64) | false | none | 有效沟通人数 | |
| »»» invitationSuccessfulOfPeopl | integer(int64) | false | none | 预约成功人数 | |
| »»» status | string | false | none | 状态 | |
| »»» taskCount | integer(int64) | false | none | 子任务数量,及批次 | |
| » page | RespPage | false | none | none | |
| »» current | integer(int64) | false | none | none | |
| »» size | integer(int64) | false | none | none | |
| »» total | integer(int64) | false | none | none | |
| » summary | object | false | none | none |
| 属性 | 值 |
|---|---|
| status | DRAFT |
| status | EXECUTION |
| status | TERMINATION |
| status | COMPLETE |
PUT /api/v1/marketing-notice/
Body 请求参数
{
"options": "DRAFT",
"data": {
"name": "string",
"groupId": 0,
"description": "string",
"startTime": "string",
"endTime": "string",
"replyStrategy": "CONSULTANT_CONTINUE_AFTER_REPLY",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "string",
"minReplyInterval": 0,
"sceneIds": [
0
],
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
"AI_SERVICE_END_UNTIL_RESTART"
]
}
],
"prompt": "string",
"backgroundInfo": "string",
"timeInfo": "string",
"referenceCase": "string",
"timeoutWakeUp": true,
"timeout": 0,
"timeoutPrompt": "string",
"greetings": [
{
"type": "IMAGE"
}
]
}
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
| body | body | MarketingNoticeInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"groupId": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"description": "",
"startTime": "",
"endTime": "",
"replyStrategy": "",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "",
"minReplyInterval": 0,
"prompt": "",
"backgroundInfo": "",
"timeInfo": "",
"referenceCase": "",
"timeoutWakeUp": false,
"timeout": 0,
"timeoutPrompt": "",
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
""
]
}
],
"status": "",
"greetings": [
{
"type": ""
}
]
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 营销通知版本记录id | |
| » groupId | integer(int64) | false | none | 关联的组id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 | |
| » description | string | false | none | 描述 | |
| » startTime | string | false | none | 任务时间段的开始时间 | |
| » endTime | string | false | none | 任务时间段的结束时间 | |
| » replyStrategy | string | false | none | 回复策略 | |
| » replyDelay | integer | false | none | 回复延迟 | |
| » unifiedReply | boolean | false | none | 是否统一回复 | |
| » segmentSeparator | string | false | none | 段落分隔符 | |
| » minReplyInterval | integer | false | none | 最小回复间隔 | |
| » prompt | string | false | none | 提示词 | |
| » backgroundInfo | string | false | none | 营销通知背景信息 | |
| » timeInfo | string | false | none | 营销通知时间信息 | |
| » referenceCase | string | false | none | 营销通知引用案例 | |
| » timeoutWakeUp | boolean | false | none | 是否开启超时唤醒 | |
| » timeout | integer | false | none | 超时唤醒时间,单位分 | |
| » timeoutPrompt | string | false | none | 超时唤醒提示词 | |
| » monitoringStrategy | [MonitoringStrategyMo] | false | none | 监控策略 | |
| »» sceneId | integer(int64) | false | none | 使用的场景id | |
| »» strategy | [string] | false | none | 触发场景后执行的策略 | |
| » status | string | false | none | 状态 | |
| » greetings | [ConversationalTaskGreetingMo] | false | none | 开场白 | |
| »» type | string | true | none | 类型 |
| 属性 | 值 |
|---|---|
| replyStrategy | CONSULTANT_CONTINUE_AFTER_REPLY |
| replyStrategy | CONSULTANT_NO_FURTHER_REPLY |
| replyStrategy | AI_HOSTING_END_AFTER_REPLY |
| status | DRAFT |
| status | EXECUTION |
| status | TERMINATION |
| status | COMPLETE |
| type | IMAGE |
| type | TEXT |
GET /api/v1/marketing-notice/
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{
"id": 0,
"groupId": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"description": "",
"startTime": "",
"endTime": "",
"replyStrategy": "",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "",
"minReplyInterval": 0,
"prompt": "",
"backgroundInfo": "",
"timeInfo": "",
"referenceCase": "",
"timeoutWakeUp": false,
"timeout": 0,
"timeoutPrompt": "",
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
""
]
}
],
"status": "",
"greetings": [
{
"type": ""
}
]
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 营销通知版本记录id | |
| » groupId | integer(int64) | false | none | 关联的组id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 | |
| » description | string | false | none | 描述 | |
| » startTime | string | false | none | 任务时间段的开始时间 | |
| » endTime | string | false | none | 任务时间段的结束时间 | |
| » replyStrategy | string | false | none | 回复策略 | |
| » replyDelay | integer | false | none | 回复延迟 | |
| » unifiedReply | boolean | false | none | 是否统一回复 | |
| » segmentSeparator | string | false | none | 段落分隔符 | |
| » minReplyInterval | integer | false | none | 最小回复间隔 | |
| » prompt | string | false | none | 提示词 | |
| » backgroundInfo | string | false | none | 营销通知背景信息 | |
| » timeInfo | string | false | none | 营销通知时间信息 | |
| » referenceCase | string | false | none | 营销通知引用案例 | |
| » timeoutWakeUp | boolean | false | none | 是否开启超时唤醒 | |
| » timeout | integer | false | none | 超时唤醒时间,单位分 | |
| » timeoutPrompt | string | false | none | 超时唤醒提示词 | |
| » monitoringStrategy | [MonitoringStrategyMo] | false | none | 监控策略 | |
| »» sceneId | integer(int64) | false | none | 使用的场景id | |
| »» strategy | [string] | false | none | 触发场景后执行的策略 | |
| » status | string | false | none | 状态 | |
| » greetings | [ConversationalTaskGreetingMo] | false | none | 开场白 | |
| »» type | string | true | none | 类型 |
| 属性 | 值 |
|---|---|
| replyStrategy | CONSULTANT_CONTINUE_AFTER_REPLY |
| replyStrategy | CONSULTANT_NO_FURTHER_REPLY |
| replyStrategy | AI_HOSTING_END_AFTER_REPLY |
| status | DRAFT |
| status | EXECUTION |
| status | TERMINATION |
| status | COMPLETE |
| type | IMAGE |
| type | TEXT |
DELETE /api/v1/marketing-notice/
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
GET /api/v1/marketing-notice/members/template
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
POST /api/v1/marketing-notice/{id}/task
Body 请求参数
{
"name": "string",
"startTime": "string",
"fileIds": [
0
]
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
| body | body | ConversationalTaskInput | 否 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"status": "",
"totalMember": 0,
"startDate": "",
"startTime": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 任务id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 | |
| » status | string | false | none | 状态 | |
| » totalMember | integer | false | none | 总人数 | |
| » startDate | string | false | none | 开始时间 yyyy-MM-dd | |
| » startTime | string | false | none | 开始时间 HH:mm |
| 属性 | 值 |
|---|---|
| status | NOT_STARTED |
| status | EXECUTION |
| status | TERMINATING |
| status | TERMINATION |
| status | COMPLETE |
| status | IGNORE |
GET /api/v1/marketing-notice/{id}/task
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
| current | query | integer | 否 | 分页字段 当前页,从 0 开始 |
| size | query | integer | 否 | 分页字段 页长度 |
| orderBy | query | array[string] | 否 | 排序字段名称 |
| orderDirection | query | string | 否 | 排序方式 |
| orderNullHandling | query | string | 否 | 排序空值处理 |
| keyWord | query | string | 否 | 搜索关键字 |
current: 分页字段 当前页,从 0 开始
默认为空,不分页
orderDirection: 排序方式
ASC :ASC
DESC :DESC
orderNullHandling: 排序空值处理
NATIVE :Lets the data store decide what to do with nulls.
NULLS_FIRST :A hint to the used data store to order entries with null values before non null entries.
NULLS_LAST :A hint to the used data store to order entries with null values after non null entries.
| 属性 | 值 |
|---|---|
| orderDirection | ASC |
| orderDirection | DESC |
| orderNullHandling | NATIVE |
| orderNullHandling | NULLS_FIRST |
| orderNullHandling | NULLS_LAST |
返回示例
200 Response
{
"content": [
{
"": {}
}
],
"pageable": {
"paged": false,
"unpaged": false,
"pageNumber": 0,
"pageSize": 0,
"offset": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
]
},
"total": 0,
"empty": false,
"number": 0,
"size": 0,
"numberOfElements": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
],
"first": false,
"last": false,
"totalPages": 0,
"totalElements": 0
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | PageMapObject |
GET /api/v1/marketing-notice/task/
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| taskId | path | integer | 是 | none |
返回示例
200 Response
{
"id": 0,
"createTime": "",
"lastUpdateTime": "",
"name": "",
"status": "",
"totalMember": 0,
"startDate": "",
"startTime": ""
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » id | integer(int64) | false | none | 任务id | |
| » createTime | string | false | none | 创建时间 | |
| » lastUpdateTime | string | false | none | 最后修改时间 | |
| » name | string | false | none | 名称 | |
| » status | string | false | none | 状态 | |
| » totalMember | integer | false | none | 总人数 | |
| » startDate | string | false | none | 开始时间 yyyy-MM-dd | |
| » startTime | string | false | none | 开始时间 HH:mm |
| 属性 | 值 |
|---|---|
| status | NOT_STARTED |
| status | EXECUTION |
| status | TERMINATING |
| status | TERMINATION |
| status | COMPLETE |
| status | IGNORE |
GET /api/v1/marketing-notice/{id}/task/schema
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
[
{
"label": "",
"key": "",
"type": ""
}
]
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| anonymous | [TaskListSchemaOutput] | false | none | none | |
| » label | string | false | none | 显示名称 | |
| » key | string | false | none | 绑定键 | |
| » type | string | false | none | 字段类型 |
| 属性 | 值 |
|---|---|
| type | STRING |
| type | NUMBER |
| type | DATE |
PATCH /api/v1/marketing-notice/{id}/termination
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
PATCH /api/v1/marketing-notice/{id}/enable
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
GET /api/v1/marketing-notice/{id}/report
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | path | integer | 是 | none |
返回示例
200 Response
{
"completeServiceOfPeopl": 0,
"completeServiceRate": 0,
"contactSuccessOfPeopl": 0,
"contactSuccessRate": 0,
"effectiveCommunicationOfPeopl": 0,
"effectiveCommunicationRate": 0,
"invitationSuccessfulOfPeopl": 0,
"invitationSuccessfulRate": 0,
"plannedNumberOfPeopl": 0,
"sceneStatistics": [
{
"id": 0,
"name": "",
"number": 0
}
]
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » completeServiceOfPeopl | integer(int64) | false | none | 完成服务人数 | |
| » completeServiceRate | number | false | none | 完成服务率 | |
| » contactSuccessOfPeopl | integer(int64) | false | none | 联系成功人数 | |
| » contactSuccessRate | number | false | none | 联系成功率 | |
| » effectiveCommunicationOfPeopl | integer(int64) | false | none | 有效沟通人数 | |
| » effectiveCommunicationRate | number | false | none | 有效沟通率 | |
| » invitationSuccessfulOfPeopl | integer(int64) | false | none | 邀约成功人数 | |
| » invitationSuccessfulRate | number | false | none | 邀约成功率 | |
| » plannedNumberOfPeopl | integer(int64) | false | none | 计划人数 | |
| » sceneStatistics | [SceneStatisticOutput] | false | none | none | |
| »» id | integer(int64) | false | none | 场景id | |
| »» name | string | false | none | 场景名称 | |
| »» number | integer(int64) | false | none | 场景值 |
GET /api/v1/marketing-notice/task/{taskId}/members
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| taskId | path | integer | 是 | none |
| current | query | integer | 否 | 分页字段 当前页,从 0 开始 |
| size | query | integer | 否 | 分页字段 页长度 |
| orderBy | query | array[string] | 否 | 排序字段名称 |
| orderDirection | query | string | 否 | 排序方式 |
| orderNullHandling | query | string | 否 | 排序空值处理 |
| keyWord | query | string | 否 | 搜索关键字 |
| status | query | string | 否 | 状态 |
| sceneIds | query | string | 否 | 场景 |
| moodValue | query | string | 否 | 心情值 |
current: 分页字段 当前页,从 0 开始
默认为空,不分页
orderDirection: 排序方式
ASC :ASC
DESC :DESC
orderNullHandling: 排序空值处理
NATIVE :Lets the data store decide what to do with nulls.
NULLS_FIRST :A hint to the used data store to order entries with null values before non null entries.
NULLS_LAST :A hint to the used data store to order entries with null values after non null entries.
status: 状态
NOT_REACHED :未触达
IN_SERVICE :服务中
TERMINATE_SERVICE :终止服务
CUSTOMER_SERVICE_INTERVENES :客服介入
COMPLETE_SERVICE :完成服务
IGNORE :忽略
TIMEOUT_COMPLETE_SERVICE :超时完成
| 属性 | 值 |
|---|---|
| orderDirection | ASC |
| orderDirection | DESC |
| orderNullHandling | NATIVE |
| orderNullHandling | NULLS_FIRST |
| orderNullHandling | NULLS_LAST |
| status | NOT_REACHED |
| status | IN_SERVICE |
| status | TERMINATE_SERVICE |
| status | CUSTOMER_SERVICE_INTERVENES |
| status | COMPLETE_SERVICE |
| status | IGNORE |
| status | TIMEOUT_COMPLETE_SERVICE |
返回示例
200 Response
{
"content": [
{}
],
"pageable": {
"paged": false,
"unpaged": false,
"pageNumber": 0,
"pageSize": 0,
"offset": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
]
},
"total": 0,
"empty": false,
"number": 0,
"size": 0,
"numberOfElements": 0,
"sort": [
{
"direction": "",
"property": "",
"ignoreCase": false,
"nullHandling": "",
"ascending": false,
"descending": false
}
],
"first": false,
"last": false,
"totalPages": 0,
"totalElements": 0
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » content | [object] | false | none | none | |
| » pageable | Pageable | false | none | none | |
| »» paged | boolean | false | none | Returns whether the current{@link Pageable} contains pagination information. | |
| »» unpaged | boolean | false | none | Returns whether the current{@link Pageable} does not contain pagination information. | |
| »» pageNumber | integer | false | none | Returns the page to be returned. | |
| »» pageSize | integer | false | none | Returns the number of items to be returned. | |
| »» offset | integer(int64) | false | none | Returns the offset to be taken according to the underlying page and page size. | |
| »» sort | [Sort] | false | none | Returns the sorting parameters. | |
| »»» direction | string | false | none | none | |
| »»» property | string | false | none | none | |
| »»» ignoreCase | boolean | false | none | none | |
| »»» nullHandling | string | false | none | none | |
| »»» ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| »»» descending | boolean | false | none | Returns whether sorting for this property shall be descending. | |
| » total | integer(int64) | false | none | none | |
| » empty | boolean | false | none | Returns whether the current{@link Streamable} is empty. | |
| » number | integer | false | none | none | |
| » size | integer | false | none | none | |
| » numberOfElements | integer | false | none | none | |
| » sort | [Sort] | false | none | none | |
| »» direction | string | false | none | none | |
| »» property | string | false | none | none | |
| »» ignoreCase | boolean | false | none | none | |
| »» nullHandling | string | false | none | none | |
| »» ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| »» descending | boolean | false | none | Returns whether sorting for this property shall be descending. | |
| » first | boolean | false | none | none | |
| » last | boolean | false | none | none | |
| » totalPages | integer | false | none | none | |
| » totalElements | integer(int64) | false | none | none |
| 属性 | 值 |
|---|---|
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
GET /api/v1/marketing-notice/task/{taskId}/report
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| taskId | path | integer | 是 | none |
返回示例
200 Response
{
"completeServiceOfPeopl": 0,
"completeServiceRate": 0,
"contactSuccessOfPeopl": 0,
"contactSuccessRate": 0,
"effectiveCommunicationOfPeopl": 0,
"effectiveCommunicationRate": 0,
"invitationSuccessfulOfPeopl": 0,
"invitationSuccessfulRate": 0,
"plannedNumberOfPeopl": 0,
"sceneStatistics": [
{
"id": 0,
"name": "",
"number": 0
}
]
}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » completeServiceOfPeopl | integer(int64) | false | none | 完成服务人数 | |
| » completeServiceRate | number | false | none | 完成服务率 | |
| » contactSuccessOfPeopl | integer(int64) | false | none | 联系成功人数 | |
| » contactSuccessRate | number | false | none | 联系成功率 | |
| » effectiveCommunicationOfPeopl | integer(int64) | false | none | 有效沟通人数 | |
| » effectiveCommunicationRate | number | false | none | 有效沟通率 | |
| » invitationSuccessfulOfPeopl | integer(int64) | false | none | 邀约成功人数 | |
| » invitationSuccessfulRate | number | false | none | 邀约成功率 | |
| » plannedNumberOfPeopl | integer(int64) | false | none | 计划人数 | |
| » sceneStatistics | [SceneStatisticOutput] | false | none | none | |
| »» id | integer(int64) | false | none | 场景id | |
| »» name | string | false | none | 场景名称 | |
| »» number | integer(int64) | false | none | 场景值 |
PATCH /api/v1/marketing-notice/task/{taskId}/enable
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| taskId | path | integer | 是 | none |
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
PATCH /api/v1/marketing-notice/task/{taskId}/termination
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| taskId | path | integer | 是 | none |
返回示例
200 Response
{}
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
GET https://szhl-phiskin.hypers.com.cn/api/v1/members/{id}/daily-reports
| 参数 | 类型 | 说明 |
|---|---|---|
| startDate | datetime | yyyy-MM-dd |
| endDate | datetime | yyyy-MM-dd |
| keyword | String | 报告关键词过滤 |
| 字段 | 说明 |
|---|---|
| reportDate | 报告日期 |
| moodValues | 心情值 |
| scenes | 触发场景 |
| content | 日报内容 |
{
"records": [
{
"reportDate": "2025-04-21",
"moodValues": ["满意"],
"scenes": [
"转人工"
],
"content": "用于同意明天到店参加xxx活动"
},
{
"reportDate": "2025-04-10",
"moodValues": [
],
"scenes": [
"完成服务"
]
}
]
}
{
"direction": "ASC",
"property": "string",
"ignoreCase": true,
"nullHandling": "NATIVE",
"ascending": true,
"descending": true
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| direction | string | false | none | none | |
| property | string | false | none | none | |
| ignoreCase | boolean | false | none | none | |
| nullHandling | string | false | none | none | |
| ascending | boolean | false | none | Returns whether sorting for this property shall be ascending. | |
| descending | boolean | false | none | Returns whether sorting for this property shall be descending. |
| 属性 | 值 |
|---|---|
| direction | ASC |
| direction | DESC |
| nullHandling | NATIVE |
| nullHandling | NULLS_FIRST |
| nullHandling | NULLS_LAST |
{
"paged": true,
"unpaged": true,
"pageNumber": 0,
"pageSize": 0,
"offset": 0,
"sort": [
{
"direction": "ASC",
"property": "string",
"ignoreCase": true,
"nullHandling": "NATIVE",
"ascending": true,
"descending": true
}
]
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| paged | boolean | false | none | Returns whether the current{@link Pageable} contains pagination information. | |
| unpaged | boolean | false | none | Returns whether the current{@link Pageable} does not contain pagination information. | |
| pageNumber | integer | false | none | Returns the page to be returned. | |
| pageSize | integer | false | none | Returns the number of items to be returned. | |
| offset | integer(int64) | false | none | Returns the offset to be taken according to the underlying page and page size. | |
| sort | [Sort] | false | none | Returns the sorting parameters. |
{
"id": 0,
"createTime": "string",
"lastUpdateTime": "string",
"name": "string"
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| id | integer(int64) | false | none | 组id | |
| createTime | string | false | none | 创建时间 | |
| lastUpdateTime | string | false | none | 最后修改时间 | |
| name | string | false | none | 名称 |
{
"name": "string"
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| name | string | true | none | 组名称 |
{
"name": "string",
"statisticalMethod": "GRAND_TOTAL",
"prompt": "string",
"externalId": "string",
"planId": 0
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| name | string | true | none | 场景名称 | |
| statisticalMethod | string | true | none | 统计方式 | |
| prompt | string | true | none | 场景提示词 | |
| externalId | string | false | none | 外部id | |
| planId | integer(int64) | true | none | 关联计划id |
| 属性 | 值 |
|---|---|
| statisticalMethod | GRAND_TOTAL |
| statisticalMethod | ONLY |
{
"name": "string",
"prompt": "string",
"externalId": "string"
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| name | string | true | none | 场景名称 | |
| prompt | string | true | none | 场景提示词 | |
| externalId | string | false | none | 外部id |
{
"sceneId": 0,
"strategy": [
"AI_SERVICE_END_UNTIL_RESTART"
]
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| sceneId | integer(int64) | false | none | 使用的场景id | |
| strategy | [string] | false | none | 触发场景后执行的策略 |
{
"type": "IMAGE"
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| type | string | true | none | 类型 |
| 属性 | 值 |
|---|---|
| type | IMAGE |
| type | TEXT |
{
"sceneId": 0,
"strategy": [
"AI_SERVICE_END_UNTIL_RESTART"
]
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| sceneId | integer(int64) | true | none | 场景id | |
| strategy | [string] | true | none | 策略枚举 |
{
"name": "string",
"groupId": 0,
"description": "string",
"startTime": "string",
"endTime": "string",
"replyStrategy": "CONSULTANT_CONTINUE_AFTER_REPLY",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "string",
"minReplyInterval": 0,
"sceneIds": [
0
],
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
"AI_SERVICE_END_UNTIL_RESTART"
]
}
],
"prompt": "string",
"backgroundInfo": "string",
"timeInfo": "string",
"referenceCase": "string",
"timeoutWakeUp": true,
"timeout": 0,
"timeoutPrompt": "string",
"greetings": [
{
"type": "IMAGE"
}
]
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| name | string | true | none | 名称 | |
| groupId | integer(int64) | true | none | 组id | |
| description | string | false | none | 计划说明 | |
| startTime | string | false | none | 开始时间 | |
| endTime | string | false | none | 结束时间 | |
| replyStrategy | string | false | none | 回复策略 | |
| replyDelay | integer | false | none | 回复延时/秒 | |
| unifiedReply | boolean | false | none | 对延时期间的顾客消息统一回复 | |
| segmentSeparator | string | false | none | 回复多段切分符 | |
| minReplyInterval | integer | false | none | 最小连续回复间隔(秒) | |
| sceneIds | [integer] | false | none | 关联场景id | |
| monitoringStrategy | [ConversationalTaskMonitoringStrategyMo] | false | none | 监控场景 | |
| prompt | string | false | none | 提示词 | |
| backgroundInfo | string | false | none | 活动背景信息 | |
| timeInfo | string | false | none | 活动时间信息 | |
| referenceCase | string | false | none | 活动参考案例 | |
| timeoutWakeUp | boolean | false | none | 超时唤醒 | |
| timeout | integer | false | none | 超时时长(单位分钟) | |
| timeoutPrompt | string | false | none | 超时提示词 | |
| greetings | [ConversationalTaskGreetingMo] | false | none | 引导语 |
| 属性 | 值 |
|---|---|
| replyStrategy | CONSULTANT_CONTINUE_AFTER_REPLY |
| replyStrategy | CONSULTANT_NO_FURTHER_REPLY |
| replyStrategy | AI_HOSTING_END_AFTER_REPLY |
{
"options": "DRAFT",
"data": {
"name": "string",
"groupId": 0,
"description": "string",
"startTime": "string",
"endTime": "string",
"replyStrategy": "CONSULTANT_CONTINUE_AFTER_REPLY",
"replyDelay": 0,
"unifiedReply": false,
"segmentSeparator": "string",
"minReplyInterval": 0,
"sceneIds": [
0
],
"monitoringStrategy": [
{
"sceneId": 0,
"strategy": [
"AI_SERVICE_END_UNTIL_RESTART"
]
}
],
"prompt": "string",
"backgroundInfo": "string",
"timeInfo": "string",
"referenceCase": "string",
"timeoutWakeUp": true,
"timeout": 0,
"timeoutPrompt": "string",
"greetings": [
{
"type": "IMAGE"
}
]
}
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| options | string | true | none | 营销通知操作选项 | |
| data | MarketingNoticeDataInput | true | none | 数据 |
| 属性 | 值 |
|---|---|
| options | DRAFT |
| options | RELEASE |
{
"id": 0,
"name": "string",
"memberNumber": 0,
"lastTriggerTime": "string",
"contactSuccessOfPeopl": 0,
"completeServiceOfPeopl": 0,
"effectiveCommunicationOfPeopl": 0,
"invitationSuccessfulOfPeopl": 0,
"status": "DRAFT",
"taskCount": 0
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| id | integer(int64) | false | none | 营销通知计划id | |
| name | string | false | none | 名称 | |
| memberNumber | integer(int64) | false | none | 成员数量 | |
| lastTriggerTime | string | false | none | 最近触发时间 | |
| contactSuccessOfPeopl | integer(int64) | false | none | 联系成功人数 | |
| completeServiceOfPeopl | integer(int64) | false | none | 完成服务人数 | |
| effectiveCommunicationOfPeopl | integer(int64) | false | none | 有效沟通人数 | |
| invitationSuccessfulOfPeopl | integer(int64) | false | none | 预约成功人数 | |
| status | string | false | none | 状态 | |
| taskCount | integer(int64) | false | none | 子任务数量,及批次 |
| 属性 | 值 |
|---|---|
| status | DRAFT |
| status | EXECUTION |
| status | TERMINATION |
| status | COMPLETE |
{
"groupId": 0,
"groupName": "string",
"plan": [
{
"id": 0,
"name": "string",
"memberNumber": 0,
"lastTriggerTime": "string",
"contactSuccessOfPeopl": 0,
"completeServiceOfPeopl": 0,
"effectiveCommunicationOfPeopl": 0,
"invitationSuccessfulOfPeopl": 0,
"status": "DRAFT",
"taskCount": 0
}
]
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| groupId | integer(int64) | false | none | 组id | |
| groupName | string | false | none | 组名称 | |
| plan | [MarketingNoticeListOutput] | false | none | 关联计划 |
{
"current": 0,
"size": 0,
"total": 0
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| current | integer(int64) | false | none | none | |
| size | integer(int64) | false | none | none | |
| total | integer(int64) | false | none | none |
{
"name": "string",
"startTime": "string",
"fileIds": [
0
]
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| name | string | true | none | 任务名称 | |
| startTime | string | true | none | 任务开始时间 | |
| fileIds | [integer] | true | none | 文件id |
{
"label": "string",
"key": "string",
"type": "STRING"
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| label | string | false | none | 显示名称 | |
| key | string | false | none | 绑定键 | |
| type | string | false | none | 字段类型 |
| 属性 | 值 |
|---|---|
| type | STRING |
| type | NUMBER |
| type | DATE |
{}
None
{
"key": {}
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| key | key | false | none | none |
{
"content": "new ArrayList<>()",
"pageable": {
"paged": true,
"unpaged": true,
"pageNumber": 0,
"pageSize": 0,
"offset": 0,
"sort": [
{
"direction": "ASC",
"property": "string",
"ignoreCase": true,
"nullHandling": "NATIVE",
"ascending": true,
"descending": true
}
]
},
"total": 0,
"empty": true,
"number": 0,
"size": 0,
"numberOfElements": 0,
"sort": [
{
"direction": "ASC",
"property": "string",
"ignoreCase": true,
"nullHandling": "NATIVE",
"ascending": true,
"descending": true
}
],
"first": true,
"last": true,
"totalPages": 0,
"totalElements": 0
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| content | [MapObject] | false | none | none | |
| pageable | Pageable | false | none | none | |
| total | integer(int64) | false | none | none | |
| empty | boolean | false | none | Returns whether the current{@link Streamable} is empty. | |
| number | integer | false | none | none | |
| size | integer | false | none | none | |
| numberOfElements | integer | false | none | none | |
| sort | [Sort] | false | none | none | |
| first | boolean | false | none | none | |
| last | boolean | false | none | none | |
| totalPages | integer | false | none | none | |
| totalElements | integer(int64) | false | none | none |
{
"id": 0,
"name": "string",
"number": 0
}
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| id | integer(int64) | false | none | 场景id | |
| name | string | false | none | 场景名称 | |
| number | integer(int64) | false | none | 场景值 |
##常见错误码
| 状态码 | 说明 |
|---|---|
| 400 | 请求参数错误 |
| 401 | 未授权/令牌无效 |
| 403 | 权限不足 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |