Selaa lähdekoodia

修正cabcab在打断emg和CPA之后再挂断,ICP回到EMG和CPA任务中;增加AGI服务器,在拨号规则中访问AGI服务器实现CPA,CABCAB,PA的任务延时

root 2 viikkoa sitten
vanhempi
commit
b6ab6ef897
2 muutettua tiedostoa jossa 32 lisäystä ja 13 poistoa
  1. 25 6
      api/agi-handler.go
  2. 7 7
      internal/app/ami/action/index.go

+ 25 - 6
api/agi-handler.go

@@ -3,17 +3,19 @@ package agiServer
 import (
 	"fmt"
 	"os"
-	"pbx-api-gin/internal/app/ami/action"
-	"pbx-api-gin/pkg/lfshook"
+	"pbx-api-gin/internal/app/stc/priority"
+	"pbx-api-gin/pkg/utils"
+	"time"
 
 	"github.com/CyCoreSystems/agi"
 )
 
 func StartAGI(serviceAddress, serviceAGIPort string) {
+
 	server := fmt.Sprintf("%s:%s", serviceAddress, serviceAGIPort)
 	err := agi.Listen(server, agiHandler)
 	if err != nil {
-		lfshook.NewLogger().Errorf("agi server listen error %+v", err)
+		utils.LoggerDebug.Printf("AGI: bind addr error !")
 		os.Exit(1)
 	}
 }
@@ -23,11 +25,28 @@ func agiHandler(a *agi.AGI) {
 
 	taskName, ok := a.Variables["agi_arg_1"]
 	if !ok {
-		lfshook.NewLogger().Errorln("Not found Action agi_arg_1", taskName)
+		utils.LoggerDebug.Printf("AGI: Get arg1 error !")
 		return
 	}
 
-	//time.Sleep(10 * time.Second)
-	action.WaitTaskCreate(taskName)
+	time.Sleep(100 * time.Millisecond) //等待userEvent中设置priority.TaskCreating
+	//检测当前创建中的任务是否时本任务,如果是则直接退出,如果不是则等待其他任务创建完成
+	utils.LoggerDebug.Printf("AGI: task:%s TaskCreating:%s checking start !", taskName, priority.TaskCreating)
+	if priority.TaskCreating != taskName {
+		utils.LoggerDebug.Printf("AGI: %s check task creating ..... ,TaskCreating = %s", taskName, priority.TaskCreating)
+		//action.WaitTaskCreate(taskName)
+		for i := 0; i < 20; i++ {
+			if priority.TaskCreating == "" || priority.TaskCreating == taskName {
+				utils.LoggerDebug.Printf("AGI: %s check task creating ..... ,TaskCreating = %s  Done !", taskName, priority.TaskCreating)
+				time.Sleep(300 * time.Millisecond) //等待userEvent中的后续操作完成之后再执行dial
+				return
+			} else {
+				utils.LoggerDebug.Printf("AGI: %s check task creating ..... ,TaskCreating = %s  waiting !", taskName, priority.TaskCreating)
+				time.Sleep(time.Millisecond * 100)
+			}
+		}
 
+		utils.LoggerDebug.Printf("AGI: %s check task creating ..... ,TaskCreating = %s  Done !", taskName, priority.TaskCreating)
+	}
+	time.Sleep(300 * time.Millisecond) //等待userEvent中的后续操作完成之后再执行dial
 }

+ 7 - 7
internal/app/ami/action/index.go

@@ -1351,13 +1351,13 @@ func HandleAMI(event map[string]string) {
 			//check resume
 			taskName, task, ok := priority.RegistryTask.HighestPriorityRunningTask1()
 			if ok {
-				if taskName == "EMG" {
-					EMGConfbridgeReinvite(task)
-				} else if taskName == "CPA" {
-					CPAConfbridgeReinvite(task)
-				} else {
-					ICPConfbridgeReinvite(task.ConfbridgeID, taskName)
-				}
+				//if taskName == "EMG" {
+				//	EMGConfbridgeReinvite(task)
+				//} else if taskName == "CPA" {
+				//	CPAConfbridgeReinvite(task)
+				//} else {
+				ICPConfbridgeReinvite(task.ConfbridgeID, taskName)
+				//}
 			}
 		}