MICROLINC - Probleme suchen Lösung
Zurück   Home

3CX V16 PowerShell Call Control API

  -  25.04.2019 - 10:06
Menü

Home
Microsoft Small Business Server 2011 Standard
Hardware
Windows
MS Office
Projekte
Support
Download
Peripherie
Sonstiges (Off-Topic)
Telefonie
Windows 8
Windows Mobile
Security-Software
DATEV
Virtualisierung Oracle virtualbox
nginx
Kryptographie
hMailServer
Android
Novell
Exchange
Server 2012 R2
AD Certificate Service (PKI) / Zertifizierungsstelle
System Center
Blackberry
Microsoft Flow
Virtualisierung Microsoft Hyper-V
Ubiquiti
3CX

TLS 1.0 aktivieren

yealink T46 mit Secure SIP als DIRECT SIP (STUN - remote)

3CX V16 Call Control API mit PowerShell Core

OneDrive


 
Autor:Thomas Windscheif last edit:25.04.2019 11:41

Link zu diesem Beitrag:


[Druckansicht]

3CX V16
Call Control API
PowerShell 6.2
.Net Core

Da 3CX in der V16 auf .NET Core umgestellt hat, kann man nicht mehr nativ mit der PowerShell an die API herantreten.
Hierfür muss zunächst PowerShell Core installiert werden.

Download von PowerShell Core ist hier zu finden: https://github.com/PowerShell/PowerShell

Beispiele und eine Dokumentation der zu ladenen Bibliothek findet man unter folgendem Download: http://downloads.3cx.com/downloads/misc/callcontrolapi/3CXCallControlAPI_v16.zip

Die Call Control API war in der Vergangenheit immer erst ab der PRO-Version nutzbar.
Ob das mit der V16 immer noch erst ab der PRO-Edition möglich, konnte ich leider noch nicht testen.

Nach der Installation von PowerShell Core lässt sich diese dann über pswh.exe starten.
Die Umgebung wird standardmäßig unter C:\Program Files\PowerShell\6\pwsh.exe installiert.

Die Zugangsdaten für die Call Control API befinden sich in der Windows Installation unter:
C:\Program Files\3CX Phone System\Bin\3CXPhoneSystem.ini
In dem Abschnitt "ConfService" findet man die relevanten Parameter zum Verbindungsaufbau zur Call Control API.

Die Initialisierung ist immer noch über denselben Weg wie über V15 möglich, auch wenn nun wohl ein anderer Weg über PhoneSystem Reset empfohlen wird. Da der alte Weg aber noch funktinioniert und für mich nachvollziehbarer ist, verwende ich noch diesen.

