Zusammenfassung:
Dieser Artikel beschreibt das PBXConfig Objekt welches im Extended Call Routing dazu genutzt werden kann Konfigurations- und Benutzerstatusinformationen vom SwyxServer abzufragen. Das Objekt steht innerhalb des Call Routings aber auch jeder externen Applikation über seine COM/DCOM Schnittstelle zur Verfügung.
Information:
Das Server Script API von SwyxServer (seit SwyxWare v4.40) unterstützt ein Objekt, PBXConfig, welches auf folgende Weise erzeugt wird:
dim oPBXConfigset oPBXConfig = PBXScript.CreateObject("IpPBxSrv.PBXConfig")oPBXConfig.Initialize PBXUser
Der Aufruf der Initialize Methode ist unbedingt nötig, damit alle Funktionen dieses Objektes zur Verfpgung stehen. Dieses Objekt bietet die folgenden Eigenschaften (nur Lese-Zugriff)
CountryCodeAreaCodePublicAccessPrefixLongDistanceCallPrefixInternationalCallPrefixNumberRangeStartNumberRangeEndNonDeliverableCallsNumber
Diese Eigenschaften entsprechen der Serverkonfiguration, wie sie über die Server-Eigenschaften der SwyxWare-Administration eingestellt werden können. Zusätzlich bietet PBXConfig die Methode GetUserByAddress.
dim oUsersset oUsers = oPBXConfig.GetUserByAddress("101")
Diese Funktion liefert eine Liste von PBXUser Objekten, die die angegebene Adresse (Beispiel: 101) haben. Ist die Adresse eine interne Nummer, ein Benutzername, ein H.323 Alias oder eine SIP UserID enthält die zurückgegebene Liste den zugehörigen Benutzer. Ist die Adresse eine Gruppenrufnummer oder ein Gruppenname, enthält die Liste alle Gruppenmitglieder.
Die Liste ist eine übliche VBScript-Kollektion, die z.B. auf folgende Weise benutzt werden kann:
dim oUserfor Each oUser in oUsers' use user object herenext
Das PBXUser Objekt hat folgende Eigenschaften (nur Lesezugriff):
UserIDNameEMailAddressDataFolderStateNumbers
Ab SwyxWare v6.0 bietet das Objekt zusätzlich folgende änderbare Eigenschaft:
NumberOfNewVoicemails
Diese Eigenschaft liefert die Anzahl ungelesener Voicemails des Benutzers, so wie sie in der SwyxWare Datenbank steht. Hinweis: Dieser Wert wird nicht verändert, wenn der Benutzer seine Voicemails mit seinem EMail-Programm direkt abruft, sondern nur, wenn er die Fernabfrage benutzt oder im SwyxIt oder auf dem Telefon die Voicemail-Taste benutzt.
Die ersten vier Eigenschaften sind selbsterklärend, State kann folgende Werte haben:
' user state not availableUserStateUnavailable = 0' user is logged offUserStateLoggedOff = 1' user is logged onUserStateLoggedOn = 2' user is speaking, at least one call has an external origination' or destinationUserStateSpeakingExternal = 3' a call is currently alerting at one of the user's devicesUserStateAlerting = 4' user is speaking, none of the calls has an external origination' or destinationUserStateSpeakingInternal = 5' user is away (ab SwyxWare 2011)UserStateAway = 6' user has do not disturb status (ab SwyxWare 2011)UserStateDoNotDisturb = 7
Beachten Sie, dass die Statussignalisierung zwischen dem Benutzer dessen Status abgefragt werden soll und dem Benutzer unter dem das aktuelle Skript läuft konfiguriert sein muss (genau wie im SwyxIt!). Wird das PBXConfig Objekt von einer externen Anwendung instantiiert, so muss für die funktionierende Statusabfrage der Windowsbenutzer unter dem diese Anwendung läuft Mitglied der Gruppe der SwyxWare Administratoren auf dem SwyxServer sein.
Numbers ist eine VBScript Kollektion, die alle Nummern enthält, die dem Benutzer zugewiesen sind.
dim ndim szNumbersszNumbers = ""for Each n in oUser.Numbers if szNumbers="" then szNumbers = n else szNumbers = szNumbers & ", " & n end ifnextPBXScript.OutputTrace "Numbers: " & szNumbers
Ab v6.0x unterscheidet die SwyxWare zwischen internen und externen Nummern eines Benutzers. Die numbers Kollektion enthält die internen Nummern. Es besteht keine Möglichkeit die konfigurierten externen Nummern im Script abzufragen.
Eine Nummer die im globalen Telefonbuch unterdrückt wird, wird auch nicht der numbers Kollektion hinzugefügt.
Ein vollständiges Codebeispiel zum Ausprobieren, z.B. im Insert-Script-Block einer GSE-Regel:
dim oPBXConfigset oPBXConfig = PBXScript.CreateObject("IpPBxSrv.PBXConfig")oPBXConfig.Initialize PBXUser'' server properties'PBXScript.OutputTrace "CountryCode: " & oPBXConfig.CountryCodePBXScript.OutputTrace "AreaCode: " & oPBXConfig.AreaCodePBXScript.OutputTrace "PublicAccessPrefix: " & oPBXConfig.PublicAccessPrefixPBXScript.OutputTrace "LongDistanceCallPrefix: " & oPBXConfig.LongDistanceCallPrefixPBXScript.OutputTrace "InternationalCallPrefix: " & oPBXConfig.InternationalCallPrefixPBXScript.OutputTrace "NumberRangeStart: " & oPBXConfig.NumberRangeStartPBXScript.OutputTrace "NumberRangeEnd: " & oPBXConfig.NumberRangeEndPBXScript.OutputTrace "NonDeliverableCallsNumber: " & oPBXConfig.NonDeliverableCallsNumberPBXScript.OutputTrace "VoicemailFromAddress: " & oPBXConfig.VoicemailFromAddressdim oStatusset oStatus = oPBXConfig.StatusPBXScript.OutputTrace "LoggedInDevicesCOM : " & oStatus.LoggedInDevicesCOMPBXScript.OutputTrace "LoggedInDevicesPhone : " & oStatus.LoggedInDevicesPhonePBXScript.OutputTrace "LoggedInDevicesH323 : " & oStatus.LoggedInDevicesH323PBXScript.OutputTrace "LoggedInDevicesConferenceMgr : " & oStatus.LoggedInDevicesConferenceMgrPBXScript.OutputTrace "LoggedInDevicesSIP : " & oStatus.LoggedInDevicesSIPPBXScript.OutputTrace "ActiveInternalCalls : " & oStatus.ActiveInternalCallsPBXScript.OutputTrace "ActiveExternalCalls : " & oStatus.ActiveExternalCallsPBXScript.OutputTrace "MaxLoggedInDevicesCOM : " & oStatus.MaxLoggedInDevicesCOMPBXScript.OutputTrace "MaxLoggedInDevicesPhone : " & oStatus.MaxLoggedInDevicesPhonePBXScript.OutputTrace "MaxLoggedInDevicesH323 : " & oStatus.MaxLoggedInDevicesH323PBXScript.OutputTrace "MaxLoggedInDevicesConferenceMgr : " & oStatus.MaxLoggedInDevicesConferenceMgrPBXScript.OutputTrace "MaxLoggedInDevicesSIP : " & oStatus.MaxLoggedInDevicesSIPPBXScript.OutputTrace "MaxActiveInternalCalls : " & oStatus.MaxActiveInternalCallsPBXScript.OutputTrace "MaxActiveExternalCalls : " & oStatus.MaxActiveExternalCallsPBXScript.OutputTrace "LoggedInUsers : " & oStatus.LoggedInUsersPBXScript.OutputTrace "MaxLoggedInUsers : " & oStatus.MaxLoggedInUsers''get users or group members'dim oUSers' You can use user phone numbers, group numbers, user names or group names as' parameter hereset oUsers = oPBXConfig.GetUserByAddress("101")dim oUserfor Each oUser in oUsers PBXScript.OutputTrace "User: " & oUser.UserID PBXScript.OutputTrace "Name: " & oUser.Name PBXScript.OutputTrace "EMailAddress: " & oUser.EMailAddress PBXScript.OutputTrace "Folder: " & oUser.DataFolder ' The following state values are defined ' UserStateUnavailable = 0 ' UserStateLoggedOff = 1 ' UserStateLoggedOn = 2 ' UserStateSpeaking = 3 (external) ' UserStateAlerting = 4 ' UserStateSpeakingInternal = 5 (internal) ' UserStateAway = 6 (ab SwyxWare 2011) ' UserStateDoNotDisturb = 7 (ab SwyxWare 2011) PBXScript.OutputTrace "State: " & oUser.State dim n dim szNumbers szNumbers = "" for Each n in oUser.Numbers if szNumbers="" then szNumbers = n else szNumbers = szNumbers & ", " & n end if next PBXScript.OutputTrace "Numbers: " & szNumbersnext
Kommentare
0 Kommentare
Zu diesem Beitrag können keine Kommentare hinterlassen werden.