Webhooks

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Questo articolo descrive i webhook e come configurarli per il progetto Azure DevOps. I webhook consentono di inviare una rappresentazione JSON di un evento Azure DevOps a qualsiasi servizio con un endpoint pubblico.

Nota

Azure DevOps non viene addebitato per la configurazione di hook del servizio o l'integrazione con servizi esterni. Per informazioni sui prezzi correlati ai servizi, vedere il sito del servizio specifico.

Prerequisiti

Per gestire i webhook per un'organizzazione Azure DevOps sono necessari i prerequisiti seguenti:

  • Ruolo Proprietario o Amministratore raccolta progetti nell'organizzazione.

  • Un progetto nell'organizzazione e un servizio con un endpoint HTTP o HTTPS pubblico a cui si vogliono inviare eventi di Azure DevOps.

    Importante

    È consigliabile usare solo endpoint HTTPS. HTTP può inviare dati privati, incluse le intestazioni di autenticazione, non crittografate nel payload dell'evento. È necessario usare HTTPS per l'autenticazione di base in un webhook.

Inviare una rappresentazione JSON a un servizio

  1. Nel progetto Azure DevOps passare a Project settings Service hooks (Hook del servizio impostazioni>progetto) in .https://<organization-name>/<project-name>/_settings/serviceHooks

    Screenshot dell'opzione Hook del servizio in Impostazioni progetto.

  2. Nella pagina Hook del servizio selezionare l'icona + o Crea sottoscrizione.

    Screenshot della selezione di Create subscription (Crea sottoscrizione) nella pagina Service Hooks (Hook del servizio).

  3. Nella schermata Servizio selezionare Web Hook e quindi selezionare Avanti.

    Screenshot della selezione di Web Hook nella pagina Servizio.

  4. Nella schermata Trigger selezionare e configurare l'evento Azure DevOps in cui si vuole attivare il webhook e quindi selezionare Avanti. Per altre informazioni sui payload JSON pubblicati dal consumer di Azure DevOps, vedere Eventi di hook del servizio.

    Screenshot della selezione e della configurazione dell'evento trigger.

  5. Nella schermata Azione configurare l'URL di destinazione e le operazioni da eseguire quando si verifica l'evento. Per altre informazioni su cosa immettere in Dettagli risorsa da inviare, Messaggi da inviare e Messaggi dettagliati da inviare, vedere Dettagli risorsa da inviare.

    Nota

    I webhook non possono essere destinati a localhost (loopback) o a indirizzi IPv6/ di intervallo speciale.

  6. Selezionare Test per testare la sottoscrizione dell'hook del servizio.

    Screenshot della configurazione della finestra di dialogo Azione.

  7. Al termine del test, chiudere la schermata di notifica e quindi selezionare Fine nella schermata Azione .

    Screenshot dei risultati dei test per la sottoscrizione dell'hook del servizio

  8. Il webhook è ora configurato. Passare al servizio di destinazione per visualizzare la rappresentazione JSON.

    Screenshot della visualizzazione della rappresentazione JSON.

Suggerimento

È anche possibile creare un webhook a livello di codice. Per altre informazioni, vedere Creare una sottoscrizione hook del servizio a livello di codice.

Dettagli risorsa da inviare

I dettagli della risorsa da inviare, i messaggi da inviare e i messaggi dettagliati per inviare le impostazioni nel riquadro Azioni controllano le dimensioni del payload JSON da inviare. Dettagli risorsa da inviare controlla la quantità di risorsa da inviare. Il valore predefinito è All, ma è anche possibile scegliere di inviare Minimal, che invia solo campi chiave come URL e ID o Nessuno.

Nessuno e Minimo sono utili negli scenari in cui il chiamante non necessita di molte informazioni o informazioni sulla risorsa, perché si basa sul messaggio o sul messaggio dettagliato stesso. None e Minimal sono utili anche per motivi di sicurezza. Il chiamante deve richiamare Azure DevOps Services ed esaminare i normali controlli di sicurezza e autorizzazioni per ottenere altri dettagli sulla risorsa.

L'esempio JSON seguente mostra dettagli minimi sulla risorsa:

   {
       "eventType": "git.push",
       ...
       "messages": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "detailedMessage": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "resource": {
           "id": "...",
           "url": "https://...",
           "name": "...",
           "field1:": "..."
       }
   }