Instantní zprávy po intranetu jinak

31. července 2003

Při troše nápaditosti je možné začít jako doplněk intranetu využívat standardní výbavu Windows k posílání okamžitých zpráv uživatelům sítě. Hodí se to tam, kde nechceme instalovat žádné další produkty, které musíme buď koupit nebo se smířit s vestavěnou reklamou. Některé produkty jsou navíc závislé na připojení k internetu, takže v chráněných sítích (firewall nebo proxy vyžadující zvláštní autentifikaci) je není možné provozovat vůbec.

Ve skutečnosti nejde o nic jiného, než o usnadnění použití nepohodlného povelu pro příkazový řádek ve Windows NT/2K/XP (možnosti Windows 9x/Me jsou odlišné a popíšeme je dále). Při výchozí instalaci je aktivní takzvaná „Kurýrní služba“ (Messenger Service), systém je tedy stále připraven přijímat zprávy. Přijatá zpráva je zobrazena v popředí, takže není možné ji přehlédnout. Zprávy se nikam neukládají, jakmile uživatel potvrdí její přečtení tlačítkem OK nebo zprávu nelze doručit (adresát není dostupný), zpráva zanikne. Zde tedy žádný problém není, horší je to s odesíláním. Zprávu lze odeslat pomocí systémové konzole v ovládacích panelech nebo povelem Net Send z příkazového řádku, což je velmi diskomfortní – je nutné si pamatovat přesné zadání parametrů a navíc řada uživatelů už ani prostředí příkazového řádku nezná.

Řešením je dávkový soubor, díky němuž můžeme také odesílat jednu zprávu více uživatelům. Dávkový soubor převezme od uživatele adresáta a text zprávy, odešle ji a podá zprávu o úspěšnosti doručení. Jde o klasický soubor pro MS-DOS, což je dnes sice historie, ale pro naši potřebu oněch pár bajtů textu skvěle poslouží, aniž by bylo nutné cokoli instalovat.

@Echo Off
Cls
:NextAddress
Echo.
If %USERNAME%XXX == XXX GoTo WinPopUp
Set ADDRESS=%1
If Not %ADDRESS%XXX == XXX GoTo IsAddress
Echo +++ Odeslání zprávy uživateli nebo na počítač +++
Echo – pro nápovědu zadejte jako příjemce ?
Echo.
Set /p ADDRESS=Příjemce zprávy:
GoTo SetMessage
:IsAddress
Echo +++ Odeslání zprávy pro %ADDRESS% +++
Echo.
:SetMessage
If %ADDRESS%==? GoTo Help
If Not %MESSAGE%XXX == XXX GoTo IsMessage
Set /p MESSAGE=Text zprávy:
Echo.
:IsMessage
Net.exe Send %ADDRESS% Od %USERNAME%: %MESSAGE% > nul
Echo.
If ErrorLevel 1 GoTo Error
Echo Zpráva byla úspěšně doručena příjemci %ADDRESS%
GoTo End
:Help
Echo.
Echo Touto aplikací můžete zaslat zprávu, která bude doručena přímo na obrazovku.
Echo.
Goto End
:Error
Echo Zpráva nebyla doručena, příjemce %ADDRESS% není dostupný!
:End
Shift
Echo.
If Not %1XXX == XXX Goto NextAddress
Set ADDRESS=
Set MESSAGE=
Echo.
Echo Pro pokračování stiskněte libovolnou klávesu…
Pause > nul
GoTo End2
:WinPopUp
WinPopUp.exe
:End2

Dávkový soubor nejprve zjistí, zda je k dispozici uživatel v proměnné USERNAME. Pokud ne, dojde k pokusu o spuštění aplikace WinPopUp (popsáno dále), protože nejde o systém WinNT/2K/XP (kde se tato proměnná nachází). Dále se ověří, zda je zadán nějaký parametr. Pokud ano, použije se jako jméno adresáta. To se hodí pro případ, kdy chceme připravit různé zástupce pro předem definované uživatele. Pokud není zadán žádný parametr, zobrazí se výzva pro zadání adresáta. Adresát je poté dočasně uložen do systémové proměnné ADDRESS (jedině takto lze totiž od uživatele v dávkovém souboru převzít a uložit nějaký údaj). Dále zjistíme, zda jako adresát není zadán znak „?“, pokud ano, zobrazí se jen nápověda. Pokud ne, zobrazí se výzva pro zadání textu zprávy. Ta je poté dočasně uložena do systémové proměnné MESSAGE.

Následně jsou zadané údaje předány povelu Net Send, navíc je k textu zprávy přidáno jméno odesílatele, které je dostupné v proměnné USERNAME. Výstup je přesměrován do zařízení NUL, takže pokud nedojde k chybě, příkaz na obrazovku odesílatele nic nezobrazí. Výslednou zprávu o odeslání si zobrazíme sami prostřednictvím otestování hodnoty ERRORLEVEL. Pokud není 0, došlo k chybě a zprávu se nepodařilo odeslat.

