Bläddra i källkod

fix occ-pad hangup

root 2 veckor sedan
förälder
incheckning
1393d59a65
2 ändrade filer med 43 tillägg och 40 borttagningar
  1. 8 6
      internal/app/ami/action/call.go
  2. 35 34
      internal/app/ami/action/index.go

+ 8 - 6
internal/app/ami/action/call.go

@@ -583,12 +583,12 @@ func SetPadTimer() {
 		//lfshook.NewLogger().Logger.Infof("=========Start PAD timer !=============")
 		if active.QueueTimer != nil {
 			if active.QueueTimer.Stop() {
-				lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+				//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 			} else {
-				lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+				//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 			}
 		}
-		lfshook.NewLogger().Logger.Infof("=========Start PAD timer !======%d=======", active.PADTimeout)
+		//lfshook.NewLogger().Logger.Infof("=========Start PAD timer !======%d=======", active.PADTimeout)
 		active.QueueTimer = time.AfterFunc(time.Duration(active.PADTimeout)*time.Second, func() { // check the PAD 30s timeout
 			//active.QueueTimer = time.AfterFunc(30*time.Second, func() { // check the PAD 30s timeout
 			//if both not active , return
@@ -621,7 +621,7 @@ func SetPadTimer() {
 					for _, caller := range resCaller.Entrys {
 						priority.ICPAnswer = 0
 						//lfshook.NewLogger().Infof("====SetPadTimer==QueueTimer==2=")
-						lfshook.NewLogger().Infof("Q300==SetPadTimer==Redirect to 0301 entry:%s=Pos:%s==", caller.CallerIDNum, caller.Position)
+						//lfshook.NewLogger().Infof("Q300==SetPadTimer==Redirect to 0301 entry:%s=Pos:%s==", caller.CallerIDNum, caller.Position)
 						//order by pos
 						RedirectInQueue(caller.CallerIDNum, "0301", "queues-occ", caller.CallerIDNum) // redirect All ICP-PAD redirect to OCC queue
 						time.Sleep(time.Millisecond * 100)                                            //200 ms delay
@@ -668,6 +668,8 @@ func ConfbridgeKick(confnum, channel string) (res map[string]string, err error)
 }
 
 func CPAConfbridgeKick(confnum string) (res map[string]string, err error) {
+	utils.LoggerDebug.Printf("CPA CPAConfbridgeKick , kick all members .")
+
 	chans, err := ConfbridgeList(confnum)
 	if err != nil {
 		return nil, errors.New(res["Message"])
@@ -690,7 +692,7 @@ func CPAConfbridgeReinvite(confID string) {
 }
 
 func EMGConfbridgeKick(confnum string) (res map[string]string, err error) {
-
+	utils.LoggerDebug.Printf("EMG EMGConfbridgeKick , kick all members .")
 	chans, err := ConfbridgeList(confnum)
 	if err != nil {
 		return nil, errors.New(res["Message"])
@@ -863,8 +865,8 @@ func WaitTaskCreate(task string, args ...string) { //arg1(task chan)
 			priorityPA := priority.GetPriorityByKey("PA")
 			//获取将要创建的任务的优先级
 			priorityTask := priority.GetPriorityByKey(task)
-			//比较优先级,确定是否终止正在创建的任务
 
+			//比较优先级,确定是否终止正在创建的任务
 			if priorityPA < priorityTask {
 				utils.LoggerDebug.Printf("%s check task PA creating , hangup CPA %s ", task, args[0])
 				//结束task(CPA)

+ 35 - 34
internal/app/ami/action/index.go

@@ -326,21 +326,21 @@ func HandleAMI(event map[string]string) {
 				priority.OCCAnswer = 0
 				priority.PADOccStart = 0
 
-				/*//clean confbridge
+				//clean confbridge
 				taskTmp, _ := priority.RegistryTask.Get("PAD-OCC")
+				priority.RegistryTask.StopAndUnregister("PAD-OCC")
 				ConfbridgeKick(taskTmp.ConfbridgeID, "all")
 
-					//check resume
-						priority.RegistryTask.StopAndUnregister("PAD-OCC")
-						taskName, task, ok := priority.RegistryTask.HighestPriorityRunningTask1()
-						if ok {
-							if taskName == "EMG" {
-								EMGConfbridgeReinvite(task.ConfbridgeID)
-							} else if taskName == "CPA" {
-								CPAConfbridgeReinvite(task.ConfbridgeID)
-							}
-						}
-				*/
+				//check resume
+				taskName, task, ok := priority.RegistryTask.HighestPriorityRunningTask1()
+				if ok {
+					if taskName == "EMG" {
+						EMGConfbridgeReinvite(task.ConfbridgeID)
+					} else if taskName == "CPA" {
+						CPAConfbridgeReinvite(task.ConfbridgeID)
+					}
+				}
+
 				//break
 			} else { //OCC queue is not empty
 
@@ -417,9 +417,9 @@ func HandleAMI(event map[string]string) {
 
 			number := strings.Split(strings.Split(event["Channel"], "-")[0], "/")[1]
 
-			//lfshook.NewLogger().Infof("===hangup PAD =======================%s", number)
+			lfshook.NewLogger().Infof("===hangup PAD ===NUM:%s=================listAllTask:%+v===", number, priority.RegistryTask.ListAll())
 
-			if utils.IsPAIU(number) {
+			if utils.IsPAIU(number) { //pad and io hangup
 
 				//clean confbridge & clean task info
 				//PAD-ICP
@@ -443,6 +443,7 @@ func HandleAMI(event map[string]string) {
 					priority.RegistryTask.StopAndUnregister("PAD-OCC")
 				}
 
+				lfshook.NewLogger().Infof("===hangup PAD ===NUM:%s========2222=========listAllTask:%+v===", number, priority.RegistryTask.ListAll())
 				//Check PAD END
 				res, _ := QueueStatus("0300", "")  // check ICP queue ,if empty PAD end
 				res1, _ := QueueStatus("0301", "") // check OCC queue ,if empty PAD end
@@ -538,9 +539,9 @@ func HandleAMI(event map[string]string) {
 				//lfshook.NewLogger().Logger.Infof("=========Start PAD timer !=============")
 				if active.QueueTimer != nil {
 					if active.QueueTimer.Stop() {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 					} else {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 					}
 				}
 				//lfshook.NewLogger().Logger.Infof("=========Start PAD timer !======%d=======", active.PADTimeout)
@@ -673,9 +674,9 @@ func HandleAMI(event map[string]string) {
 				if priority.AllTasks.PADOCC.Priority > priority.AllTasks.EMG.Priority {
 					if active.QueueTimer != nil {
 						if active.QueueTimer.Stop() {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 						} else {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 						}
 					}
 				}
@@ -704,9 +705,9 @@ func HandleAMI(event map[string]string) {
 				if priority.AllTasks.PADOCC.Priority > priority.AllTasks.SPC.Priority {
 					if active.QueueTimer != nil {
 						if active.QueueTimer.Stop() {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 						} else {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 						}
 					}
 				}
@@ -735,9 +736,9 @@ func HandleAMI(event map[string]string) {
 				if priority.AllTasks.PADOCC.Priority > priority.AllTasks.DCS.Priority {
 					if active.QueueTimer != nil {
 						if active.QueueTimer.Stop() {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 						} else {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 						}
 					}
 				}
@@ -767,9 +768,9 @@ func HandleAMI(event map[string]string) {
 				if priority.AllTasks.PADOCC.Priority > priority.AllTasks.STN.Priority {
 					if active.QueueTimer != nil {
 						if active.QueueTimer.Stop() {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 						} else {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 						}
 					}
 				}
@@ -799,9 +800,9 @@ func HandleAMI(event map[string]string) {
 				if priority.AllTasks.PADOCC.Priority > priority.AllTasks.CHK.Priority {
 					if active.QueueTimer != nil {
 						if active.QueueTimer.Stop() {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 						} else {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 						}
 					}
 				}
@@ -829,9 +830,9 @@ func HandleAMI(event map[string]string) {
 				if priority.AllTasks.PADOCC.Priority > priority.AllTasks.VOL.Priority {
 					if active.QueueTimer != nil {
 						if active.QueueTimer.Stop() {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 						} else {
-							lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+							//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 						}
 					}
 				}
@@ -869,9 +870,9 @@ func HandleAMI(event map[string]string) {
 			if priority.AllTasks.PADOCC.Priority > priority.AllTasks.PA.Priority {
 				if active.QueueTimer != nil {
 					if active.QueueTimer.Stop() {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 					} else {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 					}
 				}
 			}
@@ -901,9 +902,9 @@ func HandleAMI(event map[string]string) {
 			if priority.AllTasks.PADOCC.Priority > priority.AllTasks.CPA.Priority {
 				if active.QueueTimer != nil {
 					if active.QueueTimer.Stop() {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 					} else {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 					}
 				}
 			}
@@ -1189,9 +1190,9 @@ func HandleAMI(event map[string]string) {
 			if priority.AllTasks.PADOCC.Priority > priority.AllTasks.C2C.Priority {
 				if active.QueueTimer != nil {
 					if active.QueueTimer.Stop() {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer true !============")
 					} else {
-						lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
+						//lfshook.NewLogger().Logger.Infof("=========Release PAD timer false ! ============")
 					}
 				}
 			}