123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- 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
- }
|