以下に本発明の実施の形態について、図面を参照しながら説明する。なお、実質同一部位には同じ参照番号を付与し、説明は繰り返さない。
図1を用いて本発明のシステム構成図について説明する。
各電話端末10は通常の電話機能としてのSIP(Session Initiation Protocol)機能の他に、予め割り振られた呼制御サーバ装置(以下、SIPサーバ)の一部を処理する機能を有する。そしてこの電話端末10の複数台が連携してSIPサーバ機能を実現し、内線電話システムとして動作する。
本発明の電話端末10−1は、各担当プログラムのうち統括担当プログラムを具備し、他の担当プログラムを有する電話端末へ、呼制御処理の割り振りを行う。具体的に電話端末10−1は、電話端末10−2〜10−Nに対して、それぞれの担当プログラムの役割に応じてSIPサーバが行うSIPメッセージ処理を要求し、要求を受けた電話端末10は当該担当プログラムの処理を実行する。
また、相手電話端末20はSIPサーバとして電話端末10−1を登録し、外部ネットワーク60からのSIPメッセージは必ず電話端末10−1を介して電話端末10に送信される。つまり、電話端末10−1は、外部ネットワーク60からはSIPサーバと認識され、他の電話端末10から外部ネットワーク60への送信も必ず電話端末10−1を介して送信する。以降の説明では電話端末10−1を統括担当端末10−1と呼称する。
電話端末10−2は、各担当プログラムのうちのINVITE担当プログラムを具備し、統括担当端末10−1からの要求によって、SIPサーバがINVITEを受け取った場合の処理を行う。以降の説明では電話端末10−2が呼制御処理に関しての処理を行う場合、INVITE担当端末10−2と呼称する。
電話端末10−3は、各担当プログラムのうちの180Ringing担当プログラムを具備し、統括担当端末10−1からの要求によって、SIPサーバが180Ringingを受け取った場合の処理を行う。以降の説明では電話端末10−3が呼制御処理に関しての処理を行う場合、180Ringing担当端末10−3と呼称する。
電話端末10−4は、各担当プログラムのうちの200OK担当プログラムを具備し、統括担当端末10−1からの要求によって、SIPサーバが200OKを受け取った場合の処理を行う。以降の説明では電話端末10−4が呼制御処理に関しての処理を行う場合、200OK担当端末10−4と呼称する。
電話端末10−5は、各担当プログラムのうちのACK担当プログラムを具備し、統括担当端末10−1からの要求によって、SIPサーバがACKを受け取った場合の処理を行う。以降の説明では電話端末10−2が呼制御処理に関しての処理を行う場合、ACK担当端末10−5と呼称する。
同様に電話端末10−Nは、○○担当プログラムを具備し、SIPメッセージに応じた処理を行う。
次に図2を用いて、電話端末10−1〜10−Nの各担当プログラムの動作についてさらに詳しく説明する。
図2の役割分担表のフィールドは、各電話端末10の電話端末IDと、各担当プログラムの名称、各担当プログラムの処理を示す。
レコード1081の統括担当端末10−1は、相手電話端末20および外部ネットワーク60および電話端末10からは仮想のSIPサーバとして動作し、SIPメッセージのやりとりは必ず統括担当端末10−1を介して送信される。
SIPメッセージを受信すると、SIPメッセージ毎に処理が割り当てられた統括担当端末以外の担当端末を検索して、該当する担当端末に対し、SIPメッセージ処理要求(呼制御メッセージ処理要求)を送信し、SIPメッセージの処理を要求する。各担当端末の処理が完了すると、SIPメッセージ処理完了通知と共に処理結果の通知を受け、当該担当端末から受け取った処理結果にSIPメッセージがある場合には、該当する端末に対してこれを送信する。
ここで、SIPメッセージ処理完了通知とは、統括担当端末10−1以外の担当端末が自担当呼制御処理を実行し、処理を完了したことを通知するためのIPパケットである。また、統括担当端末10−1以外の担当端末は自担当呼制御処理時に処理結果として従来SIPサーバがSIPメッセージを受信して次に送信するSIPメッセージを生成するが、これを各担当端末にて生成し、SIPメッセージ処理完了通知には生成したSIPメッセージを含めて送信される。
レコード1082のINVITE担当端末10−2は、統括担当端末10−1から、SIPメッセージ処理要求(INVITE処理要求)を受信すると、統括担当端末10−1のSIPメッセージを解析して、送信先電話端末を検索する。そして検索できた場合には、送信先電話端末へのINVITEと相手電話端末20への100Tryingを生成し、検索できなかった場合には、404Not Foundを生成し、統括担当端末10−1に対して、処理が完了したことを通知するSIPメッセージ処理完了通知として送信する。
レコード1083の180Ringing担当端末10−3は、統括担当端末10−1から、SIPメッセージ処理要求(180Ringing処理要求)を受信すると、統括担当端末10−1のSIPメッセージを解析して、送信先電話端末10への180Ringingを生成し、統括担当端末10−1にSIPメッセージ処理完了通知として送信する。
レコード1084の200OK担当端末10−4は、統括担当端末10−1から、SIPメッセージ処理要求を受信すると、統括担当端末10−1のSIPメッセージを解析して、送信先電話端末10への200OKを生成し、送信先電話端末10への180Ringingを生成し、統括担当端末10−1にSIPメッセージ処理完了通知として送信する。
レコード1085のACK担当端末10−5は、統括担当端末10−1から、SIPメッセージ処理要求を受信すると、統括担当端末10−1のSIPメッセージを解析して、送信先電話端末10へのACKを生成し、統括担当端末10−1にSIPメッセージ処理完了通知として送信する。
レコード1086の○○担当端末10−Nは、電話端末10−2〜10−5と同様にSIPメッセージに応じた処理を行い、SIPメッセージ処理完了通知を送信する。
尚、各SIPメッセージ処理を要求するまたは、SIPメッセージを送信する場合に、本発明の特徴の一つであるライト/リード処理を用いたメモリ制御方法を用いる。
次に図3のメモリ配置図を用いて、ライト/リード処理について説明する。
電話端末10のメモリ空間には、統括担当プログラム等、担当プログラム1001及びローカルデータ1002、グローバルデータ1003、端末機能プログラム1005、端末機能データ1006がそれぞれ展開される。
尚、図3のメモリアドレスは一例であり、プログラムサイズ等に応じて設定すればよい。
ここで、担当プログラム1001とは、図2で説明したSIPサーバがSIPメッセージ毎に割り振られた担当プログラムであり、電話端末10−1には統括担当プログラム1001−1が、電話端末10−2にはINVITE担当プログラム1001−2が、電話端末10−3には180Ringing担当プログラム1001−3が、電話端末10−nには○○担当プログラムがそれぞれ展開されている(図示せず)。
ローカルデータ1002とは、各担当プログラムの処理において変数や一時データの保存等、自担当プログラム内で使用するスタティックなデータを示す。
グローバルデータ1003とは、各担当プログラムの処理においてSIPメッセージや、検索結果、処理結果等の他の担当端末と処理を共有するデータのことを示す。グローバルデータ1003は、さらに処理毎に複数のメッセージボックス1004を持ち、メッセージボックスのそれぞれには、メッセージボックス番号が割り振られている。また、各担当端末10はこの端末間で展開されているメッセージボックス1004の使用状態を常に監視している。
そして各担当端末10は、自担当プログラムの処理が完了またはライト/リード処理がある場合に、他の担当端末が使用していないメッセージボックスを参照し、当該データと共にライト/リード処理要求を送信する。また受信したライト/リード処理要求がメッセージボックス1004の容量を超えるデータであった場合には、2つ以上のメッセージボックス間で展開する。
次に図4を用いて、本発明の電話端末10の機能ブロックについて説明する。
電話端末10は、外部接続IF部101と、通信制御部102と、主制御部103と、担当呼制御処理部104と、ライト/リード処理部105と、端末機能処理部106と、マンマシンIF部107と、状態管理部108と、記憶部109とから構成される。
外部接続IF部101は、LAN70よりIPパケットの信号を受けとると通信制御部102に渡し、通信制御部102からIPパケットの信号を受け取るとLAN70に送出する外部接続用インターフェースである。
通信制御部102は、外部接続IF部101を介して、LAN70との通信一般を制御し、主制御部103から渡されるIPパケットを外部接続IF部101に渡し、外部接続IF部101から渡されるIPパケットを主制御部103に渡す。
主制御部103は、通信制御部102、担当呼制御処理部104、ライト/リード処理部105、状態管理部108、端末機能処理部106、記憶部109と接続し、接続した各ブロックと連携して自電話端末10の処理全般を行う。
担当呼制御処理部104は、主制御部103と接続し、図2で説明した各担当端末の処理のうち、自担当端末の担当呼制御処理を行うブロックである。
自端末が統括担当端末であった場合、主制御部103、通信制御部102と連携して外部ネットワーク60またはLAN70のSIPメッセージを検出する。そして検出したSIPメッセージをローカルデータメモリ部115に記憶し、ライト/リード処理部105に対して、グローバルデータ1003のライト処理要求の送信を指示する。
また、ライト/リード処理部105からライト処理要求の応答としてメッセージボックス番号を受けると、ローカルデータメモリ部115に記憶されたSIPメッセージからSIPメッセージの種類を抽出し、抽出したSIPメッセージの種類をキーとして役割分担テーブルから、分散処理の要求先の担当端末のIPアドレスを特定する。
ここで役割分担テーブルとは、図示しないが図2で説明した役割分担表の電話端末IDのフィールドと担務のフィールド及び各電話端末のIPアドレスを電話端末IDのレコード毎に保存したテーブルを示す。
そして、要求先の担当端末に対して、メッセージボックス番号を含むSIPメッセージ処理要求を生成し、主制御部103、通信制御部102と連携して要求先の担当端末に対してこれを送信する。
また、要求先の担当端末から、SIPメッセージ処理要求の応答としてSIPメッセージ処理完了通知を受信すると、SIPメッセージ処理完了通知に含まれるSIPメッセージを抽出し、自端末のSIPメッセージとしてこれを送信する。
自端末が統括担当端末10−1以外の担当端末であった場合は、主制御部103、通信制御部102と連携して統括担当玉津10−1からのSIPメッセージ処理要求を検出する。そして検出したSIPメッセージ処理要求をローカルデータメモリ部115に記憶し、SIPメッセージ処理要求に含まれるメッセージボックス番号を抽出して、ライト/リード処理部105に対して、グローバルデータ1003の当該メッセージボックス番号のリード処理要求を送信する。
次に、ライト/リード処理部105からリード処理要求の応答としてリードしたデータを受けとると、リードしたデータをローカルデータ部115に記憶する。そしてプログラムメモリ部113の自担当プログラムの処理を開始する。
ここで各担当プログラムの処理とは、一般的なSIPメッセージに係る処理であり、説明を省略する。尚、自担当プログラムの処理中にグローバルデータ1003のライト/リード制御が発生した場合には、同様にライト/リード処理要求を送信し、結果をローカルデータメモリ部115に記憶して処理を続ける。
自担当プログラムの処理が完了すると、自端末が統括担当端末10−1以外の担当端末は処理結果として送信するSIPメッセージを生成する。そして主制御部103、通信制御部102と連携して、統括担当端末10−1に対し、生成したSIPメッセージを含むSIPメッセージ処理完了通知を送信する。
ライト/リード処理部105は、主制御部103に接続し、図3で説明したグローバルデータのメッセージボックスのライト/リード処理及びライト/リード処理要求を生成するブロックであり、主制御部103、通信制御部102と連携してライト/リード処理要求を検出すると、メモリボックス番号を抽出し、抽出したメモリボックス番号をキーにメッセージボックス管理部114に記憶されるメッセージボックスアドレステーブルの該当するメモリアドレスを抽出し、ライト/リード処理を行う。
ここで、メッセージボックスアドレステーブルとはメッセージボックス管理部114に記憶され、メモリボックス番号と各端末のメモリアドレスの対応テーブルである。
リード処理要求を受信した場合、リード処理要求にふくまれるメッセージボックス番号をキーに、メッセージボックスアドレステーブルから該当するメモリアドレスを抽出し、抽出したメモリアドレスのデータをリードデータとして読み出す。そして、主制御部103、通信制御部102と連携して、リードデータを含むリード処理完了通知を、リード処理要求を送信した担当端末に送信する。
ライト処理要求を受信した場合、ライト処理要求に含まれるライトデータとメッセージボックス番号を抽出し、抽出したメッセージボックス番号をキーに、メッセージボックス管理テーブルから該当するメモリアドレスを抽出し、該当するメモリアドレスにライトデータを書き込む。そして、主制御部103、通信制御部102と連携してライト処理要求を送信した担当端末にライト処理が完了したことをライト処理完了通知として送信する。
また、主制御部103、通信制御部102と連携してライト/リード処理完了通知を検出すると、リード処理用完了通知であった場合、リード処理用完了通知に含まれるリードデータを担当呼制御処理部104に渡し、ライト処理完了通知であった場合、担当呼制御処理部104に渡す。
さらに、担当呼制御処理部104からライト/リード処理要求の送信指示を受けると、のメッセージボックス管理テーブルから使用していないメッセージボックス番号を検索する。
ここでメッセージ管理テーブルとは、グローバルデータ1003に展開されているメッセージボックス番号と、使用状態を関連付けたテーブルであり、さらにメッセージボックス番号のみメモリアドレスを、ライト/リード処理が行われる毎にテーブルを更新する。
端末機能処理部106は、主制御部103、マンマシンIF部107に接続し、端末としての電話機能の呼処理や図示しないダイヤルキー、ハンドセット、スピーカ、LCD等表示機器等入出力デバイスの制御全般を行う。
マンマシンIF部107は端末機能処理部106に接続され、図示しないダイヤルキー、ハンドセット、スピーカ、LCD等表示機器等入出力デバイスを有し、入力デバイスからの情報をデジタル信号として端末機能処理部106に渡し、端末機能処理部106から送られてきたデジタル信号の情報を出力デバイスにて表示する。
状態管理部108は、主制御部103に接続され、自端末10が統括担当端末であった場合に、図示しない役割分担テーブルを保存し、主制御部103の指示に応じてSIPメッセージ担当端末を参照する記憶部である。尚、自端末10がSIPメッセージ担当端末であった場合は、状態管理部108は動作しない。
記憶部109は、主制御部103及び端末機能処理部106と接続し、各ブロックからの指示に従いデータを参照するメモリ記憶部である。また、記憶部109は、担当呼制御メモリ部110、端末機能メモリ部111から構成される。
尚、本実施例では説明を分かりやすくするために、状態管理部108と記憶部109を分けて説明しているが状態管理部108は記憶部109内に含まれていてもよい。
担当呼制御メモリ部110は、図2に示した役割分担に係る記憶部109の担当プログラムに関する記憶部であり、グローバルデータメモリ部112、プログラムメモリ部113、メッセージボックス管理部114、ローカルデータメモリ部115から構成され、各電話端末に分散される担当呼制御処理に利用される記憶部である。
グローバルデータメモリ部112は図3で説明したグローバルデータが記憶されるメモリ領域であり、メッセージボックスのデータやSIPメッセージなどのデータを記憶する。
プログラムメモリ部113は図3で説明したプログラムデータが記憶されるメモリ領域である。
メッセージボックス管理部114は、メッセージボックス管理テーブルとメッセージボックスアドレステーブルを記憶するメモリ領域である。
ローカルデータメモリ部115は、図3で説明したローカルデータが記憶されるメモリ領域である。
端末機能メモリ部111は端末機能に関する記憶部であり、端末機能プログラムメモリ部116、端末機能データメモリ部117とから構成される。
端末機能プログラムメモリ部116は、図3で説明した端末機能プログラムが記憶されるメモリ領域であり、電話端末として動作するプログラムを記憶する。
端末機能データメモリ部117は、図3で説明した端末機能データが記憶されるメモリ領域であり、電話端末として動作するための設定データ等を記憶する。
次に図5を用いて、電話端末10の処理フローを説明する。本フローは予め担当プログラムが割り振られた複数の電話端末10の電源が投入されたが電話システムを構築した状態から開始される。
先ず、マンマシンIF部107にキー操作またはオンフック操作があったか否かを判断する(S1)。ここでキー操作またはオンフック操作があった場合(S1:Yes)、電話端末10の端末機能処理部106は操作に応じて端末機能処理を行う(S2)とともに主制御部103に操作があったことを通知する。
ここで、端末機能処理とはSIPプロトコルを用いた端末側の電話機能のことである。
キー入力操作またはオンフック操作でなかった場合(S1:No)、通信制御部102は、LAN70から外部接続IF部101を介して自端末宛のIPパケットを受信したか否かを判断する(S3)。自端末宛のIPパケットを受信していない場合(S3:No)、S1に戻る。
自端末宛のIPパケットを受信した場合(S3:Yes)、通信制御部102はIPパケットを主制御部103に渡し、主制御部103は担当呼制御処理部104及びライト/リード処理部105と連携して受け取ったIPパケットを解析する。そしてIPパケットが担当呼制御処理のIPパケットであった場合(S4:Yes)、主制御部103はIPパケットを担当呼制御処理部104に渡し、渡された担当呼制御処理部104は図6、図7に後述する各担当端末に割り当てられた各種担当呼制御処理を行い(S5)、S1に戻る。
IPパケットがグローバルデータのライト/リード処理要求のIPパケットであった場合(S6:Yes)、主制御部103はIPパケットをライト/リード処理部105に渡す。
そして、ライト/リード処理部105はライト/リード処理要求のIPパケットを受け取ると、ライト/リード処理要求を解析し、リードかライトかのフラグ情報、メッセージボックス番号、ライトであった場合にライトデータ、IPパケットの送信元アドレスを抽出しローカルデータメモリ部115に保存する。
抽出したフラグ情報がリードのフラグであった場合(S7:リード)、ライト/リード処理部105は抽出したメッセージボックス番号のデータを読み出す(S8)。そして、抽出したIPパケットの送信元にリードデータを送信し(S9)、S1に戻る。
抽出したフラグ情報がライトのフラグであった場合(S7:ライト)、ライト/リード処理部105は抽出したメッセージボックス番号に対し、ライトデータを書き込む(S10)。そして、IPパケットの送信元にライトが完了したことを送信し(S11)、S1に戻る。
IPパケットが担当呼制御処理でもライト/リード処理でもなかった場合(S6:No)、着信等、端末側の処理と判断し、主制御部103はIPパケットを端末機能処理部106に渡して端末機能処理を行い(S2)、S1に戻る。
次に図6を用いて、図5の担当端末処理のうち統括担当端末10−1の処理フローについて説明する。
S5で統括担当端末の担当呼制御処理が開始されると、担当呼制御処理部104は主制御部103から受け取ったSIPメッセージのIPパケットをローカルデータメモリ部115に記憶し、ライト/リード処理部105と連携し、ライト処理要求の送信を指示する。
指示を受けたライト/リード処理部105はメッセージボックス管理部114のメッセージボックス管理テーブルから使用していないメッセージボックス番号を指定する(S501)。
そして指定したメッセージボックス番号をキーにメッセージボックス管理部114のメッセージボックスアドレステーブルを検索し、自端末のメッセージボックス番号か否かを判断する(S502)。
自端末のメッセージボックス番号であった場合(S502:Yes)、主制御部103に通知し、通知された主制御部103は、グローバルデータメモリ部112の該当するメッセージボックス番号のメモリアドレスにデータを記憶し(S503)、S506に進む。
自端末のメッセージボックス番号であった場合(S502:No)、当該メッセージボックス番号の電話端末に対し、ライトのフラグ情報、空いているメッセージボックス番号、ライトするSIPメッセージを含むライト処理要求を生成して送信する(S504)。そして、ライト要求送信した電話端末からライト処理完了通知が受信されるまで待機する(S505)。
次に担当呼制御処理部104は、受け取ったSIPメッセージの種類を解析する。
INVITEのSIPメッセージ(以下、INVITEメッセージ)であった場合(S506:Yes)、担当呼制御処理部104は、INVITEメッセージをキーに状態管理部108の役割分担テーブルからINVITE担当端末を検索する(S507)。そして、検索したINVITE担当端末のIPアドレスを抽出し、抽出したIPアドレスを宛先としてS501で指定したメッセージボックス番号を含むINVITE処理要求を生成する。さらに、担当呼制御処理部104は、主制御部103、通信制御部102と連携して通信制御部102に生成したINVITE処理要求を外部接続IF部101を介してLAN上のINVITE担当端末にINVITE処理要求を送信する(S508)。
180RingingのSIPメッセージ(以下、180Ringingメッセージ)であった場合(S509:Yes)、担当呼制御処理部104は、180Ringingメッセージをキーに状態管理部108の役割分担テーブルから180Ringing担当端末を検索する(S510)。そして、検索した180Ringing担当端末のIPアドレスを抽出し、抽出したIPアドレスを宛先としてS501で指定したメッセージボックス番号を含む180Ringing処理要求を生成する。さらに、担当呼制御処理部104は、主制御部103、通信制御部102と連携して通信制御部102に生成した180Ringing処理要求を外部接続IF部101を介してLAN上の180Ringing担当端末に180Ringing処理要求を送信する(S511)。
200OKのSIPメッセージ(以下、200OKメッセージ)であった場合(S512:Yes)、 担当呼制御処理部104は、200OKメッセージをキーに状態管理部108の役割分担テーブルから200OK担当端末を検索する(S513)。そして、検索した200OK担当端末のIPアドレスを抽出し、抽出したIPアドレスを宛先としてS501で指定したメッセージボックス番号を含む200OK処理要求を生成する。さらに、担当呼制御処理部104は、主制御部103、通信制御部102と連携して通信制御部102に生成した200OK処理要求を外部接続IF部101を介してLAN上の200OK担当端末に200OK処理要求を送信する(S514)。
ACKのSIPメッセージ(以下、ACKメッセージ)であった場合(S515:Yes)、担当呼制御処理部104は、ACKメッセージをキーに状態管理部108の役割分担テーブルからACK担当端末を検索する(S516)。そして、検索したACK担当端末のIPアドレスを抽出し、抽出したIPアドレスを宛先としてS501で指定したメッセージボックス番号を含むACK処理要求を生成する。さらに、担当呼制御処理部104は、主制御部103、通信制御部102と連携して通信制御部102に生成したACK処理要求を外部接続IF部101を介してLAN上のACK担当端末にACK処理要求を送信する(S517)。
さらに抽出したSIPメッセージの種類が上記以外のであった場合(S515:No),同様に各SIPメッセージ要求処理を行う(S518)。尚、本説明では上記以外のSIPメッセージの処理については説明を省略する。
各SIPメッセージ処理要求の送信が完了すると、SIPメッセージ処理完了通知が受信するまで待機する(S519)。
SIPメッセージ処理完了通知を受信すると(S519:Yes)、担当呼制御処理部104は、自担当呼制御処理完了時に生成したSIPメッセージを送信し(S520)、図5のS1に戻る。
次に図7を用いて、S5で統括担当端末以外の担当端末の処理フローについて説明する。
図7の(a)は、INVITE担当端末の処理フローである。
まず、担当呼制御処理部104は主制御部103からINVITE処理要求のIPパケットを受け取るとローカルデータメモリ部115に記憶し、メッセージボックス番号を抽出する。そして、抽出したメッセージボックス番号からグローバルデータ1003に記憶されているINVITEメッセージをリードする。
具体的には、メッセージボックス番号をキーとしてメッセージボックスアドレステーブルを検索し、自端末のメッセージボックス番号が自端末のメッセージボックスか否かを判断する。
そして自端末のメッセージボックスであった場合、メッセージボックスアドレステーブルから一致したメッセージボックス番号のメモリアドレスを抽出し、当該メモリアドレスに記憶されているINVITEメッセージをリードする。
自端末のメッセージボックスでない場合、さらにメッセージボックス番号をキーとしてメッセージボックス管理テーブルを検索する。そして、一致したメッセージボックス番号の担当端末を抽出し、当該担当端末にリード要求を送信する。さらに、当該担当端末から、リード処理完了通知を受信すると、リード処理完了通知に含まれるINVITEメッセージのリードデータを抽出する。
つぎに、INVITEメッセージをリードすると、ローカルデータメモリ部115に記憶し、着信先のユーザID(外線番号)を抽出する。つぎに担当呼制御処理部104は主制御部103と連携して抽出した着信先のユーザIDをキーとして記憶部109の図示しない宛先テーブルから該当するユーザIDのレコードを検索する(S522)。
ここで宛先テーブルとは、電話システムに帰属する電話端末10毎にユーザIDとIPのレコードを有するテーブルであり通常のSIPサーバが保持するテーブルである。
該当するユーザIDのレコードがある場合(S523:Yes)、担当呼制御処理部104は、該当する送信先のIPを宛先としたINVITEメッセージを生成し、送信元のIPアドレスを宛先として100Tryingメッセージを生成し、ローカルデータメモリ部115に記憶する(S524)。また、該当するユーザIDのレコードがない場合(S523:No)、INVITEメッセージを送信した送信元のIPを宛先として404Not Foundメッセージを生成し、ローカルデータメモリ部115に記憶する(S525)。そして統括担当端末に対して生成したSIPメッセージを含むSIPメッセージ処理完了通知を送信し(S526)、図5のS1に戻る。
図7の(b)は、180Ringing担当端末の処理フローである。
まず、担当呼制御処理部104は主制御部103から180Ringing処理要求のIPパケットを受け取るとローカルデータメモリ部115に記憶し、メッセージボックス番号を抽出する。そして、抽出したメッセージボックス番号からグローバルデータ1003に記憶されている180Ringingメッセージをリードする(S541)。
そして、180Ringingメッセージを解析し、送信先電話端末のIPアドレスを抽出する(S542)。そして抽出した送信先電話端末のIPアドレスを送信先IPアドレスとした180Ringingメッセージを生成する(S543)する。そして統括担当端末に対して生成したSIPメッセージを含むSIPメッセージ処理完了通知を送信し(S544)、図5のS1に戻る。
図7の(c)は、200OK担当端末の処理フローである。
まず、担当呼制御処理部104は主制御部103から200OK処理要求のIPパケットを受け取るとローカルデータメモリ部115に記憶し、メッセージボックス番号を抽出する。そして、抽出したメッセージボックス番号からグローバルデータ1003に記憶されている200OKメッセージをリードする(S561)。
そして、200OKメッセージを解析し、送信先電話端末のIPアドレスを抽出する(S562)。そして抽出した送信先電話端末のIPアドレスを送信先IPアドレスとした200OKメッセージを生成する(S563)する。そして統括担当端末に対して生成したSIPメッセージを含むSIPメッセージ処理完了通知を送信し(S564)、図5のS1に戻る。
図7の(d)は、ACK担当端末の処理フローである。
まず、担当呼制御処理部104は主制御部103からACK処理要求のIPパケットを受け取るとローカルデータメモリ部115に記憶し、メッセージボックス番号を抽出する。そして、抽出したメッセージボックス番号からグローバルデータ1003に記憶されているACKメッセージをリードする(S581)。
そして、ACKメッセージを解析し、送信先電話端末のIPアドレスを抽出する(S582)。そして抽出した送信先電話端末のIPアドレスを送信先IPアドレスとしたACKメッセージを生成する(S583)する。そして統括担当端末に対して生成したSIPメッセージを含むSIPメッセージ処理完了通知を送信し(S584)、図5のS1に戻る。
また、上記以外のSIPメッセージの場合であっても、同様にグローバルデータ1003を介した担当呼制御処理を行う。
次に図8を用いて、本電話システムが相手電話端末20から電話端末10−3への着信を受け、通話するまでの動作シーケンスを説明する。
まず、相手電話端末20から統括担当端末10−1に対してINVITEメッセージを受信すると(S101)、統括担当端末10−1は受信したINVITEメッセージをグローバルデータメモリ部112のメッセージボックスに保存する。そして受信したINVITEメッセージをキーとして状態管理部108の役割分担テーブルを検索して該当するINVITE担当端末10−2を抽出する。そして、抽出したINVITE担当端末10−2を宛先としたグローバルデータメモリ部112に保存されたメッセージボックスのメッセージボックス番号を含むINVITE処理要求を生成し、送信する(S102)。
INVITE処理要求を受信したINVITE担当端末10−2は、INVITE処理要求に含まれるメッセージボックス番号の端末から、当該メッセージボックスのデータをリード処理を行う。そしてリードしたメッセージボックスのINVITE処理を実行し、電話端末10−3宛のINVITEメッセージと相手電話端末20宛の100Tryingメッセージを生成する。次に生成したSIPメッセージを含むINVITE処理完了通知を統括担当端末10−1に送信する(S103)。
INVITE処理完了通知を受信した統括担当端末10−1はINVITEと100TryingのSIPメッセージを、自端末のSIPメッセージとして電話端末10−3に対してはINVITEメッセージを送信し(S104)、相手電話端末20に対しては100Tryingメッセージを送信する(S105)。
次に、電話端末10−3はINVITEメッセージを受信すると、端末機能処理部106でINVITEの端末機能処理を行い、統括端末10−1に対し180Ringingと200OKを返す(S106、S110)。
統括担当端末10−1は、電話端末10−3から180Ringingメッセージを受信すると(S106)、統括担当端末10−1は受信したSIPメッセージをグローバルデータメモリ部112のメッセージボックスに保存する。そして受信したSIPメッセージをキーとして、状態管理部108の役割分担テーブルを参照して該当する180Ringing担当端末10−3の宛先を抽出する。そして、180Ringing担当端末10−3宛のグローバルデータメモリ部112に保存されたメッセージボックスのメッセージ番号を含む180Ringing処理要求を生成し、送信する(S107)。
180Ringing処理要求を受信した180Ringing担当端末10−3は、180Ringing処理要求に含まれるメッセージボックス番号から、当該メッセージボックス番号が展開されている電話端末にリード要求を送信し、リード処理を行う。そしてリードしたメッセージボックスの180Ringing処理を実行し、相手電話端末20宛の180Ringingメッセージを生成し、180Ringingメッセージを含む180Ringing処理完了通知を統括担当端末10−1に送信する(S108)。
180Ringing処理完了通知を受信した統括担当端末10−1は180RingingのSIPメッセージを、自端末のSIPメッセージとして相手電話端末20に対して180Ringingメッセージを送信する(S109)。
統括担当端末10−1は、電話端末10−3から200OKメッセージを受信すると(S110)、統括担当端末10−1は受信したSIPメッセージをグローバルデータメモリ部112に保存する。そして受信したSIPメッセージをキーとして、状態管理部108の役割分担テーブルを参照して該当する200OK担当端末10−3の宛先を抽出する。そして、200OK担当端末10−3宛のグローバルデータメモリ部112に保存したSIPメッセージを含む200OK処理要求を生成し、送信する(S111)。
200OK処理要求を受信した200OK担当端末10−3は、200OK処理要求に含まれるメッセージボックス番号から、当該メッセージボックス番号が展開されている電話端末にリード要求を送信し、リード処理を行う。そしてリードしたメッセージボックスの200OK処理を実行し、相手電話端末20宛の200OKメッセージを生成し、200OKメッセージを含む200OK処理完了通知を統括担当端末10−1に送信する(S112)。
200OK処理完了通知を受信した統括担当端末10−1は200OKのSIPメッセージを、自端末のSIPメッセージとして相手電話端末20に対して200OKメッセージを送信する(S113)。
統括担当端末10−1は、200OKを送信すると相手電話端末20はACKを送信する。
相手電話端末20から統括担当端末10−1に対してACKメッセージを受信すると(S114)、統括担当端末10−1は受信したACKメッセージをグローバルデータメモリ部112に保存する。そして受信したSIPメッセージをキーとして状態管理部108の役割分担テーブルを参照して該当するACK担当端末10−2を参照する。そして、参照したACK担当端末10−2を宛先としたグローバルデータメモリ部112に保存さあれたメッセージボックスのメッセージボックス番号を含むACK処理要求を生成し、送信する(S115)。
ACK処理要求を受信したACK担当端末10−3は、ACK処理要求に含まれるメッセージボックス番号から、当該メッセージボックス番号が展開されている電話端末にリード要求を送信し、リード処理を行う。そしてリードしたメッセージボックスのACK処理を実行し、相手電話端末20宛のACKメッセージを生成し、ACKメッセージを含むACK処理完了通知を統括担当端末10−1に送信する(S116)。
ACK処理完了通知を受信した統括担当端末10−1はACKのSIPメッセージを、自端末のSIPメッセージとして180Ringing担当端末10−3に対してACKメッセージを送信し(S117)、通話路が確立され音声データによる通話が開始される(S118)。
以上、本発明の一実施の形態を説明した。
本実施の形態では、SIPサーバの機能を複数の電話端末10で実現させるために、通常の電話機能を有する電話端末10のそれぞれはSIPサーバ処理の一部を処理し、さらにこのSIPサーバ機能の一部をSIPメッセージの種類毎に処理を担当するSIPメッセージ担当端末と、SIPメッセージ担当端末に処理を割り振る統括担当端末10−1に分けて処理した。このため、複数の電話端末10を配置するだけで内線電話システムの構築が可能となり、SIPサーバ等の設置にかかるスペースやコストを削減できる効果がある。
また、本実施の形態では、各電話端末10にグローバルデータメモリ部112を持たせ、SIPサーバが行うメモリ制御(ライト/リード制御)をLAN上で行うことで、各電話端末10が有する空きメモリ領域を有効活用している。このため、電話システムの規模が拡大する場合でも、増加する電話端末のグローバルデータのメモリ領域が利用できるので、柔軟なシステム拡張ができる。
さらに、グローバルデータメモリ部に展開されるデータは、メッセージボックス単位でのライト/リード制御なので端末毎のメモリ設計が自由である。
尚、本実施の説明ではSIP制御を用いた場合を例に説明をしているが、本発明はこれに限定されない、例えばH323、MGCP等の呼制御機能をもつプロトコル一般に適用できる。
また、本実施例では説明を分かりやすくするために各処理端末の担当プログラムを1個と限定しているが、本発明はこれに限定されない。例えば電話端末10の性能または担当プログラム自体の処理時間等に応じてさらに複数の担当プログラムに分散してもよいし、電話端末10によって所有する担当プログラムの数が異なっていてもよい。複数の担当プログラムを担務することで、呼制御サーバに必要な電話端末数を少なくすると共に、各SIP担当端末にかかる負荷を分散することができる。
さらに、本実施例では発着信に係る呼制御サーバについて説明したが本発明はこれに限定されない。例えばSIP制御をもちいたプレゼンスサーバやメールサーバ、ボイスメールサーバ等呼制御サーバに接続できるサーバ機能を本電話システムで分散してもよい。
さらに、本実施例ではグローバルメモリアドレスは自端末のグローバルアドレス空間のみを記憶しマルチキャスト/ブロードキャストでライト/リード処理を行ったが、本発明はこれに限定されない。例えば、グローバルアドレス空間毎に割り当てられている電話端末のIPアドレスをレコードとしてユニキャストでライト/リード処理を行ってもよい。これにより、ネットワークの負荷を減少させるという効果がある。
さらに、本実施例では説明を分かりやすくするためにSIPメッセージ担当端末が担当する担当プログラムは1つと記載しているが、本発明はこれに限定されない。例えば、複数の担当プログラムを電話端末毎に重複して有しており、さらに統括担当端末10−1が状態管理部108の役割分担テーブル内で各電話端末の処理状態を監視し、各電話端末の状態に応じて振り分けしてもよい。これによってさらに処理における負荷を分散することが出来、割り当てられた1台の端末が、故障や未接続などの原因で一時的に電話端末がいなくなった場合であっても、他の電話端末で補うという効果もある。
さらに、本実施例では、分散処理をSIPメッセージ毎に分散する場合について説明したが、本発明はこれに限定されない。例えば、さらに処理を分散し統括担当端末の他に、INVITE処理を統括するINVITE処理統括電話端末を配置し、INVITE処理を分散して処理してもよい。これによって処理における負荷を分散する事が出来、さらに呼制御サーバの分散処理に必要なメモリ容量を減らすという効果がある。
また、逆に接続台数が数台しかなく必要SIPメッセージ担当端末以下の場合には、複数のSIPメッセージを同時に処理するようにしてもよい。
さらに、本実施例では説明を分かりやすくするために、統括担当端末は、1台として記載しているが、本発明はこれに限定されない。例えば、統括担当端末が、図1上に図示していないキャリア側のSIPサーバに登録されていた場合に、登録できる回線の数だけ統括担当端末が存在し、統括担当端末が登録されていて、各統括担当端末は各SIPメッセージ担当端末の状態を管理し、それぞれがSIPサーバとして動作してもよい。これによってグローバルデータメモリを複数の統括担当端末で共有することが出来、容易に収容回線をふやすことができるという効果がある。
さらに、本実施例では呼制御サーバについて説明したが本発明はこれに限定されない。例えばSIP制御をもちいたプレゼンスサーバやメールサーバ、ボイスメールサーバ等呼制御サーバに接続できるサーバ機能を本電話システムで分散してもよい。