/**
|
* 外呼机器人API Service
|
* 处理外呼任务相关接口
|
* 接口前缀: /api/v1/outbound-bot/*
|
*/
|
|
import { request } from './request';
|
|
class OutboundBotAPIService {
|
|
|
/**
|
* 智能外呼拨打电话
|
* POST /api/v1/outbound-bot/call-v2
|
* @param {Object} data - 请求数据
|
* @param {string} data.caseRef - 案件引用ID
|
* @param {string} data.phoneNumber - 电话号码
|
* @param {string} data.scriptId - 脚本ID
|
* @param {Object} data.variables - 变量参数
|
* @returns {Promise} 外呼结果
|
*/
|
static makeCallV2(data = {}) {
|
return request.post('/api/v1/outbound-bot/call-v2', data);
|
}
|
|
/**
|
* 获取通话录音接口
|
* GET /api/v1/outbound-bot/conversation-log
|
* @param {Object} params - 查询参数
|
* @param {string} params.caseId - 案件ID
|
* @param {string} params.personId - 当事人ID
|
* @param {string} params.jobId - 工作ID
|
* @returns {Promise} 通话记录
|
*/
|
static getConversationLog(params = {}) {
|
return request.get('/api/v1/outbound-bot/conversation-log', params);
|
}
|
|
/**
|
* 通话状态查询
|
* GET /api/v1/outbound-bot/status
|
* @param {Object} params - 查询参数
|
* @param {string} params.caseRef - 案件ID
|
* @param {string} params.phoneNumber - 电话号码
|
* @param {string} params.jobId - 工作ID
|
* @returns {Promise} 通话状态
|
*/
|
static getCallStatus(params = {}) {
|
return request.get('/api/v1/outbound-bot/status', params);
|
}
|
|
/**
|
* 触发外呼任务(后端驱动,MQ异步处理)
|
* POST /api/v1/outbound-bot/trigger
|
* @param {Object} data - 请求数据
|
* @param {string} data.mediationId - 调解反馈表ID
|
* @param {string} data.caseId - 案件ID
|
* @param {number} data.callAuto - 呼叫模式 (0:自动, 1:手动)
|
* @param {string} data.callPersonId - 手动模式指定当事人ID
|
* @returns {Promise} 触发结果
|
*/
|
static triggerOutbound(data = {}) {
|
return request.post('/api/v1/outbound-bot/trigger', data);
|
}
|
|
/**
|
* 获取当前节点活跃外呼记录(后端驱动模式下补充 localStorage)
|
* GET /api/v1/outbound-bot/active-records
|
* @param {Object} params
|
* @param {string} params.mediationId - 调解反馈表ID
|
* @returns {Promise} 活跃外呼记录列表
|
*/
|
static getActiveRecords(params = {}) {
|
return request.get('/api/v1/outbound-bot/active-records', params);
|
}
|
|
/**
|
* 更新呼叫状态
|
* [已废弃] 状态更新现由后端回调驱动,前端不再调用
|
* POST /api/v1/outbound-bot/update-status
|
* @param {Object} data - 请求数据
|
* @param {string} data.jobId - 工作ID
|
* @param {string} data.callStatus - 外呼状态
|
* @returns {Promise} 状态更新结果
|
*/
|
static updateCallStatus(data) {
|
return request.post('/api/v1/outbound-bot/update-status', data);
|
}
|
|
static syncStatusByCase(data) {
|
return request.post('/api/v1/outbound-bot/sync-status-by-case', data);
|
}
|
|
static backfillConversationByCase(data) {
|
return request.post('/api/v1/outbound-bot/backfill-conversation-by-case', data);
|
}
|
|
/**
|
* 查询AI处理状态(摘要生成/情绪识别是否进行中)
|
* GET /api/v1/outbound-bot/ai-processing-status
|
* @param {Object} params
|
* @param {string} params.mediation_id - 调解反馈表ID
|
* @returns {Promise} AI处理状态列表
|
*/
|
static getAiProcessingStatus(params = {}) {
|
return request.get('/api/v1/outbound-bot/ai-processing-status', params);
|
}
|
|
/**
|
* 获取通话录音文件
|
* GET /api/v1/outbound-bot/file-play
|
* @param {string} recordUrl - 录音文件相对路径
|
* @returns {Promise} 音频文件Blob
|
*/
|
static async getAudioFile(recordUrl) {
|
try {
|
const response = await request.get('/api/v1/outbound-bot/file-play', {
|
recordUrl
|
}, {
|
responseType: 'blob',
|
headers: {
|
'Content-Type': 'audio/wav',
|
'Content-Disposition': 'inline'
|
}
|
});
|
|
// axios返回的是response对象,blob在response.data中
|
return response.data;
|
} catch (error) {
|
console.error('获取录音文件失败:', error);
|
throw error;
|
}
|
}
|
}
|
|
export default OutboundBotAPIService;
|