外呼API包
用途
把外呼全流程(建任务→派单→排队→呼叫→结果回传)封装为统一API,让电销/客服系统专注业务,不重复造调度轮子。
输入
- HTTP请求(JSON格式)
输出
- JSON响应,统一格式:
{"code":0,"data":{...},"msg":"ok"}
API列表
1. POST /api/campaign 创建外呼任务
| 参数 | 必填 | 说明 |
|---|---|---|
| name | 是 | 任务名,如"10月阻燃剂意向回访" |
| numbers | 是 | 号码数组,每项须11位手机号 |
| retry_max | 否 | 单号失败最大重试次数,1-3,默认2 |
| interval_sec | 否 | 重试间隔秒数,默认300 |
响应 data:{"campaign_id":"...","total":N,"queued":N};号码校验:非11位数字直接剔除并计入 invalid。
2. POST /api/task 派单(单号入队)
| 参数 | 必填 | 说明 |
|---|---|---|
| campaign_id | 是 | 任务ID |
| phone | 是 | 11位手机号 |
| priority | 否 | high/normal/low,默认normal |
响应 data:{"task_id":"...","state":"QUEUED"}
3. GET /api/status 状态查询
| 参数 | 必填 | 说明 |
|---|---|---|
| task_id | 是 | 任务ID |
状态机:QUEUED(排队)→DIALING(呼叫中)→SUCCESS(成功)/FAILED(失败,重试次数达上限)/RETRY(待重试)。响应 data:{"task_id":"...","state":"...","retries":R,"last_result":"..."}
4. POST /api/callback 结果回传
| 参数 | 必填 | 说明 |
|---|---|---|
| task_id | 是 | 任务ID |
| result | 是 | success/not_answered/rejected/error |
| memo | 否 | 备注,如"客户要求周内回电" |
流转规则:success→终态SUCCESS;not_answered/rejected/error→若 retries < retry_max 则进入RETRY并 retries+1,否则终态FAILED。回传后自动登记意向:memo非空且含"意向/回电/报价"任一关键词 → 写入意向线索表。
示例
请求:POST /api/callback body {"task_id":"T1001","result":"not_answered","memo":"客户说下周有采购意向"}
响应:{"code":0,"data":{"task_id":"T1001","state":"RETRY","retries":1},"msg":"ok"}
硬性规则
- 号码必须11位数字校验,非法号码绝不入队;
- 重试次数严格受 retry_max 限制,到达上限后不再重试,防骚扰;
- 状态只能按状态机流转,非法迁移返回 400;
- 不回传不编造成果,外呼结果以 callback 为准。