Blog

Technische Informationen rund um das Thema Modernes Arbeiten

Monat: August 2019

Screen sharing in Teams/Skype for Business interop

Eine neue Ankündigung in der Office 365 Roadmap: Microsoft wird “Screen sharing in Teams/Skype for Business interop” in den nächsten Wochen bereitstellen.

We will be rolling out to GCC customers soon.
[…]
We’ll be rolling this out to customers in mid-August. The rollout will be complete by the end of August.

Dabei handelt es sich um eine Anpassung, welche das Zusammenspiel zwischen Microsoft Teams und Skype for Business erweitert. Sie bedeutet, dass reine Teams-Benutzer in der Lage sein werden, Ihren Desktop Benutzern von Skype for Business und externen Teilnehmern in Chats und Calls teilen zu können.

Enables a Teams user to share their screen in chat or VoIP call with a Skype for Business user

Links:

UWP: dynamische Grids mit c#

UWP: dynamische Grids – dieses Mal wieder eher ein sehr technisches Thema. Eigentlich wollte ich mal nur ganz kurz etwas ausprobieren. Doch dann fing die Suche an: wie erstellt man in einer Universal Windows Platform App eigentlich ein dynamisches Grid. 

Ziel war es, ein Formular mit folgendem Aussehen zu erhalten: 

Da ich das Formular aus einer Steuerdatei aufbauen wollte, waren die Parameter wie Textfeld-Inhalt, Inhalt von Frage 1 – 4 sowie der Yes/No-Buttons nicht von Anfang an definiert. Daher entschied ich mich, das Grid dynamisch mit C# aufzubauen.

Ich habe dazu viele Artikel gefunden. Letztendlich musste ich aber immer wieder feststellen, dass der letzte – wahrscheinlich entscheidende – Schritt fehlte. 

Hier meine Erkenntnisse:

Aufbau des Grids:

Grid gGrid = new Grid();
// Grid-Eigenschaften
gGrid.Width = 1000;
gGrid.Height = 700;

Anlage der Spalten:

ColumnDefinition spalte1 = new ColumnDefinition();
ColumnDefinition spalte2 = new ColumnDefinition();
ColumnDefinition spalte3 = new ColumnDefinition();

spalte1.Width = new GridLength(0, GridUnitType.Auto);
spalte2.Width = new GridLength(0, GridUnitType.Auto);
spalte3.Width = new GridLength(1, GridUnitType.Auto);

gGrid.ColumnDefinitions.Add(spalte1);
gGrid.ColumnDefinitions.Add(spalte2);
gGrid.ColumnDefinitions.Add(spalte3);

Aufbau der Zeilen

Nach der Definition der Zeilen habe ich mich an den Aufbau der Zeilen gemacht. Die Anzahl der Zeilen wurden durch die Steuerdatei festgelegt.

Wenn man nach UWP und dynamische Grid sucht, findet man wenig über die Anlage von Zeilen. Dies war meine Lösung für die Anlage von Zeilen (in dem Beispiel die Anlage von 2 Zeilen)

var tabellenZeile1 = new RowDefinition();
tabellenZeile1.Height = GridLength.Auto;
gGrid.RowDefinitions.Add(tabellenZeile1);

var tabellenZeile2 = new RowDefinition();
tabellenZeile2.Height = GridLength.Auto;
gGrid.RowDefinitions.Add(tabellenZeile2);

Füllen mit Inhalten

Nun ging es darum, die Zeilen mit Inhalt zu füllen. Meine Elemente (wie im Screenshot gezeigt) waren:
1. ein Textfeld
2. ein Radiobutton z. B. mit “Yes”
3. ein Radiobutton z, B, mit “No”

Das Textfeld (qKatalog ist eine Liste, die den Inhalt der eingelesenen Rohdaten enthält): 

Tb_Answer1.Text = qKatalog[iPos].answer1;
Tb_Answer1.Width = 774;
Tb_Answer1.HorizontalAlignment = HorizontalAlignment.Left;
Tb_Answer1.Margin = new Thickness(10);

Radiobuttons

Danach werden die beiden Radio-Buttons erzeugt und einer Gruppe zugeordnet:

