Jump to content

Endgeräte per VisualBasic feststellen


Mathias Gindler

Recommended Posts

Hallo zusammen,

 

ich suche gerade eine Möglichkeit, die für einen Benutzer (oder genauer: für alle Benutzer innerhalb einer Gruppe) angemeldeten Endgeräte innerhalb eines Callroutings per VisualBasic festzustellen. Für Powershell hab ich da mal was gefunden, aber eben nicht für VB.

Wäre nett, wenn mir da vielleicht jemand auf die Sprünge helfen könnte....

 

Als "Endziel" möchte ich sehen, ob in einer Gruppe mindestens ein Benutzer ein aktives SwyxIt angemeldet hat.

 

Vielen Dank!

 

Mathias

Link to comment
Share on other sites


Da gibt es leider keine Schnittstelle, die Du von VBScript (also von innerhalb des Call Routings) ansprechen kannst.

 

Du könntest jetzt natürlich auf die Idee kommen, ein Power Shell Skript vom Call Routing aus zu starten. Das ist aber je nach Rufaufkommen auf Deinem Skriptbenutzer keine gute Idee, da Dir ein solcher Aufruf jedesmal ca. 50 MB Speicher belegt (das SwyxWare Power Shell Modul lädt den "Config Data Store Client", der diese Größe hat). Damit kannstDu Dir evtl. andere Probleme einhandeln.

Link to comment
Share on other sites


Hallo Tom,

 

vielen Dank für die Antwort. Das mit dem Speicherbedarf bei PS hab ich bereits in einem anderen Thread mitbekommen :-(

Da es sich hier um die Zentrale-Gruppe handelt, wäre das also wirklich kein guter Gedanke.

Hast du (oder jemand anderes) vielleicht eine andere brauchbare Idee? Wäre evtl. mit einem (readonly)-Zugriff auf die Datenbank was zu machen?

 

Hintergrund ist (s.a. anderer Thread), dass unser Kunde eine DECT700 einsetzt und diese Teilnehmer dauerhaft angemeldet bleiben, auch wenn die Endgeräte selbst ausgeschaltet sind. Da die PCs auch aus sind und somit kein SwyxIt läuft, habe ich auch keinen "abwesend"-Status und das Call Routing läuft in's Nirwana, da Swyx der Meinung ist, dass ja Geräte angemeldet sind (eben die DECT)

Link to comment
Share on other sites


Wenn Du pro Benutzer das SwyxIt! also "Logon Status" führendes Gerät konfigurierst, und dann vom Call Routing aus den Status des Benutzers abfragst, bekommst Du ein "abgemeldet" zurück, wenn das SwyxIt! des Benutzers abgemeldet ist, unabhängig davon, was noch an anderen Geräten ggf. auf dem Benutzer angemeldet ist.

 

Den Status eines Benutzers kannst Du hier ermitteln:

 

https://www.swyxforum.com/topic/2926-ruf-weiterleitung-wenn-nicht-besetzt/?do=findComment&comment=7868

 

Du musst dann allerdings den Ruf quasi anschliessend von Hand an einen ausgewählten Benutzer zustellen, und nicht mehr an die Gruppe.

 

Link to comment
Share on other sites


hallo zusammen,

 

ich habe inzwischen zumindest einen Workaround gefunden (man lernt nie aus...):

wichtigste Erkenntnis: der Status des Benutzers wird entweder manuell über SwyxIt oder über an-/abmelden von Geräten, die bei den Endgeräte-Typen angehakt sind

Da der SIP-Benutzer dauerhaft angemeldet ist; GEÄNDERT. Dieser Status wird gecached, bis eine erneute Änderung erfolgt

 

Daraus folgt:

SwyxIt und SwyxPhone aus der Endgeräte-Liste herausnehmen und nur das SIP-Gerät aktivieren. Da dieses i.d.R. dauerhaft angemeldet ist, ändert dieses auch den Status nicht.

Somit kann man in SwyxIt den Status auf Abwesend setzen und es anschließend beenden/PC herunterfahren. Der Status bleibt auf dem gecacheten (blödes Wort!) Wert.

 

Jetzt muss ich den Usern "nur noch" die Aufgabe abnehmen, den Status vor dem Herunterfahren manuell auf Abwesend zu stellen...

Link to comment
Share on other sites


Hallo,

 

ich hab jetzt was zusammengebastelt (bestehend aus diversen Codes von Tom u.a. - Vielen Dank!) und in meiner Test-Umgebung sieht es schon mal gut aus:

    '----------------------------------------------------------------
    ' GroupAvailable
    '
    ' prüft, ob mindestens 1 Mitglied der Gruppe angemeldet ist (abhängig von konfigurierten Endgeräten)
    '
    ' Parameter
    '     sGroup        name or number of group
    '
    ' Return
    '     boolean  
	'
	'
	' basiert auf IsAtLeastOneMemberOfGroupBusy
    '----------------------------------------------------------------
    Function GroupAvailable(ByVal sGroup)
     
        PBXScript.OutputTrace "-------------> GroupAvailable ( sGroup: " & sGroup & " )"
     
        Dim bReturn
        bReturn = false
     
        On Error Resume Next
     
        Dim oPBXConfig
        Set oPBXConfig = CreateObject("IpPBxSrv.PBXConfig")
        oPBXConfig.Initialize(PBXUser)
     
        Dim oUsers
        Set oUsers = oPBXConfig.GetUserByAddress(sGroup)
     
        If Err <> 0 Then
            PBXScript.OutputTrace "Empty group!"
        Else
            Dim oUser
            For Each oUser In oUsers
                PBXScript.OutputTrace "State of user " & oUser.Name & ": " & oUser.State
				select case oUser.State
					case 1 ' Logged off (keine Änderung)
					case 2 ' Logged On (no speaking)
						bReturn = true
					case 3 ' Speaking External
						bReturn = true
					case 4 ' Alerting (keine Änderung)
					case 5 ' Speaking Internal
						bReturn = true
					case 6 ' Away (keine Änderung)
					case 7 ' Do not Disturb (keine Änderung)
				end select
			Next
        End If
     
        oUsers = Nothing
        oPBXConfig = Nothing
     
        GroupAvailable = bReturn
     
        PBXScript.OutputTrace "<------------- GroupAvailable ( return: " & CStr(bReturn) & " )"
     
    End Function

 

Beim Kunden brauchen wir nur noch einen Neustart am WE, damit die Registry-Werte (SkipGroupCallMembersWithActiveAway) greifen, dann kann ich das Ganze im Echtbetrieb testen und Rückmeldung geben.

 

Schönes Wochenende :-)

Link to comment
Share on other sites


Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.