package action import ( "errors" "pbx-api-gin/internal/app/ami" "pbx-api-gin/internal/app/ami/model" "github.com/mitchellh/mapstructure" ) // QueueStatus 队列信息 func QueueStatus(queue, member string) (queueParams *model.QueueParams, err error) { action := map[string]string{ "Action": "QueueStatus", } if queue != "" { action["Queue"] = queue } if member != "" { action["Member"] = member } _, events, _ := ami.AminInstance.Send(action) for _, event := range events { if event.Data["Event"] == "QueueParams" { queueParams = &model.QueueParams{Members: make([]*model.QueueMember, 0), Entrys: make([]*model.QueueEntry, 0)} mapstructure.Decode(event.Data, queueParams) } if event.Data["Event"] == "QueueMember" { member := &model.QueueMember{} mapstructure.Decode(event.Data, member) queueParams.Members = append(queueParams.Members, member) } if event.Data["Event"] == "QueueEntry" { entry := &model.QueueEntry{} mapstructure.Decode(event.Data, entry) queueParams.Entrys = append(queueParams.Entrys, entry) } } return queueParams, nil } // QueueAllStatus 队列信息 func QueueAllStatus(queue, member string) (queuesMap map[string]*model.QueueParams, err error) { queuesMap = make(map[string]*model.QueueParams) action := map[string]string{ "Action": "QueueStatus", } if queue != "" { action["Queue"] = queue } if member != "" { action["Member"] = member } _, events, _ := ami.AminInstance.Send(action) for _, event := range events { if event.Data["Event"] == "QueueParams" { queueParams := &model.QueueParams{Members: make([]*model.QueueMember, 0), Entrys: make([]*model.QueueEntry, 0)} // data, _ := json.Marshal(event.Data) // json.Unmarshal(data, queueParams) mapstructure.Decode(event.Data, queueParams) queuesMap[queueParams.Queue] = queueParams } if event.Data["Event"] == "QueueMember" { member := &model.QueueMember{} mapstructure.Decode(event.Data, member) if queue, ok := queuesMap[member.Queue]; ok { queue.Members = append(queue.Members, member) } } if event.Data["Event"] == "QueueEntry" { entry := &model.QueueEntry{} mapstructure.Decode(event.Data, entry) if queue, ok := queuesMap[entry.Queue]; ok { queue.Entrys = append(queue.Entrys, entry) } } } return queuesMap, nil } // QueueAdd 添加到队列 func QueueAdd(queue, interface_value, pause string) error { action := map[string]string{ "Action": "QueueAdd", "Queue": queue, "Interface": interface_value, "Paused": pause, } res, _, err := ami.AminInstance.Send(action) if err != nil { return err } if res["Response"] != "Success" { return errors.New(res["Message"]) } return nil } // QueueRemove 从队列移除 func QueueRemove(queue, interface_value string) error { action := map[string]string{ "Action": "QueueRemove", "Queue": queue, "Interface": interface_value, } res, _, err := ami.AminInstance.Send(action) if err != nil { return err } if res["Response"] != "Success" { return errors.New(res["Message"]) } return nil } // QueuePasue 暂停控制 func QueuePasue(queue, interface_value, pause string) error { action := map[string]string{ "Action": "QueuePause", "Queue": queue, "Interface": interface_value, "Paused": pause, } res, _, err := ami.AminInstance.Send(action) if err != nil { return err } if res["Response"] != "Success" { return errors.New(res["Message"]) } return nil }