RadioButton RB_Y1 = new RadioButton();
RadioButton RB_N1 = new RadioButton();

RB_Y1.Content = qKatalog[iPos].lText1;
RB_Y1.GroupName = "YN1";
RB_Y1.HorizontalAlignment = HorizontalAlignment.Left;

RB_N1.Content = qKatalog[iPos].lText1;
RB_N1.GroupName = "YN1";
RB_N1.HorizontalAlignment = HorizontalAlignment.Left;

Anordnen im Grid

Nun kommt ein wichtiger Schritt, der in vielen Beschreibungen gefehlt hatte: 

gGrid.Children.Add(Tb_Answer1);
gGrid.Children.Add(RB_Y1);
gGrid.Children.Add(RB_N1);

Damit sind die Elemente dem Grid zugeordnet. 

Anschließend müssen die Inhalte “nur” noch den entsprechenden Zeilen und Spalten zugeordnet werden:

Grid.SetRow(Tb_Answer1, 0);
Grid.SetRow(RB_Y1, 0);
Grid.SetRow(RB_N1, 0);

Grid.SetColumn(Tb_Answer1, 0);
Grid.SetColumn(RB_Y1, 1);
Grid.SetColumn(RB_N1, 2);

Das bedeutet, dass die Elemente der Zeile (SetRow) 0 zugeordnet wurden. Danach werden Tb_Answer1 in die Spalte 0, RB_Y1 in die Spalte 1 und RB_N1 in die Spalte 2 platziert.  

Danach müssen eigentlich nur noch die weiteren Zeilen mit Inhalt gefüllt werden.

 

Die genutzten Quellen: 

 

PowerApps

