1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package status
- import (
- "crm-api/internal/app/ami/action"
- "crm-api/internal/app/redis"
- "crm-api/pkg/lfshook"
- "strings"
- )
- // InitAsterisk 初始化状态
- func InitAsterisk() {
- // 清空存在的状态
- 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)
- }
- }
|