[comment]: # translation:outdated

[comment]: # ({56bf7160-56bf7160})
# 4 Вебхук

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

[comment]: # ({6584b266-6584b266})
#### Обзор

Этот тип оповещений полезен для выполнения HTTP вызовов с использованием пользовательского кода JavaScript для прямой интеграции с внешними системами, такими как системы поддержки, чаты или мессенджеры. Вы можете импортировать интеграции, поставляемые Zabbix, или создать свою собственную интеграцию с нуля.

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

[comment]: # ({b3b80c04-27a06b1f})
#### Интеграции

Доступны следующие интеграции, которые позволяют использовать подготовленные способы оповещения вебхук для отправки оповещений Zabbix в:

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

::: notetip
 В дополнение к перечисленным здесь сервисам, Zabbix можно интегрировать с **Spiceworks** (вебхук не требуется). Чтобы преобразовать оповещения Zabbix в тикеты Spiceworks, используйте [способ оповещений e-mail](/manual/config/notifications/media/email) и введите e-mail адрес службы поддержки Spiceworks (например, help\@zabbix.on.spiceworks.com) в настройках предусмотренного для этого пользователя Zabbix.
:::

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

[comment]: # ({8a493502-d84f1038})
#### Настройка

Чтобы начать использовать интеграцию вебхук:

1.   Найдите нужный .xml файл в директории `templates/media` загруженной версии Zabbix или загрузите его с [git репозитория](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse) Zabbix.
2.   [Импортируйте](/manual/xml_export_import/media#импорт) файл в вашу инсталляцию Zabbix. Вебхук появится в списке способов оповещений.
3.   Настройте вебхук согласно инструкциям в файле *Readme.md* (для быстрого доступа к *Readme.md* вы можете нажать на имя вебхука в списке выше).

Чтобы создать пользовательский вебхук с нуля:

-   Перейдите в *Оповещения → Способы оповещений*
-   Нажмите *Создать способ оповещений*

Вкладка **Способ оповещения** содержит различные атрибуты конкретно для этого способа оповещений:

![](../../../../../assets/en/manual/config/notifications/media/media_webhook_express.png)

Все обязательные поля ввода отмечены красной звездочкой.

Следующие параметры уникальны для способов оповещений на основе вебхук:

|Параметр|Описание|
|--|--------|
|*Параметры*|Укажите переменные вебхук в виде пар атрибутов и значений.<br>По уже предварительно добавленным вебхукам список параметров зависит от сервиса. Для информации о параметрах проверьте файл *Readme.md* вебхука.<br>По новым вебхукам некоторые переменные включены по умолчанию (URL: <пусто>, HTTPProxy: <пусто>, Кому: {ALERT.SENDTO}, Тема: {ALERT.SUBJECT}, Сообщение: { ALERT.MESSAGE}), вы можете сохранить их или удалить.<br>В параметрах вебхуков поддерживаются [пользовательские макросы](/manual/appendix/macros/supported_by_location_user), все [макросы](/manual/appendix/macros/supported_by_location), которые поддерживаются в оповещениях о проблемах, а также макросы {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}.<br><br>Если вы указываете прокси-сервер HTTP, поле поддерживает те же функции, что поле [HTTP прокси](/manual/config/items/itemtypes/http#настройка) настройки элемента данных. Строка прокси может иметь префикс `[схема]://`, чтобы можно было указать, какой тип прокси будет использоваться (например, https, socks4, socks5; смотрите [документацию](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html)).|
|*Скрипт*|Введите код JavaScript в блоке, который появляется при нажатии на поле параметра (или на кнопку просмотра/изменения рядом с ним). Код выполнит операцию вебхука.<br>Скрипт - это код функции, который принимает пары "параметр - значение". Значения необходимо преобразовать в объекты JSON, используя метод JSON.parse(), например `var params = JSON.parse(value);`.<br><br>Этот код имеет доступ ко всем параметрам, он может выполнять запросы HTTP GET, POST, PUT и DELETE и управлять HTTP-заголовками и телом запроса.<br>Скрипт должен содержать оператор возврата (return), в противном случае он не пройдет проверку. Код может возвращать состояние OK вместе с необязательным списком тегов и значений тегов (смотрите опцию *Обработка тегов* ) или строку с ошибкой.<br><br>Обратите внимание, что скрипт выполняется только после создания оповещения. Если скрипт настроен на возврат и обработку тегов, эти теги не будут раскрыты в макросах {EVENT.TAGS} и {EVENT.RECOVERY.TAGS} в изначальном сообщении о проблеме и в сообщениях о восстановлении, потому что скрипт еще не успел запуститься.<br><br>Смотрите также: [Руководство по разработке вебхук](https://www.zabbix.com/documentation/guidelines/en/webhooks), [Примеры скриптов вебхук](/manual/config/notifications/media/webhook/webhook_examples), [Дополнительные объекты JavaScript](/manual/config/items/preprocessing/javascript/javascript_objects).<br>|
|*Время ожидания*|Время ожидания выполнения JavaScript (1-60с, по умолчанию 30с).<br>Поддерживаются суффиксы времени, например, 30s, 1m.|
|*Обработка тегов*|Отметьте для обработки возвращаемых значений свойств JSON в виде тегов. Эти теги добавляются к уже существующим (если имеются) тегам событий о проблемах в Zabbix.<br>Если вебхук использует теги (опция Обработка тегов выбрана), вебхук всегда должен возвращать JSON объект, содержащий по крайней мере пустой объект тегов:`var result = {tags: {}};`.<br>Примеры тегов, которые можно вернуть: *Jira ID: PROD-1234*, *Responsible: John Smith*, *Processed:<no value>* и т.д.|
|*Добавить пункт в меню события*|Отметьте, чтобы добавить пункт в [меню события](/manual/web_interface/frontend_sections/monitoring/problems#меню_события) для связи с созданной внешней задачей.<br>Если отмечено, вебхук не должен использоваться для отправки оповещений разным пользователям (вместо этого рассмотрите возможность создания [выделенного пользователя](/manual/config/notifications/media/webhook#оповещение пользователя)) или в нескольких действиях оповещений, которые [связаны с одним событием о проблеме](/manual/config/notifications/media/webhook#настройка_действий_на_оповещения).|
|*Имя пункта меню*|Укажите название пункта меню.<br>Поддерживается макрос {EVENT.TAGS.<имя тега>}.<br>Это поле обязательно, только если выбрана опция *Добавить пункт в меню события*.|
|*URL пункта меню*|Укажите основной URL адрес пункта меню.<br>Поддерживается макрос {EVENT.TAGS.<имя тега>}.<br>Это поле является обязательным, только если выбрана опция *Добавить пункт в меню события*.|

Смотрите также [общие параметры способов оповещений](/manual/config/notifications/media#общие_параметры) для получения подробной информации о настройке сообщений по умолчанию и опциях обработки оповещений.

::: notewarning
 Даже если вебхук не использует сообщения по умолчанию, все же необходимо задать шаблоны сообщений для типов операций, используемые этим вебхуком. 
:::

[comment]: # ({/8a493502-d84f1038})

[comment]: # ({d9bb0703-e5e73ea8})

#### Проверка способа оповещения

Чтобы проверить настройки способа оповещения посредством вебхука:

-   Найдите соответствующий вебхук в [списке](/manual/config/notifications/media#обзор) способов оповещений.
-   Нажмите *Тест* в последней колонке (отроется окно проверки).
-   Измените параметры вебхука, если необходимо.
-    Нажмите *Тест*.

По умолчанию проверка вебхука выполняется по параметрам, заданным при настройке. Однако для проверки значения можно поменять. Замена или удаление значений в окне проверки затрагивает только проверку, реальные значения вебхука останутся без изменений.

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

Чтобы посмотреть записи в журнале, относящиеся к проверке способа оповещения, не закрывая окно проверки, нажмите *Открыть журнал* (он будет открыт в новом окне).

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

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

[comment]: # ({307f8831-b2974109})
**Если проверка вебхука успешна:**

-   Появится сообщение *"Успешное тестирование способа оповещения."*
-   В сером поле *Ответ* отображается ответ сервера
-   Под полем *Ответ* указывается тип ответа (JSON или "Строка")

[comment]: # ({/307f8831-b2974109})

[comment]: # ({fc3db87a-abfbc807})
**Если проверка вебхука неуспешна:**

-   Отображается сообщение *"Ошибка при тестировании способа оповещения."* с указанием дополнительных сведений.

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

[comment]: # ({1bd8ec9a-6eeec89a})
#### Оповещение пользователей

После того как способ оповещения настроен, перейдите в раздел *Пользователи → Пользователи* и укажите вебхук для существующего пользователя или создайте нового пользователя для использования вебхука. Шаги по настройке оповещений пользователей, общие для всех способов оповещений, описаны на странице [Способов оповещений](/manual/config/notifications/media#оповещение_пользователей).

Если вебхук использует теги для хранения задачи\\ID сообщения, избегайте назначение этого же вебхука способом оповещения разным пользователям, так как это может вызвать ошибки вебхука (применимо к большинству вебхуков, которые используют опцию *Добавить пункт в меню события*). В этом случае лучше всего создать отдельного пользователя для вебхука:

1.  После настройки способа оповещения вебхук, перейдите в раздел *Пользователи → Пользователи* и создайте выделенного Zabbix пользователя для вебхука - например, с именем пользователя *Slack* для вебхука Slack. Все настройки, за исключением оповещения, можно оставить по умолчанию, так как этот пользователь не будет входить в Zabbix.
2.  В профиле пользователя перейдите на вкладку *Оповещения* и [добавьте вебхук](/manual/config/notifications/media#оповещение_пользователей) с необходимой контактной информацией. Если вебхук не использует поле *Отправлять на*, введите любую комбинацию поддерживаемых символов для обхода требования наличия адресата.
3.  Разрешите этому пользователю по крайней мере [права](/manual/config/users_and_usergroups/permissions#права_доступа_к_группам_узлов_сети) чтения ко всем узлам сети, по которым ему нужно отправлять оповещения.

При настройке действия на оповещение добавьте этого пользователя в поле *Отправка пользователям* в Деталях операции, тогда Zabbix будет использовать вебхук для оповещений из этого действия.

[comment]: # ({/1bd8ec9a-6eeec89a})

[comment]: # ({ac89791d-ac89791d})
#### Настройка действий на оповещения

Действия определяют, какие оповещения следует отправлять через вебхук. Шаги для [настройки действий](/manual/config/notifications/action) с использованием вебхука абсолютно такие же, как и для всех остальных способов оповещения за некоторыми исключениями:

-   Если вебхук использует теги для хранения задачи\\ID сообщения и для отслеживания операций обновления\\восстановления, этот вебхук не следует использовать в нескольких действиях на оповещения по одной и той же проблеме. Если {EVENT.TAGS.<имя>} уже существует и он будет обновлен в вебхуке, в этом случае его окончательное значение будет не определено. Для такого случая в вебхуке необходимо использовать новое имя тега для хранения обновленных значений. Это применимо к вебхукам Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad и Zendesk, которые поставляются Zabbix и к большинству вебхуков, которые используют опцию *Добавить пункт в меню события*. Использование вебхука в нескольких операциях допустимо, если эти операции или шаги эскалации принадлежат одному действию. Также можно использовать этот вебхук в разных действиях, если эти действия не применяются к одному событию проблемы из-за разных условий фильтра.
-   При использовании вебхука в действиях на [внутренние события](/manual/config/events/sources#внутренние_события): в настройках операций действия отметьте опцию *Пользовательское сообщение* и укажите пользовательское сообщение, в противном случае оповещение не будет отправлено.

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