Najprostsze środowisko do poznawania SIP Servlet API składa się z - jednego komputera, w którym są uruchomione:
Podczas Javarsovia 2008 posługiwałem się troszkę bardziej złożonym "laboratorium", dzięki któremu łatwiej testować ciekawsze aplikacje korzystające z SIP Servlet API. Można je zbudować stosunkowo niewielkim kosztem.
Poniżej opis takiego mikro-laboratorium.
Jedną z trudności podczas testowania w środowisku składającym się z jednego telefonu SIP jest brak możliwości ustanowienia połączenia telefonicznego (lub wideofonicznego). M.in. dlatego, że blokowane są kanały audio w komputerze lub powstają sprzężenia. Naturalne wydaje się zatem poszerzenie środowiska o dodatkowe telefony. Jeśli ktoś ma dostęp do innego komputera, to wystarczy skomunikować oba komputery przez sieć (np. poprzez switch, czy WiFi), a na tym dodatkowym komputerze zainstalować drugi softphone. To już pozwoli ustanowić normalne połączenie telefoniczne (VoIP - Voice over IP), a jeśli softphone obsługuje video (jak np. X-Lite), to - po podłączeniu kamer - nawet połączenie wideofoniczne (Video over IP). Warto sprawdzić, czy oba komputery "widzą" się bez przeszkód (np. działa ping między nimi), a także zadbać o odpowiednią konfigurację oprogramowania firewall. Protokół SIP ma domyślny port 5060 i często firewall blokuje ten port. Oprócz tego do przesyłania SIP i mediów - dźwięk, obraz wideo - używane są zarówno TCP, jak i UDP. Dobre telefony mają obsługę NAT (STUN, ICE, itd.), ale trzeba na poprawność połączeń sieciowych zwrócić większą uwagę niż przy budowie np. aplikacji webowych.
Trzeba oczywiście skonfigurować drugi telefon, tak, aby:
Mając do dyspozycji drugi telefon SIP można już pokusić się o zbudowanie SIP Servlet'ów o bardziej złożonej logice, np.:
Poniższy rysunek pokazuje takie środowisko, rozbudowane o dodatkowy komputer z SIP softphone:

Oczywiście, nic nie stoi na przeszkodzie, aby w ten sposób podłączać kolejne softphone'y.
Kolejna rozbudowa może polegać na dodaniu "prawdziwych" telefonów, czyli kawałka sprzętu, który wygląda i działa jak normalny telefon - tyle, że jest to telefon IP (dokładniej SIP) i zamiast wtyczki telefonicznej (RJ-11) ma zwykłe gniazdko Ethernet. Z doświadczenia wiem też, że większość ludzi bardzo sceptycznie podchodzi do demonstracji, gdy pokazuje im się coś na softphone. Ale, gdy robi się takie demo z użyciem "normalnie" wyglądających, a do tego znajomo dzwoniących telefonów, to poziom zainteresowania bardzo rośnie (czasem nawet słychać echo opadających szczęk). Ludzie podchodzą, dotykają telefonu (też tak robiłem). Dziwna sprawa - cóż psychologia ;-)))
Wybór tego rodzaju telefonów jest przeogromny - od prostych po wideotelefony i kombajny biurowe. Są także takie z obsługą WiFi (odpada problem kabli). Do moich demonstracji używam stosunkowo tanich (ok. 170-200 PLN) telefonów Grandstream BT-200. Mają co trzeba, czyli obsługę protokołu SIP 2.0, wyświetlacz i konfigurowalne muzyczki :-). Poniżej parę zdjęć tego telefonu:
Widok z tyłu (gniazdka):

Widok z góry:

Widok z boku:

Wygląd z góry (wraz z objaśnieniem klawiszy):

Wyświetlacz:

Taki telefon podłącza się po prostu poprzez Ethernet do switch'a, a po uruchomieniu telefonu nadawany jest mu adres IP (albo z DHCP albo wpisany na stałe) - u mnie jest to 192.168.0.201 i 192.168.0.202. Następnie, w przeglądarce wpisuje się ten adres (np. http://192.168.0.202) i pojawia się strona do logowania (domyślne hasło dla BT-200 jest: admin):

Po zalogowaniu można już skonfigurować telefon:

Opcji jest bez liku, ale najważniejsze jest skonfigurowanie połączenia do serwera SIP (czyli w naszym przypadku serwera aplikacyjnego - OCCAS). Należy zatem przejść na zakładkę ACCOUNT i podać nazwy identyfikujące ten telefon (właściwie to konto użytkownika w tym telefonie) - przede wszystkim adres serwera SIP, który będzie odbierał komunikaty SIP wysyłane przez ten telefon i przesyłał komunikaty SIP do tego telefonu (czyli pole SIP Server wypełnić adresem serwera OCCAS):

