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

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

[comment]: # ({02b4d443-6584b266})
#### Pārskats

Webhook medija tips ir noderīgs HTTP izsaukumu veikšanai, izmantojot pielāgotu JavaScript kodu, lai nodrošinātu vienkāršu integrāciju ar ārēju programmatūru, piemēram, palīdzības dienesta sistēmām, tērzēšanas risinājumiem vai ziņapmaiņas lietotnēm.
Jūs varat izvēlēties importēt Zabbix nodrošinātu integrāciju vai izveidot pielāgotu integrāciju no nulles.

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

[comment]: # ({d863deaf-27a06b1f})
#### Integrācijas

Ir pieejamas šādas integrācijas, kas ļauj izmantot iepriekš definētus webhook mediju tipus, lai nosūtītu Zabbix paziņojumus uz:

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

::: notetip
Papildus šeit uzskaitītajiem pakalpojumiem Zabbix var integrēt ar **Spiceworks** (webhook nav nepieciešams).
Lai pārveidotu Zabbix paziņojumus par Spiceworks biļetēm, izveidojiet [e-pasta mediju tipu](/manual/config/notifications/media/email) un norādītā Zabbix lietotāja profila iestatījumos ievadiet Spiceworks palīdzības dienesta e-pasta adresi (piemēram, help\@zabbix.on.spiceworks.com).
:::

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

[comment]: # ({2ff62d0e-d84f1038})
#### Konfigurācija

Lai sāktu izmantot webhook integrāciju:

1.  Atrodiet nepieciešamo .yaml failu lejupielādētās Zabbix versijas `templates/media` direktorijā vai lejupielādējiet to no Zabbix [git repozitorija](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media).
2.  [Importējiet](/manual/xml_export_import/media#importing) failu savā Zabbix instalācijā.
Webhook parādīsies mediju tipu sarakstā.
3.  Konfigurējiet webhook atbilstoši norādījumiem *Readme.md* failā (varat noklikšķināt uz webhook nosaukuma augstāk, lai ātri piekļūtu *Readme.md*).

Lai izveidotu pielāgotu webhook no nulles:

1.  Dodieties uz *Brīdinājumi > Mediju tipi*.
2.  Noklikšķiniet uz *Izveidot mediju tipu*.

Cilnē **Mediju tips** ir dažādi šim mediju tipam specifiski atribūti:

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

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

Webhook mediju tipam ir specifiski šādi parametri:

|Parametrs|Apraksts|
|--|--------|
|*Parameters*|Norādiet webhook mainīgos kā atribūta un vērtības pārus.<br>Iepriekš konfigurētiem webhook parametru saraksts atšķiras atkarībā no pakalpojuma. Parametru aprakstu skatiet webhook *Readme.md* failā.<br>Jauniem webhook pēc noklusējuma ir iekļauti vairāki bieži izmantoti mainīgie (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}); varat tos paturēt vai noņemt.<br><br>Webhook parametri atbalsta [lietotāja makrosus](/manual/appendix/macros/supported_by_location_user), visus [makrosus](/manual/appendix/macros/supported_by_location), kas tiek atbalstīti problēmu paziņojumos, kā arī papildus makrosus {ALERT.SENDTO}, {ALERT.SUBJECT} un {ALERT.MESSAGE}.<br><br>Ja norādāt HTTP starpniekserveri, lauks atbalsta to pašu funkcionalitāti kā vienuma konfigurācijas laukā [HTTP proxy](/manual/config/items/itemtypes/http#configuration). Starpniekservera virknei var pievienot prefiksu `[scheme]://`, lai norādītu, kāda veida starpniekserveris tiek izmantots (piemēram, https, socks4, socks5; skatiet [dokumentāciju](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html)).|
|*Script*|Ievadiet JavaScript kodu modālajā redaktorā, kas tiek atvērts, noklikšķinot parametra laukā vai uz zīmuļa ikonas blakus tam. Šis kods izpildīs webhook darbību.<br>Skripts ir funkcijas kods, kas pieņem parametra-vērtības pārus. Vērtības jāpārveido par JSON objektiem, izmantojot metodi JSON.parse(), piemēram: `var params = JSON.parse(value);`.<br><br>Kodam ir piekļuve visiem parametriem; tas var izpildīt HTTP GET, POST, PUT un DELETE pieprasījumus, atbalsta arī papildu metodes, piemēram, CONNECT, PATCH, HEAD, OPTIONS un TRACE, un ļauj kontrolēt HTTP galvenes un pieprasījuma pamattekstu.<br>Skriptā obligāti jābūt return operatoram, pretējā gadījumā tas nebūs derīgs. Tas var atgriezt OK statusu kopā ar neobligātu birku un birku vērtību sarakstu (skatiet opciju *Process tags*) vai kļūdas virkni.<br><br>Atjaunošanas notikumus (neatkarīgi no tā, vai tie ģenerēti automātiski vai manuālas aizvēršanas rezultātā) izveido serveris, un tie ietver atrisinātās notikuma birkas (tostarp no veidnēm, hostiem un trigeriem mantotās birkas). Webhook skripti tiek izpildīti pēc brīdinājuma izveides; tādēļ webhook skripta atgrieztās birkas tiek pievienotas tikai pēc sākotnējās brīdinājuma izveides un nebūs pieejamas sākotnējā problēmas ziņojuma vai tūlītējā atjaunošanas ziņojuma makrosos [{EVENT.TAGS}](/manual/appendix/macros/supported_by_location#eventtags) un [`{EVENT.RECOVERY.TAGS}`](/manual/appendix/macros/supported_by_location#eventrectags).<br>*Piezīme*: Ieteicams izmantot lokālos mainīgos (piemēram, `var local = 1`) globālo vietā (piemēram, `global = 1`), lai nodrošinātu, ka katrs skripts darbojas ar saviem datiem, un izvairītos no kolīzijām vienlaicīgu izsaukumu laikā (skatiet [zināmās problēmas](/manual/installation/known_issues#preprocessing--global-variables-are-unsafe)).<br><br>Skatiet arī: [Webhook izstrādes vadlīnijas](https://www.zabbix.com/documentation/guidelines/en/webhooks), [Webhook skriptu piemēri](/manual/config/notifications/media/webhook/webhook_examples), [Papildu JavaScript objekti](/manual/config/items/preprocessing/javascript/javascript_objects).<br>|
|*Timeout*|JavaScript izpildes noildze (1-60s, noklusējums 30s).<br>Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m.|
|*Process tags*|Atzīmējiet izvēles rūtiņu, lai apstrādātu atgriezto JSON īpašību vērtības kā birkas. Šīs birkas tiek pievienotas visām esošajām problēmu birkām.<br>Ņemiet vērā, ka, izmantojot [webhook birkas](https://www.zabbix.com/documentation/guidelines/en/webhooks#webhook-tags), webhook jāatgriež JSON objekts, kurā ir vismaz tukšs tags objekts: `var result = {tags: {}};`<br>Atgriežamo birku piemēri: *jira-id:prod-1234*, *responsible:John Smith*, *processed:<no value>*|
|*Include event menu entry*|Atzīmējiet izvēles rūtiņu, lai [notikuma izvēlnē](/manual/web_interface/menu/event_menu) iekļautu ierakstu ar saiti uz izveidoto ārējo biļeti.<br>Ieraksts tiks iekļauts katram webhook, kas ir iespējots un kam šī izvēles rūtiņa ir atzīmēta. Ņemiet vērā, ka, ja parametros *Menu entry name* un *Menu entry URL* ir kādi makrosi [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events), ieraksts tiks iekļauts tikai tad, ja šos makrosus var atrisināt (tas ir, notikumam šīs birkas ir definētas).<br>Ja atzīmēts, webhook nevajadzētu izmantot paziņojumu sūtīšanai dažādiem lietotājiem (apsveriet iespēju tā vietā izveidot [atsevišķu lietotāju](/manual/config/notifications/media/webhook#user-media)), un to nevajadzētu izmantot vairākās brīdinājumu darbībās [vienam problēmas notikumam](/manual/config/notifications/media/webhook#configuring-alert-actions).|
|*Menu entry name*|Norādiet izvēlnes ieraksta nosaukumu.<br>Tiek atbalstīts makross [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events).<br>Šis lauks ir obligāts tikai tad, ja ir atzīmēts *Include event menu entry*.|
|*Menu entry URL*|Norādiet izvēlnes ieraksta pamatā esošo URL.<br>Tiek atbalstīts makross [{EVENT.TAGS.<tag name>}](/manual/appendix/macros/supported_by_location#events).<br>Šis lauks ir obligāts tikai tad, ja ir atzīmēts *Include event menu entry*.|

Sīkāku informāciju par noklusējuma ziņojumu un brīdinājumu apstrādes opciju konfigurēšanu skatiet sadaļā [kopīgie mediju tipu parametri](/manual/config/notifications/media#common-parameters).

::: notewarning
Pat ja webhook neizmanto noklusējuma ziņojumus, šī webhook izmantotajiem darbību tipiem ziņojumu veidnēm joprojām jābūt definētām.
:::

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

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

Lai pārbaudītu konfigurētu webhook medija tipu:

1.  Atrodiet attiecīgo webhook medija tipu [sarakstā](/manual/config/notifications/media#overview).
2.  Saraksta pēdējā kolonnā noklikšķiniet uz *Test* (tiks atvērts testēšanas logs).
3.  Pēc nepieciešamības rediģējiet webhook parametru vērtības.
Aizstājiet makrosus ar piemēra vērtībām; pretējā gadījumā makrosi netiks atrisināti, un tests neizdosies.
4.  Noklikšķiniet uz *Test*.

Vērtību aizstāšana vai dzēšana testēšanas logā ietekmē tikai testēšanas procedūru; faktiskās webhook atribūtu vērtības paliks nemainītas.

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

Lai skatītu medija tipa testa žurnāla ierakstus, neatstājot testēšanas logu, noklikšķiniet uz *Open log* (tiks atvērts jauns uznirstošais logs).

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

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

[comment]: # ({817ae9ce-b2974109})
**Ja webhook tests ir veiksmīgs:**

-   tiek parādīts ziņojums *"Media type test successful."*.
-   servera atbilde tiek parādīta pelēkajā laukā *Response*.
-   zem lauka *Response* tiek norādīts atbildes tips (JSON vai String).

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

[comment]: # ({d11e9918-abfbc807})
**Ja webhook tests neizdodas:**

-   tiek parādīts ziņojums *"Media type test failed."*, kam seko papildu informācija par kļūmi.

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

[comment]: # ({22965c08-6eeec89a})
#### Lietotāja medijs

Kad medija tips ir konfigurēts, dodieties uz sadaļu *Users > Users* un piešķiriet webhook mediju esošam lietotājam vai izveidojiet jaunu lietotāju, kas pārstāvēs webhook.
Darbības, kā iestatīt lietotāja mediju esošam lietotājam, kas ir kopīgas visiem mediju tipiem, ir aprakstītas lapā [Mediju tipi](/manual/config/notifications/media#user-media).

Ja webhook izmanto birkas, lai glabātu pieteikuma\\ziņojuma ID, nepiešķiriet vienu un to pašu webhook kā mediju dažādiem lietotājiem, jo tas var izraisīt webhook kļūdas (attiecas uz lielāko daļu webhook, kas izmanto opciju *Include event menu entry*).
Šādā gadījumā ieteicamā prakse ir izveidot atsevišķu lietotāju, kas pārstāvēs webhook:

1.  Pēc webhook medija tipa konfigurēšanas dodieties uz sadaļu *Users > Users* un izveidojiet atsevišķu Zabbix lietotāju, kas pārstāvēs webhook — piemēram, ar lietotājvārdu *Slack* Slack webhook vajadzībām.
Visus iestatījumus, izņemot mediju, var atstāt pēc noklusējuma, jo šis lietotājs nepieslēgsies Zabbix.
2.  Lietotāja profilā atveriet cilni *Media* un [pievienojiet webhook](/manual/config/notifications/media#user-media), norādot nepieciešamo kontaktinformāciju.
Ja webhook neizmanto lauku *Send to*, ievadiet jebkādu atbalstīto rakstzīmju kombināciju, lai apietu validācijas prasības.
3.  Piešķiriet šim lietotājam vismaz lasīšanas [atļaujas](/manual/config/users_and_usergroups/permissions#permissions-to-host-groups) visiem hostiem, kuriem tam jānosūta brīdinājumi.

Konfigurējot brīdinājumu darbību, laukā *Send to users* sadaļā Operation details pievienojiet šo lietotāju — tas norādīs Zabbix izmantot webhook paziņojumiem no šīs darbības.

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

[comment]: # ({1b5d3274-ac89791d})
#### Brīdinājumu darbību konfigurēšana

Darbības nosaka, kuri paziņojumi jānosūta, izmantojot webhook.
Darbību [konfigurēšanas](/manual/config/notifications/action) soļi, kuros tiek izmantoti webhook, ir tādi paši kā visiem citiem mediju tipiem, izņemot šādus gadījumus:

-   Ja webhook izmanto [webhook tagus](https://www.zabbix.com/documentation/guidelines/en/webhooks#webhook-tags), lai saglabātu biļetes\\ziņojuma ID un apstrādātu atjaunināšanas\\atrisināšanas darbības, izvairieties no viena un tā paša webhook izmantošanas vairākās brīdinājumu darbībās vienam problēmas notikumam.
Ja {EVENT.TAGS.<tag name>} pastāv un tiek atjaunināts webhook, tā iegūtā vērtība būs nedefinēta.
Lai no tā izvairītos, izmantojiet webhook jaunu taga nosaukumu atjaunināto vērtību glabāšanai.
Tas attiecas uz Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad un Zendesk webhook, ko nodrošina Zabbix, kā arī uz lielāko daļu webhook, kas izmanto opciju *Include event menu entry*.
Tomēr ņemiet vērā, ka vienu webhook var izmantot vairākās vienas un tās pašas darbības operācijās vai eskalācijas soļos, kā arī dažādās darbībās, kuras netiks aktivizētas ar vienu un to pašu problēmas notikumu atšķirīgu [nosacījumu](/manual/config/notifications/action/conditions) dēļ.
-   Izmantojot webhook darbībās [iekšējiem notikumiem](/manual/config/events/sources#internal-events), noteikti atzīmējiet izvēles rūtiņu *Custom message* un definējiet pielāgotu ziņojumu darbības operācijas konfigurācijā.
Pretējā gadījumā paziņojums netiks nosūtīts.

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