Telegram Bot gebruiken voor Domoticz-notificaties

Introductie

Voor Domoticz-notificaties kun je verschillende commerciële apps gebruiken, maar het is ook mogelijk om Telegram Bot hier voor in te zetten. Telegram is vergelijkbaar met WhatsApp, maar dan met volledige Cross platform-ondersteuning! Ook kun je met Telegram-berichten Domoticz beheren. In juni 2015 heeft Telegram een ​​bot-platform geïntroduceerd. Hierdoor hoef je op je Domoticz-systeem geen andere software te installeren als je Telegram wilt gebruiken voor Domoticz-notificaties of om bepaalde opdrachten uit te laten voeren.

Benodigdheden

Telegram Bot  en token aanmaken

We gaan nu eerst een eigen Telegram Bot maken. Dat klikt een stuk lastiger dan het in werkelijkheid is. Hieronder zie je een voorbeeld van het maken van een bot genaamd Domoticz met de gebruikersnaam ehocobot en het token is 657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2. Dit token heb je nodig om als bot berichten te kunnen verzenden.

Met de Telegram-app (op je smartphone of pc, dat maakt niet uit) maak verbinding met @BotFather en volg het onderstaande gesprek (jouw berichten staan in het rood gedrukt):

What can this bot do? Botfather is one bot to rule them all. Use it to create new bot accounts and manage your existing bots. About Telegram bots: https://core.telegram.org/bots, Bot API manual: https://core.telegram.org/bots/api

Hello

They call me the Botfather, I can help you create and set up Telegram bots. Please read this manual before we begin: https://core.telegram.org/bots. You can control me by sending these commands:
/newbot – create a new bot
/token – generate authorization token
/revoke – revoke bot access token
/setname – change a bot’s name
/setdescription – change bot description
/setabouttext – change bot about info
/setuserpic – change bot profile photo
/setcommands – change bot commands list
/setjoingroups – can your bot be added to groups?
/setprivacy – what messages does your bot see in groups?
/deletebot – delete a bot
/cancel – cancel current operation

/newbot

Allright, a new bot. How are we going to call it? Please choose a name for your bot.

Domoticz

Good. Now let’s choose a username for your bot. It must end in ‘bot’. Like this, for example: TetrisBot or tetris_bot.

ehocobot

Done! Congratulations on your new bot. You will find it at telegram.me/ehocobot. You can now add a description, about section and profile photo for your bot, see /help for a list of commands.
Use this token to access the HTTP API:
657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2
For a description of the Bot API, see this page: https://core.telegram.org/bots/api

Bewaar je bot-naam, gebruikersnaam en token op een veilige plek!

Bot testen en Chat ID opzoeken

Stuur een paar berichtjes naar de zojuist aangemaakte Telegram Bot om te kijken of alles goed werkt. De Telegram Bot zal nu nog niets antwoorden, aangezien je hem nog niet verder geprogrammeerd hebt. Nadat je een paar berichten hebt gestuurd kun je de http api gebruiken om de berichten op te halen. In dit geval is het doel om het ID van je Telegram gebruiksnaam te vinden. Vervang in onderstaande url het dummy token door jouw echte token en pak het in een willekeurige browser:

https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/getUpdates

Let op! Vergeet niet het woord “bot” na https://api.telegram.org/.

Als je alles goed gedaan hebt dan zal je iets als onderstaande zien:

{"ok":true,"result":[{"update_id":463345810,
"message":{"message_id":1,"from":{"id":274720651,"is_bot":false,"first_name":"Joost","language_code":"nl"},"chat":{"id":274720651,"first_name":"Joost","type":"private"},"date":1539284671,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":462233811,
"message":{"message_id":2,"from":{"id":274720651,"is_bot":false,"first_name":"Joost","language_code":"nl"},"chat":{"id":274720651,"first_name":"Joost","type":"private"},"date":1539284676,"text":"Test"}}]}

Je hebt het ID nodig die achter “from”:{“id”: staat (in dit voorbeeld 274720651). Dit is het ID (274720651) van je gebruikersnaam die je gebruikt om berichten naar je bot te sturen en het ID waar je Domoticz-notificaties op zal ontvangen.

Test nu of je bot een bericht naar jou kan sturen:

https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/sendMessage?chat_id=274720651&text=Hello

Indien alles goed gaat zal je iets als onderstaand zien:

{"ok":true,"result":{"message_id":3,"from":{"id":637893624,"is_bot":true,"first_name":"Domoticz","username":"ehocobot"},"chat":{"id":274720651,"first_name":"Joost","type":"private"},"date":1539284767,"text":"Hello"}}

Op je Telegram app zal je ook een bericht ontvangen.

Domoticz instellen om Telegram Bot Noficaties te gebruiken

We gaan nu Domoticz instellen dat er gebruik gemaakt gaat worden van Telegram notificaties. Ga in Domoticz naar Setup > Settings> Notifications > Custom HTTP Action. Activeer deze box, vul het ID (274720651) in het #TO-veld en kopieer onderstaande url in het veld URL/Action (uiteraard met jouw eigen token):

https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/sendMessage?chat_id=#TO&text=#MESSAGE

Klik een keer op de Test-knop om te kijken of alles goed werkt en sla de wijzigen op door op Apply Settings te klikken.

Notificaties naar Channel versturen (meerdere gebruikers)

Bovenstaande methode werkt met één gebruiker. Indien meerdere gebruikers de Domoticz-notificaties moeten ontvangen, dan moet je gebruik maken van een channel. Maak eerst in Telegram een channel aan. Zet de channel nog niet op privé, aangezien we de channel-ID eerst nog moeten achterhalen. Geef de channel een @channelName. Voeg jouw bot toe als Administrator, zodat de bot berichten kan versturen. De bot zal niet in je contactenlijst staan, je moet er zelf naar zoeken. Verstuur een bericht naar de zojuist aangemaakte channel met de bot API:

https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/sendMessage?chat_id=@channelName&text=123

Het resultaat zal iets als onderstaande zijn:

{"ok":true,"result":{"message_id":2,"chat":{"id":-1002346216984,"title":"Domoticz","username":"channelName","type":"channel"},"date":1539427366,"text":"123"}}

Je kunt nu je channel op privé zetten en bij het #TO-veld -1002346216984 invullen (dit is je channel-ID).

Telegram Bot berichten versturen met Curl

Je kunt eenvoudig de https url gebruiken met Curl:

curl "https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/sendMessage?chat_id=274720651&text=test"

Echter, het is beter om gebruik te maken van onderstaand format, waarbij de tekst URL encoded is:

curl --data chat_id=274720651 --data-urlencode "text=Some complex text $25 78%"  "https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/sendMessage"

Telegram Bot foto’s versturen met Curl

Met de Telegram Bot api kun je ook eenvoudig foto’s versturen door gebruik te maken van de sendPhoto methode:

curl -s -X POST "https://api.telegram.org/bot657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2/sendPhoto" -F chat_id=274720651 -F photo="@/path/to/your/photo.jpg"

De Telegram Bot api heeft nog veel meer functies die hier worden uitgelegd. Nog meer informatie via je op deze site.

Telegram Bot berichten versturen met Curl in Lua

Curl kan direct gebruikt worden in Lua met de os.execute functie:

commandArray = {}
token = "657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2"
chatid = 274720651
message = 'Dit bericht komt vanuit een Lua-script!'
if (devicechanged['Test'] == 'On') then
     os.execute('curl --data chat_id='..chatid..' --data-urlencode "text='..message..'"  "https://api.telegram.org/bot'..token..'/sendMessage" ')
end
return commandArray

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *