[comment]: # ({56bf7160-56bf7160})
# 4 Webhook

[comment]: # ({/56bf7160-56bf7160})

[comment]: # ({02b4d443-6584b266})
#### Panoramica

Il tipo di supporto webhook è utile per effettuare chiamate HTTP utilizzando codice JavaScript personalizzato per un'integrazione semplice con software esterni come sistemi di helpdesk, chat o messenger.
È possibile scegliere di importare un'integrazione fornita da Zabbix oppure creare un'integrazione personalizzata da zero.

[comment]: # ({/02b4d443-6584b266})

[comment]: # ({36dd08c9-27a06b1f})
#### Integrazioni

Le seguenti integrazioni sono disponibili e consentono di usare tipi di media webhook predefiniti per inviare notifiche Zabbix a:

-   [brevis.one](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/brevis.one/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Discord](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/discord/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Event-Driven Ansible](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/event_driven_ansible/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Express.ms
    messenger](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/express.ms/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [GitHub](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/github/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [GLPI](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/glpi/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [IBM Maximo Service Request](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/maximo_service_request/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [iLert](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/ilert/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [iTop](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/itop/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Jira](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/jira/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Jira Service Management](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/jira_service_management/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [ManageEngine ServiceDesk](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/manageengine_servicedesk/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Mantis Bug Tracker](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/mantisbt/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Mattermost](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/mattermost/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [MS Teams](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/msteams/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [MS Teams Workflows](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/msteams-workflow/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [LINE](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/line/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Opsgenie](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/opsgenie/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [OTRS CE](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/otrs_ce/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Pagerduty](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pagerduty/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Pushover](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/pushover/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Redmine](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/redmine/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Rocket.Chat](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/rocketchat/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [ServiceNow](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/servicenow/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [SIGNL4](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/signl4/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Slack](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/slack/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [SolarWinds](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/solarwinds/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [SysAid](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/sysaid/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Telegram](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [TOPdesk](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/topdesk/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [VictorOps](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/victorops/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Zammad](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/zammad/README.md?at=refs%2Fheads%2Frelease%2F7.4)
-   [Zendesk](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/zendesk/README.md?at=refs%2Fheads%2Frelease%2F7.4)

::: notetip
Oltre ai servizi elencati qui, Zabbix può essere integrato con **Spiceworks** (non è richiesto alcun webhook).
Per convertire le notifiche Zabbix in ticket Spiceworks, crea un [tipo di media email](/manual/config/notifications/media/email) e inserisci l'indirizzo email dell'helpdesk Spiceworks (ad esempio help\@zabbix.on.spiceworks.com) nelle impostazioni del profilo di un utente Zabbix designato.
:::

[comment]: # ({/36dd08c9-27a06b1f})

[comment]: # ({2d7e87a0-d84f1038})
#### Configurazione

Per iniziare a usare un'integrazione webhook:

1.  Individua il file .yaml richiesto nella directory `templates/media` della versione di Zabbix scaricata oppure scaricalo dal [repository git](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media?at=refs%2Fheads%2Frelease%2F7.4) di Zabbix.
2.  [Importa](/manual/xml_export_import/media#importing) il file nella tua installazione di Zabbix.
Il webhook apparirà nell'elenco dei tipi di media.
3.  Configura il webhook seguendo le istruzioni nel file *Readme.md* (puoi fare clic sul nome di un webhook sopra per accedere rapidamente a *Readme.md*).

Per creare un webhook personalizzato da zero:

1.  Vai su *Alerts > Media types*.
2.  Fai clic su *Create media type*.

La scheda **Media type** contiene vari attributi specifici per questo tipo di media:

![](../../../../../assets/en/manual/config/notifications/media/media_webhook_express.png){width="600"}

Tutti i campi di input obbligatori sono contrassegnati da un asterisco rosso.

I seguenti parametri sono specifici per il tipo di media webhook:

|Parameter|Description|
|--|--------|
|*Parameters*|Specifica le variabili del webhook come coppie attributo-valore.<br>Per i webhook preconfigurati, l'elenco dei parametri varia a seconda del servizio. Consulta il file *Readme.md* del webhook per la descrizione dei parametri.<br>Per i nuovi webhook, alcune variabili comuni sono incluse per impostazione predefinita (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}); puoi lasciarle oppure rimuoverle.<br><br>I parametri del webhook supportano [user macros](/manual/appendix/macros/supported_by_location_user), tutte le [macros](/manual/appendix/macros/supported_by_location) supportate nelle notifiche di problema e, inoltre, le macro {ALERT.SENDTO}, {ALERT.SUBJECT} e {ALERT.MESSAGE}.<br><br>Se specifichi un proxy HTTP, il campo supporta la stessa funzionalità del campo [HTTP proxy](/manual/config/items/itemtypes/http#configuration) nella configurazione dell'item. La stringa del proxy può essere preceduta da `[scheme]://` per specificare quale tipo di proxy viene usato (ad esempio, https, socks4, socks5; vedi [documentazione](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html)).|
|*Script*|Inserisci il codice JavaScript nell'editor modale che si apre facendo clic nel campo del parametro o sull'icona a forma di matita accanto ad esso. Questo codice eseguirà l'operazione del webhook.<br>Il codice è una funzione che accetta coppie parametro-valore. I valori devono essere convertiti in oggetti JSON usando il metodo JSON.parse(), ad esempio: `var params = JSON.parse(value);`.<br><br>Il codice ha accesso a tutti i parametri, può eseguire richieste HTTP GET, POST, PUT e DELETE, supportare metodi aggiuntivi come CONNECT, PATCH, HEAD, OPTIONS e TRACE, e ha il controllo sulle intestazioni HTTP e sul corpo della richiesta.<br>Lo script deve contenere un operatore return, altrimenti non sarà valido. Può restituire uno stato OK insieme a un elenco opzionale di tag e valori dei tag (vedi l'opzione *Process tags*) oppure una stringa di errore.<br><br>Nota che lo script viene eseguito solo dopo la creazione di un alert. Se lo script è configurato per restituire ed elaborare i tag, questi tag non verranno risolti nelle macro {EVENT.TAGS} e {EVENT.RECOVERY.TAGS} nel messaggio iniziale del problema e nei messaggi di ripristino, perché lo script non ha ancora avuto il tempo di essere eseguito.<br>*Nota*: si consiglia di usare variabili locali (ad esempio `var local = 1`) invece di una globale (ad esempio `global = 1`) per garantire che ogni script operi sui propri dati ed evitare collisioni tra chiamate simultanee (vedi [known issues](/manual/installation/known_issues#preprocessing--global-variables-are-unsafe)).<br><br>Vedi anche: [Webhook development guidelines](https://www.zabbix.com/documentation/guidelines/en/webhooks), [Webhook script examples](/manual/config/notifications/media/webhook/webhook_examples), [Additional JavaScript objects](/manual/config/items/preprocessing/javascript/javascript_objects).<br>|
|*Timeout*|Timeout di esecuzione di JavaScript (1-60s, predefinito 30s).<br>Sono supportati i suffissi di tempo, ad esempio 30s, 1m.|
|*Process tags*|Seleziona la casella per elaborare i valori delle proprietà JSON restituiti come tag. Questi tag vengono aggiunti a eventuali tag di problema già esistenti.<br>Nota che quando si usano [webhook tags](https://www.zabbix.com/documentation/guidelines/en/webhooks#webhook-tags), il webhook deve restituire un oggetto JSON contenente almeno un oggetto tags vuoto: `var result = {tags: {}};`<br>Esempi di tag che possono essere restituiti: *jira-id:prod-1234*, *responsible:John Smith*, *processed:<no value>*|
|*Include event menu entry*|Seleziona la casella per includere una voce nel [menu eventi](/manual/web_interface/menu/event_menu) che rimandi a un ticket esterno creato.<br>Verrà inclusa una voce per ogni webhook abilitato e con questa casella selezionata. Nota che se i parametri *Menu entry name* e *Menu entry URL* contengono macro [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events), una voce verrà inclusa solo se queste macro possono essere risolte (cioè se l'evento ha questi tag definiti).<br>Se selezionato, il webhook non dovrebbe essere usato per inviare notifiche a utenti diversi (valuta invece la creazione di un [utente dedicato](/manual/config/notifications/media/webhook#user-media)) e non dovrebbe essere usato in più azioni di alert [per un singolo evento di problema](/manual/config/notifications/media/webhook#configuring-alert-actions).|
|*Menu entry name*|Specifica il nome della voce di menu.<br>È supportata la macro [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events).<br>Questo campo è obbligatorio solo se *Include event menu entry* è selezionato.|
|*Menu entry URL*|Specifica l'URL sottostante della voce di menu.<br>È supportata la macro [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events).<br>Questo campo è obbligatorio solo se *Include event menu entry* è selezionato.|

Consulta i [parametri comuni dei tipi di media](/manual/config/notifications/media#common-parameters) per i dettagli su come configurare i messaggi predefiniti e le opzioni di elaborazione degli alert.

::: notewarning
Anche se un webhook non usa i messaggi predefiniti, i modelli di messaggio per i tipi di operazione usati da questo webhook devono comunque essere definiti.
:::

[comment]: # ({/2d7e87a0-d84f1038})

[comment]: # ({f9688d90-e5e73ea8})
#### Test

Per testare un tipo di supporto webhook configurato:

1. Individuare il webhook pertinente nell'[elenco](/manual/config/notifications/media#overview) dei tipi di supporto.
2. Fare clic su *Test* nell'ultima colonna dell'elenco (si aprirà una finestra di test).
3. Modificare i valori dei parametri del webhook secondo necessità.
Sostituire le macro con valori di esempio; in caso contrario, le macro non verranno risolte e il test non riuscirà.
4. Fare clic su *Test*.

La sostituzione o l'eliminazione dei valori nella finestra di test influisce solo sulla procedura di test; i valori effettivi degli attributi del webhook rimarranno invariati.

![](../../../../../assets/en/manual/config/webhook_test1.png){width="600"}

Per visualizzare le voci del log di test del tipo di supporto senza uscire dalla finestra di test, fare clic su *Open log* (si aprirà una nuova finestra pop-up).

![](../../../../../assets/en/manual/config/mediatype_test2.png){width="600"}

[comment]: # ({/f9688d90-e5e73ea8})

[comment]: # ({817ae9ce-b2974109})
**Se il test del webhook ha esito positivo:**

-   viene visualizzato il messaggio *"Media type test successful."*.
-   la risposta del server appare nel campo grigio *Response*.
-   il tipo di risposta (JSON o String) è specificato sotto il campo *Response*.

[comment]: # ({/817ae9ce-b2974109})

[comment]: # ({d11e9918-abfbc807})
**Se il test del webhook fallisce:**

-   viene visualizzato il messaggio *"Media type test failed."*, seguito da ulteriori dettagli sull'errore.

[comment]: # ({/d11e9918-abfbc807})

[comment]: # ({22965c08-6eeec89a})
#### Media utente

Una volta configurato il tipo di supporto, vai alla sezione *Utenti > Utenti* e assegna il supporto webhook a un utente esistente oppure crea un nuovo utente che rappresenti il webhook.
I passaggi per configurare i supporti utente per un utente esistente, comuni a tutti i tipi di supporto, sono descritti nella pagina [Tipi di supporto](/manual/config/notifications/media#user-media).

Se un webhook utilizza tag per memorizzare l'ID del ticket\\messaggio, evita di assegnare lo stesso webhook come supporto a utenti diversi, poiché ciò potrebbe causare errori del webhook (si applica alla maggior parte dei webhook che utilizzano l'opzione *Include event menu entry*).
In questo caso, la procedura consigliata è creare un utente dedicato che rappresenti il webhook:

1.  Dopo aver configurato il tipo di supporto webhook, vai alla sezione *Utenti > Utenti* e crea un utente Zabbix dedicato che rappresenti il webhook, ad esempio con il nome utente *Slack* per il webhook Slack.
Tutte le impostazioni, tranne i supporti, possono essere lasciate ai valori predefiniti, poiché questo utente non accederà a Zabbix.
2.  Nel profilo utente, vai alla scheda *Media* e [aggiungi un webhook](/manual/config/notifications/media#user-media) con le informazioni di contatto richieste.
Se il webhook non utilizza un campo *Send to*, inserisci una qualsiasi combinazione di caratteri supportati per aggirare i requisiti di convalida.
3.  Concedi a questo utente almeno i [permessi](/manual/config/users_and_usergroups/permissions#permissions-to-host-groups) di lettura a tutti gli host per i quali deve inviare gli avvisi.

Quando configuri un'azione di avviso, aggiungi questo utente nel campo *Send to users* nei dettagli dell'operazione: questo indicherà a Zabbix di utilizzare il webhook per le notifiche di questa azione.

[comment]: # ({/22965c08-6eeec89a})

[comment]: # ({1b5d3274-ac89791d})
#### Configurazione delle azioni di avviso

Le azioni determinano quali notifiche devono essere inviate tramite il webhook.
I passaggi per la [configurazione delle azioni](/manual/config/notifications/action) che coinvolgono i webhook sono gli stessi di tutti gli altri tipi di supporto, con le seguenti eccezioni:

-   Se un webhook utilizza i [tag del webhook](https://www.zabbix.com/documentation/guidelines/en/webhooks#webhook-tags) per memorizzare l'ID del ticket\\messaggio e gestire le operazioni di aggiornamento\\risoluzione, evitare di utilizzare lo stesso webhook in più azioni di avviso per un singolo evento di problema.
Se {EVENT.TAGS.<tag name>} esiste e viene aggiornato nel webhook, il valore risultante sarà indefinito.
Per evitare ciò, utilizzare un nuovo nome di tag nel webhook per memorizzare i valori aggiornati.
Questo vale per i webhook Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad e Zendesk forniti da Zabbix e per la maggior parte dei webhook che utilizzano l'opzione *Include event menu entry*.
Si noti tuttavia che un singolo webhook può essere utilizzato in più operazioni o passaggi di escalation della stessa azione, così come in azioni diverse che non verranno attivate dallo stesso evento di problema grazie a [condizioni](/manual/config/notifications/action/conditions) differenti.
-   Quando si utilizza un webhook nelle azioni per [eventi interni](/manual/config/events/sources#internal-events), assicurarsi di selezionare la casella *Custom message* e definire un messaggio personalizzato nella configurazione dell'operazione dell'azione.
In caso contrario, la notifica non verrà inviata.

[comment]: # ({/1b5d3274-ac89791d})
