Prechádzať zdrojové kódy

新增监听等接口,未完成

Dun.Jason 2 rokov pred
rodič
commit
c308c927a7

+ 63 - 0
src/CallCenter.NewRock/DeviceManager.cs

@@ -851,5 +851,68 @@ namespace CallCenter.NewRock
         }
 
         #endregion
+
+        #region 监听和插播
+
+        /// <summary>
+        /// 监听分机
+        /// </summary>
+        /// <param name="firstTelNo">监听方</param>
+        /// <param name="secondTelNo">被监听方</param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task MonitorExtAsync(string firstTelNo, string secondTelNo, CancellationToken cancellationToken)
+        {
+            await _newRockClient.MonitorExt(new MonitorExtRequest()
+            {
+                Attribute = "Monitor",
+                Exts = new List<Ext>() { new Ext() { Id=firstTelNo },new Ext() { Id=secondTelNo } }
+            }, _options.Value.ReceiveKey,
+             _options.Value.Expired,
+             cancellationToken) ;
+        }
+
+        /// <summary>
+        /// 从监听到插播状态变换
+        /// 1. 已知:分机 A 在监听分机 B 与其通话方的通话;
+        /// 2. 执行分机 A 的从监听到插播状态变换的 API;
+        /// 3. 执行成功时,分机 A 与分机 B 建立通话,分机 B 的原通话方听保持音。
+        /// </summary>
+        /// <param name="telNo"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task MonitorExtToTalk(string telNo, CancellationToken cancellationToken)
+        {
+            await _newRockClient.MonitorExtToTalk(new MonitorExtToTalkRequest()
+            {
+                Attribute = "Talk",
+                Ext = new Ext() { Id = telNo }
+            }, _options.Value.ReceiveKey,
+              _options.Value.Expired,
+              cancellationToken) ;
+        }
+
+
+        /// <summary>
+        /// 从插播到监听状态变换
+        /// 1. 已知:分机 A 在插播分机 B 的通话;
+        /// 2. 执行分机 A 的从插播到监听状态变换的 API;
+        /// 3. 执行成功时,分机 A 监听分机 B 及其原通话方的通话。
+        /// </summary>
+        /// <param name="telNo"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task MonitorExtToListen(string telNo, CancellationToken cancellationToken)
+        {
+            await _newRockClient.MonitorExtToListen(new MonitorExtToListenRequest
+            {
+                Attribute = "Listen",
+                Ext = new Ext() { Id = telNo }
+            }, _options.Value.ReceiveKey,
+              _options.Value.Expired,
+              cancellationToken);
+        }
+
+        #endregion
     }
 }

+ 7 - 0
src/CallCenter.Share/Requests/TransferToTelRequest.cs

@@ -29,4 +29,11 @@ namespace CallCenter.Share.Requests
     public record GetCallListRequest(string? PhoneNum) : PagedRequest;
 
     public record GetOutCallListRequest(DateTime time);
+
+    public record MonitorExtRequest(string firstTelNo,string secondTelNo);
+
+    public record MonitorExtToTalkRequest(string telNo);
+
+    public record MonitorExtToListenRequest(string telNo);
+
 }

+ 35 - 0
src/CallCenter/Calls/CallDomainService.cs

@@ -184,5 +184,40 @@ namespace CallCenter.Calls
         }
 
         #endregion
+
+
+        #region 监听和插播
+
+        /// <summary>
+        /// 监听分机
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task MonitorExt(MonitorExtRequest request,CancellationToken cancellationToken)
+        {
+            await _deviceManager.MonitorExtAsync(request.firstTelNo, request.secondTelNo, cancellationToken);
+        }
+
+        /// <summary>
+        /// 从监听到插播状态变换
+        /// 1. 已知:分机 A 在监听分机 B 与其通话方的通话;
+        /// 2. 执行分机 A 的从监听到插播状态变换的 API;
+        /// 3. 执行成功时,分机 A 与分机 B 建立通话,分机 B 的原通话方听保持音。
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task MonitorExtToTalk(MonitorExtToTalkRequest request,CancellationToken cancellationToken)
+        {
+            await _deviceManager.MonitorExtToTalk(request.telNo, cancellationToken);
+        }
+
+        
+
+
+        #endregion
+
+
     }
 }

+ 39 - 0
src/CallCenter/Devices/IDeviceManager.cs

@@ -321,6 +321,45 @@ namespace CallCenter.Devices
         /// <returns></returns>
         Task ConferenceMeetingAsync(string telNo, CancellationToken cancellationToken);
 
+        #endregion
+
+
+        #region 监听和插播
+
+        /// <summary>
+        /// 监听分机
+        /// </summary>
+        /// <param name="firstTelNo">监听方</param>
+        /// <param name="secondTelNo">被监听方</param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task MonitorExtAsync(string firstTelNo, string secondTelNo, CancellationToken cancellationToken);
+
+
+        /// <summary>
+        /// 从监听到插播状态变换
+        /// 1. 已知:分机 A 在监听分机 B 与其通话方的通话;
+        /// 2. 执行分机 A 的从监听到插播状态变换的 API;
+        /// 3. 执行成功时,分机 A 与分机 B 建立通话,分机 B 的原通话方听保持音。
+        /// </summary>
+        /// <param name="telNo"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task MonitorExtToTalk(string telNo, CancellationToken cancellationToken);
+
+
+        /// <summary>
+        /// 从插播到监听状态变换
+        /// 1. 已知:分机 A 在插播分机 B 的通话;
+        /// 2. 执行分机 A 的从插播到监听状态变换的 API;
+        /// 3. 执行成功时,分机 A 监听分机 B 及其原通话方的通话。
+        /// </summary>
+        /// <param name="telNo"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task MonitorExtToListen(string telNo, CancellationToken cancellationToken);
+
+        
         #endregion
     }
 }

