NEWS
Anbindung 3cx TK-Anlage
-
Hallo zusammen!
Ich habe es geschafft meine 3cx-TK-Anlage mit einem BlocklyScript in ioBroker anzubinden. Das möchte ich kurz beschreiben.
Hier mein BlocklyScript:
Als erstes legen wir einen neuen Datenpunkt an. In meinem Beispiel fragen wir einfach mal die Version der Anlage ab.
Danach muss als erstes ein Login-Cookie angelegt werden, indem wir folgenden curl-Befehl absetzen:
curl 'https://myhost.my3cx.de:5001/api/login' -H 'authority: myhost.my3cx.de:5001' -H 'accept: application/json, text/plain, /' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63' -H 'content-type: application/json;charset=UTF-8' -H 'origin: https://myhost.my3cx.de:5001' -H 'sec-fetch-site: same-origin' -H 'sec-fetch-mode: cors' -H 'sec-fetch-dest: empty' -H 'referer: https://myhost.my3cx.de:5001/' -H 'accept-language: de' -b /tmp/curl-cookies.txt -c /tmp/curl-cookies.txt --data-raw '{"Username":"admin","Password":"xxx"}' --compressed
Ihr müsst natürlich eure URL der Anlage, den Anmeldenamen und das Passwort anpassen. Zur besseren Lesbarkeit, habe ich den Befehl über mehrere Zeilen aufgeteilt. In Blockly muss das alles in einer Zeile stehen.
Schön, jetzt ist der Login in die Anlage erfolgreich verlaufen. Als nächstes warten wir kurz, bis die Cookie-Datei ins Dateisystem geschrieben wurde. Habe 100ms empirisch ermittelt. Vielleicht kennt jmd ja eine Methode, die besser ist als die Zeit abzuwarten.
Nun kommt der zweite curl-Befehl mit dem wir den Datenpunkt abfragen:
curl 'https://myhost.my3cx.de:5001/api/SystemStatus' -H 'authority: myhost.my3cx.de:5001' -H 'accept: application/json, text/plain, /' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63' -H 'content-type: application/json;charset=UTF-8' -H 'origin: https://myhost.my3cx.de:5001' -H 'sec-fetch-site: same-origin' -H 'sec-fetch-mode: cors' -H 'sec-fetch-dest: empty' -H 'referer: https://myhost.my3cx.de:5001/' -H 'accept-language: de' -b /tmp/curl-cookies.txt -c /tmp/curl-cookies.txt --compressed
Auch hier ist wegen der besseren Lesbarkeit der Befehl auf mehrere Zeilen aufgeteilt.
Es kommt ein JSON-Payload zurück, den wir nur zerlegen müssen, um die Version auszulesen. Die Versionsnummer wird in den oben angelegten Datenpunkt geschrieben. Dieser Datenpunkt kann dann für weitere Auswertungen genutzt werden.
Jetzt warten wir nochmal 100ms, bis wir das Cookie löschen.
Fertig.
Natürlich ist die Abfrage der Versionsnummer nur ein Beispiel. Nehmt dann einfach den Datenpunkt, den ihr abfragen möchtet. Im Prinzip funktioniert das alles wie oben beschrieben.
Zum Schluss noch die mir bekannten API-Abfragen:
https://myhost.my3cx.de:5001/api/SystemStatus https://myhost.my3cx.de:5001/api/ActiveCalls https://myhost.my3cx.de:5001/api/ServiceList https://myhost.my3cx.de:5001/api/ExtensionList https://myhost.my3cx.de:5001/api/TrunkList https://myhost.my3cx.de:5001/api/InboundRulesList https://myhost.my3cx.de:5001/api/OutboundRuleList https://myhost.my3cx.de:5001/api/IVRList https://myhost.my3cx.de:5001/api/RingGroupList https://myhost.my3cx.de:5001/api/CallLog?callState=All&dateRangeType=Yesterday https://myhost.my3cx.de:5001/api/PhoneBookEntryList?count=50&filter=&from=0
Um die Datenpunkte im Browser anzusehen, einfach sich auf der Anlage anmelden und dann die o.g. URLs aufrufen. Natürlich wieder an eure Anlage anpassen. Zur bessere Lesbarkeit im Firefox habe ich das Add-On JSON Lite genutzt.
Ich möchte euch hiermit anregen weiteren Input zu geben, sodass sich ggf. ein Entwickler berufen fühlt einen Adapter zu programmieren
Anbei das Script.