以下、図を参照しながら、この発明による電話システム、電話関係装置、プログラム提供サーバ装置の一実施の形態について説明する。以下に説明する実施の形態においては、この発明を企業のオフィスなどに構築されるいわゆるビジネスフォンシステム(ボタン電話システム)に適用した場合を例にして説明する。
[電話システムの構成例]
図1は、この実施の形態の電話システムの構成例を説明するためのブロック図である。図1に示すように、この実施の形態の電話システムにおいては、プログラム提供サーバ装置(以下、サーバと記載する。)1と主装置3とが電話網2を通じて接続される。そして、主装置3に対して、複数のIP電話機4(1)〜4(n)が、LAN(Local Area Network)5を通じて接続される。従って、IP電話機4(1)〜4(n)のそれぞれは、主装置3を介して電話網2に接続される。なお、IP電話機4(n)における文字nは、通常は1以上の整数を意味するが、図1においては、既にIP電話機4(1)、4(2)が存在しているので、この場合の文字nは、3以上の整数を意味する。
サーバ1は、電話関係装置である主装置3やIP電話機4(1)〜4(n)に提供すべきいわゆるファームウェアなどのプログラム(ソフトウェア)を保持し、これを主装置3やIP電話機4(1)〜4(n)に対して提供する機能を実現する。ここで、主装置3やIP電話機4(1)〜4(n)に提供すべきプログラムは、例えば、機能追加などのために新たに提供する必要が生じたものなどである。電話網2は、音声通話を可能にする種々のネットワークを意味する。具体的に電話網2は、光ケーブルによるネットワーク、ISDN(Integrated Services Digital Network)、インターネット、専用線によるネットワークなどの種々のネットワークを含む。
主装置3は、外線と内線や内線間を接続する小型の交換機(PBX(Private Branch eXchanger))としての機能を有する。主装置3は、配下のIP電話機4(1)〜4(n)からの発呼要求を電話網2に送出して、目的とする相手先の電話機(外線電話機)に電話を掛ける機能を実現する。また、主装置3は、電話網2を通じて送信されて来る外線電話機からの着信要求を受信して、配下のIP電話機4(1)〜4(n)に着信させる機能を実現する。また、主装置3は、配下のIP電話機4(1)〜4(n)間の内線通話を可能にする機能を実現する。
このように、主装置3は、外線と内線との間や内線間の呼制御を行う。また、主装置3は、配下のIP電話機が備えるリンガやLCD(Liquid Crystal Display)やLED(Light Emitting Diode)に対する制御も行う。また、主装置3は、基本的に音声通話を実現するためのものであり、インターネットに接続してTCP/IPを用いてデータの送受信を行うことはできないものである。
IP電話機4(1)〜4(n)のそれぞれは、IP(internet Protocol)を利用し、音声をパケット化して送受信することによって、音声通話を可能にする。すなわち、IP電話機4(1)〜4(n)のそれぞれは、主装置3を通じて、電話網2に接続された外部の電話機との間や、LAN5に接続された同じオフィス内の他のIP電話機との間で通話を行う場合に用いられる。なお、IP電話機4(1)〜4(n)のそれぞれは、基本的な構成は同じものである。このため、以下においては、特に区別して示す必要がある場合を除き、IP電話機4(1)〜4(n)のそれぞれを総称してIP電話機4と記載する。
IP電話機4は、アナログ音声信号をデジタル化してIP(Internet Protocol)で送信するために、RTP(Real-Time Transport Protocol)を使用する。RTPは、音声や映像をストリーミング再生するためのUDP(User Datagram Protocol)上で動作するプロトコルである。そして、この実施の形態において、IP電話機4は、RTPを用いた音声通話機能のみを実現する。すなわち、IP電話機4は、インターネットに接続してTCP/IPを用いたデータの送受信を行うことはできないものである。
IP電話機4が収容されている環境は、IP電話機4が接続される回線(ネットワーク)や主装置により様々である。図2は、IP電話機4の収容環境(接続環境)について説明するための図である。図2において、NGN(Next Generation Network)サーバ6は、セッション制御サーバとしての機能を実現するものであり、提供される各サービス(ネットワーク)に適した品質や帯域となるように、図示しない収容ルータ等を制御するものである。
そして、図2(A)は、サーバ1からIP電話機4までが、広域LAN(広域イーサネット(登録商標))で接続されている場合を示している。広域LANは、地理的に離れたLAN間をイーサネット(登録商標)インターフェースで接続するものである。このため、サーバ1からIP電話機4までを共通のインターフェースで接続することができるため、サーバ1とIP電話機4との間では、どの部分においても、RTPパケット(音声パケット)の送受信が可能となる環境が整えられる。
これに対して、図2(B)は、サーバ1からIP電話機4までのネットワーク上の経路において、NGNサーバ6と主装置3との間は、例えばISDNで接続されるなど、イーサネット(登録商標)インターフェース以外で接続されている場合を示している。しかし、サーバ1とNGNサーバ6との間と、主装置3とIP電話機4との間は、いずれもイーサネット(登録商標)インターフェースで接続されているので、これらの間においては、RTPパケット(音声パケット)の送受信が可能となる。
したがって、少なくとも主装置3とIP電話機4との間は、LAN接続され、イーサネット(登録商標)インターフェースで通信が可能となる。すなわち、主装置3とIP電話機4との間においては、RTPパケット(音声パケット)の送受信が可能となる。このため、サーバ1よりRTPパケットを用いてプログラムを伝送すれば、IP電話機4に提供できるし、また、主装置3においても、IP電話機4に提供するRTPパケットが形成可能であるので、自機へのプログラムも取得可能であるといえる。
そこで、この実施の形態の電話システムにおいては、サーバ1は、主装置3やIP電話機4に対して、RTPパケットによりプログラムを提供するように機能する。しかし、RTPパケットは本来、音声や映像などのストリーミングデータを提供するものであり、受信側において高品位に音声を再生するために、音声データに対してエコーキャンセラやPLC(Packet Loss Concealment)といったいわゆる適正化処理が施される。
エコーキャンセラは、音響エコーを抑制、除去する機能であり、種々の方式が存在するが、受信音声に対して所定のフィルタリング処理などが行われる。このため、RTPパケットにより送信されるデータがプログラムである場合、これにエコーキャンセラが施されると、送信された通りのプログラムを受信側で取得できなくなる可能性がある。また、PLCは、パケットロスが発生した場合に、喪失部分の音声データを前後の音声データから補間処理により復元するものである。このため、RTPパケットにより送信されるデータがプログラムである場合、これにPLCが施された場合にも、送信された通りのプログラムを受信側で取得できなくなる可能性がある。
そこで、この実施の形態の電話システムでは、サーバ1が主装置3やIP電話機4に対してRTPパケットによりプログラムを提供する場合には、主装置3やIP電話機4において、エコーキャンセラやPLCを受信データに対して施さないようにしている。
また、例えば主装置3に接続されたIP電話機4のそれぞれは、通常、個別の電話番号は割り当てられていない。このため、サーバ1からIP電話機4を特定して、プログラムの提供を行うことはできない。そこで、IP電話機4のそれぞれに対しても、適切にプログラムを提供できるようにするため、図2(A)、(B)において、細線矢印で示したように、IP電話機4からサーバ1に対して発信して新たに提供されるべきプログラムの有無を確認する。
そして、提供されるべきプログラムがサーバ1に存在する場合に、サーバ1が確認元のIP電話機4に対して当該プログラムを提供する。この後、提供すべきプログラムの全部を確認元のIP電話機4に提供し終えると、サーバ1から確認要求元のIP電話機4に対して回線を開放する要求を送信して、接続した通話回線を切断するようにしている。ここでは、IP電話機4にプログラムを提供する場合を例にして説明したが、主装置3が自機で起動させるプログラムの更新を行う場合も同様に行うことができる。すなわち、主装置3からサーバ1に発信して、提供されるべきプログラムの有無を確認し、存在する場合に当該プログラムの提供を受けるようにすることができる。
以下においては、RTPパケットを用いてプログラムの更新を行うことができるようにしている。この実施の形態の電話システムを構成するサーバ1、主装置3、IP電話機4のそれぞれについて説明する。なお、上述したように、この実施の形態の電話システムは、主装置3、IP電話機4のそれぞれは、サーバ1よりプログラムの提供を受けて更新を行うことができるものである。しかし、以下においては、説明を簡単にするため、主装置3に収容されたIP電話機4がプログラムの更新を行う場合を例にして説明する。
また、図2(B)に示した例の場合には、NGNサーバ6と主装置3との間では、RTPフォーマットから別のフォーマットに変換された際に、チェックサムなどのヘッダ情報が引き継がれない場合があると考えられる。このため、プログラムの更新に際しては、例えば、主装置3やIP電話機4において、信頼性確保のため、提供されたプログラム全体に対するチェックサム確認シーケンスを実行することが好ましい。
[プログラム提供サーバ1の構成例]
図3は、サーバ1の構成例を説明するためのブロック図である。接続端101Tは電話網2への接続端部を構成する。通信I/F101は、電話網2を通じての通信機能を実現する。なお、この明細書において「I/F」との記載は、「Interface」の略称として用いている。制御部102は、図示しないがCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、不揮発性メモリがバスを通じて接続されて構成されマイクロプロセッサであり、サーバ1の各部を制御する。
記憶装置103は、例えばハードディスクなどの記録媒体とそのドライバとからなり、当該記録媒体へのデータの書き込み、読み出し、変更、削除などを行う。記憶装置103には、制御部102において実行されるプログラムや処理に必要になるデータ等が記憶保持される他、種々の処理においてその途中結果を一時記憶する作業領域としても用いられる。
機種別バージョンテーブル104は、例えばハードディスクなどの記録媒体に作成され、主装置やIP電話機に対して提供すべきプログラムがあるかどうかを判別するための情報を記憶保持する。この実施の形態のサーバ1は、IP電話機4からの発信に応じた問い合わせにより、提供すべきプログラムが存在するか否かを確認する。
図4は、サーバ1での提供すべきプログラムの確認処理について説明するための図である。サーバ1に対しては、図4(A)に示すように、「050」に続く8桁の数字が、IP電話機4の機種に対応した複数の電話番号が割り当てられている。すなわち、IP電話機4には、異なるプログラムが動作する機種の異なるものが複数存在する。そして、IP電話機4は、予め設定されている自己の機種に応じた電話番号(特定電話番号)を用いてサーバ1に発信(発呼)する。その際に、主装置3やIP電話機4は、自機の機種に対応する8桁の数字の後に続く3桁のサブアドレスで、自機において動作しているプログラムのバージョン(プログラムバージョン)を通知する。これにより、着信先のサーバ1は、発呼元のIP電話機4の機種とプログラムバージョンを把握できる。
そして、サーバ1は、図4(B)に示した条件の全てに合致する場合には、提供すべきプログラムがあることが特定できるので、通話開始応答(OK)を返信し、当該プログラムを発信元のIP電話機4に提供する。すなわち、通知機種に対応するプログラムがあり(図4(B)(a))、そのプログラムが通知バージョンよりも新しく(図4(B)(b))、開始番号がプログラム分割数より小さければ(図4(B)(c))、提供すべきプログラムが存在すると特定できる。
なお、「開始番号がプログラム分割数より小さい」との条件は、サーバ1から提供されるプログラムが長い場合には、接続された通話回線を通じて一度にすべてを提供するのではなく、通話回線の接続と切断を繰り返し、何回かに分けてプログラムを提供する。すなわち、プログラムを分割し、分割番号をRTPタイムスタンプ値として分割したプログラムに付加して提供する。
このため、プログラムの提供先であるIP電話機4においては、最新に受信したRTPパケットのRTPタイムスタンプ値より算出する分割番号(開始番号)を、次の発呼時にINVITEメッセージ(セッション開始要求)に含めてサーバ1に送信する。これにより、サーバ1においては、発信元からの開始番号がプログラム分割数より小さければ、プログラムを分割して提供している途中の場合、提供すべきプログラムがまだ残っていること、及び、その続きの部分がどこかを判別できる。なお、開始番号の初期値は「0(ゼロ)」である。
これとは逆に、サーバ1は、図4(C)に示した条件のいずれかに合致する場合には、提供すべきプログラムがないことが特定できるので、受付拒否応答(NG)を発信元のIP電話機4に提供する。すなわち、通知機種に対応するプログラムが存在しない場合(図4(C)(a))、通知機種に対応するプログラムが存在していてもプログラムが通知バージョンよりも新しくない場合(図4(C)(b))には、提供すべきプログラムは存在しないと特定できる。また、上述した開始番号がプログラム分割数より大きい場合(図4(C)(c))、同時通話数を超えた場合(図4(c)(d))にも、提供すべきプログラムは存在しないと特定できる。なお、同時通話数を超えた場合(図4(c)(d))は、サーバ1の通信許容量に基づくものである。このため、この場合には受付拒否応答(NG)を返すのではなく、「Retryafter」値を付与した応答を返し、発信元のIP電話機4に対して再発信(リトライ)を促すことになる。
そして、機種別バージョンテーブル104には、図4(B)(a)(b)及び図4(C)(a)(b)を用いて説明した判別を可能にするための情報が蓄積される。図5は、機種別バージョンテーブル104の格納データの例を説明するための図である。図5に示すように、機種別バージョンテーブル104には、IP電話機4の機種に対応して、電話番号、機種コード、プログラムバージョン、プログラムファイル名、更新日が格納されている。
サーバ1は、自機において着信があった電話番号と、当該電話番号に続くサブアドレスに基づいて、機種別バージョンテーブル104を参照することにより、提供対象となる新しいバージョンのプログラムが存在する否かを確認する。そして、新しいバージョンのプログラムが存在する場合に、そのプログラムが格納されているプログラムファイル名を特定することができる。これにより、詳しくは後述するが、サーバ1は、その特定したプログラムファイルからプログラムを読み出して、発信元の主装置3やIP電話機4に提供することができる。
なお、この実施の形態において、プログラムバージョンは、例えば、数字が大きなものが新しいバージョンであると認識できる。従って、IP電話機4から通知されたプログラムバージョンが「001」で、機種別バージョンテーブルの対応機種のプログラムバージョンが「002」であれば、提供すべきプログラムが存在すると判別できる。
機種別プログラムファイル105(1)、(2)、(3)、…のそれぞれは、ハードディスクなどの記録媒体に作成され、機種別の更新用のプログラムを記憶保持するものである。これらの機種別プログラムファイル105(1)、(2)、(3)、…のそれぞれのファイル名は、図5を用いて説明したように、機種別バージョンテーブル104に格納されており、機種に応じて、そのファイル名が一意に特定できるようになっている。
登録処理部106は、IP電話機4からの最初の発信を受け付けた場合に、これらの電話関連機器の登録情報を例えば記憶装置103に形成されている顧客機器情報ファイルに登録する機能を実現する。登録情報は、具体的には、INVITEメッセージ中にある送信元の識別子、例えばMAC(Media Access Control)アドレスなどが用いられる。これにより、主装置3やIP電話機4からの着信が発生した場合に、当該着信を受け付けるか否かの認証時に当該登録情報を用いることができる。
プログラム確認部107は、IP電話機4からの着信があった場合に、上述したように、着信先の電話番号とサブアドレスとに基づいて、機種別バージョンテーブル104を参照し、提供すべきプログラムが存在するか否かを確認する。プログラム確認部107は、提供すべきプログラムが存在しないことを確認した場合には、これを制御部102に通知する。これにより、制御部102は、提供すべきプログラムが存在しないことを示す受付拒否応答(NG)を、通信I/F101を通じて発信元のIP電話機4に送信し、通話回線は接続せずに、プログラムの提供は行わないようにする。
また、プログラム確認部107は、提供すべきプログラムが存在することを確認した場合には、これを制御部102に通知する。制御部102は、通信開始応答(OK)を通信I/F101を通じて発信元のIP電話機4に送信して、通話回線を接続する。そして、制御部102は、プログラム提供処理部110を構成する各部を制御して、発信元のIP電話機4に対して更新用のプログラムを提供する処理を行う。
プログラム提供処理部110を構成する各部は、プログラム確認部107において、提供すべきプログラムの存在が確認できた場合に、制御部102の制御の下に、更新用のプログラムをIP電話機4などの提供先に提供するための処理を行う。具体的に、CNG信号送信部111は、プログラム確認部107において、提供すべきプログラムの存在が確認できた場合は、まず、ファクシミリ識別信号であるCNG信号を形成し、これをRTPパケットのペイロードに挿入して発信元のIP電話機4に送信する。CNG信号は、0.5秒間の1100Hzのトーンと3秒間の無音の繰り返しからなる信号である。
発信元のIP電話機4は、サーバ1よりCNG信号が送信されてきた場合には、自機に提供されるべき更新用のプログラムが存在し、RTPパケットを用いて当該プログラムが送信されて来ると認識できる。そして、CNG信号を受信した発信元のIP電話機4は、ファクシミリ応答信号であるCED信号を送信して来る。CED信号は、「ピー」と聞こえる2100Hzの連続音を構成する信号である。
このため、CED信号確認部112は、発信元のIP電話機4からCED信号が送信されて来たか否かを確認する。発信元のIP電話機4からCED信号が送信されてきたことが確認できた場合には、RTPパケットによりプログラムが提供されることをIP電話機4が認識できたと判別できる。そして、発信元のIP電話機4からのCED信号が、CED信号確認部112で確認できた場合(受信できた場合)に、制御部102の制御の下、プログラム提供部113が機能する。
プログラム提供部113は、プログラム確認部107が機種別バージョンテーブル104を参照して特定したプログラムファイル名により特定される機種別プログラムファイル105(n)から提供すべきプログラムを読み出す。そして、プログラム提供部113は、読み出したプログラムを、そのプログラムの大きさに応じて複数の部分に分割し、分割部分を順次にRTPパケット化し、これを通信I/F101を通じて電話網2に送出して発信元のIP電話機4に提供する。
提供終了処理部114は、プログラム提供部113を通じて、発信元のIP電話機4に対して全てのプログラムを提供し終えた場合に、例えば応答コード「487(リクエスト中止)」を発信元のIP電話機4に送信して、プログラムの提供処理を終了させる。上述したように、プログラム提供処理部110は、CNG信号の送信から応答コード「487」の送信に至るまでの一連のプログラム提供処理を行う。
このように、サーバ1は、IP電話機4からの発信に応じて、発信元のIP電話機4に対して提供すべきプログラムが存在するか否かを確認する。そして、発信元のIP電話機4に対して提供すべきプログラムが存在する場合には、発信元のIP電話機4へのCNG信号の送信と、当該IP電話機4からのCED信号の受信とを行う。これにより、ファクシミリ通信を行う場合と同じ手順により、サーバ1と発信元のIP電話機4との間において、ファクシミリみなし音声方式により、プログラムをRTPパケット化して伝送することのコンセンサスを得る。そして、サーバ1は、当該プログラムをRTPパケット化して、あたかも音声データを伝送するようにして発信元のIP電話機4に提供できる。
[主装置3の構成例]
図6は、主装置3の構成例を説明するためのブロック図である。接続端301Tは、電話網2への接続端部を構成する。通信I/F301は、電話網2を通じての通信機能を実現する。制御部302は、図示しないがCPU、ROM、RAM、不揮発性メモリがバスを通じて接続されて構成されマイクロプロセッサであり、主装置3の各部を制御する。
記憶装置303は、例えばハードディスクなどの記録媒体とそのドライバとからなり、当該記録媒体へのデータの書き込み、読み出し、変更、削除などを行う。記憶装置303には、制御部102において実行されるプログラムや処理に必要になるデータ等が記憶保持される他、種々の処理において、その途中結果を一時記憶する作業領域としても用いられる。
アドレス管理DB304は、電話網2やLAN5に接続され、この主装置3を通じて呼び出す可能性のある端末装置についてのアドレス情報を記憶保持する。具体的には、アドレス管理DB304では、電話番号、内線番号、IPアドレス、MAC(Media Access Control)アドレス、ポート番号などの情報が管理されている。これらの情報は、電話網2やLAN5に接続されている端末装置からの登録要求(レジスタ・リクエスト)に応じて、制御部302がアドレス管理DB304に登録する。
接続I/F(Interface)305は、LANI/Fを構成し、主装置3に収容される複数のIP電話機4が接続され、主装置3とIP電話機4との間の通信を可能にする。従って、主装置3から各IP電話機4への信号は、接続I/F305において送信用の形式の信号に変換されて、各IP電話機4に送信される。また、各IP電話機4からの信号は、接続I/F305において自機において処理可能な形式の信号に変換されて取り込まれる。
呼制御部306は、アドレス管理DB304の管理情報を用い、IP電話機4についての発信、着信、応答、切断の呼制御を行う。表示等制御部307は、呼制御部306の制御に応じて、接続I/F305に接続された配下のIP電話機4のLCDやLEDに対する制御を行い、自機以外の他のIP電話機4の状態等、電話システムの状態を使用者が把握できるようにする。
プログラム更新処理部310は、自機の制御部302で動作するプログラムを更新する機能を実現する。なお、主装置3が備えるプログラム更新処理部310は、後述するIP電話機4が備えるプログラム更新処理部430と同等のものである。このため、プログラム更新処理部310の詳細な説明は、IP電話機4のプログラム更新処理部430についての説明と重複するため省略する。
[IP電話機4の構成例]
図7は、IP電話機4の構成例を説明するためのブロック図である。図7において、制御部420は、図示しないが、CPU、ROM、RAM、不揮発性メモリなどがバスを通じて接続されて形成されたマイクロプロセッサであり、IP電話機4の各部を制御するものである。
接続端401Tは、LAN5への接続端部を構成する。接続I/F401は、LANI/Fであり、LAN5を通じて主装置3との接続を実現する。すなわち、接続I/F401は、LAN5を通じて自機宛てに送信されてきた信号を、自機において処理可能な形式の信号に変換して自機に取り込む処理を行う。また、接続I/F401は、自機から送信する信号を、送信用の信号に変換し、これをLAN5に送出する処理を行う。
パケット処理部402は、接続I/F401を通じて受信されるパケットデータの提供を受けて、これを分解処理して復号化し、制御データは制御部420に供給し、音声データは後述するコーデック404やプログラム更新処理部430に供給する。ここで、音声データには、RTPパケットのペイロードを通じて音声データと同様に提供されるプログラム(プログラムデータ)を含む。また、パケット処理部402は、後述するコーデック404から供給される相手先に送信する音声データを暗号化すると共にパケット化して、これを接続I/F401を通じて送信する処理を行う。
ハンドセット403は、スピーカ(受話器)とマイクロホン(送話器)とを備える。コーデック404は、パケット処理部402においてパケット分解されて復号化された音声データの供給を受けて、これを圧縮伸長してアナログ音声信号に変換し、オフフック状態のハンドセット403のスピーカに供給する。これにより、相手先からの音声がハンドセット403のスピーカから放音される。また、コーデック404は、オフフック状態のハンドセット403のマイクロホンにより収音されたアナログ音声信号をデジタル信号に変換し、これをデータ圧縮してパケット処理部402に供給する。パケット処理部402は、上述もしたようにコーデック404からの音声データを暗号化すると共にパケット化して、これを接続I/F401及び接続端401Tを通じて相手先に送信する。
操作入力部405と操作入力インターフェース(以下、操作入力I/Fと記載する。)406とは、使用者からの操作入力を受け付けて、受け付けた情報を制御部420に提供する。操作入力部405には、フレキシブルキーFK1〜FK8やテンキーや発信、応答、保留などのいくつかのファンクションキーが設けられている。ディスプレイコントローラ407とディスプレイ408とは、制御部420の制御の下、種々の情報をディスプレイ408の表示画面に表示する処理を行う。ディスプレイ408には、入力した相手先の電話番号、発信元の電話番号や名称、ガイダンスメッセージ、警告メッセージなど、種々の情報の表示が可能にされる。
リンガ409は、制御部420の制御の下、着信時において着信音を放音させるものである。また、LED部410は、複数のLEDを備え、制御部420の制御の下にLEDの点灯、点滅等により、例えば、オフフック状態の通知、着信の通知、使用回線の通知、保留状態の通知等、種々の状態を使用者に通知するものである。プログラムメモリ411は、IP電話機4において実行されるプログラムを記憶保持する書き換え可能な不揮発性メモリである。
そして、プログラム更新処理部430が、音声通話機能のみを備えたこの実施の形態のIP電話機4において、プログラムメモリ411に記録されているプログラムの更新を可能にする部分である。プログラム更新処理部430は、情報通知部431、CNG信号確認部432、CED信号送信部433、無効化処理部434、プログラム取得部435、継続・終了処理部436を備える。
情報通知部431は、制御部420の制御の下、所定のタイミングで自機の機種に対応するサーバ1に割り当てられている電話番号(特定電話番号)を用いて発信する。この際に、情報通知部431は、電話番号に続く3桁のサブアドレスで、プログラムメモリ411に保持しているプログラムのバージョンを通知する。なお、当該特定話番号は、制御部420の不揮発性メモリに事前に登録されている。これにより、サーバ1のプログラム確認部107が機能して、発信元のIP電話機4に対して提供すべきプログラムが存在するか確認が行われる。提供すべきプログラムが存在する場合には、IP電話機4とサーバ1との間に通話回線が接続される。そして、発信元のIP電話機4に対して提供すべきプログラムが存在する場合には、サーバ1はCNG信号を送信して来る。
このため、制御部102の制御の下、CNG信号確認部432が機能して、パケット処理部402からの音声データをチェックし、CNG信号が送信されてきているかどうかを確認する。CNG信号が送信されてきていること、すなわち、サーバ1からのCNG信号を受信したことを確認した場合には、これを制御部420に通知する。この場合、制御部420の制御の下、CED信号送信部433が機能して、CNG信号をサーバ1に送信する。更に、制御部420の制御の下、無効化処理部434が機能して、例えば、パケット処理部402において、受信した音声データに施されるエコーキャンセラ処理やPLC処理を行わないようにする。すなわち、無効化処理部434は、エコーキャンセラ処理やPLC処理の実行を停止させる。
そして、CNG信号とCED信号の送受の後においては、サーバ1よりRTPパケットにより音声データの場合と同様にしてプログラムが送信されてくる。このため、RTPパケットにより送信されて来るプログラムは、パケット処理部402において分離されて暗号解読され、プログラム取得部435に供給される。プログラム取得部435は、供給されたプログラムを一時記憶するメモリを備え、不足なくプログラムが揃ったら、これをプログラムメモリ411に記録して実行可能にする。
継続・終了処理部436は、複数の部分に分割されて提供されるプログラムを、段階的に取得するため、サーバ1への発信、プログラム受信、回線切断を繰り返すように、プログラム更新処理部430の各部を制御する。また、プログラムの全体の提供が終了したことの通知をサーバ1から受けた場合には、プログラム更新処理部430の各部を制御し、プログラムの更新処理を終了させる。
このように、この実施の形態のIP電話機4は、自機からサーバ1に対して発信することにより、サーバ1と協働し、自機に対して提供すべきプログラムがサーバ1に存在する場合に、その提供を受けて古いプログラムを新しいプログラムに更新できる。
[電話システムで行われるプログラムのダウンロード処理]
次に、上述した構成を有するサーバ1、主装置3、IP電話機4によって構成される、この実施の形態の電話システムにおいて、IP電話機のプログラムの更新を行う場合の処理について説明する。図8、図9は、この実施の形態の電話システムで行われるプログラムの更新を行う場合の処理を説明するためのシーケンス図である。
まず、主装置3に接続されたIP電話機4の制御部420は、起動されると、予め制御部420の例えば不揮発性メモリに記録されている特定電話番号を用いて、サーバ1に対して発信を行うようにする(ステップS1)。特定電話番号は、上述もしたように、IP電話機4の機種に対応して予め決められたものである。このステップS1の処理により、IP電話機4の制御部420は、INVITEメッセージを形成して、主装置3を通じてサーバ1に送信する(ステップS2)。そして、サーバ1が当該INVITEメッセージに応答して、通話回線を接続したことをIP電話機4が確認すると、IP電話機4はCANCELメッセージを送信して、接続した通話回線を切断(解放)する(ステップS3)。
一方、サーバ1は、IP電話機4からのINVITEメッセージに含まれる送信元を特定する識別子として例えば送信元のIP電話機4のMACアドレスと、当該特定電話番号とを対応付けて、記憶装置103に登録する(ステップS4)。ステップS4で登録された情報は、IP電話機4からの発信を受け付けた場合の認証処理に用いることができる。すなわち、特定電話番号に電話を掛けてきたIP電話機4が、識別子として例えばMACアドレスが登録されているIP電話機4であれば、通話回線の接続を維持するが、そうでなければ通話回線を切断するといった対応が可能となる。
この後、IP電話機4は、制御部420の制御の下、情報通知部431が機能して、定期的に、ステップS1で用いた特定電話番号に、自機が保持するプログラムのバージョンをサブアドレスとして付加して、サーバ1に発信する(ステップS5)。これにより、INVITEメッセージがサーバ1に送信される(ステップS6)。サーバ1では、ステップS4において記憶装置103に登録した特定電話番号と例えばMACアドレスとに基づいて、通話回線を接続すべきIP電話機か否かの認証を行って、認証が取れた場合には通話回線を接続するようにでき、取れなかった場合には、着信を拒否することができる。なお、以下においては説明を簡単にするため、IP電話機4から発信があった場合に、サーバ1では全て認証が取れたものとして説明する。
そして、サーバ1では、プログラム確認部107が機能し、着信があった電話番号と、サブアドレスとして通知されたプログラムバージョンとに基づいて、機種別バージョンテーブル104を参照する。そして、発信元のIP電話機4に提供すべきプログラムが存在するかを確認する(ステップS7)。ステップS7の確認処理において、発信元のIP電話機4に提供すべきプログラムが存在しないと確認したとする。この場合、制御部102は、応答コード「503(サービス利用不可)」を、例えば「retryafter」付きで返信し(ステップS8)、接続した通話回線を切断する。
なお、「retryafter」は、WebクライアントであるIP電話機4に対して時間を待ってから再度試行することを伝える場合に使用するHTTPヘッダであり、再試行する具体的な時間の指定や何秒後に再試行といった時間情報が付加されるものである。これにより、IP電話機4は、指示された時間において、サーバ1に発信を行うようにすることができる。もちろん、「retryafter」が存在しない場合でも、IP電話機4の制御部420の制御の下、例えば、毎日、午前1時に確認を行うようにするといったことも可能である。
そして、説明したステップS5〜ステップS8の処理が何回か繰り替えされた後、図9の示す処理に進んだとする。IP電話機4は、制御部420の制御の下、情報通知部431が機能して、再度、ステップS1で用いた特定電話番号に、自機が保持するプログラムのバージョンをサブアドレスとして付加して、サーバ1に発信する(ステップS11)。これにより、INVITEメッセージがサーバ1に送信される(ステップS12)。
サーバ1では、プログラム確認部107が機能し、着信があった電話番号と、サブアドレスとして通知されたプログラムバージョンとに基づいて、機種別バージョンテーブル104を参照する。そして、発信元のIP電話機4に提供すべきプログラムが存在するかを確認する(ステップS13)。ステップS13の確認処理において、発信元のIP電話機4に提供すべきプログラムが存在すると確認したとする。この場合、サーバ1は、ペイロードにCNG信号を挿入し、応答コード「183(セッション進行中)」のRTPパケットを形成し、これを「SDP」付きで接続している通話回線を通じてIP電話機4に送信する(ステップS14)。この処理は、制御部102の制御の下、CNG信号送信部111が機能して行われる。
なお、SDP(Session Description Protocol)は、セッション記述プロトコルを意味し、音声、映像、データのストリーム内容を示すため、使用する帯域幅、符号化方法、符号化のパラメタ、フレームレートなどを記述するものである。SIPメッセージの中にSPDを入れて送ることで、能力(性能)交換と最適モードの決定を行うことができるようにされる。
一方、ステップS12において、INVITEメッセージを送信したIP電話機4は、制御部420の制御の下、CNG信号確認部432が、パケット処理部402からの音声データに基づいて、CNG信号が送信されてきたかを監視している。CNG信号確認部432が、サーバ1からのCNG信号を確認した場合には、これを制御部420に通知する。この場合、制御部420は、CED信号送信部433を制御して、ペイロードにCED信号を挿入したRTPパケットを形成し、これを接続している通話回線を通じてサーバ1に送信する(ステップS15)。更に、制御部420の制御の下、無効化処理部434が機能し、例えば、パケット処理部402において、受信したRTPパケットのペイロードのデータに対してエコーキャンセラやPLCを行わないようにする。
サーバ1においては、CNG信号の送信後、制御部102の制御の下、CED信号確認部112が機能して、発信元のIP電話機4からのRTPパケットに基づいて、CED信号が送信されてきたかを監視している。CED信号確認部112において、IP電話機4からCED信号が送信されてきたことが確認されると、これを制御部102に通知する。そして、制御部102の制御の下、プログラム提供部113が機能して、発信元のIP電話機4に対してプログラムを提供する処理を行う。この場合、プログラム提供部113は、提供するプログラムをRTPパケット化して、接続されている通話回線を通じて発信元のIP電話機4に対して伝送する(ステップS16)。
具体的に、プログラム提供部113は、発信元のIP電話機4に対して提供すべきプログラムを、機種別プログラムファイル105(1)、(2)、(3)、…の中からプログラム確認部107によって特定された機種別プログラムファイルから読み出す。そして、プログラム提供部113は、当該プログラムを分割し、データ圧縮して暗号化し、RTPパケット化して、発信元のIP電話機4に伝送する。
発信元のIP電話機4では、継続・終了処理部436が機能して、一定時間に渡ってプログラムを受信した場合に、CANCELメッセージを形成し、これをサーバ1に送信して、いったん接続した通話回線を切断する(ステップS17)。長時間に渡り、通話回線を接続したままにするのは、通信コストがかさんだり、たまたま発生した着信に応答することができなったりするなどのことが生じる可能性があるためである。
この後、IP電話機4では、制御部420の制御の下、継続・終了処理部436が機能して、一定時間経過後、特定電話番号を用いてサーバ1に再度発信することにより、INVITEメッセージを送信する(ステップS18)。当該INVITEメッセージには、サーバ1からの最後に受信したRTPパケットに記載されている分割番号を含めて送信することにより、プログラムの継続した提供を要求する。
そして、上述した場合と同様に、サーバ1からCNG信号を発信元のIP電話機4に送信し(ステップS19)、IP電話機4からCED信号を送信すると共に、エコーキャンセラ、PLCを無効化し(ステップS20)する。そして、サーバ1から前回送信済みのプログラムに続くプログラムを、RTPパケット化してIP電話機4に伝送する(ステップS21)。この後、発信元のIP電話機4は、一定時間に渡ってプログラムを受信した場合に、CANCELメッセージを形成し、これをサーバ1に送信して、いったん接続した通話回線を切断する(ステップS22)。
このようにして、ステップS18〜ステップS22の処理を発信元のIP電話機4に提供し終えるまで繰り返す。そして、IP電話機4の継続・終了処理部436が機能して、一定時間経過後、特定電話番号を用いてサーバ1に再度発信することにより、INVITEメッセージを送信する(ステップS31)。このとき、サーバ1のプログラム提供部113が提供すべきプログラムの全てを提供した状態になっていたとする。この場合には、プログラム提供部113は、応答コード「487(リクエスト中止)」を、通信I/F101を通じて発信元のIP電話機4に送信する(ステップS32)。
応答コード「487(リクエスト中止)」を受信したIP電話機4は、提供されるべきプログラムの全部を受信したと判別し、継続・終了処理部436が機能して、接続している通話回線を切断する。そして、プログラム取得部435は、提供されるべきプログラムの全部を適切に取得していることを確認し、これをプログラムメモリ411に記録して、プログラムの更新処理を終了する。
このように、この実施の形態の電話システムにおいては、IP電話機4が、インターネットを通じてのデータの送受信を行うことができず、音声通話しかできないものであっても、RTPパケットを利用したプログラム更新ができるようにされる。
[プログラム更新に用いられるRTPパケット]
図10〜図12は、音声通話とプログラム更新通話で用いられるRTPパケットの違いを説明するための図である。図10、図11に示すように、RTPパケットのヘッダには、「version(v)」、「padding(p)」、「extension(x)」、「csrc count(cc)」、「marker(m)」、「payload type」、「sequence number」、「timestamp」、「ssrc」の各項目を有する。
そして、図10に示すように、「version(v)」、「padding(p)」、「extension(x)」、「csrc count(cc)」の4つの項目については、音声通話でもプログラム更新用通話でも変わらない(同じである)。しかし、「marker(m)」については、サーバ1は、CNG信号送信中と無効データ送信中の場合には「0(ゼロ)」を送信し、プログラム送信中の場合には「1」を送信する。
一方、「marker(m)」について、IP電話機4は、サーバ1からの「marker(m)」が「0(ゼロ)」の場合には、同じく「0(ゼロ)」を送信する。しかし、IP電話機4は、サーバ1からの「marker(m)」が「1」の場合には、サーバ1からRTPパケットを適切に受信して、復号化が成功し、ペイロードで伝送されたプログラムを取得できた場合には、「1」を送信する。逆に、ペイロードで伝送されたプログラムを取得できなかった場合には、「0(ゼロ)」を送信する。
このように、サーバ1とIP電話機4とで異なる情報を送受できるのは、通話回線が接続されているからであり、通常の音声通話の場合と同様に、双方向にRTPパケットの送受信ができる。そして、サーバ1は、プログラムを送信しているために、「marker(m)」を「1」にして送信したのに、IP電話機4から「marker(m)」が「0(ゼロ)」のRTPパケットが返ってきたとする。この場合には、当該プログラムを送信したRTPパケットの再送を行うことができる。
また、図11に示すように、「payload type」は、音声通話でもプログラム更新用通話でも変わらない(同じである)。しかし、「sequence number」は、サーバ1もIP電話機4も「0(ゼロ)」から開始する。また、「timestamp」は、サーバ1からは送信対象のプログラムの分割番号を送信する。一方、IP電話機4は、直前にサーバ1から受信したRTPパケットの「timestamp」によって提供されたプログラムの分割番号を返信する。これにより、分割されたプログラムのどこまでが、IP電話機4によって取得されているのかをサーバ1が把握することができる。
「ssrc」については、サーバ1、IP電話機4ともデータ復号化の鍵を伝送する。これにより、RTPパケットとして伝送されるプログラムを暗号化して安全に伝送し、これを受信して復号化し、適切に利用することができる。このように、RTPパケットのヘッダの各項目を適切に使用することにより、RTPパケットを用いてプログラムを伝送することが可能になる。
そして、RTPパケットにおいて、実際にプログラムを伝送する部分であるペイロードについて、図12に示すように使用する。すなわち、ペイロードでは、上述もしたように、サーバ1からはCNG信号かプログラムが挿入(記載)されて伝送される。なお、プログラムについては、156ビットの暗号化したデータをいわゆるzip形式のフォーマットで記載すると共に、4ビットのチェックサム値を付加されたものとなる。また、ペイロードでは、IP電話機4からはCED信号が挿入(記載)されて伝送される。
より具体的には、図12に示すように、通話開始時においては、サーバ1からはCNG信号がみなし音声としてペイロードに挿入されて伝送され、IP電話機4からはCED信号がみなし音声としてペイロードに挿入されて伝送される。また、通話中期においては、サーバ1は、提供対象のプログラムを所定の伝送単位に分割し、これを暗号化すると共にzip形式のフォーマットにし、これにチャックサム値を付加して、ペイロードに挿入して伝送する。
なお、図12に示すように、通話中期においては、上述したRTPヘッダの「marker(m)」によってIP電話機4から伝送されるRTPパケットの受信成功応答/受信失敗応答を定期的に確認し、失敗している場合には、サーバ1は再送処理を行う。この場合、IP電話機4から「timestanp」により伝送されて来る分割番号が、送信開始データを示すものとなる。また、サーバ1からIP電話機4へのプログラムの伝送中においては、IP電話機4からみなし音声として提供すべきプログラムなどのデータは存在しない。このため、IP電話機4からサーバ1に対してみなし音声としてプログラムなどのデータを送信することはない。すなわち、「Don’t Care」となる。
また、サーバ1からIP電話機4までの経路が、広域LANのようにイーサーネット(登録商標)で接続されている場合には、途中でRTPパケットが変化することはないので、図10〜図12を用いて説明したようにRTPパケットを形成すればよい。しかし、途中にイーサーネット(登録商標)以外の規格のネットワークが介在した場合には、RTPパケットのヘッダが変化してしまう可能性がある。
このため、サーバ1からIP電話機4までの経路が、広域LANのようにイーサーネット(登録商標)で接続されていない場合には、プログラムの伝送を適切に行うために、以下のような対応をとる。すなわち、サーバ1は、提供対象のプログラムを上述したように、RTPパケット化してIP電話機4に伝送する。そして、IP電話機4は、受信したRTPパケットを自機に取り込むと共に、その同じRTPパケットをサーバ1に返信する。これにより、サーバ1は、送信したRTPパケットと同一のRTPパケットを受信した場合には、当該RTPパケットの伝送が成功したと判別できる。これを繰り返すことにより、伝送対象のプログラムの整合性を担保することができる。
[実施の形態の効果]
この実施の形態の電話システムによれば、RTPパケットを用いた音声通話機能しか備えないIP電話機4に対しても、RTPパケットによりプログラムをみなし音声データとして提供し、プログラムの更新を行うようにできる。
この場合、プログラムの提供元であるサーバ1とプログラムの提供先であるIP電話機4との間では、CNG信号とCED信号の送受信を行うことによって、従来からあるファクシミリの送受信環境を形式的に形成する。これにより、受信側のIP電話機4において、受信した音声データに対してエコーキャンセラやPLCといった、本来音声データに施される適正化処理を施さないようにできる。従って、みなし音声データとして送信されて来るプログラムが受信側で変化しないようにできる。
また、RTPパケットのヘッダを利用することにより、プログラムを複数に分割して伝送する場合の伝送の経過や伝送の成否をサーバ1において把握することができる。これにより、適切に伝送されなかったプログラムの部分を正確に把握し、その部分の再送を適切に行うこともできる。
また、プログラムの提供を受けるIP電話機4がサーバ1に発信して、自機の機種及びプログラムバージョンを通知して、新たなプログラムがあるか否かを問い合わせる。このため、個別の電話番号を備えないためにサーバ1からアクセスすることができないIP電話機4のそれぞれに対して、プログラムの更新を行うようにすることができる。
このように、従来から用いられているRTPパケットを使用し、CNG信号、CED信号を利用することで、新たな制御信号を形成することもなく、IP電話機4がプログラムをダウンロードして更新することができる。
[変形例]
なお、上述した実施の形態では、主装置3に収容されたIP電話機4のそれぞれが、自機に搭載されたプログラムを更新する場合を例にして説明したが、これに限るものではない。音声通話を可能にする機能を備えた主装置3も、IP電話機4の場合と同様にして、自機に搭載されたプログラムを、新たに提供されるプログラムに更新することができる。
また、主装置3に接続されたIP電話機4だけでなく、例えば、家庭で用いるIP電話機4の場合と同様にして、自機に搭載されたプログラムの更新を行うことができる。
また、上述した実施の形態では、いわゆるファームウェアなどのプログラムの更新を行う場合を例にして説明したが、これに限るものではない。例えば、各種の処理において必要になるプログラム以外の固定的に用いるデータを更新する場合にも、この発明を用いることができる。
また、例えば「0120」といった特定の電話番号を利用することにより、着信先が通話料金を負担する電話会社が提供するサービスを利用して、IP電話機4などの電話関係装置がサーバ1に電話を掛けてプログラムの更新を行うようにすることも可能である。この他にも、IP電話機4などの電話関係装置からサーバ1に電話を掛けた場合には、通信に掛かる費用は、プログラムを提供する側が負担できるようにする種々の方式を採用できる。
この発明は、少なくともRTPパケットのような、音声データの送受が可能なパケットを送受することができる主装置やIP電話機などの電話システムを構成するために用いられる電話関連装置に提供することができる。
また、上述した実施の形態では、RTPパケットを送受できる場合を例にして説明したが、これに限るものではない。UDPやRTPの後継プロトコルや拡張プロトコル、その他のプロトコルを用いる場合であっても、少なく問いも音声をパケット化して送受することにより音声通話が可能な環境で動作する種々の電話システムにこの発明を適用できる。
[その他]
上述した実施の形態の説明からも分かるように、請求項の情報通知手段の機能は、実施の形態のIP電話機4(以下、IP電話機4と記載する。)の情報通知部431が実現している。また、請求項のCNG信号確認手段の機能は、IP電話機4のCNG信号確認部432が実現している。また、請求項のCED信号送信手段の機能は、IP電話機4のCED信号送信部433が実現している。また、請求項の無効化手段の機能は、IP電話機4の無効化処理部434が実現している。また、請求項のプログラム取得手段の機能は、IP電話機4のプログラム取得部435が実現している。
また、請求項のプログラム確認手段の機能は、実施の形態のプログラム提供サーバ(以下、サーバと記載する。)1のプログラム確認部107が実現し、請求項のCNG信号送信手段の機能は、サーバ1のCNG信号送信部111が実現している。また、請求項のプログラム提供手段の機能は、サーバ1のプログラム提供部113が実現している。
また、図8、図9のシーケンス図を用いて行うプログラムの更新処理が、この発明による電話システムにおけるプログラムの更新方法の一実施の形態に対応している。また、サーバ1の登録処理部106、プログラム確認部107、CNG信号送信部111、CED信号確認部112、プログラム提供部113、提供終了処理部114の各機能は、サーバ1の制御部102で実行されるプログラムにより、制御部102の機能として実現することもできる。
また、IP電話機4の情報通知部431、CNG信号確認部432、CED信号送信部433、無効化処理部434、プログラム取得部435、継続・終了処理部436の各機能は、IP電話機4の制御部420で実行されるプログラムにより、制御部420の機能として実現することもできる。