liusheng
2024-04-15 fdf1b9c1e4489a0c2615fa596268b2f71fad7b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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> 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<String, Object> 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);
 
 
    }
}