package com.ruoyi.web.task; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.uuid.IdUtils; import com.smartor.config.PhoneUtils; import com.smartor.domain.IvrLibaTemplateScriptVO; import com.smartor.domain.IvrLibaTemplateVO; import com.smartor.domain.IvrTaskcall; import com.smartor.domain.QuestionMessage; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; public class PhoneTask implements Runnable { private IvrTaskcall ivrTaskcall; private List ivrLibaTemplateScriptVO; private RedisCache redisCache; private IvrLibaTemplateVO ivrLibaTemplateVO; public PhoneTask(IvrTaskcall ivrTaskcall, IvrLibaTemplateVO ivrLibaTemplateVO, RedisCache redisCache) { this.ivrTaskcall = ivrTaskcall; this.ivrLibaTemplateScriptVO = ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList(); this.ivrLibaTemplateVO = ivrLibaTemplateVO; this.redisCache = redisCache; } @Override public void run() { //获取电话组,查看哪些电话可以使用 PhoneUtils phoneUtils = new PhoneUtils(); String uuid = IdUtils.randomUUID(); Map objectMap = new HashMap<>(); objectMap.put("ivrTaskcall", ivrTaskcall); objectMap.put("ivrLibaTemplateScriptVO", ivrLibaTemplateScriptVO); //将数据放到redis中,方便在回调方法里获取 redisCache.setCacheObject(uuid, objectMap, 120, TimeUnit.MINUTES); //记录首次问题 QuestionMessage returnQues = new QuestionMessage(); returnQues.setKcb(ivrLibaTemplateVO.getRevisitBefore()); for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) { if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateVO.getFirstQuestionNum().intValue()) { returnQues.setNowQuestion(ivrLibaTemplateScriptVO); } } returnQues.setQuestionList(ivrLibaTemplateScriptVO); //将问题,和模板信息放到redis中 redisCache.setCacheObject(uuid + "returnQues", returnQues, 120, TimeUnit.MINUTES); redisCache.setCacheObject(uuid + "ivrLibaTemplateVO", ivrLibaTemplateVO, 120, TimeUnit.MINUTES); //调用机器人电话,开始电话(需要将回调方法传入,这个等”电话方“告诉怎么传,现在先空着,还有第一句问题话术) phoneUtils.ob(uuid, null, ivrTaskcall.getPhone(), null, null, null, null, null, null, null, null); } }