meetme.go 3.6 KB

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