API: CallHistoryView zeigt keine aktuellen Ergebnisse

Marco Thönelt

Premier Customer
Mitglied seit
19. November 2024
Beiträge
48
Hallo zusammen,

über die Rest API greife ich auf CallHistoryView zu. Jetzt ist mir aufgefallen, dass nur noch veraltete Datensätze angezeigt werden.
Im Internetz habe ich den Tipp gefunden, die Anrufhistorie mal zu löschen. Das habe ich jetzt getan... leider ohne Erfolg. Jetzt wird nämlich gar kein Ergebnis mehr angezeigt. Auch nicht die neuen Anrufe.

Kann jemand helfen?
OnPrem Version 20.0 Update 7 (Build 1080 Release)
 
Ich weiß jetzt nicht genau auf was du da zugreifst, aber da gab es in der 3CX v20u6 ein maßgebliches Upgrade.
 
ich greife lediglich mit orderby und search auf CallHistoryView zu. So gravierend kann die Änderung doch nicht gewesen sein, die Doku sagt mir, dass ich alles korrekt mache. Und ich hatte ja auch Ergebnisse.. nur halt zu alte
 
Ok, es hat sich doch was grundsätzlich geändert. Schön:)

Es ist jetzt also /xapi/v1/ReportCallLogData/Pbx.GetCallLogData()
Aber da sagt er mir "Not found"
 
@marco
Es ist jetzt also /xapi/v1/ReportCallLogData/Pbx.GetCallLogData()
Damit wissen wir nicht, was für eine Version der 3CX bei euch verwendet wird. Es gibt immer wieder Anpassungen und Erweiterungen der API.

Wenn du deine aktuellen API Funktionen wissen willst, dann schau dir deine eigene API an:
https://<3cxfqdn>/xapi/v1/swagger.yaml
Dort siehst du was geht und was nicht und wie. Gerade /ReportCallLogData/Pbx.GetCallLogData() erfordert einige Parameter. Deren grundsätzlicher Aufbau ist auch in der swagger.yaml erklärt, steht direkt darunter.

Man kann sich auch gern selber einen Berichtsansicht in der 3CX zusammenklicken und man sieht dann z.B. mit den Browser Development Tools wie der Aufruf aussehen kann, siehe das was @avraammich_3CX dir geschickt hat oder hier:
1765969949674.png
 
Aber ich hab die Version doch bereits in meinem Anfangspost niedergeschrieben:
OnPrem Version 20.0 Update 7 (Build 1080 Release)

Oder meinst du noch eine andere Version?
 
  • Like
Reaktionen: fxbastler
Aber ich hab die Version doch bereits in meinem Anfangspost niedergeschrieben:
OnPrem Version 20.0 Update 7 (Build 1080 Release)
Lesen bildet, auch mich - wenn man es denn tut :)
Das mit der Version hatte ich beim Schreiben nicht mehr im Hinterkopf.

Oder meinst du noch eine andere Version?
Nein, genau das, die Version der genutzten 3CX.
Wir haben uns in allen letzten xx 3CX Versionen jeweils die swagger.yaml gezogen und entspr. benannt abgelegt. Es ist immer interessant die Unterschiede zu erkunden und manchmal auch Dinge zu entdecken die in der Anlage selber nicht so offensichtlich sind. Daran sieht man auch die Entwicklung der Anlage über die Zeit hinweg.
 
@marco

Damit wissen wir nicht, was für eine Version der 3CX bei euch verwendet wird. Es gibt immer wieder Anpassungen und Erweiterungen der API.

Wenn du deine aktuellen API Funktionen wissen willst, dann schau dir deine eigene API an:
https://<3cxfqdn>/xapi/v1/swagger.yaml
Dort siehst du was geht und was nicht und wie. Gerade /ReportCallLogData/Pbx.GetCallLogData() erfordert einige Parameter. Deren grundsätzlicher Aufbau ist auch in der swagger.yaml erklärt, steht direkt darunter.

Man kann sich auch gern selber einen Berichtsansicht in der 3CX zusammenklicken und man sieht dann z.B. mit den Browser Development Tools wie der Aufruf aussehen kann, siehe das was @avraammich_3CX dir geschickt hat oder hier:
Anhang anzeigen 19608
Hi,
also ich hab mich ja selten so sehr wie ein Anfänger gefühlt, wie gerade.

Mit Bericht zusammenklicken meinst du... in die Berichte gehen, z.B. Ausgehende Anrufe anklicken und einen Filter setzen? Da finde ich in den Entwicklertools keinen Header, der auch nur entfernt nach dem gesuchten aussieht
 
Mit Bericht zusammenklicken meinst du... in die Berichte gehen, z.B. Ausgehende Anrufe anklicken und einen Filter setzen?
ja, zum Beispiel

