|
@@ -1,8 +1,6 @@
|
|
|
package action
|
|
package action
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "pbx-api-gin/internal/app/ami/model"
|
|
|
|
|
- "pbx-api-gin/internal/app/mysql"
|
|
|
|
|
"pbx-api-gin/internal/app/stc/active"
|
|
"pbx-api-gin/internal/app/stc/active"
|
|
|
"pbx-api-gin/internal/app/stc/priority"
|
|
"pbx-api-gin/internal/app/stc/priority"
|
|
|
alstatus "pbx-api-gin/internal/app/stc/sendstatus"
|
|
alstatus "pbx-api-gin/internal/app/stc/sendstatus"
|
|
@@ -34,6 +32,14 @@ func HandleAMI(event map[string]string) {
|
|
|
lfshook.NewLogger().Infof("========event:%s File:%s", event["Event"], event["FILENAME"])
|
|
lfshook.NewLogger().Infof("========event:%s File:%s", event["Event"], event["FILENAME"])
|
|
|
if event["UserEvent"] == "SetRecordFile" { //get record file name
|
|
if event["UserEvent"] == "SetRecordFile" { //get record file name
|
|
|
alstatus.SendRecordFile(event["FILENAME"], event["RecordType"])
|
|
alstatus.SendRecordFile(event["FILENAME"], event["RecordType"])
|
|
|
|
|
+ } else if event["UserEvent"] == "CallType" && event["Type"] == "PA" { //check manual PA priority
|
|
|
|
|
+ if priority.CheckPriority("ManuPa") {
|
|
|
|
|
+ HangupAll()
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if event["UserEvent"] == "CallType" && event["Type"] == "C2C" { //check cab cab priority
|
|
|
|
|
+ if priority.CheckPriority("CabCab") {
|
|
|
|
|
+ HangupAll()
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case "Newchannel":
|
|
case "Newchannel":
|
|
@@ -110,22 +116,11 @@ func HandleAMI(event map[string]string) {
|
|
|
alstatus.OccPad("end")
|
|
alstatus.OccPad("end")
|
|
|
break
|
|
break
|
|
|
} else { //OCC queue is not empty
|
|
} else { //OCC queue is not empty
|
|
|
- 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
|
|
|
|
|
|
|
+ if active.CabNum == "1" && active.Actived && ExtenStatus("1411") == "Idle" { //check active and OCC status
|
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", event["CallerIDNum"], "1") // PACUs dial OCC1
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", event["CallerIDNum"], "1") // PACUs dial OCC1
|
|
|
//goto ConfbridgeJoin, OCC1 answer PAD
|
|
//goto ConfbridgeJoin, OCC1 answer PAD
|
|
|
- } else if active.CabNum == "8" && active.Actived && extOCC8.Status == "Idle" {
|
|
|
|
|
|
|
+ } else if active.CabNum == "8" && active.Actived && ExtenStatus("1481") == "Idle" {
|
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", event["CallerIDNum"], "8") // PACUs dial OCC8
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", event["CallerIDNum"], "8") // PACUs dial OCC8
|
|
|
//goto ConfbridgeJoin, OCC8 answer PAD
|
|
//goto ConfbridgeJoin, OCC8 answer PAD
|
|
|
}
|
|
}
|
|
@@ -165,30 +160,20 @@ func HandleAMI(event map[string]string) {
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //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())
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ //first PAD caller goto OCC
|
|
|
if utils.IsPAIU(event["CallerIDNum"]) && event["Queue"] == "0301" && priority.OCCAnswer == 0 { // The first PAD to OCC ,caller is PAD
|
|
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 && extOCC1.Status == "Idle" { //check active and OCC status
|
|
|
|
|
|
|
+ if active.CabNum == "1" && active.Actived && ExtenStatus("1411") == "Idle" { //check active and OCC status
|
|
|
priority.OCCAnswer = 1
|
|
priority.OCCAnswer = 1
|
|
|
alstatus.OccPad("start")
|
|
alstatus.OccPad("start")
|
|
|
- priority.RunningType, _ = strconv.Atoi(priority.Priority.PADOCC)
|
|
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.PADOCC) //Set running priority
|
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", event["CallerIDNum"], "1") // PACUs dial OCC1
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", event["CallerIDNum"], "1") // PACUs dial OCC1
|
|
|
- } else if active.CabNum == "8" && active.Actived && extOCC8.Status == "Idle" {
|
|
|
|
|
|
|
+ //Goto event=ConfbridgeJoin;OCC answer PAD
|
|
|
|
|
+ } else if active.CabNum == "8" && active.Actived && ExtenStatus("1481") == "Idle" {
|
|
|
priority.OCCAnswer = 1
|
|
priority.OCCAnswer = 1
|
|
|
- priority.RunningType, _ = strconv.Atoi(priority.Priority.PADOCC)
|
|
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.PADOCC) //Set running priority
|
|
|
alstatus.OccPad("start")
|
|
alstatus.OccPad("start")
|
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", event["CallerIDNum"], "8") // PACUs dial OCC8
|
|
Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", event["CallerIDNum"], "8") // PACUs dial OCC8
|
|
|
|
|
+ //Goto event=ConfbridgeJoin;OCC answer PAD
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -209,19 +194,21 @@ func HandleAMI(event map[string]string) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//ICP answer PAD;
|
|
//ICP answer PAD;
|
|
|
- //ICP8->whisper->ICP1; PAD->whisper->ICP8
|
|
|
|
|
if event["ConnectedLineNum"] == "ani1" && event["Exten"] == "0511" { //PAD answered by ICP; PACUs connected ICP1
|
|
if event["ConnectedLineNum"] == "ani1" && event["Exten"] == "0511" { //PAD answered by ICP; PACUs connected ICP1
|
|
|
lfshook.NewLogger().Infof("====PAD answered by ICP1:%s=====", event["ConnectedLineName"])
|
|
lfshook.NewLogger().Infof("====PAD answered by ICP1:%s=====", event["ConnectedLineName"])
|
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
|
- go Dial("0402", "2311", "chanspy-rule-whisper", "ani1", event["ConnectedLineName"], "8") //trigger ChanSpyStart ,ICP8 whisper ICP1
|
|
|
|
|
|
|
+
|
|
|
|
|
+ go RedirectInQueue(event["ConnectedLineName"], "2311", "chanspy-rule-whisper", event["ConnectedLineName"]) //PAD chanspy(EqW) ICP1
|
|
|
|
|
+ go Dial("0402", event["ConnectedLineName"], "chanspy-rule", event["ConnectedLineName"], event["ConnectedLineName"], "8") //ICP8 chanspy PAD
|
|
|
//goto event=ChanSpyStart; PAD whisper ICP8
|
|
//goto event=ChanSpyStart; PAD whisper ICP8
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
- //ICP1->whisper->ICP8; PAD->whisper->ICP1
|
|
|
|
|
if event["ConnectedLineNum"] == "ani8" && event["Exten"] == "0511" { //PAD ansered by ICP8; PACUs connected ICP8
|
|
if event["ConnectedLineNum"] == "ani8" && event["Exten"] == "0511" { //PAD ansered by ICP8; PACUs connected ICP8
|
|
|
lfshook.NewLogger().Infof("====PAD answered by ICP8:%s=====", event["ConnectedLineName"])
|
|
lfshook.NewLogger().Infof("====PAD answered by ICP8:%s=====", event["ConnectedLineName"])
|
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
|
- go Dial("0402", "2381", "chanspy-rule-whisper", "ani8", event["ConnectedLineName"], "1") //trigger ChanSpyStart ,ICP1 whisper ICP8
|
|
|
|
|
|
|
+
|
|
|
|
|
+ go RedirectInQueue(event["ConnectedLineName"], "2381", "chanspy-rule-whisper", event["ConnectedLineName"]) //PAD chanspy(EqW) ICP8
|
|
|
|
|
+ go Dial("0402", event["ConnectedLineName"], "chanspy-rule", event["ConnectedLineName"], event["ConnectedLineName"], "1") //ICP1 chanspy PAD
|
|
|
//goto event=ChanSpyStart; PAD whisper ICP1
|
|
//goto event=ChanSpyStart; PAD whisper ICP1
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
@@ -230,34 +217,22 @@ func HandleAMI(event map[string]string) {
|
|
|
if event["ConnectedLineNum"] == "ano1" && event["Exten"] == "0512" { //PAD answered by OCC; PACUs connected IO1
|
|
if event["ConnectedLineNum"] == "ano1" && event["Exten"] == "0512" { //PAD answered by OCC; PACUs connected IO1
|
|
|
lfshook.NewLogger().Infof("====PAD answered by OCC1:%s=====", event["ConnectedLineName"])
|
|
lfshook.NewLogger().Infof("====PAD answered by OCC1:%s=====", event["ConnectedLineName"])
|
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
|
- go RedirectInQueue(event["ConnectedLineName"], "1411", "chanspy-rule-whisper", "") //PAD whisper IO1
|
|
|
|
|
|
|
+
|
|
|
|
|
+ go RedirectInQueue(event["ConnectedLineName"], "1411", "chanspy-rule-whisper", event["ConnectedLineName"]) //PAD chanspy(EqW) IO1
|
|
|
//goto event=ChanSpyStart; ICPs spy PAD
|
|
//goto event=ChanSpyStart; ICPs spy PAD
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
if event["ConnectedLineNum"] == "ano8" && event["Exten"] == "0512" { //PAD ansered by OCC8; PACUs connected IO8
|
|
if event["ConnectedLineNum"] == "ano8" && event["Exten"] == "0512" { //PAD ansered by OCC8; PACUs connected IO8
|
|
|
lfshook.NewLogger().Infof("====PAD answered by OCC8:%s=====", event["ConnectedLineName"])
|
|
lfshook.NewLogger().Infof("====PAD answered by OCC8:%s=====", event["ConnectedLineName"])
|
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
alstatus.AlarmStatus(event["ConnectedLineName"], "connect")
|
|
|
- go RedirectInQueue(event["ConnectedLineName"], "1481", "chanspy-rule-whisper", "") //PAD whisper IO8
|
|
|
|
|
|
|
+
|
|
|
|
|
+ go RedirectInQueue(event["ConnectedLineName"], "1481", "chanspy-rule-whisper", event["ConnectedLineName"]) //PAD chanspy(EqW) IO8
|
|
|
//goto event=ChanSpyStart; ICPs spy PAD
|
|
//goto event=ChanSpyStart; ICPs spy PAD
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case "ChanSpyStart":
|
|
case "ChanSpyStart":
|
|
|
- lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
|
|
- //PAD answered by ICP ; PAD whisper ICP
|
|
|
|
|
- if event["SpyerConnectedLineName"] == "2381" && event["SpyerCallerIDNum"] == "2311" { //check if it is ICP8 whisper ICP1
|
|
|
|
|
- lfshook.NewLogger().Infof("====PAD answered by ICP===;PAD whisper 2381=====")
|
|
|
|
|
- go RedirectInQueue(event["SpyeeConnectedLineName"], "2381", "chanspy-rule-whisper", "") //PAD whisper ICP8
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if event["SpyerConnectedLineName"] == "2311" && event["SpyerCallerIDNum"] == "2381" { //check if it is ICP1 whisper ICP8
|
|
|
|
|
- lfshook.NewLogger().Infof("====PAD answered by ICP===;PAD whisper 2311=====")
|
|
|
|
|
- go RedirectInQueue(event["SpyeeConnectedLineName"], "2311", "chanspy-rule-whisper", "") //PAD whisper ICP1
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ lfshook.NewLogger().Infof("=========event:%s callerid:%s SpyeeConnectedLineName:%s SpyerExten:%s", event["Event"], event["CallerIDNum"], event["SpyeeConnectedLineName"], event["SpyerExten"])
|
|
|
//PAD answered by OCC; ICPs chanspy PAD
|
|
//PAD answered by OCC; ICPs chanspy PAD
|
|
|
if utils.IsPAIU(event["SpyeeConnectedLineName"]) && utils.IsIO(event["SpyerExten"]) { // check if it is PAD whisper IO
|
|
if utils.IsPAIU(event["SpyeeConnectedLineName"]) && utils.IsIO(event["SpyerExten"]) { // check if it is PAD whisper IO
|
|
|
go Dial("0404", event["SpyeeConnectedLineName"], "chanspy-rule", "ano", "ano", "") //ICPs chanspy PAD
|
|
go Dial("0404", event["SpyeeConnectedLineName"], "chanspy-rule", "ano", "ano", "") //ICPs chanspy PAD
|
|
@@ -293,11 +268,9 @@ func HandleAMI(event map[string]string) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case "ExtensionStatus":
|
|
case "ExtensionStatus":
|
|
|
- lfshook.NewLogger().Infof("=========event:%s status:%s", event["Event"], event["StatusText"])
|
|
|
|
|
|
|
+ lfshook.NewLogger().Infof("=========event:%s Ext:%s status:%s ", event["Event"], event["extension"], event["StatusText"])
|
|
|
|
|
|
|
|
//update extension status
|
|
//update extension status
|
|
|
- alstatus.ExtenStatMap[event["Exten"]] = event["StatusText"]
|
|
|
|
|
-
|
|
|
|
|
if event["StatusText"] == "Idle" || event["StatusText"] == "Unavailable" {
|
|
if event["StatusText"] == "Idle" || event["StatusText"] == "Unavailable" {
|
|
|
if len(event["Exten"]) > 3 && utils.IsPAIU(event["Exten"]) {
|
|
if len(event["Exten"]) > 3 && utils.IsPAIU(event["Exten"]) {
|
|
|
alstatus.AlarmStatus(event["Exten"], event["StatusText"]) // PAD idle + unavailable
|
|
alstatus.AlarmStatus(event["Exten"], event["StatusText"]) // PAD idle + unavailable
|
|
@@ -313,11 +286,12 @@ func HandleAMI(event map[string]string) {
|
|
|
|
|
|
|
|
if active.CabNum == "1" && active.Actived {
|
|
if active.CabNum == "1" && active.Actived {
|
|
|
go RedirectInQueue(event["CallerIDName"], "2311", "chanspy-rule-whisper", "") //PAD chanspy(EqW) ICP1
|
|
go RedirectInQueue(event["CallerIDName"], "2311", "chanspy-rule-whisper", "") //PAD chanspy(EqW) ICP1
|
|
|
|
|
+ go Dial("0403", event["CallerIDName"], "chanspy-rule", "2381", "2381", "8") //ICP8---chanspy----PAD
|
|
|
} else if active.CabNum == "8" && active.Actived {
|
|
} else if active.CabNum == "8" && active.Actived {
|
|
|
go RedirectInQueue(event["CallerIDName"], "2381", "chanspy-rule-whisper", "") //PAD chanspy(EqW) ICP8
|
|
go RedirectInQueue(event["CallerIDName"], "2381", "chanspy-rule-whisper", "") //PAD chanspy(EqW) ICP8
|
|
|
|
|
+ go Dial("0403", event["CallerIDName"], "chanspy-rule", "2311", "2311", "1") //ICP1---chanspy----PAD
|
|
|
}
|
|
}
|
|
|
- //Goto ChanSpyStart; ICP spy PAD
|
|
|
|
|
- } else if utils.IsPAIU(event["CallerIDNum"]) {
|
|
|
|
|
|
|
+ } else if utils.IsPAIU(event["CallerIDNum"]) { // PAD connect ICP-TMS;PACU not available
|
|
|
lfshook.NewLogger().Infof("====send pad status=====")
|
|
lfshook.NewLogger().Infof("====send pad status=====")
|
|
|
alstatus.AlarmStatus(event["CallerIDNum"], "connect") // PAD connect ICP-TMS
|
|
alstatus.AlarmStatus(event["CallerIDNum"], "connect") // PAD connect ICP-TMS
|
|
|
}
|
|
}
|