3cx API and powershell

Discussion in '3CX Phone System - General' started by webturtle, Oct 26, 2016.

Thread Status:
Not open for further replies.
  1. webturtle

    Joined:
    May 28, 2015
    Messages:
    3
    Likes Received:
    0
    Good morning.

    I use a powershell script to monitor the status of my trunks, because i have an issue with my firewall and have to empty its connection table after a reconnect sometimes.

    The thing seems to work, but one small problem:
    I can only connect to 3 CX from one version of the script. A second connect is only possible after a reboot of the server.
    For example:
    I try to develop the script in the Powershell ISE and everything works.
    If I start the script as a service, i get a not connected error.
    If i reboot, the service works.

    If i restart the service or have to change something inside the script after some days, i have to reboot the server.

    I cannot figure out how to disconnect cleanly.

    Here is the 3CX Part of the Script:

    Code:
    $3CXInstallDir=(Get-WmiObject -Class Win32_Product | where {$_.name -like "3cx*Phone*System*"}).installLocation
            
        [void][System.Reflection.Assembly]::LoadFile("$3CXInstallDir\Instance1\Bin\3cxpscomcpp2.dll") 
        [void][TCX.Configuration.PhoneSystem]::set_cfgserverhost("127.0.0.1") 
        [void][TCX.Configuration.PhoneSystem]::set_cfgserverport("5485") 
        [void][TCX.Configuration.PhoneSystem]::set_ApplicationName("CallViewer") 
        [void][TCX.Configuration.PhoneSystem]::set_cfgserveruser("cfguser_default")
        [void][TCX.Configuration.PhoneSystem]::set_cfgserverpassword("**********")
        
        $global:My3CX = [TCX.Configuration.PhoneSystem]::get_Root() 
        
        $global:Tenant = [TCX.Configuration.PhoneSystem]::Root.GetTenants()
        
        if (( $Tenant[0].GetExternalLines() | where {($_.Number -eq "10002") -and (!$_.IsRegistered)}))
            {
                echo Nicht-Registriert
    
                cd "C:\Program Files (x86)\PuTTY\"
                Start-Sleep -Seconds 30
                .\plink.exe "does a command to empty the connection tracking in my firewall"
    
            }
            else
            {
                echo Registriert
            }
    
        #$My3CX.Disconnect()
    I tried the disconnect command, but that freezes the whole thing and after that a reconnect is not possible.
     
  2. Anonymous

    Anonymous Guest

    That is some bad a$$ code. Would you consider posting and sharing? With some community involvement and testing we could probably get that figured out and extended.

    Nice work.
     
  3. webturtle

    Joined:
    May 28, 2015
    Messages:
    3
    Likes Received:
    0
Thread Status:
Not open for further replies.