Ver Fonte

add api for alarm status ;

dujunchen há 1 semana atrás
pai
commit
27d3dbdd76

+ 1 - 1
cmd/main.go

@@ -21,7 +21,7 @@ func main() {
 	initVersion()
 
 	// 解析配置文件
-	configs.ConfigPath = "./configs/config.yaml"
+	configs.ConfigPath = "/data/test/configs/config.yaml"
 	configs.DecodeConfig()
 
 	configs.ConfigGlobal.LogLevel = logrus.InfoLevel

+ 14 - 1
internal/app/ami/action/playback.go

@@ -9,7 +9,20 @@ import (
 func PlaybackPacu(filename string, count int, delay int, PaType string) (err error) {
 
 	Para := fmt.Sprintf("count=%d,filename=%s,delay=%d,priority=%s", count, strings.Replace(filename, ".wav", "", -1), delay, PaType)
-	Chan := "Local/0500" //paging pacu
+	Chan := ""
+
+	switch PaType {
+	case "STN":
+		Chan = "Local/0503" //spa-rule
+	case "SPC":
+		Chan = "Local/0505" //spc-rule
+	case "DCS":
+		Chan = "Local/0504" //dc-rule
+	case "CHK":
+		Chan = "Local/0503" //paging pacu
+	case "EMG":
+		Chan = "Local/0502" //emg-rule
+	}
 
 	action := map[string]string{
 		"Action":   "Originate",

+ 47 - 59
internal/app/stc/broadcast/stc-broadcast.go

@@ -5,11 +5,13 @@ import (
 	"fmt"
 	"io"
 	"net"
+	"net/http"
 	"pbx-api-gin/internal/app/ami/action"
 	"pbx-api-gin/internal/app/ami/model"
 	"pbx-api-gin/internal/app/mysql"
 	msgdata "pbx-api-gin/internal/app/stc/data"
 	"pbx-api-gin/pkg/lfshook"
+	"strings"
 	"sync"
 	"time"
 )
@@ -83,73 +85,25 @@ func processPacket(packet []byte) {
 	}
 }
 
-/*
-func HandleStcCmd(conn net.Conn) {
-
-	for {
-		buffer := make([]byte, 1024)
-		n, err := conn.Read(buffer)
-		if err != nil {
-			fmt.Println("Error reading from server:", err)
-			return
-		}
-		if buffer[5] != 0x01 {
-			lfshook.NewLogger().Logger.Infof("Get data from STC ===============:%x", buffer[:n])
-		}
-
-		switch buffer[5] {
-		case 0x01: //heartbeat
-
-		case 0x02: //STN
-			StationAnn(buffer)
-
-		case 0x03: //ACTIVE
-			Active([1]byte{buffer[8]})
-
-		case 0x05: //SPC
-			SpecialAnn(buffer)
-
-		case 0x06: //EMG
-			EmgMsg(buffer)
-
-		case 0x07: //STOP
-			AnnStop([4]byte{buffer[8], buffer[9], buffer[10], buffer[11]})
-
-		case 0x08: //DCS
-			DcsAnn(buffer)
-
-		case 0x09: //SELF CHECK
-			SelfCheck(buffer)
-
-		case 0x0a: //
-			AlarmHandle(buffer)
-
-		case 0x0b: //
-			AlarmResetAll()
-
-		case 0x0c: //
-			RecordStorageConf(buffer[8:])
-		}
-	}
-}
-*/
 // STN , 自动报站广播
 func StationAnn(data []byte) (err error) {
 
-	specialVoice := int(data[8])
+	//specialVoice := int(data[8])
 	delay := data[9]
 	cycleCount := data[10]
 	datalen := int(data[11])
 
 	filename := msgdata.SubstrByRune(string(data[12:]), 0, datalen-4)
-
-	//update special voice
-	_, er := mysql.DBOrmInstance.In("exten", Pacus).Update(&model.Extension{Special: specialVoice, PaType: "STN"})
-	if er != nil {
-		lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
-		return er
-	}
-
+	filename = strings.Split(filename, ".")[0]
+	lfshook.NewLogger().Logger.Infof("=============Get filename  : %v", filename)
+	/*
+		//update special voice
+		_, er := mysql.DBOrmInstance.In("exten", Pacus).Update(&model.Extension{Special: specialVoice, PaType: "STN"})
+		if er != nil {
+			lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
+			return er
+		}
+	*/
 	action.PlaybackPacu(filename, int(cycleCount), int(delay), "STN")
 	return nil
 }
@@ -344,6 +298,8 @@ func AlarmHandle(data []byte) {
 		//action.ChanSpy("PACU", exten, false, true)
 		lfshook.NewLogger().Logger.Infof("================ICP Answer PAD================:%s ", exten)
 	case 0x02: //hold  重新放回队列里面
+		NotifyPaiu(exten, "hold")
+
 		err := action.RedirectInQueue(exten, "0300", "default", "1")
 		if err != nil {
 			lfshook.NewLogger().Info(err)
@@ -354,6 +310,38 @@ func AlarmHandle(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:])
+	}
+
+	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 AlarmResetAll() {
 

+ 3 - 0
internal/app/stc/index.go

@@ -15,6 +15,9 @@ import (
 
 const RemotePort = 10100
 const LocalPort = 10201
+
+//const RemoteAddr = "192.168.17.14"
+
 const RemoteAddr = "10.0.11.11"
 
 func StartStcConnection(conn net.Conn) {

+ 1 - 1
internal/pkg/configs/decode.go

@@ -53,7 +53,7 @@ type Config struct {
 }
 
 // ConfigPath 配置文件路径
-var ConfigPath = "./config.yaml"
+var ConfigPath = "/data/test/configs/config.yaml"
 
 // ConfigGlobal 全局配置变量
 var ConfigGlobal *Config