meetme.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package action
  2. import (
  3. "errors"
  4. "pbx-api-gin/internal/app/ami/model"
  5. "pbx-api-gin/pkg/lfshook"
  6. "pbx-api-gin/pkg/utils"
  7. "github.com/mitchellh/mapstructure"
  8. )
  9. func ListRoomMeetMe(options map[string]string) (points []*model.MeetMeListRooms, err error) {
  10. action := map[string]string{
  11. "Action": "MeetmeListRooms",
  12. }
  13. for key, value := range options {
  14. action[key] = value
  15. }
  16. res, events, err := AminInstance.Send(action)
  17. if err != nil {
  18. return nil, err
  19. }
  20. if res["Response"] != "Success" {
  21. return nil, errors.New(res["Message"])
  22. }
  23. for _, event := range events {
  24. if event.Data["Event"] == "MeetmeListRooms" {
  25. point := &model.MeetMeListRooms{}
  26. mapstructure.Decode(event.Data, point)
  27. points = append(points, point)
  28. }
  29. }
  30. return points, nil
  31. }
  32. func ListMeetMe(confnum string) (points []*model.MeetmeList, err error) {
  33. points = make([]*model.MeetmeList, 0)
  34. action := map[string]string{
  35. "Action": "MeetmeList",
  36. }
  37. if confnum != "" {
  38. action["Conference"] = confnum
  39. }
  40. res, events, err := AminInstance.Send(action)
  41. if err != nil {
  42. return points, err
  43. }
  44. if res["Response"] != "Success" {
  45. return points, errors.New(res["Message"])
  46. }
  47. lfshook.NewLogger().Tracef("ListMeetMe %+v", events)
  48. for _, event := range events {
  49. if event.Data["Event"] == "MeetmeList" {
  50. point := &model.MeetmeList{}
  51. mapstructure.Decode(event.Data, point)
  52. points = append(points, point)
  53. }
  54. }
  55. return points, nil
  56. }
  57. // 踢出成员:/etc/scripts/conference.sh kick 会议室号码 numbers
  58. func KickMeetMe(confnum, numbers string) (err error) {
  59. lfshook.NewLogger().Infof("kick %s %s", confnum, numbers)
  60. _, _, err = utils.ExecCmd("/etc/scripts/conference.sh", "kick", confnum, numbers)
  61. if err != nil {
  62. return err
  63. }
  64. return nil
  65. }
  66. func MuteMeetMe(meetme, usernum string) (res map[string]string, err error) {
  67. lfshook.NewLogger().Infof("mute %s %s", meetme, usernum)
  68. action := map[string]string{
  69. "Action": "MeetmeMute",
  70. "Meetme": meetme,
  71. "Usernum": usernum,
  72. }
  73. lfshook.NewLogger().Infof("meetme action %+v", action)
  74. res, _, err = AminInstance.Send(action)
  75. if err != nil {
  76. return nil, err
  77. }
  78. if res["Response"] != "Success" {
  79. return nil, errors.New(res["Message"])
  80. }
  81. return res, nil
  82. }
  83. func UnMuteMeetMe(meetme, usernum string) (res map[string]string, err error) {
  84. action := map[string]string{
  85. "Action": "MeetmeUnmute",
  86. "Meetme": meetme,
  87. "Usernum": usernum,
  88. }
  89. res, _, err = AminInstance.Send(action)
  90. if err != nil {
  91. return nil, err
  92. }
  93. if res["Response"] != "Success" {
  94. return nil, errors.New(res["Message"])
  95. }
  96. return res, nil
  97. }
  98. // 锁定会议室:/etc/scripts/conference.sh lock 会议室号码
  99. func LockMeetMe(confnum string) (err error) {
  100. _, _, err = utils.ExecCmd("/etc/scripts/conference.sh", "lock", confnum)
  101. if err != nil {
  102. return err
  103. }
  104. return nil
  105. }
  106. // 解除锁定会议室:/etc/scripts/conference.sh unlock 会议室号码
  107. func UnLockMeetMe(confnum string) (err error) {
  108. _, _, err = utils.ExecCmd("/etc/scripts/conference.sh", "unlock", confnum)
  109. if err != nil {
  110. return err
  111. }
  112. return nil
  113. }
  114. // 结束会议:/etc/scripts/conference.sh endconf 会议室号码
  115. func EndMeetMe(number string) (err error) {
  116. _, _, err = utils.ExecCmd("/etc/scripts/conference.sh", "endconf", number)
  117. if err != nil {
  118. return err
  119. }
  120. return nil
  121. }
  122. // 邀请会议:/etc/scripts/conference.sh invite 会议室号码
  123. func IviteMeetMe(conference, number string, dialplan string, myExtension string) (err error) {
  124. _, _, err = utils.ExecCmd("/etc/scripts/conference.sh", "invite", conference, number, dialplan, myExtension)
  125. if err != nil {
  126. return err
  127. }
  128. return nil
  129. }