Eigene CallQueue Logik aus DB umsetzen

AisFlo

New User
Mitglied seit
28. April 2021
Beiträge
4
Hallo allerseits,

Daten:
- 3CX OnPremise.
- CallFlowDesigner vorhanden.

wir wollen für unseren Kundensupport eine festgelegte Ruf-Reihenfolge mit festgelgter Klingeldauer einstellen.
Die Reihenfolge ändert sich jeden Wochentag.
Wenn möglich: Die Mitarbeiter, bzw. Nebenstellen-Nummern sollen in einer Datenbank stehen, damit wir diese über eine PHP Anbindung flexibel verschieben können.

Beispiel - Callflow:
1. Anne (30 sek)
2. Bernd (30 sek)
3. Anne (30 sek)
4. Bernd (30 sek)
5. Caro (1 Min)
6. Detlef (1 Min)
7. Voicemail

Eingehender Anruf -> A -> B -> A -> B -> C -> D -> Voicemail
----------------------

Dirty Lösung:
Eine CallQueue für A&B (30 Sek klingeln) und eine CallQueue für C&D (1 Min klingeln).

Dann wäre die Logik: Call -> CallQ-AB -> CallQ-AB -> CallQ-CD -> Voicemail

Da ich aber feste Zeiten haben muss bis C oder D angerufen werden, schalte ich eine CallFlowApp dazwischen, die prüft ob die Q's überhaubt erreichbar sind.
Falls z.B. alle in der Q abgemeldet oder im Gespräch sind, soll der Anrufer trotzdem 2 Min warten, bevor C&D angerufen werden
(in den 2 Min kann geprüft werden ob A&B wieder frei sind).

Soweit so gut, allerdings muss man um die CallQ's zu ändern immer ins 3CX Admin Interface.
Das ist nicht automatisch und kann auch nicht von den Abteilungsleitern durchgeführt werden.

Ich brauche also eine Möglichkeit um die CallQ automatisiert zu ändern, z.B. per API und DB.
Oder aber eine eigene CallQ zu "bauen" z.B. mit dem CallFlowDesigner.

In der 3CX Doku und im Forum habe ich keine Möglichkeit gefunden um die CallQ in 3CX automatisiert zu ändern.
Mit dem CallFlowDesigner kann ich zwar eine DB einbinden, aber ich kann dort keine CallQ Logik nachbauen,
sobald ein Anruf transferiert ist, kann ich den Call nicht an den nächsten weitergeben.


Langer Text, aber kann jmd. helfen?


PS:
Dies ist mein erster Eintrag hier, darum schonmal Sorry, falls ich irgendwas übersehen habe.
 
  • Like
Reaktionen: mr412
Danke für die Antwort Patrick.
Sowas in der Art habe ich bereits im Einsatz als "Dirty" Lösung.
Mein Problem ist, dass ich die Q-Funktion im CFD nicht nachbauen kann.
Ich brauche die Möglichkeit einen Call, nach einer gewissen Zeit, wieder an die CFA zurück zu leiten, falls der Mitarbeiter nicht ans Telefon geht.
Das geht nur mit einer Q oder für jeden User einzeln (was aber dann seine eigenen Einstellungen ändert).

Darum die Logik:
Incoming-Call -> CallQ-AB -> CallQ-AB -> CallQ-CD -> Voicemail

Bzw. eigentlich sogar:
IncomingCall -> CFA -> CallQ-AB -> CFA -> CallQ-AB -> CFA -> CallQ-CD -> CFA -> Voicemail
CFA = CallFlowApp

In den CFA's wird dann immer wieder geprüft, ob die Q besetzt ist und dann eine Wartezeit generiert, falls die Q beschäftigt ist.

Ich wüde aber gerne die Q's dynamisch aus einer Datenbank heraus belegen, per API eben, oder im CFD nachgebaut.
Die Q's kann aber, soweit ich weiß, nur die interne 3CX Logik ändern und die ist nur vom Web-Interface steuerbar.
Das macht eine Automatisierung kompliziert.
 
Zuletzt bearbeitet:
Ich überlege gerade ob man auf Linux-Ebene nicht irgendwie an die DB kommt über die die 3CX läuft. Evtl. Mit dem root User mal auf Suche gehen, dann könnte man an entsprechender Stelle direkt schrauben.

