| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package priority
- import (
- "os"
- "pbx-api-gin/pkg/lfshook"
- "strconv"
- "github.com/sirupsen/logrus"
- "gopkg.in/ini.v1"
- )
- var ICPAnswer = 0
- var OCCAnswer = 0
- var RunningTypePriority = 0
- var RunningType = ""
- var SpecialVoice = 0
- var RunningPATaskChan = ""
- type BroadcastResumeParas struct {
- FileName string `json:"filename"`
- Count int `json:"count"`
- Delay int `json:"delay"`
- BroadcastType string `json:"broadcastType"`
- }
- var ResumeEmgPara BroadcastResumeParas
- type PriorityAll struct {
- ManuPa string `json:"manualPa"`
- CabCab string `json:"cabCab"`
- PADICP string `json:"padIcp"`
- PADTMS string `json:"padTms"`
- PADOCC string `json:"padOcc"`
- CPA string `json:"cpa"`
- EMG string `json:"emg"`
- SPC string `json:"spc"`
- DCS string `json:"dcs"`
- STN string `json:"stn"`
- CHK string `json:"chk"`
- VOL string `json:"vol"`
- }
- var Priority PriorityAll
- func GetPriority() {
- filePath := "/etc/asterisk/priority.conf"
- _, err := os.Stat(filePath)
- if err != nil {
- logrus.Error(err)
- return
- }
- iniFile, err := ini.Load(filePath)
- if err != nil {
- logrus.Error(err)
- return
- }
- Priority.CHK = iniFile.Section("general").Key("CHK").Value()
- Priority.STN = iniFile.Section("general").Key("STN").Value()
- Priority.DCS = iniFile.Section("general").Key("DCS").Value()
- Priority.SPC = iniFile.Section("general").Key("SPC").Value()
- Priority.EMG = iniFile.Section("general").Key("EMG").Value()
- Priority.CPA = iniFile.Section("general").Key("CPA").Value()
- Priority.PADOCC = iniFile.Section("general").Key("PAD-OCC").Value()
- Priority.PADTMS = iniFile.Section("general").Key("PAD-TMS").Value()
- Priority.PADICP = iniFile.Section("general").Key("PAD-ICP").Value()
- Priority.CabCab = iniFile.Section("general").Key("CabCab").Value()
- Priority.ManuPa = iniFile.Section("general").Key("ManuPa").Value()
- Priority.VOL = iniFile.Section("general").Key("VOL").Value()
- }
- func GetPriorityByKey(key string) string {
- switch key {
- case "VOL":
- return Priority.VOL
- case "CHK":
- return Priority.CHK
- case "STN":
- return Priority.STN
- case "DCS":
- return Priority.DCS
- case "SPC":
- return Priority.SPC
- case "EMG":
- return Priority.EMG
- case "CPA":
- return Priority.CPA
- case "PAD-OCC":
- return Priority.PADOCC
- case "PAD-TMS":
- return Priority.PADTMS
- case "PAD-ICP":
- return Priority.PADICP
- case "CabCab":
- return Priority.CabCab
- case "ManuPa":
- return Priority.ManuPa
- default:
- return ""
- }
- }
- // check priority , if the running priority is lowwer than the to run priority
- func CheckPriority(runType string) bool {
- lfshook.NewLogger().Logger.Infof("=========Check Pri runType:%s====RunningTypePriority:%d====SpecialVoice:%d========", runType, RunningTypePriority, SpecialVoice)
- //check special voice
- if SpecialVoice == 1 {
- return false
- }
- //no any runing task
- if RunningTypePriority == 0 {
- return true
- }
- //get the priority to run in the config file
- ret, err := strconv.Atoi(GetPriorityByKey(runType))
- if err != nil {
- lfshook.NewLogger().Logger.Infof("=========Check Pri GetPriorityByKey err:%+v", err)
- return false
- }
- if ret == RunningTypePriority && runType == "VOL" {
- return true
- }
- if ret == RunningTypePriority && runType == "CHK" {
- return true
- }
- //if the running task priority is lowwer
- if ret < RunningTypePriority && ret != 0 {
- return true
- }
- return false
- }
- // Clean all priority tag
- func CleanPriorityTag() {
- ICPAnswer = 0
- OCCAnswer = 0
- RunningTypePriority = 0
- RunningType = ""
- SpecialVoice = 0
- RunningPATaskChan = ""
- }
|