| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package agiServer
- import (
- "fmt"
- "os"
- "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 {
- utils.LoggerDebug.Printf("AGI: bind addr error !")
- os.Exit(1)
- }
- }
- func agiHandler(a *agi.AGI) {
- defer a.Close()
- taskName, ok := a.Variables["agi_arg_1"]
- if !ok {
- utils.LoggerDebug.Printf("AGI: Get arg1 error !")
- return
- }
- 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
- }
|