Pomocí povelu Shift se „přesuneme“ v předávaných parametrech o jeden dále – tedy parametr %1 bude ve skutečnosti udávat hodnotu druhého parametru. Pokud je nějaký takový zadán, skočíme na návěští NextAddress a celý postup odesílání zprávy se provede pro dalšího uživatele. Při tomto průchodu je již nastavena i proměnná MESSAGE, není tedy zobrazen dotaz na text zprávy, odesílá se prve zadaný text. Takto jsme pomocí povelu Shift vytvořili cyklus, který provede odeslání na všechny uživatele, zadané jako parametry oddělené mezerou, a to aniž bychom dopředu znali jejich počet – můžeme tedy hromadně odeslat zpráv více vyjmenovaným uživatelům, například všem kolegům v kanceláři.

Nakonec zrušíme dočasné proměnné adresáta a textu zprávy, zobrazíme výzvu pro stisk klávesy pro pokračování a použijeme povel Pause. Jeho výstup je také přesměrován do NUL, díky čemuž můžeme mít výzvu zobrazenou česky i pokud máme anglickou verzi Windows.

Následující obrázek ukazuje, jak to může vypadat, pokud zkušebně pošlete zprávu sami sobě:

Okno zkušební zprávy

Dávkový soubor tedy máme, ovšem hlavní práce nás teprve čeká. Nejprve umístíme soubor do sdílené složky, aby jej mohli všichni uživatelé použít. Vytvoříme k němu zástupce a původní dávkový soubor nastavíme jako skrytý. Ve složce tak zůstane viditelný jen zástupce. Ve vlastnostech zástupce pak nastavíme velikost okna, vhodnou ikonu, písmo a barvy. Částečně tím napravíme nepřívětivost výchozího černobílého příkazového řádku. Dobré je zvolit barvy, které používáme i na ostatních stránkách našeho intranetu. Dále si zkopírujeme zástupce třeba na Plochu, tam jej přejmenujeme na jméno uživatele a do cesty (Target) přidáme parametr jména uživatele. Vznikne tak zástupce, kterým budeme odesílat zprávy přímo danému uživateli. Upraveného zástupce zkopírujeme do sdílené složky a zástupce, kterého máme zkopírovaného na ploše, upravíme pro dalšího uživatele a opět nakopírujeme do sdílené složky a tak dále, dokud nebudeme mít zástupce všech uživatelů. Ve větších sítích bude asi dobré vytvořit pro různé týmy zvlášť složky se zástupci uživatelů jen z konkrétní skupiny. Můžeme vytvořit i zvláštní zástupce, které hromadně odešlou zprávu více uživatelům – prostě v příkazovém řádku zástupce vyjmenujeme více uživatelů oddělených mezerou.

Výsledné okno složky potom může vypadat následovně (jsou vidět zástupci předpřipravených uživatelů a zástupce pro poslání zprávy komukoli):

Složka se zástupci

Do stránky v intranetu potom přidáme odkaz, směřující ke složce s našimi zástupci, nebo třeba iframe, který bude mít jako zdroj uvedenu cestu do složky se zástupci. Pokud se na intrantetu používá Internet Explorer, bez problémů se takovým odkazem otevře složka pro odesílání zpráv (v poslední verzi Mozilly to funguje také):

<a href=“\\PC_se_sdilenou_slozkou\Messaging\“ target=“_blank“>Messaging</a>

K našemu dávkovému souboru lze jen dodat, že zadáním adresáta „*“ se zpráva odešle všem uživatelům v síti. Zadat můžete také počítač pomocí IP adresy.

Na závěr doplněk pro systémy s Windows 9x/Me, v kterých Kurýrní služba není a vestavěný povel Net nezná službu Send. V tomto systému musíme použít aplikaci WinPopUp (přidá se v ovládacích panelech), která zprávy umožňuje odesílat i přijímat. Aby byla tato služba trvale k dispozici, je nejlepší přidat do složky „Po spuštění“ zástupce programu WinPopUp a ve vlastnostech zástupce nastavit, aby se spouštěl v minimalizovaném okně. Nestraší tak na ploše, ale přitom je připraven přijímat zprávy. Bohužel tato služba nedovede v sítích bez doménového řadiče určit, zda byla zpráva korektně doručena. Jinak lze ovšem naprosto transparentně posílat zprávy mezi systémy s WinPopUpem a Kurýrní službou. Aby se WinPopUp choval co nejpodobněji Kurýrní službě, je dobré nastavit možnosti podle obrázku. Uživatelé tohoto programu si však nebudou moci vybrat z předvolených uživatelů, jméno adresáta budou muset vždy vypisovat ručně.

Konfigurace WinPopUp

Navíc můžete použít soubor winpopup.reg a winpopup.adm, kterými lze uvedená nastavení vnutit pomocí editoru registru nebo editoru systémové politiky přímo po síti. Můžete si také stáhnout všechny zmíněné soubory a použít je, aniž byste je museli upravovat.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *