- Mitglied seit
- 26. Juli 2021
- Beiträge
- 12
Hi, danke für die Codes und Erklärungen. Das hat mir sehr geholfen.
Zu deiner Frage bzgl. des Routingverhaltens, hier wirst du in den Rufgruppen bzw. Warteschleifen die Option "Außerhalb der Geschäftszeiten weiterleiten an" verwenden müssen.

Hier die Codes, die ich jetzt im Einsatz habe:
Innerhalb der Geschäftszeiten:
Die Variable scriptCompleted habe ich nicht verstanden, die kann eigentlich raus oder?
Außerhalb der Geschäftszeiten:
Hier sind die Zeiten angepasst, sodass die Telefonanlage nicht um 0 Uhr zurückspringt.
Zu deiner Frage bzgl. des Routingverhaltens, hier wirst du in den Rufgruppen bzw. Warteschleifen die Option "Außerhalb der Geschäftszeiten weiterleiten an" verwenden müssen.

Hier die Codes, die ich jetzt im Einsatz habe:
Innerhalb der Geschäftszeiten:
Die Variable scriptCompleted habe ich nicht verstanden, die kann eigentlich raus oder?
C#:
#nullable disable
using CallFlow;
using System;
using System.Threading.Tasks;
using TCX.Configuration;
using System.Linq;
using CallFlow.CFD;
namespace dummy
{
public class ForcePBXDefaultHours : ScriptBase<ForcePBXDefaultHours>
{
public override async void Start()
{
var scriptCompleted = false;
try
{
await Task.Run(async () =>
{
try
{
PhoneSystem ps = MyCall.PS as PhoneSystem;
ps.GetAll<Group>().Where(x=>x.AllowCallService).Select(x=>
{
//WARNING: time check will be available in v20 SP1+
//This script will not be compilable in earlier versions
// x.OverrideExpiresAt=x.Now(out var utc, out var timezone, out var groupmode);
//it is not required to update mode, because it is ignored after OverrideExpiresAt time
var timezone=TimeZoneInfo.Local;
x.CurrentGroupHours = x.CurrentGroupHours & ~GroupHoursMode.HasForcedMask;
// MyCall.Info($"{x.Name} reset to '{x.CurrentGroupHours}' until {x.OverrideExpiresAt} @ time:utc={utc}, timezone={timezone}, groupmode={groupmode}");
return x;
}).OMSave();
var result = await MyCall.AssureMedia().ContinueWith(_ => MyCall.PlayPrompt(null, new[] { "Empty.wav", "ST_AVAILABLE_SET" }, PlayPromptOptions.Blocked), TaskContinuationOptions.OnlyOnRanToCompletion).Unwrap();
MyCall.Return(true);
}
catch
{
MyCall.Error("Unexpected failure");
scriptCompleted = false;
}
});
}
finally
{
scriptCompleted = false;
}
}
}
}
Außerhalb der Geschäftszeiten:
Hier sind die Zeiten angepasst, sodass die Telefonanlage nicht um 0 Uhr zurückspringt.
Code:
using CallFlow;
using System;
using System.Threading.Tasks;
using TCX.Configuration;
using System.Linq;
using CallFlow.CFD;
namespace dummy
{
public class ForcePBXDefaultHours : ScriptBase<ForcePBXDefaultHours>
{
public override async void Start()
{
var scriptCompleted = false;
try
{
await Task.Run(async () =>
{
try
{
PhoneSystem ps = MyCall.PS as PhoneSystem;
//in this example, all groups will be overrides to the end of the day in "global" PBX timezone
var PBXLocalTimeEndOfOverride = DateTime.Now.Date.AddYears(10) + new TimeSpan(23, 59,59);
ps.GetAll<Group>().Where(x=>x.AllowCallService).Select(x=>
{
//WARNING: time check will be available in v20 SP1+
//This script will not be compilable in earlier versions
// groupCurrentTime = x.Now(out var utc, out var timezone, out var groupmode);
var timezone=TimeZoneInfo.Local;
x.OverrideExpiresAt = TimeZoneInfo.ConvertTime(PBXLocalTimeEndOfOverride, timezone);
x.CurrentGroupHours = GroupHoursMode.ForceClosed;
// MyCall.Info($"{x.Name} reset to '{x.CurrentGroupHours}' until {x.OverrideExpiresAt} @ time:utc={utc}, timezone={timezone}, groupmode={groupmode}");
return x;
}).OMSave();
var result = await MyCall.AssureMedia().ContinueWith(_ => MyCall.PlayPrompt(null, new[] { "Empty.wav", "ST_AWAY_SET" }, PlayPromptOptions.Blocked), TaskContinuationOptions.OnlyOnRanToCompletion).Unwrap();
MyCall.Return(true);
}
catch
{
MyCall.Error("Unexpected failure");
scriptCompleted = false;
}
});
}
finally
{
scriptCompleted = false;
}
}
}
}