Überwachung Erreichbarkeit Telefon Nummer

alindl

Gold Partner
Advanced Certified
Mitglied seit
5. Juli 2022
Beiträge
10
Hallo
Ich suche ein Tool, das die Erreichbarkeit einer Telefonnr. überwacht. zur Diagnose
Also so.
"Überwachnungs" PC wählt automatisch alle 30min. eine externe Telefonnr., die 3cx des Kunden hebt ab, der AB der Nst. sendet z.b. einen bestimmten Ton -> "Überwachnungs" PC sagt ok.

Hintergrund, habe es bei manchen Kunden schon gehabt, das zwar der SIP Trunk grün ist, die ausgehende Telefonie geht auch, aber wenn man anruft, kommt z.b. bei Telekom "Nummer zur Zeit nicht verfügbar etc"
Das ganze am besten als "on premise" Tool
Gibt es soetwas?
 
Hallo,
Mir ist nichts derartiges bekannt.

Die Frage kommt selten aber sie wird gestellt. Es geht letzten Endes darum, eine eigene Telefonanlage (oder wenigstens einen SIP Trunk / eine Nummer) zu steuern (der Anrufer) und von der auch einen Rückgabewert zu erhalten (vollständige Erreichbarkeit, z.B. per DTMF Code Überprüfung).

Das wird man sich wohl bauen müssen. Da stellt sich auch die Frage der Plattform und des Einbindens. Wo soll denn das Programm laufen? Wo und wie soll das Ergebnis auflaufen?

Unter einem normalen Debian haben wir es mit einem einzelnen Programm / Skript (ohne Installation z.B. einer kompletten Asterisk) noch nicht dauerhaft sauber hinbekommen wahlfrei Anrufe (per Skript) zu tätigen. Sipcmd bietet sich da z.B. an. So ein Anruf müsste noch dazu aufgenommen und ausgewertet werden.
 
Zuletzt bearbeitet:
habe mir jetzt etwas anderes Überlegt.
Unter Windows gibt es den Phoner Lite, das kann man auch per cli bedienen.
Mit der Aufgabenplanung z.b. alle 30min phonerlite starten, der wählt dann eine NST beim Kunden an.
Beim Kunden die NST einstellen und Mailbox an und EMail Benachrichtigung bei Anruf.
Somit weiss man schon mal wenn eine Mail von der Mailbox kommt das die Telefonleitung geht.
DIe Verarbeitung der Mail bzw. keine Mail angekommen, muss ich noch schauen
 
Ja, so ein Worklfow geht auch. Ist zwar etwas aussenrum, erfordert noch mehr funktionierende Komponenten aber wird vmtl. funktionieren.
DIe Verarbeitung der Mail bzw. keine Mail angekommen, muss ich noch schauen
Bauen wir recht oft: Powershell Skripte zum Verarbeiten von Daten (auch E-Mails) in Exchange Postfächern. Das bekommt man auch mit POP oder IMAP hin.
 
>>> Bauen wir recht oft: Skripte zum Verarbeiten von Daten (auch E-Mails) in Exchange Postfächern. Das bekommt man auch mit POP oder IMAP hin.
hast du so ein Script Beispiel?
 
oder mach ihr das einfach per Posteingangsrule?
 
oder mach ihr das einfach per Posteingangsrule?
Nein, das sind separat laufende Powershell Skripte, gestartet per Taskplaner. Beispiel: das läuft unter Windows (Exchange Verwaltungs-/EWS- Tools müssen installiert sein), fragt Postfächer ab, extrahieren E-Mails aus dem Posteingang, extrahiert die Anhänge, macht was mit diesen Daten, verschiebt das originale Element in Unterordner, verschickt E-Mails usw. .

Nicht lachen, aber das lag hier noch lokal rum. Ist evtl. gar noch von einem Ex2010, muss man nur etwas im Kopf anpassen.

Code:
# Import-Module -Name "C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll"
Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll"


## Set Exchange Version
$ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2
$downloadTempDirectory = "C:\EMailDownloadTempDirectory"


## Create Exchange Service Object 
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion)

$service.UseDefaultCredentials = $true
$service.AutodiscoverUrl("[email protected]",{$true}) 

#Bind to Inbox 
$folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox, "[email protected]" ) ## $MailboxName)  
$Inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid) 

#Define the properties to get 
$psPropset = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) 
#Define ItemView to retrive just 1000 Items 
$ivItemView =  New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000) 

#Get the ID of the folder to move to 
$fvFolderView =  New-Object Microsoft.Exchange.WebServices.Data.FolderView(1000) 
$fvFolderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep; ## Shallow;
$SfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,"abgearbeitet")
$findFolderResults = $Inbox.FindFolders($SfSearchFilter,$fvFolderView) 
 

$fiItems = $service.FindItems($Inbox.Id,$ivItemView) 

if( $fiItems -ne $NULL ) {

    [Void]$service.LoadPropertiesForItems($fiItems,$psPropset) 



    foreach($Item in $fiItems.Items){ 
        "RecivedDate : " + $Item.DateTimeReceived  
        "Subject     : " + $Item.Subject  
##        "Size        : " + $Item.Size 
        "Recipients  : " + $Item.ToRecipients 
##         "Sender      : " + $Item.Sender 
        $Item.ToRecipients.Address -match "(\S+)eingang" | Out-Null
        $emailsendto = $matches[1] + "@meinedomain.de"

        $Item.Load()
        foreach( $attach in $Item.Attachments ) {
            $attach.Load()
            $fiFile = new-object System.IO.FileStream(($downloadTempDirectory + “\” + $attach.Name.ToString()), [System.IO.FileMode]::Create)
            $fiFile.Write($attach.Content, 0, $attach.Content.Length)
            $fiFile.Close()
            $ifilenamep = $downloadTempDirectory+"\"+$attach.Name.ToString()
            $ofilenamep = $downloadTempDirectory+"\"+$attach.Name.ToString().replace(".pdf","") + "-bearbeitet.pdf"
            write-host "Downloaded Attachment :" $ifilenamep

            $attach.Name.ToString() -cmatch "(\d\d\.\d\d\.\d\d)_(\d\d\.\d\d).*\.(\S+).pdf" | Out-Null
            $indate = $matches[1]
            $intime = $matches[2]
            $innr   = $matches[3]
            Write-Host "Datum : " $indate ", Uhrzeit : " $intime ", Nummer :" $innr ", SendeAn: " $emailsendto

         
            Start-Process "C:\Program Files\gs\gs9.56.1\bin\gswin64c.exe" -wait -workingdirectory "C:\Program Files\gs\gs9.56.1\bin" -ArgumentList "ganz viele geheimnisvolle Dinge passieren hier ..."
            Remove-Item $ifilenamep -Force
            Rename-Item $ofilenamep -NewName $ifilenamep -Force
       
            # Create Email Object 
            $EmailMessage = New-Object Microsoft.Exchange.WebServices.Data.EmailMessage -ArgumentList $service 
            #Set the Subject 
            $EmailMessage.Subject = "empfangen vom " + $indate + " um " + $intime + " von Nummer " + $innr
            #Set the Body of Messsage 
            $EmailMessage.Body = "Die Daten befinden sich im Anhang" 
            #Add Recipients 
            $EmailMessage.ToRecipients.Add($emailsendto) 
            #Add Attachment
            $EmailMessage.Attachments.AddFileAttachment($ifilenamep) | Out-Null
       
            #Send Message SendandSave will save the Message to the Sender Sent Item Folder 
            $EmailMessage.SendAndSaveCopy() | Out-Null

            Remove-Item $ifilenamep -Force
        }
   
        $Item.Move($findFolderResults.Folders[0].Id)  | Out-Null
    }

}
 
Zuletzt bearbeitet:
  • Like
Reaktionen: mbehrens
ah, ok, da ich ja Hauptsächlich Exchange Admin bin, müsste ich das hinbekommen
mir schweb da "Search-Mailbox" vor, das müsste reichen....
 
da ich ja Hauptsächlich Exchange Admin bin
Willkommen im Boot.
müsste ich das hinbekommen
ganz sicher

Ich baue gerade Skripte, um die restl. von uns verwalteten Exchange automatisch mit den Updates dieser Woche und den notwendigen Einstellungen vorher + nachher zu versorgen, damit der akt. healthchecker grün durchläuft. Bin eben fertig geworden. Funktioniert sogar.
 
  • Like
Reaktionen: mbehrens
oh ja, das letzte SU :-) mit der Extended Protektion .... grrrrr
Habe bei mir getestet mit Firewall die ne WAF hat, geht gottsei dank.
Gut das wenigsten das ExchangeExtendedProtectionManagement.ps1 ein Rollback hat.
Aber ich sag dir so ein Scheiss was MS in letzter Zeit, egal bei wegen Produkt bei den Updates abliefert, grrrr
Vor einiger Zeit war ich froh nur die Server Versionen von MS zu betreuen, da gab es bei mir noch nie Probleme nach den Updates, anders als bei Win10 Clients , aber die Zeiten haben sich leider geändert.....
 
