Sending failed: Bad Request: can’t parse entities: Unsupported start tag

Это ошибка произошла у меня, когда Zabbix пытался отправить alert:

Zabbix 6.4.2

Sending failed: Bad Request: can't parse entities: Unsupported start tag "" at byte offset 106.

Оказалось дело в том, что Телеграм не смог распарсить имя триггера. И вот почему. Имя триггера имело вид:

OS partition free space < than 100GB on {HOST.NAME}

Проблема тут в знаке «<«. Если убрать/заменить, то сообщения будут отправлены.

А сама «проблема» имеет корни в скрипте отправки сообщения через телеграм.

В моём случае указан режим парсинга «HTML». На этой же странице ниже есть поле Script. Там написан скрипт, который занимается отправкой сообщения. Там есть блок:

...
escapeMarkup: function (str, mode) {
switch (mode) {
case 'markdown':
return str.replace(/([_*\[`])/g, '\\$&');

case 'markdownv2':
return str.replace(/([_*\[\]()~`>#+\-=|{}.!])/g, '\\$&');

default:
return str;
}
},
...

 

Интересно, что блока «html» в кейсах нет, но сам скрипт проверяет, был ли указан html блок. В общем, если надо решить проблему не методом редактирования имени триггера, а кардинально, то надо редактировать скрипт отправки сообщения.

Добавить комментарий