package voicemail import ( "encoding/json" "pms-api-go/pkg/lfshook" "strings" "gopkg.in/ini.v1" ) // {"vmBox": "100", "newMsgs": "9"} type VocieMailNew struct { VMBox string `json:"vmBox"` NewMsgs string `json:"newMsgs"` } func ParseVoiceMailNew(in string) map[string]string { data := strings.Split(in, "\n") result := make(map[string]string) for _, item := range data { member := &VocieMailNew{} json.Unmarshal([]byte(item), member) result[member.VMBox] = member.NewMsgs } return result } type VoiceMail struct { ID string `json:"id"` Extension string `json:"extension"` MsgPath string `json:"msgPath"` MsgID string `json:"msgID"` Date string `json:"date"` Duration string `json:"duration"` CallerID string `json:"callerID"` Type string `json:"type"` Origdate string `json:"origdate"` } func ParseVoiceMail(in string) []*VoiceMail { data := strings.Split(in, "\n") result := make([]*VoiceMail, len(data)) for index, item := range data { vmInfo := strings.Split(item, ",") member := &VoiceMail{ ID: vmInfo[0], Extension: vmInfo[1], MsgPath: vmInfo[5], MsgID: vmInfo[4], Type: vmInfo[3], } iniInfo, err := ini.Load(vmInfo[2]) if err != nil { lfshook.NewLogger().Error(err) } else { member.Duration = iniInfo.Section("message").Key("duration").Value() member.Origdate = iniInfo.Section("message").Key("origdate").Value() member.CallerID = iniInfo.Section("message").Key("callerid").Value() } result[index] = member } return result }