• Eigenständig gehostete oder lokal installierte Instanzen sind komplexer in der Einrichtung und Fehlerbehebung und erfordern daher kostenpflichtigen technischen Support. Kostenlosen Support erhalten Sie mit 3CX StartUP oder einer gehosteten 3CX-Installation mit einen unterstützten SIP-Trunk-Anbieter.

V20 - Dial Codes funktionieren nicht

brandl_it

Bronze Partner
Basic Certified
Mitglied seit
6. Februar 2023
Beiträge
11
Hallo zusammen,

ist euch etwas bekannt, das die Dial Codes seit der Version 20 nicht korrekt funktionieren?

Damit meine ich, dass man mit *640, *641 und *642 die Anlage zwischen "Außerhalb" oder "Innerhalb" der Geschäftszeiten hin und her schalten konnte.

Scheinbar scheint dies seit der Version 20 nicht zu funktionieren. Die Anlage verhält sich immer gleich. Es wird zwar angesagt, das die Anlage umgeschaltet wird, sie verhält sich aber immer gleich.

Grüße
Stefan
 
Scheinbar scheint dies seit der Version 20 nicht zu funktionieren.
Ja, das funktioniert nicht mehr. Diese Dial Codes gibt es nicht mehr.

Es gibt aktuell den Parameter DIALCODEOUTOFFICE, aber ob der wirklich noch etwas bewirkt weiß ich nicht.
 
Ok, sehr Schade.
Danke für die schnelle Info!
 
Ja, das funktioniert nicht mehr. Diese Dial Codes gibt es nicht mehr.

Es gibt aktuell den Parameter DIALCODEOUTOFFICE, aber ob der wirklich noch etwas bewirkt weiß ich nicht.
Guden, der Parameter funktioniert. Wir hatten vor der Umstellung in manchen Anlagen über die Dial Codes die Geschäftszeiten gesteuert, entsprechend steht dort der von uns Festgelegte wert.

Bspw. ist dort von uns die 70 Festgelegt, heißt wählt man die 701 oder 702, schaltet man entsprechend die Zeiten.
 
  • Like
Reaktionen: fxbastler
Tach, ich habe die Parameter auch unter Version 18 eingerichtet habt. Ich bekomme unter 20 leider nur eine Ansage. Am Verhalten ändert sich nichts. Mit dem Override über das Webinterface funktioniert alles wie gewollt.
 
Moin,
ich habe den Parameter ebenfalls eingestellt. Allerdings funktioniert dieser nicht. Ich bekomme zwar die Meldung, dass nun außerhalb bzw. innerhalb der Geschäftszeiten ist aber nichts passiert.

Hat jemand eine Idee woran das liegen könnte?
 
Naja laut @s.lindner@franzke-service soll es ja durch Parametercodes gehen. Darüber bekomme ich auch die Ansagen die vorher mit *641 bzw. *640 zu hören waren. Nur das meine Anlage jetzt in außerhalb der Geschäftszeiten feststeckt und nicht mehr heraus kommt (Gott sei Dank nur ein Testsystem haha)
 
Wie gesagt, kann auch leider nur die Info weiter geben, die ich auch habe....
 
Naja laut @s.lindner@franzke-service soll es ja durch Parametercodes gehen. Darüber bekomme ich auch die Ansagen die vorher mit *641 bzw. *640 zu hören waren. Nur das meine Anlage jetzt in außerhalb der Geschäftszeiten feststeckt und nicht mehr heraus kommt (Gott sei Dank nur ein Testsystem haha)
Das die dann festhängt ist ja auch ein Super Phänomen.. wie gesagt zum Glück ein Testsystem.
Die Parametercodes wurden bei Anlagen von uns vor V20 auf etwas anderes abgeändert und Funktionieren scheinbar noch.

Wenn Offiziell gesagt wird das der Dial Code nicht mehr verfügbar ist, ist es mir umso fraglicher wieso dies bei uns noch funktioniert. Hoffentlich kommt da noch was vernünftiges von 3CX.
 
Hallo zusammen, habe die gleiche Situation. Bin nicht sehr begeistert darüber das aufeinmal alles unübersichtlich ist. Der Support hat mir folgenden Link mit auf den Weg gegeben:
 
