Beispiel Szenario (Hotel) : Warteschleife mit Anrufweiterleitung

murmellan

Trainee Partner
Intermediate Cert.
Mitglied seit
19. April 2022
Beiträge
3
Schönen guten Tag,

ich habe mehrmals die Anfrage (vor allem in Hotels), dass eine Anrufweiterleitung (wie bei der alten Telefonanlage) funktionieren soll. Die meisten Kundschaften wollen jedoch mit Warteschleifen und nicht mit Signalisierungsgruppen arbeiten, daraus ergeben sich oft komplexere Konfigurationen. Mit dem nachfolgenden Beispiel möchte ich vielleicht einen Ansatz vermitteln, welcher hilfreich ist.

Beispiel Szenario (Hotel):

Der Kunde/die Kundin möchte, dass mehrere Nebenstelle bei einem Anruf läuten. Wenn bspw. die Rezeption den Anruf annimmt, möchte der Kunde/die Kundin nicht, dass der Anruf bei einer anderen Nebenstelle als ein "entgangener Anruf" aufscheint.

Lösung: Eine Warteschleife und keine Signalisierungsgruppe mit den gewünschten Agenten/Nebenstellen erstellen.

Wenn der Kunde/die Kundin nun die Rezeptions verlässt bzw. die Rezeption nicht besetzt ist, soll anstatt der Rezeption eine weitere Nebenstelle (bspw. der Chef/die Chefin mit seiner 3CX-App am Smartphone) signalisiert werden. Der Kunde/die Kundin möchte jedoch auch keinen Aufwand betreiben, alles soll nahtlos funktionieren (wie bei einer Anrufweiterleitung). Wichtig: Der Kunde/die Kundin möchte nicht bei jedem Anruf signalisiert werden, eben nur, wenn die Rezeption gerade nicht besetzt ist.

Hinweis: Hierbei wird es deutlich kniffliger, weil jede Nebenstelle bzw. jedes Telefon keine doppelte Signalisierung durchführen kann. Somit wird jeder Status in der jeweiligen Nebenstelle von der Warteschleife ignoriert. D.h. wenn man nun eine Anrufweiterleitung am Rezeptions-Telefon einstellen würde, würde das Rezeptions-Telefon bei einem Anruf trotzdem läuten und die Anrufweiterleitung würde ignoriert werden (getestet mit Yealink T54W).

Lösung: Eine Warteschleife mit den gewünschten Agenten/Nebenstellen erstellen und bei der "Zuweisungsmethode" "Weiterleitung an drei Agenten - priorisiert" auswählen. Beim "DnD"-Status am Rezeptions-Telefon auch "Aus der Warteschleife abmelden" auswählen und den Kunden/die Kundin als eigene Nebenstelle als Agent hinzufügen.

Bei mehr als drei parallel zu signalisierenden Nebenstellen gilt: Es können nur maximal drei Agenten parallel signalisiert werden (Reihenfolge beachten). Wenn nun bspw. Rezeption, Empfang & Wohnung parallel signalisiert werden würden, würde kein vierter Agent signalisiert werden. Würde man jedoch das Rezeptions-Telefon mit den Einstellungen (siehe oben) auf "DnD" schalten, dann würde der vierte Agent in der Warteschleife zum Zug kommen (der Chef/die Chefin). Würde sich nun der vierte Agent aus der Warteschleife abmelden, würde der fünfte Agent signalisiert werden usw.

Bei weniger als drei parallel zu signalisierenden Nebenstellen gilt: Eventuell "xy" Nebenstellen anlegen die keinem Telefon zugewiesen sind und daher auch nicht in der Warteschleife angemeldet sind (blinde Nebenstellen).

Ich hoffe ich konnte mit diesem Szenario und dem Workaround jemanden helfen. Ich habe diese Anforderung fast in jedem Hotel, da oft mehrere Generationen im Hotel miteinander arbeiten. Viele wollen mit Warteschleifen arbeiten und sind Anrufweiterleitungen gewöhnt, welche nicht so einfach mit Warteschleifen zu realisieren sind.
 
Hallo,

Wenn der Kunde/die Kundin nun die Rezeptions verlässt bzw. die Rezeption nicht besetzt ist, soll anstatt der Rezeption eine weitere Nebenstelle (bspw. der Chef/die Chefin mit seiner 3CX-App am Smartphone) signalisiert werden. Der Kunde/die Kundin möchte jedoch auch keinen Aufwand betreiben, alles soll nahtlos funktionieren (wie bei einer Anrufweiterleitung). Wichtig: Der Kunde/die Kundin möchte nicht bei jedem Anruf signalisiert werden, eben nur, wenn die Rezeption gerade nicht besetzt ist.
Das kann man programmieren: eine CFA schreiben welche bei Anwahl die eigene NSt. aus einer Warteschleifen entfernt, eine gewisse Nebenstelle einer Warteschleife hinzufügt und als opt. Indikator den Namen einer NSt. (den der auf der BLF Taste zum anrufen genutzt wird) ändert (z.B. in 'AKTIVE-VertretungWS') . Das ganze auch wieder rückängig: drücke erneut die BLF Taste am Telefon, die CFA fügt die eigene NSt. der WS hinzu, entfernt die vertretende NSt. aus der WS und ändert den Namen der NSt. zurück (z.B. 'aktiviere-VertretungWS').

