dujunchen 1 miesiąc temu
rodzic
commit
f9f2bb662d
2 zmienionych plików z 61 dodań i 7 usunięć
  1. 39 3
      internal/app/ami/action/call.go
  2. 22 4
      internal/app/ami/action/index.go

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

@@ -172,31 +172,67 @@ func InterruptRunningTask(toRunTask string) {
 	}
 
 	switch task.RunType {
+	case "SPC":
+		if toRunTask == "C2C" {
+			HangupICP()
+			alstatus.PaStatus("", "SPC", "end")
+		} else {
+			ConfbridgeKick(task.ConfbridgeID, "all")
+			alstatus.PaStatus("", "SPC", "end")
+		}
+		time.Sleep(time.Millisecond * 200)
+	case "CHK":
+		if toRunTask == "C2C" {
+			HangupICP()
+			alstatus.PaStatus("", "CHK", "end")
+		} else {
+			ConfbridgeKick(task.ConfbridgeID, "all")
+			alstatus.PaStatus("", "CHK", "end")
+		}
+		time.Sleep(time.Millisecond * 200)
 	case "DCS":
 		if toRunTask == "STN" {
 			return
-		}
-
-		if toRunTask == "DCS" {
+		} else if toRunTask == "C2C" {
+			HangupICP()
+			alstatus.PaStatus("", "DCS", "end")
+		} else {
 			ConfbridgeKick(task.ConfbridgeID, "all")
+			alstatus.PaStatus("", "DCS", "end")
 		}
+
 		time.Sleep(time.Millisecond * 200)
 	case "STN":
 		if toRunTask == "DCS" {
 			return
+		} else if toRunTask == "C2C" {
+			HangupICP()
+			alstatus.PaStatus("", "STN", "end")
+		} else {
+			ConfbridgeKick(task.ConfbridgeID, "all")
+			alstatus.PaStatus("", "STN", "end")
 		}
+		time.Sleep(time.Millisecond * 200)
 	case "CPA":
 		//kick CPA members
 		if toRunTask != "C2C" {
 			CPAConfbridgeKick(task.ConfbridgeID)
 			alstatus.PaStatus("", "CPA", "end")
+		} else if toRunTask == "C2C" {
+			HangupICP()
+			alstatus.PaStatus("", "CPA", "end")
 		}
+		time.Sleep(time.Millisecond * 200)
 	case "EMG":
 		//kick EMG members
 		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" {
 			HangupICP()

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

@@ -41,9 +41,9 @@ func HandleAMI(event map[string]string) {
 			case "*": //Cab cab interrupt PAD
 				lfshook.NewLogger().Infof("===Cab cab interrupt PAD and====== ")
 
-				//InterruptRunningTask("C2C")
-				Hangup("2311")
-				Hangup("2381")
+				InterruptRunningTask("C2C")
+				//Hangup("2311")
+				//Hangup("2381")
 				time.Sleep(time.Millisecond * 100) //wait endpoimt release
 			}
 		}
@@ -51,6 +51,11 @@ func HandleAMI(event map[string]string) {
 	case "UserEvent": // RCD filename; PA;CPA; CabCab
 		lfshook.NewLogger().Infof("========event:%s   File:%s", event["Event"], event["FILENAME"])
 
+		if event["UserEvent"] == "CONTINUE" && event["Type"] != "" {
+			alstatus.PaStatus("", event["Type"], "continue")
+			return
+		}
+
 		if event["UserEvent"] == "CallType" && (event["Type"] == "PA" || event["Type"] == "CPA") { //PA start; check manual PA priority
 			//PA & CPA interrupt others
 			if utils.IsICP(event["CallerIDNum"]) { //PA
@@ -1131,8 +1136,21 @@ func HandleAMI(event map[string]string) {
 			taskName, task, ok := priority.RegistryTask.HighestPriorityRunningTask1()
 			if ok {
 				ICPConfbridgeReinvite(task.ConfbridgeID, taskName)
+				//check resume
+				if taskName == "CPA" {
+					alstatus.PaStatus("", "CPA", "start")
+				} else if taskName == "EMG" {
+					alstatus.PaStatus("", "EMG", "start")
+				} else if taskName == "SPC" {
+					alstatus.PaStatus("", "SPC", "start")
+				} else if taskName == "DCS" {
+					alstatus.PaStatus("", "DCS", "start")
+				} else if taskName == "STN" {
+					alstatus.PaStatus("", "STN", "start")
+				} else if taskName == "CHK" {
+					alstatus.PaStatus("", "CHK", "start")
+				}
 			}
-
 		}
 
 	case "ExtensionStatus":