Gut das wenigsten das ExchangeExtendedProtectionManagement.ps1 ein Rollback hat.
jep

Auch bei uns: SSL Offloading funktioniert nachher noch. Ich durfte nun noch die Änderungen an den TLS Einstellungen (Server, Client, OutlookAnywhere Verwendung) und /PrepareAllDomains vom letzten Mal nachreichen. Das wurde wohl nicht überall gemacht ...
 
bei mir auch, TLS bei .net4.0 auf 1.2 und rcp ssl offloading
 
  • Like
Reaktionen: fxbastler
Es müsste eigtl. recht simpel mit einem Dialer lösbar sein. Bau dir eine Dummy Anlage die mit einer CFA, die via Dialer jede X Min einen Call auf die andere Anlage initiiert.

Auf der entsprechend anderen Anlage baust du dir eine CFA die den Anruf annimmt und dann auflegt.

Sollte der Dialer auf der Dummy-Anlage in einen Timout laufen, lässt du die CFA über den Error/Disconnect-Handle eine Mail an dich schicken und leitest anschliessend wieder zurück in die CFA selbst.

Einziger Knackpunkt:
Nach einem Reboot der Dummy-Anlage musst du die Dialer Komponente einmal anrufen damit sie startet. Das müsste man sich dokumentieren.
 
wir hatten so ein Monitoring bei einem früheren Projekt vor einigen Jahren gebaut,nach ungefähr folgenden Schema:

Nebenstelle 701 ruft mittels Batchdatei die Externe-Rufnummer mit Durchwahl Nebenstelle 702 an.

An beiden Nebenstellen war (glaube ich) sipcmd als jeweils eigene instanz angemeldet.
Angerufen wurde immer über die externe Nummer, sodass wir auch den SipProvider damit in der Prüfung hatten.
Der Anruf wurde aber NICHT angenommen, sondern das "läuten" alleine hat mir als check gereicht.
Wenn der Anruf reinkam wurde eine Datei in einem Ordner erzeugt, welche beim nächsten Rausrufen wieder gelöscht wurde.
Die Batchdatei (Dial Out) wurde alle 5 Minuten aufgerufen.
Wenn die Datei länger als 10 Minuten "weg" war, dann hat unser Monitoring benachrichtigt.

Problem war aber das der SIP Provider sich beschwerte dass wir damit "aktiven Missbrauch" betreiben.
Daraufhin wurde der SIP Provider gewechselt und das Problem war auch "weg"....

Referenz:
 
An beiden Nebenstellen war (glaube ich) sipcmd als jeweils eigene instanz angemeldet.
Wenn du das mit einer 3CX hinbekommst (mit sipcmd an einer NSt. anmelden und einen Anruf tätigen und / oder entgegennehmen) und uns allen hier mitteilst wärst du ein ganz Großer.
 
Zuletzt bearbeitet:
Hallo nochmal!
als ich habe es soeben mit Phonerlite und tSIP getestet.
Ich kann da problemlos an meiner 3CX Anmelden und ein/ausgehend Telefonieren.

Account:
3CX Nebenstellennummer ist Benutzername und Passwort ist unter 3CX Telefon-Provisionierung von mir angegeben.


Rauswählen über Kommandozeile:

phonerlite.exe callto:+437248645342899
Eingehender Anruf wird über die Funktion "externe Applikation" signalisiert und schreibt mir die Nummer mit Zeitstempel brav weg.

@ECHO OFF SET DIR=Notizen SET NOTIZ=%DIR%\%1 %2.txt SET ANRUFER=%1 ECHO Neuer Anruf von %ANRUFER% >>"%NOTIZ%" ECHO am %date:~0%, %time:~0,8% Uhr >>"%NOTIZ%" ECHO.>>"%NOTIZ%" ECHO.>>"%NOTIZ%" START C:\WINDOWS\notepad.exe %NOTIZ% SET NOTIZ= SET ANRUFER= SET DIR= /ICODE] (Quelle dieses Beispielscripts ist Phoner selbst)
 
hey , danke für die vielen Vorschläge
Das ist ja mal Geil.
Die Variante mit Phonerlite und tsip?? (hmm, kenne ich nicht)
gefällt mir am besten, man braucht bei der Kunden 3Cx nicht allzuviel ändern und am braucht keine 2.te 3cx
 
ahh ,mit externen App,ist der " notepad" aufruf gemeint...
 

Statistik des Forums

Themen
44.773
Beiträge
233.700
Mitglieder
78.504
Neuestes Mitglied
michael.wollert@boeppleba