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

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

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

Der webhook-Medientyp ist nützlich, um HTTP-Aufrufe mithilfe von benutzerdefiniertem JavaScript-Code für eine unkomplizierte Integration mit externer Software wie Helpdesk-Systemen, Chats oder Messengern durchzuführen.
Sie können eine von Zabbix bereitgestellte Integration importieren oder eine benutzerdefinierte Integration von Grund auf neu erstellen.

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

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

Die folgenden Integrationen sind verfügbar und ermöglichen die Verwendung vordefinierter webhook-Medientypen, um Zabbix-Benachrichtigungen an folgende Dienste zu senden:

-   [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
Zusätzlich zu den hier aufgeführten Diensten kann Zabbix mit **Spiceworks** integriert werden (dabei ist kein webhook erforderlich).
Um Zabbix-Benachrichtigungen in Spiceworks-Tickets umzuwandeln, erstellen Sie einen [E-Mail-Medientyp](/manual/config/notifications/media/email) und tragen Sie die Helpdesk-E-Mail-Adresse von Spiceworks (z. B. help\@zabbix.on.spiceworks.com) in den Profileinstellungen eines dafür vorgesehenen Zabbix-Benutzers ein.
:::

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

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

Um mit einer webhook-Integration zu beginnen:

1.  Suchen Sie die erforderliche .yaml-Datei im Verzeichnis `templates/media` der heruntergeladenen Zabbix-Version oder laden Sie sie aus dem Zabbix-[git repository](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media?at=refs%2Fheads%2Frelease%2F7.4) herunter.
2.  [Importieren](/manual/xml_export_import/media#importing) Sie die Datei in Ihre Zabbix-Installation.
Der webhook wird in der Liste der Medientypen angezeigt.
3.  Konfigurieren Sie den webhook gemäß den Anweisungen in der Datei *Readme.md* (Sie können auf den Namen eines webhooks oben klicken, um direkt zu *Readme.md* zu gelangen).

Um einen benutzerdefinierten webhook von Grund auf neu zu erstellen:

1.  Gehen Sie zu *Alerts > Medientypen*.
2.  Klicken Sie auf *Medientyp erstellen*.

Die Registerkarte **Medientyp** enthält verschiedene Attribute, die speziell für diesen Medientyp gelten:

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

Alle obligatorischen Eingabefelder sind mit einem roten Sternchen markiert.

Die folgenden Parameter sind spezifisch für den webhook-Medientyp:

|Parameter|Beschreibung|
|--|--------|
|*Parameters*|Geben Sie die webhook-Variablen als Attribut-Wert-Paare an.<br>Bei vorkonfigurierten webhooks variiert die Liste der Parameter je nach Dienst. Prüfen Sie die Datei *Readme.md* des webhooks für die Parameterbeschreibung.<br>Für neue webhooks sind standardmäßig mehrere allgemeine Variablen enthalten (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}); Sie können diese beibehalten oder entfernen.<br><br>Webhook-Parameter unterstützen [Benutzermakros](/manual/appendix/macros/supported_by_location_user), alle [Makros](/manual/appendix/macros/supported_by_location), die in Problembenachrichtigungen unterstützt werden, sowie zusätzlich die Makros {ALERT.SENDTO}, {ALERT.SUBJECT} und {ALERT.MESSAGE}.<br><br>Wenn Sie einen HTTP-Proxy angeben, unterstützt das Feld dieselbe Funktionalität wie das Feld [HTTP proxy](/manual/config/items/itemtypes/http#configuration) in der Datenpunkt-Konfiguration. Dem Proxy-String kann `[scheme]://` vorangestellt werden, um anzugeben, welche Art von Proxy verwendet wird (z. B. https, socks4, socks5; siehe [Dokumentation](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html)).|
|*Script*|Geben Sie JavaScript-Code im modalen Editor ein, der sich öffnet, wenn Sie in das Parameterfeld oder auf das Stiftsymbol daneben klicken. Dieser Code führt die webhook-Operation aus.<br>Der Script-Code ist eine Funktion, die Parameter-Wert-Paare akzeptiert. Die Werte sollten mit der Methode JSON.parse() in JSON-Objekte umgewandelt werden, zum Beispiel: `var params = JSON.parse(value);`.<br><br>Der Code hat Zugriff auf alle Parameter, kann HTTP-GET-, POST-, PUT- und DELETE-Anfragen ausführen, unterstützt zusätzliche Methoden wie CONNECT, PATCH, HEAD, OPTIONS und TRACE und hat Kontrolle über HTTP-Header und den Request-Body.<br>Das Script muss einen return-Operator enthalten, andernfalls ist es nicht gültig. Es kann einen OK-Status zusammen mit einer optionalen Liste von Tags und Tag-Werten zurückgeben (siehe Option *Process tags*) oder einen Fehlerstring.<br><br>Beachten Sie, dass das Script erst ausgeführt wird, nachdem ein Alarm erstellt wurde. Wenn das Script so konfiguriert ist, dass es Tags zurückgibt und verarbeitet, werden diese Tags in den Makros {EVENT.TAGS} und {EVENT.RECOVERY.TAGS} in der ursprünglichen Problemnachricht und den Wiederherstellungsnachrichten nicht aufgelöst, da das Script zu diesem Zeitpunkt noch nicht ausgeführt wurde.<br>*Hinweis*: Es wird empfohlen, lokale Variablen zu verwenden (z. B. `var local = 1`) statt globaler Variablen (z. B. `global = 1`), um sicherzustellen, dass jedes Script mit seinen eigenen Daten arbeitet und Kollisionen zwischen gleichzeitigen Aufrufen zu vermeiden (siehe [bekannte Probleme](/manual/installation/known_issues#preprocessing--global-variables-are-unsafe)).<br><br>Siehe auch: [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*|Zeitüberschreitung für die JavaScript-Ausführung (1-60 s, Standard 30 s).<br>Zeitsuffixe werden unterstützt, z. B. 30s, 1m.|
|*Process tags*|Aktivieren Sie das Kontrollkästchen, um zurückgegebene JSON-Property-Werte als Tags zu verarbeiten. Diese Tags werden zu allen vorhandenen Problem-Tags hinzugefügt.<br>Beachten Sie, dass bei der Verwendung von [webhook tags](https://www.zabbix.com/documentation/guidelines/en/webhooks#webhook-tags) der webhook ein JSON-Objekt zurückgeben muss, das mindestens ein leeres Tags-Objekt enthält: `var result = {tags: {}};`<br>Beispiele für zurückgegebene Tags: *jira-id:prod-1234*, *responsible:John Smith*, *processed:<no value>*|
|*Include event menu entry*|Aktivieren Sie das Kontrollkästchen, um einen Eintrag im [Ereignismenü](/manual/web_interface/menu/event_menu) einzufügen, der auf ein erstelltes externes Ticket verweist.<br>Für jeden aktivierten webhook, bei dem dieses Kontrollkästchen markiert ist, wird ein Eintrag eingefügt. Beachten Sie, dass ein Eintrag nur dann eingefügt wird, wenn die Parameter *Menu entry name* und *Menu entry URL* Makros vom Typ [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events) enthalten, die aufgelöst werden können (d. h. das Ereignis diese Tags definiert hat).<br>Wenn diese Option aktiviert ist, sollte der webhook nicht zum Senden von Benachrichtigungen an verschiedene Benutzer verwendet werden (erwägen Sie stattdessen die Erstellung eines [dedizierten Benutzers](/manual/config/notifications/media/webhook#user-media)) und nicht in mehreren Alarmaktionen [für ein einzelnes Problemereignis](/manual/config/notifications/media/webhook#configuring-alert-actions) verwendet werden.|
|*Menu entry name*|Geben Sie den Namen des Menüeintrags an.<br>Das Makro [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events) wird unterstützt.<br>Dieses Feld ist nur dann obligatorisch, wenn *Include event menu entry* aktiviert ist.|
|*Menu entry URL*|Geben Sie die zugrunde liegende URL des Menüeintrags an.<br>Das Makro [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events) wird unterstützt.<br>Dieses Feld ist nur dann obligatorisch, wenn *Include event menu entry* aktiviert ist.|

Weitere Informationen zur Konfiguration von Standardnachrichten und Optionen zur Alarmverarbeitung finden Sie unter [allgemeine Parameter für Medientypen](/manual/config/notifications/media#common-parameters).

::: notewarning
Auch wenn ein webhook keine Standardnachrichten verwendet, müssen Nachrichtenvorlagen für die von diesem webhook verwendeten Operationstypen dennoch definiert sein.
:::

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

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

So testen Sie einen konfigurierten webhook-Medientyp:

1.  Suchen Sie den entsprechenden webhook in der [Liste](/manual/config/notifications/media#overview) der Medientypen.
2.  Klicken Sie in der letzten Spalte der Liste auf *Test* (ein Testfenster wird geöffnet).
3.  Bearbeiten Sie die webhook-Parameterwerte nach Bedarf.
Ersetzen Sie Makros durch Beispielwerte; andernfalls werden Makros nicht aufgelöst, und der Test schlägt fehl.
4.  Klicken Sie auf *Test*.

Das Ersetzen oder Löschen von Werten im Testfenster wirkt sich nur auf den Testvorgang aus; die tatsächlichen Attributwerte des webhook bleiben unverändert.

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

Um Testprotokolleinträge des Medientyps anzuzeigen, ohne das Testfenster zu verlassen, klicken Sie auf *Open log* (ein neues Pop-up-Fenster wird geöffnet).

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

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

[comment]: # ({817ae9ce-b2974109})
**Wenn der webhook-Test erfolgreich ist:**

-   Die Meldung *„Medientyp-Test erfolgreich.“* wird angezeigt.
-   Die Server-Antwort erscheint im grauen Feld *Antwort*.
-   Der Antworttyp (JSON oder String) wird unterhalb des Feldes *Antwort* angegeben.

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

[comment]: # ({d11e9918-abfbc807})
**Wenn der webhook-Test fehlschlägt:**

-   Die Meldung *„Medientyp-Test fehlgeschlagen.“* wird angezeigt, gefolgt von zusätzlichen Details zum Fehler.

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

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

Sobald der Medientyp konfiguriert ist, gehen Sie zum Abschnitt *Benutzer > Benutzer* und weisen Sie das webhook-Medium einem vorhandenen Benutzer zu oder erstellen Sie einen neuen Benutzer, der das webhook repräsentiert.
Die Schritte zum Einrichten von Benutzermedien für einen vorhandenen Benutzer, die für alle Medientypen gleich sind, werden auf der Seite [Medientypen](/manual/config/notifications/media#user-media) beschrieben.

Wenn ein webhook Tags zum Speichern der Ticket\\Nachrichten-ID verwendet, vermeiden Sie es, dasselbe webhook als Medium verschiedenen Benutzern zuzuweisen, da dies zu webhook-Fehlern führen kann (gilt für die Mehrheit der webhooks, die die Option *Ereignismenüeintrag einschließen* verwenden).
In diesem Fall empfiehlt es sich, einen dedizierten Benutzer zu erstellen, der das webhook repräsentiert:

1.  Gehen Sie nach der Konfiguration des webhook-Medientyps zum Abschnitt *Benutzer > Benutzer* und erstellen Sie einen dedizierten Zabbix-Benutzer, der das webhook repräsentiert – zum Beispiel mit dem Benutzernamen *Slack* für das Slack-webhook.
Alle Einstellungen außer den Medien können auf ihren Standardwerten belassen werden, da sich dieser Benutzer nicht bei Zabbix anmelden wird.
2.  Wechseln Sie im Benutzerprofil zur Registerkarte *Medien* und [fügen Sie ein webhook hinzu](/manual/config/notifications/media#user-media) mit den erforderlichen Kontaktinformationen.
Wenn das webhook kein Feld *Senden an* verwendet, geben Sie eine beliebige Kombination unterstützter Zeichen ein, um die Validierungsanforderungen zu umgehen.
3.  Gewähren Sie diesem Benutzer mindestens Lese-[Berechtigungen](/manual/config/users_and_usergroups/permissions#permissions-to-host-groups) für alle Hosts, für die er die Warnmeldungen senden soll.

Fügen Sie bei der Konfiguration der Aktionsbenachrichtigung diesen Benutzer im Feld *An Benutzer senden* in den Betriebsdetails hinzu – dadurch weist Zabbix an, das webhook für Benachrichtigungen aus dieser Aktion zu verwenden.

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

[comment]: # ({1b5d3274-ac89791d})
#### Konfigurieren von Alarmierungsaktionen

Aktionen bestimmen, welche Benachrichtigungen über den webhook gesendet werden sollen.
Die Schritte zum [Konfigurieren von Aktionen](/manual/config/notifications/action), die webhooks betreffen, sind dieselben wie bei allen anderen Medientypen, mit folgenden Ausnahmen:

-   Wenn ein webhook [webhook-Tags](https://www.zabbix.com/documentation/guidelines/en/webhooks#webhook-tags) verwendet, um Ticket\\Nachrichten-ID zu speichern und Aktualisierungs\\Lösungs-Operationen zu verarbeiten, vermeiden Sie die Verwendung desselben webhook in mehreren Alarmierungsaktionen für ein einzelnes Problemereignis.
Wenn {EVENT.TAGS.<tag name>} existiert und im webhook aktualisiert wird, ist sein resultierender Wert undefiniert.
Um dies zu vermeiden, verwenden Sie im webhook einen neuen Tag-Namen zum Speichern aktualisierter Werte.
Dies gilt für die von Zabbix bereitgestellten webhooks Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad und Zendesk sowie für die meisten webhooks, die die Option *Include event menu entry* verwenden.
Beachten Sie jedoch, dass ein einzelner webhook in mehreren Operationen oder Eskalationsschritten derselben Aktion sowie in verschiedenen Aktionen verwendet werden kann, die aufgrund unterschiedlicher [Bedingungen](/manual/config/notifications/action/conditions) nicht durch dasselbe Problemereignis ausgelöst werden.
-   Wenn Sie einen webhook in Aktionen für [interne Ereignisse](/manual/config/events/sources#internal-events) verwenden, stellen Sie sicher, dass Sie das Kontrollkästchen *Custom message* aktivieren und in der Konfiguration der Aktionsoperation eine benutzerdefinierte Nachricht festlegen.
Andernfalls wird keine Benachrichtigung gesendet.

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