index.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package app
  2. import (
  3. "os/exec"
  4. "pbx-api-gin/internal/app/ami/action"
  5. "pbx-api-gin/internal/app/stc"
  6. "pbx-api-gin/internal/app/stc/active"
  7. "pbx-api-gin/internal/app/stc/priority"
  8. "pbx-api-gin/internal/app/stc/socket"
  9. "pbx-api-gin/pkg/lfshook"
  10. "pbx-api-gin/pkg/utils"
  11. "syscall"
  12. "time"
  13. )
  14. func StartApp() {
  15. //init asterisk
  16. if !utils.CheckAsterisk() {
  17. lfshook.NewLogger().Infof("Check asterisk , if not running , run cmd service asterisk start !")
  18. cmd := exec.Command("service", "asterisk", "start")
  19. cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
  20. err := cmd.Run()
  21. if err != nil {
  22. lfshook.NewLogger().Infof("Failed to start asterisk: %v", err)
  23. return
  24. }
  25. time.Sleep(3 * time.Second)
  26. }
  27. //Get cab number acording to IP
  28. socket.SetMasterCabNum()
  29. utils.LoggerDebug.Printf("Get CabNumber:%s Master:%+v", active.CabNum, active.Master)
  30. //init the active status
  31. //active.ActivedCab = ""
  32. //get priority
  33. priority.GetPriority()
  34. //初始化列车信息map 列车号+车厢号
  35. active.InitTrainInfoMap()
  36. // 启动带有重连机制的连接管理协程MC1
  37. go stc.StartStcConnection(socket.Conn, "1")
  38. // 启动带有重连机制的连接管理协程MC8
  39. go stc.StartStcConnection(socket.Conn8, "8")
  40. //启动连接到Master服务器,检查Master是否在线
  41. //if active.CabNum == "1" {
  42. // go stc.StartConnectionToSipServer(socket.ConnToSlave)
  43. //} else {
  44. // go stc.RecvFromSipServer()
  45. //}
  46. // 启动其他服务...
  47. // 启动 AMI
  48. go func() {
  49. action.StartAMI(func() {
  50. utils.LoggerDebug.Printf("AMI callback Start .")
  51. }, []func(event map[string]string){})
  52. }()
  53. //refresh extension status
  54. time.Sleep(1 * time.Second)
  55. utils.ExecCmdAsync("/usr/sbin/asterisk", "-rx", "reload")
  56. }