|
@@ -9,6 +9,7 @@ import (
|
|
|
"pbx-api-gin/internal/pkg/configs"
|
|
"pbx-api-gin/internal/pkg/configs"
|
|
|
"pbx-api-gin/pkg/lfshook"
|
|
"pbx-api-gin/pkg/lfshook"
|
|
|
"pbx-api-gin/pkg/utils"
|
|
"pbx-api-gin/pkg/utils"
|
|
|
|
|
+ "strconv"
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/sirupsen/logrus"
|
|
@@ -21,7 +22,7 @@ var AminInstance *amigo.Amigo
|
|
|
//type Operation func(src, dst string, whisper, bargein bool)
|
|
//type Operation func(src, dst string, whisper, bargein bool)
|
|
|
|
|
|
|
|
func HandleAMI(event map[string]string) {
|
|
func HandleAMI(event map[string]string) {
|
|
|
- lfshook.NewLogger().Infof("===start======%s", event["Event"])
|
|
|
|
|
|
|
+ //lfshook.NewLogger().Infof("===start======%s", event["Event"])
|
|
|
//return if not actived
|
|
//return if not actived
|
|
|
if !active.Actived {
|
|
if !active.Actived {
|
|
|
return
|
|
return
|
|
@@ -38,6 +39,7 @@ func HandleAMI(event map[string]string) {
|
|
|
case "Newchannel":
|
|
case "Newchannel":
|
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
if utils.IsPAIU(event["CallerIDNum"]) && event["Exten"] == "0300" { // Alarm dial queue start; PAD dialing
|
|
if utils.IsPAIU(event["CallerIDNum"]) && event["Exten"] == "0300" { // Alarm dial queue start; PAD dialing
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.PADICP)
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "start")
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "start")
|
|
|
alstatus.AlarmStatus(event["CallerIDNum"], "dial")
|
|
alstatus.AlarmStatus(event["CallerIDNum"], "dial")
|
|
|
}
|
|
}
|
|
@@ -45,18 +47,24 @@ func HandleAMI(event map[string]string) {
|
|
|
case "SoftHangupRequest": //pre-recored broadcast end
|
|
case "SoftHangupRequest": //pre-recored broadcast end
|
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
if event["CallerIDName"] == "EMG" && event["Exten"] == "0502" { // EMG broadcast hangup
|
|
if event["CallerIDName"] == "EMG" && event["Exten"] == "0502" { // EMG broadcast hangup
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDName"], "EMG", "end")
|
|
alstatus.PaStatus(event["CallerIDName"], "EMG", "end")
|
|
|
|
|
|
|
|
} else if event["CallerIDName"] == "STN" && event["Exten"] == "0503" {
|
|
} else if event["CallerIDName"] == "STN" && event["Exten"] == "0503" {
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
|
|
+ priority.SpecialVoice = 0
|
|
|
alstatus.PaStatus(event["CallerIDName"], "STN", "end")
|
|
alstatus.PaStatus(event["CallerIDName"], "STN", "end")
|
|
|
|
|
|
|
|
} else if event["CallerIDName"] == "DCS" && event["Exten"] == "0504" {
|
|
} else if event["CallerIDName"] == "DCS" && event["Exten"] == "0504" {
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDName"], "DCS", "end")
|
|
alstatus.PaStatus(event["CallerIDName"], "DCS", "end")
|
|
|
|
|
|
|
|
} else if event["CallerIDName"] == "SPC" && event["Exten"] == "0505" {
|
|
} else if event["CallerIDName"] == "SPC" && event["Exten"] == "0505" {
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDName"], "SPC", "end")
|
|
alstatus.PaStatus(event["CallerIDName"], "SPC", "end")
|
|
|
|
|
|
|
|
} else if event["CallerIDName"] == "CHK" && event["Exten"] == "0510" {
|
|
} else if event["CallerIDName"] == "CHK" && event["Exten"] == "0510" {
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDName"], "CHK", "end")
|
|
alstatus.PaStatus(event["CallerIDName"], "CHK", "end")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -67,6 +75,7 @@ func HandleAMI(event map[string]string) {
|
|
|
res, _ := QueueStatus("0300", "") // check ICP queue ,if empty PAD end
|
|
res, _ := QueueStatus("0300", "") // check ICP queue ,if empty PAD end
|
|
|
if res.Calls == "0" {
|
|
if res.Calls == "0" {
|
|
|
priority.ICPAnswer = 0
|
|
priority.ICPAnswer = 0
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
@@ -76,6 +85,7 @@ func HandleAMI(event map[string]string) {
|
|
|
res, _ := QueueStatus("0300", "") // check ICP queue ,if empty PAD end
|
|
res, _ := QueueStatus("0300", "") // check ICP queue ,if empty PAD end
|
|
|
if res.Calls == "0" {
|
|
if res.Calls == "0" {
|
|
|
priority.ICPAnswer = 0
|
|
priority.ICPAnswer = 0
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
@@ -85,6 +95,7 @@ func HandleAMI(event map[string]string) {
|
|
|
res, _ := QueueStatus("0300", "") // check ICP queue ,if empty PAD end
|
|
res, _ := QueueStatus("0300", "") // check ICP queue ,if empty PAD end
|
|
|
if res.Calls == "0" {
|
|
if res.Calls == "0" {
|
|
|
priority.ICPAnswer = 0
|
|
priority.ICPAnswer = 0
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
|
|
alstatus.PaStatus(event["CallerIDNum"], "PAD", "end")
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
@@ -95,6 +106,7 @@ func HandleAMI(event map[string]string) {
|
|
|
res, _ := QueueStatus("0301", "") // check OCC queue ,if empty PAD end
|
|
res, _ := QueueStatus("0301", "") // check OCC queue ,if empty PAD end
|
|
|
if res.Calls == "0" { //OCC queue is empty
|
|
if res.Calls == "0" { //OCC queue is empty
|
|
|
priority.OCCAnswer = 0
|
|
priority.OCCAnswer = 0
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.OccPad("end")
|
|
alstatus.OccPad("end")
|
|
|
break
|
|
break
|
|
|
} else { //OCC queue is not empty
|
|
} else { //OCC queue is not empty
|
|
@@ -170,9 +182,11 @@ func HandleAMI(event map[string]string) {
|
|
|
if active.CabNum == "1" && active.Actived && extOCC1.Status == "Idle" { //check active and OCC status
|
|
if active.CabNum == "1" && active.Actived && extOCC1.Status == "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)
|
|
|
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" {
|
|
} else if active.CabNum == "8" && active.Actived && extOCC8.Status == "Idle" {
|
|
|
priority.OCCAnswer = 1
|
|
priority.OCCAnswer = 1
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.PADOCC)
|
|
|
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
|
|
|
}
|
|
}
|
|
@@ -182,12 +196,14 @@ func HandleAMI(event map[string]string) {
|
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
if utils.IsICP(event["CallerIDNum"]) && event["Exten"] == "0500" { // PA start
|
|
if utils.IsICP(event["CallerIDNum"]) && event["Exten"] == "0500" { // PA start
|
|
|
lfshook.NewLogger().Infof("====PA status:%s=====", "start")
|
|
lfshook.NewLogger().Infof("====PA status:%s=====", "start")
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.ManuPa)
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "PA", "start")
|
|
alstatus.PaStatus(event["CallerIDNum"], "PA", "start")
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if utils.IsIO(event["CallerIDNum"]) && event["Exten"] == "0501" { //CPA start
|
|
if utils.IsIO(event["CallerIDNum"]) && event["Exten"] == "0501" { //CPA start
|
|
|
lfshook.NewLogger().Infof("====CPA status:%s=====", "start")
|
|
lfshook.NewLogger().Infof("====CPA status:%s=====", "start")
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.CPA)
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "CPA", "start")
|
|
alstatus.PaStatus(event["CallerIDNum"], "CPA", "start")
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|
|
@@ -251,10 +267,12 @@ func HandleAMI(event map[string]string) {
|
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
if utils.IsICP(event["CallerIDNum"]) && event["Exten"] == "0500" { // PA end
|
|
if utils.IsICP(event["CallerIDNum"]) && event["Exten"] == "0500" { // PA end
|
|
|
lfshook.NewLogger().Infof("====PA status =====%s", "end")
|
|
lfshook.NewLogger().Infof("====PA status =====%s", "end")
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "PA", "end")
|
|
alstatus.PaStatus(event["CallerIDNum"], "PA", "end")
|
|
|
}
|
|
}
|
|
|
if utils.IsIO(event["CallerIDNum"]) && event["Exten"] == "0501" { //CPA end
|
|
if utils.IsIO(event["CallerIDNum"]) && event["Exten"] == "0501" { //CPA end
|
|
|
lfshook.NewLogger().Infof("====CPA status =====%s", "end")
|
|
lfshook.NewLogger().Infof("====CPA status =====%s", "end")
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "CPA", "end")
|
|
alstatus.PaStatus(event["CallerIDNum"], "CPA", "end")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -262,28 +280,26 @@ func HandleAMI(event map[string]string) {
|
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
//Cab Cab start
|
|
//Cab Cab start
|
|
|
if utils.IsICP(event["CallerIDNum"]) && utils.IsICP(event["ConnectedLineNum"]) && event["DialStatus"] == "ANSWER" {
|
|
if utils.IsICP(event["CallerIDNum"]) && utils.IsICP(event["ConnectedLineNum"]) && event["DialStatus"] == "ANSWER" {
|
|
|
|
|
+ priority.RunningType, _ = strconv.Atoi(priority.Priority.CabCab)
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "C2C", "start")
|
|
alstatus.PaStatus(event["CallerIDNum"], "C2C", "start")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case "BridgeLeave":
|
|
case "BridgeLeave":
|
|
|
|
|
+ lfshook.NewLogger().Infof("=========%s", event["Event"])
|
|
|
//Cab Cab end
|
|
//Cab Cab end
|
|
|
if utils.IsICP(event["CallerIDNum"]) && utils.IsICP(event["ConnectedLineNum"]) && event["Exten"] == "0400" {
|
|
if utils.IsICP(event["CallerIDNum"]) && utils.IsICP(event["ConnectedLineNum"]) && event["Exten"] == "0400" {
|
|
|
|
|
+ priority.RunningType = 0
|
|
|
alstatus.PaStatus(event["CallerIDNum"], "C2C", "end")
|
|
alstatus.PaStatus(event["CallerIDNum"], "C2C", "end")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
case "ExtensionStatus":
|
|
case "ExtensionStatus":
|
|
|
lfshook.NewLogger().Infof("=========event:%s status:%s", event["Event"], event["StatusText"])
|
|
lfshook.NewLogger().Infof("=========event:%s status:%s", event["Event"], event["StatusText"])
|
|
|
|
|
|
|
|
- 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())
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //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 {
|
|
|
|
|
|
|
+ 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
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|