12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package action
- import (
- "errors"
- "pbx-api-gin/api/model"
- "pbx-api-gin/internal/app/ami"
- "pbx-api-gin/pkg/lfshook"
- "pbx-api-gin/pkg/utils"
- )
- // CoreShowChannels 获取通话通道
- func CoreShowChannels() (result []model.CoreShowChannelResVO, err error) {
- // 通过 src 查询对应通道
- _, events, err := ami.AminInstance.Send(map[string]string{
- "Action": "CoreShowChannels",
- })
- if err != nil {
- lfshook.NewLogger().Errorf("core show channels error %+v", err)
- return nil, err
- }
- lfshook.NewLogger().Tracef("events %+v", events)
- result = make([]model.CoreShowChannelResVO, 0)
- for _, event := range events {
- if event.Data["Event"] == "CoreShowChannel" {
- channel := model.CoreShowChannelResVO{
- CallerIDName: event.Data["CallerIDName"],
- CallerIDNum: event.Data["CallerIDNum"],
- ConnectedLineName: event.Data["ConnectedLineName"],
- ConnectedLineNum: event.Data["ConnectedLineNum"],
- Channel: event.Data["Channel"],
- Duration: event.Data["Duration"],
- DurationSecond: utils.TimeStringToSecond(event.Data["Duration"]),
- }
- result = append(result, channel)
- }
- }
- lfshook.NewLogger().Tracef("channels %+v", result)
- return result, nil
- }
- // GetChannelByExten 通过 exten 查询对应通道
- func GetChannelByExten(exten string) (channel string, err error) {
- lfshook.NewLogger().Infof("GetChannelByExten %s", exten)
- _, events, err := ami.AminInstance.Send(map[string]string{
- "Action": "CoreShowChannels",
- })
- if err != nil {
- lfshook.NewLogger().Errorf("core show channels error %+v", err)
- return "", err
- }
- for _, event := range events {
- lfshook.NewLogger().Infof("CoreShowChannels event Data %+v", event.Data)
- if event.Data["Event"] == "CoreShowChannel" && event.Data["ConnectedLineNum"] == exten && event.Data["CallerIDNum"] != exten {
- channel = event.Data["Channel"]
- lfshook.NewLogger().Infof("GetChannelByExten get channel %s", channel)
- break
- }
- }
- if channel == "" {
- lfshook.NewLogger().Errorf("not found channel %s", exten)
- return "", errors.New("not found channel")
- }
- return channel, nil
- }
- // GetBridgedChan 通过 exten 查询对应通道
- func GetExtenChan(exten string) (channel string, err error) {
- lfshook.NewLogger().Infof("GetExtenChan %s", exten)
- _, events, err := ami.AminInstance.Send(map[string]string{
- "Action": "CoreShowChannels",
- })
- if err != nil {
- lfshook.NewLogger().Errorf("core show channels error %+v", err)
- return "", err
- }
- for _, event := range events {
- lfshook.NewLogger().Infof("CoreShowChannels event Data %+v", event.Data)
- if event.Data["Event"] == "CoreShowChannel" && event.Data["ConnectedLineNum"] != exten && event.Data["CallerIDNum"] == exten {
- channel = event.Data["Channel"]
- lfshook.NewLogger().Infof("GetChannelByExten get channel %s", channel)
- break
- }
- }
- if channel == "" {
- lfshook.NewLogger().Errorf("not found channel %s", exten)
- return "", errors.New("not found channel")
- }
- return channel, nil
- }
|