• 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.

CFA: Zugriff auf 3CX Kontaktbuch

patrickb

Gold Partner
Advanced Certified
Mitglied seit
6. Februar 2021
Beiträge
756
Gibt es eine Möglichkeit via CallFlow Designer auf das interne 3CX Telefonbuch, speziell auf die hinterlegten Nummern zuzugreifen?

C#, XML Parser auf ein xml Kontaktbuch was sonst für die Telefone genutzt wird o.Ä.?

Ziel:
Die CFA soll bei einem eingehenden Call prüfen ob eine Nummer in den Kontakten vorhanden ist. Wenn ja soll Weg A gegangen werden, wenn nein soll Weg B genutzt werden.

Hat da jemand eine Idee?
 
Zuletzt bearbeitet:
Hallo,

prinzipiell ja, hier für den Anfang ein grobes Beispiel eine C# Schnipsel einer Call Flow App. Die gibt alle Firmenkontakte als String zurück:
C#:
String strRetVal = "";
foreach(PhoneBookEntry pbeToTest in PhoneSystem.Root.GetTenant().GetPhoneBookEntries() ) {
    strRetVal = strRetVal + pbeToTest.LastName + ", " + pbeToTest.FirstName + ": " + pbeToTest.PhoneNumber + "\n";
}
return strRetVal;
Weitere Daten befinden sich in pbeToTest.CompanyName, sowie pbeToTest.AddressNumberOrData0 bis pbeToTest.AddressNumberOrData9. Prinzipiell passt das oben alles dank LINQ - auch mit einem Nummernvergleich - in eine einzelne Zeile die nur ja oder nein zurück gibt. Aber dafür brauchst du mich nicht ...

Man könnte auch PhoneSystem.Root.GetTenant().FindContacts("+493012345678",iSearchLength) (wobei iSearchLength = Länge der zu treffenden Nummer ist) benutzen, um die Kontakte nach passenden Nummern zu durchsuchen. Aber das findet oft nichts weil es schlecht matcht. Dann lieber doch manuell das Telefonbuch nach passenden Nummern per regex durchsuchen.
 
Zuletzt bearbeitet:
Du bist wieder einmal mein Held :D Passt mit dem Snippet. Lasse einfach ein "CONTAINS(csharpcode,RIGHT(session.ani,6))" drüberlaufen und via C# nur die Nummern in den String schreiben. So sollte es sicher sein, das er mir auch mit +49, 0 und 0049 kein Stress macht.

Macht auf jeden Fall was es soll: "Zwischen Kunde und nicht Kunde unterscheiden".
Bleibt nur der Fail das ich aus Rufnummernblöcken jede Nummer einzeln eintragen müsste damit er sie erkennt. Hmmm...

Du solltest einfach ein Buch schreiben mit den ganzen Parametern. Ich wär dein erster Kunde ;)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: MarcosV_3CX
Dann vielleicht so:
C#:
return (PhoneSystem.Root.GetTenant().GetPhoneBookEntries().Where( x => x.PhoneNumber.Contains(RIGHT(session.ani,6))).Count() > 0)?"Kunde":"unbekannt";

Du solltest einfach ein Buch schreiben mit den ganzen Parametern. Ich wär dein erster Kunde
Ich habe seit geraumer Zeit keine Sekretärin mehr. Wir finden seit längerem niemand mehr dauerhaft, so wie alle anderen auch, so ein Elend. Früher habe ich noch selber diese Berufe mehrfach ausgebildet weil ich auch dafür div. Scheine habe. Das will auch niemand mehr machen.
Daher darf ich: selber schreiben, telefonieren, organisieren, Kalender und Mitarbeiter verwalten, Bücher-hoch-und-runter-halten, Kaffee kochen, anderen Leuten in den A* treten usw.. Wir haben das alles reduziert oder ausgelagert. Deswegen wird das mit dem Buch eher nichts, nicht einmal aus Sport. Der Schrieb wäre auch recht kurz und würde oft auf das - nicht öffentlich verfügbare - Nachschlagwerk mit der Parametersammlung des Herstellers verweisen. Mit dir als einzigen Kunden könnte ich auch kein Geld verdienen ;)

Es geht wohl eher um die Ideen, wie die Parametersammlung zu lesen und praktisch für Lösungen umzusetzen ist.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: patrickb und autohaus
Ich muss hier nochmal nachfragen, nachdem ich jetzt ziemlich viel wieder rumprobiert habe:

Gibt es eine Möglichkeit das Telefonbuch nach dem FirstName und LastName zu durchsuchen und bei einem Match die entsprechende Mobilnummer als Return Wert zu übergeben?

Ziel: Ich würde gerne prüfen ob z.B. Max Mustermann im Kontaktbuch steht und wenn, dann die entsprechend hinterlegte Mobilfunknummer innerhalb der CFA weiterverarbeiten.

Theoretisch könnte ich ja das hier nutzen und dann danach den String durchsuchen. Ich denke aber es gibt eine einfachere Lösung.
C#:
String strRetVal = "";
foreach(PhoneBookEntry pbeToTest in PhoneSystem.Root.GetTenant().GetPhoneBookEntries() ) {
    strRetVal = strRetVal + pbeToTest.LastName + ", " + pbeToTest.FirstName + ": " + pbeToTest.PhoneNumber + "\n";
}
return strRetVal;

Danke im Voraus.
 
Ich denke aber es gibt eine einfachere Lösung.
Reguläre Ausdrücke / Regular Expression bzw. regex match (case insensitive) ist eine Lösung. In der Schleife ein if ... Regex.IsMatch ... und break. Das muss grundsätzlich nichtmal eine Schleife sein, das geht auch ohne, direkt.
 
Reguläre Ausdrücke / Regular Expression bzw. regex match (case insensitive) ist eine Lösung. In der Schleife ein if ... Regex.IsMatch ... und break. Das muss grundsätzlich nichtmal eine Schleife sein, das geht auch ohne, direkt.
Die Frage ist mal wieder welche Parameter man dazu am besten nutzt ^^ bzw. Ob man den Umweg geht und erst alle Kontakte lädt oder direkt einfach nach dem Vor und Nachnamen suchen lässt und dann auf Basis des Ergebnisses die Mobilnummer abfragt. :8
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
21.512
Beiträge
108.228
Mitglieder
70.729
Neuestes Mitglied
JULTIE
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.