ソースを参照

fix PAD alarm

dujunchen 2 週間 前
コミット
999aca7350
2 ファイル変更60 行追加26 行削除
  1. 47 21
      internal/app/ami/action/index.go
  2. 13 5
      internal/app/stc/broadcast/stc-broadcast.go

+ 47 - 21
internal/app/ami/action/index.go

@@ -98,9 +98,21 @@ func HandleAMI(event map[string]string) {
 				alstatus.OccPad("end")
 				break
 			} else { //OCC queue is not empty
-				if active.CabNum == "1" && active.Actived && ExtenStatus("1411") == "Idle" { //check active and OCC status
+				var extOCC1 model.Extension
+				_, er := mysql.DBOrmInstance.Where("exten = ?", "1411").Get(&extOCC1)
+				if er != nil {
+					lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
+				}
+
+				var extOCC8 model.Extension
+				_, er = mysql.DBOrmInstance.Where("exten = ?", "1481").Get(&extOCC8)
+				if er != nil {
+					lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
+				}
+
+				if active.CabNum == "1" && active.Actived && extOCC1.Status == "Idle" { //check active and OCC status
 					Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", event["CallerIDNum"], "1") // PACUs dial OCC1
-				} else if active.CabNum == "8" && active.Actived && ExtenStatus("1481") == "Idle" {
+				} else if active.CabNum == "8" && active.Actived && extOCC8.Status == "Idle" {
 					Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", event["CallerIDNum"], "8") // PACUs dial OCC8
 				}
 			}
@@ -140,12 +152,24 @@ func HandleAMI(event map[string]string) {
 		}
 
 		//first caller goto OCC
+		var extOCC1 model.Extension
+		_, er := mysql.DBOrmInstance.Where("exten = ?", "1411").Get(&extOCC1)
+		if er != nil {
+			lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
+		}
+
+		var extOCC8 model.Extension
+		_, er = mysql.DBOrmInstance.Where("exten = ?", "1481").Get(&extOCC8)
+		if er != nil {
+			lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
+		}
+
 		if utils.IsPAIU(event["CallerIDNum"]) && event["Queue"] == "0301" && priority.OCCAnswer == 0 { // The first PAD to OCC ,caller is PAD
-			if active.CabNum == "1" && active.Actived && ExtenStatus("1411") == "Idle" { //check active and OCC status
+			if active.CabNum == "1" && active.Actived && extOCC1.Status == "Idle" { //check active and OCC status
 				priority.OCCAnswer = 1
 				alstatus.OccPad("start")
 				Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", event["CallerIDNum"], "1") // PACUs dial OCC1
-			} else if active.CabNum == "8" && active.Actived && ExtenStatus("1481") == "Idle" {
+			} else if active.CabNum == "8" && active.Actived && extOCC8.Status == "Idle" {
 				priority.OCCAnswer = 1
 				alstatus.OccPad("start")
 				Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", event["CallerIDNum"], "8") // PACUs dial OCC8
@@ -201,7 +225,7 @@ func HandleAMI(event map[string]string) {
 			break
 		}
 
-		//ICP-TMS answer PAD, PACU idle
+	/*	//ICP-TMS answer PAD, PACU idle
 		if utils.IsPACU(event["ConnectedLineNum"]) && event["Exten"] == "0403" { //PAD ansered by ICP-TMS; PACU Page() ICPs connected
 			lfshook.NewLogger().Infof("====PAD answered by ICP-TMS:%s===PACU idle==", event["ConnectedLineName"])
 			alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
@@ -217,7 +241,7 @@ func HandleAMI(event map[string]string) {
 			alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
 			break
 		}
-
+	*/
 	case "ChanSpyStart":
 		lfshook.NewLogger().Infof("=========%s", event["Event"])
 		//PAD answered by ICP ; PAD whisper ICP
@@ -279,22 +303,24 @@ func HandleAMI(event map[string]string) {
 			}
 		}
 
-		/*	case "BridgeEnter":
-			lfshook.NewLogger().Infof("=========event:%s   callerid:%s", event["Event"], event["CallerIDNum"])
-				//ICP and PACU connected
-				if utils.IsPACU(event["CallerIDNum"]) && utils.IsPAIU(event["CallerIDName"]) { //TMS-ICP connected PACU
-					lfshook.NewLogger().Infof("====BridgeEnter==IN action===%s===ID:%s   Name:%s", event["Event"], event["CallerIDNum"], event["CallerIDName"])
-					alstatus.AlarmStatus(event["CallerIDName"], "connect") // Alarm connected
+	case "BridgeEnter": // TMS-ICP answer PAD; PACU connect ICP
+		lfshook.NewLogger().Infof("=========event:%s   callerid:%s", event["Event"], event["CallerIDNum"])
 
-					if active.CabNum == "1" && active.Actived {
-						go RedirectInQueue(event["CallerIDName"], "2311", "chanspy-rule", "") // 1车TMS-ICP接听PAIU, PAD whisper ICP
-					} else if active.CabNum == "8" && active.Actived {
-						go RedirectInQueue(event["CallerIDName"], "2381", "chanspy-rule", "") // 8车TMS-ICP接听PAIU, PAD whisper ICP
-					}
-				} else if utils.IsPAIU(event["CallerIDNum"]) {
-					lfshook.NewLogger().Infof("====send pad status=====")
-					alstatus.AlarmStatus(event["CallerIDNum"], "connect") // PAD connect ICP-TMS
-				}*/
+		if utils.IsPACU(event["CallerIDNum"]) && utils.IsPAIU(event["CallerIDName"]) { //ICP and PACU connected
+			lfshook.NewLogger().Infof("====BridgeEnter==IN action===%s===ID:%s   Name:%s", event["Event"], event["CallerIDNum"], event["CallerIDName"])
+			alstatus.AlarmStatus(event["CallerIDName"], "connect") // Alarm connected
+
+			if active.CabNum == "1" && active.Actived {
+				go Dial("0403", "2311", "chanspy-rule", "ICP8-ICP1", "ICP8-ICP1", "8") // ICP8 whisper ICP1
+				//goto ChanSpyStart, PAD whisper ICP8
+			} else if active.CabNum == "8" && active.Actived {
+				go Dial("0403", "2381", "chanspy-rule", "ICP8-ICP1", "ICP8-ICP1", "8") // ICP1 whisper ICP8
+				//goto ChanSpyStart, PAD whisper ICP1
+			}
+		} else if utils.IsPAIU(event["CallerIDNum"]) {
+			lfshook.NewLogger().Infof("====send pad status=====")
+			alstatus.AlarmStatus(event["CallerIDNum"], "connect") // PAD connect ICP-TMS
+		}
 	}
 }
 

+ 13 - 5
internal/app/stc/broadcast/stc-broadcast.go

@@ -385,9 +385,11 @@ func AlarmHandleICP(data []byte) {
 
 		lfshook.NewLogger().Logger.Infof("================ICP Answer PAD================:%s ", exten)
 		if active.CabNum == "1" && active.Actived {
-			action.Dial("0402", "0511", "pad-rule-pacus", "ani1", exten, "1") // PACU dial ICP MC1
+			action.Dial("0402", "0511", "pad-rule-pacus", "ani1", exten, "1") // PACUs dial ICP1
+			//goto ami event ConfbridgeJoin, ICP answer PAD
 		} else if active.CabNum == "8" && active.Actived {
-			action.Dial("0402", "0511", "pad-rule-pacus", "ani8", exten, "8") // PACU dial ICP MC8
+			action.Dial("0402", "0511", "pad-rule-pacus", "ani8", exten, "8") // PACUs dial ICP8
+			//goto ami event ConfbridgeJoin, ICP answer PAD
 		}
 
 	case 0x02: //hold  重新放回队列里面
@@ -437,11 +439,17 @@ func AlarmHandleTMS(data []byte) {
 	switch handler {
 	case 0x01: //answer(ICP+Alarm+PACU)
 		//NotifyPaiu(exten, "answer")
-		lfshook.NewLogger().Logger.Infof("================TMS Answer PAD:%s===PACU:%s========:%s ====", exten, PacuNum)
+		lfshook.NewLogger().Logger.Infof("================TMS Answer PAD:%s===PACU:%s==========", exten, PacuNum)
 		if action.ExtenStatus(PacuNum) == "Idle" {
-			action.Dial("0403", PacuNum, "default", PacuNum, exten, "") // PACU dial ICPs
+			if active.CabNum == "1" && active.Actived {
+				action.Dial("0403", PacuNum, "default", PacuNum, exten, "1") // PACU dial ICP1
+				//goto ami event BridgeEnter, ICP8 whisper ICP1
+			} else if active.CabNum == "8" && active.Actived {
+				action.Dial("0403", PacuNum, "default", PacuNum, exten, "8") // PACU dial ICP8
+				//goto ami event BridgeEnter, ICP1 whisper ICP8
+			}
 		} else {
-			action.RedirectInQueue(exten, "0403", "default", "1") // PAD dial ICPs
+			action.RedirectInQueue(exten, "0405", "default", "PAD") // PAD dial ICPs
 		}
 
 	case 0x02: //hold  重新放回队列里面