Project: TURRIS - komunikační program Telegram a notifikace
Pokud používáte TURRIS trošičku více, tak určitě využíváte emailové notifikace různých stavů. Chyběla mi možnost využití komunikačního kanálu Apple Push, která by se pro použití notifikací routeru vysloveně hodila. Naneštěstí tu máme program Telegram (kdo nezná, tak analogie oblíbeného WhatsApp nebo Viber), kde se dá vytvořit vlastní "robotický" uživatel (bot), který následně zasílá dané zprávy přímo na všechna připojená zařízení do Telegramu pod vaším účtem.
Pro každý návod je třeba mít připojen router prostřednictvím SSH, tedy v případě Windows doporučuji například program Putty. Tedy v konzoli musíte vidět:
root@turris:~#
1) Instalace
Nejprve se přepneme do adresáře "/tmp/":
cd /tmp/
Poté stáhneme Pip:
wget https://bootstrap.pypa.io/get-pip.py
Pip se začne stahovat:
root@turris:/tmp# wget https://bootstrap.pypa.io/get-pip.py --2017-01-28 16:04:55-- https://bootstrap.pypa.io/get-pip.py Resolving bootstrap.pypa.io... 151.101.112.175 Connecting to bootstrap.pypa.io|151.101.112.175|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1595408 (1.5M) [text/x-python] Saving to: 'get-pip.py' get-pip.py 100%[===================>] 1.52M 3.17MB/s in 0.5s 2017-01-28 16:04:57 (3.17 MB/s) - 'get-pip.py' saved [1595408/1595408]
Provedeme spuštění skriptu, čímž se začne instalovat Pip a závislosti:
python get-pip.py
Balíčky si začnou stahovat a následně instalovat:
root@turris:/tmp# python get-pip.py Collecting pip Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB) 100% |################################| 1.3MB 167kB/s Collecting setuptools Downloading setuptools-34.1.0-py2.py3-none-any.whl (389kB) 100% |################################| 399kB 471kB/s Collecting wheel Using cached wheel-0.29.0-py2.py3-none-any.whl Collecting six>=1.6.0 (from setuptools) Downloading six-1.10.0-py2.py3-none-any.whl Collecting packaging>=16.8 (from setuptools) Downloading packaging-16.8-py2.py3-none-any.whl Collecting appdirs>=1.4.0 (from setuptools) Downloading appdirs-1.4.0-py2.py3-none-any.whl Collecting pyparsing (from packaging>=16.8->setuptools) Downloading pyparsing-2.1.10-py2.py3-none-any.whl (56kB) 100% |################################| 61kB 1.6MB/s Installing collected packages: pip, six, pyparsing, packaging, appdirs, setuptools, wheel Successfully installed appdirs-1.4.0 packaging-16.8 pip-9.0.1 pyparsing-2.1.10 setuptools-34.1.0 six-1.10.0 wheel-0.29.0
Poté pomocí Pip nainstalujeme "telegram-send":
pip install telegram-send
Začnou se stahovat závislosti i program a následně instalovat:
root@turris:/tmp# pip install telegram-send Collecting telegram-send Downloading telegram_send-0.8.5-py2.py3-none-any.whl Requirement already satisfied: appdirs in /usr/lib/python2.7/site-packages (from telegram-send) Collecting python-telegram-bot>=2.8.3 (from telegram-send) Downloading python_telegram_bot-5.3.0-py2.py3-none-any.whl (154kB) 100% |################################| 163kB 985kB/s Collecting colorama (from telegram-send) Downloading colorama-0.3.7-py2.py3-none-any.whl Collecting future>=0.15.2 (from python-telegram-bot>=2.8.3->telegram-send) Downloading future-0.16.0.tar.gz (824kB) 100% |################################| 829kB 260kB/s Collecting certifi (from python-telegram-bot>=2.8.3->telegram-send) Downloading certifi-2017.1.23-py2.py3-none-any.whl (382kB) 100% |################################| 389kB 450kB/s Collecting urllib3>=1.10 (from python-telegram-bot>=2.8.3->telegram-send) Downloading urllib3-1.20-py2.py3-none-any.whl (111kB) 100% |################################| 112kB 924kB/s Building wheels for collected packages: future Running setup.py bdist_wheel for future ... done Stored in directory: /root/.cache/pip/wheels/d8/26/6a/0d3jk3jd3yoa738s9d8safad28d3ss Successfully built future Installing collected packages: future, certifi, urllib3, python-telegram-bot, colorama, telegram-send Successfully installed certifi-2017.1.23 colorama-0.3.7 future-0.16.0 python-telegram-bot-5.3.0 telegram-send-0.8.5 urllib3-1.20
Vytvoříme adresář a konfigurační soubor:
mkdir /root/.config touch /root/.config/telegram-send.conf
Tímto skončíme instalační část na routeru a budeme se věnovat zařízením.
2) Vytvoření bota
Vezmeme si tedy mobilní telefon a pokud nemáme, tak nainstalujeme aplikaci Telegram (iTunes AppStore, Google Play, Windows Phone). Po instalaci ji spustíme a projdeme průvodce (zadání tel. čísla, potvrzení,..).
Ve spuštěné aplikaci ve vyhledávání dáme vyhledat "BotFather" a po jeho nalezení jej rozklikneme. BotFather (otec botů) nám vypíše možné příkazy a my zadáme příkaz pro vytvoření nového bota:
/newbot
Spustí se vytváření nového bota a BotFather nás vyzve k zadání jména. Zde zadejte tedy jeho jméno. Dalším dotazem bude výběr uživatelského jména daného bota. Toto musí být v celém systému Telegramu naprosto unikátní. Zadejte tedy uživatelské jméno. Pokud je jméno volné, tak BotFather napíše gratulaci a zároveň vypíše tzv. přístupový token, který následně budete vkládat v rámci konfigurace do svého routeru.
3) Konfigurace
Nyní se budeme zabývat konfigurací routerové části a připojením k účtu. Zadáme tedy příkaz pro spuštění konfiguračního průvodce:
telegram-send --configure
Dojde ke spuštění průvodce, která nás žádá o vložení tzv. přístupového tokenu, který byl v předchozím kroku v aplikaci. Přepíšeme jej tedy a potvrdíme. Dále nám router vypíše jméno bota a heslo. V Telegramu bota vyhledáme a přidáme si ho do kontaktů a pro potvrzení vložíme heslo (na příkladu 12345), čímž dojde k propárování účtů:
Talk with the BotFather on Telegram (https://telegram.me/BotFather), create a bot and insert the token ❯ 12345678:KDSjcaif38dfa83dfa9a3-dsf3YdmnBQ2 Connected with VášNovýBot. Please add VášNovýBot on Telegram (https://telegram.me/VášNovýBot) and send it the password: 12345 Congratulations Franta! telegram-send is now ready for use!
Ověříme funkčnost spojení zadáním zaslání testovací zprávy:
telegram-send message "První testovací zpráva"
Nyní by se zpráva měla automaticky doručit do mobilního telefonu nebo zařízení, které používáte. A můžete začít využívat této možnosti například v rámci vlastních skriptů ;)