/** * 外呼机器人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;