V neděli jsem napsal drobný skript v ruby - sip klienta. Který se registruje jako telefon a dostává tak informace o všech příchozích hovorech na linku na kterou je registrován. Samozřejmě volat neumí.
Celé to má jen cca 60 řádků a je to velmi primitivní, tedy žádné mistrovské dílo, ale o to snadnější to může být k pochopení.
http://www.odorik.cz/w/ruby_sip_client
Výsledek je tento:
Přepsání do jiného jazyka by též nemělo být neměla být práce na na delší dobu než na půl hodiny. Nevím ale jak je to použitelné pro někdo, kdo má jen běžný webhosting. Je tam možnost si spouštět vlastní aplikace na pozadí? Nebo v jistých časových intervalech?
Kód sice není RFC korektní, snažím se korektně nastavovat jen ty SIP hlavičky, které mají v praxi význam. Např. specifikace vyžaduje vyplňovat v SIP hlavičkách lokální ip adresu a port. V praxi ale na tom nezáleží, protože téměř všechny SIP clienti jsou na neveřejné IP adrese za NATem, tedy tyto údaje stejně nikdo nečte, vždy se posílá tam odkud tyto pakety přišly. Totiž autoři SIPu ve své zahleděnosti na některé podstatné věci úplně zapomněli ...
Můj malinký SIP client příchozí hovory zaznamená a poté je dále ignoruje, tedy úmyslně se tváří jako právě kousnutý či od internetu odpojený Grandstream či Android (který se neodregistroval). Což je poměrně častý jev a nemělo by to způsobovat žádné problémy či vedlejší efekty.
Tuhle verzi zveřejnil kvůli své jednoduchosti a přehlednosti pro začínající programátory. Předpokládám, že udělám pokročilejší verzi, která budou odebírat informace typu
BLF a zobrazovat je lokálně. Možné je i přepojování či přebírání hovorů. Mohl bych dodělat i možnost chatovat. To ale už nebude na 60 řádků a ten kdo nezná ruby by se v tom mohl ztratit.
Pravda programovací jazyk Ruby asi není nejvhodnější. Nejlepší by bylo tohle napsat v javascriptu, podobně jako aplikaci
http://www.odorik.cz/aw/ . Aplikace by šla pak umístit na libovolné stránky a propojit s konkrétní funkcionalitou a designem. Tedy plán je takový to celé napsat v Ruby a poté někoho kdo má zkušenosti s javascriptem požádat o přepsání do javascriptu. Člověk co umí a používá javascript obvykle nezná a nechce se zabývat SIPem a obráceně...