TSM - Crearea unui Microsoft Band Tile pentru a direcționa notificările de stare a construcției

Radu Vunvulea - Solution Architect

Anul trecut, Microsoft a lansat Microsoft Band 2. Este foarte puternic cu mulți senzori și o autonomie a bateriei care îmi oferă două zile de energie.

Privire generală

Dar ceea ce mă impresionează este partea de software și ușurința cu care poți dezvolta un tile (o aplicație custom) pentru acesta. Nu trebuie să înveți C# pentru că poți crea ușor un tile direct din browser.

Acesta îți va permite să obții conținut din web și să îl direcționezi spre tile-ul tău. În acest fel poți ușor integra aplicația ta în band! Rapid și ușor.

Un alt aspect grozav este modul cum pui în folosință și partajezi tile-urile. Nu este nevoie să le direcționezi în magazin, să le validezi și așa mai departe. Nu. Ești liber să partajezi tile cu oricine. Doar încarcă-l într-o locație specifică și partajează URL-ul cu prietenii tăi prin mail sau web. Telefonul poate detecta tile în mod automat și îl poate deschide utilizând aplicația Microsoft Band.

Informația este puterea

Pentru clienți, lucrul cel mai important este conținutul pe care îl afișezi în tile. Încearcă să te concentrezi pe conținutul pe care dorești să îl afișezi. Trebuie să identifici conținutul care poate îmbunătăți viața proprietarului de bandă.

Deoarece numărul de tile-uri pe care le poți instala pe bandă este limitat, ar trebui să ai în vedere faptul că acel client va păstra numai tile-urile cele mai importante, care îi aduc informațiile despre dispozitivul său de care are nevoie cu adevărat. Altfel, tile-ul tău va fi doar un alt tile, pe care nimeni nu îl utilizează sau nu îl păstrează mai mult de 5 minute.

Orice dezvoltator poate crea un tile și poate direcționa conținut spre Microsoft Band, în doar 2 sau 3 minute. Dar numai ideile bune și conținutul util vor ajunge pe dispozitivele clienților.

Echipa noastră

Fiecare dezvoltator din echipa din care fac parte a primit anul trecut un Microsoft Band 2. Am început să facem glume pe tema asta, cum că am multiplicat numărul de Microsoft Bands în Cluj-Napoca de aproape zece ori mai mult. Echipa nu este atât de numeroasă, dar la acel moment în Cluj-Napoca știam doar o singură persoană cu band.

Ideea

Am început să mă gândesc la ceea ce am putea face cu band-ul. În cele din urmă am ajuns la o soluție simplă, pe care o voi descrie de la un capăt la altul în partea care urmează în articolul meu.

Direcționarea notificărilor de modificare a statusului dezvoltării spre band

Ideea este simplă. Noi ne păstrăm codul sursă pe TFS Online (Visual Studio Online) și TFS 2015 la locație. Avem diferiți agenți de dezvoltare pe Azure și în rețeaua privată a companiei noastre (la locație) care construiesc soluția noastră, rulează teste pe unități, extrag diferiți parametri și pun în folosință aplicația în mod automat pe medii diferite. Scopul principal este să înștiințeze cât mai curând posibil echipa de dezvoltare de faptul că a picat construcția.

Privire de ansamblu asupra blocajelor și arhitecturii

Scopul principal este acela de a direcționa o notificare înspre band în momentul în care construcția eșuează. Ideea este simplă, dar avem nevoie să găsim o soluție pentru a putea să trimitem o notificare către band fără a trebui să înmagazinăm TFS User Credentials (Datele de identificare ale utilizatorului).

Nu există nicio modalitate de a depozita datele de identificare pe band și a cerceta serverul de control sursă. O soluție posibilă este să dezvoltăm o aplicație pentru telefon care să direcționeze aceste notificări. Dar, așteptați… noi nu suntem dezvoltatori de mobile și fiecare dintre noi avem tipuri diferite de telefoane - iPhone, Windows Phone și Android. S-ar putea să meargă, dar efortul de dezvoltare este prea costisitor. Am putea să scriem o aplicație mobile cross platform, dar până să o lansăm în magazin, se va pierde interesul și oportunitatea de moment.

RSS Feed (Intrare RSS)

O soluție mai simplă este să expunem un RSS feed / o intrare RSS cu notificările de modificare a statusului construcției. De fiecare dată, când se modifică starea construcției, un conținut nou va fi disponibil pe Serverul RSS. Tile-ul care rulează pe band va detecta noul conținut și va înștiința utilizatorul.

În acest moment am rezolvat numai o parte din problemă. Avem un punct terminal web care poate fi utilizat de către tile pentru a accesa o intrare RSS. Canalul de alimentare RSS poate fi folosit de către band pentru a obține notificările de modificare a statusului construcției.

Direcționarea notificărilor

Acum, noi trebuie să găsim o cale de a direcționa modificarea stării construcției de la serverul CI către aplicația noastră web. Acest lucru este puțin mai înșelător și vă rog să ignorați orice tip de probleme de securitate care vor fi doar menționate, nu și acoperite.

Pentru Visual Studio Team Services, problema poate fi rezolvată cu ușurință. Deoarece CI este disponibil publicului, noi trebuie să înregistrăm în aplicația noastră web un nume de utilizator și o parolă care să poată fi utilizată pentru a interoga starea construcției în legătură cu modificările.

Dar pentru serverul nostru CI de la locație, s-ar putea să avem o problemă. Serverul CI de la locație nu este disponibil publicului. Aceasta înseamnă că nu putem interoga serverul nostru pentru a verifica starea construcției de pe internet. Haideți să ne folosim imaginația.

