| | |
| | | * 获取通话录音接口 |
| | | * GET /api/v1/outbound-bot/conversation-log |
| | | * @param {Object} params - 查询参数 |
| | | * @param {string} params.caseRef - 案件引用ID |
| | | * @param {string} params.phoneNumber - 电话号码 |
| | | * @param {string} params.caseId - 案件ID |
| | | * @param {string} params.personId - 当事人ID |
| | | * @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; |
| | | export default OutboundBotAPIService; |