#nullable disable
using CallFlow;
using System;
using System.Threading.Tasks;
using TCX.Configuration;
using TCX.PBXAPI;
namespace dummy
{
//this handler plays holiday prompt as specified for destination
public class PlayDestinationHolidayPromptForExt830 : ScriptBase<PlayDestinationHolidayPromptForExt830>
{
public static string ExtensionToBeRoutedNormal = "830";
public static string ExtensionToBeRoutedOnHoliday = "805";
public override async Task<bool> StartAsync()
{
//get the target DN
var defaultDestination = PhoneSystem.Root.GetDNByNumber(ExtensionToBeRoutedNormal);
if (defaultDestination != null)
{
var timeBasedroute = defaultDestination.GetTimeBasedRoutingInfo();
//if destination is currently "on holiday" and holiday prompt is defined, we play it
if (timeBasedroute.reason == CallControlAPI.DivertReason.Holiday && !string.IsNullOrWhiteSpace(timeBasedroute.holiday?.HolidayPrompt))
{
await MyCall.AssureMedia()
.ContinueWith(x => MyCall.PlayPrompt(null, [timeBasedroute.holiday?.HolidayPrompt], PlayPromptOptions.Blocked))
.Unwrap();
// on holiday: route to a new destination
await MyCall.RouteToAsync(new RouteRequest
{
RouteTarget = new DestinationStruct(PhoneSystem.Root.GetDNByNumber(ExtensionToBeRoutedOnHoliday)),
TimeOut = TimeSpan.FromSeconds(60) //will ring until failure
}
);
}
else
{
//route to the default destination
await MyCall.RouteToAsync(new RouteRequest
{
RouteTarget = new DestinationStruct(PhoneSystem.Root.GetDNByNumber(ExtensionToBeRoutedNormal)),
TimeOut = TimeSpan.FromSeconds(60) //will ring until failure
}
);
}
}
return true;
}
}
}