2008年1月14日

SIPで遊んでみる

 12月初旬にBフレッツ&ひかり電話を入れた話は書いてなかったか。

 ひかり電話を入れたら、RV-230SE というルータが来た。VDSLモデムとルータとひかり電話が一体になったモノである。

 これにアナログ電話を接続できるのはもちろんなのだが、SIPクライアント(VoIP端末)を接続することも可能のようだ。

 これは試すしか! と思い、フリーのSIPクライアントを探したら X-Lite というのがあったのでVistaマシンにインスコして設定してみた。

 設定項目が意味不明なものが多いが、いろいろググりながら適当に項目を埋めたら設定できた。

 しかし、パソコンを電話端末にするのは非常にまどろっこしい。

 多くの人が、パソコンを目の前にしながら横で電卓を使っているのと同様、電話は電話機で話したほうが65536倍使いやすいと思う。


 だが、ウチの電話にはナンバーディスプレイが無い。

 「着信お知らせメール」のオプションをつけているので、着呼後にメールで確認できるし、RV-230SE のログでも確認できるのだが、そんな未来に知ってもしょうがない。

 やはり、着呼したその瞬間に番号通知を見たい。


 これはナンバーディスプレイ専用SIPクライアントを作るしか!!!


 というのはひかり電話を入れた12月初旬から考えていた。

 で、突然プログラミングする気になり、実装してみた。

 使用言語(開発環境)は Visual C# 2008 Express Edition。

 SIP はよく分からんので、X-Lite と RV-230SE の通信を Wireshark(旧Ethereal) で盗聴して解析。

 通信には UdpClient クラスを利用。非同期メソッド使いまくりでマルチスレッドにはせず。

 着信イベントを通信クラスからUIクラスに渡す方法(イベントとかデリゲートとか)で苦労したがなんとか実装。

 ダイジェスト認証がさっぱり分からず、でもググりまくってなんとか実装。

 1日で、登録(REGISTER)→着信受信(INVITE) の動作を確認するところまで行った。


 あとはもうUIの世界で使いやすくしていくのみ!

 といいたいところだが、SIPは謎仕様が多い。RFC全然読んでないので謎なのは当然だが、なんか Uniq ID の類が多いあたりがわけわかめ。

 特に branch のマジッククッキーって何ですか? って全然調べてない。

 が、個人的には RV-230SE とだけ喋れればよいので、細かいことは気にせず、先に UI を実装しようと思う。

 今はまだいかにもサンプルなフォーム1個のUIなので、タスクトレイ常駐とか、電話帳逆引きで名前表示とか、そこらへんから手をつけようかなと。

Posted by rukihena at 21:51:15
トラックバックURL

このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/746

コメント