index.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package app
  2. import (
  3. "fmt"
  4. "pms-api-go/internal/app/ami"
  5. httpServer "pms-api-go/internal/app/http_server"
  6. "pms-api-go/internal/app/mysql"
  7. "pms-api-go/internal/app/redis"
  8. socketio "pms-api-go/internal/app/socket_io"
  9. "pms-api-go/internal/app/status"
  10. "sync"
  11. "pms-api-go/pkg/i18n"
  12. "pms-api-go/pkg/lfshook"
  13. "gopkg.in/ini.v1"
  14. )
  15. // var once sync.Once
  16. var once sync.Once // 20241128 vtiger crm 对应
  17. func StartApp() {
  18. mysql.CreateDBInstance()
  19. redis.CreateRedisInstance()
  20. socketio.StartSocketIO()
  21. i18n.InitBundle()
  22. // initCronTask()
  23. go httpServer.StartRoute()
  24. /* 20230411 pms 删除 =======================================================================================================
  25. go ami.StartAMI(func() {
  26. lfshook.NewLogger().Info("ami callback function")
  27. // 首次连接才进行初始化
  28. once.Do(func() {
  29. status.InitAsterisk()
  30. // agi.InitPageingPlan(configs.ConfigGlobal.AsteriskPagingPath)
  31. })
  32. }, []func(event map[string]string){})
  33. * ========================================================================================================================= */
  34. // go agi.StartAGI()
  35. // go systeminfo.SendMessage() // 20230411 pms 删除
  36. // 启动插件程序
  37. // go plugin.StartUP() // 20230411 pms 删除
  38. // /* 20241128 vtiger crm 对应 =======================================================================================================
  39. PmsConfPath := "/etc/asterisk/pms_api.conf"
  40. pmsCfg, pmsErr := ini.Load(PmsConfPath)
  41. if pmsErr != nil {
  42. lfshook.NewLogger().Error(pmsErr)
  43. return
  44. }
  45. PmsEnabled := pmsCfg.Section("general").Key("enable").String()
  46. ApiType := pmsCfg.Section("general").Key("apitype").String()
  47. if PmsEnabled == "" || ApiType == "" {
  48. lfshook.NewLogger().Error("/etc/asterisk/pms_api.conf not set enabled or apitype")
  49. return
  50. }
  51. /* **************************************************************************
  52. // 先暂时都使用一个配置文件 pms_api.conf
  53. VtigerConfPath := "/etc/asterisk/vtiger_api.conf"
  54. vtigerCfg, vtigerErr := ini.Load(VtigerConfPath)
  55. if vtigerErr != nil {
  56. lfshook.NewLogger().Error(vtigerErr)
  57. return
  58. }
  59. VtigerEnabled := vtigerCfg.Section("general").Key("enabled").String()
  60. if VtigerEnabled == "" {
  61. lfshook.NewLogger().Error("/etc/asterisk/vtiger_api.conf not set enabled")
  62. return
  63. }
  64. if VtigerEnabled == "yes" && PmsEnabled == "no" { // pms基本是数据库操作,但是有个叫醒,会产生事件,所以当 pms 开启时,不能开启 vtiger
  65. // ************************************************************************** */
  66. fmt.Println("ApiType = ", ApiType)
  67. if ApiType == "CRM_vtiger" || ApiType == "CRM_zoho" {
  68. go ami.StartAMI(func() {
  69. lfshook.NewLogger().Info("ami callback function")
  70. // 首次连接才进行初始化
  71. once.Do(func() {
  72. status.InitAsterisk()
  73. // agi.InitPageingPlan(configs.ConfigGlobal.AsteriskPagingPath)
  74. })
  75. }, []func(event map[string]string){}, ApiType)
  76. }
  77. // * ========================================================================================================================= */
  78. }