+ 59 - 0
src/NewRock.Sdk/Control/INewRockClient.Control.cs

@@ -1,6 +1,7 @@
 using NewRock.Sdk.Accept.Request;
 using NewRock.Sdk.Control.Request;
 using NewRock.Sdk.Control.Response;
+using System.Linq.Expressions;
 
 namespace NewRock.Sdk;
 
@@ -174,5 +175,63 @@ public partial interface INewRockClient
         => ExecuteAsync<AssginConfigMenuRequest, AssginConfigMenuResponse>(request, key, expired, cancellationToken);
 
 
+    #endregion
+
+    #region 监听和插播
+
+
+    /// <summary>
+    /// 监听
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="key"></param>
+    /// <param name="expired"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<NewRockResponse?> MonitorExt(MonitorExtRequest request, string key, int expired, CancellationToken cancellationToken)
+        => ExecuteAsync<MonitorExtRequest, NewRockResponse>(request, key, expired, cancellationToken);
+
+
+    /// <summary>
+    /// 从监听到插播状态变换
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="key"></param>
+    /// <param name="expired"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<NewRockResponse?> MonitorExtToTalk(MonitorExtToTalkRequest request, string key, int expired, CancellationToken cancellationToken)
+        => ExecuteAsync<MonitorExtToTalkRequest, NewRockResponse>(request, key, expired, cancellationToken);
+
+
+    /// <summary>
+    /// 从插播到监听状态变换
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="key"></param>
+    /// <param name="expired"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<NewRockResponse?> MonitorExtToListen(MonitorExtToListenRequest request, string key, int expired, CancellationToken cancellationToken)
+        => ExecuteAsync<MonitorExtToListenRequest, NewRockResponse>(request, key, expired, cancellationToken);
+
+
+    #endregion
+
+
+    #region 强插
+
+    /// <summary>
+    /// 强插
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="key"></param>
+    /// <param name="expired"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<NewRockResponse?> BargeinExt(BargeinExtRequest request, string key, int expired, CancellationToken cancellationToken)
+        => ExecuteAsync<BargeinExtRequest, NewRockResponse>(request, key, expired, cancellationToken);
+
+
     #endregion
 }

+ 15 - 0
src/NewRock.Sdk/Control/Request/BargeinExtRequest.cs

@@ -0,0 +1,15 @@
+using NewRock.Sdk.Control.Request.Base;
+using System.Xml.Serialization;
+
+namespace NewRock.Sdk.Control.Request
+{
+    [XmlRoot("Control")]
+    public class BargeinExtRequest:INewRockRequest
+    {
+        [XmlAttribute("attribute")]
+        public string Attribute { get; set; }
+
+        [XmlElement("ext")]
+        public List<Ext> Exts { get; set; }
+    }
+}

+ 1 - 1
src/NewRock.Sdk/Control/Request/HoldSetRequest.cs

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
 namespace NewRock.Sdk.Control.Request
 {
 
-    /* TODO 测试通过(HTTP请求有异常)
+    /* 
      * <?xml version="1.0" encoding="utf-8" ?>
      * <Control attribute="Hold">
      * <ext id="200"/>

+ 28 - 0
src/NewRock.Sdk/Control/Request/MonitorExtRequest.cs

@@ -0,0 +1,28 @@
+using NewRock.Sdk.Control.Request.Base;
+using System.Xml.Serialization;
+using static System.Net.Mime.MediaTypeNames;
+
+namespace NewRock.Sdk.Control.Request
+{
+
+    /// <summary>
+    /// <?xml version="1.0" encoding="utf-8" ?>
+    ///<Control attribute = "Talk" >
+    ///<ext id="201"/>
+    ///<ext id="208"/>
+    ///</Control>
+    /// </summary>
+    [XmlRoot(ElementName = "Control")]
+    public class MonitorExtRequest: INewRockRequest
+    {
+        [XmlAttribute("attribute")]
+        public string Attribute { get; set; }
+
+        /// <summary>
+        /// 下标为0 为监听方  下标为1为被监听方
+        /// </summary>
+        [XmlElement("ext")]
+        public List<Ext> Exts { get; set; }
+
+    }
+}

+ 10 - 0
src/NewRock.Sdk/Control/Request/MonitorExtToListenRequest.cs

@@ -0,0 +1,10 @@
+using NewRock.Sdk.Control.Request.Base;
+using System.Xml.Serialization;
+
+namespace NewRock.Sdk.Control.Request
+{
+    [XmlRoot("Control")]
+    public class MonitorExtToListenRequest:BaseRequest,INewRockRequest
+    {
+    }
+}

+ 17 - 0
src/NewRock.Sdk/Control/Request/MonitorExtToTalkRequest.cs

@@ -0,0 +1,17 @@
+using NewRock.Sdk.Control.Request.Base;
+using System.Xml.Serialization;
+
+namespace NewRock.Sdk.Control.Request
+{
+    /// <summary>
+    /// <?xml version="1.0" encoding="utf-8" ?>
+    ///<Control attribute = "Talk" >
+    ///<ext id="201"/>
+    ///</Control>
+    /// </summary>
+    [XmlRoot("Control")]
+    public class MonitorExtToTalkRequest:BaseRequest,INewRockRequest
+    {
+       
+    }
+}