parse.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package voicemail
  2. import (
  3. "encoding/json"
  4. "pms-api-go/pkg/lfshook"
  5. "strings"
  6. "gopkg.in/ini.v1"
  7. )
  8. // {"vmBox": "100", "newMsgs": "9"}
  9. type VocieMailNew struct {
  10. VMBox string `json:"vmBox"`
  11. NewMsgs string `json:"newMsgs"`
  12. }
  13. func ParseVoiceMailNew(in string) map[string]string {
  14. data := strings.Split(in, "\n")
  15. result := make(map[string]string)
  16. for _, item := range data {
  17. member := &VocieMailNew{}
  18. json.Unmarshal([]byte(item), member)
  19. result[member.VMBox] = member.NewMsgs
  20. }
  21. return result
  22. }
  23. type VoiceMail struct {
  24. ID string `json:"id"`
  25. Extension string `json:"extension"`
  26. MsgPath string `json:"msgPath"`
  27. MsgID string `json:"msgID"`
  28. Date string `json:"date"`
  29. Duration string `json:"duration"`
  30. CallerID string `json:"callerID"`
  31. Type string `json:"type"`
  32. Origdate string `json:"origdate"`
  33. }
  34. func ParseVoiceMail(in string) []*VoiceMail {
  35. data := strings.Split(in, "\n")
  36. result := make([]*VoiceMail, len(data))
  37. for index, item := range data {
  38. vmInfo := strings.Split(item, ",")
  39. member := &VoiceMail{
  40. ID: vmInfo[0],
  41. Extension: vmInfo[1],
  42. MsgPath: vmInfo[5],
  43. MsgID: vmInfo[4],
  44. Type: vmInfo[3],
  45. }
  46. iniInfo, err := ini.Load(vmInfo[2])
  47. if err != nil {
  48. lfshook.NewLogger().Error(err)
  49. } else {
  50. member.Duration = iniInfo.Section("message").Key("duration").Value()
  51. member.Origdate = iniInfo.Section("message").Key("origdate").Value()
  52. member.CallerID = iniInfo.Section("message").Key("callerid").Value()
  53. }
  54. result[index] = member
  55. }
  56. return result
  57. }