dujunchen před 1 týdnem
rodič
revize
a5a5a2d622

+ 10 - 8
internal/app/ami/action/index.go

@@ -2,6 +2,8 @@ package action
 
 import (
 	"net"
+	"pbx-api-gin/internal/app/ami/model"
+	"pbx-api-gin/internal/app/mysql"
 	alstatus "pbx-api-gin/internal/app/stc/sendstatus"
 	"pbx-api-gin/internal/app/stc/socket"
 	"pbx-api-gin/internal/pkg/configs"
@@ -63,14 +65,14 @@ func HandleAMI(event map[string]string, conn net.Conn) {
 	case "ExtensionStatus":
 		lfshook.NewLogger().Infof("=========%s", event["Event"])
 		if event["StatusText"] == "Idle" || event["StatusText"] == "Unavailable" {
-			//status := &model.Extension{
-			//	Extension: event["Exten"],
-			//	Status:    event["StatusText"],
-			//}
-			//_, err := mysql.DBOrmInstance.Where("exten = ?", status.Extension).Cols("status").Update(status)
-			//if err != nil {
-			//	lfshook.NewLogger().Infof("update extension status err : %+v", err.Error())
-			//}
+			status := &model.Extension{
+				Extension: event["Exten"],
+				Status:    event["StatusText"],
+			}
+			_, err := mysql.DBOrmInstance.Where("exten = ?", status.Extension).Cols("status").Update(status)
+			if err != nil {
+				lfshook.NewLogger().Infof("update extension status err : %+v", err.Error())
+			}
 
 			if len(event["Exten"]) > 3 {
 				alstatus.AlarmStatus(event["Exten"], event["StatusText"], conn) // Alarm idle + unavailable

+ 3 - 3
internal/app/ami/model/sip.go

@@ -25,10 +25,10 @@ import "encoding/json"
 // ActiveChannels:
 type Extension struct {
 	Extension string `xorm:"exten" json:"exten"`
-	ExtType   string `xorm:"exttype" json:"extType"`
-	PaType    string `xorm:"patype" json:"paType"`
+	ExtType   string `xorm:"dev_type" json:"extType"`
+	PaType    string `xorm:"pa_type" json:"paType"`
 	Priority  string `xorm:"priority" json:"priority"`
-	Special   int    `xorm:"special" json:"special"`
+	Special   int    `xorm:"special_pa" json:"special"`
 	Status    string `xorm:"status" json:"status"`
 	Remark    string `xorm:"remark" json:"remark"`
 }

+ 2 - 0
internal/app/index.go

@@ -9,7 +9,9 @@ import (
 )
 
 func StartApp() {
+	//init mysql
 	mysql.CreateDBInstance()
+
 	// 启动带有重连机制的连接管理协程
 	go stc.StartStcConnection(socket.Conn)
 	// 启动其他服务...

+ 10 - 2
internal/app/mysql/index.go

@@ -1,14 +1,22 @@
 package mysql
 
 import (
+	"fmt"
+	"os"
+	"pbx-api-gin/internal/pkg/configs"
+	"pbx-api-gin/pkg/lfshook"
+	"syscall"
+
 	_ "github.com/go-sql-driver/mysql"
+	"github.com/sirupsen/logrus"
 	"xorm.io/xorm"
+	"xorm.io/xorm/log"
 )
 
 var DBOrmInstance *xorm.Engine
 
 func CreateDBInstance() {
-	/*var err error
+	var err error
 	// DBOrmInstance, err = xorm.NewEngine("sqlite3", "playcall.db")
 	url := fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?charset=utf8",
 		configs.ConfigGlobal.MysqlDBUser,
@@ -41,5 +49,5 @@ func CreateDBInstance() {
 		}
 		DBOrmInstance.SetLogger(log.NewSimpleLogger(info))
 	}
-	*/
+
 }

+ 12 - 10
internal/app/stc/broadcast/stc-broadcast.go

@@ -97,22 +97,24 @@ func processPacket(packet []byte) {
 // 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)
-	filename = strings.Split(filename, ".")[0]
+	filename = strings.ReplaceAll(filename, ".wav", "")
+	filename = strings.ReplaceAll(filename, ".mp3", "")
+
 	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
-		}
-	*/
+
+	//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
 }