Care este acțiunea implicită făcută de un server CI atunci când o construcție eșuează, cu excepția schimbării de culoare? Acțiunea cea mai obișnuită este să trimită un email unuia sau mai multor utilizatori. Aceasta este cheia noastră pentru a putea accesa o notificare de schimbare de status.

Aparatul CI va trimite o notificare către serverul nostru de mail. În mod normal, un Mail server este accesibil publicului de pe internet. Aplicația noastră web RSS va trebui să înregistreze datele de identificare pentru email.

Chiar dacă soluția va funcționa și ar putea fi utilizată cu succes, noi trebuie să avem în minte că:

Datele de identificare vor fi înregistrate de către Web App.

Informațiile confidențiale (Build Status) vor fi disponibile publicului pe un terminal web care poate fi utilizat de oricine.

Orice persoană care are tile-ul vostru va putea să vadă notificările de schimbare de status ale construcției (construcțiilor).

Toate aceste puncte trebuie să fie discutate cu grupul de securitate al companiei voastre. Nu ar trebui niciodată să implementați o astfel de soluție fără a avea acordul lor.

Implementarea

Notificarea prin email TFS

Soluția este aplicabilă pentru versiunea mai veche a TFS, de asemenea. Pașii și mostrele de mai jos sunt pentru Visual Studio Online și TFS 2015.

Va trebui să definiți o alertă care să trimită o notificare prin email în momentul în care calitatea construcției se modifică. În funcție de nevoile voastre, puteți utiliza același cont pentru a trimite notificări pentru construcții diferite.

Verificarea emailurilor noi

Există diferite biblioteci care te pot ajuta să îți accesezi serverul email. Tu ar trebui să decizi ce tip de bibliotecă vrei să folosești în funcție de tipul serverului email. Dacă utilizezi Outlook sau Exchange Server, atunci poate ai vrea să folosești biblioteca EWS. Pentru un cont Gmail, s-ar putea să ai nevoie de un client POP3 și un purser MIME precum OpenPOP.NET. În exemplul de mai jos, puteți vedea cum se poate primi un mesaj, folosind biblioteca OpenPOP.NET.

POPClient client = new POPClient();
client.Connect("pop.gmail.com", 995, true);
client.Authenticate("radu.vunvulea.sample\@gmail.com", "Hahaha");
var count = client.GetMessageCount();
Message message = client.GetMessage(count);

Subiectul poate fi accesat în felul următor: 'message.Headers.Subject'.

Expunerea notificărilor drept intrare RSS

Următorul pas este să expunem noile notificări drept intrări RSS. Acest lucru poate fi făcut în 10 minute, dacă utilizăm APIController. Nu avem nevoie să implementăm o intrare RSS și să dispunem în serie conținutul.

Acest lucru este sprijinit de ASP.NET MVC. Există chiar și un ActionResult special care este creat pentru acest scop - RssActionResult. La RssActionResult, noi trebuie să stabilim proprietatea "Feed" care este de tipul "SyndicationFeed".

public ActionResult BuildStatusRSS()

{
IEnumerable\ buildStatus = BuildStatusManager.GetAllByDate(8);

SyndicationFeed buildFeed = new SyndicationFeed("Build Status",
new Uri("http://www.raduvunvulea.com/buildStatus/RSS"),
Guid.NewGuid().ToString(),
DateTime.Now);

List\ buildStatusList = new List\();
foreach (BuildStatus bs in posts)
{
  string postUrl = string.Format("build\\\\build-entry-{0}", bs.Id);
  SyndicationItem buildStatus =
    new SyndicationItem(bs.Title,
    bs.Description,
    new Uri(postUrl),
    bs.Id,
    bs.Date);

  buildStatusList.Add(buildStatus);
}

buildFeed.Items = buildStatusList;
return new RssActionResult {Feed = buildFeed};

}

În exemplul de mai sus, am generat un RSS cu status al construcției. Clasa BuildStatus este o clasă custom în care se depozitează informațiile legate de o construcție specifică. Această clasă este populată pe baza emailurilor care sunt trimise de TFS atunci când statusul unei construcții se modifică.

Găzduirea aplicației noastre web

Putem găzdui aplicația noastră web drept o Web App în Azure. Nivelul gratuit va fi suficient pentru a ne juca puțin.

Url-ul aplicației mele web va fi asta. Statusul construcției va fi găsit pe hartă aici.

Crearea de Tile

Acesta este ultimul pas pe care trebuie să îl facem. Noi trebuie să creăm Microsoft Band Tile. Acest lucru va fi făcut direct din browser.

Următorii pași sunt destul de simpli; trebuie să specificați culori, icon-uri și alte astfel de lucruri. Odată ce am făcut asta, putem descărca tile pe computerul nostru local.

Publicarea tile

Cea mai simplă soluție pentru a publica tile este să îl încarci pe un sistem de partajare fișiere, precum OneDrive și să creezi un link de partajare.

Finalul

Și am sfârșit. Odată ce accesezi linkul la tile de pe telefonul tău, aplicația Microsoft Band se va deschide și vei putea direcționa tile-ul.

Concluzie

În acest articol am expus o soluție de la un capăt la altul legată de cum putem direcționa notificări pe Microsoft Band-ul nostru, fără a dezvolta o aplicație pentru telefon. Din perspectiva tile, crearea și publicarea unui tile este ușoară.

Lucrul cel mai complex este crearea intrării (feed) cu informațiile corecte. Nu din cauza problemelor tehnice, ci este vorba de ce conținut să afișăm. Ar trebui să ne amintim că "informația este puterea".