如何配置电话机器人工作日自动外呼?接口调用全流程解析

核心设计思路与业务规则

电话机器人自动外呼任务的调度需结合工作日历规则,确保任务仅在指定日期触发。系统需支持动态配置工作日(如周一至周五)、排除节假日、设置特殊工作日(如调休)等场景。业务规则设计需满足以下核心要求:

  1. 工作日历管理:需建立独立的工作日历服务,支持按年份/月份导入节假日数据,并允许手动调整特殊日期(如临时调休)。
  2. 任务触发条件:外呼任务需绑定工作日历规则,系统在任务触发前校验当前日期是否符合条件。
  3. 动态调整能力:支持实时更新工作日规则,避免因节假日调整导致任务遗漏或误触发。

接口调用规范与参数说明

系统通过RESTful API实现工作日规则配置与任务调度,核心接口包括工作日历创建、规则绑定、任务触发校验等。以下为关键接口的详细说明:

1. 创建工作日历

接口地址POST /api/v1/workcalendar
请求参数

  1. {
  2. "calendarName": "2024年工作日历",
  3. "baseRules": {
  4. "workDays": [1,2,3,4,5], // 1=周一, 7=周日
  5. "excludeDates": ["2024-01-01", "2024-05-01"] // 排除节假日
  6. },
  7. "specialDates": [
  8. {"date": "2024-10-07", "isWorkDay": true}, // 国庆调休上班
  9. {"date": "2024-02-04", "isWorkDay": false} // 春节调休放假
  10. ]
  11. }

响应示例

  1. {
  2. "calendarId": "CAL20240101",
  3. "status": "active",
  4. "lastUpdated": "2024-01-01T00:00:00Z"
  5. }

2. 绑定工作日历至外呼任务

接口地址PUT /api/v1/outboundtasks/{taskId}/schedule
请求参数

  1. {
  2. "scheduleType": "workday",
  3. "calendarId": "CAL20240101",
  4. "triggerTime": "09:30:00", // 每日触发时间
  5. "timeZone": "Asia/Shanghai"
  6. }

响应示例

  1. {
  2. "taskId": "TASK20240101",
  3. "scheduleStatus": "configured",
  4. "nextTriggerTime": "2024-01-02T09:30:00Z"
  5. }

3. 校验日期有效性

接口地址GET /api/v1/workcalendar/{calendarId}/check?date=2024-01-02
响应示例

  1. {
  2. "date": "2024-01-02",
  3. "isWorkDay": true,
  4. "reason": "regular_workday" // "special_workday", "holiday"
  5. }

完整调用流程示例

以下为从创建工作日历到触发外呼任务的完整流程:

步骤1:创建工作日历

  1. curl -X POST https://api.example.com/api/v1/workcalendar \
  2. -H "Content-Type: application/json" \
  3. -d '{
  4. "calendarName": "2024标准工作日",
  5. "baseRules": {"workDays": [1,2,3,4,5]},
  6. "excludeDates": ["2024-01-01"]
  7. }'

步骤2:配置外呼任务

  1. curl -X POST https://api.example.com/api/v1/outboundtasks \
  2. -H "Content-Type: application/json" \
  3. -d '{
  4. "taskName": "客户回访任务",
  5. "callListId": "LIST20240101",
  6. "scriptId": "SCRIPT001"
  7. }'

步骤3:绑定工作日调度规则

  1. curl -X PUT https://api.example.com/api/v1/outboundtasks/TASK20240101/schedule \
  2. -H "Content-Type: application/json" \
  3. -d '{
  4. "scheduleType": "workday",
  5. "calendarId": "CAL20240101",
  6. "triggerTime": "14:00:00"
  7. }'

步骤4:验证调度结果

  1. curl "https://api.example.com/api/v1/outboundtasks/TASK20240101/nexttrigger"

响应示例:

  1. {
  2. "nextTriggerTime": "2024-01-02T14:00:00Z",
  3. "calendarStatus": "active"
  4. }

最佳实践与注意事项

  1. 时区处理:确保服务器时区与业务时区一致,避免因时区差异导致任务误触发。
  2. 节假日更新:建立节假日数据更新机制,每年初导入新一年节假日,并预留调休日期调整接口。
  3. 容错设计:在任务触发前增加日期校验逻辑,即使调度系统故障也能通过二次校验避免违规外呼。
  4. 性能优化:对高频调用的日期校验接口实施缓存策略,减少数据库查询压力。
  5. 监控告警:监控任务触发失败率,当连续失败次数超过阈值时自动告警。

错误处理与异常场景

  1. 无效日期:若请求日期早于系统支持范围,返回400 Bad Request并提示"date_out_of_range"
  2. 未配置日历:若任务未绑定日历规则,返回400 Bad Request并提示"calendar_not_configured"
  3. 日历禁用:若日历状态为inactive,返回403 Forbidden并提示"calendar_disabled"
  4. 系统维护:若接口服务不可用,返回503 Service Unavailable并设置重试头Retry-After: 60

通过上述接口规范与实现方案,开发者可快速构建支持工作日调度的电话机器人外呼系统,兼顾业务灵活性与合规性要求。实际开发中需结合具体业务场景调整参数校验逻辑,并建立完善的测试用例覆盖节假日、调休等边界条件。