package action import ( "errors" "pbx-api-gin/internal/app/ami" amiModel "pbx-api-gin/internal/app/ami/model" "pbx-api-gin/pkg/lfshook" "github.com/mitchellh/mapstructure" ) func Park(extension, lot string) (err error) { channel, err := GetChannelByExten(extension) if err != nil { return err } action := map[string]string{ "Action": "Park", "Channel": channel, } if lot != "" { action["Parkinglot"] = lot } res, events, err := ami.AminInstance.Send(action) if err != nil { return err } lfshook.NewLogger().Infof("Park %+v %+v", res, events) if res["Response"] != "Success" { return errors.New(res["Message"]) } return nil } func ParkedCalls(lot string) (result []*amiModel.ParkedCall, err error) { action := map[string]string{ "Action": "ParkedCalls", "Parkinglot": lot, } res, events, err := ami.AminInstance.Send(action) if err != nil { return nil, err } if res["Response"] != "Success" { return result, errors.New(res["Message"]) } result = make([]*amiModel.ParkedCall, 0) for _, event := range events { if event.Data["Event"] == "ParkedCall" { call := &amiModel.ParkedCall{} mapstructure.Decode(event.Data, call) result = append(result, call) } } return result, nil } func Parkinglots() (result []*amiModel.Parkinglot, err error) { action := map[string]string{ "Action": "Parkinglots", } res, events, err := ami.AminInstance.Send(action) if err != nil { return nil, err } if res["Response"] != "Success" { return nil, errors.New(res["Message"]) } result = make([]*amiModel.Parkinglot, 0) for _, event := range events { if event.Data["Event"] == "Parkinglot" { lot := &amiModel.Parkinglot{} mapstructure.Decode(event.Data, lot) result = append(result, lot) } } return result, nil }