Hallo,
ich habe folgendes Thema bei einem Kunden:
Wenn Abteilung B außer Dienst geht wird mit einem Wählcode das untenstehendes Skript aus dem Store mittels Sterncode ausgeführt.
resetdepartmentout.cs Set Departments to force Out of office route
Dieses Skript ausführen:
Wenn ein Nutzer einen Wählcode wählt
Einen neuen Wählcode erstellen:
*961
Abteilung:
B
Im Skript (unten) steht dann allerdings in Zeile 18 folgender Kommentar (unten fett hervorgehoben):
//for all departments
Jetzt ist es so dass das komplette Telefonsystem auf außerhalb der Telefonzeiten geht und nicht nur wie gewüsncht die Abteilung B.
Deren Anrufe sollten, wenn diese außer Dienst ist, an Abteilung A gehen.
Abteilung A geht dann zur definierten Uhrzeit automatisch auf Außerhalb der Geschäftszeiten.
Kann mir bitte jemand beantworten wie ich wirklich nur diese eine Abteilung steuern kann?
Danke vielmals!
Liebe Grüße
#nullable disable
using CallFlow;
using System;
using System.Threading.Tasks;
using TCX.Configuration;
using System.Linq;
using CallFlow.CFD;
using System.Collections.Generic;
namespace dummy
{
public class ForceClosed : ScriptBase<ForceClosed>
{
public override async Task<bool> StartAsync()
{
var ps = MyCall.PS as PhoneSystem;
if(MyCall.Caller.DN is Extension && MyCall.ReferredByDN is null)
{
//for all departments
ps.GetAll<Group>().Extract(x=>x.AllowCallService)
.Select(x=>
{
try
{
//force out of office hours until midnight
var groupCurrentTime = x.Now(out var utc, out var timezone, out var groupmode);
x.OverrideExpiresAt = (groupCurrentTime+TimeSpan.FromDays(1)).Date;
x.CurrentGroupHours = GroupHoursMode.ForceClosed;
MyCall.Info($"{x.Name} set to '{x.CurrentGroupHours}' until {x.OverrideExpiresAt}, timezone={timezone}, groupmode={groupmode}");
return x;
}
catch
{
//just ignore it
return null;
}
}).OfType<Group>().OMSave();
try
{
var result = await MyCall.AssureMedia()
.ContinueWith(_ => MyCall.PlayPrompt(null, [ "OHOVERRIDE_OUT"], PlayPromptOptions.Blocked), TaskContinuationOptions.OnlyOnRanToCompletion)
.Unwrap();
}
catch
{
//nothing to report. changes are applied
}
return true;
}
return false;
}
}
}
ich habe folgendes Thema bei einem Kunden:
Wenn Abteilung B außer Dienst geht wird mit einem Wählcode das untenstehendes Skript aus dem Store mittels Sterncode ausgeführt.
resetdepartmentout.cs Set Departments to force Out of office route
Dieses Skript ausführen:
Wenn ein Nutzer einen Wählcode wählt
Einen neuen Wählcode erstellen:
*961
Abteilung:
B
Im Skript (unten) steht dann allerdings in Zeile 18 folgender Kommentar (unten fett hervorgehoben):
//for all departments
Jetzt ist es so dass das komplette Telefonsystem auf außerhalb der Telefonzeiten geht und nicht nur wie gewüsncht die Abteilung B.
Deren Anrufe sollten, wenn diese außer Dienst ist, an Abteilung A gehen.
Abteilung A geht dann zur definierten Uhrzeit automatisch auf Außerhalb der Geschäftszeiten.
Kann mir bitte jemand beantworten wie ich wirklich nur diese eine Abteilung steuern kann?
Danke vielmals!
Liebe Grüße
#nullable disable
using CallFlow;
using System;
using System.Threading.Tasks;
using TCX.Configuration;
using System.Linq;
using CallFlow.CFD;
using System.Collections.Generic;
namespace dummy
{
public class ForceClosed : ScriptBase<ForceClosed>
{
public override async Task<bool> StartAsync()
{
var ps = MyCall.PS as PhoneSystem;
if(MyCall.Caller.DN is Extension && MyCall.ReferredByDN is null)
{
//for all departments
ps.GetAll<Group>().Extract(x=>x.AllowCallService)
.Select(x=>
{
try
{
//force out of office hours until midnight
var groupCurrentTime = x.Now(out var utc, out var timezone, out var groupmode);
x.OverrideExpiresAt = (groupCurrentTime+TimeSpan.FromDays(1)).Date;
x.CurrentGroupHours = GroupHoursMode.ForceClosed;
MyCall.Info($"{x.Name} set to '{x.CurrentGroupHours}' until {x.OverrideExpiresAt}, timezone={timezone}, groupmode={groupmode}");
return x;
}
catch
{
//just ignore it
return null;
}
}).OfType<Group>().OMSave();
try
{
var result = await MyCall.AssureMedia()
.ContinueWith(_ => MyCall.PlayPrompt(null, [ "OHOVERRIDE_OUT"], PlayPromptOptions.Blocked), TaskContinuationOptions.OnlyOnRanToCompletion)
.Unwrap();
}
catch
{
//nothing to report. changes are applied
}
return true;
}
return false;
}
}
}