123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package app
- import (
- "crm-api/api/admin/zoho"
- "crm-api/internal/app/ami"
- httpServer "crm-api/internal/app/http_server"
- "crm-api/internal/app/mysql"
- "crm-api/internal/app/redis"
- socketio "crm-api/internal/app/socket_io"
- "crm-api/internal/app/status"
- "fmt"
- "sync"
- "crm-api/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 对应 =======================================================================================================
- CrmConfPath := "/etc/asterisk/crm_api.conf"
- crmCfg, crmErr := ini.Load(CrmConfPath)
- if crmErr != nil {
- lfshook.NewLogger().Error(crmErr)
- return
- }
- CrmEnabled := crmCfg.Section("general").Key("enable").String()
- ApiType := crmCfg.Section("general").Key("apiType").String()
- if CrmEnabled == "" || ApiType == "" {
- lfshook.NewLogger().Error("/etc/asterisk/crm_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" { // 把 crm 和 pms 分开了
- if CrmEnabled == "yes" {
- if ApiType == "CRM_zoho" {
- fmt.Println("Ticker ...")
- // 每隔55分钟刷新token
- /* ************************************************************************** 定时器放在这里没有用
- ticker := time.NewTicker(1 * time.Minute)
- defer ticker.Stop()
- done := make(chan bool)
- go func() {
- for {
- select {
- case <-done:
- return
- case t := <-ticker.C:
- fmt.Println("Tick at", t)
- zoho.RefreshToken()
- }
- }
- }()
- // ************************************************************************** */
- go zoho.RefreshTokenTicker()
- }
- fmt.Println("ami.StartAMI ...")
- 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)
- }
- // * ========================================================================================================================= */
- }
|