.NET i takie tam

Cisco IP Phone

leave a comment »

Ostatnio pracuję nad nowym projektem, również związanym z urządzeniami zewnętrznymi, jednak już nie przenośnymi. Moim zadaniem jest umożliwić interakcję zwykłego, stacjonarnego telefonu z całym back-end’owym zapleczem. No dobrze, przyznaje ten ‚zwyczajny’ telefon, nie jest znowuż taki zwyczajny, to Cisco IP Phone 7960.

Obawiałem się, że projekt będzie niejakim wyzwaniem, gdzie będę musiał rozgryzać magiczne kody komunikacyjne etc. jak to swego czasu robiłem pisząc ‚sterownik’ dla drukarki fiskalnej POSNET‚u. Jednak ku mojej radości (nienawidzę nudnej, żmudnej dłubaniny) okazało się to całkiem proste. Tak dla ścisłości to był mój pierwszy bezpośredni kontakt z urządzeniami firmowanymi przez Cisco i nie bardzo wiedziałem czego się spodziewać. Muszę przyznać, że jestem miło zaskoczony tym jak chłopaki sobie to wszystko wymyślili.
Otóż, wszystko działa w architekturze klient-serwer, gdzie telefon po podłączeniu do cyfrowej centralki (np. zwykłego serwera z zainstalowanym oprogramowaniem centralki PABX) spełnia, jak się łatwo domyślić rolę klienta. Jest to możliwe, gdyż modele Cisco IP Phone z rodziny 7900, mają wbudowany interpreter plików XML, dzięki któremu możemy poinstruować telefon czego od niego oczekujemy. Czyli całą ‚trudnością’ jest stworzenie aplikacji ASP.NET komunikującej się z, w moim przypadku, bazą danych i generującą odpowiednie pliki XML. Struktura plików XML jest łatwa i przejrzysta, przykładowo aby wyświetlić menu na wbudowanym w telefon wyświetlaczu, musimy wysłać do niego następującą strukturę:

<CiscoIPPhoneMenu>
    <Title>Title of Menu</Title>
    <Prompt>Prompt text.</Prompt>
    <MenuItem>
          <Name>Name of Menu Item.</Name>
          <URL>http://url.of.site.com/services/command.aspx</URL>
    </MenuItem>
    <MenuItem>
          <Name>Name of Menu Item.</Name>
          <URL>http://url.of.site.com/services/command.aspx</URL>
    </MenuItem>
</CiscoIPPhoneMenu>

Więcej na temat struktury obiektów XML można znaleźć tutaj. Parametr URL prowadzi do kolejnego pliku XML, parametry możemy przekazywać za pomocą POST i GET. Plik XML który chcemy aby był punktem wejściowym dla naszej aplikacji definiujemy w centralce skąd odpowiedni URL jest przekazywanych do określonych telefonów.

Pisanie tego typu usług można sobie przetestować bez dostępu do całego zaplecza telefonów/serwerów etc. wystarczą nam tylko dwa programy. Pierwszym jest Call Manager Simulator, jest to aplikacja dołączona do książki Developing Cisco IP Phone Service jest ona typu freeware’owa i jako taka jest całkowicie nie supportowana przez Cisco. Emuluje ona serwer TFTP i pozwala określić jaka strona jest punktem startowym naszej usługi. Drugim programem jest jakikolwiek SoftPhone, ja skorzystałem z Cisco IP Communicator oczywiście możemy skorzystać z normalnego urządzenia jeśli takowe mamy pod ręką. Co musimy zrobić, po pierwsze uruchomić symulator:

i określić jego adres IP, w tym wypadku należy podać adres IP naszego komputera.

Następnie musimy zainstalować emulator telefonu, np.:

i w jego ustawieniach wskazać na serwer TFTP emulowany przez nasz Call Manager Simulator.

Teraz po zrestartowaniu naszego telefonu, jeśli wszystko będzie w porządku, w Call Managerze powinniśmy zobaczyć dostępne nowe urządzenie. Teraz musimy umieścić przykładową aplikację na naszym serwerze IIS, jej kod jest dziecinnie prosty i wygląda mniej więcej tak:

Response.Write("<CiscoIPPhoneMenu>");
Response.Write("<Title>Please select Service:</Title>");
Response.Write("<Prompt></Prompt>");
Response.Write("<MenuItem>");
Response.Write("<Name>Hello World Service</Name>");
Response.Write("<URL>http://" + this.IPAdress +
               "/IPPhoneServices/AskName.aspx</URL>");
Response.Write("</MenuItem>");
Response.Write("</CiscoIPPhoneMenu>");

Wiem przypomina to bardziej stare spaghetti ASP niż ASP.NET, ale cóż poradzić. Na koniec musimy jeszcze poinformować nasz telefon gdzie szukać naszej aplikacji, w tym celu wracamy do Call Managera zaznaczamy urządzenie i wybieramy Configure -> Selected Device. Tutaj w pozycji Services URL podajemy adres do naszej strony i gotowe. Na koniec po ponownym uruchomieniu telefonu i naciśnięciu przycisku Services powinniśmy zobaczyć efekt naszej pracy.

Written by sakowicz

Luty 7, 2008 @ 8:43 am

Napisane w .NET, Devices, Misc

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: