root 1 hafta önce
ebeveyn
işleme
83518917a6

+ 9 - 3
internal/app/ami/action/call.go

@@ -150,7 +150,7 @@ func InterruptRunningTask(toRunTask string) string {
 			return ""
 		}
 	}
-	utils.LoggerDebug.Printf("InterruptRunningTask  RunningTask:%+v", taskName)
+	utils.LoggerDebug.Printf("%s InterruptRunningTask  RunningTask:%+v", toRunTask, task)
 	lfshook.NewLogger().Infof("InterruptRunningTask RunningTask:%+v  ", task)
 	//same type return
 	if toRunTask == taskName {
@@ -226,14 +226,20 @@ func InterruptRunningTask(toRunTask string) string {
 		}
 		time.Sleep(time.Millisecond * 200)
 	case "EMG":
+
+		utils.LoggerDebug.Printf("InterruptRunningTask  =======KICKEMG  %s:%s", toRunTask, taskName)
 		//kick EMG members
-		if toRunTask != "C2C" {
+		if toRunTask == "EMG" {
+			ConfbridgeKick(task.ConfbridgeID, "all")
+			alstatus.PaStatus("", "EMG", "end")
+		} else if toRunTask != "C2C" {
 			EMGConfbridgeKick(task.ConfbridgeID)
 			alstatus.PaStatus("", "EMG", "end")
 		} else if toRunTask == "C2C" {
 			HangupICP()
 			//alstatus.PaStatus("", "EMG", "end")
 		}
+
 		time.Sleep(time.Millisecond * 200)
 	case "C2C": // Interrupt C2C task running,
 		if toRunTask == "PA" || toRunTask == "PAD-ICP" || toRunTask == "PAD-TMS" {
@@ -658,7 +664,7 @@ func ConfbridgeKick(confnum, channel string) (res map[string]string, err error)
 	if err != nil {
 		return nil, err
 	}
-	lfshook.NewLogger().Infof("ConfbridgeKick res:%+v", res)
+	lfshook.NewLogger().Infof("ConfbridgeKick para:%+v res:%+v", action, res)
 
 	if res["Response"] != "Success" {
 		return nil, errors.New(res["Message"])

+ 22 - 25
internal/app/ami/action/index.go

@@ -69,10 +69,8 @@ func HandleAMI(event map[string]string) {
 					Hangup(event["CallerIDNum"])
 				}
 
-				WaitTaskCreate("PA", event["CallerIDNum"])
-
 				if priority.CheckPriority("ManuPa") {
-
+					WaitTaskCreate("PA", event["CallerIDNum"])
 					//hangup others if priority is higher
 					//lfshook.NewLogger().Infof("UserEvent event :PA start")
 					utils.LoggerDebug.Printf("PA calling, check priority return true !")
@@ -82,20 +80,19 @@ func HandleAMI(event map[string]string) {
 						time.Sleep(time.Millisecond * 100) //wait endpoint release
 					}
 
+					time.Sleep(2 * time.Second)
+					if priority.TaskCreating == "PA" {
+						priority.TaskCreating = ""
+					}
 				} else {
 					Hangup(event["CallerIDNum"]) //lowwer priority ,hangup caller
 				}
-
-				time.Sleep(2 * time.Second)
-				if priority.TaskCreating == "PA" {
-					priority.TaskCreating = ""
-				}
 			} else if utils.IsIO(event["CallerIDNum"]) { // CPA
 
 				utils.LoggerDebug.Printf("Get UserEvent , %s calling !", event["Type"])
-				WaitTaskCreate("CPA", event["CallerIDNum"])
 
 				if priority.CheckPriority("CPA") {
+					WaitTaskCreate("CPA", event["CallerIDNum"])
 
 					//lfshook.NewLogger().Infof("========event:%s  ========devide:%d", event["Event"], active.TrainDevide)
 					utils.LoggerDebug.Printf("CPA calling, check priority return true !")
@@ -118,22 +115,24 @@ func HandleAMI(event map[string]string) {
 					if runningTaskName != "" {
 						time.Sleep(time.Millisecond * 100) //wait endpoint release
 					}
+
+					time.Sleep(2 * time.Second)
+					if priority.TaskCreating == "CPA" {
+						priority.TaskCreating = ""
+					}
+
 				} else {
 					utils.LoggerDebug.Printf("CPA calling failed , check priority return false !")
 					Hangup(event["CallerIDNum"]) //lowwer priority ,hangup caller
 				}
 
-				time.Sleep(2 * time.Second)
-				if priority.TaskCreating == "CPA" {
-					priority.TaskCreating = ""
-				}
 			}
 		} else if event["UserEvent"] == "CallType" && event["Type"] == "C2C" { //CabCab start; check cab cab priority
 			utils.LoggerDebug.Printf("Get UserEvent , %s calling !", event["Type"])
-			WaitTaskCreate("C2C", event["CallerIDNum"])
 
 			if priority.CheckPriority("CabCab") { // interrupt OCC-PAD
 				//C2C start PAD interrupt
+				WaitTaskCreate("C2C", event["CallerIDNum"])
 
 				taskName, _, ok := priority.RegistryTask.HighestPriorityRunningTask1()
 
@@ -158,17 +157,16 @@ func HandleAMI(event map[string]string) {
 					}
 				}
 
+				time.Sleep(2 * time.Second)
+				if priority.TaskCreating == "C2C" {
+					priority.TaskCreating = ""
+				}
 			} else { // hangup caller; C2C start failed
 				//lfshook.NewLogger().Infof("CabCab  hangup caller %s", event["CallerIDNum"])
 				utils.LoggerDebug.Printf("C2C calling failed , check priority return false !")
 				Hangup(event["CallerIDNum"])
 			}
 
-			time.Sleep(2 * time.Second)
-			if priority.TaskCreating == "C2C" {
-				priority.TaskCreating = ""
-			}
-
 			break
 
 			//Get  record file name ,encode and upload
@@ -612,9 +610,9 @@ func HandleAMI(event map[string]string) {
 		if utils.IsPAIU(event["CallerIDNum"]) && event["Queue"] == "0301" && priority.OCCAnswer == 0 { // The first PAD to OCC ,caller is PAD
 
 			utils.LoggerDebug.Printf("The first PAD to OCC queue .")
-			WaitTaskCreate("PAD-OCC")
 
 			if priority.CheckPriority("PAD-OCC") {
+				WaitTaskCreate("PAD-OCC")
 
 				runningTaskName := InterruptRunningTask("PAD-OCC") //PAD-OCC interrupt other
 				if runningTaskName != "" {
@@ -653,14 +651,13 @@ func HandleAMI(event map[string]string) {
 					}
 				}
 
+				time.Sleep(2 * time.Second)
+				if priority.TaskCreating == "PAD-OCC" {
+					priority.TaskCreating = ""
+				}
 			} else {
 				lfshook.NewLogger().Infof("====PAD-OCC Priority false===")
 			}
-
-			time.Sleep(2 * time.Second)
-			if priority.TaskCreating == "PAD-OCC" {
-				priority.TaskCreating = ""
-			}
 		}
 
 	case "ConfbridgeJoin":

+ 61 - 61
internal/app/stc/broadcast/stc-broadcast.go

@@ -172,142 +172,146 @@ func processPacket(packet []byte) {
 
 	case 0x02: // STN
 		if active.ActivedCab != "" {
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("STN")
 
 			if priority.CheckPriority("STN") {
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("STN")
 
 				runningTaskName := action.InterruptRunningTask("STN") //STN interrupt other
 				if runningTaskName != "" {
 					time.Sleep(time.Millisecond * 100) //wait endpoint release
 				}
 				StationAnn(packet)
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "STN" {
+					priority.TaskCreating = ""
+				}
+
 			} else {
 				alstatus.PaStatus("", "STN", "refuse")
 			}
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "STN" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x05: // SPC
 		if active.ActivedCab != "" {
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("SPC")
 
 			if priority.CheckPriority("SPC") {
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("SPC")
 
 				runningTaskName := action.InterruptRunningTask("SPC") //SPC interrupt other
 				if runningTaskName != "" {
 					time.Sleep(time.Millisecond * 100) //wait endpoint release
 				}
 				SpecialAnn(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "SPC" {
+					priority.TaskCreating = ""
+				}
+
 			} else {
 				alstatus.PaStatus("", "SPC", "refuse")
 			}
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "SPC" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x06: // EMG
 
 		if active.ActivedCab != "" {
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("EMG")
 
 			if priority.CheckPriority("EMG") {
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("EMG")
 
 				runningTaskName := action.InterruptRunningTask("EMG") //EMG interrupt other
 				if runningTaskName != "" {
 					time.Sleep(time.Millisecond * 100) //wait endpoint release
 				}
 				EmgMsg(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "EMG" {
+					priority.TaskCreating = ""
+				}
+
 			} else {
 				alstatus.PaStatus("", "EMG", "refuse")
 			}
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "EMG" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x07: // STOP
 		AnnStop([4]byte{packet[8], packet[9], packet[10], packet[11]})
 
 	case 0x08: // DCS
 
 		if active.ActivedCab != "" {
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("DCS")
 
 			if priority.CheckPriority("DCS") {
-
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("DCS")
 				runningTaskName := action.InterruptRunningTask("DCS") //DCS interrupt other
 				if runningTaskName != "" {
 					time.Sleep(time.Millisecond * 100) //wait endpoint release
 				}
 				DcsAnn(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "DCS" {
+					priority.TaskCreating = ""
+				}
 			} else {
 				alstatus.PaStatus("", "DCS", "refuse")
 			}
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "DCS" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x09: // SELF CHECK
 
 		if active.ActivedCab != "" {
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("CHK")
 
 			if priority.CheckPriority("CHK") {
 
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("CHK")
+
 				runningTaskName := action.InterruptRunningTask("CHK") //CHK interrupt other
 				if runningTaskName != "" {
 					time.Sleep(time.Millisecond * 100) //wait endpoint release
 				}
 				SelfCheck(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "CHK" {
+					priority.TaskCreating = ""
+				}
 			} else {
 				alstatus.PaStatus("", "CHK", "refuse")
 			}
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "CHK" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x0a: // Tone-test
 		if active.ActivedCab != "" {
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("VOL")
 
 			if priority.CheckPriority("VOL") {
 
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("VOL")
+
 				runningTaskName := action.InterruptRunningTask("VOL") //VOL interrupt other
 				if runningTaskName != "" {
 					time.Sleep(time.Millisecond * 100) //wait endpoint release
 				}
 				ToneTest(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "VOL" {
+					priority.TaskCreating = ""
+				}
+
 			} else {
 				alstatus.PaStatus("", "VOL", "refuse")
 			}
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "VOL" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x0e: //TMS answer PAD
 
 		handler := packet[8]
@@ -328,12 +332,10 @@ func processPacket(packet []byte) {
 			})
 			//}
 
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("PAD-TMS")
-
 			//if packet[8] == 0x01 { //answer PAD
 			if priority.CheckPriority("PAD-TMS") {
-
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("PAD-TMS")
 				//Before Answer PAD
 				//if packet[8] == 0x01 {
 
@@ -352,6 +354,11 @@ func processPacket(packet []byte) {
 				}
 
 				AlarmHandleTMS(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "PAD-TMS" {
+					priority.TaskCreating = ""
+				}
 			} else {
 				alstatus.PaStatus("", "PAD-TMS", "refuse")
 			}
@@ -359,11 +366,6 @@ func processPacket(packet []byte) {
 			AlarmHandleTMS(packet)
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "PAD-TMS" {
-			priority.TaskCreating = ""
-		}
-
 	case 0x0b: // reset all PAD
 		AlarmHoldResetAll(packet[8]) // reset all pad
 
@@ -393,12 +395,10 @@ func processPacket(packet []byte) {
 			})
 			//}
 
-			//检查是否有任务正在创建
-			action.WaitTaskCreate("PAD-ICP")
-
 			//if packet[8] == 0x01 { //answer PAD
 			if priority.CheckPriority("PAD-ICP") {
-
+				//检查是否有任务正在创建
+				action.WaitTaskCreate("PAD-ICP")
 				//Before Answer PAD
 				//if packet[8] == 0x01 {
 
@@ -418,6 +418,11 @@ func processPacket(packet []byte) {
 				}
 
 				AlarmHandleICP(packet)
+
+				time.Sleep(3 * time.Second)
+				if priority.TaskCreating == "PAD-ICP" {
+					priority.TaskCreating = ""
+				}
 			} else {
 				alstatus.PaStatus("", "PAD-ICP", "refuse")
 			}
@@ -425,11 +430,6 @@ func processPacket(packet []byte) {
 			AlarmHandleICP(packet)
 		}
 
-		time.Sleep(3 * time.Second)
-		if priority.TaskCreating == "PAD-ICP" {
-			priority.TaskCreating = ""
-		}
-
 		//case 0xf1: //Set remote master
 
 		//default: