前回、動かなかったExchangeServerのユニファイドメッセージングサービスとAsteriskの連携が出来ないか再度挑戦してます。
nikkeiBPとかでは、Exchange側はTCPのSIPを要求し、AsteriskはUDPのSIPしかサポートしないので使えないと言う記述を見かけたのですが...
一方AsteriskのTCP対応のプロジェクトがあるみたいです。
「これ入れたら動くんじゃない?」と突如思い立って再挑戦を始めたのですが・・・
そんなに単純じゃない様子。
色々追いかけていると、幾つか問題にぶち当たりました。
正直 AsteriskへのTCPパッチのバグ(機能制限?)が激しすぎます。
今日は仕事をお休みにして自宅で殆どこれの解析に当たってました。
パケットをキャプチャーしたり、ソースを弄ってAsteriskの処理しているデータを見たりしていたところ少なくとも次のような問題が有りました。
・SIPレスポンス302で、どうやら呼び出した先と違うポートに再接続が必要なようですが、TCPでは上手く動かずUDPで接続に行ってしまう。
・どういうわけか、TCPのソケットからAsteriskのSIPのモジュールが受け取るデータの処理が間違えており、オプション類が読み込まれず動かない。
・ついでにTCPソケットを使ってるときは複数のパケットのデータを結合して処理しようとして失敗する。(一つの受信処理で複数のレスポンスを処理しようとしておかしくなる)
必死でパッチ? 当ててみたところ、なんとかExchangeServerの音声をAsteriskに登録した電話から聞くことができました。
しかし・・・ DTMF(プッシュトーン)効かないよ・・・ これじゃ何も出来ない (汗
コメント