|
|
@@ -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
|
|
|
}
|