Jak widać jest to podobna operacja do tej, jaką wykonywaliśmy wcześniej, konfigurując softphone (X-Lite) na komputerze (laptopie). W zasadzie to taki telefon SIP jest normalnym komputerem (jak widać ma nawet wbudowany serwer www, używany do konfiguracji), ma swój adres IP (można go ping'ować - nawet należy, po to, aby upewnić się, że wszystko jest OK na warstwie połączeń sieciowych).
Czyli mikro-laboratiorum rozbudowane o telefony SIP wyglądałoby następująco:

To pozwoli na łatwiejsze przetestowanie typowych scenariuszy, np.:
Przy okazji click-to-call można także pobawić się dodatkową możliwością jaką daje SIP Servlet, czyli możliwość łączenia sesji HTTP z sesjami SIP. Pozwala to zrobić inteligentne przekierowywanie połączeń. Dla przykładu: mamy sklep internetowy ze stronami, na których umieszczono opisy produktów. Na każdej takiej stronie umieszczamy link (lub przycisk) "Kliknij, aby porozmawiać z konsultantem i dowiedzieć się więcej o tym produkcie". Po naciśnięciu tego linku nastąpi zestawienie połączenia telefonicznego (SIPowego, choć dzięki pokazanym dalej bramkom SIP-PSTN, może to być połączenie z dowolnym numerem telefonicznym), pomiędzy klientem sklepu a konsultantem. Z tym, że jako właściciele tego sklepu, chcielibyśmy, aby klient był połączony do właściwego konsultanta, tj. tego, który zna się na danym produkcie (a nie tylko jest wolny). Czyli chcielibyśmy przesłać kontekst z kanału webowego (w tym dane z sesji HTTP tego użytkownika) do kanału telefonicznego. Czyli spiąć HTTP z SIP (a dokładniej HTTP Servlet z SIP Servlet). Tego rodzaju mechanizmy łączenia obu sesji (a nawet wielu sesji razem) są częścią standardu SIP Servlet (i w postaci API są opisane w specyfikacji SIP Servlet).
Nic nie stoi też na przeszkodzie, aby skorzystać z telefonu komórkowego. Takie demo to już w ogóle wzbudza applauz - nie ma kabli a dzwoni ! ;-)
Wiele dzisiejszych modeli ma wbudowanego klienta VoIP, obsługującego SIP poprzez WiFi (np. wiele z nowszych modeli telefonów Nokia ma taką możliwość). W swoich zabawach używałem Nokia E61i. Wystarczy w "Ustawieniach SIP" utworzyć nowy profil, w którym jako serwer proxy należy podać adres i port serwera aplikacyjnego. Wcześniej należy także skonfigurować połączenie WiFi (no i trzeba mieć WiFi access point wpięty do sieci ;-)).
Czyli mikro-lab wyglądałoby to następująco:

Poza efektem "wow", to do zrobienia nowych scenariuszy użycie telefonu VoIP/WiFi specjalnie nic nowego nie wnosi. Ale można się pokusić, np. o:
- usługę "emergency call" - czyli, gdy z jakiegokolwiek telefonu wpiszemy "997" albo "112", to zawsze będzie dzwonić komórka (a właściwie klient SIP w komórce).
Nie szperałem w dokumentacji, ale może dałoby się oprogramować moduł GPS wbudowany w niektóre telefony i przesyłać co jakiś czas aktualną pozycję telefonu w postaci komunikatu (np. komunikatu SIP, bo SIP jest na tyle "pojemny", że pozwoli taki mechanizm obsłużyć). To by dopiero było świetne demo !
Być może upowszechnienie się Google Android (który w odróżnieniu od Apple iPhone wydaje się szczególnie przyjaznym telefonem dla deweloperów Java) jeszcze bardziej ułatwi nam życie. The sky is the limit...
Jeszcze ciekawszą opcją jest dodanie do mikro-lab'u bramki SIP-PSTN, czyli możliwość podłączenia się do ogólnodostępnych sieci telefonicznych, co pozwoli dzwonić do i odbierać połączenia od innych użytkowników (nie ma tu ograniczeń - sieć stała, mobilna, VoIP, Skype, ...). Czyli coś takiego:

To nie jest dużo droższa zabawa, bo taka najprostsza bramka kosztuje ok. 200 PLN. Bardziej zaawansowane modele mogą kosztować i 1500 PLN (pomijam profesjonalne urządzenia).
Zresztą podobnie jak i wcześniej, tak i tu, do zbudowania bramki można skorzystać z Asteriska (nie robiłem tego, ale wydaje mi się, że nie powinno to być zbyt skomplikowane).
To tyle - miłego eksperymentowania z SIP i SIP Servlet API !
Najnowsze komentarze
19 hours 2 min ago
1 dzień 15 hours ago
6 weeks 3 days ago
9 weeks 6 days ago
12 weeks 5 days ago
13 weeks 3 days ago
14 weeks 22 hours ago
15 weeks 1 dzień ago
15 weeks 2 days ago
15 weeks 2 days ago