Jump to content

Visualisierung von aktiver Nachtschaltung


Daniel Neuhoff

Recommended Posts

Hi allerseits,

 

ich habe die Anforderung eines Kunden vorliegen, analog zu klassischen Telefonanlagen, eine aktivierte Nachtschaltung an den IP-Endgeräten zu visualisieren.

Im klassischen Sinne steht z.B. "Nachtschaltung" im Display, sobald diese aktiv ist, oder aber eine LED leuchtet.

 

Wurde so etwas schon einmal realisiert oder welche Ansätze würde man hier verfolgen?

Von hinten durch die Brust ins Auge gedacht müsste ich ja bei aktiviertem Night Switch (soweit bekannt) dafür sorgen, dass global bei allen betroffenen Usern ein Parameter in der Datenbank dafür sorgt, dass z.B. eine Taste aktiv wird (von mir aus auch eine Umleitung aktiviert/sichtbar) oder den PhoneManager den Telefonen signalisiert, dass im Display eine Information erscheint; soweit die Theorie... weiter komme ich bis dato aber nicht. :-/

 

Dem Kunden genügt also ein Feedback bei Aktivierung, wie eine Ansage etc., leider nicht, sondern es sollte sichtbar sein für jeden, ob die Nachtschaltung aktiv ist.

 

Danke vorab für Eure Ideen & Vorschläge!

Link to comment
Share on other sites


  • Most Valued User

Also mit visualisieren wird denke schwer, was ich mir Vorstellen könnte per Powershell an allen Telefonen eine Rufumleitungen zu einem Internen Teilnehmer mit dem Namen "Nachtschaltung" und dort das passende CallRouting hinterlegen. 

 

Link to comment
Share on other sites


  • Most Valued User

Hallo Daniel,

 

sollte der Kunde nur Systemtelefone (SwyxPhones) im Einsatz haben, dann könnte man die Leitungstasten zur Signalisierung "missbrauchen".

Eine Taste als Leitungstaste konfigurieren, die der Benutzer nicht benutzt - hier könnte dann via SDK die Leitungssperre getoggelt werden. Sobald die Leitungstaste gesperrt ist, blinkt/leuchtet die LED.

 

Anbei die Togglesteuerung:

private void ApplyLeitungstasteToggle(string username)
{
	var cds = libManager();
	var userEnum = cds.GetUserEnum();

	userEnum.ExecuteNameFilter(username, new SWConfigDataClientLib.Data.OrderByList());
	var useritem = userEnum.PrimaryCollection.CreateSortableFilterCollection().FirstOrDefault();

	if (useritem == null)
	{
		return;
	}

	var phoneClientFacade = cds.GetPhoneClientFacade();
	var ucd = phoneClientFacade.GetUserConfigData(useritem.UserID);

	// Linekeys befinden sich im BLOB - Lib IpPbxBlob32 einbinden
	UserSettings blob = new UserSettings();
	blob.SetBLOB(ucd);
	var linekeySettings = blob.m_LineKeySettings;

	// Leitungstastenindex 0 = Leitungstaste 1
	// Leitungstastenindex 1 = Leitungstaste 2
	// ...
	if (linekeySettings[2] != null)
	{
		if (linekeySettings[2].LineDisabled == 1)
		{
			linekeySettings[2].LineDisabled = 0;
		}
		else
		{
			linekeySettings[2].LineDisabled = 1;
		}
	}
	// Save Blob Change
	ucd = blob.GetBLOB();
	phoneClientFacade.SetUserConfigData(useritem.UserID, ucd);

	//Freeing
	phoneClientFacade.FreeForReuse();
	userEnum.FreeForReuse();
	cds.FreeForReuse();
}

Viel Erfolg

Link to comment
Share on other sites


Hallo und danke für die Vorschläge.

 

@ogoettlich

Dein Ansatz gefällt mir sehr gut und ich habe versucht ihn umzusetzen, mein Skript bleibt aber direkt bei der Funktion hängen:

 

~Code:   0
~Src:    Kompilierungsfehler in Microsoft VBScript
~Desc:   Anweisungsende erwartet
~RetVal: 800a0401
~Line:   15966
~Column: 13
~Source code:
~private void ApplyLeitungstasteToggle()
~             ^ error position

 

Da mir leider die wesentlichen Kenntnisse in VB fehlen, kann ich mir hieraus nicht zusammenreimen, wo der Fehler liegen könnte.

Ich habe die Funktion in den Startblock eingebaut ( private void ApplyLeitungstasteToggle() [...] ) und später aufgerufen mit einem Testbenutzer, offenbar liegt der Fehler aber im Startblock.

 

Gruß, Daniel

Link to comment
Share on other sites


  • Most Valued User

Hallo Daniel,

 

für das Beispiel benötigst du das CDS SDK, schau mal hier. Die C# Konsolenanwendung auf dem Server hinterlegen und per Call Routing (VB Block) aufrufen.

 

Dim shell
Set shell = CreateObject("WScript.Shell") 
shell.Run "C:\PfadZur\Konsolenanwendung.exe"

 

Link to comment
Share on other sites


Hallo ogoettlich,

 

danke für die Info, nun habe ich zumindest das Prinzip verstanden.

Falls das nicht rüberkam: Ich bin kein Softwareentwickler und habe kaum programmiertechnische Kenntnisse, daher fällt mir die Einrichtung entsprechend schwer.

Wenn ich es richtig verstehe, muss ich mir zunächst eine C#-Konsolenanwendung mit z.B. Visual Studio erstellen und dort Deine Funktion einbauen.

Wo werden aber die im CDK enthaltenen, notwendigen Dateien referenziert, bzw. wo gebe ich diese an, ebenfalls beim Erstellen der Anwendung?

Vermutlich sind das für versierte Menschen triviale Fragen, aber das ist halt nicht mein Tagesgeschäft, da klang Dein Vorschlag zunächst einfacher, als es für mich umzusetzen ist.

 

Gruß, Daniel

Link to comment
Share on other sites


Hallo noch mal,

 

nachdem ich mich eine Weile mit dem Thema auseinandergesetzt habe, bin ich nun dazu übergegangen einen anderen Weg zu wählen, der mit weniger Programmierkenntnis machbar war.

Den Aufruf einer PowerShell-Datei, die die Standard-Umleitung setzt, im VB-Code hinterlegt hat mir nun geholfen; auch hier konnte ich eine Taste belegen.

Evtl. gibt es auch in der PowerShell die Möglichkeit, eine Leitung zu sperren, die o.g. Lösung war allerdings recht einfach zu finden.

 

Danke dennoch für die Hilfe!

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.