Alternativ bleibt natürlich die Option die CFA Abfragen (Conditions) mit Daten einer DB zu beliefern.

Du setzt quasi am Prüfprozess an und veränderst jeweils die Abfrage innerhalb der CFA.

Kleines Beispiel:
CFA führt Get Extension Status aus (die Ext holst du aus einer Variable die vorher via DB eingelesen wurde) anschliessen lässt du via EQUAL checken ob der StatusName auf Available steht und/oder ob IsInCall true ist. Matcht es wird die Q ausgeführt, sonst nicht und es geht über eine weitere CFA zur nächsten Q.

Da du die abzufragende NS aber ja aus einer DB holst ist diese für dich Variabel. So verschachtelst du dir dann mit "OR" alle Nebenstellen die der Q an dem Tag zugewiesen sein sollen und übergibst den generierten String zur Prüfung an den Condition-Container.

Das baust du dann so oft wie du Warteschleifen hast und erstellst für jede eine eigene CFA da du leider nicht drumherum kommst von CFA-1 auf Q und von dort auf CFA-2 usw. zu leiten.

In der letzten CFA setzt du dann noch einen Trasfer zum AB an oder wieder auf die CFA-1 selbst die sich dann so lange in einen Loop begibt bis irgendwann mal etwas matcht.

Mit einer Date-Time Abfrage vorneweg kannst du die Businesszeiten dann noch steuern. Und sorgst dafür das ausserhalb der Bürozeiten keine Loops entstehen.
 
Danke Patrick.

Nach diesem System habe ich es auch überlegt und die Q's werden auch genau so auf Verfügbarkeit geprüft.

Das Problem dabei ist aber, wenn ich die Nebenstellen aus der DB hole und damit eine Q nachbaue,
Nebenstelle ist Verfügbar, Nebenstelle ist nicht im Call.

Was mache ich, wenn dann keiner ans Telefon geht?
In der 3CX-Q wird dann der nächste in der Q angerufen oder die Regel am Ende der Q ausgeführt.
Wenn ich die Q aber per CFA umsetze, dann habe ich keine Kontrolle mehr über den Call, sobald die Nebenstelle angerufen wird.
Man müsste dann für jede Nebenstelle einzeln Regeln definieren, damit der Call wieder zurück kommt, was aber die Regeln des Users dann generell überschreibt.
 
Ich versuche dir nachher Mal grafisch darzustellen was ich meine.
 
Sooo hat etwas gedauert da ich in Projekten vertieft war. Evtl. klappt es so.
 

Anhänge

  • 1.png
    1.png
    39,1 KB · Aufrufe: 39
Wie gesagt, habe ich diesen Stand bereits.
Wie ganz oben erwähnt exisitert das so bereits in der "dirty Lösung".
Nach diesem System habe ich es auch überlegt und die Q's werden auch genau so auf Verfügbarkeit geprüft.
...
Die Extension aus der DB zu holen und per CFA Transfer, den Call an die Extension zu verbinden ist nicht das Problem.
Die Extensions müssen aber in einer Q sein, damit der Call nicht verloren geht, wenn jmd. trotz "Verfügbar" nicht ans Telefon geht.
Die Q kann ich aber nicht mit den Extensions aus der DB belgen, oder die Extensions aus der q wieder entfernen.
Das geht nur über das Web-Interface.
Das möchte ich aber automatisieren.

Ich habe von der 3CX Call Control API gelseen, die zwar noch funktionieren soll, aber zu der es keine Doku mehr gibt, siehe hier:

Mit der API wäre wohl ein direkter Zugriff auf die Qs möglich.
Ohne Doku und da es wohl eher für Windows Systeme ausgelegt ist, fällt diese Möglichkeit leider aus, weil das den Aufwand nicht Wert ist und unklar ist ob der Zugriff über die API langfrisitg gesichert ist.

Ich habe auch schon bei VOIPTools angerfragt ob sie das können und warte auf ein Angebot.

Die REST API kann soweit ich weiß auch nicht auf die Qs zugreifen.

Man könnte auch für jeden einzelnen User eine extra Q anlegen, die alle wieder an eine Management CFA zurück leiten. Dann könnte dei CFA alles steuern, allerdings hätte ich dann auch unübersichtlich viele Qs.
 

Statistik des Forums

Themen
44.416
Beiträge
232.726
Mitglieder
78.332
Neuestes Mitglied
verteiler-server-meldunge