Added FromNumber and ToNumber
All checks were successful
Branch Build / build-test-deploy (push) Successful in 47s
All checks were successful
Branch Build / build-test-deploy (push) Successful in 47s
This commit is contained in:
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `FromNumber` and `ToNumber` properties to `CallMonitorEventArgs` to use when available
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Removed support for .NET 6.0 (EOL: 2024-11-12)
|
- Removed support for .NET 6.0 (EOL: 2024-11-12)
|
||||||
|
|||||||
@@ -29,15 +29,47 @@ namespace AMWD.Net.Api.Fritz.CallMonitor
|
|||||||
public int? LinePort { get; private set; }
|
public int? LinePort { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the external number displayed in the FRITZ!Box.
|
/// Gets the external phone number displayed in the FRITZ!Box.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? ExternalNumber { get; private set; }
|
public string? ExternalNumber { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the internal number registered in the FRITZ!Box.
|
/// Gets the internal phone number (part) registered in the FRITZ!Box.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? InternalNumber { get; private set; }
|
public string? InternalNumber { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the phone number from which the call was initiated.
|
||||||
|
/// </summary>
|
||||||
|
public string? FromNumber
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Event switch
|
||||||
|
{
|
||||||
|
EventType.Ring => ExternalNumber,
|
||||||
|
EventType.Call => InternalNumber,
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the phone number to which the call was directed.
|
||||||
|
/// </summary>
|
||||||
|
public string? ToNumber
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Event switch
|
||||||
|
{
|
||||||
|
EventType.Ring => InternalNumber,
|
||||||
|
EventType.Call => ExternalNumber,
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the duration of the call (only on <see cref="EventType.Disconnect"/> event).
|
/// Gets the duration of the call (only on <see cref="EventType.Disconnect"/> event).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ namespace AMWD.Net.Api.Fritz.CallMonitor.Utils
|
|||||||
if (delay > 60 * 1000)
|
if (delay > 60 * 1000)
|
||||||
delay = 60 * 1000;
|
delay = 60 * 1000;
|
||||||
|
|
||||||
Logger?.LogWarning(ex, $"Failed to connect to {_host}:{_port}. Retrying in {delay}ms...");
|
Logger?.LogWarning(ex, "Failed to connect to {Hostname}:{RemotePort}. Retrying in {DelayMS}ms...", _host, _port, delay);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await Task.Delay(delay, cancellationToken).ConfigureAwait(false);
|
await Task.Delay(delay, cancellationToken).ConfigureAwait(false);
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ namespace FritzCallMonitor.Tests
|
|||||||
Assert.IsNull(result.LinePort);
|
Assert.IsNull(result.LinePort);
|
||||||
Assert.AreEqual("012345678901", result.ExternalNumber);
|
Assert.AreEqual("012345678901", result.ExternalNumber);
|
||||||
Assert.AreEqual("9876543", result.InternalNumber);
|
Assert.AreEqual("9876543", result.InternalNumber);
|
||||||
|
Assert.AreEqual(result.ExternalNumber, result.FromNumber);
|
||||||
|
Assert.AreEqual(result.InternalNumber, result.ToNumber);
|
||||||
Assert.IsNull(result.Duration);
|
Assert.IsNull(result.Duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,6 +50,8 @@ namespace FritzCallMonitor.Tests
|
|||||||
Assert.AreEqual(3, result.LinePort);
|
Assert.AreEqual(3, result.LinePort);
|
||||||
Assert.AreEqual("012345678901", result.ExternalNumber);
|
Assert.AreEqual("012345678901", result.ExternalNumber);
|
||||||
Assert.IsNull(result.InternalNumber);
|
Assert.IsNull(result.InternalNumber);
|
||||||
|
Assert.IsNull(result.FromNumber);
|
||||||
|
Assert.IsNull(result.ToNumber);
|
||||||
Assert.IsNull(result.Duration);
|
Assert.IsNull(result.Duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,6 +68,8 @@ namespace FritzCallMonitor.Tests
|
|||||||
Assert.IsNull(result.LinePort);
|
Assert.IsNull(result.LinePort);
|
||||||
Assert.IsNull(result.ExternalNumber);
|
Assert.IsNull(result.ExternalNumber);
|
||||||
Assert.IsNull(result.InternalNumber);
|
Assert.IsNull(result.InternalNumber);
|
||||||
|
Assert.IsNull(result.FromNumber);
|
||||||
|
Assert.IsNull(result.ToNumber);
|
||||||
Assert.AreEqual(TimeSpan.FromSeconds(42), result.Duration);
|
Assert.AreEqual(TimeSpan.FromSeconds(42), result.Duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,6 +86,8 @@ namespace FritzCallMonitor.Tests
|
|||||||
Assert.AreEqual(7, result.LinePort);
|
Assert.AreEqual(7, result.LinePort);
|
||||||
Assert.AreEqual("012345678901", result.ExternalNumber);
|
Assert.AreEqual("012345678901", result.ExternalNumber);
|
||||||
Assert.AreEqual("9876543", result.InternalNumber);
|
Assert.AreEqual("9876543", result.InternalNumber);
|
||||||
|
Assert.AreEqual(result.InternalNumber, result.FromNumber);
|
||||||
|
Assert.AreEqual(result.ExternalNumber, result.ToNumber);
|
||||||
Assert.IsNull(result.Duration);
|
Assert.IsNull(result.Duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,6 +122,9 @@ namespace FritzCallMonitor.Tests
|
|||||||
var result = CallMonitorEventArgs.Parse(line);
|
var result = CallMonitorEventArgs.Parse(line);
|
||||||
Assert.IsNotNull(result);
|
Assert.IsNotNull(result);
|
||||||
Assert.IsNull(result.LinePort);
|
Assert.IsNull(result.LinePort);
|
||||||
|
Assert.AreEqual("012345678901", result.ExternalNumber);
|
||||||
|
Assert.IsNull(result.FromNumber);
|
||||||
|
Assert.IsNull(result.ToNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@@ -123,6 +134,10 @@ namespace FritzCallMonitor.Tests
|
|||||||
var result = CallMonitorEventArgs.Parse(line);
|
var result = CallMonitorEventArgs.Parse(line);
|
||||||
Assert.IsNotNull(result);
|
Assert.IsNotNull(result);
|
||||||
Assert.IsNull(result.LinePort);
|
Assert.IsNull(result.LinePort);
|
||||||
|
Assert.AreEqual("012345678901", result.ExternalNumber);
|
||||||
|
Assert.AreEqual("9876543", result.InternalNumber);
|
||||||
|
Assert.AreEqual(result.InternalNumber, result.FromNumber);
|
||||||
|
Assert.AreEqual(result.ExternalNumber, result.ToNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@@ -150,6 +165,8 @@ namespace FritzCallMonitor.Tests
|
|||||||
Assert.IsNotNull(result);
|
Assert.IsNotNull(result);
|
||||||
Assert.AreEqual("012345678901", result.ExternalNumber);
|
Assert.AreEqual("012345678901", result.ExternalNumber);
|
||||||
Assert.AreEqual("9876543", result.InternalNumber);
|
Assert.AreEqual("9876543", result.InternalNumber);
|
||||||
|
Assert.AreEqual(result.ExternalNumber, result.FromNumber);
|
||||||
|
Assert.AreEqual(result.InternalNumber, result.ToNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user