Den Rest habe ich noch nicht verstanden, aber denk mal über meinen Ansatz nach.
 
  • Like
Reaktionen: murmellan
Guten Tag,

vielen Dank für das Feedback! Klingt sehr interessant. Wie würde meine eine solche CFA schreiben?
 
Hallo,

hier mal ein Beispiel für die zu NSt. 400 (Rezeption), NSt. 401 (Vertretung der Rezeption), eine Warteschleife mit Nummer 410, einer Dummy NSt. 500 und einer CFA mit Nummer 501.

Vorbereitung:
  1. füge die NSt. 400 und NSt. 401 zur WS 410 hinzu
  2. melde die NSt. 401 global an Warteschleifen ab
  3. erstelle eine Dummy NSt. mit der Nummer 500
  4. setze deren Nachnamen auf 'zz aktiviereVertretungWS' (damit die NSt. in den Apps ganz unten auftaucht)
  5. aktiviere in der NSt. 500 unter Optionen 'Diesen Benutzer aus dem 3CX-Firmentelefonbuch und 3CX Apps ausblenden'
  6. setze in der NSt. 500 unter Weiterleitungsregeln, Status verfügbar, interne Anrufe, 'Falls eigener Anschluss besetzt oder Telefon nicht angemeldet, Anrufe weiterleiten an:' auf 'An Nummer weiterleiten' und trage dort die Nummer 501 ein
  7. ggf.: setze in der NSt. 500 unter Weiterleitungsregeln unter 'Ausnahmen' alle Nummern(blöcke) ein welche diese NSt. nicht anrufen dürfen
  8. setze die NSt. 500 als BLF Taste sichtbar am Telefon der NSt. 400
  9. baue mit dem CFD (Call Flow Designer) die CFA (Call Flow App) mit Nummer 501 und lade die in die 3CX hoch (vorausgesetzt die 3CX wird nicht bei 3CX gehosted)

ein Beispiel für eine CFA mit der Nummer 501:
  1. auf Grund des akt. Namen der Dummy NSt. 500 ('zz aktiviereVertretungWS' oder 'zz VertretungAktiviert') den Namen der Dummy NSt. 500 ändern, die Funktion gibt zurück ob vertreten werden soll oder nicht (CFD Block 'Execute C# Code', ein C# Code Schnipsel, s.u.)
  2. CFD Block 'Create a Condition': erster Strang 'wenn Rückgabewert von Codeblock 1 = True dann
    1. melde die zu vertretende Nst. 400 von der Warteschleife 410 ab (CFD Block 'Set Queue Extension Status')
    2. melde die vertretende NSt. 401 an der Warteschleife 410 an (CFD Block 'Set Queue Extension Status')
  3. CFD Block 'Create a Condition': zweiter Strang (quasi wenn Rückgabewert von Codeblock 1 != True) dann
    1. melde die zu vertretende Nst. 400 an der Warteschleife 410 an (CFD Block 'Set Queue Extension Status')
    2. melde die vertretende NSt. 401 an der Warteschleife 410 ab (CFD Block 'Set Queue Extension Status')
Das sind zwei CFD Codeblöcke wobei der Zweite (ein Block mit Entscheidung) zwei Stränge mit je zwei weiteren CFD enthält.

Thema CFD Codeblöcke 'Set Queue Extension Status' - siehe hier.

CFA C# Codeschnipsel zu 1)
C#:
# Rueckgabewert ist vom Typ String und 'true' wenn die Vertretung eingeschalten und 'false' wenn die wieder ausgeschalten werden soll
var extension = PhoneSystem.Root.GetDNByNumber("500") as Extension;
extension.FirstName = "";
string strReturn = "false";
if( extension.LastName.Equals("zz aktiviereVertretungWS",StringComparison.OrdinalIgnoreCase) ) {
  extension.LastName = "zz VertretungAktiviert";
  strReturn = "true";
} else {
  extension.LastName = "zz aktiviereVertretungWS";
}
extension.Save();
return strReturn;

Rein technisch kann man die gesamte CFA in einem einzigen C# Codeschnipsel schreiben. Man kann der CFA vor Punkt 1 eine Abfrage voranstellen, um zu erkennen welche NSt. anruft, zu prüfen ob diese NSt. berechtigt ist die CFA anzurufen und dann ggf. die Abarbeitung der CFA schon an dieser Stelle abbrechen.

Das ganze ist auch recht statisch gebaut (feste NSt. Nummern, nur eine WS, nur eine Vertretung usw.). Das Beispiel kann man noch weit und dynamisch ausbauen. Es ist eben nur ein Beispiel.
 

Statistik des Forums

Themen
44.414
Beiträge
232.721
Mitglieder
78.331
Neuestes Mitglied
b2daniel