Standardkonfiguration für DesktopApp

TS112

Customer
Mitglied seit
16. Dezember 2021
Beiträge
43
Hallo zusammen,
gibt es eine Möglichkeit für die DesktopApp für eine Terminalserverumgebung eine Standardkonfiguration für die Benutzer zu hinterlegen? Im Detail soll die Integration bzw. Anzeige der CRM Kontakte abgeschaltet werden und ein paar HotKeys vorbelegt werden.
Ich meine ich hättte mal irgendwo etwas über eine XML Konfig gesehen/gelesen oder gehört....finde ich nicht wieder. Danke für Hinweise.
 
Hallo,
ja, das waren noch Zeiten als man alles über eine XML Datei selber provisionieren konnte. Das war die v16 und das geht nun leider nicht mehr mit der v18.
 
Ja Klasse, und nun bringt man über 100 Benutzern bei wie die was einzustellen haben? Ich habe fast das Gefühl 3CSX ist was für Homebastler die Wohnzimmer, Schlafzimmer und Küche vernetzen wollen. :mad:
 
Ich habe mir nur eine richtig bescheidene Lösung mit AutoIT und Powershell gebastelt. Gefallen tut mir das nicht. Es ist gelinde gesagt eine Zumutung, dass man die NSt. in der v18 Desktop App nicht mehr ausrollen kann.
 
Ich habe mir nur eine richtig bescheidene Lösung mit AutoIT und Powershell gebastelt. Gefallen tut mir das nicht. Es ist gelinde gesagt eine Zumutung, dass man die NSt. in der v18 Desktop App nicht mehr ausrollen kann.
Ein manuelles ausrollen der JSON Konfigurationsdatei reichte nicht?
 
Ein manuelles ausrollen der JSON Konfigurationsdatei reichte nicht?
Nein.

Du meinst, das funktioniert inzwischen mit der akt. 3CX App für Windows?

Ich hatte das zu Anfang der v18 probiert und da führte kein Weg hin. Man musste immer erst einmal alles gestartet haben, dann beenden, einen Teil überschreiben, neu starten und dann blieb glaub immer noch etwas nicht richtig übrig. Nach _einigen_ dieser erfolglosen Versuche habe ich eine komplett andere Lösung umgesetzt.

Ich kann ja aktuell nochmal schauen, wäre schön wenn das nun geht.
 
Aktuell lassen wir das auf einer 3CX Shell laufen:

Bash:
_dbtable=$(sed -n 's/DBName = \(.*\)/\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)
_dbport=$(sed -n '0,/DBPort = \(.*\)/s//\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)
_dbuser=$(sed -n 's/MasterDBUser = \(.*\)/\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)
_dbpassword=$(sed -n 's/MasterDBPassword = \(.*\)/\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)

echo "127.0.0.1:$_dbport:$_dbtable:$_dbuser:$_dbpassword"   > ~/.pgpass
chmod 600 ~/.pgpass

psql -d $_dbtable -h 127.0.0.1 -p $_dbport -U $_dbuser -c "SELECT Substring(dn.value FROM 19 FOR 3) AS ext, concat( 'tcx+app:', p.value, 'p/', pvalue, '/', dn.value) AS provisionurl FROM dnprop AS dn, parameter AS p, (SELECT p.value AS pvalue FROM parameter AS p WHERE p.name = 'PROVISIONING_FOLDER') AS SUBQUERY WHERE dn.name = 'PROVFILE' AND p.name = 'WEB_ROOT_EXT_SEC' ORDER BY ext;"

Das ergibt:
Code:
 ext |                               provisionurl
-----+---------------------------------------------------------------------------
 200 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz200.xml
 201 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz201.xml
 202 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz202.xml
 203 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz203.xml
 204 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz204.xml
 205 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz205.xml
 206 | tcx+app:https://pbx.kunde.de/p/prov-verzeichnis/3cxProv_randomxyz206.xml

Dann kopieren wir den Output, verteilen den entspr. Link geschickt (automatisch beim ersten Start mit Browser öffnen) oder kopieren den Link in einen Browser und klicken. Das geht auch.

Man könnte z.B. so auch eine simple HTML Datei (mit Provisionierungslinks zum anklicken) in einem 3CX Template Verzeichnis erzeugen diese einfach aufrufen, aber wer hat schon die komplette Provisionierungs URL im Kopf.
 
Update, auch v20:
Bash:
_dbtable=$(sed -n 's/DBName = \(.*\)/\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)
_dbport=$(sed -n '0,/DBPort = \(.*\)/s//\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)
_dbuser=$(sed -n 's/MasterDBUser = \(.*\)/\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)
_dbpassword=$(sed -n 's/MasterDBPassword = \(.*\)/\1/p' /var/lib/3cxpbx/Bin/3CXPhoneSystem.ini)

echo "127.0.0.1:$_dbport:$_dbtable:$_dbuser:$_dbpassword"   > ~/.pgpass
chmod 600 ~/.pgpass

psql -d $_dbtable -h 127.0.0.1 -p $_dbport -U $_dbuser -c "SELECT Substring(dn.value FROM 19 FOR 3) AS ext, concat( 'tcx+app:', p.value, 'provisioning/', pvalue, '/TcxProvFiles/', dn.value) AS provisionurl FROM dnprop AS dn, parameter AS p, (SELECT p.value AS pvalue FROM parameter AS p WHERE p.name = 'PROVISIONING_FOLDER') AS SUBQUERY WHERE dn.name = 'PROVFILE' AND p.name = 'WEB_ROOT_EXT_SEC' ORDER BY ext;"

Weil: ich habe das jetzt schon wieder bei uns ewig gesucht. Da dachte ich mir: schreib's in's Forum wie alles andere auch. Da finde ich das schneller wieder ;)
 
die Abkürzung als Einzeiler und direkt:
Bash:
sudo -i -u postgres psql -d database_single -c "SELECT Substring(dn.value FROM 19 FOR 3) AS ext, concat( 'tcx+app:', p.value, 'provisioning/', pvalue, '/TcxProvFiles/', dn.value) AS provisionurl FROM dnprop AS dn, parameter AS p, (SELECT p.value AS pvalue FROM parameter AS p WHERE p.name = 'PROVISIONING_FOLDER') AS SUBQUERY WHERE dn.name = 'PROVFILE' AND p.name = 'WEB_ROOT_EXT_SEC' ORDER BY ext;"
 
  • Like
Reaktionen: bitn und Ben04
Da nicht alle Interessenten Zugang zur jew. 3CX Konsole haben (3CX hosted by 3CX, fremder Provider) oder es eine Windows Installation ist - hier das Gleiche als Powershell Skript und Nutzung der 3CX Configuration API.

3cx-get-all-config-uri.ps1

Code:
$tcxurl="mypbx.mydomain.de"     # needs port if not 443

$jsonauthbody = (@{
    Username="100"              # 3CX user, maybe email address
    Password="Super_Secret0815" # 3CX user password
    SecurityCode=""
} | ConvertTo-Json)


$LoginResponse = Invoke-RestMethod -Uri "https://$tcxurl/webclient/api/Login/GetAccessToken" -Body $jsonauthbody -Method POST -ContentType "application/json"

if( $LoginResponse.Status -ne "AuthSuccess" ) {
    Write-Host "abort: authentication not successful"
    exit -1
}

$headers = @{Authorization = "Bearer $($LoginResponse.Token.access_token)"}

$tcxconfigurl = ((Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/Parameters?`$search=`"WEB_ROOT_EXT_SEC`"" -headers $headers -Method GET -ContentType "application/json").Value).Value
$tcxprovdir = ((Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/Parameters?`$search=`"PROVISIONING_FOLDER`"" -headers $headers -Method GET -ContentType "application/json").value | where {$_.Name -eq "PROVISIONING_FOLDER"}).Value
$usernrs = (Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/Users" -headers $headers -Method GET -ContentType "application/json").Value.Number | Sort-Object
$usernrlen = $usernrs[0].Length
Write-Host $("{0,$usernrlen} | {1}" -f "nr", "provisionurl")
Write-Host "$("-" * $($usernrlen+1))+---------------------------------------"
Foreach ($usernr in $usernrs) {
    $userprov = ((Invoke-RestMethod -uri "https://$tcxurl/xapi/v1/DNProperties/Pbx.GetPropertiesByDn(dnNumber=`'$usernr`')?`$search=`"PROVFILE`"" -headers $headers -Method GET -ContentType "application/json").value).value
    Write-Host $("{0,$usernrlen} | {1}" -f $usernr, "tcx+app:$($tcxconfigurl)provisioning/$tcxprovdir/TcxProvFiles/$userprov")
}

Mit dem Link kann man wie gehabt die 3CX v18 Desktop App oder das v20 Softphone provisionieren.
Lässt man das tcx+app: im Link weg, dann bekommt man die .3cxconfig Datei zur Provisionierung des 3CX v16 PhoneForWindows.
 

Zurzeit aktive Besucher

Statistik des Forums

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