Hier exemplarisch die grundlegende Vorgehensweise für eine Suche nach einem 3CX Call Control API / xapi Aufruf:
  1. starte den Browser deines Vertrauens (Chromium basierender Browser wie z.B. Edge oder Chrome haben sich bewährt) und melde dich an der 3CX an
  2. öffne die Browser Developer Tools, meist mit F12, sinnvollerweise das DevTools Fenster abdocken
  3. navigiere in der 3CX z.B. zu Admin / Berichte / Anrufprotokoll (als Beispiel für deine Anfrage und die Bilder hier)
  4. direkt mit Klick auf den Menüpunkt (siehe Bild 3cx-devtool01) wird die API Anfrage ausgelöst und die Daten die man danach im Browser dargestellt bekommt sind das Ergebnis der Anfrage, in den DevTools sieht man zu dieser Zeit hier in diesem Beispiel die komplette REST Anfrage, ein GET (siehe Bild 3cx-devtool02)
  5. finde die Anfrage in den DevTools, markiere den Aufruftext, kopiere das in einen Texteditor deiner Wahl, z.B. Notepad++ (siehe Bild 3cx-devtool03)
  6. in NP++ ist bei mir das Plugin MIME Tools installiert, markiere den gesamten Text im Editor, starte die Mime Tools und nutze die Funktion URL Decode (siehe Bild 3cx-devtool04), dann wird der Text entspr. geändert und wird lesbar
  7. dann schaut man sich die Anfrage des Browsers an, speziell die übergebenen Parameter; wenn einem dann etwas nicht passt dann wird das geändert - so wie hier im Beipiel die Begrenzung der Ausgabe: das top und skip so wie markiert wird entfernt (siehe Bild 3cx-devtool05)
  8. der Rest der übrig bleibt ist eine gültige REST API Anfrage an die 3CX; wenn das mit einem Skript angefragt werden soll, wie z.B. Powershell, dann sollten div Zeichen wie z.B. das $ nachbehandelt werden (Powershell interpretiert das Zeichen als als Start einer Variaben), in Powershell ist das ein ` davor (ein Gravis), dann wird das $ vom Skript Interpreter an dieser Stelle nicht verarbeitet, die restlichen Daten die einem da nicht gefallen (z.B. Abfragezeitraum) muss man sich selber entspr. anpassen
Siehe die Bilderstrecke im Anhang.

Diese Vorgehensweise trifft für alle API Anfragen im Admin Center der 3CX zu: alles was da anklickbar ist wird auf diese Weise von der 3CX abgefragt und dem Nutzer dargestellt. Man kommt so an alle Abfragen und auszuführenden Befehle und kann das alles automatisieren - alles.

Abschließender Hinweis für irgendwelche Änderungen von 3CX Innereien: alle Objekte in der 3CX (3CX Entitäten wie z.B. Nutzer, WS, RG, IVR, Anrufskripte oder auch SIP Trunks, Telefonbücher, Systemnebenstellen / Fax, Systemeinstellungen, Geschäftszeiten, Dienste, Neustart) werden mit systemweit eindeutigen Objektnummern angesprochen. Wenn man also etwas mit einem POST oder PATCH ändern will, dann braucht man zuvor erst einmal die entspr. Objektnummer die man mit einem GET erhält. Wenn z.B. Nutzereinstellungen geändert werden soll, dann such man sich erst den passenden Nutzer, dessen ID, fragt dann noch einmal gezielt dessen Nutzerdaten ab und ändert dann diesen Nutzer mittels dieser ID. Sieht man alles in den DevTools.

Alle in der jeweiligen 3CX verfügbaren API Endpunkte bekommt man wie oben bereits beschrieben:
Wenn du deine aktuellen API Funktionen wissen willst, dann schau dir deine eigene API an:
https://<3cxfqdn>/xapi/v1/swagger.yaml
Dort siehst du was geht und was nicht und wie. Gerade /ReportCallLogData/Pbx.GetCallLogData() erfordert einige Parameter. Deren grundsätzlicher Aufbau ist auch in der swagger.yaml erklärt, steht direkt darunter.
 

Anhänge

  • 3cx-devtool01.jpg
    3cx-devtool01.jpg
    51,5 KB · Aufrufe: 6
  • 3cx-devtool02.jpg
    3cx-devtool02.jpg
    71,6 KB · Aufrufe: 5
  • 3cx-devtool03.jpg
    3cx-devtool03.jpg
    72,2 KB · Aufrufe: 6
  • 3cx-devtool04.jpg
    3cx-devtool04.jpg
    114,4 KB · Aufrufe: 6
  • 3cx-devtool05.jpg
    3cx-devtool05.jpg
    70,5 KB · Aufrufe: 5
Zuletzt bearbeitet:
  • Like
Reaktionen: avraammich_3CX
Hi, könntest du mir mal die URL in Gänze zukommen lassen, damit ich wenigstens mal mit den korrekten Standardwerten testen kann?
ich bin zwar nicht @avraammich_3CX aber das kann ich auch grad noch so :)

das Anrufprotokoll komplett
Code:
https://<yourfqdn>/xapi/v1/ReportCallLogData/Pbx.GetCallLogData(periodFrom=2025-12-18T23:00:00.000Z,periodTo=2025-12-19T23:00:00.000Z,sourceType=0,sourceFilter='',destinationType=0,destinationFilter='',callsType=0,callTimeFilterType=0,callTimeFilterFrom='0:00:0',callTimeFilterTo='0:00:0',hidePcalls=true)

für ausgehende Anrufe:
Code:
https://<yourfqdn>/xapi/v1/ReportOutboundCalls/Pbx.GetOutboundCalls(periodFrom=2025-12-18T23:00:00.000Z,periodTo=2025-12-19T23:00:00.000Z,trunkDns='',callsType=0)
 
Vielen Dank! Inzwischen habe ich es hinbekommen, vor allem durch die Beispiele von @fxbastler
 
  • Like
Reaktionen: fxbastler
Nur am Rande: die swagger.yaml der 3CX v20 u8 1078 RC1 und der 3CX v20 u8 1089 RC2 sind exakt gleich. Sprich: es fand da keine Korrektur statt weil nicht notwendig und die Weiterentwicklung ist auch abgeschlossen.

Interessanter Hinweis letztens zu einer Swagger GUI die das sehr anschaulich macht:

https://www.3cx.com/community/threads/welcome-email-v20.136213/post-652725

https://editor.swagger.io für Fremdzugang oder

https://github.com/swagger-api/swagger-editor als ein Beispiel für den eigenen Betrieb.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
44.305
Beiträge
232.348
Mitglieder
78.271
Neuestes Mitglied
Oit-Nik