# Scrivi una introduzione di una riga su cosa siano i webhook e perché sono utili
I webhook sono un meccanismo piuttosto noto e comune ormai per inviare notifiche automatiche a un URL specifico quando si verifica un evento specifico. Sono utili per integrare sistemi e automatizzare processi esterni. Ad esempio, può essere comodo farci inviare una notifica ogni qualvolta che una build si è completata con successo o che un commit è stato effettuato su un repository Git, così che possiamo essere informati in tempo reale.
Per configurarlo, è necessario creare un webhook nel servizio che vuole inviare le notifiche e specificare l'URL del servizio che riceverà le notifiche. In questo caso, utilizzeremo Azure DevOps per inviare una notifica a un servizio esterno quando un commit viene effettuato su un repository Git. Poiché in Azure DevOps è probabile che avremo più progetti e più repository su cui abilitare i webhook, vediamo come farlo sfruttando la CLI e le API.
Per prima cosa dobbiamo recuperare le informazioni riguardo l'id del progetto e del repository nel quale vogliamo abilitare i webhook, oltre che l'endpoint alla quale inviare le notifiche. Se ne abbiamo più di uno, allora ci basterà eseguire gli stessi passaggi all'interno di un loop.
$projectId = az devops project show --project <project-name> --query "id" --output tsv $repositoryId = az repos list --project <project-name> --query "[?name=='<repository-name>'].id" --output tsv $url = "<tbd>"
Una volta ottenuti i valori di projectId e repositoryId, possiamo creare il payload JSON per il webhook-
$json = @" { "consumerActionId": "httpRequest", "consumerId": "webHooks", "consumerInputs": { "url": "$url" }, "eventType": "git.push", "publisherId": "tfs", "publisherInputs": { "repository": "$repositoryId", "branch": "main", "pushedBy": "", "projectId": "$projectId" }, "resourceVersion": "1.0", "scope": 1 } "@
Infine, possiamo inviare la richiesta all'API di Azure DevOps per creare il webhook.
$url = "https://dev.azure.com/<organization>/_apis/hooks/subscriptions?api-version=7.1" $token = "<your-personal-access-token>" $authHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($token)")) } # Send the request to the Azure DevOps API Invoke-RestMethod -Uri $url -Method Post -Headers $authHeader -Body $json -ContentType "application/json"
Se è tutto andato a buon fine, possiamo entrare nel portale di Azure DevOps ed eseguire un primo test di connessione per verificare che il webhook sia stato configurato correttamente. Se tutto è andato a buon fine, dovremmo ricevere una notifica nel servizio esterno che abbiamo configurato. A questo punto, quindi, per ogni commit fatto nel branch main, verrà inviata la notifica automaticamente al nostro sistema.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Ottenere un token di accesso per una GitHub App
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Simulare Azure Cosmos DB in locale con Docker
Gestione dei nomi con le regole @layer in CSS
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Recuperare l'ultima versione di una release di GitHub
Loggare le query più lente con Entity Framework
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Generare velocemente pagine CRUD in Blazor con QuickGrid
I più letti di oggi
- Beta 1 di VS 2005 Enterprise Architect
- Point-in-time restore con gli Azure Storage Blob
- Focus dei tag input con HTML5
- Il nuovo tag nav in HTML5
- Evitare la modalità di risparmio energetico in una Windows Store app
- Real Code Day 4.0: costruire applicazioni reali - Firenze
- AI&ML Conference 2019 - Milano
- Mono 0.12: verso una nuova implementazione di ASP.NET