package asterisk import ( "net/http" "pbx-api-gin/api/model" "pbx-api-gin/internal/app/ami/action" "pbx-api-gin/pkg/lfshook" "github.com/gin-gonic/gin" ) // @tags Asterisk-Park // @Summary 停泊分机 // @Description 停泊分机 // @Security ApiKeyAuth // @Accept json // @Produce json // @Param data body model.ParkInfoVO true "更新信息" // @Success 200 {object} model.APIOK "请求成功" // @Router /ginapi/plugin-asterisk/park/park [post] func park(ctx *gin.Context) { var data model.ParkInfoVO if err := ctx.ShouldBindJSON(&data); err != nil { ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: err.Error()}) return } lfshook.NewLogger().Infof("park %+v", data) if err := action.Park(data.Extension, data.Parkinglot); err != nil { ctx.JSON(http.StatusInternalServerError, model.APIError{ErrorMessage: err.Error()}) return } ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: data}) } // @tags Asterisk-Park // @Summary 停泊接回 // @Description 停泊接回 // @Security ApiKeyAuth // @Accept json // @Produce json // @Param data body model.ParkBackVO true "更新信息" // @Success 200 {object} model.APIOK "请求成功" // @Router /ginapi/plugin-asterisk/park/back [post] func parkBack(ctx *gin.Context) { var info model.ParkBackVO if err := ctx.ShouldBindJSON(&info); err != nil { ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: err.Error()}) return } lfshook.NewLogger().Infof("park back %+v", info) // 根据参数确定主叫, 再考虑用户登录的分机信息 myExtension := info.CallerNumber if myExtension == "" { //ID, _ := ctx.Get("ID") myExtension = "==============" if myExtension == "" { ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: "not found extension"}) return } } dialplan := "default" if info.CallerID == "" { info.CallerID = info.Extension } action.Dial(myExtension, info.Extension, dialplan, info.CallerID, "=================", "Local") ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: info}) } // @tags Asterisk-Park // @Summary 获取停泊信息 // @Description 获取停泊信息 // @Security ApiKeyAuth // @Accept json // @Produce json // @Param data body model.ParkCommonVO true "更新信息" // @Success 200 {object} model.APIOK "请求成功" // @Router /ginapi/plugin-asterisk/park/calls [post] func parkedCalls(ctx *gin.Context) { var data model.ParkCommonVO if err := ctx.ShouldBindJSON(&data); err != nil { ctx.JSON(http.StatusBadRequest, model.APIError{ErrorMessage: err.Error()}) return } res, err := action.ParkedCalls(data.Parkinglot) if err != nil { ctx.JSON(http.StatusInternalServerError, model.APIError{ErrorMessage: err.Error()}) return } ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: res}) } // @tags Asterisk-Park // @Summary 获取停泊池信息 // @Description 获取停泊池信息 // @Security ApiKeyAuth // @Accept json // @Produce json // @Success 200 {object} model.APIOK "请求成功" // @Router /ginapi/plugin-asterisk/park/lots [get] func parkinglots(ctx *gin.Context) { data, err := action.Parkinglots() if err != nil { ctx.JSON(http.StatusInternalServerError, model.APIError{ErrorMessage: err.Error()}) return } ctx.JSON(http.StatusOK, model.APIOK{Message: "ok", Data: data}) }