12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package status
- import (
- "pms-api-go/api/admin/adminModel"
- "pms-api-go/internal/app/ami/action"
- "pms-api-go/internal/app/mysql"
- "pms-api-go/internal/app/redis"
- socketio "pms-api-go/internal/app/socket_io"
- "pms-api-go/pkg/lfshook"
- "strings"
- "time"
- )
- // InitAsterisk 初始化状态
- func InitAsterisk() {
- var extensions []adminModel.GeoipRule
- if err := mysql.DBOrmInstance.Find(&extensions); err != nil {
- lfshook.NewLogger().Errorf("db find failure %+v", err)
- return
- }
- // 清空存在的状态
- redis.ExtensionClean()
- // PJSIPShowContacts 查询注册状态
- data, err := action.PJSIPShowContacts()
- if err != nil {
- lfshook.NewLogger().Errorf("PJSIPShowContacts error %+v", err)
- return
- }
- extens := make([]string, 0)
- // core show contacts
- for _, point := range data {
- exten := strings.Split(point.ObjectName, ";")[0]
- exten = strings.TrimSpace(exten)
- addr := point.ViaAddr
- // 远程注册 addr 不能取 ViaAddr, 通过 uri 获取
- info := strings.Split(point.Uri, "@")
- if len(info) == 2 {
- addr = strings.Split(info[1], ":")[0]
- }
- redis.ExtensionSet(exten, point.Uri, addr, point.RoundtripUsec)
- extens = append(extens, exten)
- }
- initDNDStatus(&extens)
- initExtensionStatus()
- // 触发任务可能修改了文件
- // go action.Command("dialplan reload")
- }
- func initDNDStatus(extensions *[]string) {
- for _, extension := range *extensions {
- value, _ := action.DBGet("DND", extension)
- if value != "" {
- redis.ExtensionDNDSet(extension, value)
- }
- }
- }
- func initExtensionStatus() {
- events, err := action.ExtensionStateList()
- if err != nil {
- lfshook.NewLogger().Error(err)
- return
- }
- for _, event := range events {
- //lfshook.NewLogger().Infof("init event %+v", event)
- redis.ExtensionSetStatus(event)
- }
- }
- func initScheduleChannel() {
- ticker := time.NewTicker(1500 * time.Millisecond)
- for {
- <-ticker.C
- data, err := action.CoreShowChannels()
- if err != nil {
- lfshook.NewLogger().Errorf("initScheduleChannel %+v", err)
- continue
- }
- socketio.SocketIOServer.BroadcastToNamespace("", "CustomCoreShowChannel", data)
- }
- }
|