以下に図面を参照して、本発明にかかる通信課金システムおよび通信課金方法の実施の形態を詳細に説明する。
(通信課金方法の一実施例)
図1は、実施の形態にかかる通信課金方法の一実施例を示す説明図である。図1において、通信課金システム100は、情報処理装置101と、呼制御装置102〜104と、端末105,106と、を含む。通信課金システム100において、情報処理装置101、呼制御装置102〜104および端末105,106は、例えば、インターネットなどのネットワークを介して接続される。
情報処理装置101は、呼制御装置102〜104から呼情報を収集するコンピュータである。ここで、呼情報は、セッションのセッション識別子、開始時刻、終了時刻および異常終了情報を含む情報である。セッションは、2点間(機器間)の通信において、情報をやり取りするために設定する論理的な接続関係である。異常終了情報については後述する。
呼制御装置102〜104は、呼制御を行うコンピュータである。呼制御とは、電話の接続や切断、監視などの制御である。呼制御装置102〜104は、端末間の呼制御に関するメッセージに基づいて、呼情報をそれぞれ記録する。メッセージは、端末間の通話のために、端末/呼制御装置間あるいは呼制御装置間で送受信される制御信号である。
端末105,106は、VoIP(Voice over Internet Protocol)を利用した通話を行うことができるコンピュータである。VoIPは、インターネットやイントラネットなどのIPネットワークを用いて音声データを送受信する技術である。
IPネットワークを介した通話における呼制御プロトコルとしては、例えば、SIPやH.323などがある。以下の説明では、呼制御プロトコルとして、「SIP」を例に挙げて説明する。
ここで、端末105を発信者側の端末(発呼端末)とし、端末106を着信者側の端末(着呼端末)として、端末105から端末106に電話をかける場合を想定する。また、呼制御装置102が端末105を収容し、呼制御装置104が端末106を収容する場合を想定する。
この場合、端末105は、端末106宛のINVITEを送信する。INVITEは、通話要求を行うためのリクエストメッセージである。INVITEには、例えば、Call−ID、発信者の電話番号、着信者の電話番号などが含まれる。Call−IDは、呼を識別する識別子である。
Call−IDは、発信者側の端末(例えば、端末105)で生成される。発信者の電話番号や着信者の電話番号は、例えば、URI(Uniform Resource Identifier)形式で表現される。発信者の電話番号を例に挙げると、「sip:発信者の電話番号@×××」のように表現され、「×××」部分には、例えば、発信者側の端末を収容する呼制御装置のドメインが入る。
端末105から送信されたINVITEは、呼制御装置102〜104を介して、端末106に転送される。各呼制御装置102〜104は、INVITEを受信すると、ステータスコード「100(暫定応答)」のレスポンスメッセージを返す。レスポンスメッセージには、例えば、INVITEに含まれるCall−ID、発信者の電話番号、着信者の電話番号などが含まれる。
端末106は、INVITEを受信すると、ステータスコード「100」のレスポンスメッセージを返した後、電話のベルを鳴らすなどの呼び出し処理を行い、ステータスコード「180」のレスポンスメッセージを返す。ステータスコード「180」のレスポンスメッセージは、呼び出し中であることを発信者へ伝えるためのものである。端末106から送信されたレスポンスメッセージは、呼制御装置102〜104を介して、端末105に転送される。
また、端末106は、オフフック(例えば、受話器をあげる)に応じて、ステータスコード「200(成功)」のレスポンスメッセージを返す。ステータスコード「200」のレスポンスメッセージが、呼制御装置102〜104を介して、端末105に転送されると、端末105,106間の通話が開始される。
各呼制御装置102〜104において、ステータスコード「200」のレスポンスメッセージが受信されると、端末/呼制御装置間または呼制御装置間のセッションがそれぞれ確立される。例えば、呼制御装置102が、ステータスコード「200」のレスポンスメッセージを受信すると、端末105との間のセッションと、呼制御装置103との間のセッションがそれぞれ確立される。
これら端末/呼制御装置間および呼制御装置間のセッションは、端末105,106間の通話(呼)に係る一連のセッションであり、同一のセッション識別子が設定される。セッション識別子としては、例えば、Call−ID、発信者の電話番号および着信者の電話番号の組合せを用いることができる。
また、各呼制御装置102〜104は、ステータスコード「200」のレスポンスメッセージを受信すると、当該メッセージの受信時刻をセッションの開始時刻として、セッションのセッション識別子と対応付けて記録する。したがって、各呼制御装置102〜104におけるセッションの開始時刻は、ステータスコード「200」のレスポンスメッセージの転送時間分それぞれ異なる時刻となる。
また、発信者(または、着信者)が電話を切ると、端末105(または、端末106)は、端末106宛(または、端末105宛)のBYEを送信する。BYEは、確立しているセッションの切断を要求するためのものであり、呼を解放するために双方向で用いられるリクエストメッセージである。BYEには、例えば、Call−ID、発信者の電話番号、着信者の電話番号などが含まれる。
また、各呼制御装置102〜104は、BYEを受信すると、BYEの受信時刻をセッションの終了時刻として、セッションのセッション識別子と対応付けて記録する。これにより、各呼制御装置102〜104において、端末105,106間の通話(呼)に係る各セッションの開始時刻と終了時刻が記録される。この結果、例えば、発信者側の端末105を収容する呼制御装置102により記録されたセッションの開始時刻と終了時刻から通話時間を求めることが可能となり、発信者に対する課金処理を行うことができる。
ところが、ネットワーク障害等により、発信者側の端末105を収容する呼制御装置102に、端末105,106からのBYEが届かない場合がある。ネットワーク障害等には、例えば、通信課金システム100内の不図示のネットワーク機器(例えば、ルータ、スイッチ)の障害、ネットワーク機器間の伝送路の障害、呼制御装置(例えば、呼制御装置103)の輻輳などが含まれる。
この場合、呼制御装置102において、端末105(または、呼制御装置103)との間でタイムアウトが発生するまで、端末105(または、呼制御装置103)とのセッションが終了したと見なされず、実際の終了時刻よりも後の時刻が、セッションの終了時刻として記録されてしまうことがある。
この結果、発信者に対して正しく課金できない、すなわち、実際の通話時間よりも長い通話時間に基づく課金処理が行われてしまう場合がある。また、一度通話が開始された後は、タイムアウトによりセッションが終了しても、例えば、Q.850のcause値として、通常切断(BYEによる切断)と同じ値が設定される。このため、cause値から、タイムアウトによるセッションの終了を判別することができない。
そこで、本実施の形態では、ネットワーク障害等によりタイムアウトが発生して異常終了したセッションの終了時刻を補正するための通信課金方法について説明する。以下、通信課金システム100の処理例について説明する。
(1)呼制御装置102〜104は、端末間の呼制御に関するメッセージに基づいて、セッションのセッション識別子、開始時刻、終了時刻および異常終了情報を含む呼情報(例えば、呼情報111〜113)をそれぞれ記録する。異常終了情報は、セッションがタイムアウトにより終了したか否かを示す情報である。セッションは、通信相手との接続が有効であることを確認するためのリクエストメッセージに対するレスポンスメッセージが所定時間内に受信できない場合にタイムアウトとなり解放(切断)される。
ここで、ネットワーク障害等により、発信者側の端末105を収容する呼制御装置102に、端末105,106からのBYEが届かない場合、すなわち、通信相手との接続が有効であることを確認するためのリクエストメッセージに対するレスポンスメッセージも届かない場合を想定する。
この場合、呼制御装置102は、例えば、端末105との間のセッションの終了(呼切断)を検出したことに応じて、当該セッションがタイムアウトにより終了したか否かを判断する。図1の例では、端末105との間のセッションがタイムアウトにより終了している。このため、呼制御装置102は、端末105との間のセッションがタイムアウトにより終了したことを示す異常終了情報を含む呼情報111を記録する。
呼情報111には、セッション識別子A(例えば、Call−ID、発信者の電話番号、着信者の電話番号)、開始時刻tS1、終了時刻tE1が含まれる。呼情報111は、呼制御装置102が端末105から受信したINVITE(リクエストメッセージ)に対する呼情報(端末105との間のセッションの情報)である。なお、図示は省略するが、呼制御装置102は、呼制御装置103に送信したINVITEに対する呼情報(呼制御装置103との間のセッションの情報)についても記録する。
また、呼制御装置103は、例えば、呼制御装置102との間のセッションの終了(呼切断)を検出したことに応じて、当該セッションがタイムアウトにより終了したか否かを判断する。図1の例では、呼制御装置102との間のセッションが、呼制御装置104からBYEを受信したことに応じて終了している。このため、呼制御装置103は、呼制御装置102との間のセッションがタイムアウトにより終了していないことを示す異常終了情報を含む呼情報112を記録する。
呼情報112には、セッション識別子A、開始時刻tS2、終了時刻tE2が含まれる。呼情報112は、呼制御装置103が呼制御装置102から受信したINVITEに対する呼情報(呼制御装置102との間のセッションの情報)である。なお、図示は省略するが、呼制御装置103は、呼制御装置104に送信したINVITEに対する呼情報(呼制御装置104との間のセッションの情報)についても記録する。
また、呼制御装置104は、例えば、呼制御装置103との間のセッションの終了(呼切断)を検出したことに応じて、当該セッションがタイムアウトにより終了したか否かを判断する。図1の例では、呼制御装置103との間のセッションが、端末106からBYEを受信したことに応じて終了している。このため、呼制御装置104は、呼制御装置103との間のセッションがタイムアウトにより終了していないことを示す異常終了情報を含む呼情報113を記録する。
呼情報113には、セッション識別子A、開始時刻tS3、終了時刻tE3が含まれる。呼情報113は、呼制御装置104が呼制御装置103から受信したINVITEに対する呼情報(呼制御装置103との間のセッションの情報)である。なお、図示は省略するが、呼制御装置104は、端末106に送信したINVITEに対する呼情報(端末106との間のセッションの情報)についても記録する。
(2)情報処理装置101は、呼制御装置102〜104から呼情報(例えば、呼情報111〜113)を収集する。具体的には、例えば、情報処理装置101は、呼制御装置102〜104に対して呼情報の送信要求を送信することにより、呼制御装置102〜104から呼情報を収集する。
また、情報処理装置101は、呼制御装置102〜104から定期的に送信される呼情報を受信することにより、呼制御装置102〜104から呼情報を収集することにしてもよい。ここでは、呼制御装置102〜104から呼情報111〜113が収集された場合を想定する。
(3)情報処理装置101は、呼制御装置102〜104から収集した複数の呼情報のうち、セッションがタイムアウトにより終了したことを示す異常終了情報を含む第1の呼情報を検索する。図1の例では、呼情報111〜113のうち、セッションがタイムアウトにより終了したことを示す異常終了情報を含む呼情報111が第1の呼情報として検索される。
また、情報処理装置101は、第1の呼情報が検索された場合、複数の呼情報のうち、第1の呼情報と同一のセッション識別子を含む第2の呼情報を検索する。すなわち、情報処理装置101は、第1の呼情報と同一のセッション識別子を含み、かつ、セッションがタイムアウトにより終了していないことを示す異常終了情報を含む呼情報を第2の呼情報として検索する。
図1の例では、呼情報111〜113のうち、呼情報111と同一のセッション識別子Aを含み、かつ、セッションがタイムアウトにより終了していないことを示す異常終了情報を含む呼情報112,113が検索される。
(4)情報処理装置101は、第2の呼情報が検索された場合、第1の呼情報の終了時刻を、第2の呼情報の終了時刻に置き換える。図1の例では、情報処理装置101は、呼情報111の終了時刻tE1を、呼情報112の終了時刻tE2または呼情報113の終了時刻tE3のいずれかに置き換える。
このように、通信課金システム100によれば、呼制御装置102〜104により、セッションのセッション識別子、開始時刻、終了時刻および異常終了情報を含む呼情報を記録することができる。これにより、呼情報に含まれる異常終了情報から、ネットワーク障害等によりタイムアウトが発生して異常終了したセッションを判別することができる。
また、通信課金システム100によれば、情報処理装置101により、呼制御装置102〜104から収集した複数の呼情報のうち、セッションがタイムアウトにより終了したことを示す異常終了情報を含む第1の呼情報を検索することができる。これにより、端末105,106からのBYEに応じた終了時刻ではなく、BYEが届かないために発生したタイムアウトに応じた終了時刻を含む呼情報を特定することができる。
また、通信課金システム100によれば、情報処理装置101により、複数の呼情報のうち、第1の呼情報と同一のセッション識別子を含む第2の呼情報を検索することができる。これにより、端末105または端末106からのBYEに応じた終了時刻を含む呼情報を特定することができる。
また、通信課金システム100によれば、情報処理装置101により、第1の呼情報の終了時刻を、第2の呼情報の終了時刻に置き換えることができる。これにより、ネットワーク障害等により異常終了したセッションについての呼情報の終了時刻を、同一のセッション識別子の正常終了したセッションについての呼情報の終了時刻を用いて補正することができる。
図1の例では、ネットワーク障害等により異常終了したセッションについての呼情報111の終了時刻tE1を、同一のセッション識別子Aの正常終了したセッションについての呼情報113の終了時刻tE3(または、呼情報112の終了時刻tE2)を用いて補正することができる。
この結果、例えば、呼情報111の開始時刻tS1と、補正後の終了時刻tE3から通話時間を求めて、発信者に対する課金処理を行うことができる。これにより、実際の通話時間よりも長い通話時間、図1の例では、実際の終了時刻tEからtE1までの時間分長い通話時間に基づく課金処理が行われることを回避して、発信者に対する余分な課金を防ぐことができる。
なお、上述した説明では、各呼制御装置102〜104が受信したINVITE(リクエストメッセージ)に対する呼情報111〜113を例に挙げて説明したが、これに限らない。例えば、情報処理装置101は、各呼制御装置102〜104が送信したINVITEに対する呼情報を用いて、上記(3)および(4)の処理を行うことにしてもよい。
(通信課金システム200のシステム構成例)
つぎに、図1に示した情報処理装置101を通信課金システム200の課金サーバ201に適用した場合について説明する。
図2は、通信課金システム200のシステム構成例を示す説明図である。図2において、通信課金システム200は、課金サーバ201と、SIPサーバS1〜S3と、端末M1〜Mn(nは、2以上の自然数)と、を含む。通信課金システム200において、課金サーバ201、SIPサーバS1〜S3および端末M1〜Mnは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、移動体通信網、LAN(Local Area Network)、WAN(Wide Area Network)などである。
以下の説明では、端末M1〜Mnのうちの任意の端末を「端末Mi」と表記する場合がある(i=1,2,…,n)。また、SIPサーバS1〜S3のうちの任意のSIPサーバを「SIPサーバSk」と表記する場合がある(k=1,2,3)。
課金サーバ201は、呼情報DB(データベース)220および加入者管理テーブル230を有し、端末間の通話にかかる課金処理を行うコンピュータである。呼情報DB220および加入者管理テーブル230についての詳細な説明は、図6および図7を用いて後述する。
SIPサーバS1〜S3は、SIPに従って呼制御を行うコンピュータである。SIPサーバS1〜S3は、端末Miまたは他のSIPサーバSkからの呼制御に関するメッセージに基づいて、呼情報D(いわゆる、CDR:Call Data Record)をそれぞれ記録する。
SIPサーバS1,S3は、自サーバが収容する端末Mi(加入者)の加入者データを管理する加入者用SIPサーバである。加入者データは、例えば、加入者の電話番号とIPアドレスとの対応関係などを示す情報である。SIPサーバS2は、加入者用SIPサーバ間を中継する中継用SIPサーバである。
図1に示した呼制御装置102〜104は、例えば、SIPサーバS1〜S3に相当する。また、図2では、便宜上、通信課金システム200内のSIPサーバを3台のみ表記することにしたが、2台以上であればSIPサーバは何台であってもよい。
端末M1〜Mnは、SIPによるVoIP通話が可能なコンピュータである。端末M1〜Mnは、例えば、課金対象となるIP電話サービスの加入者が使用するIP電話機、携帯電話機、スマートフォン、PC(パーソナル・コンピュータ)などである。図1に示した端末105,106は、例えば、端末M1〜Mnに相当する。
(課金サーバ201等のハードウェア構成例)
つぎに、図2に示した課金サーバ201およびSIPサーバSkのハードウェア構成例について説明する。ここでは、課金サーバ201およびSIPサーバSkを「課金サーバ201等」と表記する。
図3は、課金サーバ201等のハードウェア構成例を示すブロック図である。図3において、課金サーバ201等は、CPU(Central Processing Unit)301と、メモリ302と、I/F(Interface)303と、ディスクドライブ304と、ディスク305と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、課金サーバ201等の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
I/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、I/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。I/F303には、例えば、モデム、NIC(Network Interface Card)などを採用することができる。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリード/ライトを制御する。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する。ディスク305としては、例えば、磁気ディスク、光ディスクなどが挙げられる。なお、課金サーバ201等は、上述した構成部のほか、例えば、SSD(Solid State Drive)、キーボード、マウス、ディスプレイなどを有することにしてもよい。
(端末Miのハードウェア構成例)
図4は、端末Miのハードウェア構成例を示すブロック図である。図4において、端末Miは、CPU401と、メモリ402と、ディスプレイ403と、入力装置404と、I/F405と、音声信号処理部406と、スピーカ407と、マイクロフォン408と、を有する。また、各構成部はバス400によってそれぞれ接続される。
ここで、CPU401は、端末Miの全体の制御を司る。メモリ402は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
ディスプレイ403は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ403は、例えば、液晶ディスプレイ、有機EL(Electroluminescence)ディスプレイなどを採用することができる。
入力装置404は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置404は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
I/F405は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータ(例えば、図2に示したSIPサーバS1〜S3)に接続される。そして、I/F405は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。
音声信号処理部406は、スピーカ407およびマイクロフォン408に接続される。例えば、マイクロフォン408に受音された音声は、音声信号処理部406でA/D変換される。また、スピーカ407からは音声が出力される。なお、端末Miは、上述した構成部のほかに、例えば、ディスクドライブ、ディスクなどを有することにしてもよい。
(呼情報Dの具体例)
つぎに、SIPサーバSkにより記録される呼情報D(CDR)の具体例について説明する。以下の説明では、SIPサーバSkにより記録される呼情報Dとして、SIPサーバSkが受信したリクエストメッセージに対する呼情報Dを例に挙げて説明する。
図5は、呼情報Dの具体例を示す説明図である。図5において、呼情報500は、Call−IDと、発信者番号と、着信者番号と、通信開始時刻と、通信終了時刻と、切断理由と、異常終了フラグと、を含む情報である。
ここで、Call−IDは、呼を識別する識別子である。発信者番号は、発信者を識別する識別子であり、例えば、発信者の電話番号である。着信者番号は、着信者を識別する識別子であり、例えば、着信者の電話番号である。通信開始時刻は、セッションの開始時刻である。通信終了時刻は、セッションの終了時刻である。切断理由は、呼切断された理由を示すQ.850のcause値である。切断理由「16」は、通常切断を示す。
異常終了フラグは、セッションリフレッシュT.O.(タイムアウト)によりセッションが終了したか否かを示す情報であり、上述した異常終了情報に相当する。異常終了フラグには、セッションリフレッシュT.O.により終了した場合に「1」が設定され、セッションリフレッシュT.O.により終了していない場合に「0」が設定される。なお、セッションリフレッシュT.O.についての詳細な説明は、図8を用いて後述する。
(呼情報DB220の記憶内容)
つぎに、課金サーバ201が有する呼情報DB220の記憶内容について説明する。呼情報DB220は、例えば、図3に示した課金サーバ201のメモリ302、ディスク305などの記憶装置により実現される。
図6は、呼情報DB220の記憶内容の一例を示す説明図である。図6において、呼情報DB220は、呼情報D1〜DXを記憶する。図6中、「D1〜DX」は、本明細書において説明上用いる呼情報を識別する識別子である。
呼情報Dは、収集元SIPサーバ情報と、Call−IDと、発信者番号と、着信者番号と、通信開始時刻と、通信終了時刻と、切断理由と、異常終了フラグと、を含む情報である。ここで、収集元SIPサーバ情報は、呼情報Dの収集元であるSIPサーバSkを識別する識別子である。
(加入者管理テーブル230の記憶内容)
つぎに、課金サーバ201が有する加入者管理テーブル230の記憶内容について説明する。加入者管理テーブル230は、例えば、課金サーバ201のメモリ302、ディスク305などの記憶装置により実現される。
図7は、加入者管理テーブル230の記憶内容の一例を示す説明図である。図7において、加入者管理テーブル230は、電話番号と収容先SIPサーバ情報とを対応付けて記憶する。ここで、電話番号は、課金対象となるIP電話サービスの加入者の電話番号である。収容先SIPサーバ情報は、加入者が使用する端末Miを収容するSIPサーバSkを識別する識別子である。
(セッションリフレッシュの動作例)
つぎに、SIPサーバSkのセッションリフレッシュの動作例について説明する。セッションリフレッシュは、通信相手との接続が有効であることを確認するために定期的に行われる通信である。
図8は、セッションリフレッシュの動作例を示すシーケンス図である。図8において、UACは、Initial−INVITEを送信する送信側のSIPサーバを示す。また、UASは、Initial−INVITEを受信する受信側のSIPサーバを示す。Initial−INVITEは、通話要求を行うためのリクエストメッセージであり、図1に示したINVITEに相当する。
SIPサーバSkは、Initial−INVITEの送信側または受信側のSIPサーバのいずれにもなり得る。ここでは、Initial−INVITEの受信側のSIPサーバであるUASを例に挙げて、SIPサーバSkのセッションリフレッシュの動作例について説明する。
UASは、Initial−INVITEに対するステータスコード「200」のレスポンスメッセージを送信すると、セッションリフレッシュのタイマを起動する。また、UASは、タイマを起動してからT秒経過してタイマが満了すると、re−INVITEをUACに送信する。Tは、例えば、100〜200秒程度の値に設定される。
re−INVITEは、接続が有効であることを確認するためのリクエストメッセージである。UASは、re−INVITEを送信後、UACから、ステータスコード「100」のレスポンスメッセージを受信し、さらに、ステータスコード「200」のレスポンスメッセージを受信すると、タイマを起動して、UACにACKを返す。
一方、UASは、re−INVITEを送信してから所定時間F(図8中、SIPタイマ)が経過しても、re−INVITEに対するレスポンスメッセージをUACから受信しなかった場合は、セッションリフレッシュT.O.により、UACとの間のセッションを終了(解放)する。Fは、例えば、32秒程度の値に設定される。
なお、ここでは、UASを例に挙げてセッションリフレッシュの動作例について説明したが、Initial−INVITEの送信側のSIPサーバであるUACについても、UASと同様のセッションリフレッシュの動作を行う。
(SIPサーバSkの機能的構成例)
図9は、SIPサーバSkの機能的構成例を示すブロック図である。図9において、SIPサーバSkは、検出部901と、記録部902と、送信部903と、を含む構成である。検出部901〜送信部903は制御部となる機能であり、具体的には、例えば、図3に示したSIPサーバSkのメモリ302、ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F303により、その機能を実現する。各機能部の処理結果は、例えば、SIPサーバSkのメモリ302、ディスク305などの記憶装置に記憶される。
検出部901は、呼接続を検出する機能を有する。具体的には、例えば、検出部901は、通話要求を行うためのINVITE(Initial−INVITE)に対するステータスコード「200」のレスポンスメッセージを受信したことに応じて、呼接続を検出する。
呼接続が検出された場合、検出部901は、ステータスコード「200」のレスポンスメッセージの受信時刻を、通信開始時刻(セッションの開始時刻)として、セッション識別子と対応付けて保持する。セッション識別子は、例えば、INVITEに含まれるCall−ID、発信者番号および着信者番号の組合せである。
検出部901は、呼切断を検出する機能を有する。具体的には、例えば、検出部901は、呼を解放するためのBYEを受信したことに応じて、呼切断を検出する。この場合、検出部901は、BYEの受信時刻を通信終了時刻(セッションの終了時刻)として、セッション識別子と対応付けて保持する。
また、例えば、検出部901は、セッションリフレッシュT.O.によりセッションが終了したことに応じて、呼切断を検出する。この場合、検出部901は、セッションリフレッシュT.O.の発生時刻を通信終了時刻(セッションの終了時刻)として、セッション識別子と対応付けて保持する。
記録部902は、検出部901によって検出された検出結果に基づいて、呼情報Dを記録する機能を有する。具体的には、例えば、まず、記録部902は、検出された呼切断が、セッションリフレッシュT.O.による呼切断であるか否かを判断する。
ここで、セッションリフレッシュT.O.による呼切断ではない場合、記録部902は、異常終了フラグを「0」に設定して、セッション識別子と対応付けて保持する。一方、セッションリフレッシュT.O.による呼切断の場合、記録部902は、異常終了フラグを「1」に設定して、セッション識別子と対応付けて保持する。
そして、記録部902は、セッション識別子(Call−ID、発信者番号、着信者番号)と、当該セッション識別子に対応する通信開始時刻、通信終了時刻および異常終了フラグを含む呼情報D(例えば、呼情報500)を記録する。なお、呼情報Dには、例えば、切断理由(Q.850のcause値)が合わせて記録されることにしてもよい。
異常終了フラグによれば、セッションリフレッシュT.O.により終了したセッション(異常終了したセッション)と、発呼端末または着呼端末からのBYEに基づき終了したセッション(正常終了したセッション)とを判別することが可能となる。
送信部903は、記録された呼情報Dを課金サーバ201に送信する機能を有する。具体的には、例えば、送信部903は、呼情報Dが記録されると、その都度、課金サーバ201に呼情報Dを送信することにしてもよい。また、例えば、送信部903は、記録された呼情報Dを定期的に課金サーバ201に送信することにしてもよい。さらに、例えば、送信部903は、課金サーバ201から呼情報Dの送信要求を受信したことに応じて、記録された呼情報Dを課金サーバ201に送信することにしてもよい。
(課金サーバ201の機能的構成例)
図10は、課金サーバ201の機能的構成例を示すブロック図である。図10において、課金サーバ201は、受信部1001と、検索部1002と、補正部1003と、生成部1004と、出力部1005と、を含む構成である。受信部1001〜出力部1005は制御部となる機能であり、具体的には、例えば、図3に示した課金サーバ201のメモリ302、ディスク305などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F303により、その機能を実現する。各機能部の処理結果は、例えば、課金サーバ201のメモリ302、ディスク305などの記憶装置に記憶される。
受信部1001は、SIPサーバSkから呼情報Dを受信する機能を有する。具体的には、例えば、受信部1001は、SIPサーバSkから定期的に送信される呼情報Dを受信する。また、例えば、受信部1001は、SIPサーバSkに対して呼情報Dの送信要求を送信することにより、SIPサーバSkから呼情報Dを受信することにしてもよい。
受信された呼情報D(例えば、呼情報500)は、呼情報Dの収集元であるSIPサーバSkを識別する収集元SIPサーバ情報と対応付けて呼情報DB220に登録される。これにより、呼情報DB220に新たな呼情報Dが記憶される。
検索部1002は、受信された呼情報Dのうち、セッションがセッションリフレッシュT.O.により終了したことを示す異常終了フラグを含む第1の呼情報を検索する機能を有する。具体的には、例えば、検索部1002は、呼情報DB220から、異常終了フラグに「1」が設定された呼情報Dを第1の呼情報として検索する。
IP電話サービスにおいて、電話の通話時間は、発信者側の端末Mi(発呼端末)を収容するSIPサーバSkにより記録された呼情報Dをもとに算定される。このため、検索部1002は、呼情報DB220から、発呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「1」が設定された呼情報Dを第1の呼情報として検索することにしてもよい。
具体的には、例えば、まず、検索部1002は、呼情報DB220からいずれかの呼情報Dを選択する。つぎに、検索部1002は、加入者管理テーブル230(図7参照)を参照して、選択した呼情報Dの発信者番号に対応する収容先SIPサーバ情報を特定する。そして、検索部1002は、特定した収容先SIPサーバ情報と、選択した呼情報Dの収集元SIPサーバ情報とが一致するか否かを判断する。
ここで、収容先SIPサーバ情報と収集元SIPサーバ情報とが一致する場合、検索部1002は、選択した呼情報Dの異常終了フラグに「1」が設定されているか否かを判断する。そして、異常終了フラグに「1」が設定されている場合に、検索部1002は、選択した呼情報Dを第1の呼情報とする。
以下の説明では、第1の呼情報として、発呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「1」が設定された呼情報Dを例に挙げて説明する。
検索部1002は、第1の呼情報を検索した場合、受信された呼情報Dのうち、第1の呼情報と同一のセッション識別子を含む第2の呼情報を検索する機能を有する。具体的には、例えば、検索部1002は、呼情報DB220から、第1の呼情報と同一のCall−ID、発信者番号および着信者番号を含み、かつ、異常終了フラグに「0」が設定された呼情報Dを第2の呼情報として検索する。
この際、検索部1002は、呼情報DB220から、着信者側の端末Mj(着呼端末、i≠j、j=1,2,…,n)を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「0」が設定された呼情報Dを第2の呼情報として検索することにしてもよい。
補正部1003は、検索された第1の呼情報の通信終了時刻を、検索された第2の呼情報の通信終了時刻に置き換える機能を有する。具体的には、例えば、補正部1003は、第2の呼情報が複数検索された場合、第1の呼情報の通信終了時刻を、第2の呼情報として検索されたいずれかの呼情報Dの通信終了時刻に置き換える。
より具体的には、例えば、補正部1003は、第1の呼情報の通信終了時刻を、第2の呼情報として検索された、着呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「0」が設定された呼情報Dの通信終了時刻に置き換えることにしてもよい。
第1の呼情報の通信終了時刻を第2の呼情報の通信終了時刻に置き換える場合のセッションの通信終了時刻の補正例については、図11を用いて後述する。
なお、発呼端末と着呼端末とを収容するSIPサーバSkが同一の場合がある。この場合、第1の呼情報として、発呼端末を収容するSIPサーバSkから収集された呼情報Dを第1の呼情報とすると、第2の呼情報として、着呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「0」が設定された呼情報Dが検索されない。
このため、発呼端末と着呼端末とを収容するSIPサーバSkが同一の場合には、補正部1003は、第1の呼情報の通信終了時刻を、当該通信終了時刻から所定時間F減算した時刻に置き換えることにしてもよい。所定時間Fは、図8で説明したように、例えば、re−INVITEを送信してからセッションリフレッシュT.O.が発生するまでの時間(SIPタイマのタイマ時間)である。
第1の呼情報の通信終了時刻を所定時間F減算した時刻に置き換える場合のセッションの通信終了時刻の補正例については、図12を用いて後述する。
なお、補正部1003は、第2の呼情報が複数検索された場合には、第1の呼情報の通信終了時刻を、第2の呼情報として検索された複数の呼情報Dのうち通信終了時刻が最も過去の呼情報Dの通信終了時刻に置き換えることにしてもよい。さらに、補正部1003は、第1の呼情報の通信終了時刻を、第2の呼情報として検索された複数の呼情報Dの平均通信終了時刻に置き換えることにしてもよい。
生成部1004は、置換後の通信終了時刻を含む第1の呼情報に基づいて、端末間の通話時間を含む課金情報を生成する機能を有する。具体的には、例えば、生成部1004は、第1の呼情報に含まれる通信開始時刻から置換後の通信終了時刻までの時間間隔を通話時間として算出することにより、算出した通話時間を含む課金情報を生成する。課金情報の具体例については、図13を用いて後述する。
出力部1005は、生成された課金情報を出力する機能を有する。具体的には、例えば、出力部1005は、図13に示すような課金情報1300を出力することにしてもよい。出力部1005の出力形式としては、例えば、メモリ302、ディスク305などの記憶装置への記憶、I/F303による外部のコンピュータへの送信、不図示のディスプレイへの表示、不図示のプリンタへの印刷出力などがある。
また、出力部1005は、置換後の通信終了時刻を含む第1の呼情報を出力することにしてもよい。これにより、他のコンピュータ、あるいは、人手により、置換後の通信終了時刻を含む第1の呼情報に基づく課金情報を生成することができる。
(セッションの通信終了時刻の補正例)
つぎに、セッションの通信終了時刻の補正例について説明する。まず、図11を用いて、第1の呼情報の通信終了時刻を第2の呼情報の通信終了時刻に置き換える場合のセッションの通信終了時刻の補正例について説明する。
図11は、セッションの通信終了時刻の補正例を示す説明図(その1)である。図11において、呼情報D1は、発呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「1」が設定された第1の呼情報である。また、呼情報D99は、着呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「0」が設定された第2の呼情報である。
この場合、補正部1003は、呼情報D1の通信終了時刻「2014/01/16 12:06.53.81」を、呼情報D99の通信終了時刻「2014/01/16 12:06.07.29」に置き換える。これにより、発呼端末の収容先SIPサーバS1により記録された異常終了したセッションの通信終了時刻を、着呼端末の収容先SIPサーバS3により記録された正常終了したセッションの通信終了時刻で補正することができる。
つぎに、図12を用いて、第1の呼情報の通信終了時刻を所定時間F減算した時刻に置き換える場合のセッションの通信終了時刻の補正例について説明する。
図12は、セッションの通信終了時刻の補正例を示す説明図(その2)である。図12において、呼情報D1は、発呼端末を収容するSIPサーバSkから収集され、かつ、異常終了フラグに「1」が設定された第1の呼情報である。ここでは、着呼端末を収容するSIPサーバSkが、発呼端末と同一のSIPサーバS1である場合を想定する。
この場合、補正部1003は、呼情報D1の通信終了時刻「2014/01/16 12:06.53.81」を、当該通信終了時刻から所定時間F減算した時刻に置き換える。ここで、所定時間Fを「32[s]」とすると、置換後の通信終了時刻は、「2014/01/16 12:06.21.81」となる。
(課金情報の具体例)
図13は、課金情報の具体例を示す説明図である。図13において、課金情報1300は、Call−IDと、発信者番号と、着信者番号と、通話時間と、通信開始時刻と、通信終了時刻と、切断理由と、異常終了フラグと、を含む情報である。
課金情報1300によれば、通話時間「32.16.84」に基づいて、発信者番号「03−xxxx−4444」から特定される発信者に対する課金処理を行うことができる。また、異常終了フラグ「1」により、通信終了時刻が補正されたことを特定することができる。
(通信課金システム200の各種処理手順)
つぎに、通信課金システム200の各種処理手順について説明する。まず、通信課金システム200内のSIPサーバSkの記録処理手順について説明する。
<SIPサーバSkの記録処理手順>
図14は、SIPサーバSkの記録処理手順の一例を示すフローチャートである。図14のフローチャートにおいて、まず、SIPサーバSkは、呼接続を検出したか否かを判断する(ステップS1401)。ここで、SIPサーバSkは、呼接続を検出するのを待つ(ステップS1401:No)。
そして、SIPサーバSkは、呼接続を検出した場合(ステップS1401:Yes)、セッション識別子(例えば、Call−ID、発信者番号、着信者番号)と対応付けて通信開始時刻を保持する(ステップS1402)。つぎに、SIPサーバSkは、呼切断を検出したか否かを判断する(ステップS1403)。
ここで、SIPサーバSkは、呼切断を検出するのを待つ(ステップS1403:No)。そして、SIPサーバSkは、呼切断を検出した場合(ステップS1403:Yes)、セッション識別子と対応付けて通信終了時刻を保持する(ステップS1404)。つぎに、SIPサーバSkは、検出した呼切断が、セッションリフレッシュT.O.による呼切断であるか否かを判断する(ステップS1405)。
ここで、セッションリフレッシュT.O.による呼切断の場合(ステップS1405:Yes)、SIPサーバSkは、異常終了フラグに「1」を設定する(ステップS1406)。一方、セッションリフレッシュT.O.による呼切断ではない場合(ステップS1405:No)、SIPサーバSkは、異常終了フラグに「0」を設定する(ステップS1407)。
そして、SIPサーバSkは、セッション識別子と、当該セッション識別子に対応する通信開始時刻、通信終了時刻および異常終了フラグを含む呼情報Dを記録して(ステップS1408)、本フローチャートによる一連の処理を終了する。
これにより、セッションリフレッシュT.O.により終了したセッション(異常終了したセッション)と、発呼端末または着呼端末からのBYEに基づき終了したセッション(正常終了したセッション)とを判別可能な異常終了フラグを含む呼情報を記録することができる。
<課金サーバ201の生成処理手順>
つぎに、通信課金システム200内の課金サーバ201の生成処理手順について説明する。課金サーバ201の生成処理は、例えば、管理者により予め指定される時刻(例えば、毎日の午前0時、毎週月曜日の午前0時など)に定期的に実行される。
図15および図16は、課金サーバ201の生成処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、課金サーバ201は、呼情報DB220から選択されていない未選択の呼情報Dを選択する(ステップS1501)。以下の説明では、ステップS1501において選択された呼情報Dを「処理対象の呼情報D」と表記する場合がある。
つぎに、課金サーバ201は、加入者管理テーブル230を参照して、処理対象の呼情報Dの発信者番号に対応する収容先SIPサーバ情報を特定する(ステップS1502)。そして、課金サーバ201は、特定した収容先SIPサーバ情報と、処理対象の呼情報Dの収集元SIPサーバ情報とが一致するか否かを判断する(ステップS1503)。
ここで、収容先SIPサーバ情報と収集元SIPサーバ情報とが一致しない場合(ステップS1503:No)、課金サーバ201は、ステップS1509に移行する。一方、収容先SIPサーバ情報と収集元SIPサーバ情報とが一致する場合(ステップS1503:Yes)、課金サーバ201は、処理対象の呼情報Dの異常終了フラグが「1」であるか否かを判断する(ステップS1504)。
ここで、異常終了フラグが「0」の場合(ステップS1504:No)、課金サーバ201は、ステップS1508に移行する。一方、異常終了フラグが「1」の場合(ステップS1504:Yes)、課金サーバ201は、加入者管理テーブル230を参照して、処理対象の呼情報Dの着信者番号に対応する収容先SIPサーバ情報を特定する(ステップS1505)。
そして、課金サーバ201は、特定した発信者番号に対応する収容先SIPサーバ情報と、特定した着信者番号に対応する収容先SIPサーバ情報とが同一であるか否かを判断する(ステップS1506)。ここで、収容先SIPサーバ情報が同一の場合(ステップS1506:Yes)、処理対象の呼情報Dの通信終了時刻を、当該通信終了時刻から所定時間F減算した時刻に置き換える(ステップS1507)。
そして、課金サーバ201は、処理対象の呼情報Dに基づいて、課金情報を生成する(ステップS1508)。つぎに、課金サーバ201は、呼情報DB220から選択されていない未選択の呼情報Dがあるか否かを判断する(ステップS1509)。
ここで、未選択の呼情報Dがある場合(ステップS1509:Yes)、課金サーバ201は、ステップS1501に戻る。一方、未選択の呼情報Dがない場合(ステップS1509:No)、課金サーバ201は、ステップS1508において生成された課金情報を出力して(ステップS1510)、本フローチャートによる一連の処理を終了する。
また、ステップS1506において、収容先SIPサーバ情報が異なる場合には(ステップS1506:No)、課金サーバ201は、図16に示すステップS1601に移行する。
図16のフローチャートにおいて、まず、課金サーバ201は、呼情報DB220から、処理対象の呼情報Dと同一のセッション識別子を含み、かつ、異常終了フラグに「0」が設定された呼情報Dを検索する(ステップS1601)。
つぎに、課金サーバ201は、検索した呼情報Dのうち、収集元SIPサーバ情報が、ステップS1505において特定された着信者番号に対応する収容先SIPサーバ情報と一致する呼情報Dを特定する(ステップS1602)。
そして、課金サーバ201は、特定した呼情報Dの通信終了時刻が、処理対象の呼情報Dの通信終了時刻よりも過去であるか否かを判断する(ステップS1603)。ここで、処理対象の呼情報Dの通信終了時刻のほうが過去の場合(ステップS1603:No)、課金サーバ201は、図15に示したステップS1508に移行する。
一方、特定した呼情報Dの通信終了時刻が過去の場合(ステップS1603:Yes)、課金サーバ201は、処理対象の呼情報Dの通信終了時刻を、特定した呼情報Dの通信終了時刻に置き換えて(ステップS1604)、図15に示したステップS1508に移行する。
これにより、ネットワーク障害等により異常終了したセッションについての呼情報Dの通信終了時刻を、同一のセッション識別子の正常終了したセッションについての呼情報Dの終了時刻を用いて補正して課金情報を生成することができる。なお、呼情報DB220の記憶内容は、例えば、課金サーバ201の生成処理が完了すると、その都度リセットされる。
以上説明したように、実施の形態にかかる通信課金システム200によれば、SIPサーバSkにより、セッション識別子、通信開始時刻、通信終了時刻および異常終了フラグを含む呼情報Dを記録することができる。これにより、呼情報Dの異常終了フラグから、ネットワーク障害等によりセッションリフレッシュT.O.が発生して異常終了したセッションを判別することができる。
また、通信課金システム200によれば、課金サーバ201により、呼情報DB220から、異常終了フラグ「1」を含む第1の呼情報を検索することができる。これにより、セッションリフレッシュT.O.により異常終了したセッションの通信終了時刻を含む呼情報Dを特定することができる。
また、通信課金システム200によれば、課金サーバ201により、呼情報DB220から、第1の呼情報と同一のセッション識別子を含み、かつ、異常終了フラグ「0」の第2の呼情報を検索することができる。これにより、異常終了したセッションと同一のセッション識別子を含み、発信者側の端末Mi(発呼端末)または着信者側の端末Mj(着呼端末)からのBYEに応じて正常終了したセッションの通信終了時刻を含む呼情報Dを特定することができる。
また、通信課金システム200によれば、課金サーバ201により、第1の呼情報の通信終了時刻を、第2の呼情報の通信終了時刻に置き換えることができる。これにより、ネットワーク障害等により異常終了したセッションの通信終了時刻を、同一のセッション識別子の正常終了したセッションの通信終了時刻を用いて補正することができる。
また、通信課金システム200によれば、課金サーバ201により、呼情報DB220から、発信者側の端末Mi(発呼端末)を収容するSIPサーバSkから収集され、かつ、異常終了フラグ「1」の第1の呼情報を検索することができる。これにより、発呼端末の収容先であるSIPサーバSkにより記録されたセッションの通信終了時刻、すなわち、課金対象となる通話時間を算定する際のセッションの通話終了時刻をピンポイントで補正することができる。
また、通信課金システム200によれば、課金サーバ201により、呼情報DB220から、着信者側の端末Mj(着呼端末)を収容するSIPサーバSkから収集され、かつ、異常終了フラグ「0」の第2の呼情報を検索することができる。これにより、ネットワーク障害等により異常終了したセッションの通信終了時刻を、着呼端末の収容先であるSIPサーバSkにより記録されたセッションの通信終了時刻、すなわち、着信者が電話を切ったタイミングに合わせて補正することができる。
また、通信課金システム200によれば、課金サーバ201により、発呼端末と着呼端末とを収容するSIPサーバSkが同一の場合には、第1の呼情報の通信終了時刻を、当該通信終了時刻から所定時間F減算した時刻に置き換えることができる。これにより、第2の呼情報が存在しない場合であっても、ネットワーク障害等により異常終了したセッションの通信終了時刻を、セッションリフレッシュT.O.が発生するまでのタイマ時間を用いて補正することができる。
また、通信課金システム200によれば、課金サーバ201により、置換後の通信終了時刻を含む第1の呼情報に基づいて、端末Mi,Mj間の通話時間を含む課金情報を生成することができる。これにより、補正後の通信終了時刻から算定される通話時間に基づく課金処理を行うことが可能となり、発信者に対する余分な課金を防ぐことができる。
なお、本実施の形態で説明した通信課金方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)端末間の呼制御に関するメッセージに基づいて、セッションの識別子、開始時刻、終了時刻および前記セッションがタイムアウトにより終了したか否かを示す異常終了情報を含む呼情報をそれぞれ記録する複数の呼制御装置と、
前記複数の呼制御装置から収集した複数の呼情報のうち、前記セッションがタイムアウトにより終了したことを示す異常終了情報を含む第1の呼情報の終了時刻を、前記第1の呼情報と同一の識別子を含む第2の呼情報の終了時刻に置き換える情報処理装置と、
を含むことを特徴とする通信課金システム。
(付記2)前記第1の呼情報は、前記複数の呼情報のうち、発呼端末を収容する呼制御装置から収集され、かつ、前記セッションがタイムアウトにより終了したことを示す異常終了情報を含む呼情報であることを特徴とする付記1に記載の通信課金システム。
(付記3)前記第2の呼情報は、前記複数の呼情報のうち、着呼端末を収容する呼制御装置から収集され、かつ、前記セッションがタイムアウトにより終了していないことを示す異常終了情報を含む呼情報であることを特徴とする付記1または2に記載の通信課金システム。
(付記4)前記情報処理装置は、
発呼端末および着呼端末を収容する呼制御装置が同一の呼制御装置の場合には、前記第1の呼情報の終了時刻を、当該終了時刻から所定時間減算した時刻に置き換えることを特徴とする付記3に記載の通信課金システム。
(付記5)前記情報処理装置は、
前記第2の呼情報の終了時刻に置き換えられた置換後の終了時刻を含む前記第1の呼情報に基づいて、前記端末間の通話時間を含む課金情報を生成することを特徴とする付記1〜4のいずれか一つに記載の通信課金システム。
(付記6)前記複数の呼制御装置は、SIP(Session Initiation Protocol)に従って呼制御を行うSIPサーバであることを特徴とする付記1〜4のいずれか一つに記載の通信課金システム。
(付記7)複数の呼制御装置と情報処理装置とを含む通信課金システムの通信課金方法であって、
前記複数の呼制御装置が、
端末間の呼制御に関するメッセージに基づいて、セッションの識別子、開始時刻、終了時刻および前記セッションがタイムアウトにより終了したか否かを示す異常終了情報を含む呼情報をそれぞれ記録し、
前記情報処理装置が、
前記複数の呼制御装置から収集した複数の呼情報のうち、前記セッションがタイムアウトにより終了したことを示す異常終了情報を含む第1の呼情報の終了時刻を、前記第1の呼情報と同一の識別子を含む第2の呼情報の終了時刻に置き換える、
ことを特徴とする通信課金方法。