JPWO2011077501A1 - コミュニケーションシステム - Google Patents
コミュニケーションシステム Download PDFInfo
- Publication number
- JPWO2011077501A1 JPWO2011077501A1 JP2011547088A JP2011547088A JPWO2011077501A1 JP WO2011077501 A1 JPWO2011077501 A1 JP WO2011077501A1 JP 2011547088 A JP2011547088 A JP 2011547088A JP 2011547088 A JP2011547088 A JP 2011547088A JP WO2011077501 A1 JPWO2011077501 A1 JP WO2011077501A1
- Authority
- JP
- Japan
- Prior art keywords
- chat
- server
- conversation
- information
- communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
Abstract
リアルタイムでチャットを行う際或いは行った後に、そのチャットのログが有する情報としての貴重な価値を不特定多数の第三者も享受し得るコミュニケーションシステムを提供する。そのチャットのログを記録して保存し、さらにそのログを公開し閲覧可能とする。さらに、公開したログはキーワードを入力することによって検索することができ、自分の知りたい内容について展開されたチャットを、チャットに参加した当事者でなくても、その場で取り出し閲覧することを可能とする。インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャットデータを受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記チャットデータを蓄積するデータベースサーバと、前記データベースサーバに記憶された情報を表示するwwwサーバとを具備する。
Description
本発明は、たとえばコミュニケーションシステムに係り、特に携帯電話、パーソナルコンピュータを含むネットワーク通信が可能な通信端末を使用してチャット及び/もしくはメールを含む文字情報によってソーシャルかつリアルタイムに会話し、かつ会話の内容を記録して公開し、実際にその会話に参加していなかった第三者によっても会話の内容を検索することが可能となるコミュニケーションシステムに関する。
ネットワーク通信が可能な通信端末を使用して離れた人との意見交換を行うチャット及び/もしくはメールを含む文字情報によるコミュニケーションシステムは、主に電話のように音声ではなく、文字による情報のやりとりを基本とする。このため、相手の発言は相手が発信した文字によって表現されることになり、音声が不鮮明で聞き取れないというトラブルもなく、かつ会ったことがない人とも、より個人情報として重要度の高い音声は利用せずに文字でのやりとりであるため気軽にチャットを行うことが可能となる。
特許文献1の発明によれば、携帯電話からサーバに対してチャットしたい相手方の携帯電話番号を通知してチャット要求すれば、サーバはそれに応じて相手方の携帯電話にチャット依頼を送信する。チャット依頼を受信した相手方は都合に応じて応答する。相手方から要求許可があれば、サーバから、要求側に要求許可を送信し参加者全員に参加者リストを送信し、チャットモードが確立する。参加者からのメッセージをサーバが受信するとサーバはそのメッセージを参加者全員に送信し、各参加者の携帯電話の表示部にメッセージ内容を表示する。相手方は、途中からチャットに参加することができる。
しかし、一度にチャットできるのは1つのチャットを共有する参加者に限定されるため、複数のチャットを別の参加者(グループ)と同時に進行することはできず、急を要する場合でも相手を待たせてしまうか、限られた時間にアクセスしチャットによって話を進めたい際にも、どのチャットを優先させ、どのチャットを後にするかの取捨選択が迫られてしまう恐れがあった。
特許文献2の発明によれば、チャットプログラムにおいて、処理手段が、閲覧要求を送信した外部の端末のアドレスとログファイルにアクセスすることを許可された外部の端末のアドレスとが一致する場合に、ログファイルに格納されたチャットのメッセージを読み出して、外部の端末に通信手段を介して送信するので、ログファイルにアクセスすることを許可された外部の端末に対して、ログファイルに格納された過去のメッセージを提供できる。
しかしチャットは、実生活においても交流のある友人と行う場合もあれば、実生活において会ったことはないものの、主にチャットシステム上で交流のある人と行う場合もある。チャットシステム上で交流のある人と行うチャットの場合、お互いに共通して興味を持つ話題によってチャットが展開されることが多く、そのチャットに参加はしていないが同じくその話題に興味を持つ複数の第三者にとっても、そのチャット内容は興味深く、価値を有するものである。限定的に許可された端末からのみログファイルにアクセスが可能であるシステムでは、このチャットの有する価値は十分に享受されるとは言えない。
インターネットブラウザ経由で閲覧が可能な通信端末は、今や企業やそれに準ずる組織・団体に限らず、個人生活においても広く浸透し、そのニーズはますます高くなりつつある。さらに通信端末は、公的な情報を単に受けるだけでなく、個人レベルで情報を発信する役割を果たすようになってきている。
このような状況下において、文字によって情報を交換するチャットは、音声を使用しないものの、電話と同様にリアルタイム性があり、かつ文字による情報交換であるため、聞き間違い、または言い間違いなどを招きにくく、より正確な情報交換を行うことに有効なシステムである。さらに、自分の声は伝えず、文字による情報交換であるため、実生活で会ったことのない人とも、通信ネットワーク上で気軽にやりとりをすることが可能となる。したがって、自分が興味のある話題によってチャットを行う対象が異なり、それぞれの話題に基づいてリアルタイムで相手に質問したり、お互いに議論したりすることによって、チャットが有意義に展開されることも多かった。
従来、このチャットをログとして保存し、または閲覧することが可能であるのは、チャットに参加した当事者と、許可された第三者に限定されていた。しかし、それぞれの人が持つ興味の対象は様々であり、またそれぞれの人がある分野で有する「専門性」も様々である。したがって、ある話題に関して展開されたチャットのログは、それ自体が貴重な情報の宝庫であり、特にその話題に同様に興味を持つ第三者にとって非常に価値のある情報である。
この発明の目的は、リアルタイムでチャットを行う際或いは行った後に、そのチャットのログ及び/もしくはメールを含む文字情報としての貴重な価値を不特定多数の第三者も享受し得るソーシャルかつリアルタイム性のあるコミュニケーションシステムを提供することである。本願の更なる目的は、そのチャットのログ及び/もしくはメールを含む文字情報を記録して保存し、さらにそのログを公開し閲覧可能とするコミュニケーションシステムを提供することである。さらに、公開したログはキーワードを入力することによって検索することができ、自分の知りたい内容について展開されたチャットを、チャットに参加した当事者でなくても、その場で取り出し閲覧することを可能とするコミュニケーションシステムを提供することも本願の目的である。
ここでソーシャルとは、最初にある話題、ある目的が存在することによって集まった集団ではなく、自分の世界を持った個人個人が、互いを尊重しつつ、かつ互いに共通する部分、または重なる部分によって部分的につながる流動的で自由度の高い関係性のことである。本発明におけるコミュニケーションシステムは、1つ1つの情報が閉鎖的ではなく、開放的で無限に広がる可能性を有する多角的な情報交換の場を提供し、その場の構築を可能とするものである。
さらに、このチャットを行うアプリケーションは、携帯電話、PHS、PDA、スマートフォン、またはコンピュータを含む、ブラウザ経由でネットワークに接続出来る機器であれば、いずれによっても起動し、利用可能にするコミュニケーションシステムを提供することも本願の目的である。
また、通信ネットワークによって国内のみならず海外ともリアルタイムかつ容易に情報交換ができ、チャットに並行してログの内容をアプリケーションサーバ側で翻訳して表示することで、使用する言語が異なる人ともリアルタイムでチャットを行うことが可能となるコミュニケーションシステムを提供することも本願の目的である。
加えて、チャットに参加して欲しい相手に対して、チャットへの参加要求を発信する機能、チャットへの参加要求を着信する機能、及び留守番電話機能を備えさせ、チャットを行うアプリケーションに接続していなくても、電話と同等のリアルタイム同等性を有する情報交換が可能となるコミュニケーションシステムを提供することも本願の目的である。
さらに、チャットを行う際に、希望の相手がチャットを行うアプリケーションに接続しているかどうか、または他者とチャット中であるかどうかが端末の画面上で認識でき、相手の状況を把握した上でチャットへの参加を要求できるコミュニケーションシステムを提供することも本願の目的である。
かかる課題を解決するために、請求項1記載の本発明に係るコミュニケーションシステムは、インターネットを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされた情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信したチャットに係る文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された情報の少なくとも一部を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記wwwサーバは前記チャットに係る文字情報をやりとりした前記複数の通信端末に対して該チャットに係る文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンを備え、
前記アプリケーションサーバは、前記公開を許容する指令を前記チャットに係る文字情報に関わる全ての前記複数の通信端末から受けた場合に前記データベースサーバに蓄積された前記チャットに係る文字情報の少なくとも一部を前記wwwサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記wwwサーバにて表示可能とされたチャットに係る文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とする。
前記wwwサーバは前記チャットに係る文字情報をやりとりした前記複数の通信端末に対して該チャットに係る文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンを備え、
前記アプリケーションサーバは、前記公開を許容する指令を前記チャットに係る文字情報に関わる全ての前記複数の通信端末から受けた場合に前記データベースサーバに蓄積された前記チャットに係る文字情報の少なくとも一部を前記wwwサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記wwwサーバにて表示可能とされたチャットに係る文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とする。
本発明におけるコミュニケーションシステムとは、チャット及び/もしくはメールを含む、主に文字情報によってコミュニケーションを行うシステムを指し、好ましくは利用者による更新ボタンの押下を要せずに、チャットを行う相手方が発信した入力情報(文字情報、イメージデータ、音声情報もしくは音声情報をたとえば音声認識ソフト等を用いて文字化したデータを含む)を表示し、かつチャットを行う自方の発言した言葉がリアルタイムにチャットに参加している相手の画面に表示されるようにすることができるシステムである。さらに、本発明におけるコミュニケーションシステムにおいて、チャットを行うアプリケーションに接続しているユーザと接続していないユーザとを識別して表示する機能を持っており、かつその情報を随時(自動的に、或いは所定の時間間隔ごとに)更新する機能を備えることが好ましい。また、利用者同士がチャットを行っている際には、相手が発信する情報を入力中であることが受信側の画面において認識できるよう表示する機能を備えている。
また、本発明における文字情報とは、チャットに係る文字情報及びメールに係る文字情報を含む、通信端末の表示画面において、主に文字によってやりとりされる情報である。さらに当該文字情報は、入力が文字によって行われるものに限定されず、音声による入力であっても音声認識ソフトなどを含む変換機能によって文字情報に変換されたものも含む。これによって、手または足を使って文字を入力することができなくても、受信側の通信端末での画面において文字情報による表示が可能であれば、本発明におけるコミュニケーションシステムは適応することができる。
さらに本発明では、会話したい相手がチャットアプリケーションにログイン、またはログインしていなくてもチャットが可能な状況であればチャットに、会話したい相手がチャットアプリケーションにログインしておらず、チャットできない状況であればメールと、受信する側の状況、または送信する側の状況にしたがって、送受信する文字情報はどちらにも切替可能であり、代替も可能である。
本発明における通信端末とは、インターネットブラウザ経由で閲覧できるコンピュータ、NTTドコモ(登録商標)、au(登録商標)、ソフトバンク(登録商標)等を含む各キャリアの携帯電話とWillcom(登録商標)、E−Mobile(登録商標)、iPhone(登録商標)、Android(登録商標)、BlackBerry(登録商標)などを含む携帯端末など、携帯電話、PHS、PDA、およびコンピュータを含む通信可能な端末である。
上記の構成において、アプリケーションサーバは、前記複数の通信端末の少なくとも一つと会話情報の交換を行い、かつ前記データベースサーバに情報の蓄積を依頼するアプリケーションをさらに備えることもできる。
本発明における「通信端末」は、複数を基本に想定しているが、単数の場合であってもよい。単数の場合にはサーバとの間で文字情報をやりとりし、たとえば時間、日にちをずらして特定の相手先(自機を含む)に対して当該文字情報を時限的に送受信することができる。これによって、遺言、ToDoリスト、タイムカプセル的に「〜年後の自分に対するメッセージ」などのデータを予め一時的にデータベースサーバに格納し、任意の時間、日にちに送受信することが可能となる。
さらに本発明におけるチャットは、複数の通信端末から同時に同一のチャットグループに接続し、大勢が参加する会議としての使用も可能である。また、前述された同一のチャットグループに所属する通信端末の数には上限はない。
さらに、上記の構成において、データベースサーバは、会員情報、および/または会話情報の記憶を行うようにすることもできる。
上記の構成を備えることにより、チャットでのログを保存し、それを公開して検索可能にすることで、そのサービスを受ける誰もが会話情報を共有することが可能となる。また、各キャリアの携帯電話、PHS、PDA、スマートフォン、携帯端末など、ブラウザ経由でネットワークに接続可能な機器であれば、いずれの通信端末でもチャットを行うアプリケーションを起動し、チャットを行うことが可能となる。さらに、自分がチャットを行っているとき、他にチャットを行いたい相手がチャットを行うアプリケーションに接続し他の人物とチャット中であるかが分かるため、相手の状況を把握した上でチャットへの参加を要求するかどうかを決定することができる。
また、課題を解決するために、請求項2記載の本発明に係るコミュニケーションシステムは、インターネットブラウザを経由してチャット及びメールを含む文字による情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャット及び/もしくはメールに係る文字情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された文字情報の少なくとも一部を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記wwwサーバは前記文字情報をやりとりした前記複数の通信端末に対して該文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンを備え、
前記アプリケーションサーバは、前記公開を許容する指令を前記文字情報に関わる全ての前記複数の通信端末から受けた場合に前記データベースサーバに蓄積された前記文字情報の少なくとも一部を前記wwwサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記wwwサーバにて表示可能とされた文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
前記wwwサーバは前記文字情報をやりとりした前記複数の通信端末に対して該文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンを備え、
前記アプリケーションサーバは、前記公開を許容する指令を前記文字情報に関わる全ての前記複数の通信端末から受けた場合に前記データベースサーバに蓄積された前記文字情報の少なくとも一部を前記wwwサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記wwwサーバにて表示可能とされた文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
本発明に係るコミュニケーションシステムの対象としてはチャットのみならず、チャット及びメールを含む文字情報とすることが可能である。これにより、コミュニケーションに用いる手段の選択肢は広がり、より利用者の便宜になる。
また、課題を解決するために、請求項3記載の本発明に係るコミュニケーションシステムは、インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャットに係る文字情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記チャットに係る文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された情報を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記リアルタイムチャットシステムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記データベースサーバに格納されたチャットに係る文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
前記リアルタイムチャットシステムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記データベースサーバに格納されたチャットに係る文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
すなわち、チャットされた情報は公開されたもののみならず、たとえば公開されていないものであっても自身のチャット発信したものは検索の対象とすることができる。これにより、以前に作成した文書等を新規用途に活かすことが可能となり、情報の効率的利用を促進する。
また、課題を解決するために、請求項4記載の本発明に係るコミュニケーションシステムは、インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャット及び/もしくはメールに係る文字情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された文字情報を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記リアルタイムチャットシステムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記データベースサーバに格納された文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
前記リアルタイムチャットシステムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記データベースサーバに格納された文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
すなわち、チャットのみならず、チャット及びメールを含む文字情報についても、公開されたもののみならず、公開されていないものであって自身の作成した情報(チャット及びメールコンテンツ)は検索の対象とすることができる。これにより、以前に作成した文書等を新規用途に活かすことが可能となり、情報の効率的利用を促進する。
上記構成においては、請求項5にあるように、定期的に前記データベースサーバにメッセージの受信の有無を問い合わせる問合せ手段と、前記問合せにより受け取った結果を画面に表示する表示手段とをさらに具備してもよい。これにより、更新ボタンを押さずとも文字が流れてくるチャットが実現される。
また、上記構成においては、請求項6にあるように、前記リアルタイムチャットシステムは、
位置情報システム(GPS)と、
前期位置情報システムを用いて特定の地域にいる全通信端末を抽出して該当全端末に係る利用者一覧を表示するルーチンと、
前記該当全端末に対しての同報もしくはそのうちの特定の端末に対しての発信を選択的に実行するルーチンと
をさらに備える構成とすることもできる。これにより、(個別でも全員とでも)位置情報と連動させて、近くにいる人とチャットできる。
位置情報システム(GPS)と、
前期位置情報システムを用いて特定の地域にいる全通信端末を抽出して該当全端末に係る利用者一覧を表示するルーチンと、
前記該当全端末に対しての同報もしくはそのうちの特定の端末に対しての発信を選択的に実行するルーチンと
をさらに備える構成とすることもできる。これにより、(個別でも全員とでも)位置情報と連動させて、近くにいる人とチャットできる。
さらに、上記構成においては、請求項7にあるように、前記チャットに関わるメッセージが前記該当全端末の画面にテロップで表示させる機能をさらに備える構成とすることもできる。
また、上記構成においては、請求項8にあるように、前記アプリケーションサーバと前記wwwサーバは1台のサーバが兼務する構成とすることもできる。
さらに、上記構成においては、請求項9にあるように、前記チャットが行われる場を意味するルームに係る複数の画面を重畳的に表示できる複数ルーム機能と、第1のルームに係る画面から第2のルームに係る画面に切り替える切替機能とを具備する構成とすることもできる。これにより、上限なく複数のグループで同時に並行して会話ができる、すなわち、ウィンドウの切り替えが可能となる。
また、上記構成においては、請求項10にあるように、前記通信端末は、携帯電話、PHS、PDA、スマートフォンおよびコンピュータを含む通信可能な端末であるとすることもできる。
さらに、上記構成においては、請求項11にあるように、前記アプリケーションサーバは、前記複数の通信端末の少なくとも一つと会話情報の交換を行い、かつ前記データベースサーバに情報の蓄積を依頼するアプリケーションをさらに備える構成とすることもできる。
また、上記構成においては、請求項12にあるように、前記アプリケーションサーバは、前記チャット内容をリアルタイムで所望の言語に翻訳する翻訳処理部をさらに備える構成とすることもできる。これにより、入力と同時に自動でメイン言語に翻訳されることが可能になる。
さらに、上記構成においては、請求項13にあるように、前記チャット内容は、前記翻訳前の情報及び該翻訳後の情報が併記して前記通信端末に表示可能である構成とすることもできる。これにより、翻訳前の文章も並列して表示されることが可能になる。
また、上記構成においては、請求項14にあるように、前記データベースサーバは、会員情報、および/または会話情報の記憶を行い、該記憶された情報は利用者からの削除指示を受ける場合を除いて削除されず、蓄積され検索に供され得る構成とすることもできる。これにより、チャット、メールの文字情報は無期限で保存されることが可能になる。
さらに、上記構成においては、請求項15にあるように、前記wwwサーバは、前記会員情報の管理及び/もしくは表示、前記データベースサーバに格納された文字情報の管理及び/もしくは表示、ユーザ情報の管理及び/もしくは表示、画像ファイルの管理及び/もしくは表示、公開された会話の検索の各機能をコンピュータに果たさせるルーチンを備える構成とすることもできる。
また、上記構成においては、請求項16にあるように、前記携帯電話は、各キャリアに対応する携帯電話用チャットアプリケーションを起動させ、或いはブラウザ経由でチャットを行うとすることもできる。
さらに、上記構成においては、請求項17にあるように、前記通信端末におけるPHS、PDA、スマートフォンまたはコンピュータは、前記wwwサーバに配置されたチャットアプリケーションのプログラムを実行し、その結果をPHS、PDA、スマートフォンまたはコンピュータのブラウザもしくはプログラムが受信して画面表示するとすることもできる。
この場合には、インストールして使うパターンとASP(アプリケーション・サービス・プロバイダ)形式として使うパターンの双方が可能である。
また、上記構成においては、請求項18にあるように、前記通信端末は、前記アプリケーションサーバに対し、所与の時間の経過、前記通信端末からのチャットに係る文字情報の送信、発着信、および/または会話終了を含む所定のイベントが発生した際、httpリクエストを送信するようにすることもできる。
さらに、上記構成においては、請求項19にあるように、前記通信端末は、httpリクエストに対する返答が一定時間ない場合、再度前記アプリケーションサーバへhttpリクエストを送信する構成とすることもできる。
また、上記構成においては、請求項20にあるように、前記通信端末は、前記アプリケーションサーバに対してhttpリクエストに対する返答を一定回数再送信してもなお返答がない場合、会話を終了する構成とすることもできる。
さらに、上記構成においては、請求項21にあるように、前記通信端末は、httpリクエストを一定回数再送信したのち、前記アプリケーションサーバから応答が返ってきた場合には、正常にチャットを行っていた時点のルーム番号、チャット開始時刻を含む前記データベースサーバに格納された会話情報を復旧させ、会話の継続を行う構成とすることもできる。
また、上記構成においては、請求項22にあるように、前記通信端末は、前記アプリケーションサーバに対するhttpリクエストの送信をGET方式で行う構成とすることもできる。
さらに、上記構成においては、請求項23にあるように、前記携帯電話は、前記携帯電話用アプリケーションの起動において、電波状態の変動、または他の電話の着信およびメールの受信を含む所定のイベントによってアプリケーションが中断した場合、一定時間内でのアプリケーションの再起動により、中断前の状態に復旧できる構成とすることもできる。
また、上記構成においては、請求項24にあるように、前記通信端末は、前記アプリケーションサーバにhttpリクエストを送信するが、httpリクエストに対する返答はXML形式である構成とすることもできる。
さらに、上記構成においては、請求項25にあるように、前記通信端末は、前記アプリケーションサーバからhttpリクエストに対する返信をXML形式で受信するが、XMLレイアウトからXML文を解析し、その内容に基づいて画面表示を行う構成とすることもできる。
また、上記構成においては、請求項26にあるように、会話相手を呼び出す発信機能、および/または会話相手が呼出に応答する着信機能をさらに備える構成とすることもできる。
さらに、上記構成においては、請求項27にあるように、前記チャットアプリケーションを起動しチャット内容を入力する際、チャット内容の入力が開始されかつ入力中であることを前記アプリケーションサーバ経由で前記データベースサーバに送信して情報を格納し、会話相手がメッセージの確認を行った際に前記データベースサーバ内の前記情報を会話相手の通信端末に送信する構成とすることもできる。これにより、書き中であることが利用者に判別できる。
また、上記構成においては、請求項28にあるように、任意の通信端末のアプリケーションに係る現在の稼働状況を把握するための現状把握手段と、前記現状把握手段によって把握された現状に応じた表示を行う現状表示手段とをさらに具備する構成とすることもできる。
さらに、上記構成においては、請求項29にあるように、前記リアルタイムチャットシステムは、発信者からの会話を受信者が最初に着信を了解した時点から、会話終了、または一定時間メッセージのやりとりが行われなかった時点までを少なくとも会話時間として計測する会話時間計測機能をさらに備える構成とすることもできる。これにより、チャット時間が秒単位で把握できる。
また、上記構成においては、請求項30にあるように、前記会話時間計測機能により計測された時間に応じて課金する課金機能をさらに具備する構成とすることもできる。これにypり、チャット通話時間によって一部有料で課金することが可能になる。
また、上記課題を解決するために、請求項31記載の本発明に係るコミュニケーションシステムは、インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャットデータを受信する第1のサーバと、前記第1のサーバで受信した前記チャット及び/もしくはメールに係る文字情報を蓄積する第2のサーバと、前記第2のサーバに記憶された情報を表示する第3のサーバサーバとを具備するコミュニケーションシステムにおいて、
前記第1のサーバは前記文字情報をやりとりした前記複数の通信端末に対して該文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンと、前記公開を許容する指令を前記文字情報に関わる全ての前記複数の通信端末から受けた場合に前記第2のサーバに蓄積された前記文字情報を前記第3のサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記第3のサーバにて表示可能とされた文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
前記第1のサーバは前記文字情報をやりとりした前記複数の通信端末に対して該文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンと、前記公開を許容する指令を前記文字情報に関わる全ての前記複数の通信端末から受けた場合に前記第2のサーバに蓄積された前記文字情報を前記第3のサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記第3のサーバにて表示可能とされた文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えて構成される。
また、上記の構成において、データベースサーバに記憶されるデータベースは、ルーム番号テーブル、およびルーム番号詳細テーブルを有し、前記ルーム番号テーブル、および前記ルーム番号詳細テーブルから会話日時および/または会話したユーザに係るデータに基づいて前記会話情報をデータマッチングにより照合し、該照合の結果マッチングするデータを表示する機能を備えるようにすることもできる。
本発明におけるルームとは一つの会話単位を意味するが、そのルームを同時に複数立てる(設ける)ことができる。これを達成するに当たっては、複数のルームに係る画面を各ウィンドウとして重畳的に表示可能とする機能、ルーム番号を付番する機能、ルーム番号の変更入力を受けると画面を切り替える切替機能を持たせることによる。当該切替機能とは、たとえばTabキーの押下により、同時に並行して行われている違うチャットのルームからルームへ、瞬時かつ容易に画面の表示を切り替えすることが可能な機能を指す。
また、上記の構成において、前記データベースサーバに記憶されるデータベースは、ルーム番号テーブル、およびルーム番号詳細テーブルを有し、前記ルーム番号テーブル、および前記ルーム番号詳細テーブルから会話日時および/または会話したユーザに係るデータに基づいて前記会話情報をデータマッチングにより照合し、該照合の結果マッチングするデータを表示する機能を備えるようにすることもできる。
本発明により、チャットでのログを保存し、それを公開して検索可能にすることで、そのサービスを受ける誰もが会話情報を共有することが可能となる。また、各キャリアの携帯電話、PHS、PDA、携帯端末など、ブラウザ経由でネットワークに接続可能な機器であれば、いずれの通信端末でもチャットを行うアプリケーションを起動し、チャットを行うことが可能となる。さらに、自分がチャットを行っているとき、他にチャットを行いたい相手がチャットを行うアプリケーションに接続し他の人物とチャット中であるかが分かるため、相手の状況を把握した上でチャットへの参加を要求するかどうかを決定することができる。
また本発明により、相手がチャットアプリケーションに接続していない場合、電話と同様にチャットへの参加要求を相手に発信したり、または他人からのチャットへの参加要求を受信したりすることも可能であるため、アプリケーションに常時接続していなくてもメンバの都合が合えばチャットを行うことができる。このため、今知りたい、今情報交換を行いたいという欲求を解消できる即時性も有することとなり、より有意義なチャットが展開され、蓄積され公開される会話情報がより充実して、情報価値の向上につながる。
さらに本発明が有するリアルタイム翻訳機能によって、他言語を使用する人ともリアルタイムにチャットを行うことができる。これによって、言語の壁を越え、同じく興味のある事柄について議論しあい、情報交換をすることが可能となる。高度情報化社会と言われながらも、個人個人が却って孤立する傾向にある現代において、音声ではなく文字によって適宜な距離関係を保ち、かつ他言語の人とも繋がることのできるチャットは、老若男女問わず気軽に情報を受発信することが可能なシステムであり、さらに他者の会話情報を検索し閲覧できることで、それぞれの好奇心が満たされてなお刺激されることにもつながる。
以下、図面を参照して本発明の実施形態を説明する。
図1は、本発明の一実施形態に係るリアルタイムチャットシステムの全体構成を示す概念図である。また図2は、本発明の一実施形態に係る通信ネットワークの全体構成とそれぞれの役割を示す機能ブロック図であり、図2Aは当該通信ネットワークにおけるデータベースサーバの構成を示す概念図、図2Bは当該通信ネットワークにおけるネットワーク回線の構成を示す機能ブロック図、図2Cは当該通信ネットワークにおける携帯電話端末の構成を示す機能ブロック図である。
図1に示されるように、本発明に係るリアルタイムチャットシステムは、携帯端末(2−A、2−B、2−C)、PHSまたはPDAまたはスマートフォン3、およびコンピュータ4を含む通信端末から送信されたチャットデータをアプリケーションサーバ1で受信し、さらに当該会話データをデータベースサーバ5に格納し蓄積する機能を有している。
ここでの「リアルタイムチャット」とは、文字による会話(チャット)を行う際に、ユーザが使用する各通信端末において会話情報(ログ)を更新するために更新ボタンを押さなくても、相手の発信した言葉が表示画面上に表示されるものである。また、自分の発言した言葉がすぐに相手の画面に表示される。さらに、チャットを行うアプリケーションにログインしているユーザおよびログインしていないユーザがこの通信端末の画面上で識別できる。加えて、チャットを行っている相手が発言を入力中であることも画面上で認知することができる(図示は省略する)。
また、ここでの通信端末とは、NTTDocomo、au、Softbankなどを含む各キャリアの携帯電話、Willcom、E−mobile、iPhone、Android携帯およびBlackBerry携帯などを含むPHSおよびPDAおよびスマートフォン、およびコンピュータなど、インターネットブラウザ経由で閲覧できる通信端末を指す。
当該通信ネットワークは、主にサーバおよび通信端末に分けることができる。アプリケーションサーバ1は、チャットを行う通信端末(2、3および4)と会話情報の交換を行う機能を備えるほか、受信処理部1−A、送信処理部1−B、登録リクエスト部1−C、翻訳処理部1−D、および画像送信部1−Dを備えて構成される。データベースサーバ5に情報の蓄積を依頼するアプリケーションが記憶されている。データベースサーバ5は、会話ログを記憶する会話ログ記憶部5−A−1、会話情報を記憶する会話情報記憶部5−A−2、およびユーザ情報を記憶するプロフィール記憶部5−A−3を有する記憶部5−Aを備え、会話情報、ユーザ情報の記憶を行う。さらに会話情報記憶部は、会話データテーブル5−A−21、チャットを行うグループもしくは仮想上の場所もしくは機会を表すルーム番号テーブル5−A−221、およびルーム番号詳細テーブル5−A−222を含む。
wwwサーバ6は、会員情報の管理画面、過去に行った会話の管理、ユーザ情報の照会、画像ファイルの管理、公開された会話の検索などを行い、HTML情報を記憶するHTML記憶部6−A−1、および画像を記憶する画像ファイル6−A−2を有する記憶部6−Aと、検索部6−Bを備える。
これら上記のサーバとネットワークを経由して接続する通信端末は、NTTDocomo、au、Softbankなどを含む各キャリアの携帯電話2、Willcom、E−mobile、iPhone、Android携帯およびBlackBerry携帯などを含むPHSおよびPDAおよびスマートフォン3、およびコンピュータ4など、インターネットブラウザ経由で閲覧できる通信端末を指す。
携帯電話2は、携帯アプリケーション部2−D、ブラウザ表示部2−Eを備えており、携帯アプリケーション部2‐Dは、チャット機能2−D−1、ルーム機能2−D−2、マイページ部2−D−3、およびオープントーク検索機能2−D−4を(或いはそれぞれの「機能を装置もしくはプロセッサ或いはコンピュータ端末によって実行させる(サブ)ルーチンを」とすることもできる。以下「機能」について同じ。)備える。ブラウザ表示部2−Eは、マイページ機能2−E−1、およびオープントーク検索機能2−E−2を備える。
PHSおよびPDA3、およびコンピュータ4は、それぞれチャット機能、ルーム機能、マイページ機能、オープントーク検索機能を有するブラウザ表示部を備える。
次に、本願に係る動作を説明する。図5は、本発明の一実施形態に係るリアルタイムチャットシステムにおいて、ユーザが使用する各通信端末の画面に表示されるチャットを示すイメージ図、図6は、当該リアルタイムチャットシステムにおいて、アプリケーションサーバ1とユーザ間との発信および着信のプロセスを示すタイミングフローチャートである。さらに図7は、本発明の一実施形態に係るメッセージの送信手順を示すフローチャートである。
また、図22は本発明の一実施形態に係るメッセージ送信リクエストを示す概略図であり、図23は、本発明の一実施形態に係るメッセージ受信リクエストを示す概略図である。以下、それぞれの構成に係る機能を当該機能を用いるユーザ(利用者)視点からの動作として説明する。本システムは、利用者に下記の動作或いは作用をもたらす機能を有しているものである。
会話(チャット)を送信する際、ユーザAは通信端末のメッセージ入力画面においてメッセージを入力する。メッセージ入力画面が表示された際に、ユーザAが使用する通信端末からアプリケーションサーバ1に「メッセージを書き込み中」の状態であることが通知される。すると、データベースサーバ5にあるユーザAの状況に関するデータは「書き込み中」に更新され、ユーザBの通信端末からアプリケーションサーバ1にメッセージ確認が行われた際には、ユーザAが書き込み中であることを送信し、ユーザBの通信端末に書き込み中であることが通知される。
図22に示されるように、通信端末側で最初の発信が行われると、アプリケーションサーバ1側にhttpプロトコルのGET方式で情報が送信され、データベースサーバ5の会話ログ記憶部5−A−1にある会話ログテーブル5−A−11と会話情報記憶部5−A−2にある会話データテーブル5−A−21に情報が蓄積される。同時に、同じくデータベースサーバ5のルーム番号情報記憶部5−A−22にあるルーム番号テーブル5−A−221に登録処理を実行することでルーム番号が付番される。ルーム番号が付番されると、ルーム番号情報記憶部5−A−22のルーム番号詳細テーブル5−A−222に、ルーム番号および発信したユーザ番号が登録される。
メッセージ入力画面でメッセージを入力して送信すると(登録機能を選択)、アプリケーションサーバ1にメッセージが送信される。アプリケーションサーバ1で受信したメッセージは、データベースサーバ5の会話ログ記憶部5−A−1に記録される。次に、データベースサーバ5の会話情報記憶部5−A−2にあるルーム番号詳細テーブル5−A−222から、同一のルーム番号に参加しているユーザが検索され、ユーザ人数分の会話データが作成される。会話データが作成される際に、作成するユーザの言語が会話したユーザの言語と異なる場合には、アプリケーションサーバ1にある翻訳処理部1−Dにおいて翻訳処理が実行され、会話データのメッセージは、翻訳後のメッセージがデータベースサーバ5の会話情報記憶部5−A−2に格納される。また、メッセージの中に絵文字が含まれる場合には、絵文字の変換処理が実行され(S713)、作成するユーザの通信端末に合わせた絵文字がメッセージとして会話情報処理部5―A−2に登録される。
会話ログが会話ログ記憶部5−A−1、会話データが会話情報記憶部5―A−2にそれぞれ登録されると(S717)、ユーザが使用する通信端末へ送信する情報の生成が次のような手順で行われる。まず、アプリケーションサーバ1からデータベースサーバ5に対してお友達情報リクエストが発信される(S716)と、データベースサーバ5のお友達テーブル5−A−31から、お友達登録しているユーザ番号とユーザ名と利用状況が検索され(S719)、その検索結果をアプリケーションサーバ1が受信し(S719)、送信用データに書き込む。
次に、現在会話中であるかどうかを端末からのリクエストでルーム番号が入っているか否かが判断され、会話中の場合、アプリケーションサーバ1からデータベースサーバ5へ会話情報リクエストを発信し(S721)、一連の会話情報がデータベースサーバ5からアプリケーションサーバ1に発信される(S723)。このとき、アプリケーションサーバ1は、データベースサーバ5の会話データテーブル5−A―21から、該当するルーム番号の会話データを古い会話データから新しい会話データの順に取得し、会話ユーザと会話メッセージの組み合わせを送信用データに書き込む。
さらに、会話相手の状況(情報)が取得される。データベースサーバ5のルーム番号詳細テーブル5−A−222から同一のルーム番号を持つユーザ情報を把握し、プロフィール記憶部5−A−3にあるユーザ情報テーブル5−A−32から、そのユーザのログイン状況や書き込み状況を取得する。取得したユーザ番号、ユーザ名、および接続状況は、送信用データにさらに書き込まれる。
最後に、会話しているユーザ以外からの着信、会話情報を取得する。データベースサーバ5のルーム番号テーブル5−A−221から現在会話しているルーム番号以外で会話が終了していないルーム番号と最新の会話を取得する(S729)。会話が存在した場合には、ルーム番号と最新のメッセージを送信用データに追加する。また、着信情報があった場合には、着信ユーザを送信用データに追記する。さらに会話や着信が前回アプリケーションサーバ1とやりとりした後に作成された場合、新規メッセージであることを送信用データに書き込む。送信用データ作成が完了した後、ユーザが使用する通信端末へXML形式で送信する(S733)。
本発明の一実施形態におけるhttpリクエストのレイアウトは、次のとおりである。
1.
デベロッパID(developerid)
携帯キャリアや端末の種類を送信する。
⇒端末独自の処理に対応する為の項目。
2.バージョン(version)
⇒新バージョンがリリースされた時に旧バージョンのプログラムの動作を保証する為の項目
3.
ユーザID(userid)
ユーザを特定する為の項目。
docomo,au,SoftBankでは各端末の端末固有番号になる。
(端末個別番号の送信を許しているユーザのみ)
4.
オペレーション(operation)
以下5つの状態を示す。
sync
⇒ ハートビート
send
⇒ メッセージ送信
req
⇒ 発信
ans
⇒ 着信
stp
⇒ 会話終了
5.
会話時間(time)
会話時間を秒単位で送信
6.
メッセージ(msg)
会話内容
7.
ルーム番号(roomid)
8.
送信先ユーザID(s_userid)
送信相手のユーザID。複数のユーザの場合はカンマ区切り
9.
接続終了(close)
アプリケーション終了ボタンが押された場合1を送信する。
10.
再接続(reconnect)
長時間の電話やメールでアプリケーションが終了し、再接続する場合に1を送信する。
(送信例)
http://(domain)/(program).php?developerid=docomo&version=20091116&userid=111&operation=sync&time=10&roomid=2222&s_userid=222,333,444
1.
デベロッパID(developerid)
携帯キャリアや端末の種類を送信する。
⇒端末独自の処理に対応する為の項目。
2.バージョン(version)
⇒新バージョンがリリースされた時に旧バージョンのプログラムの動作を保証する為の項目
3.
ユーザID(userid)
ユーザを特定する為の項目。
docomo,au,SoftBankでは各端末の端末固有番号になる。
(端末個別番号の送信を許しているユーザのみ)
4.
オペレーション(operation)
以下5つの状態を示す。
sync
⇒ ハートビート
send
⇒ メッセージ送信
req
⇒ 発信
ans
⇒ 着信
stp
⇒ 会話終了
5.
会話時間(time)
会話時間を秒単位で送信
6.
メッセージ(msg)
会話内容
7.
ルーム番号(roomid)
8.
送信先ユーザID(s_userid)
送信相手のユーザID。複数のユーザの場合はカンマ区切り
9.
接続終了(close)
アプリケーション終了ボタンが押された場合1を送信する。
10.
再接続(reconnect)
長時間の電話やメールでアプリケーションが終了し、再接続する場合に1を送信する。
(送信例)
http://(domain)/(program).php?developerid=docomo&version=20091116&userid=111&operation=sync&time=10&roomid=2222&s_userid=222,333,444
また、本発明の一実施形態におけるメッセージ受信リクエストの出力例は、次のとおりである。
(出力例1)
<?xml
version="1.0" encoding="Shift-JIS" ?>
<resultset>
<result>
<message>メッセージがあります。</message>
<status>1</status>
</result>
<owner>
<user>
<id>111</id>
<name>中村 五郎</name>
</user>
<message>田中さんからメッセージがありました。</message>
</owner>
<friend>
<user>
<id>222</id>
<name>田中 一郎</name>
<status>1</status>
</user>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
</friend>
<communication>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>333</id>
<name>鈴木 二郎</name>
<status>1</status>
</user>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
<user>
<id>555</id>
<name>田村 四郎</name>
<status>9</status>
</user>
</communication>
<messages>
<message>
<user>
<id>333</id>
<name>鈴木 二郎</name>
</user>
<comment>元気ですか?</comment>
</message>
<message>
<user>
<message>
<user>
<id>444</id>
<name>山本 三郎</name>
</user>
<comment>自宅</comment>
</message>
</messages>
<interrupts>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>333</id>
<name>鈴木 二郎</name>
<status>1</status>
</user>
</interrupt>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
</interrupt>
</interrupts>
</resultset>
(出力例2)
<id>444</id>
<name>山本 三郎</name>
</user>
<comment>元気です!</comment>
</message>
<message>
<user>
<id>111</id>
<name>津田 隆</name>
</user>
<comment>いまどこにいますか?</comment>
</message>
<message>
<user>
<id>333</id>
<name>鈴木 二郎</name>
</user>
<comment>電車の中</comment>
</message>
<message>
<user>
<id>444</id>
<name>山本 三郎</name>
</user>
<comment>自宅</comment>
</message>
</messages>
<interrupts>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>333</id>
<name>鈴木 二郎</name>
<status>1</status>
</user>
</interrupt>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
</interrupt>
</interrupts>
</resultset>
(出力例1)
<?xml
version="1.0" encoding="Shift-JIS" ?>
<resultset>
<result>
<message>メッセージがあります。</message>
<status>1</status>
</result>
<owner>
<user>
<id>111</id>
<name>中村 五郎</name>
</user>
<message>田中さんからメッセージがありました。</message>
</owner>
<friend>
<user>
<id>222</id>
<name>田中 一郎</name>
<status>1</status>
</user>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
</friend>
<communication>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>333</id>
<name>鈴木 二郎</name>
<status>1</status>
</user>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
<user>
<id>555</id>
<name>田村 四郎</name>
<status>9</status>
</user>
</communication>
<messages>
<message>
<user>
<id>333</id>
<name>鈴木 二郎</name>
</user>
<comment>元気ですか?</comment>
</message>
<message>
<user>
<message>
<user>
<id>444</id>
<name>山本 三郎</name>
</user>
<comment>自宅</comment>
</message>
</messages>
<interrupts>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>333</id>
<name>鈴木 二郎</name>
<status>1</status>
</user>
</interrupt>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
</interrupt>
</interrupts>
</resultset>
(出力例2)
<id>444</id>
<name>山本 三郎</name>
</user>
<comment>元気です!</comment>
</message>
<message>
<user>
<id>111</id>
<name>津田 隆</name>
</user>
<comment>いまどこにいますか?</comment>
</message>
<message>
<user>
<id>333</id>
<name>鈴木 二郎</name>
</user>
<comment>電車の中</comment>
</message>
<message>
<user>
<id>444</id>
<name>山本 三郎</name>
</user>
<comment>自宅</comment>
</message>
</messages>
<interrupts>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>333</id>
<name>鈴木 二郎</name>
<status>1</status>
</user>
</interrupt>
<interrupt>
<room>
<id>xxx</id>
<name>xxx</name>
</room>
<user>
<id>444</id>
<name>山本 三郎</name>
<status>2</status>
</user>
</interrupt>
</interrupts>
</resultset>
また、図5において各ユーザを示すアイコン表示画面(501)は、ユーザが使用する通信端末において、動画に対応するカメラを備えることで、ユーザ側がチャットを行う際にカメラで撮影される動画がアイコン表示画面に表示されるようにしてもよい。また、そのアイコンをクリックすることで、アイコン部分をより大きく表示できるようにし、必要があればそのアイコン表示部分に入力されたチャットのログが表示できるようにしてもよい。これによって、遠く離れて住む家族や友人なども相手の状況が動画で確認しながらチャットを行うことも可能となる。
さらに、本発明の上記システムにおいて、チャットアプリケーションの起動時に行うユーザIDでの使用者認証に加えて、当該通信端末に接続された指紋、または角膜などによる生体認証を並行して行ってもよい。これによって他人へのなりすましによるチャット利用を防ぐことができ、より信頼性のあるチャットシステムの構築につながる。
上述のように、本発明の上記システムにより、文字データによって行われるチャットは、周りが静かで話しづらい場所であっても、または音声が正しく聞き取れないほど騒音が多い場所であっても、環境に左右されることなく必要な情報交換を可能にする。また、ルーム番号情報をルーム番号テーブルで記憶し、データを紐付けすることから、限られた時間を有効に活用しつつ複数のルーム(グループ)で並行してチャットを進めることが可能となる。ここで、ルームとは一つの会話単位を意味し、そのルームを同時に複数立てる(設ける)ことができる。これを達成するに当たっては、複数のルームに係る画面を各ウィンドウとして重畳的に表示可能とする機能、ルーム番号を付番する機能、ルーム番号の変更入力を受けると画面を切り替える切替機能を持たせることによる。
(会話公開システム)
次に、本発明に係るチャットでの会話を公開する会話公開システムの動作について説明する。
次に、本発明に係るチャットでの会話を公開する会話公開システムの動作について説明する。
図11は、本発明の一実施形態に係るデータベースに係るルーム番号テーブルを示す概略図、図12は、同ルーム番号詳細テーブルを示す概略図である。また、図13は本発明の一実施形態に係る公開される会話の設定を示すイメージ図であり、図14は本発明の一実施形態に係る公開される会話の詳細な画面を示すイメージ図、さらに図29は本発明の一実施形態に係る会話公開の手順を示すタイミングフローチャートである。
発信から会話終了までの一連の会話を公開する際、種々の操作はマイページにある公開会話設定画面で行われる。図13または図29において、会話日時や会話したユーザを入力して指定し検索すると、データベースサーバ5にあるルーム番号テーブル5−A−221とルーム番号詳細テーブル5−A−222から該当データを照合し、照合結果を一覧で表示する。表示された一覧から公開したい会話にチェックをつけ登録ボタンをクリックすると(S2903)、wwwサーバ6を経由してデータベースサーバ5に蓄積されたルーム番号テーブル5−A−221における該当ルーム番号の公開区分が仮公開に更新される(S2905)。公開区分が「仮公開」に更新されると、会話に参加したユーザがデータベースサーバ5のルーム番号詳細テーブル5−A−222から検索され(S2907)、ユーザ全員にwwwサーバ6から公開確認メールが送信される(S2910)。
公開確認メールには、公開したい内容を照会するURLと公開を許可するプログラムを実行するURL、拒否するプログラムを実行するURLが記載されている。ユーザ全員が許可した時点で、ルーム番号テーブルの公開区分が「公開」に変更され、公開会話検索の検索結果に会話が表示されるようになる。
なお、図14において、公開する会話の中で一部会話のみ非公開にすることも可能である。その際、公開会話設定で表示されている会話の中で、公開したい会話の詳細機能を選択すると、その会話のやりとりが表示される。やりとりの中で非公開にしたい会話のチェックを外して「更新」ボタンをクリックすれば、その会話のみ非公開となる。会話の非公開は、会話に参加しているユーザであれば誰でも設定することができる。
本発明の上記システムにより、チャットの内容はその場限りのものではなく、保存及び公開が可能であるということをユーザ共通の理解としてチャットが進められるため、より中身の充実した情報交換が可能となる。また、チャット情報はユーザ間で合意が得られれば公開できるため、個人や企業の情報発信の場であるホームページやブログなどに、そのまま活用することも可能である。また、チャットの内容があらゆるユーザによって共有され、享受されうるという利点ばかりではなく、公開されうるという可能性自体が、チャット上で問題となりがちな個人に対する誹謗中傷行為にも精神的な抑止力となり、開かれた対談の場、語り場へと発展する原動力となりうる。
さらにまた、本発明の上記システムにより公開される(べくデータベースに蓄積される)チャット情報の内容はテキストベースで保存されるため、検索が可能かつ容易である。したがって、何気ない会話の中に重要な示唆、情報、発想等があった場合に、これまでではその場限り情報として消滅していたものでも、蓄積貯蔵され、必要な人間が必要に応じて(後述されるように)検索されることが可能となる。すなわち、いわゆるクラウド化がチャットで交わされた会話程度の情報にまで及ぼし得ることとなり、利便性のある情報の流通、利用、再利用を通じた産業、人間生活一般の向上まで図ることが、本願によって初めて可能となる。
次に、本発明に係る公開会話検索システムの動作について説明する。
wwwサーバ6にある公開会話検索プログラムのURLを表示すると、検索画面が表示される。図15は、本発明の一実施形態に係る公開された会話の検索画面を示すイメージ図、図16は、かかる公開された会話の詳細な検索画面を示すイメージ図である。検索画面で検索ワードを入力し検索ボタンをクリックすると検索結果が表示される(図16参照)。検索処理は、データベースサーバ5にあるルーム番号テーブル5−A−221に公開が設定されていて、かつ会話ログテーブル5−A−11のメッセージにキーワードを含む会話を検索し、検索結果を一覧表示する。本発明における公開会話検索システムは、会員登録をしていないユーザも利用することが可能である。
これにより、自分が参加していなくても、過去に行われた会話の内容を閲覧し、情報を共有することが可能となる。ある限定されたグループの会話は、本来ならその場限りで保存されたり公開されたりすることもないが、本発明によれば、情報の辞典としてキーワードからひも解き活用することができる。
さらに、一般ユーザ、または消費者の生の声がデータとして保存されるため、より大規模でより高度な市場調査として利用することも可能となる。
また、データベースサーバ内に保存された会話ログのデータは、公開・非公開にかかわらず、常に一定時間において一定回数に、予め定められたキーワードによって自動的に検索されたり抽出されたりする機能を備えてもよい。これによって犯罪、または特定の個人や団体に対するいやがらせなども未然に防ぐことが可能となり、本来閉鎖的になりがちだと言われるチャットを、さらに開放的で安全なシステムとして普及させていくことが可能となる。
次に、本発明に係る一実施形態におけるNTTDocomo、au、SoftBankを含む各キャリアの携帯電話におけるチャットアプリケーションシステムの動作について説明する。
図28は、本発明の一実施形態に係る携帯電話のチャットアプリケーションシステムを示すタイミングフローチャートである。
docomo、au、SoftBankは、wwwサーバ6にプログラムを配置してブラウザ経由で実行した場合、携帯用ブラウザがサーバとの定期的な通信を行う機能を有していないため、更新ボタンを押さずに、相手の発信した言葉が表示される動作を実現することができない。その為、携帯電話側にアプリケーションを配置することで本発明におけるリアルタイムチャットシステムを実現する。
携帯電話のアプリケーションは、wwwサーバ6にあるプログラムを携帯電話にダウンロードすることで実行が可能になる。対象は、携帯各社の「パケット定額サービス」に加入しているユーザとし、ダウンロード時とアプリ起動時に「パケット定額サービス」を利用していないユーザは、別途通信費用が発生する旨のメッセージを表示する。プログラムでは、ユーザへの発着信、チャットを使った会話、ルームへの参加、登録情報の追加・修正・削除・照会ができるマイページ機能、公開された会話を検索する機能を持つ。
また、携帯電話には、端末固有番号が登録されており、その番号を外部に送信することを許可している端末においては、データベースサーバのユーザ情報テーブルに端末固有番号を登録し、ログインすることなしにユーザの判別が可能となる。端末固有番号を送信することを許可していない端末においては、一回目のアプリケーション起動時にログイン画面が表示され、ユーザ名、パスワードの入力が必要となる。
アプリケーションは、docomo、au、SoftBankで動作環境仕様が異なるので、各キャリア対応のアプリケーションが必要となる。本発明の一実施形態におけるNTTdocomoに対応するアプリケーションのソースコードの一例は、以下のとおりである。
[メインプログラム(LapeaceMobileChat.java)]
import java.io.*;
import java.lang.*;
import java.util.*;
import javax.microedition.io.Connector;
import com.nttdocomo.io.*;
import com.nttdocomo.ui.*;
import com.nttdocomo.util.*;
import com.nttdocomo.net.*;
import org.xmlpull.v1.XmlPullParserException;
public class LapeaceMobileChat extends IApplication
implements SoftKeyListener,
ComponentListener, TimerListener {
public static final boolean TEST_MODE_FLAG
= true;
public static final String
TEST_MODE_UID = "10001";
public static final int WAIT_TYPE_TALK
= 1;
public static final int
WAIT_TYPE_INTERRUPT = 2;
String myUserId = "";
ChatItem item = new ChatItem();
ChatItemParser parser = new ChatItemParser();
Panel mainPanel;
HTMLLayout layoutMgr;
Label titleLabel;
ListBox userList;
TextBox chatArea;
TextBox talkText;
Button talkButton;
ListBox interruptList;
Button interruptButton;
Timer heartbeatTimer;
Timer timeTimer;
Timer waitTimer;
int heatbeatTime = 3000;
int timerTime = 0;
int addedDispTime = 0;
boolean timerFlag = false;
Hashtable timerTimes = new Hashtable();
Vector userIdArray = new Vector();
int interruptSelectedRoomId = 0;
int lock = 0;
int waitType = 0;
void error(String msg) {
System.out.println(msg);
}
void message(String msg) {
Dialog message
= new Dialog(Dialog.DIALOG_INFO, "メッセージ");
message.setText(msg);
message.show();
}
boolean confirmInterrupt() {
Dialog confirm
= new Dialog(Dialog.DIALOG_YESNO, "割り込み確認");
confirm.setText("割り込みの場合「はい」、呼び込みの場合「いいえ」を選択してください。");
int ret =
confirm.show();
return
ret == Dialog.BUTTON_YES ? true : false;
}
void sendTerminateMessage() {
try
{
String
url = getSourceURL() +
"?developerid=docomo&version=20091116&userid=" + myUserId +
"&operation=sync&time=" + timerTime +
"&close=1";
HttpConnection
conn = (HttpConnection) Connector.open(url, Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
conn.connect();
InputStream
is = conn.openInputStream();
parser.setItem(item);
parser.parse(is);
is.close();
conn.close();
}
catch (Exception e) {
error("エラー("
+ e + ")");
}
}
int getRoomId() {
if(item.communications
!= null && item.communications.room != null &&
item.communications.room.id > 0) {
return
item.communications.room.id;
}
else {
return
0;
}
}
String makeParamByCommunications() {
String
param = "";
if(item.communications
!= null) {
int
roomId = getRoomId();
if(roomId
> 0) {
param
+= "&roomid=" + roomId;
}
if(item.communications.users
!= null && item.communications.users.size() > 0) {
String
to = "";
for(int
i = 0; i < item.communications.users.size(); i++) {
User
user = (User)item.communications.users.elementAt(i);
if(!user.id.equals(myUserId))
{
if(to.length()
> 0) {
to
+= ",";
}
to
+= user.id;
}
}
if(to.length()
> 0) {
param
+= "&s_userid=" + URLEncoder.encode(to);
}
}
}
return
param;
}
boolean inCommunications(String userId)
{
if(item.communications.users
!= null && item.communications.users.size() > 0) {
for(int
i = 0; i < item.communications.users.size(); i++) {
User
user = (User)item.communications.users.elementAt(i);
if(user.id.equals(userId))
{
return
true;
}
}
}
return
false;
}
void sendMessage(String talk) {
lock
= 1;
InputStream
is = null;
HttpConnection
conn = null;
try
{
if(item.friends
!= null && item.friends.size() > 0) {
userIdArray.removeAllElements();
int
i = userList.getSelectedIndex();
if(i
>= 0 && item.friends.size() >= i) {
User
user = (User)item.friends.elementAt(i);
userIdArray.addElement(user.id);
}
}
if(item.interrupts
!= null && item.interrupts.size() > 0) {
int
i = interruptList.getSelectedIndex();
if(i
>= 0 && item.interrupts.size() >= i) {
Interrupt
interrupt = (Interrupt)item.interrupts.elementAt(i);
interruptSelectedRoomId
= interrupt.room.id;
}
}
String
userIds = "";
if(item.friends
!= null && item.friends.size() > 0) {
for(int
i = 0; i < userList.getItemCount(); i++) {
if(userList.isIndexSelected(i))
{
if(userIds.length()
> 0) {
userIds
+= ",";
}
User
user = (User)item.friends.elementAt(i);
if(!user.id.equals(myUserId))
{
userIds
+= user.id;
}
}
}
}
String
operation = "sync";
String
param = "";
if(talk
!= null && talk.length() > 0 && (userIds.length() > 0 ||
getRoomId() > 0)) {
operation
= "send";
param
= "&msg=" + URLEncoder.encode(talk);
if(userIds.length()
> 0) {
if(getRoomId()
> 0) {
if(confirmInterrupt())
{
param
+= "&s_userid=" + URLEncoder.encode(userIds);
}
else {
param
+= makeParamByCommunications();
for(int
i = 0; i < userList.getItemCount(); i++) {
if(userList.isIndexSelected(i))
{
User
user = (User)item.friends.elementAt(i);
if(!user.id.equals(myUserId)
&& !inCommunications(user.id)) {
param
+= URLEncoder.encode(",") + user.id;
}
}
}
}
}
else
{
param
+= "&s_userid=" + URLEncoder.encode(userIds);
}
userIdArray.removeAllElements();
interruptSelectedRoomId
= 0;
}
else
if(item.communications != null) {
param
+= makeParamByCommunications();
}
}
else
{
String
nowTalk = talkText.getText();
if(nowTalk.length()
> 0) {
param
+= "&msg=" + URLEncoder.encode(nowTalk);
}
param
+= makeParamByCommunications();
}
String
url = getSourceURL() +
"?developerid=docomo&version=20091116&userid=" + myUserId +
"&operation=" + operation + "&time=" + timerTime +
param;
conn
= (HttpConnection) Connector.open(url, Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
conn.connect();
is
= conn.openInputStream();
ChatItem
newItem = new ChatItem();
parser.setItem(newItem);
parser.parse(is);
is.close();
conn.close();
initPanel(newItem);
} catch
(XmlPullParserException pe) {
error("パースエラー(" + pe + ")");
} catch
(IOException ie) {
error("I/O エラー(" + ie + ")");
}
catch (Exception e) {
error("XML読み込みエラー("
+ e + ")");
} finally {
try
{
if(is
!= null) {
is.close();
}
if(conn
!= null) {
conn.close();
}
}
catch (IOException ioe) {}
}
lock
= 0;
}
boolean checkUserList(ChatItem oldItem,
ChatItem newItem) {
if(oldItem.friends
== null) {
return
true;
}
if(oldItem.friends.size()
!= newItem.friends.size()) {
return
true;
}
for(int
i = 0; i < oldItem.friends.size(); i++) {
User
oldUser = (User)oldItem.friends.elementAt(i);
User
newUser = (User)newItem.friends.elementAt(i);
if(!oldUser.id.equals(newUser.id))
{
return
true;
}
if(!oldUser.name.equals(newUser.name))
{
return
true;
}
if(oldUser.status
!= newUser.status) {
return
true;
}
}
return
false;
}
boolean checkChatText(ChatItem oldItem,
ChatItem newItem) {
if(oldItem.messages
== null) {
return
true;
}
if(oldItem.messages.size()
!= newItem.messages.size()) {
return
true;
}
for(int
i = 0; i < oldItem.messages.size(); i++) {
Message
oldMessage = (Message)oldItem.messages.elementAt(i);
Message
newMessage = (Message)newItem.messages.elementAt(i);
if(!oldMessage.user.id.equals(newMessage.user.id))
{
return
true;
}
if(!oldMessage.comment.equals(newMessage.comment))
{
return
true;
}
}
return
false;
}
boolean checkInterruptList(ChatItem
oldItem, ChatItem newItem) {
if(oldItem.interrupts
== null) {
return
true;
}
if(oldItem.interrupts.size()
!= newItem.interrupts.size()) {
return
true;
}
for(int
i = 0; i < oldItem.interrupts.size(); i++) {
Interrupt
oldInterrupt = (Interrupt)oldItem.interrupts.elementAt(i);
Interrupt
newInterrupt = (Interrupt)newItem.interrupts.elementAt(i);
if(oldInterrupt.room.id
!= newInterrupt.room.id) {
return
true;
}
if(!oldInterrupt.user.id.equals(newInterrupt.user.id))
{
return
true;
}
}
return
false;
}
void initPanel(ChatItem newItem) {
if(checkUserList(item,
newItem)) {
userList.removeAll();
for(int
i = 0; i < newItem.friends.size(); i++) {
User
user = (User)newItem.friends.elementAt(i);
String
mark = "○ ";
if(user.status
== 2) {
mark
= "● ";
}
else if(user.status == 3) {
mark
= "◎ ";
}
else if(user.status == 4) {
mark
= "▲ ";
}
else if(user.status == 9) {
mark
= "× ";
}
userList.append(mark
+ user.name);
if(userIdArray
!= null && userIdArray.size() > 0) {
for(int
j = 0; j < userIdArray.size(); j++) {
String
userId = (String)userIdArray.elementAt(j);
if(userId.equals(user.id))
{
userList.select(i);
break;
}
}
}
}
}
if(checkChatText(item,
newItem)) {
String
str = "";
for(int
i = 0; i < newItem.messages.size(); i++) {
Message
message = (Message)newItem.messages.elementAt(i);
String
name = message.user.name;
String
comment = message.comment;
str
+= "[" + name + "]:" + comment + "\n";
}
chatArea.setText(str);
}
if(checkInterruptList(item,
newItem)) {
interruptList.removeAll();
for(int
i = 0; i < newItem.interrupts.size(); i++) {
Interrupt
interrupt = (Interrupt)newItem.interrupts.elementAt(i);
interruptList.append(interrupt.user.name
+ "(" + interrupt.room.id + ")");
if(interruptSelectedRoomId
== interrupt.room.id) {
interruptList.select(i);
}
}
}
item
= newItem;
}
void uncheckUserList() {
for(int
i = 0; i < userList.getItemCount(); i++) {
if(userList.isIndexSelected(i))
{
userList.deselect(i);
}
}
}
void uncheckInterruptList() {
for(int
i = 0; i < interruptList.getItemCount(); i++) {
if(interruptList.isIndexSelected(i))
{
interruptList.deselect(i);
}
}
}
public void start() {
myUserId
= Phone.getProperty(Phone.TERMINAL_ID);
if(TEST_MODE_FLAG)
myUserId = TEST_MODE_UID;
mainPanel
= new Panel();
layoutMgr
= new HTMLLayout();
mainPanel.setLayoutManager(layoutMgr);
mainPanel.setTitle("Lapeace携帯チャット");
mainPanel.setSoftKeyListener(this);
mainPanel.setComponentListener(this);
mainPanel.setSoftLabel(Frame.SOFT_KEY_1,
"終了");
titleLabel
= new Label("接続時間 00:00");
userList
= new ListBox(ListBox.CHECK_BOX, 3);
chatArea
= new TextBox("", 40, 5, TextBox.DISPLAY_ANY);
chatArea.setEditable(false);
talkText
= new TextBox("", 20, 1, TextBox.DISPLAY_ANY);
talkButton
= new Button("会話");
interruptList
= new ListBox(ListBox.SINGLE_SELECT, 2);
interruptButton
= new Button("切替");
sendMessage("");
layoutMgr.begin(HTMLLayout.RIGHT);
mainPanel.add(titleLabel);
layoutMgr.begin(HTMLLayout.LEFT);
mainPanel.add(userList);
mainPanel.add(chatArea);
mainPanel.add(talkText);
mainPanel.add(talkButton);
layoutMgr.br();
mainPanel.add(interruptList);
mainPanel.add(interruptButton);
layoutMgr.end();
makeTimeTimer();
makeHeatbeatTimer();
Display.setCurrent((Frame)mainPanel);
}
public void resume() {
lock
= 0;
makeTimeTimer();
makeHeatbeatTimer();
}
public void softKeyPressed(int key) {
Frame
f = Display.getCurrent();
if
(f == mainPanel) {
if (key == Frame.SOFT_KEY_1) {
sendTerminateMessage();
terminate();
}
}
}
public void softKeyReleased(int key) {}
public void componentAction(Component
source, int type, int param) {
if(source
== talkButton && type == ComponentListener.BUTTON_PRESSED) {
String
talk = talkText.getText();
if(lock
== 1) {
makeWaitTimer(WAIT_TYPE_TALK);
}
else {
int
nowRoomId = getRoomId();
sendMessage(talk);
uncheckUserList();
talkText.setText("");
if(talk!=null
&& talk.length()>0) {
resetTime(nowRoomId,
getRoomId());
}
}
}
else
if(source == interruptButton && type ==
ComponentListener.BUTTON_PRESSED) {
if(item.interrupts
!= null && item.interrupts.size() > 0) {
int
i = interruptList.getSelectedIndex();
if(i
>= 0 && item.interrupts.size() >= i) {
Interrupt
interrupt = (Interrupt)item.interrupts.elementAt(i);
int
nowRoomId = getRoomId();
item.communications.room.id
= interrupt.room.id;
if(lock
== 1) {
makeWaitTimer(WAIT_TYPE_INTERRUPT);
}
else {
uncheckUserList();
sendMessage("");
talkText.setText("");
uncheckInterruptList();
resetTime(nowRoomId,
interrupt.room.id);
}
}
}
}
else
if(source == interruptList && type == ComponentListener.SELECTION_CHANGED)
{
int
i = interruptList.getSelectedIndex();
if(i
>= 0 && item.interrupts.size() >= i) {
Interrupt
interrupt = (Interrupt)item.interrupts.elementAt(i);
interruptSelectedRoomId
= interrupt.room.id;
}
}
}
public void timerExpired(Timer source)
{
if(source
== timeTimer) {
String
min = "--";
String
sec = "--";
if(timerFlag)
{
timerTime
+= 1;
min
= "" + (addedDispTime + timerTime) / 60;
sec
= "" + (addedDispTime + timerTime) % 60;
if(min.length()
== 1) {
min
= "0" + min;
}
if(sec.length()
== 1) {
sec
= "0" + sec;
}
}
String
labelText = "接続時間 " + min + ":" + sec;
titleLabel.setText(labelText);
}
else if(source == heartbeatTimer) {
if(lock
== 0) {
sendMessage("");
}
makeHeatbeatTimer();
}
else if(source == waitTimer) {
if(lock
== 0) {
if(waitType
== WAIT_TYPE_TALK) {
componentAction(talkButton,
ComponentListener.BUTTON_PRESSED, 0);
}
else if(waitType == WAIT_TYPE_INTERRUPT) {
componentAction(interruptButton,
ComponentListener.BUTTON_PRESSED, 0);
}
}
else {
makeWaitTimer(waitType);
}
}
}
private void makeTimeTimer() {
timeTimer
= new Timer();
timeTimer.setTime(1000);
timeTimer.setRepeat(true);
timeTimer.setListener(this);
timeTimer.start();
}
private void makeHeatbeatTimer() {
heartbeatTimer
= new Timer();
heartbeatTimer.setTime(heatbeatTime);
heartbeatTimer.setRepeat(false);
heartbeatTimer.setListener(this);
heartbeatTimer.start();
}
private void makeWaitTimer(int type) {
waitType
= type;
waitTimer
= new Timer();
waitTimer.setTime(100);
waitTimer.setRepeat(false);
waitTimer.setListener(this);
waitTimer.start();
}
private void resetTime(int nowRoomId,
int reqRoomId) {
timerFlag
= true;
if(nowRoomId
!= reqRoomId) {
Integer
nowKey = new Integer(nowRoomId);
Integer
reqKey = new Integer(reqRoomId);
Integer
savedTime = new Integer(addedDispTime + timerTime);
timerTimes.put(nowKey,
savedTime);
addedDispTime
= (timerTimes.get(reqKey)!=null) ? ((Integer)timerTimes.get(reqKey)).intValue()
: 0;
timerTime
= 0;
}
}
}
[メインプログラム(LapeaceMobileChat.java)]
import java.io.*;
import java.lang.*;
import java.util.*;
import javax.microedition.io.Connector;
import com.nttdocomo.io.*;
import com.nttdocomo.ui.*;
import com.nttdocomo.util.*;
import com.nttdocomo.net.*;
import org.xmlpull.v1.XmlPullParserException;
public class LapeaceMobileChat extends IApplication
implements SoftKeyListener,
ComponentListener, TimerListener {
public static final boolean TEST_MODE_FLAG
= true;
public static final String
TEST_MODE_UID = "10001";
public static final int WAIT_TYPE_TALK
= 1;
public static final int
WAIT_TYPE_INTERRUPT = 2;
String myUserId = "";
ChatItem item = new ChatItem();
ChatItemParser parser = new ChatItemParser();
Panel mainPanel;
HTMLLayout layoutMgr;
Label titleLabel;
ListBox userList;
TextBox chatArea;
TextBox talkText;
Button talkButton;
ListBox interruptList;
Button interruptButton;
Timer heartbeatTimer;
Timer timeTimer;
Timer waitTimer;
int heatbeatTime = 3000;
int timerTime = 0;
int addedDispTime = 0;
boolean timerFlag = false;
Hashtable timerTimes = new Hashtable();
Vector userIdArray = new Vector();
int interruptSelectedRoomId = 0;
int lock = 0;
int waitType = 0;
void error(String msg) {
System.out.println(msg);
}
void message(String msg) {
Dialog message
= new Dialog(Dialog.DIALOG_INFO, "メッセージ");
message.setText(msg);
message.show();
}
boolean confirmInterrupt() {
Dialog confirm
= new Dialog(Dialog.DIALOG_YESNO, "割り込み確認");
confirm.setText("割り込みの場合「はい」、呼び込みの場合「いいえ」を選択してください。");
int ret =
confirm.show();
return
ret == Dialog.BUTTON_YES ? true : false;
}
void sendTerminateMessage() {
try
{
String
url = getSourceURL() +
"?developerid=docomo&version=20091116&userid=" + myUserId +
"&operation=sync&time=" + timerTime +
"&close=1";
HttpConnection
conn = (HttpConnection) Connector.open(url, Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
conn.connect();
InputStream
is = conn.openInputStream();
parser.setItem(item);
parser.parse(is);
is.close();
conn.close();
}
catch (Exception e) {
error("エラー("
+ e + ")");
}
}
int getRoomId() {
if(item.communications
!= null && item.communications.room != null &&
item.communications.room.id > 0) {
return
item.communications.room.id;
}
else {
return
0;
}
}
String makeParamByCommunications() {
String
param = "";
if(item.communications
!= null) {
int
roomId = getRoomId();
if(roomId
> 0) {
param
+= "&roomid=" + roomId;
}
if(item.communications.users
!= null && item.communications.users.size() > 0) {
String
to = "";
for(int
i = 0; i < item.communications.users.size(); i++) {
User
user = (User)item.communications.users.elementAt(i);
if(!user.id.equals(myUserId))
{
if(to.length()
> 0) {
to
+= ",";
}
to
+= user.id;
}
}
if(to.length()
> 0) {
param
+= "&s_userid=" + URLEncoder.encode(to);
}
}
}
return
param;
}
boolean inCommunications(String userId)
{
if(item.communications.users
!= null && item.communications.users.size() > 0) {
for(int
i = 0; i < item.communications.users.size(); i++) {
User
user = (User)item.communications.users.elementAt(i);
if(user.id.equals(userId))
{
return
true;
}
}
}
return
false;
}
void sendMessage(String talk) {
lock
= 1;
InputStream
is = null;
HttpConnection
conn = null;
try
{
if(item.friends
!= null && item.friends.size() > 0) {
userIdArray.removeAllElements();
int
i = userList.getSelectedIndex();
if(i
>= 0 && item.friends.size() >= i) {
User
user = (User)item.friends.elementAt(i);
userIdArray.addElement(user.id);
}
}
if(item.interrupts
!= null && item.interrupts.size() > 0) {
int
i = interruptList.getSelectedIndex();
if(i
>= 0 && item.interrupts.size() >= i) {
Interrupt
interrupt = (Interrupt)item.interrupts.elementAt(i);
interruptSelectedRoomId
= interrupt.room.id;
}
}
String
userIds = "";
if(item.friends
!= null && item.friends.size() > 0) {
for(int
i = 0; i < userList.getItemCount(); i++) {
if(userList.isIndexSelected(i))
{
if(userIds.length()
> 0) {
userIds
+= ",";
}
User
user = (User)item.friends.elementAt(i);
if(!user.id.equals(myUserId))
{
userIds
+= user.id;
}
}
}
}
String
operation = "sync";
String
param = "";
if(talk
!= null && talk.length() > 0 && (userIds.length() > 0 ||
getRoomId() > 0)) {
operation
= "send";
param
= "&msg=" + URLEncoder.encode(talk);
if(userIds.length()
> 0) {
if(getRoomId()
> 0) {
if(confirmInterrupt())
{
param
+= "&s_userid=" + URLEncoder.encode(userIds);
}
else {
param
+= makeParamByCommunications();
for(int
i = 0; i < userList.getItemCount(); i++) {
if(userList.isIndexSelected(i))
{
User
user = (User)item.friends.elementAt(i);
if(!user.id.equals(myUserId)
&& !inCommunications(user.id)) {
param
+= URLEncoder.encode(",") + user.id;
}
}
}
}
}
else
{
param
+= "&s_userid=" + URLEncoder.encode(userIds);
}
userIdArray.removeAllElements();
interruptSelectedRoomId
= 0;
}
else
if(item.communications != null) {
param
+= makeParamByCommunications();
}
}
else
{
String
nowTalk = talkText.getText();
if(nowTalk.length()
> 0) {
param
+= "&msg=" + URLEncoder.encode(nowTalk);
}
param
+= makeParamByCommunications();
}
String
url = getSourceURL() +
"?developerid=docomo&version=20091116&userid=" + myUserId +
"&operation=" + operation + "&time=" + timerTime +
param;
conn
= (HttpConnection) Connector.open(url, Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
conn.connect();
is
= conn.openInputStream();
ChatItem
newItem = new ChatItem();
parser.setItem(newItem);
parser.parse(is);
is.close();
conn.close();
initPanel(newItem);
} catch
(XmlPullParserException pe) {
error("パースエラー(" + pe + ")");
} catch
(IOException ie) {
error("I/O エラー(" + ie + ")");
}
catch (Exception e) {
error("XML読み込みエラー("
+ e + ")");
} finally {
try
{
if(is
!= null) {
is.close();
}
if(conn
!= null) {
conn.close();
}
}
catch (IOException ioe) {}
}
lock
= 0;
}
boolean checkUserList(ChatItem oldItem,
ChatItem newItem) {
if(oldItem.friends
== null) {
return
true;
}
if(oldItem.friends.size()
!= newItem.friends.size()) {
return
true;
}
for(int
i = 0; i < oldItem.friends.size(); i++) {
User
oldUser = (User)oldItem.friends.elementAt(i);
User
newUser = (User)newItem.friends.elementAt(i);
if(!oldUser.id.equals(newUser.id))
{
return
true;
}
if(!oldUser.name.equals(newUser.name))
{
return
true;
}
if(oldUser.status
!= newUser.status) {
return
true;
}
}
return
false;
}
boolean checkChatText(ChatItem oldItem,
ChatItem newItem) {
if(oldItem.messages
== null) {
return
true;
}
if(oldItem.messages.size()
!= newItem.messages.size()) {
return
true;
}
for(int
i = 0; i < oldItem.messages.size(); i++) {
Message
oldMessage = (Message)oldItem.messages.elementAt(i);
Message
newMessage = (Message)newItem.messages.elementAt(i);
if(!oldMessage.user.id.equals(newMessage.user.id))
{
return
true;
}
if(!oldMessage.comment.equals(newMessage.comment))
{
return
true;
}
}
return
false;
}
boolean checkInterruptList(ChatItem
oldItem, ChatItem newItem) {
if(oldItem.interrupts
== null) {
return
true;
}
if(oldItem.interrupts.size()
!= newItem.interrupts.size()) {
return
true;
}
for(int
i = 0; i < oldItem.interrupts.size(); i++) {
Interrupt
oldInterrupt = (Interrupt)oldItem.interrupts.elementAt(i);
Interrupt
newInterrupt = (Interrupt)newItem.interrupts.elementAt(i);
if(oldInterrupt.room.id
!= newInterrupt.room.id) {
return
true;
}
if(!oldInterrupt.user.id.equals(newInterrupt.user.id))
{
return
true;
}
}
return
false;
}
void initPanel(ChatItem newItem) {
if(checkUserList(item,
newItem)) {
userList.removeAll();
for(int
i = 0; i < newItem.friends.size(); i++) {
User
user = (User)newItem.friends.elementAt(i);
String
mark = "○ ";
if(user.status
== 2) {
mark
= "● ";
}
else if(user.status == 3) {
mark
= "◎ ";
}
else if(user.status == 4) {
mark
= "▲ ";
}
else if(user.status == 9) {
mark
= "× ";
}
userList.append(mark
+ user.name);
if(userIdArray
!= null && userIdArray.size() > 0) {
for(int
j = 0; j < userIdArray.size(); j++) {
String
userId = (String)userIdArray.elementAt(j);
if(userId.equals(user.id))
{
userList.select(i);
break;
}
}
}
}
}
if(checkChatText(item,
newItem)) {
String
str = "";
for(int
i = 0; i < newItem.messages.size(); i++) {
Message
message = (Message)newItem.messages.elementAt(i);
String
name = message.user.name;
String
comment = message.comment;
str
+= "[" + name + "]:" + comment + "\n";
}
chatArea.setText(str);
}
if(checkInterruptList(item,
newItem)) {
interruptList.removeAll();
for(int
i = 0; i < newItem.interrupts.size(); i++) {
Interrupt
interrupt = (Interrupt)newItem.interrupts.elementAt(i);
interruptList.append(interrupt.user.name
+ "(" + interrupt.room.id + ")");
if(interruptSelectedRoomId
== interrupt.room.id) {
interruptList.select(i);
}
}
}
item
= newItem;
}
void uncheckUserList() {
for(int
i = 0; i < userList.getItemCount(); i++) {
if(userList.isIndexSelected(i))
{
userList.deselect(i);
}
}
}
void uncheckInterruptList() {
for(int
i = 0; i < interruptList.getItemCount(); i++) {
if(interruptList.isIndexSelected(i))
{
interruptList.deselect(i);
}
}
}
public void start() {
myUserId
= Phone.getProperty(Phone.TERMINAL_ID);
if(TEST_MODE_FLAG)
myUserId = TEST_MODE_UID;
mainPanel
= new Panel();
layoutMgr
= new HTMLLayout();
mainPanel.setLayoutManager(layoutMgr);
mainPanel.setTitle("Lapeace携帯チャット");
mainPanel.setSoftKeyListener(this);
mainPanel.setComponentListener(this);
mainPanel.setSoftLabel(Frame.SOFT_KEY_1,
"終了");
titleLabel
= new Label("接続時間 00:00");
userList
= new ListBox(ListBox.CHECK_BOX, 3);
chatArea
= new TextBox("", 40, 5, TextBox.DISPLAY_ANY);
chatArea.setEditable(false);
talkText
= new TextBox("", 20, 1, TextBox.DISPLAY_ANY);
talkButton
= new Button("会話");
interruptList
= new ListBox(ListBox.SINGLE_SELECT, 2);
interruptButton
= new Button("切替");
sendMessage("");
layoutMgr.begin(HTMLLayout.RIGHT);
mainPanel.add(titleLabel);
layoutMgr.begin(HTMLLayout.LEFT);
mainPanel.add(userList);
mainPanel.add(chatArea);
mainPanel.add(talkText);
mainPanel.add(talkButton);
layoutMgr.br();
mainPanel.add(interruptList);
mainPanel.add(interruptButton);
layoutMgr.end();
makeTimeTimer();
makeHeatbeatTimer();
Display.setCurrent((Frame)mainPanel);
}
public void resume() {
lock
= 0;
makeTimeTimer();
makeHeatbeatTimer();
}
public void softKeyPressed(int key) {
Frame
f = Display.getCurrent();
if
(f == mainPanel) {
if (key == Frame.SOFT_KEY_1) {
sendTerminateMessage();
terminate();
}
}
}
public void softKeyReleased(int key) {}
public void componentAction(Component
source, int type, int param) {
if(source
== talkButton && type == ComponentListener.BUTTON_PRESSED) {
String
talk = talkText.getText();
if(lock
== 1) {
makeWaitTimer(WAIT_TYPE_TALK);
}
else {
int
nowRoomId = getRoomId();
sendMessage(talk);
uncheckUserList();
talkText.setText("");
if(talk!=null
&& talk.length()>0) {
resetTime(nowRoomId,
getRoomId());
}
}
}
else
if(source == interruptButton && type ==
ComponentListener.BUTTON_PRESSED) {
if(item.interrupts
!= null && item.interrupts.size() > 0) {
int
i = interruptList.getSelectedIndex();
if(i
>= 0 && item.interrupts.size() >= i) {
Interrupt
interrupt = (Interrupt)item.interrupts.elementAt(i);
int
nowRoomId = getRoomId();
item.communications.room.id
= interrupt.room.id;
if(lock
== 1) {
makeWaitTimer(WAIT_TYPE_INTERRUPT);
}
else {
uncheckUserList();
sendMessage("");
talkText.setText("");
uncheckInterruptList();
resetTime(nowRoomId,
interrupt.room.id);
}
}
}
}
else
if(source == interruptList && type == ComponentListener.SELECTION_CHANGED)
{
int
i = interruptList.getSelectedIndex();
if(i
>= 0 && item.interrupts.size() >= i) {
Interrupt
interrupt = (Interrupt)item.interrupts.elementAt(i);
interruptSelectedRoomId
= interrupt.room.id;
}
}
}
public void timerExpired(Timer source)
{
if(source
== timeTimer) {
String
min = "--";
String
sec = "--";
if(timerFlag)
{
timerTime
+= 1;
min
= "" + (addedDispTime + timerTime) / 60;
sec
= "" + (addedDispTime + timerTime) % 60;
if(min.length()
== 1) {
min
= "0" + min;
}
if(sec.length()
== 1) {
sec
= "0" + sec;
}
}
String
labelText = "接続時間 " + min + ":" + sec;
titleLabel.setText(labelText);
}
else if(source == heartbeatTimer) {
if(lock
== 0) {
sendMessage("");
}
makeHeatbeatTimer();
}
else if(source == waitTimer) {
if(lock
== 0) {
if(waitType
== WAIT_TYPE_TALK) {
componentAction(talkButton,
ComponentListener.BUTTON_PRESSED, 0);
}
else if(waitType == WAIT_TYPE_INTERRUPT) {
componentAction(interruptButton,
ComponentListener.BUTTON_PRESSED, 0);
}
}
else {
makeWaitTimer(waitType);
}
}
}
private void makeTimeTimer() {
timeTimer
= new Timer();
timeTimer.setTime(1000);
timeTimer.setRepeat(true);
timeTimer.setListener(this);
timeTimer.start();
}
private void makeHeatbeatTimer() {
heartbeatTimer
= new Timer();
heartbeatTimer.setTime(heatbeatTime);
heartbeatTimer.setRepeat(false);
heartbeatTimer.setListener(this);
heartbeatTimer.start();
}
private void makeWaitTimer(int type) {
waitType
= type;
waitTimer
= new Timer();
waitTimer.setTime(100);
waitTimer.setRepeat(false);
waitTimer.setListener(this);
waitTimer.start();
}
private void resetTime(int nowRoomId,
int reqRoomId) {
timerFlag
= true;
if(nowRoomId
!= reqRoomId) {
Integer
nowKey = new Integer(nowRoomId);
Integer
reqKey = new Integer(reqRoomId);
Integer
savedTime = new Integer(addedDispTime + timerTime);
timerTimes.put(nowKey,
savedTime);
addedDispTime
= (timerTimes.get(reqKey)!=null) ? ((Integer)timerTimes.get(reqKey)).intValue()
: 0;
timerTime
= 0;
}
}
}
図28において、携帯電話でアプリケーションが起動されると、メッセージ確認用のタイマがセットされる(S2802)。このタイマがセットされるイベント発生を受けて、httpリクエストが生成される(S2804)。このhttpリクエストは、特定の時間の経過、端末からのチャットメッセージ送信、発着信時、または会話終了時等を含む携帯電話端末側でのイベント発生時に送信される。
生成されたhttpリクエストがアプリケーションサーバ1に送信されると(S2805)、アプリケーションサーバ1からデータベースサーバ6へ受信情報登録リクエストが発信され(S2807)、それに基づいてデータベースサーバ6で受信情報が登録される(S2808)。次にアプリケーションサーバ1で送信情報検索リクエストがデータベースサーバ6へ発信されると(S2809)、送信情報が検索される(S2810)。検索結果はデータベースサーバ6からアプリケーションサーバ1に送信されてXML化され(S2811)、該XMLデータは携帯電話へ送信される(S2813)。携帯電話で受信したXMLデータを解析し(S2813)、その内容に基づいて携帯電話の画面に表示される(S2815)。
携帯電話端末側で再度、上記イベントが発生すると、同様にhttpリクエストが生成され、上記と同様の手順で携帯電話の画面に表示される。
発着信が完了し、着信者が最初のメッセージを返してきた段階のタイマをセットすると、タイマの時間から会話時間を算出する。算出された会話時間は携帯電話端末の画面に表示される。
本発明では上記のように、httpリクエストに対する返答は、XMLの形式で戻す。通信端末側では、XMLレイアウトからXML分を解析し、解析した内容に基づいて画面が表示される。図23は、本発明の一実施形態に係るメッセージ受信リクエストのXMLレイアウトを示す概略図である。本発明の一実施形態におけるXMLレイアウトは、次のとおりである。
XMLレイアウト(図23対応)
1.
共通パラメータ(result)
(ア)
出力結果(status)
httpリクエストに対するサーバの処理結果が表示される
Success(成功)
/ NotFount(URL,オペレーションエラー) /
ServerError(サーバ側エラー:versionエラー、データベース登録失敗等)
/
ClientError(クライアント側エラー:機器エラー等)
(イ)
出力結果メッセージ(message)
エラーメッセージが表示。
2.
オーナー情報(owner → user)
(ア)
ユーザID(id)
端末利用者のユーザID
(イ)
ユーザ名(name)
端末利用者のユーザ名
(ウ)
ユーザ向けメッセージ(message)
ユーザに対するメッセージを表示。
アプリのバージョンアップ情報やシステム運営側からのメッセージを表示する。
3.
お友達情報(friend → user)
(ア)
ユーザID(id)
お友達のユーザID
(イ)
ユーザ名(name)
お友達のユーザ名
(ウ)
接続状況(status)
お友達の接続状態
1:接続中
2:会話中(同一会話に)
3:書き込み中(同一会話に)
4:会話中(別の会話に)
9:停止中
4.
会話相手情報(communication → room)
(ア)
ルームID(id)
会話中のルームID
ルームIDが空白の場合、会話無し(サーバへの定期問い合わせ)
または、発着信
(イ)
ルーム名(name)
コミュニティの会話の場合、名称が表示される。
(ウ)
ユーザ情報(user)
(1)ユーザID(id)
会話相手のユーザID
(2)ユーザ名(name)
会話相手のユーザ名
(3)接続状況(status)
会話相手の接続状態
1:接続中
2:会話中(同一会話に)
3:書き込み中(同一会話に)
4:会話中(別の会話に)
9:停止中
5.
メッセージ(messages → message)
(ア)
ユーザID(id)
メッセージ送信者のユーザID
(イ)
ユーザ名(name)
メッセージ送信者のユーザ名
(ウ)
メッセージ(comment)
メッセージ送信者が発信したメッセージ
6.
メッセージ(interrupts → interrupt)
(ア)
ルームID(id)
割込みルームID
(イ)
ルーム名(name)
コミュニティの会話の場合、名称が表示される。
(ウ)
ユーザ情報(user)
(1)ユーザID(id)
割込み会話に参加しているユーザID
(2)ユーザ名(name)
割込み会話に参加しているユーザ名
(3)接続状況(status)
割込み会話に参加しているユーザの接続状態
1:接続中
2:会話中(同一会話に)
3:書き込み中(同一会話に)
4:会話中(別の会話に)
9:停止中
XMLレイアウト(図23対応)
1.
共通パラメータ(result)
(ア)
出力結果(status)
httpリクエストに対するサーバの処理結果が表示される
Success(成功)
/ NotFount(URL,オペレーションエラー) /
ServerError(サーバ側エラー:versionエラー、データベース登録失敗等)
/
ClientError(クライアント側エラー:機器エラー等)
(イ)
出力結果メッセージ(message)
エラーメッセージが表示。
2.
オーナー情報(owner → user)
(ア)
ユーザID(id)
端末利用者のユーザID
(イ)
ユーザ名(name)
端末利用者のユーザ名
(ウ)
ユーザ向けメッセージ(message)
ユーザに対するメッセージを表示。
アプリのバージョンアップ情報やシステム運営側からのメッセージを表示する。
3.
お友達情報(friend → user)
(ア)
ユーザID(id)
お友達のユーザID
(イ)
ユーザ名(name)
お友達のユーザ名
(ウ)
接続状況(status)
お友達の接続状態
1:接続中
2:会話中(同一会話に)
3:書き込み中(同一会話に)
4:会話中(別の会話に)
9:停止中
4.
会話相手情報(communication → room)
(ア)
ルームID(id)
会話中のルームID
ルームIDが空白の場合、会話無し(サーバへの定期問い合わせ)
または、発着信
(イ)
ルーム名(name)
コミュニティの会話の場合、名称が表示される。
(ウ)
ユーザ情報(user)
(1)ユーザID(id)
会話相手のユーザID
(2)ユーザ名(name)
会話相手のユーザ名
(3)接続状況(status)
会話相手の接続状態
1:接続中
2:会話中(同一会話に)
3:書き込み中(同一会話に)
4:会話中(別の会話に)
9:停止中
5.
メッセージ(messages → message)
(ア)
ユーザID(id)
メッセージ送信者のユーザID
(イ)
ユーザ名(name)
メッセージ送信者のユーザ名
(ウ)
メッセージ(comment)
メッセージ送信者が発信したメッセージ
6.
メッセージ(interrupts → interrupt)
(ア)
ルームID(id)
割込みルームID
(イ)
ルーム名(name)
コミュニティの会話の場合、名称が表示される。
(ウ)
ユーザ情報(user)
(1)ユーザID(id)
割込み会話に参加しているユーザID
(2)ユーザ名(name)
割込み会話に参加しているユーザ名
(3)接続状況(status)
割込み会話に参加しているユーザの接続状態
1:接続中
2:会話中(同一会話に)
3:書き込み中(同一会話に)
4:会話中(別の会話に)
9:停止中
本発明において、汎用的な受信方式であるXMLによりデータのやりとりを行うことで、通信端末の機器の種類やプログラム言語に対する通信性の依存度が低くなり、さらに安定した状態での使用が可能となる。また、チャットAPIを外部に公開することもできる。
本発明の上記システムにより、携帯電話の各キャリアでチャットアプリケーションの稼働が可能となる。家や仕事場でコンピュータを使用したチャットも、外出先で携帯電話を使用したチャットも可能であるため、場所を選ばず、好きな時間にその時必要な情報をやりとりすることができる。
次に、本発明に係る一実施形態におけるNTTDocomo、au、SoftBank以外の通信端末でのチャットアプリケーションシステムについて説明する。
NTTDocomo、au、SoftBank以外の通信端末において、まず通信端末側のログイン画面から、ユーザIDを取得する。wwwサーバ側でHTML文中にメッセージ確認用タイマが埋め込まれる。次に、wwwサーバ6からアプリケーションサーバ1へhttpリクエストが送信される。アプリケーションサーバ1側でhttpリクエストのレスポンスを受け取ると、アプリケーションサーバ1で処理が実行され、XMLレスポンスがwwwサーバ6へ返される。wwwサーバ6がアプリケーションサーバ1から受信したXMLデータを解析し、この結果が通信端末側のブラウザが受け取って画面(HTML)を生成し画面を表示する。
通信端末においてアプリケーションのURLを表示されるとログイン画面が表示される。ユーザ名とパスワードを入力し、ログインボタンをクリックすると、wwwサーバ6経由でデータベースサーバ5のユーザ情報と照合が行われ、認証された場合には、チャット画面が表示される。認証されなかった場合には、エラーメッセージが表示される。
アプリケーションサーバ1とのメッセージの定期的な交換は、htmlのmetaタグにあるrefresh機能を使って実現している。refresh機能を利用できないブラウザに於いては、JavaScriptを使って実現する。
アプリケーションサーバ1に対して、httpリクエストに対する返答が一定時間内に返ってこなかった場合は、再送信を行う。一定回数再送信しても返答が返ってこない場合は、会話を終了する。一定回数の再送信中に応答が返ってきた場合には、正常にチャットができていた時点のルーム番号、チャット開始からの経過時間をメモリが記憶しているので、メモリからの復旧処理を行い、会話を継続させる。
本発明の一実施態様においては、NTTDocomo、au、SoftBankを含む各キャリアの携帯電話端末からサーバへの送信手段としてhttpを使用している。汎用的な伝送手段であるhttpリクエストのGET方式を使用することで、各キャリアの様々な携帯電話からチャットを可能にする。また、汎用性のあるGET方式の採用は、各キャリアの携帯電話メーカーで随時行われるバージョンアップにも対応が可能となる。さらに、携帯電話でチャットを行っている最中に、電波状態や電話、メール等でアプリケーションの中断、またはチャット不能の状態が起こっても、一定時間内にアプリケーションを再開すれば、中断前の状態に復旧することができる。
次に、本発明に係る一実施形態におけるチャットを平行して行うリアルタイム翻訳システムの動作について説明する。
本発明によれば、会員登録を行う時に、ユーザの言語を設定することが可能である。言語を入力すると、このデータはデータベースサーバ5のユーザ情報記憶部のユーザデータテーブルに蓄積される。リアルタイムチャットの会話において、設定されたチャット受信者の言語がチャット送信者の言語と異なる場合、アプリケーションサーバ1の翻訳プログラムが実行される。
翻訳は送信者の言語から、あらかじめ設定された発信者の言語に翻訳される。翻訳対象言語は、アラビア語、アルバニア語、イタリア語、インドネシア語、ウクライナ語、エストニア語、オランダ語、カタロニア語、ガリシア語、ギリシャ語、クロアチア語、スウェーデン語、スペイン語、スロバキア語、スロベニア語、セルビア語、タイ語、タガログ語、チェコ語、デンマーク語、ドイツ語、トルコ語、ノルウェー語、ハンガリー語、ヒンディー語、フィンランド語、フランス語、ブルガリア語、ベトナム語、ヘブライ語、ポーランド語、ポルトガル語、マルタ語、ラトビア語、リトアニア語、ルーマニア語、ロシア語、英語、韓国語、中国語を含む各国言語とする。翻訳した結果は、データベースサーバ5の会話情報記憶部5−A−2に保存され、受信者が使用する通信端末からメッセージの確認が行われた際に、データベースサーバ5からアプリケーションサーバ1が翻訳された情報を受け取り、それを受信者が使用する通信端末に表示する。
本発明の上記システムでは、母国語でチャットをするのとまったく変わらない動作により、国内にいながらにして海外と世界規模でのチャットも容易に可能となる。様々な分野の情報は、国内に限定されることなく、広く世界中からも求められている。本発明はそのニーズを十分に且つ老若男女を問わず容易に満たすものである。
さらに、本発明の上記システムにおいて、ユーザの希望があれば会話相手が母国語を使って入力した、翻訳前の会話情報も保存し閲覧可能としてもよい。これによって、外国語を学習したいと考えるユーザは、実際に自分が使用する言語での会話内容と、自分が学習したい外国語との内容を、チャット後に時間をかけて対比しつつ確認することが可能となる。
次に、本発明に係る一実施形態におけるチャットの発着信システムの動作について説明する。
本発明において、チャットにおける発着信システムとは、チャットを行う相手を呼び出す発信機能と、チャット相手が呼出に応答するための着信システムを指す。図5において、チャットを開始する際、相手を呼び出す場合は、ユーザAの使用する通信端末のメニュー画面506から新規コンタクト507を選択し、ユーザの検索画面を表示する。ユーザBを検索して着信ボタンを押すと着信情報がアプリケーションサーバ1に送信される。
同時にデータベースサーバ5の会話ログテーブル5−A−11、会話データテーブル5−A−21に発信情報が登録される(図6参照)。
発信相手側の端末からアプリケーションサーバ1に通信が発生したときに、データベースサーバ5に格納された会話データの情報が読み込まれ、着信情報が送信される。着信ユーザAが、着信情報を認識し、着信情報が表示されているメッセージエリア504をクリックすると、着信した情報がアプリケーションサーバ1に送信される。同時にデータベースサーバ5の会話ログテーブル5−A−11、および会話データテーブル5−A−21に着信情報が登録される。発信側通信端末に着信情報が表示された後、チャットが開始される。
もし、一定時間着信が無かった場合には、留守番メッセージ入力画面が表示される。メッセージを入力して送信を行うと、アプリケーションサーバ1にメッセージが送信される。アプリケーションサーバ1はメッセージをデータベースサーバ5の会話ログテーブル5−A−11、会話データテーブル5−A−21に登録する。着信ユーザ側の端末からアプリケーションサーバ1に通信が行われた際に、会話データテーブル5−A−21の留守番メッセージを検索し、通信端末にメッセージを送信する。着信側ユーザのメッセージエリア504に着信メッセージが表示され、そのメッセージをクリックすると、留守番メッセージの照会が可能となる。
留守番メッセージの照会が可能であることによって、その時にチャットに応答できなくても、時間を置いて双方が都合の良い時にチャットを行うことができる。本システムは、チャットをその場限りの関係に終始するものではなく、継続して交流し情報交換を行っていくことができるコミュニケーションツールとして活用することを可能とする。
また、会話を終了する場合には、メニュー画面から会話終了を選択する。会話終了は発着信側双方のユーザで実行する事ができる。会話終了ボタンをクリックすると、会話終了メッセージがアプリケーションサーバ1に送信される。同時に会話ログテーブル5−A−11、会話データテーブル5−A−21に情報が送信される。相手側がアプリケーションサーバ1に問い合わせを行った際に、会話が終了された情報を受け取ると、通信端末に送信される。端末側では、相手が会話を終了した旨が表示される。会話していたユーザ全員が会話を終了すると、一連の会話が完了したこととなる。
会話終了は、一定時間通信が無かった場合にも適用される。通信端末からアプリケーションサーバ1へメッセージの確認が行われた際に、前回メッセージを送受信してからどの位時間が経過したか計算し、一定時間を上回る時間にメッセージの送受信が無い場合に会話終了と判断し、同時に会話ログテーブル5−A−11、会話データテーブル5−A−11に会話終了情報を登録し端末に通知する。
本システムにより、チャットのアプリケーションを起動していない場合でも、今チャットしたい相手の状況を把握した上でチャットの参加を要請することが可能となる。個人個人の知りたいこと、人と話題を共有したいことは、一日のうちでも刻一刻と変化することが多く、その欲求により的確に適合することが可能となる。
また、上記の発着信システムは、単に個人のチャットで語り合いたいという欲求を解消するためだけでなく、話題が旬であるうちに他者と共有することでより闊達な議論が実現できる。さらにこのログが公開されれば、情報としての価値も高まることとなり、さらに多くの人に役立つ内容を提供することが可能となる。
さらに、次に、本発明に係る一実施形態におけるチャットの入力中通知システムの動作について説明する。
リアルタイムチャットアプリケーションで各端末から会話を書き込む際は、会話ボタンをクリックする(図5 5−2参照)。会話ボタンがクリックされた時点で、会話の書き込みが開始されたことをアプリケーションサーバ1に送信する。送信された情報はデータベースサーバ5に蓄積される。会話相手がアプリケーションサーバ1にメッセージの確認を行ったときにデータベースサーバ5にある書き込み中の情報を受け取り、通信端末に送信する。通信端末側は書き込み中の表示を行う。
チャット中に相手の入力状況が分かることで、お互いに集中してチャットを行うことができ、よりスムーズな議論の進行が可能となる。また、相手に突発的なトラブルが起こったり、またはチャットをしながら寝てしまったりなどにも、相手の入力状況が分かれば入力されない状態が長く続くことが分かるため、早い段階で察知することが可能となり、トラブルへの対処を行ったり、余分な通信料の課金を防いだりすることができる。
次に、本発明に係る一実施形態の会話時間計測システムの動作について説明する。
図6において、会話の発着信が完了し、着信者からの会話を発信者が最初に受け取った時点から会話時間の計測を開始する。会話終了または、一定時間メッセージのやりとりが行われなかった場合、会話時間の計測が終了する。
この時間を通話時間と定義し、特定のユーザとの会話に課金する際に利用できる。会話中に電話や電子メールがあった場合は、計測を継続するが、一定時間応答が無い場合には、会話を終了し、会話終了迄の時間を通話時間とする。通話料への課金は発信側のユーザから徴収され、一定の割合によって部分的に着信を受けたユーザへと支払われる。
これによって、それぞれの個人が持つ専門性とその情報に価値が見出され、与えられる。発信する側のユーザは、聞きたいこと、知りたいことをそれに詳しいユーザにチャットで質問する。音声ではなく、文字によるやりとりであるため、聞き漏らすこともなくより高度な理解を得ることが可能となる。また、その質問に対してチャットで答える側のユーザは、自分の持つ知識や情報を社会に役立てることが可能となり、さらにそれに対して対価が支払われるため、あらゆる事業のコンサルティングの場としても活用でき、経済の活性化にもつながる。
次に、本発明に係る一実施形態である位置情報把握システムについて説明する。
NTTDocomo、au、SoftBankを含む通信端末に搭載されたGPS機能を利用し、位置情報をアプリケーションサーバ1に送信して、データベースサーバ5の会員情報に位緯度・経度を登録する。これによって、チャット相手に現在地を知らせることや、相手との距離を測定したり、近くにいるお友達を検索し会話したりすることが可能となる。
本発明の上記システムによって、一般的には一人の閉鎖的な世界にこもり、人との関係性が希薄となりがちなチャットシステムであるが、近くにいるユーザが一目瞭然で分かるようになることで、地域や各エリア内で人と人とのつながりが生まれ、より解放的なコミュニティとして発展していくきっかけとなりうる。
さらに、本発明の上記位置情報把握システムは、ある一定の地域内にいれば、同じチャットに参加して発言できる公開会議機能を有してもよい。これによって、1つの議題に対して大勢で議論し意見しあうことも可能となり、有意義で建設的な議論の場として活用することもできる。これは、位置情報システム(GPS)を用いて、特定の地域にいる利用者全員を抽出して該当者一覧を表示する機能と、当該該当者全員に対して同報しもしくはその一部の特定の人間に対して発信する機能とを備えることで、本システムによるチャットを利用できるようにする。これによれば、たとえば犯罪が起こって犯人が一定の領域に逃亡している際に犯人確保する場合とか、近所の人とのコミュニケーションをとりたい場合とかに有用である。この場合、位置情報付きでメッセージ(チャットへの参加呼びかけ、参加要求もしくはチャットで話された内容)を送信すると、当該メッセージがテロップで一画面に流される機能をさらに備えてもよい。これにより、同じエリア内のユーザのチャットに、そのテロップに興味を持った人が参加することで、開かれたチャット、明るいチャットが実現され、それにより地域のコミュニケーションが活性化することが期待される。
なお、本発明は上述した実施形態に限定されるものではなく、本発明の主旨を逸脱しない範囲内で種々変更して実施することが可能である。たとえば、上記とは別の実施形態に係るリアルタイムチャットシステムにおいて、1対1会話機能を利用する際の利用者端末の画面イメージとして、たとえば図30に示すような構成とすることも可能である。さらに、別の実施形態に係るリアルタイムチャットシステムにおいて、トークログ表示機能を利用する際の利用者端末の画面イメージとして、たとえば図31に示すような構成とすることも可能である。利用者にとっての利便性が高まる可能性がある。
また、別の実施形態に係るリアルタイムチャットシステムにおいて、オープントーク会話機能を利用する際の利用者端末の画面イメージとして、たとえば図32に示すような構成とすることも可能である。さらに、別の実施形態に係るリアルタイムチャットシステムにおいて、公開されたチャットデータについての検索機能を利用する際の利用者端末の画面イメージとして、たとえば図33に示すような構成とすることも可能である。
さらにまた、別の実施形態に係るリアルタイムチャットシステムにおいて、四人同時の会話機能を利用する際の利用者端末の画面イメージとして、たとえば図34に示すような構成とすることも可能である。さらに、別の実施形態に係るリアルタイムチャットシステムにおいて、有料トーク機能を利用する際の利用者端末の画面イメージとして、たとえば図35に示すような構成とすることも可能である。
また、上述したものは本願にかかる技術思想を具現化するための実施形態の一例を示したにすぎないものであり、他の実施形態でも本願にかかる技術思想を適用することが可能である。たとえば、上記の説明では主に、携帯電話、PCを実施形態として取り入れるものを説明したが、本願に係る思想は、任意の複数または組み合わせプロセッサ又は記憶デバイスを装備するもの、コンピュータシステム、掌タイプコンピュータ、ラップトップ/ノートブックコンピュータ、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ならびに、これらの処理システムネットワーク組合わせ、iPhone(登録商標)、PHS、モバイルフォン等によって実現するものであってもよい。
さらにまた、本願発明を用いて生産される装置、方法、システムが、その2次的生産品に登載されて商品化された場合であっても、本願発明の価値は何ら減ずるものではない。
以上詳述したように、音声ではなく文字データのやりとりで行われるチャットを、各キャリアの携帯電話、PHSやPDA、またはコンピュータを含むインターネットブラウザを経由して閲覧が可能な通信端末で可能とすることにより、媒体を限定することなく、多くの利用者によって享受できるチャットサービスを実現することができる。
相手の声を実際に聞き、さらに自分の声で応答する電話は、現代において非常に便宜性の高いコミュニケーションの手段であるが、音声(口調)には、感情がストレートに伝わりやすい傾向があり、直接的な関わりが煩わしく感じる場合には敬遠されることが多い。しかし、文字データによるチャットは、電話よりも感情の伝わり方が鈍くなるため、それゆえに見知らぬ人、初めて情報交換を行う人、直接やりとりすることが億劫な場合にとても有効な手段となる。
現代は、携帯電話やコンピュータなどを含む通信機器の普及率が増加する一方で、人と人との関係は疎遠となり、自殺者は年々増加の一途をたどっている。誰かに相談したい、誰かと話をしたいと思う場合、直接的な電話よりも、チャットの方が無理なく他者とつながることができ自分の心情を吐露することが可能となる。
本発明におけるチャットシステムは、上述のようにインターネットブラウザを経由して閲覧が可能な通信端末で可能であるため、媒体を限定せず、誰でも利用することが可能である。上記のように本発明のチャットシステムは、ビジネス関連の情報交換、家族や友人間での近況報告、または悩みを相談するコンサルティングを含む、あらゆるコミュニケーションの場として活用できる。また、各グループで行われたチャットの内容は、その場限りの情報交換としてだけではなく、公開し、キーワードによる検索も可能にすることで、同じようにその話題に興味を持つ人も会話内容を閲覧し、情報を共有することができる。これによって、ビジネス上の相談から、心の悩みまで、本発明のチャットシステムを活用して解決した事例は、公開されることによって、同様の疑問や悩みを持つ人々を苦悩から解放することにもつながる。
さらに、消費者動向に大きな力を持つ消費者自身の生の声「口コミ」を、公開会話から検索して探ることもできるため、より大規模で高度な市場調査さらには市場獲得も可能となる。また、チャットと並行して翻訳が行われるため、チャットを行う相手の言語を気にすることなく誰でも世界中の人と情報交換ができ、チャットの対象やテーマも国内に限定されることなく広げることが可能となる。さらに、本発明の会話時間計測システムを通話時間による課金システムとして利用することが可能となるため、あるテーマについて専門的な知識を有する人は本システムをコンサルティングの場として活用することが可能となり、情報を必要とする人にとっては実際に会って話をするよりも、気軽にチャットによる利用ができ、かつコンサルティングを行う側にとっても事務所などを構える投資を行わずにサービスの提供ができるため、より多くの、また細部にわたったニーズに応えることが可能となり、非常に大きなマーケティングを生み出すことが現実的に期待できる。このように、本発明は情報産業を初めとする、人と人とのコミュニケーションが行われるあらゆる産業において利用可能性を有する。
Claims (31)
- インターネットを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされた情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信したチャットに係る文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された情報の少なくとも一部を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記wwwサーバは前記チャットに係る文字情報をやりとりした前記複数の通信端末に対して該チャットに係る文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンを備え、
前記アプリケーションサーバは、前記公開を許容する指令を前記チャットに係る文字情報に関わる全ての前記複数の通信端末から受けた場合に前記データベースサーバに蓄積された前記チャットに係る文字情報の少なくとも一部を前記wwwサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記wwwサーバにて表示可能とされたチャットに係る文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とするコミュニケーションシステム。 - インターネットブラウザを経由してチャット及びメールを含む文字による情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャット及び/もしくはメールに係る文字情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された文字情報の少なくとも一部を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記wwwサーバは前記文字情報をやりとりした前記複数の通信端末に対して該文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンを備え、
前記アプリケーションサーバは、前記公開を許容する指令を前記文字情報に関わる全ての前記複数の通信端末から受けた場合に前記データベースサーバに蓄積された前記文字情報の少なくとも一部を前記wwwサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記wwwサーバにて表示可能とされた文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とするコミュニケーションシステム。 - インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャットに係る文字情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記チャットに係る文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された情報を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記リアルタイムチャットシステムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記データベースサーバに格納されたチャットに係る文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とするコミュニケーションシステム。 - インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャット及び/もしくはメールに係る文字情報を受信するアプリケーションサーバと、前記アプリケーションサーバで受信した前記文字情報を蓄積するデータベースサーバと、前記データベースサーバに記憶された文字情報を表示するwwwサーバとを具備するリアルタイムチャットシステムにおいて、
前記リアルタイムチャットシステムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記データベースサーバに格納された文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とするコミュニケーションシステム。 - 定期的に前記データベースサーバにメッセージの受信の有無を問い合わせる問合せ手段と、前記問合せにより受け取った結果を画面に表示する表示手段とをさらに具備することを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記リアルタイムチャットシステムは、
位置情報システム(GPS)と、
前期位置情報システムを用いて特定の地域にいる全通信端末を抽出して該当全端末に係る利用者一覧を表示するルーチンと、
前記該当全端末に対しての同報もしくはそのうちの特定の端末に対しての発信を選択的に実行するルーチンと
をさらに備えることを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。 - 前記チャットに関わるメッセージが前記該当全端末の画面にテロップで表示させる機能をさらに備えることを特徴とする請求項6記載のコミュニケーションシステム。
- 前記アプリケーションサーバと前記wwwサーバは1台のサーバが兼務することを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記チャットが行われる場を意味するルームに係る複数の画面を重畳的に表示できる複数ルーム機能と、第1のルームに係る画面から第2のルームに係る画面に切り替える切替機能とをさらに具備することを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、携帯電話、PHS、PDA、スマートフォンおよびコンピュータを含む通信可能な端末であることを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記アプリケーションサーバは、前記複数の通信端末の少なくとも一つと会話情報の交換を行い、かつ前記データベースサーバに情報の蓄積を依頼するアプリケーションをさらに備えることを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記アプリケーションサーバは、前記チャット内容をリアルタイムで所望の言語に翻訳する翻訳処理部をさらに備えることを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記チャット内容は、前記翻訳前の情報及び該翻訳後の情報が併記して前記通信端末に表示可能であることを特徴とする請求項12記載のコミュニケーションシステム。
- 前記データベースサーバは、会員情報、および/または会話情報の記憶を行い、該記憶された情報は利用者からの削除指示を受ける場合を除いて削除されず、蓄積され検索に供され得ることを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記wwwサーバは、前記会員情報の管理及び/もしくは表示、前記データベースサーバに格納された文字情報の管理及び/もしくは表示、ユーザ情報の管理及び/もしくは表示、画像ファイルの管理及び/もしくは表示、公開された会話の検索の各機能をコンピュータに果たさせるルーチンを備えることを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記携帯電話は、各キャリアに対応する携帯電話用チャットアプリケーションを起動させ、或いはブラウザ経由でチャットを行うことを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記通信端末におけるPHS、PDA、スマートフォンまたはコンピュータは、前記wwwサーバに配置されたチャットアプリケーションのプログラムを実行し、その結果をPHS、PDA、スマートフォンまたはコンピュータのブラウザもしくはプログラムが受信して画面表示することを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記通信端末は、前記アプリケーションサーバに対し、所与の時間の経過、前記通信端末からのチャットに係る文字情報の送信、発着信、および/または会話終了を含む所定のイベントが発生した際、httpリクエストを送信することを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、httpリクエストに対する返答が一定時間ない場合、再度前記アプリケーションサーバへhttpリクエストを送信することを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、前記アプリケーションサーバに対してhttpリクエストに対する返答を一定回数再送信してもなお返答がない場合、会話を終了することを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、httpリクエストを一定回数再送信したのち、前記アプリケーションサーバから応答が返ってきた場合には、正常にチャットを行っていた時点のルーム番号、チャット開始時刻を含む前記データベースサーバに格納された会話情報を復旧させ、会話の継続を行うことを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、前記アプリケーションサーバに対するhttpリクエストの送信をGET方式で行うことを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記携帯電話は、前記携帯電話用アプリケーションの起動において、電波状態の変動、または他の電話の着信およびメールの受信を含む所定のイベントによってアプリケーションが中断した場合、一定時間内でのアプリケーションの再起動により、中断前の状態に復旧できることを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、前記アプリケーションサーバにhttpリクエストを送信するが、httpリクエストに対する返答はXML形式であることを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記通信端末は、前記アプリケーションサーバからhttpリクエストに対する返信をXML形式で受信するが、XMLレイアウトからXML文を解析し、その内容に基づいて画面表示を行うことを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 会話相手を呼び出す発信機能、および/または会話相手が呼出に応答する着信機能をさらに備えることを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記チャットアプリケーションを起動しチャット内容を入力する際、チャット内容の入力が開始されかつ入力中であることを前記アプリケーションサーバ経由で前記データベースサーバに送信して情報を格納し、会話相手がメッセージの確認を行った際に前記データベースサーバ内の前記情報を会話相手の通信端末に送信することを特徴とする請求項16もしくは17記載のコミュニケーションシステム。
- 任意の通信端末のアプリケーションに係る現在の稼働状況を把握するための現状把握手段と、前記現状把握手段によって把握された現状に応じた表示を行う現状表示手段とをさらに具備することを特徴とする請求項1乃至4記載のうち1項記載のコミュニケーションシステム。
- 前記リアルタイムチャットシステムは、発信者からの会話を受信者が最初に着信を了解した時点から、会話終了、または一定時間メッセージのやりとりが行われなかった時点までを少なくとも会話時間として計測する会話時間計測機能をさらに備えることを特徴とする請求項1もしくは3記載のコミュニケーションシステム。
- 前記会話時間計測機能により計測された時間に応じて課金する課金機能をさらに具備することを特徴とする請求項29記載のコミュニケーションシステム。
- インターネットブラウザを経由して情報交換が可能な複数の通信端末と、前記複数の通信端末間でやりとりされたチャットデータを受信する第1のサーバと、前記第1のサーバで受信した前記チャット及び/もしくはメールに係る文字情報を蓄積する第2のサーバと、前記第2のサーバに記憶された情報を表示する第3のサーバサーバとを具備するコミュニケーションシステムにおいて、
前記第1のサーバは前記文字情報をやりとりした前記複数の通信端末に対して該文字情報の記録の公開を許容する指令を受ける公開許可受付ルーチンと、前記公開を許容する指令を前記文字情報に関わる全ての前記複数の通信端末から受けた場合に前記第2のサーバに蓄積された前記文字情報を前記第3のサーバにて表示可能にする表示可能化ルーチンを備え、
前記システムは、所望の検索キーデータを受け付ける検索キー受付ルーチンと、前記受けつけられた検索キーデータを検索キーとして前記第3のサーバにて表示可能とされた文字情報について検索する検索ルーチンと、前記検索の結果を前記検索キーデータを受け付けた先に転送する転送ルーチンとを備えることを特徴とするコミュニケーションシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/007322 WO2011077501A1 (ja) | 2009-12-26 | 2009-12-26 | コミュニケーションシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2011077501A1 true JPWO2011077501A1 (ja) | 2013-05-02 |
Family
ID=44195065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011547088A Pending JPWO2011077501A1 (ja) | 2009-12-26 | 2009-12-26 | コミュニケーションシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2011077501A1 (ja) |
WO (1) | WO2011077501A1 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5981823B2 (ja) * | 2012-09-28 | 2016-08-31 | 株式会社コナミデジタルエンタテインメント | メッセージ表示システム、制御方法、およびプログラム |
JP5917373B2 (ja) * | 2012-11-12 | 2016-05-11 | 株式会社コナミデジタルエンタテインメント | 表示装置、制御方法、およびプログラム |
JP6102016B2 (ja) * | 2012-11-12 | 2017-03-29 | 株式会社コナミデジタルエンタテインメント | 表示装置、およびプログラム |
JP6194459B2 (ja) * | 2012-11-26 | 2017-09-13 | 株式会社コナミデジタルエンタテインメント | 表示装置、およびプログラム |
JP6447030B2 (ja) * | 2013-11-27 | 2019-01-09 | 株式会社リコー | 情報処理システムおよび情報処理方法 |
CN104734940A (zh) * | 2013-12-23 | 2015-06-24 | 华为技术有限公司 | 一种用于即时通讯工具的信息显示方法和用户终端 |
US10205754B2 (en) | 2014-02-13 | 2019-02-12 | Ricoh Company, Ltd. | Transmission system, transmission management apparatus and non-transitory computer-readable information recording medium |
JP6349764B2 (ja) * | 2014-02-13 | 2018-07-04 | 株式会社リコー | 伝送システムおよびプログラム |
US20170093785A1 (en) * | 2014-06-06 | 2017-03-30 | Sony Corporation | Information processing device, method, and program |
JP5807092B1 (ja) | 2014-06-17 | 2015-11-10 | 株式会社 ディー・エヌ・エー | 音声チャット管理装置及び方法 |
CN105656706B (zh) * | 2014-11-14 | 2020-09-15 | 北京通达无限科技有限公司 | 业务数据的处理方法及设备 |
CN105991398A (zh) | 2015-02-04 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种即时通信im聊天记录的保存方法及装置 |
SG10201502719PA (en) * | 2015-04-07 | 2016-11-29 | Combuilder Fmit Pte Ltd | Method And User Interface For Project Management |
JP6159782B2 (ja) * | 2015-11-26 | 2017-07-05 | Line株式会社 | 情報処理装置の制御方法、情報処理装置および制御プログラム並びに端末の制御方法および端末制御プログラム |
JP7039118B2 (ja) * | 2017-06-29 | 2022-03-22 | 株式会社オプティム | コールセンター会話内容表示システム、方法及びプログラム |
JP6375039B1 (ja) * | 2017-07-21 | 2018-08-15 | テイク エイト インコーポレイテッド | プログラム、撮影方法及び端末 |
JP6934825B2 (ja) * | 2018-03-07 | 2021-09-15 | 株式会社Nttドコモ | 通信制御システム |
JP2019219891A (ja) * | 2018-06-20 | 2019-12-26 | Kotozna株式会社 | メッセージ送受信システム |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000181847A (ja) * | 1998-12-18 | 2000-06-30 | Fujitsu Ltd | 通信支援方法及び通信支援システム |
JP2001344184A (ja) * | 2000-03-31 | 2001-12-14 | Fujitsu Ltd | チャットシステム、オブジェクトサーバ、チャットオブジェクトコンテンツ記憶媒体、およびチャットオブジェクト管理プログラム |
JP2002259315A (ja) * | 2001-02-27 | 2002-09-13 | Fujitsu Ltd | 会議サーバプログラム |
JP2003058482A (ja) * | 2001-08-14 | 2003-02-28 | Fujitsu Ltd | エリアチャットルーム提供方法,端末側エリアチャット処理方法,エリアチャットルーム提供処理プログラム記録媒体,エリアチャットルーム提供装置 |
JP2003058481A (ja) * | 2001-08-10 | 2003-02-28 | Logo Vista Corp | 多言語チャットシステム |
JP2003085114A (ja) * | 2001-09-11 | 2003-03-20 | Bagujii Data:Kk | 携帯電話端末用チャットシステム |
JP2003296257A (ja) * | 2002-04-01 | 2003-10-17 | Nec Infrontia Corp | ネットワーク会議システム |
JP2003316740A (ja) * | 2002-04-25 | 2003-11-07 | Nippon Telegr & Teleph Corp <Ntt> | 通信再開サービスシステム、通信再開サービス方法、プログラム、および記録媒体 |
JP2005235118A (ja) * | 2004-02-23 | 2005-09-02 | Nippon Telegr & Teleph Corp <Ntt> | 情報抽出方法およびその装置 |
JP2008250889A (ja) * | 2007-03-30 | 2008-10-16 | Nifty Corp | コミュニティ管理システム |
JP2009169914A (ja) * | 2007-12-21 | 2009-07-30 | Taito Corp | サービス提供システム、サービス提供方法、及びコンピュータプログラム |
-
2009
- 2009-12-26 JP JP2011547088A patent/JPWO2011077501A1/ja active Pending
- 2009-12-26 WO PCT/JP2009/007322 patent/WO2011077501A1/ja active Application Filing
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000181847A (ja) * | 1998-12-18 | 2000-06-30 | Fujitsu Ltd | 通信支援方法及び通信支援システム |
JP2001344184A (ja) * | 2000-03-31 | 2001-12-14 | Fujitsu Ltd | チャットシステム、オブジェクトサーバ、チャットオブジェクトコンテンツ記憶媒体、およびチャットオブジェクト管理プログラム |
JP2002259315A (ja) * | 2001-02-27 | 2002-09-13 | Fujitsu Ltd | 会議サーバプログラム |
JP2003058481A (ja) * | 2001-08-10 | 2003-02-28 | Logo Vista Corp | 多言語チャットシステム |
JP2003058482A (ja) * | 2001-08-14 | 2003-02-28 | Fujitsu Ltd | エリアチャットルーム提供方法,端末側エリアチャット処理方法,エリアチャットルーム提供処理プログラム記録媒体,エリアチャットルーム提供装置 |
JP2003085114A (ja) * | 2001-09-11 | 2003-03-20 | Bagujii Data:Kk | 携帯電話端末用チャットシステム |
JP2003296257A (ja) * | 2002-04-01 | 2003-10-17 | Nec Infrontia Corp | ネットワーク会議システム |
JP2003316740A (ja) * | 2002-04-25 | 2003-11-07 | Nippon Telegr & Teleph Corp <Ntt> | 通信再開サービスシステム、通信再開サービス方法、プログラム、および記録媒体 |
JP2005235118A (ja) * | 2004-02-23 | 2005-09-02 | Nippon Telegr & Teleph Corp <Ntt> | 情報抽出方法およびその装置 |
JP2008250889A (ja) * | 2007-03-30 | 2008-10-16 | Nifty Corp | コミュニティ管理システム |
JP2009169914A (ja) * | 2007-12-21 | 2009-07-30 | Taito Corp | サービス提供システム、サービス提供方法、及びコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2011077501A1 (ja) | 2011-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2011077501A1 (ja) | コミュニケーションシステム | |
AU2020203752B2 (en) | Authentication of service requests initiated from a social networking site | |
Donner et al. | Exploring mobile-only Internet use: Results of a training study in urban South Africa | |
Puri | The web of insights: The art and practice of webnography | |
TWI420409B (zh) | 行動上下文短訊服務廣告裝置、媒體以及方法 | |
Evans et al. | Someone to listen: Increasing youth help‐seeking behavior through a text‐based crisis line for youth | |
US20110113086A1 (en) | System and method for monitoring activity on internet-based social networks | |
Pellowski et al. | Advancing partner notification through electronic communication technology: a review of acceptability and utilization research | |
KR20040081058A (ko) | 사회적 상호 작용을 위한 시스템 및 방법 | |
CN101198948A (zh) | 带有搜索特征的即时消息通信 | |
KR20160108421A (ko) | 디스플레이들을 자동으로 조정하는 동적 인바이트들 | |
WO2006020758A2 (en) | Resource based virtual communities | |
US9503410B2 (en) | Sharing of activity metadata via messaging systems | |
JP5732530B2 (ja) | インターネット上における相互通信情報のための相互通信方法、装置およびシステム | |
CN112437004A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
Kobayashi et al. | Social media agency robot for elderly people | |
WO2007058282A1 (ja) | チャット処理装置、方法、及びコンピュータプログラム | |
JP2010165189A (ja) | 広告提供装置、端末装置、広告提供方法、及びプログラム | |
KR20150010644A (ko) | 명함을 이용한 소셜네트워크 플랫폼 | |
JP2007535880A (ja) | 数個の特定電話番号を順に組み合わせてなる数字配列に識別番号を加えワールドワイドウェブ上の特定コンピューターipアドレスを検索する方法 | |
Schmidt et al. | IM me: instant messaging may be controversial, but remember, we also debated telephone reference | |
KR20050059380A (ko) | 네트워크를 통한 커뮤니티 연결 시스템 및 그 방법 | |
KR20020069895A (ko) | 웹공간에서 제공되는 홈페이지 시스템 | |
KR20090000214A (ko) | 웹 페이지 url 주소에 대응하는 채팅 시스템 및 그 방법 | |
Wilkin | Your own mental blocks can torpedo networking efforts; OPINION. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121225 |