核心设计思路与业务规则
电话机器人自动外呼任务的调度需结合工作日历规则,确保任务仅在指定日期触发。系统需支持动态配置工作日(如周一至周五)、排除节假日、设置特殊工作日(如调休)等场景。业务规则设计需满足以下核心要求:
- 工作日历管理:需建立独立的工作日历服务,支持按年份/月份导入节假日数据,并允许手动调整特殊日期(如临时调休)。
- 任务触发条件:外呼任务需绑定工作日历规则,系统在任务触发前校验当前日期是否符合条件。
- 动态调整能力:支持实时更新工作日规则,避免因节假日调整导致任务遗漏或误触发。
接口调用规范与参数说明
系统通过RESTful API实现工作日规则配置与任务调度,核心接口包括工作日历创建、规则绑定、任务触发校验等。以下为关键接口的详细说明:
1. 创建工作日历
接口地址:POST /api/v1/workcalendar
请求参数:
{"calendarName": "2024年工作日历","baseRules": {"workDays": [1,2,3,4,5], // 1=周一, 7=周日"excludeDates": ["2024-01-01", "2024-05-01"] // 排除节假日},"specialDates": [{"date": "2024-10-07", "isWorkDay": true}, // 国庆调休上班{"date": "2024-02-04", "isWorkDay": false} // 春节调休放假]}
响应示例:
{"calendarId": "CAL20240101","status": "active","lastUpdated": "2024-01-01T00:00:00Z"}
2. 绑定工作日历至外呼任务
接口地址:PUT /api/v1/outboundtasks/{taskId}/schedule
请求参数:
{"scheduleType": "workday","calendarId": "CAL20240101","triggerTime": "09:30:00", // 每日触发时间"timeZone": "Asia/Shanghai"}
响应示例:
{"taskId": "TASK20240101","scheduleStatus": "configured","nextTriggerTime": "2024-01-02T09:30:00Z"}
3. 校验日期有效性
接口地址:GET /api/v1/workcalendar/{calendarId}/check?date=2024-01-02
响应示例:
{"date": "2024-01-02","isWorkDay": true,"reason": "regular_workday" // 或 "special_workday", "holiday"}
完整调用流程示例
以下为从创建工作日历到触发外呼任务的完整流程:
步骤1:创建工作日历
curl -X POST https://api.example.com/api/v1/workcalendar \-H "Content-Type: application/json" \-d '{"calendarName": "2024标准工作日","baseRules": {"workDays": [1,2,3,4,5]},"excludeDates": ["2024-01-01"]}'
步骤2:配置外呼任务
curl -X POST https://api.example.com/api/v1/outboundtasks \-H "Content-Type: application/json" \-d '{"taskName": "客户回访任务","callListId": "LIST20240101","scriptId": "SCRIPT001"}'
步骤3:绑定工作日调度规则
curl -X PUT https://api.example.com/api/v1/outboundtasks/TASK20240101/schedule \-H "Content-Type: application/json" \-d '{"scheduleType": "workday","calendarId": "CAL20240101","triggerTime": "14:00:00"}'
步骤4:验证调度结果
curl "https://api.example.com/api/v1/outboundtasks/TASK20240101/nexttrigger"
响应示例:
{"nextTriggerTime": "2024-01-02T14:00:00Z","calendarStatus": "active"}
最佳实践与注意事项
- 时区处理:确保服务器时区与业务时区一致,避免因时区差异导致任务误触发。
- 节假日更新:建立节假日数据更新机制,每年初导入新一年节假日,并预留调休日期调整接口。
- 容错设计:在任务触发前增加日期校验逻辑,即使调度系统故障也能通过二次校验避免违规外呼。
- 性能优化:对高频调用的日期校验接口实施缓存策略,减少数据库查询压力。
- 监控告警:监控任务触发失败率,当连续失败次数超过阈值时自动告警。
错误处理与异常场景
- 无效日期:若请求日期早于系统支持范围,返回
400 Bad Request并提示"date_out_of_range"。 - 未配置日历:若任务未绑定日历规则,返回
400 Bad Request并提示"calendar_not_configured"。 - 日历禁用:若日历状态为
inactive,返回403 Forbidden并提示"calendar_disabled"。 - 系统维护:若接口服务不可用,返回
503 Service Unavailable并设置重试头Retry-After: 60。
通过上述接口规范与实现方案,开发者可快速构建支持工作日调度的电话机器人外呼系统,兼顾业务灵活性与合规性要求。实际开发中需结合具体业务场景调整参数校验逻辑,并建立完善的测试用例覆盖节假日、调休等边界条件。