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なので、タスクトレイ常駐とか、電話帳逆引きで名前表示とか、そこらへんから手をつけようかなと。
このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/746