package com.xinelu.manage.service.aiob;

import com.alibaba.fastjson2.JSONObject;
import com.aliyuncs.exceptions.ClientException;
import com.xinelu.manage.dto.aiob.ActualTimeTaskDto;
import com.xinelu.manage.dto.aiob.CreateTaskDto;
import com.xinelu.manage.dto.aiob.ImportTaskDto;
import com.xinelu.manage.dto.aiob.TaskCallbackDataDto;
import com.xinelu.manage.vo.aiob.ImportTaskVo;
import java.util.List;

/**
 * 百度客悦·智能外呼平台Service接口
 *
 * @author: haown
 * @create: 2024-08-22 09:50
 */
public interface IAIOBService {

	/**
	 * @description 获取外呼平台accessToken
	 * @return 智能外呼平台 accessToken
	 * @Author haown
	 * @Date 2024-8-22 15:30
	 */
	String getAccessToken();

	/**
	 * @description 创建任务
	 * @param createTaskDto 创建任务传输对象
	 * @return taskId 客悦·智能外呼平台任务唯一标识
	 * @Author haown
	 * @Date 2024-8-22 15:34
	 */
	String createTask(CreateTaskDto createTaskDto);

	/**
	 * @description 创建实时任务
	 * @param actualTimeTaskDto 百度外呼创建实时任务传输对象
	 * @return memberId 被叫号码系统唯一标识，可根据该标识查询通话记录
	 * @Author haown
	 * @Date 2024-9-20 16:15
	*/
	Long createActualTimeTask(ActualTimeTaskDto actualTimeTaskDto);

	/**
	 * @description 任务状态变更
	 * @param taskId 任务id
	 * @param taskStatus 修改状态 2：执行中，3：已暂停，4：已完成（如点击「终止」
	 * @return 状态码
	 * @Author haown
	 * @Date 2024-8-23 11:49
	*/
	Integer updateTaskStatus(String taskId, Integer taskStatus);

	/**
	 * @description 任务导入客户名单
	 * @param importTaskDto 导入名单传输对象
	 * @return 名单导入结果
	 * @Author haown
	 * @Date 2024-8-23 17:34
	*/
	List<ImportTaskVo> importTask(ImportTaskDto importTaskDto);

	/**
	 * @description 任务执行回调方法
	 * @param callbackType 回调数据类型， 0-任务呼叫单通电话回调 1-号码组终态回调 2-任务状态变更回调 3-实时呼叫单通电话回调
	 * @param data 任务单通电话回调传输data
	 * @return JSONObject
	 * @Author haown
	 * @Date 2024-9-2 14:20
	*/
	JSONObject taskCallBack(Integer callbackType, TaskCallbackDataDto data) throws ClientException;

	/**
	 * @description
	 * @Param ccUUID 通话录音唯一标识
	 * @return 录音下载地址
	 * @Author haown
	 * @Date 2024-11-8 13:47
	 */
	String record(String ccUUID);

	/**
	 * @description 通话录音保存到本地并返回本地虚拟路径
	 * @Param ccUuid 通话录音唯一标识
	 * @return 录音本地虚拟路径
	 * @Author haown
	 * @Date 2024-11-8 13:49
	 */
	String getPhoneDialRecord(String ccUuid);
}