Hallo zusammen,

was ganz schnell vergessen wird, ist mit "Abteilugnen" es keine Globalengeschäftszeiten gibt; Auf Abteilung ebene ja, aber nicht Abteilungsübergreifend - somit gibt es keinen Dialcode für "Außerhalb" oder "Innerhalb" der Geschäftszeiten.

Und ja, was Support weitergeleitet hat ist richtig → Um genauer zu sein, siehe hier.



Viele Grüße,

Marcos
 
Hilft mir leider nicht weiter da die Anlage hosted by 3cx ist.
 
  • Like
Reaktionen: krieg-it
Haben das selbe Problem... Gibt es schon Aussicht auf einen Fix bzw. eine Wieder-Einführung dieser Funktion? Wenn auch nur auf Abteilungsebene? Hauptsache es lässt sich wieder per Wählcode steuern.
 
Haben das selbe Problem... Gibt es schon Aussicht auf einen Fix bzw. eine Wieder-Einführung dieser Funktion? Wenn auch nur auf Abteilungsebene? Hauptsache es lässt sich wieder per Wählcode steuern.
Für eine 3CX v20 ab u1 nicht hosted by 3CX: s.o.. Das ist offiziell und macht u.a. das, was ihr mit den Dial Codes bisher gemacht habt.
 
Sind aber leider hosted by 3CX. Daher ärgerlich, klar wäre eine Umstellung auf self-host möglich, aber einen Wählcode pro Abteilung wäre ja auch eine Idee?
 
Also ich habe mich gestern mal damit beschäftigt und eine Testanlage aufgebaut. Ich kriege dennoch immer den Fehler, dass die Kompilierung fehlschlägt.
Die 3CX steht physisch bei mir im Büro (v20 Update 1 (Build 731 Release)). Die Codes für das ändern der Status funktioniert aber die für die Office Hours nicht.

Was mache ich falsch?
 

Anhänge

  • skriptfehler.PNG
    skriptfehler.PNG
    55,4 KB · Aufrufe: 2
Also ich habe mich gestern mal damit beschäftigt und eine Testanlage aufgebaut. Ich kriege dennoch immer den Fehler, dass die Kompilierung fehlschlägt.
Die 3CX steht physisch bei mir im Büro (v20 Update 1 (Build 731 Release)). Die Codes für das ändern der Status funktioniert aber die für die Office Hours nicht.
Richtig, das ist auch mit der aktuellen 3CX v20 u1 noch der Fall, der 'Fehler' besteht wirklich noch. Es wird eine Funktion genutzt, die in der aktuell für uns verfügbaren 3CX Version nicht vorhanden ist.

Teste folgendes (entweder den Quellcode entspr. anpassen oder in der 3CX auf die Anrufverarbeitungsskripte gehen und alles dort live wie folgt ändern):
C#:
// immer alles zwischen dem  'try' und dem folgenden '{' (so in etwa ab Zeile 22) und dem abschließenden '}' mit felgendem Inhalt ersetzen


// #60 reset all departments to default hours operation
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_AWAY_SET" }, PlayPromptOptions.Blocked), TaskContinuationOptions.OnlyOnRanToCompletion).Unwrap();
MyCall.Return(true);


// #61 force all departments to In-office hours.
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+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
    // var 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.ForceOpened;
    // 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);

                       
// #62 force all departments to Out-of office hours.
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+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);


// #63 force all departments to Break- time.
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+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
    // var 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.ForceBreak;
    // 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);


// #64 force all departments to Holiday-time.
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+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
    //var 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.ForceHoliday;
    // 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);

Der Code wurde leicht vereinfacht.
Was passiert ist: es wird nicht die Zeitzone der Gruppe abgefragt und verwendet sondern die Zeitzone der 3CX. Ebenso erfolgt kein Log darüber. Sonst bau dir das selber, so kompliziert ist das nicht.

Was man noch zu dem Beispiel sagen muss: der durchgeführte Statuswechsel gilt immer nur bis 23:59:59 des jeweiligen Tages. Das steht auch so in den Kommentaren im Code drin. Aber auch das kann man anpassen.
 
Holen Sie sich 3CX - völlig kostenlos!

Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX register cta
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.