dujunchen пре 3 недеља
родитељ
комит
ce1de9f706

+ 26 - 14
internal/app/ami/action/index.go

@@ -30,25 +30,30 @@ func HandleAMI(event map[string]string) {
 	case "DTMFBegin": //ICP interrupt PAD
 
 		if utils.IsICP(event["CallerIDNum"]) {
-			exten := strings.Split(strings.Split(event["Channel"], "/")[1], "-")[0] //get ICP exten number
-			if utils.IsICP(exten) {
-				chans, err := CoreShowChannels()
-				if err != nil {
-					lfshook.NewLogger().Errorf("CoreShowChannels %+v", err)
-				}
+			//exten := strings.Split(strings.Split(event["Channel"], "/")[1], "-")[0] //get ICP exten number
+			//if utils.IsICP(exten) {
+			chans, err := CoreShowChannels()
+			if err != nil {
+				lfshook.NewLogger().Errorf("CoreShowChannels %+v", err)
+			}
 
-				//1. Redirect the connected PAD to 0300
-				for _, ret := range chans {
-					//lfshook.NewLogger().Infof("===HangupRunningTask=PAD1====Chans-ret===%+v==== ", ret)
-					if utils.IsPAIU(ret.CallerIDNum) && ret.ChannelStateDesc == "Up" && utils.IsICP(ret.ConnectedLineNum) { //hangup pad call ICP channel
-						//lfshook.NewLogger().Infof("===Hangup=Chan===%+v==== ", ret.Channel)
-						Hangup(ret.Channel)
-					} else if ret.ConnectedLineNum == "<unknown>" { //redirect pad chanspy channel
+			//1. Redirect the connected PAD to 0300
+			for _, ret := range chans {
+				//lfshook.NewLogger().Infof("===HangupRunningTask=PAD1====Chans-ret===%+v==== ", ret)
+				//hangup pad call ICP channel
+				if utils.IsPAIU(ret.CallerIDNum) {
+					if ret.ConnectedLineNum == "<unknown>" { //redirect pad chanspy channel
 						//lfshook.NewLogger().Infof("===Redirect=Chan===%+v==== ", ret.Channel)
-						err := Redirect(ret.Channel, "0300", "default", exten, "PAD")
+						err := Redirect(ret.Channel, "0300", "default", "", "PAD")
 						if err != nil {
 							lfshook.NewLogger().Errorf("Redirect %+v", err)
 						}
+
+						number := strings.Split(strings.Split(ret.Channel, "-")[0], "/")[1]
+						active.NotifyPaiu(number, "hold")
+					} else if utils.IsPAIU(ret.CallerIDNum) && ret.ChannelStateDesc == "Up" && utils.IsICP(ret.ConnectedLineNum) {
+						lfshook.NewLogger().Infof("===Hangup=Chan===%+v==== ", ret.Channel)
+						Hangup(ret.Channel)
 					}
 				}
 			}
@@ -197,9 +202,13 @@ func HandleAMI(event map[string]string) {
 			if priority.CheckPriority("CabCab") {
 
 				if priority.RunningType == "PA" || priority.RunningType == "PAD-ICP" || priority.RunningType == "PAD-TMS" {
+					lfshook.NewLogger().Infof("=======HangupRunningTask====%s", event["CallerIDNum"])
 					HangupRunningTask("C2C") //C2C interrupt other
+					//	} else if priority.RunningType == "CPA" {
+
 				} else {
 					//Hangup the other ICP
+					lfshook.NewLogger().Infof("========CabCab  hangup other one====%s", event["CallerIDNum"])
 					if event["CallerIDNum"] == "2311" {
 						Hangup("2381")
 					} else {
@@ -207,6 +216,7 @@ func HandleAMI(event map[string]string) {
 					}
 				}
 			} else { // hangup caller; C2C start failed
+				lfshook.NewLogger().Infof("========CabCab  hangup caller====%s", event["CallerIDNum"])
 				Hangup(event["CallerIDNum"])
 			}
 		}
@@ -302,6 +312,8 @@ func HandleAMI(event map[string]string) {
 					if priority.PADStart == 1 {
 						alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
 						priority.PADStart = 0
+
+						priority.CleanPriorityTag()
 					}
 					/*if priority.ResumeEmgPara.FileName != "" {
 						CheckEmgResume()

+ 39 - 1
internal/app/stc/active/index.go

@@ -1,6 +1,11 @@
 package active
 
-import "time"
+import (
+	"fmt"
+	"net/http"
+	"pbx-api-gin/pkg/lfshook"
+	"time"
+)
 
 // var ActiveCab string
 var CabNum string
@@ -11,3 +16,36 @@ var Master = false
 var QueueTimer *time.Timer = nil
 
 //var ActivedMC int
+
+// 挂断所有报警器
+func NotifyPaiu(Exten, Action string) {
+	url := ""
+	switch Action {
+	case "answer":
+		url = fmt.Sprintf("http://10.0.24.%s/api/sipphone?action=answer", Exten[2:])
+	case "hold":
+		url = fmt.Sprintf("http://10.0.24.%s/api/sipphone?action=hold", Exten[2:])
+	case "hangup":
+		url = fmt.Sprintf("http://10.0.24.%s/api/sipphone?action=hangup", Exten[2:])
+	}
+
+	lfshook.NewLogger().Logger.Infof("======Notify PAIU Alarm====:%+v ", url)
+	resp, err := http.Get(url)
+	if err != nil {
+		lfshook.NewLogger().Logger.Infof("======Notify PAIU Alarm====:%+v ", err)
+		return
+	}
+	defer resp.Body.Close()
+	/*
+	   body, err := io.ReadAll(resp.Body)
+
+	   	if err != nil {
+	   		// 读取数据错误
+	   		lfshook.NewLogger().Warn("ioutil ReadAll failed :", err.Error())
+	   		return
+	   	}
+
+	   fmt.Printf("状态码: %d\n", resp.StatusCode)
+	   fmt.Printf("响应内容: %s\n", body)
+	*/
+}

+ 2 - 36
internal/app/stc/broadcast/stc-broadcast.go

@@ -6,7 +6,6 @@ import (
 	"fmt"
 	"io"
 	"net"
-	"net/http"
 	"pbx-api-gin/internal/app/ami/action"
 	"pbx-api-gin/internal/app/stc/active"
 	msgdata "pbx-api-gin/internal/app/stc/data"
@@ -479,7 +478,7 @@ func AlarmHandleICP(data []byte) {
 		}
 
 	case 0x02: //hold  重新放回队列里面
-		NotifyPaiu(exten, "hold")
+		active.NotifyPaiu(exten, "hold")
 		err := action.RedirectInQueue(exten, "0300", "default", "1")
 		if err != nil {
 			lfshook.NewLogger().Info(err)
@@ -545,7 +544,7 @@ func AlarmHandleTMS(data []byte) {
 		}
 
 	case 0x02: //hold  重新放回队列里面
-		NotifyPaiu(exten, "hold")
+		active.NotifyPaiu(exten, "hold")
 		err := action.RedirectInQueue(exten, "0300", "default", "1")
 		if err != nil {
 			lfshook.NewLogger().Info(err)
@@ -561,39 +560,6 @@ func AlarmHandleTMS(data []byte) {
 	}
 }
 
-// 挂断所有报警器
-func NotifyPaiu(Exten, Action string) {
-	url := ""
-	switch Action {
-	case "answer":
-		url = fmt.Sprintf("http://10.0.24.%s/api/sipphone?action=answer", Exten[2:])
-	case "hold":
-		url = fmt.Sprintf("http://10.0.24.%s/api/sipphone?action=hold", Exten[2:])
-	case "hangup":
-		url = fmt.Sprintf("http://10.0.24.%s/api/sipphone?action=hangup", Exten[2:])
-	}
-
-	lfshook.NewLogger().Logger.Infof("======Notify PAIU Alarm====:%+v ", url)
-	resp, err := http.Get(url)
-	if err != nil {
-		lfshook.NewLogger().Logger.Infof("======Notify PAIU Alarm====:%+v ", err)
-		return
-	}
-	defer resp.Body.Close()
-	/*
-	   body, err := io.ReadAll(resp.Body)
-
-	   	if err != nil {
-	   		// 读取数据错误
-	   		lfshook.NewLogger().Warn("ioutil ReadAll failed :", err.Error())
-	   		return
-	   	}
-
-	   fmt.Printf("状态码: %d\n", resp.StatusCode)
-	   fmt.Printf("响应内容: %s\n", body)
-	*/
-}
-
 // 挂断所有报警器
 func AlarmHoldResetAll(handler byte) {