| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | 
							- package action
 
- import (
 
- 	"errors"
 
- 	"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, _ := 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, _ := 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 := 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 := 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 := AminInstance.Send(action)
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	if res["Response"] != "Success" {
 
- 		return errors.New(res["Message"])
 
- 	}
 
- 	return nil
 
- }
 
 
  |