park.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package asterisk
  2. import (
  3. "net/http"
  4. "pbx-api-gin/api/model"
  5. "pbx-api-gin/internal/app/ami/action"
  6. "pbx-api-gin/pkg/lfshook"
  7. "github.com/gin-gonic/gin"
  8. )
  9. // @tags Asterisk-Park
  10. // @Summary 停泊分机
  11. // @Description 停泊分机
  12. // @Security ApiKeyAuth
  13. // @Accept json
  14. // @Produce json
  15. // @Param data body model.ParkInfoVO true "更新信息"
  16. // @Success 200 {object} model.APIOK "请求成功"
  17. // @Router /ginapi/plugin-asterisk/park/park [post]
  18. func park(ctx *gin.Context) {
  19. var data model.ParkInfoVO
  20. if err := ctx.ShouldBindJSON(&data); err != nil {
  21. ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: err.Error()})
  22. return
  23. }
  24. lfshook.NewLogger().Infof("park %+v", data)
  25. if err := action.Park(data.Extension, data.Parkinglot); err != nil {
  26. ctx.JSON(http.StatusInternalServerError, model.APIError{ErrorMessage: err.Error()})
  27. return
  28. }
  29. ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: data})
  30. }
  31. // @tags Asterisk-Park
  32. // @Summary 停泊接回
  33. // @Description 停泊接回
  34. // @Security ApiKeyAuth
  35. // @Accept json
  36. // @Produce json
  37. // @Param data body model.ParkBackVO true "更新信息"
  38. // @Success 200 {object} model.APIOK "请求成功"
  39. // @Router /ginapi/plugin-asterisk/park/back [post]
  40. func parkBack(ctx *gin.Context) {
  41. var info model.ParkBackVO
  42. if err := ctx.ShouldBindJSON(&info); err != nil {
  43. ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: err.Error()})
  44. return
  45. }
  46. lfshook.NewLogger().Infof("park back %+v", info)
  47. // 根据参数确定主叫, 再考虑用户登录的分机信息
  48. myExtension := info.CallerNumber
  49. if myExtension == "" {
  50. //ID, _ := ctx.Get("ID")
  51. myExtension = "=============="
  52. if myExtension == "" {
  53. ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: "not found extension"})
  54. return
  55. }
  56. }
  57. dialplan := "default"
  58. if info.CallerID == "" {
  59. info.CallerID = info.Extension
  60. }
  61. action.Dial(myExtension, info.Extension, dialplan, info.CallerID, "=================", "Local")
  62. ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: info})
  63. }
  64. // @tags Asterisk-Park
  65. // @Summary 获取停泊信息
  66. // @Description 获取停泊信息
  67. // @Security ApiKeyAuth
  68. // @Accept json
  69. // @Produce json
  70. // @Param data body model.ParkCommonVO true "更新信息"
  71. // @Success 200 {object} model.APIOK "请求成功"
  72. // @Router /ginapi/plugin-asterisk/park/calls [post]
  73. func parkedCalls(ctx *gin.Context) {
  74. var data model.ParkCommonVO
  75. if err := ctx.ShouldBindJSON(&data); err != nil {
  76. ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: err.Error()})
  77. return
  78. }
  79. res, err := action.ParkedCalls(data.Parkinglot)
  80. if err != nil {
  81. ctx.JSON(http.StatusInternalServerError, model.APIError{ErrorMessage: err.Error()})
  82. return
  83. }
  84. ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: res})
  85. }
  86. // @tags Asterisk-Park
  87. // @Summary 获取停泊池信息
  88. // @Description 获取停泊池信息
  89. // @Security ApiKeyAuth
  90. // @Accept json
  91. // @Produce json
  92. // @Success 200 {object} model.APIOK "请求成功"
  93. // @Router /ginapi/plugin-asterisk/park/lots [get]
  94. func parkinglots(ctx *gin.Context) {
  95. data, err := action.Parkinglots()
  96. if err != nil {
  97. ctx.JSON(http.StatusInternalServerError, model.APIError{ErrorMessage: err.Error()})
  98. return
  99. }
  100. ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: data})
  101. }