Continuando sul tema work item introdotto negli script precedenti, vediamo ora un altro scenario interessante, ovvero la possibilità di taggare automaticamente dei membri del team. Questo può risultare molto importante per tenere traccia dei progressi su attività ricorrenti, per impostare dei reminder, per avere auto-responder in caso di out of office o situazioni simili.
Per poter taggare una persona, abbiamo però bisogno di conoscere la sua identità all'interno di Azure DevOps. Questa operazione può essere fatta nuovamente tramite le API REST chiamando l'endpoint di identity:
$identity = "my.email@domain.com" $url = "https://vssps.dev.azure.com/$(Organization)/_apis/identities?searchFilter=General&filterValue=$identity&queryMembership=None&api-version=6.0" Invoke-RestMethod $url -Method GET -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);}
L'oggetto che otteremo in risposta, corrispondente all'indirizzo mail (o altri parametri tipo DisplayName, per esempio), se trovato, sarà formato all'incirca in questo modo:
{ "count": 1, "value": [ { "id": "00000000-0000-0000-0000-000000000000", "descriptor": "Microsoft.IdentityModel.Claims.ClaimsIdentity;xxx\\my.fake@domain.com", "subjectDescriptor": "aad.xxxx", "providerDisplayName": "Matteo Tumiati", "isActive": true, "members": [], "memberOf": [], "memberIds": [], "properties": { "Description": { }, "Domain": { }, "Account": { }, "Mail": { }, "DirectoryAlias": { } }, "resourceVersion": 2, "metaTypeId": 0 } ] }
Ovviamente le property sono state volutamente semplificate ed oscurate per concentrarci sui valori fondamentali a cui siamo interessati. Fra questi, possiamo assicurarci che l'utente trovato sia quello ricercato tramite la sua mail, il suo display name, piuttosto che tramite l'alias di dominio. Una volta confermato l'utente, ci salviamo il GUID rappresentante il suo ID.
Questo GUID, infatti, deve essere passato in input come messaggio del testo da inviare come commento al work item (o alla sua description, piuttosto che ai repro steps di un bug):
$message = "<a href='#' data-vss-mention='version:2.0,00000000-0000-0000-0000-000000000000'>Matteo Tumiati</a> questo è un messaggio per te"
Poiché il contenuto di un campo di testo per un work item è solitamente HTML (con un po' di margine per markdown), possiamo taggare una persona facendo riferimento all'HTML standard per fare link di contenuti. Creato il messaggio, non ci resta che postarlo. In questo caso, procediamo tramite l'apposita REST API per inviare un commento sul work item desiderato:
$url = "https://dev.azure.com/$(Organization)/$(Project)/_apis/wit/workItems/$workItemId/comments?api-version=6.0-preview.3" $body = @( @{ text = "$message" } ) $data = ConvertTo-Json $body Invoke-RestMethod $url -Method POST -Body $data -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);} -ContentType "application/json"
Il risultato finale sarà simile al seguente:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Recuperare l'ultima versione di una release di GitHub
Scrivere selettori CSS più semplici ed efficienti con :is()
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Applicare un filtro per recuperare alcune issue di GitHub
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Ordinare randomicamente una lista in C#
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Generare una User Delegation SAS in .NET per Azure Blob Storage
Creare una custom property in GitHub
Disabilitare le run concorrenti di una pipeline di Azure DevOps