⚠️ Deprecated: Zabbix now includes official support for Telegram media, see https://www.zabbix.com/integrations/telegram.
Replace my_zabbix_bot and My Zabbix Bot below with your own names.
Add @BotFather contact in Telegram and press 'start',
then type:
/newbot
My Zabbix Bot
my_zabbix_bot
The bot will reply you with a token, which we will refer to as ${TOKEN} below.
Add a @my_zabbix_bot contact to your Telegram, press 'start' and send a random message.
Now we need to retrieve a chat_id for this conversation.
$ curl "https://api.telegram.org/bot${TOKEN}/getUpdates"
{"ok":true,"result":[{"update_id":...,"message":{"message_id":...,"from":{...},"chat":{"id":<CHAT_ID>,...},"date":...,"text":...}}]}
The <CHAT_ID> above is what you need. It's the RESULT.result[0].message.chat.id key in JSON notation.
Test that it actually works:
$ curl -X POST --retry 5 --retry-delay 0 --retry-max-time 60 --data-urlencode "chat_id=${CHAT_ID}" --data-urlencode "text=Hello" "https://api.telegram.org/bot${TOKEN}/sendMessage?disable_web_page_preview=true"
Find out your AlertScriptsPath from the zabbix_server.conf. It's ${datadir}/zabbix/alertscripts by default.
Put the telegram.sh file (attached) to that folder. Don't forget to chmod +x telegram.sh
Open your Zabbix web interface, navigate to 'Administration - Media types - Create',
Put in the form:
- Name:
Telegram - Type:
Script - Script name:
telegram.sh - Script parameters (Zabbix 3 only):
{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}
Ensure that you have an action (Configuration - Actions) which sends to the Telegram media type.
Navigate to 'Administration - Users - <Your user> - Media', add Telegram, in the 'Send to' field put your ${CHAT_ID} and ${TOKEN}, separated with space, for example: 12345678 123456789:AAaaaaAAAaaa_aAAaaAaA-aaAAa.

I'm using Zabbix 4.4. If an alert is active, I've got a single message in telegram with only "Subject:"
Maybe the behavior in zabbix is changed?
It woulf be nice if you cat take a look at this