|
@@ -28,12 +28,22 @@ func InActiveHangup() {
|
|
|
HangupTask("CPA")
|
|
HangupTask("CPA")
|
|
|
HangupTask("VOL")
|
|
HangupTask("VOL")
|
|
|
HangupTask("PAD-OCC")
|
|
HangupTask("PAD-OCC")
|
|
|
|
|
+ } else {
|
|
|
|
|
+ HangupTask("PA")
|
|
|
|
|
+ HangupTask("PAD-OCC")
|
|
|
|
|
+ HangupTask("CPA")
|
|
|
|
|
+ HangupTask("EMG")
|
|
|
|
|
+ HangupTask("SPC")
|
|
|
|
|
+ HangupTask("DCS")
|
|
|
|
|
+ HangupTask("STN")
|
|
|
|
|
+ HangupTask("CHK")
|
|
|
|
|
+ HangupTask("VOL")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Hangup 挂断指定分机或通道
|
|
// Hangup 挂断指定分机或通道
|
|
|
func Hangup(channel string) {
|
|
func Hangup(channel string) {
|
|
|
- lfshook.NewLogger().Infof("hangup extensions/channel %s", channel)
|
|
|
|
|
|
|
+ lfshook.NewLogger().Infof("Hangup extensions/channel :%s", channel)
|
|
|
if !utils.IsChannel(channel) {
|
|
if !utils.IsChannel(channel) {
|
|
|
channel = fmt.Sprintf(`/^(PJ)?SIP\/%s-.*$/`, channel)
|
|
channel = fmt.Sprintf(`/^(PJ)?SIP\/%s-.*$/`, channel)
|
|
|
}
|
|
}
|
|
@@ -42,7 +52,7 @@ func Hangup(channel string) {
|
|
|
"Action": "hangup",
|
|
"Action": "hangup",
|
|
|
"Channel": channel,
|
|
"Channel": channel,
|
|
|
}
|
|
}
|
|
|
- lfshook.NewLogger().Infof("hangup action %+v", action)
|
|
|
|
|
|
|
+ //lfshook.NewLogger().Infof("hangup action :%+v", action)
|
|
|
if _, _, err := AminInstance.Send(action); err != nil {
|
|
if _, _, err := AminInstance.Send(action); err != nil {
|
|
|
lfshook.NewLogger().Errorf("Hangup %+v", err)
|
|
lfshook.NewLogger().Errorf("Hangup %+v", err)
|
|
|
}
|
|
}
|
|
@@ -87,7 +97,22 @@ func HangupAllExcept(caller string) {
|
|
|
|
|
|
|
|
// Hangup task
|
|
// Hangup task
|
|
|
func HangupTask(TaskName string) {
|
|
func HangupTask(TaskName string) {
|
|
|
- lfshook.NewLogger().Infof("HangupTask TaskName:%s ", TaskName)
|
|
|
|
|
|
|
+ lfshook.NewLogger().Infof("HangupTask Check TaskName:%s ", TaskName)
|
|
|
|
|
+
|
|
|
|
|
+ if TaskName == "PAD-OCC" {
|
|
|
|
|
+ resCaller, err := QueueStatus("0301", "") // check OCC queue, get entries
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ lfshook.NewLogger().Infof("QueueStatus err:%+v", err)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ for _, caller := range resCaller.Entrys {
|
|
|
|
|
+ //lfshook.NewLogger().Infof("===QueueStatus=entry=%+v", caller)
|
|
|
|
|
+ time.Sleep(time.Millisecond * 50)
|
|
|
|
|
+ RedirectInQueue(caller.CallerIDNum, "0300", "queues-icp-redirect", caller.CallerIDNum) // redirect All PAD redirect to ICP queue
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
taskInfo, ok := priority.RegistryTask.Get(TaskName)
|
|
taskInfo, ok := priority.RegistryTask.Get(TaskName)
|
|
|
if ok {
|
|
if ok {
|
|
|
HangupAllLocalChan()
|
|
HangupAllLocalChan()
|
|
@@ -103,7 +128,7 @@ func InterruptRunningTask(toRunTask string) {
|
|
|
var taskName string
|
|
var taskName string
|
|
|
var ok bool
|
|
var ok bool
|
|
|
|
|
|
|
|
- lfshook.NewLogger().Infof("InterruptRunningTask toRuntask=%s RunningTask:%s ", toRunTask, taskName)
|
|
|
|
|
|
|
+ lfshook.NewLogger().Infof("InterruptRunningTask toRuntask:%s RunningTask:%s ", toRunTask, taskName)
|
|
|
|
|
|
|
|
if toRunTask != "PA" && toRunTask != "PAD-ICP" && toRunTask != "PAD-TMS" { // ignore C2C
|
|
if toRunTask != "PA" && toRunTask != "PAD-ICP" && toRunTask != "PAD-TMS" { // ignore C2C
|
|
|
taskName, task, ok = priority.RegistryTask.HighestPriorityRunningTask1()
|
|
taskName, task, ok = priority.RegistryTask.HighestPriorityRunningTask1()
|
|
@@ -317,7 +342,7 @@ func Dial(src, dst, dialrule, callerID, callerName string, callType string) {
|
|
|
"Variable": fmt.Sprintf("CAB=%s", callType),
|
|
"Variable": fmt.Sprintf("CAB=%s", callType),
|
|
|
"async": "true",
|
|
"async": "true",
|
|
|
}
|
|
}
|
|
|
- lfshook.NewLogger().Infof("dial action %+v", action)
|
|
|
|
|
|
|
+ //lfshook.NewLogger().Infof("dial action %+v", action)
|
|
|
res, _, err := AminInstance.Send(action)
|
|
res, _, err := AminInstance.Send(action)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
lfshook.NewLogger().Errorf("%+v", err)
|
|
lfshook.NewLogger().Errorf("%+v", err)
|
|
@@ -478,6 +503,11 @@ func SetPadTimer() {
|
|
|
active.SetTimer = true
|
|
active.SetTimer = true
|
|
|
active.QueueTimer = time.AfterFunc(30*time.Second, func() { // check the PAD 30s timeout
|
|
active.QueueTimer = time.AfterFunc(30*time.Second, func() { // check the PAD 30s timeout
|
|
|
|
|
|
|
|
|
|
+ //if both not active , return
|
|
|
|
|
+ if active.ActivedCab == "" {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
res, err := QueueStatus("0301", "") // check OCC queue , if empty OCC-PAD start
|
|
res, err := QueueStatus("0301", "") // check OCC queue , if empty OCC-PAD start
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
lfshook.NewLogger().Infof("OCC QueueStatus err:%+v", err)
|
|
lfshook.NewLogger().Infof("OCC QueueStatus err:%+v", err)
|