Die Firma Matic-Tec.de hat dankenswerter Weise in der Vergangenheit bereits einen Artikel zur Verwendung der Call Control Api mit 3CX geschrieben (siehe https://sipip.de/blog/infos/60-3cx-automatisieren-mit-powershell-und-der-call-control-api)

Auf Basis dieses Codes habe ich den nachfolgenden PowerShell-Code geschrieben um PhoneBook-Kontakte zu löschen bzw. anzulegen:


Add-Type -Path "C:\Program files\3CX Phone System\Bin\3cxpscomcpp2.dll"
$PS = [TCX.Configuration.PhoneSystem]
$PS::CfgServerHost = "127.0.0.1"
$PS::CfgServerPort = 5485
$PS::CfgServerUser = "Username aus der INI-Datei"
$PS::CfgServerPassword = 'Passwort aus der INI-Datei'
$PS::ApplicationName = "ContactApp"

$t = ($PS::Root)
$t.WaitForConnect((New-TimeSpan -Seconds 30))
if ($t.Connected) {
Write-Host "connection to call api established"
$3CXTenant = $t.GetTenant()
$PhoneBookEntries = $3CXTenant.GetPhoneBookEntries()
Write-Host "Search for Entries being tagged with CustomContact"
$OurTaggedPBEntries = $PhoneBookEntries | ? {$_.Tag -eq "CustomContact"}
Write-Host "Found $($OurTaggedPBEntries.Count) Entries"
if ($($OurTaggedPBEntries.Count) -gt 0) {
Write-Host "Remove Entries beging tagged with LDAP"
foreach ($OurTaggedPBEntry in $OurTaggedPBEntries) {
$ContactDetail = "$($OurTaggedPBEntry.Firstname) $($OurTaggedPBEntry.Lastname) $($OurTaggedPBEntry.CompanyName)"
try {
Write-Host "Successfully removed Contact $ContactDetail"
$OurTaggedPBEntry.Delete()
} catch {
Write-Error "Failed to remove Contact $ContactDetail"
}
}
}

Write-Host "Creating new Contacts"
while ($x -le 50) {
try {
$NewContact = $3CXTenant.CreatePhoneBookEntry()
$NewContact.Firstname = "Herrmann$($x)"
$NewContact.Lastname = "Mustermann$($x)"
$NewContact.Phonenumber = "004444$($x)"
$NewContact.Tag = "CustomContact"
$NewContact.Save()
$x++
} catch {
Write-Error "Failed to Add Contact. $($_.Exception.Message)"
}
}
$t.Disconnect()
} else {
Write-Error "connection to call api failed"
}


Das Skript lädt die Bibliothek 3cxpscomcpp2.dll und baut initialisiert dann die Verbindung ($PS::Root) unter Verwendung der Verbindungsparameter. Die PowerShell muss hierfür privilegiert gestartet werden.

Über das Attribut "Connected" wird der erfolgreiche Verbindungsaufbau geprüft, anschließend werden zunächst alle Kontakte mit dem definierten Tag "CustomContact" ermittelt und anschließend in der foreach-Schleife einzeln entfernt.
Dies erspart das updaten der Kontakte, welches aber natürlich auch möglich ist.

Anschließend werden beispielhaft mehrere Kontakte über die While-Schleife angelegt.


Über den Autor
Thomas Windscheif arbeitet bei excITe Consulting und ist langjähriger Berater im Bereich IT-Infrastruktur und Groupware. Sowohl Kleinunternehmen z. B. im Handwerk als auch der größere fertigende Mittelstand gehören zu seinem Projektumfeld. Im Wesentlichen gehören die Planung von Infrastruktur-Migrationen (Novell/Micro Focus, Microsoft), Cloud-Lösungen (Office365), Groupware-Umgebungen (z. B. Exchange) und deren Umsetzung zu seinen Aufgaben. Neues begeistert ihn aber ebenso und so unterstützt Thomas Windscheif auch bei themenfremden IT-Systemen, überall da wo er helfen kann.

Sein Ziel: Die Mehrwerte der heutigen IT-Lösungen für einfacheres und modernes Arbeiten beim Kunden einbringen.





Login


QuickTag:  

 
Sie haben ein ungelöstes Problem in Ihrer Exchange Server oder Microsoft-Infrastruktur?
Treten Sie gerne mit mir in Kontakt. Sowohl bei einfachen Exchange Installationen, als auch bei hochverfügbaren, lastverteilten Mehrstandort-DAG-Topologien mit Loadbalancern unterstütze ich Sie -auch kurzfristig- sehr gerne.

Nutzen Sie den Live Chat, xing, LinkedIn, das Kontaktformular oder den Mailkontakt

[News als RSS-Feed abonnieren]
News

vom 25.04.2019 - 11:41


- 3CX V16 Call Control API mit PowerShell Core -

Da die neue Version 16 von 3CX nun auf .NET Core aufsetzt, muss man nun PowerShell Core zum ansteuern der Call Control API verwenden. Im folgenden Artikel werden die Voraussetzungen und ein Beispiel für die Verwaltung von PhoneBook-Einträge erläutert.

http://www.microlinc.de/index.php?lev1=33&lev2=3&lev3=&id=417


Weitere News:

Exchange Online SMTP TLS Report


vom 15.02.2019 18:04


TLS-Test für SMTP mit PowerShell


vom 10.12.2018 11:47


3CX Secure SIP via DIRECT-STUN mit yealink T46S


vom 08.09.2018 15:35


Exchange 2016 CU10


vom 25.06.2018 15:21


Apple iCloud Addin stört Outlook Kalenderfunktionen


vom 18.10.2017 13:24


.NET 4.7 released - Bitte nicht auf Exchange Servern installieren


vom 13.06.2017 21:52


Troubleshooting Exchange Health Manager Sensoren


vom 16.05.2017 21:06


Exchange 2016 - ActiveSync-Lesebestätigungen können nun unterdrückt werden


vom 09.03.2017 18:28


Exchange - Informationen an Dritte einschränken


vom 20.02.2017 01:53


Einen guten Start in das neue Jahr


vom 31.12.2016 19:21


Smart App Banner für OWA entfernen


vom 09.09.2016 20:15


Neue Version des Berechtigungsvererbungsskript für Exchange released


vom 17.05.2016 19:34


LogParser für Exchange SMTP-Logs


vom 16.05.2016 00:48


Exchange Healthmailboxen neu anlegen


vom 25.03.2016 16:28


Retention Policy auf Healthmailboxen anwenden


vom 24.03.2016 20:52


Exchange Schemaversionen auf allen DCs abfragen


vom 24.03.2016 16:37


Neue Versionen des Berechtigungsvererbungsskripts


vom 27.09.2015 19:04


Exchange 2013 Mapi over HTTP Diagnose


vom 20.09.2015 20:42


Reparatur der AD Certficate Service Datenbank


vom 25.07.2015 21:37



[alle News auflisten]
Sitemap - Kontakt - Datenschutz & Disclaimer - Impressum