Browse Source

cid改动+挂断类型

lmx 2 days ago
parent
commit
c0b6a9f6a6

+ 1 - 1
fs-service/src/main/java/com/fs/aiSipCall/service/impl/AiSipCallUserServiceImpl.java

@@ -204,7 +204,7 @@ public class AiSipCallUserServiceImpl extends ServiceImpl<AiSipCallUserMapper, A
     public AiSipCallUserNewVO updateAiSipCallUserNew(AiSipCallUser aiSipCallUser){
     public AiSipCallUserNewVO updateAiSipCallUserNew(AiSipCallUser aiSipCallUser){
         AiSipCallUserNewVO result= new AiSipCallUserNewVO();
         AiSipCallUserNewVO result= new AiSipCallUserNewVO();
         CompanyExtensionBind bind = companyExtensionBindService.selectUnBindByExtNum(String.valueOf(aiSipCallUser.getExtNum()), aiSipCallUser.getCompanyId());
         CompanyExtensionBind bind = companyExtensionBindService.selectUnBindByExtNum(String.valueOf(aiSipCallUser.getExtNum()), aiSipCallUser.getCompanyId());
-        if (bind != null && bind.getCompanyUserId() == null) {
+        if (bind != null && (bind.getCompanyUserId() == null || bind.getCompanyUserId().equals(aiSipCallUser.getCompanyUserId()))) {
             AiSipCallUser oldUser = aiSipCallUserMapper.selectAiSipCallUserByUserId(aiSipCallUser.getUserId());
             AiSipCallUser oldUser = aiSipCallUserMapper.selectAiSipCallUserByUserId(aiSipCallUser.getUserId());
             String oldExtNum = (oldUser != null) ? oldUser.getExtNum() : null;
             String oldExtNum = (oldUser != null) ? oldUser.getExtNum() : null;
             String newExtNum = aiSipCallUser.getExtNum();
             String newExtNum = aiSipCallUser.getExtNum();

+ 4 - 0
fs-service/src/main/java/com/fs/company/domain/CompanyVoiceRoboticCallLogCallphone.java

@@ -105,6 +105,10 @@ public class CompanyVoiceRoboticCallLogCallphone extends BaseEntity{
     @Excel(name = "外呼类型")
     @Excel(name = "外呼类型")
     private Integer callType;
     private Integer callType;
 
 
+    /** 未拨通类型 */
+    @Excel(name = "未拨通类型")
+    private String hangupType;
+
     /** 是否警告(0否 1是)用于敏感词 */
     /** 是否警告(0否 1是)用于敏感词 */
     @Excel(name = "是否警告(0否 1是)用于敏感词")
     @Excel(name = "是否警告(0否 1是)用于敏感词")
     private Integer isWarning;
     private Integer isWarning;

+ 1 - 1
fs-service/src/main/java/com/fs/company/service/impl/CompanyVoiceRoboticCallLogCallphoneServiceImpl.java

@@ -332,7 +332,7 @@ public class CompanyVoiceRoboticCallLogCallphoneServiceImpl extends ServiceImpl<
 
 
                     companyVoiceRoboticCallLog.setStatus(2);
                     companyVoiceRoboticCallLog.setStatus(2);
                     companyVoiceRoboticCallLog.setResult(JSON.toJSONString(result));
                     companyVoiceRoboticCallLog.setResult(JSON.toJSONString(result));
-
+                    companyVoiceRoboticCallLog.setHangupType(result.getUnconnectedReason());
                     CompanyWxClient companyWxClient = companyWxClientServiceImpl.getOne(new QueryWrapper<CompanyWxClient>().eq("robotic_id", callees.getRoboticId()).eq("customer_id", callees.getUserId()));
                     CompanyWxClient companyWxClient = companyWxClientServiceImpl.getOne(new QueryWrapper<CompanyWxClient>().eq("robotic_id", callees.getRoboticId()).eq("customer_id", callees.getUserId()));
                     CompanyVoiceRoboticWx roboticWx = companyVoiceRoboticWxServiceImpl.getById(companyWxClient.getRoboticWxId());
                     CompanyVoiceRoboticWx roboticWx = companyVoiceRoboticWxServiceImpl.getById(companyWxClient.getRoboticWxId());
                     Long setCompanyUserId = null;
                     Long setCompanyUserId = null;

+ 11 - 2
fs-service/src/main/java/com/fs/company/service/impl/call/node/AiCallTaskNode.java

@@ -114,8 +114,8 @@ public class AiCallTaskNode extends AbstractWorkflowNode {
                 //拨通
                 //拨通
                 if (condition.isCallConnected() && callRes.getCallTime() != null && callRes.getCallTime() > 0) {
                 if (condition.isCallConnected() && callRes.getCallTime() != null && callRes.getCallTime() > 0) {
                     //如果含有意向度过滤
                     //如果含有意向度过滤
-                    if (StringUtils.isNotBlank(condition.getIntention())) {
-                        if (condition.getIntention().equals(callRes.getIntention())) {
+                    if (condition.getIntention() != null && !condition.getIntention().isEmpty()) {
+                        if (condition.getIntention().contains(callRes.getIntention())) {
                             runNextNode(context, edge);
                             runNextNode(context, edge);
                             runnableCount++;
                             runnableCount++;
                             break;
                             break;
@@ -132,6 +132,15 @@ public class AiCallTaskNode extends AbstractWorkflowNode {
                 }
                 }
                 //未拨通
                 //未拨通
                 else if (!condition.isCallConnected() && (callRes.getCallTime() == null || Long.valueOf(0).equals(callRes.getCallTime()) || callRes.getCallAnswerTime() == null)) {
                 else if (!condition.isCallConnected() && (callRes.getCallTime() == null || Long.valueOf(0).equals(callRes.getCallTime()) || callRes.getCallAnswerTime() == null)) {
+                    //如果含有未拨通类型过滤
+                    if (condition.getHangupType() != null && !condition.getHangupType().isEmpty()) {
+                        if (StringUtils.isNotBlank(callRes.getHangupType()) && condition.getHangupType().contains(callRes.getHangupType())) {
+                            //匹配到未拨通类型,继续执行
+                        } else {
+                            log.info("流程:{},节点:{},未拨通类型设置:{},实际未拨通类型:{}, 未拨通类型不符设置中断执行,", context.getWorkflowInstanceId(), nodeKey, condition.getHangupType(), callRes.getHangupType());
+                            continue;
+                        }
+                    }
                     //延时操作
                     //延时操作
                     if (null != condition.getCallTime() && condition.getCallTime() > 0) {
                     if (null != condition.getCallTime() && condition.getCallTime() > 0) {
                         //计算延时分片分钟
                         //计算延时分片分钟

+ 6 - 2
fs-service/src/main/java/com/fs/company/vo/AiCallWorkflowConditionVo.java

@@ -2,14 +2,18 @@ package com.fs.company.vo;
 
 
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.List;
+
 @Data
 @Data
 public class AiCallWorkflowConditionVo {
 public class AiCallWorkflowConditionVo {
     // 外呼配置-是否拨通
     // 外呼配置-是否拨通
     private boolean callConnected;
     private boolean callConnected;
     // 外呼配置-延迟时间
     // 外呼配置-延迟时间
     private Integer callTime;
     private Integer callTime;
-    // 外呼配置-意向度
-    private String intention;
+    // 外呼配置-意向度(多选)
+    private List<String> intention;
+    // 外呼配置-未拨通类型(多选)
+    private List<String> hangupType;
 
 
 
 
     // 加微条件-是否同意
     // 加微条件-是否同意

+ 5 - 0
fs-service/src/main/java/com/fs/company/vo/easycall/EasyCallCallPhoneVO.java

@@ -213,4 +213,9 @@ public class EasyCallCallPhoneVO {
      * The duration of the manual agent service time.
      * The duration of the manual agent service time.
      */
      */
     private Long manualAnsweredTimeLen;
     private Long manualAnsweredTimeLen;
+
+    /**
+     * 未接通原因(新增)
+     */
+    private String unconnectedReason;
 }
 }

+ 5 - 1
fs-service/src/main/resources/mapper/company/CompanyVoiceRoboticCallLogCallphoneMapper.xml

@@ -26,11 +26,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="callTime"    column="call_time"    />
         <result property="callTime"    column="call_time"    />
         <result property="cost"    column="cost"    />
         <result property="cost"    column="cost"    />
         <result property="callType"    column="call_type"    />
         <result property="callType"    column="call_type"    />
+        <result property="hangupType"    column="hangup_type"    />
         <result property="isWarning"    column="is_warning"    />
         <result property="isWarning"    column="is_warning"    />
     </resultMap>
     </resultMap>
 
 
     <sql id="selectCompanyVoiceRoboticCallLogCallphoneVo">
     <sql id="selectCompanyVoiceRoboticCallLogCallphoneVo">
-        select log_id, robotic_id, caller_id, run_time, run_param, result, status, create_time, record_path, content_list, caller_num, callee_num, uuid, call_create_time, call_answer_time, intention, company_id, company_user_id, call_time, cost, call_type, is_warning from company_voice_robotic_call_log_callphone
+        select log_id, robotic_id, caller_id, run_time, run_param, result, status, create_time, record_path, content_list, caller_num, callee_num, uuid, call_create_time, call_answer_time, intention, company_id, company_user_id, call_time, cost, call_type, hangup_type, is_warning from company_voice_robotic_call_log_callphone
     </sql>
     </sql>
 
 
     <select id="selectCompanyVoiceRoboticCallLogCallphoneList" parameterType="CompanyVoiceRoboticCallLogCallphone" resultMap="CompanyVoiceRoboticCallLogCallphoneResult">
     <select id="selectCompanyVoiceRoboticCallLogCallphoneList" parameterType="CompanyVoiceRoboticCallLogCallphone" resultMap="CompanyVoiceRoboticCallLogCallphoneResult">
@@ -88,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="callTime != null">call_time,</if>
             <if test="callTime != null">call_time,</if>
             <if test="cost != null">cost,</if>
             <if test="cost != null">cost,</if>
             <if test="callType != null">call_type,</if>
             <if test="callType != null">call_type,</if>
+            <if test="hangupType != null">hangup_type,</if>
             <if test="isWarning != null">is_warning,</if>
             <if test="isWarning != null">is_warning,</if>
             <if test="violationNum != null">violation_num,</if>
             <if test="violationNum != null">violation_num,</if>
          </trim>
          </trim>
@@ -113,6 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="callTime != null">#{callTime},</if>
             <if test="callTime != null">#{callTime},</if>
             <if test="cost != null">#{cost},</if>
             <if test="cost != null">#{cost},</if>
             <if test="callType != null">#{callType},</if>
             <if test="callType != null">#{callType},</if>
+            <if test="hangupType != null">#{hangupType},</if>
             <if test="isWarning != null">#{isWarning},</if>
             <if test="isWarning != null">#{isWarning},</if>
             <if test="violationNum != null">#{violationNum},</if>
             <if test="violationNum != null">#{violationNum},</if>
          </trim>
          </trim>
@@ -141,6 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="callTime != null">call_time = #{callTime},</if>
             <if test="callTime != null">call_time = #{callTime},</if>
             <if test="cost != null">cost = #{cost},</if>
             <if test="cost != null">cost = #{cost},</if>
             <if test="callType != null">call_type = #{callType},</if>
             <if test="callType != null">call_type = #{callType},</if>
+            <if test="hangupType != null">hangup_type = #{hangupType},</if>
             <if test="isWarning != null">is_warning = #{isWarning},</if>
             <if test="isWarning != null">is_warning = #{isWarning},</if>
             <if test="violationNum != null">violation_num = #{violationNum},</if>
             <if test="violationNum != null">violation_num = #{violationNum},</if>
             <if test="manualAnswered != null">manual_answered = #{manualAnswered},</if>
             <if test="manualAnswered != null">manual_answered = #{manualAnswered},</if>