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
Eseguire operazioni con timeout in React
Sfruttare al massimo i topic space di Event Grid MQTT
Disabilitare automaticamente un workflow di GitHub (parte 2)
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare il trigger SQL con le Azure Function
Criptare la comunicazione con mTLS in Azure Container Apps
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare un service principal per accedere a Azure Container Registry
Eseguire attività basate su eventi con Azure Container Jobs
Le novità di Angular: i miglioramenti alla CLI
I più letti di oggi
- Microsoft annuncia Windows "TrustBridge"
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Estrarre dati randomici da una lista di oggetti in C#
- Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
- Usare il colore CSS per migliorare lo stile della pagina