/**
|
* 外呼机器人API Service
|
* 处理外呼任务相关接口
|
* 接口前缀: /api/v1/outbound-bot/*
|
*/
|
|
import { request } from './request';
|
|
class OutboundBotAPIService {
|
/**
|
* 创建外呼任务
|
* POST /api/v1/outbound-bot/call
|
* @param {Object} data - 外呼任务数据
|
* @param {string} data.caseRef - 案件编号
|
* @param {string} data.personId - 申请方或被申请方id
|
* @param {string} data.mediationStage - 外呼话术阶段(10~14)
|
* @param {string} data.phoneNumber - 当事人电话号码
|
* @param {string} data.type - 外呼类型(intent_survey/fact_finding/material_verify/agreement/follow_up)
|
* @param {string} data.partyType - 当事人类型(applicant/respondent)
|
* @param {boolean} data.forceUseInput - 是否强制使用输入号码
|
* @returns {Promise} 外呼任务创建结果
|
*/
|
static createCallTask(data = {}) {
|
return request.post('/api/v1/outbound-bot/call', data);
|
}
|
|
/**
|
* 获取外呼任务详情
|
* GET /api/v1/outbound-bot/task/{taskId}
|
* @param {string} taskId - 任务ID
|
* @returns {Promise} 任务详情
|
*/
|
static getCallTaskDetail(taskId) {
|
return request.get(`/api/v1/outbound-bot/task/${taskId}`);
|
}
|
|
/**
|
* 获取外呼任务列表
|
* GET /api/v1/outbound-bot/tasks
|
* @param {Object} params - 查询参数
|
* @param {string} params.caseRef - 案件编号
|
* @param {string} params.status - 任务状态
|
* @param {string} params.type - 外呼类型
|
* @param {number} params.page - 页码
|
* @param {number} params.size - 每页数量
|
* @returns {Promise} 任务列表
|
*/
|
static getCallTasks(params = {}) {
|
return request.get('/api/v1/outbound-bot/tasks', params);
|
}
|
|
/**
|
* 取消外呼任务
|
* POST /api/v1/outbound-bot/task/{taskId}/cancel
|
* @param {string} taskId - 任务ID
|
* @param {string} reason - 取消原因
|
* @returns {Promise} 取消结果
|
*/
|
static cancelCallTask(taskId, reason) {
|
return request.post(`/api/v1/outbound-bot/task/${taskId}/cancel`, { reason });
|
}
|
|
/**
|
* 重试外呼任务
|
* POST /api/v1/outbound-bot/task/{taskId}/retry
|
* @param {string} taskId - 任务ID
|
* @returns {Promise} 重试结果
|
*/
|
static retryCallTask(taskId) {
|
return request.post(`/api/v1/outbound-bot/task/${taskId}/retry`);
|
}
|
|
/**
|
* 获取外呼统计信息
|
* GET /api/v1/outbound-bot/statistics
|
* @param {Object} params - 统计参数
|
* @param {string} params.caseRef - 案件编号
|
* @param {string} params.startTime - 开始时间
|
* @param {string} params.endTime - 结束时间
|
* @returns {Promise} 统计信息
|
*/
|
static getCallStatistics(params = {}) {
|
return request.get('/api/v1/outbound-bot/statistics', params);
|
}
|
|
/**
|
* 获取外呼话术模板
|
* GET /api/v1/outbound-bot/scripts
|
* @param {string} type - 外呼类型
|
* @param {string} stage - 调解阶段
|
* @returns {Promise} 话术模板列表
|
*/
|
static getCallScripts(type, stage) {
|
return request.get('/api/v1/outbound-bot/scripts', { type, stage });
|
}
|
|
/**
|
* 获取外呼任务执行日志
|
* GET /api/v1/outbound-bot/task/{taskId}/logs
|
* @param {string} taskId - 任务ID
|
* @param {number} page - 页码
|
* @param {number} size - 每页数量
|
* @returns {Promise} 执行日志
|
*/
|
static getCallTaskLogs(taskId, page = 1, size = 20) {
|
return request.get(`/api/v1/outbound-bot/task/${taskId}/logs`, { page, size });
|
}
|
|
/**
|
* 批量创建外呼任务
|
* POST /api/v1/outbound-bot/batch-call
|
* @param {Array} tasks - 任务数组
|
* @returns {Promise} 批量创建结果
|
*/
|
static createBatchCallTasks(tasks = []) {
|
return request.post('/api/v1/outbound-bot/batch-call', { tasks });
|
}
|
|
/**
|
* 根据案件信息智能创建外呼任务
|
* @param {Object} caseInfo - 案件信息
|
* @param {string} caseInfo.caseRef - 案件编号
|
* @param {string} caseInfo.mediationStage - 调解阶段
|
* @param {Array} caseInfo.parties - 当事人信息数组
|
* @param {Object} options - 创建选项
|
* @returns {Promise} 创建结果
|
*/
|
static async createSmartCallTasks(caseInfo, options = {}) {
|
const {
|
callType = 'material_verify', // 默认外呼类型
|
forceUseInput = false // 是否强制使用输入号码
|
} = options;
|
|
const tasks = [];
|
|
// 为每个当事人创建外呼任务
|
caseInfo.parties.forEach(party => {
|
// 验证必要字段
|
if (!party.personId || !party.phoneNumber) {
|
console.warn(`当事人信息不完整:`, party);
|
return;
|
}
|
|
tasks.push({
|
caseRef: caseInfo.caseRef,
|
personId: party.personId,
|
mediationStage: caseInfo.mediationStage,
|
phoneNumber: party.phoneNumber,
|
type: callType,
|
partyType: party.type || 'applicant', // 默认为申请人
|
forceUseInput: forceUseInput
|
});
|
});
|
|
if (tasks.length === 0) {
|
return Promise.reject(new Error('没有有效的当事人信息用于创建外呼任务'));
|
}
|
|
return this.createBatchCallTasks(tasks);
|
}
|
|
/**
|
* 获取当事人外呼历史
|
* GET /api/v1/outbound-bot/person/{personId}/history
|
* @param {string} personId - 当事人ID
|
* @param {Object} params - 查询参数
|
* @returns {Promise} 外呼历史记录
|
*/
|
static getPersonCallHistory(personId, params = {}) {
|
return request.get(`/api/v1/outbound-bot/person/${personId}/history`, params);
|
}
|
|
/**
|
* 更新外呼任务
|
* PUT /api/v1/outbound-bot/task/{taskId}
|
* @param {string} taskId - 任务ID
|
* @param {Object} data - 更新数据
|
* @returns {Promise} 更新结果
|
*/
|
static updateCallTask(taskId, data = {}) {
|
return request.put(`/api/v1/outbound-bot/task/${taskId}`, data);
|
}
|
|
/**
|
* 获取外呼配置
|
* GET /api/v1/outbound-bot/config
|
* @returns {Promise} 外呼配置信息
|
*/
|
static getCallConfig() {
|
return request.get('/api/v1/outbound-bot/config');
|
}
|
}
|
|
export default OutboundBotAPIService;
|