broadcast.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package stc
  2. import (
  3. "bytes"
  4. "pbx-api-gin/api/model"
  5. "pbx-api-gin/api/panel/asterisk"
  6. "pbx-api-gin/internal/app/ami/action"
  7. "pbx-api-gin/internal/app/mysql"
  8. "pbx-api-gin/pkg/lfshook"
  9. )
  10. func StationAnn(data [4]byte) (err error) {
  11. specialVoice := int(data[0])
  12. Exten := "2411"
  13. delay := data[1]
  14. cycleCount := data[2]
  15. timeLen := data[3]
  16. filename := "welcome"
  17. //update special voice
  18. _, er := mysql.DBOrmInstance.Where("exten = ?", Exten).Update(&model.Extension{Special: specialVoice})
  19. if err != nil {
  20. lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
  21. return er
  22. }
  23. action.Playback(filename, int(cycleCount), Exten, int(timeLen), int(delay))
  24. return nil
  25. }
  26. func Active(data [1]byte) {
  27. Num := int(data[0])
  28. switch Num { // 设置全局的激活信号,并通过协议(待定)通知终端注册到对应的激活主机上
  29. case 0:
  30. case 1:
  31. case 8:
  32. case 9:
  33. }
  34. }
  35. func SpecialAnn(data [4]byte) {
  36. //specialVoice := int(data[0])
  37. Exten := "2411"
  38. delay := data[0]
  39. cycleCount := data[1]
  40. timeLen := data[2]
  41. filename := "welcome"
  42. if int(cycleCount) == 255 {
  43. action.Playback(filename, 9999999, Exten, int(timeLen), int(delay))
  44. } else {
  45. action.Playback(filename, int(cycleCount), Exten, int(timeLen), int(delay))
  46. }
  47. }
  48. func EmgMsg(data [4]byte) {
  49. //specialVoice := int(data[0])
  50. Exten := "2411"
  51. delay := data[0]
  52. cycleCount := data[1]
  53. timeLen := data[2]
  54. filename := "welcome"
  55. if int(cycleCount) == 255 {
  56. action.Playback(filename, 9999999, Exten, int(timeLen), int(delay))
  57. } else {
  58. action.Playback(filename, int(cycleCount), Exten, int(timeLen), int(delay))
  59. }
  60. }
  61. func AnnStop(data [4]byte) {
  62. if data[0] == 0x03 {
  63. asterisk.Hangup("2412")
  64. } else if data[0] == 0x04 {
  65. asterisk.Hangup("2412")
  66. } else if data[0] == 0x07 {
  67. asterisk.Hangup("2412")
  68. } else if data[0] == 0x08 {
  69. asterisk.Hangup("2412")
  70. } else if data[0] == 0x09 {
  71. asterisk.Hangup("2412")
  72. }
  73. }
  74. func DcsAnn(data [4]byte) {
  75. Exten := "2411"
  76. delay := data[0]
  77. cycleCount := data[1]
  78. timeLen := data[2]
  79. filename := "welcome"
  80. if cycleCount == 255 {
  81. action.Playback(filename, 9999999, Exten, int(timeLen), int(delay))
  82. } else {
  83. action.Playback(filename, int(cycleCount), Exten, int(timeLen), int(delay))
  84. }
  85. }
  86. func SelfCheck(data [4]byte) {
  87. check := data[0]
  88. delay := data[1]
  89. cycleCount := data[2]
  90. timeLen := data[3]
  91. filename := "welcome"
  92. Exten := ""
  93. if check == 0x01 {
  94. action.Playback(filename, int(cycleCount), Exten, int(timeLen), int(delay))
  95. } else if check == 0x02 {
  96. asterisk.Hangup(Exten)
  97. }
  98. }
  99. func AlarmHandle(data [4]byte) {
  100. handler := data[0]
  101. //len := data[1]
  102. //src := data[2]
  103. if handler == 0x01 { //answer
  104. } else if handler == 0x02 { //hold
  105. } else if handler == 0x03 { //hangup
  106. }
  107. }
  108. func AlarmResetAll(data [4]byte) {
  109. if bytes.Equal(data[:], make([]byte, len(data))) {
  110. //reset all the alarm
  111. }
  112. }
  113. func RecordStorageConf(data [4]byte) {
  114. }