mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 21:24:54 +00:00
feat(essentials): Adds hold/resume/duration features to call status
This commit is contained in:
@@ -12,34 +12,40 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
|||||||
{
|
{
|
||||||
public class CodecActiveCallItem
|
public class CodecActiveCallItem
|
||||||
{
|
{
|
||||||
[JsonProperty("name")]
|
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
[JsonProperty("number")]
|
[JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Number { get; set; }
|
public string Number { get; set; }
|
||||||
|
|
||||||
[JsonProperty("type")]
|
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
[JsonConverter(typeof(StringEnumConverter))]
|
[JsonConverter(typeof(StringEnumConverter))]
|
||||||
public eCodecCallType Type { get; set; }
|
public eCodecCallType Type { get; set; }
|
||||||
|
|
||||||
[JsonProperty("status")]
|
[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
[JsonConverter(typeof(StringEnumConverter))]
|
[JsonConverter(typeof(StringEnumConverter))]
|
||||||
public eCodecCallStatus Status { get; set; }
|
public eCodecCallStatus Status { get; set; }
|
||||||
|
|
||||||
[JsonProperty("direction")]
|
[JsonProperty("direction", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
[JsonConverter(typeof(StringEnumConverter))]
|
[JsonConverter(typeof(StringEnumConverter))]
|
||||||
public eCodecCallDirection Direction { get; set; }
|
public eCodecCallDirection Direction { get; set; }
|
||||||
|
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("isOnHold", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public bool IsOnHold { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("duration", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public TimeSpan Duration { get; set; }
|
||||||
|
|
||||||
//public object CallMetaData { get; set; }
|
//public object CallMetaData { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns true when this call is any status other than
|
/// Returns true when this call is any status other than
|
||||||
/// Unknown, Disconnected, Disconnecting
|
/// Unknown, Disconnected, Disconnecting
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonProperty("isActiveCall")]
|
[JsonProperty("isActiveCall", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public bool IsActiveCall
|
public bool IsActiveCall
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.Codec
|
||||||
|
{
|
||||||
|
public interface IHasCallHold
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Put the specified call on hold
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="activeCall"></param>
|
||||||
|
void HoldCall(CodecActiveCallItem activeCall);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Resume the specified call
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="activeCall"></param>
|
||||||
|
void ResumeCall(CodecActiveCallItem activeCall);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,6 +108,7 @@
|
|||||||
<Compile Include="Codec\eCodecCallStatus.cs" />
|
<Compile Include="Codec\eCodecCallStatus.cs" />
|
||||||
<Compile Include="Codec\eMeetingPrivacy.cs" />
|
<Compile Include="Codec\eMeetingPrivacy.cs" />
|
||||||
<Compile Include="Codec\iCodecAudio.cs" />
|
<Compile Include="Codec\iCodecAudio.cs" />
|
||||||
|
<Compile Include="Codec\IHasCallHold.cs" />
|
||||||
<Compile Include="Codec\IHasDoNotDisturb.cs" />
|
<Compile Include="Codec\IHasDoNotDisturb.cs" />
|
||||||
<Compile Include="Codec\IHasExternalSourceSwitching.cs" />
|
<Compile Include="Codec\IHasExternalSourceSwitching.cs" />
|
||||||
<Compile Include="ImageProcessors\TVOneCorio.cs" />
|
<Compile Include="ImageProcessors\TVOneCorio.cs" />
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
IHasScheduleAwareness, IOccupancyStatusProvider, IHasCodecLayouts, IHasCodecSelfView,
|
IHasScheduleAwareness, IOccupancyStatusProvider, IHasCodecLayouts, IHasCodecSelfView,
|
||||||
ICommunicationMonitor, IRouting, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets,
|
ICommunicationMonitor, IRouting, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets,
|
||||||
IHasExternalSourceSwitching, IHasBranding, IHasCameraOff, IHasCameraMute, IHasDoNotDisturbMode,
|
IHasExternalSourceSwitching, IHasBranding, IHasCameraOff, IHasCameraMute, IHasDoNotDisturbMode,
|
||||||
IHasHalfWakeMode
|
IHasHalfWakeMode, IHasCallHold
|
||||||
{
|
{
|
||||||
private bool _externalSourceChangeRequested;
|
private bool _externalSourceChangeRequested;
|
||||||
|
|
||||||
@@ -847,6 +847,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
changeDetected = true;
|
changeDetected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(call.Duration != null)
|
||||||
|
{
|
||||||
|
if(!string.IsNullOrEmpty(call.Duration.Value))
|
||||||
|
{
|
||||||
|
tempActiveCall.Duration = call.Duration.DurationValue;
|
||||||
|
changeDetected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(call.PlacedOnHold != null)
|
||||||
|
{
|
||||||
|
tempActiveCall.IsOnHold = call.PlacedOnHold.BoolValue;
|
||||||
|
changeDetected = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (changeDetected)
|
if (changeDetected)
|
||||||
{
|
{
|
||||||
@@ -865,7 +878,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
Name = call.DisplayName.Value,
|
Name = call.DisplayName.Value,
|
||||||
Number = call.RemoteNumber.Value,
|
Number = call.RemoteNumber.Value,
|
||||||
Type = CodecCallType.ConvertToTypeEnum(call.CallType.Value),
|
Type = CodecCallType.ConvertToTypeEnum(call.CallType.Value),
|
||||||
Direction = CodecCallDirection.ConvertToDirectionEnum(call.Direction.Value)
|
Direction = CodecCallDirection.ConvertToDirectionEnum(call.Direction.Value),
|
||||||
|
Duration = call.Duration.DurationValue,
|
||||||
|
IsOnHold = call.PlacedOnHold.BoolValue,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add it to the ActiveCalls List
|
// Add it to the ActiveCalls List
|
||||||
@@ -1349,6 +1364,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
SendText(string.Format("xCommand Dial Number: \"{0}\" Protocol: {1} CallRate: {2} CallType: {3} BookingId: {4}", number, protocol, callRate, callType, meetingId));
|
SendText(string.Format("xCommand Dial Number: \"{0}\" Protocol: {1} CallRate: {2} CallType: {3} BookingId: {4}", number, protocol, callRate, callType, meetingId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void EndCall(CodecActiveCallItem activeCall)
|
public override void EndCall(CodecActiveCallItem activeCall)
|
||||||
{
|
{
|
||||||
SendText(string.Format("xCommand Call Disconnect CallId: {0}", activeCall.Id));
|
SendText(string.Format("xCommand Call Disconnect CallId: {0}", activeCall.Id));
|
||||||
@@ -1372,6 +1388,20 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
SendText("xCommand Call Reject");
|
SendText("xCommand Call Reject");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region IHasCallHold Members
|
||||||
|
|
||||||
|
public void HoldCall(CodecActiveCallItem activeCall)
|
||||||
|
{
|
||||||
|
SendText(string.Format("xCommand Call Hold CallId: {0}", activeCall.Id));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResumeCall(CodecActiveCallItem activeCall)
|
||||||
|
{
|
||||||
|
SendText(string.Format("xCommand Call Resume CallId: {0}", activeCall.Id));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
public override void SendDtmf(string s)
|
public override void SendDtmf(string s)
|
||||||
{
|
{
|
||||||
SendText(string.Format("xCommand Call DTMFSend CallId: {0} DTMFString: \"{1}\"", GetCallId(), s));
|
SendText(string.Format("xCommand Call DTMFSend CallId: {0} DTMFString: \"{1}\"", GetCallId(), s));
|
||||||
|
|||||||
@@ -1949,9 +1949,30 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
public string Value { get; set; }
|
public string Value { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Duration
|
public class Duration : ValueProperty
|
||||||
{
|
{
|
||||||
public string Value { get; set; }
|
private string _Value;
|
||||||
|
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _Value;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_Value = value;
|
||||||
|
OnValueChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan DurationValue
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return new TimeSpan(0, 0, Int32.Parse(_Value));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FacilityServiceId
|
public class FacilityServiceId
|
||||||
@@ -1964,9 +1985,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
public string Value { get; set; }
|
public string Value { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlacedOnHold
|
public class PlacedOnHold : ValueProperty
|
||||||
{
|
{
|
||||||
public string Value { get; set; }
|
public bool BoolValue { get; private set; }
|
||||||
|
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
// If the incoming value is "True" it sets the BoolValue true, otherwise sets it false
|
||||||
|
BoolValue = value == "True";
|
||||||
|
OnValueChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Protocol
|
public class Protocol
|
||||||
@@ -2014,6 +2045,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
{
|
{
|
||||||
CallType = new CallType();
|
CallType = new CallType();
|
||||||
Status = new Status2();
|
Status = new Status2();
|
||||||
|
Duration = new Duration();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user