PowerApps ist eine Suite von Apps, Diensten, Connectors und einer Datenplattform für eine schnelle Entwicklungsumgebung für Anwendungen, mit der Sie benutzerdefinierte Apps entsprechend Ihren Geschäftsanforderungen erstellen können. Mit PowerApps können Sie schnell benutzerdefinierte Geschäfts-Apps erstellen, die Sie mit Ihren Geschäftsdaten verbinden können. Der Speicherort dieser Daten kann entweder die zugrunde liegende Datenplattform sein (Common Data Serviceoder verschiedene Online- oder lokale Datenquellen (SharePoint, Excel, Office 365, Dynamics 365, SQL Server usw.).

PowerApps hat sich inzwischen zu einem mächtigen Tool entwickelt,  und macht es leicht, Dinge in Office 365 zu automatisieren. In Verbindung mit weiteren Tools wie Flow und BI entstehen einfach zu erstellende (low Business Werkzeuge. 

Neu in der Familie (seit Juni 2019) nun auch das Thema AI Builder, mit dem nun auch AI in die Powerplattform Einzug gehalten hat.

Es ist inzwischen viel Material rund um PowerApps verfügbar – eine Auswahl (hauptsächlich Videos von unterschiedlichen Veranstaltungen) habe ich im Folgenden zusammengestellt.

Grundinformationen:

Für den Entwickler:

Microsoft PowerApps und Microsoft Flow

PowerApps und PowerBI

  •  

AI Builder

PowerApps Portal

PowerApps “in 10 Minutes”

Kaizala und Microsoft Teams

Bereits im April 2019 hatte Microsoft angekündigt, dass Kaizala und Microsoft Teams zusammenwachsen werden. Ende Juni nun wurden die Pläne detaillierter kommuniziert:

We will be adding Kaizala Pro capabilities to Teams over the next 12-18 months, ultimately replacing the Microsoft Kaizala service and making Microsoft Teams the primary client in Office 365 and Microsoft 365 for communication with both internal employees and people in your extended networks. 

Bereits heute taucht Kaizala in den Apps von Office 365 auf.

Der Link führt zum Konfigurationsportal von Kaizala.

Kaizala ist – wenn man es einfach beschreiben möchte – ein Instant Messenger (vergleichbar mit Whatsapp) mit erweiterten Features. 

Kaizala ist eine mobile Chat-basierte Kommunikation-Plattform, die Ihre Mitarbeiter der ersten Zeile mit der Information Worker am Arbeitsplatz modernen verbindet. Kaizala erleichtert es eine Verbindung herstellen und mit nicht nur Ihre Mitarbeiter dar, sondern auch mit Ihrer Mitglieder, Kunden und Verteiler zu koordinieren. Hiermit können Sie effizient verwalten der Arbeit oder Sammeln von Daten von Personen oder große Gruppen, selbst wenn sie nicht in Ihrer Organisation sind.

Spannend wird hier sicher, dass Kaizala auch eine Api bietet, die es Entwicklern ermöglicht, die Plattform zu erweitern. 

The first set of Kaizala Pro capabilities will be available in Teams by the end of calendar year 2019 and includes Kaizala Actions as built-in apps in Teams, such as checklist, training, and quiz.

Weiterführende Links:

Multi-Tenantzugriff in Microsoft Teams

Multi-Tenantzugriff in Microsoft Teams ist ein Thema, das mich immer häufiger beschäftigt hat. Zum einen hat man in Projekten mit Partnern immer wieder die Herausforderung, dass man dort eingeladen in ein Team eingeladen wird. Der Gastzugriff ist dann nicht immer die optimale Lösung. Ich habe für mich aber auch das Thema entdeckt, als es darum ging, einen Team-Bereich aktiv zu halten, der einem meiner Test-Tenants zugeordnet war. Hier war ich am Testen einer APP und bekam während der Fehlerbehebung immer wieder Nachrichten, die ich nicht aus den Augen verlieren wollte. 

Bei der Suche im Web bin ich auf unterschiedlichste Lösungen gestoßen. 

Der erste Ausgangspunkt war die Diskussion, dass dies ein unabdingbares Feature für Microsoft Teams ist. Er beinhaltet einen Link auf den Bereich “Uservoice” des Microsoft Teams-Team. Hier wurde am 03.07.2019 eine erste Lösung angekündigt: 

Daneben findet man Beiträge, die sich mit dem Guest Access beschäftigen. Umfänglich passiert das zum Beispiel in einem Blogeintrag von Dominik Kent

Immer wieder trifft man auf Franz als Lösung. Diese hat aber – da hier hauptsächlich über Web gearbeitet wird – auch die Einschränkungen des Webzugriffs. 

Mein Ausgangspunkt war die Lösung, die in diesem Artikel diskutiert wird. Hier geht es um 2 Dinge: 1. es wird ein weiterer (oder mehrere) lokale Benutzer auf dem Rechner angelegt und anschließend über “Als anderer Benutzer ausführen” der Starter für Teams ausgeführt. Der Artikel beschränkt sich mehr auf die “Step by step”-Anweisung. Die kann an dieser Stelle von Administratoren gut herangezogen werden. 

Sie besagt im Wesentlichen: lege ein neues Profil auf dem Rechner an (

Nachdem der Benutzer angelegt ist (es reicht einen “einfachen” Benutzer anzulegen), muss man sich am Gerät mit dem Benutzer einmalig anmelden. Im ersten Schritt installiert man Microsoft Teams unter diesem Benutzer. Danach startet man aus der Command-Shell den folgenden Befehl:

C:\Users\MSTeams\AppData\Local\Microsoft\Teams\Update.exe –processStart “Teams.exe”

Bitte “MSTeams” im angegeben Pfad durch den Profilenamen des Benutzers ersetzen. (z. B. C:\Users\MarkusWE\AppData\Local\Microsoft\Teams\Update.exe –processStart “Teams.exe”)

Anschließend wechselt man wieder den Benutzer und wechselt in sein eigenes Profil zurück. 

Hier wird es nun spannend. Anders als im Artikel dargestellt, konnte ich nicht sofort das zweite Profil nutzen – ich bekam regelmäßig Fehlermeldungen, dass der Zugriff auf das Default-Profil 

nicht möglich sei (Zugriff verweigert). Eine Kontrolle ergab, dass a) das Verzeichnis nicht existierte und b) der lokale Benutzer keinen Zugriff darauf hatte. Ich habe das Verzeichnis dann angelegt. Danach klappten auch die weiteren Vorschläge wie im Artikel beschrieben. 

Da man nun nicht immer Lust hat, sich durch CMD und “Als anderer Benutzer ausführen” quälen möchte, habe ich für mich eine kleine Anwendung angelegt, die über eine XML – Datei gesteuert dann in der Lage ist, das Thema abzuarbeiten. Aktuell befindet sie sich noch im “Beta”-Test – ich werde sie aber in den nächsten Tagen dann hier auf dem Blog freigeben. 

Die erste Registerkarte hat nicht wirklich viele Element – sie startet nur die in einer XML Datei definierten Teams. Da die Daten in einer XML-Datei abgelegt werden, sollte das Passwort auf das Userprofil nicht im Klartext zu lesen sein. Daher wird das Passwort in verschlüsselter Form abgelegt. Die Verschlüsselung erfolgt auf der 2. Registerkarte.

Die XML-Datei sieht dann wie folgt aus: 

Ich denke, die Elemente sind leicht erklärt: 

  • Konto[x] ermöglicht die Ablage mehrerer Konten in der XML – Datei
  • Team ist eine frei gewählte Bezeichnung für das Team
  • Domain: legt die Domäne fest. Ist es der angemeldete Benutzer, entfällt der Eintrag, bei einem lokalen Benutzer wäre dann “.\” als Domäne zu wählen. 
  • User und Password: hier werden die entsprechenden Werte hinterlegt. Das Passwort wird verschlüsselt eingetragen.
  • Profile: hier handelt es sich eher um Bequemlichkeit – aber es beinhaltet den Pfad zur jeweiligen “Update.exe” von MS Teams im Profil des Benutzers (sie auch den oben besprochenen Artikel). Die Parameter sind ja immer gleich und werden daher nicht in der XML-Datei aufgeführt.

Sobald der Betatest abgeschlossen ist (und noch die letzten Feinheiten ausgebügelt sind, sollte ich die Anwendung freigeben können (falls daran Interesse besteht). 

Von Skype for Business zu Microsoft Teams

Es ist sicher eines der aktuell ganz oft diskutierten Themen: komme ich von Skype for Business zu Microsoft Teams durch. Die nachfolgend aufgeführten Videos erläutern den Vorgang aus der Sicht von Microsoft. 

Wie in Kommentaren angemerkt, handelt es sich offensichtlich um mitgeschnittene Webcasts, die nicht nachbearbeitet wurden. Damit ist die Audio-Qualität teilweise nicht optimal. 

Bandbreiten für Microsoft Teams, Exchange Online und Skype for Business

Das Thema welche Bandbreiten benötige ich für Microsoft Teams, Exchange Online und Skype for Business stellt sich in jedem Projekt. Microsoft hat schon sehr früh für diese Themen sogenannte Bandbreiten-Kalkulatoren zur Verfügung gestellt – allerdings ist es nicht immer einfach, diese zu finden. 

Bei Microsoft Teams versteckt sich diese Funktionalität inzwischen hinter dem Begriff Network Planner for Microsoft Teams – die Suchen nach Bandwidth Calculator läuft inzwischen ins Leere. Eine Beschreibung hierzu findet man im Artikel: Use the Network Planner for Microsoft Teams. Dort findet man auch den Link auf eine PPTX, die Schritt für Schritt die Nutzung erläutert. 

Auch für Skype for Business existiert ein Bandwidth Calculator. Hierbei handelt es sich um eine Excel Datei, die ausgefüllt werden muss. 

Für Exchange Online gibt es zwei gute Anlaufstellen. Zum einen findet man einen Artikel zum Thema “Network and migration planning for Office 365” (von Dean Suzuki). Zum anderen gibt es einen relativ alten Exchange Client Network Bandwidth Calculator (Exchange 2010!) zum Download in Technet. Dieser kann aber durchaus hilfreich dabei sein, die notwendige Bandbreite einzuschätzen. 

Wichtig dabei ist: Bei der Ermittlung der Bandbreite geht es nicht darum, ein Tool zu haben, in dem man auf einen Knopf drückt und das dann einen Wert ausspuckt – wie aus der PowerPoint zum Network Planner für Microsoft Teams aber auch aus dem Artikel zur Migration nach Office 365 deutlich wird, muss man selbst eine Reihe von Parametern beisteuern, um zu den richtigen Werten zu gelangen.

 

© 2019 Blog

Theme von Anders NorénHoch ↑