package app import ( "fmt" "pms-api-go/internal/app/ami" httpServer "pms-api-go/internal/app/http_server" "pms-api-go/internal/app/mysql" "pms-api-go/internal/app/redis" socketio "pms-api-go/internal/app/socket_io" "pms-api-go/internal/app/status" "sync" "pms-api-go/pkg/i18n" "pms-api-go/pkg/lfshook" "gopkg.in/ini.v1" ) // var once sync.Once var once sync.Once // 20241128 vtiger crm 对应 func StartApp() { mysql.CreateDBInstance() redis.CreateRedisInstance() socketio.StartSocketIO() i18n.InitBundle() // initCronTask() go httpServer.StartRoute() /* 20230411 pms 删除 ======================================================================================================= go ami.StartAMI(func() { lfshook.NewLogger().Info("ami callback function") // 首次连接才进行初始化 once.Do(func() { status.InitAsterisk() // agi.InitPageingPlan(configs.ConfigGlobal.AsteriskPagingPath) }) }, []func(event map[string]string){}) * ========================================================================================================================= */ // go agi.StartAGI() // go systeminfo.SendMessage() // 20230411 pms 删除 // 启动插件程序 // go plugin.StartUP() // 20230411 pms 删除 // /* 20241128 vtiger crm 对应 ======================================================================================================= PmsConfPath := "/etc/asterisk/pms_api.conf" pmsCfg, pmsErr := ini.Load(PmsConfPath) if pmsErr != nil { lfshook.NewLogger().Error(pmsErr) return } PmsEnabled := pmsCfg.Section("general").Key("enable").String() ApiType := pmsCfg.Section("general").Key("apitype").String() if PmsEnabled == "" || ApiType == "" { lfshook.NewLogger().Error("/etc/asterisk/pms_api.conf not set enabled or apitype") return } /* ************************************************************************** // 先暂时都使用一个配置文件 pms_api.conf VtigerConfPath := "/etc/asterisk/vtiger_api.conf" vtigerCfg, vtigerErr := ini.Load(VtigerConfPath) if vtigerErr != nil { lfshook.NewLogger().Error(vtigerErr) return } VtigerEnabled := vtigerCfg.Section("general").Key("enabled").String() if VtigerEnabled == "" { lfshook.NewLogger().Error("/etc/asterisk/vtiger_api.conf not set enabled") return } if VtigerEnabled == "yes" && PmsEnabled == "no" { // pms基本是数据库操作,但是有个叫醒,会产生事件,所以当 pms 开启时,不能开启 vtiger // ************************************************************************** */ fmt.Println("ApiType = ", ApiType) if ApiType == "CRM_vtiger" || ApiType == "CRM_zoho" { go ami.StartAMI(func() { lfshook.NewLogger().Info("ami callback function") // 首次连接才进行初始化 once.Do(func() { status.InitAsterisk() // agi.InitPageingPlan(configs.ConfigGlobal.AsteriskPagingPath) }) }, []func(event map[string]string){}, ApiType) } // * ========================================================================================================================= */ }