(57)【要約】  複数のメッセージをユーザに関連付けるための方法、システム、およびコンピュータプログラムプロダクトを提供する。たとえば、方法は、２通のハイパーテキスト転送プロトコル（ＨＴＴＰ）ＰＯＳＴ呼び出しメッセージを受信するステップを含み得る。方法は、当該ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析してキーワードを特定するステップと、ＰＯＳＴ呼び出しメッセージのコンテキストおよびキーワードに基づいて複数のユーザの中から現在のユーザを特定するステップと、ＰＯＳＴ呼び出しメッセージからの情報を現在のユーザに関連付けるステップとをさらに含み得る。いくつかの例において、現在のユーザは、メッセージ間で同じユーザであり得る。方法は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、および現在のユーザのうちの少なくとも１つ以上からの情報に基づいて第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに応答するステップをさらに含み得る。
2019528495.tif 000002
【特許請求の範囲】
【請求項１】
複数のメッセージをユーザに関連付けるための方法であって、
統一資源識別子（ＵＲＩ）に関連付けられたボットサーバによって、第１のハイパーテキスト転送プロトコル（ＨＴＴＰ）ＰＯＳＴ呼び出しメッセージを受信するステップを含み、前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１ユーザに関連付けられて、第１のメッセージングアプリケーションサーバから前記ＵＲＩに送られ、前記方法は、さらに、
前記ボットサーバによって、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを受信するステップを含み、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２ユーザに関連付けられて、第２のメッセージングアプリケーションサーバから前記ＵＲＩに送られ、前記第２のメッセージングアプリケーションサーバは、前記第１のメッセージングアプリケーションサーバとは異なり、前記方法は、さらに、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第１キーワードを特定するステップと、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび前記第１キーワードに基づいて複数のユーザの中から第１の現在のユーザを特定するステップと、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を前記第１の現在のユーザに関連付けるステップと、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第２キーワードを特定するステップと、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび前記第２キーワードに基づいて前記複数のユーザの中から第２の現在のユーザを特定するステップとを含み、前記第２の現在のユーザは、前記第１の現在のユーザであり、前記方法は、さらに、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を前記第１の現在のユーザに関連付けるステップと、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、および前記第１の現在のユーザのうちの少なくとも１つ以上からの情報に基づいて前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答を生成するステップとを含む、方法。
【請求項２】
前記第１ユーザのＩＤは、前記第２ユーザのＩＤとは異なる、請求項１に記載の方法。
【請求項３】
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答は、前記第１のメッセージングアプリケーションサーバを用いて送信される、請求項１に記載の方法。
【請求項４】
前記第１の現在のユーザを企業アカウントに関連付けるステップをさらに含み、前記企業アカウントは、メッセージングアプリケーションサーバとは別である、請求項１に記載の方法。
【請求項５】
前記第１のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒアプリケーション、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒインスタントメッセージングアプリケーション、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒメッセージングアプリケーション、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）ビデオ電話アプリケーション、のうちの１つに関連付けられ、前記第２のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒアプリケーション、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒインスタントメッセージングアプリケーション、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒメッセージングアプリケーション、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）ビデオ電話アプリケーション、のうちの１つに関連付けられ、前記第１のメッセージングアプリケーションサーバは、前記第２のメッセージングアプリケーションサーバとは異なり、前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第１のモバイル機器から前記第１のメッセージングアプリケーションサーバに送信され、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第２のモバイル機器から前記第２のメッセージングアプリケーションサーバに送信される、請求項１に記載の方法。
【請求項６】
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１の自然言語対話を含み、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２の自然言語対話を含む、請求項１に記載の方法。
【請求項７】
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記応答、前記第１のメッセージングアプリケーションサーバ、前記第２のメッセージングアプリケーションサーバ、前記第１ユーザ、および前記第２ユーザのうちの少なくとも１つ以上からの情報がセッションに含まれる、請求項１に記載の方法。
【請求項８】
複数のメッセージをユーザに関連付けるためのシステムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行されると前記１つ以上のプロセッサに動作を実行させる命令を含んだ非一時的なコンピュータ読み取り可能な媒体とを備え、前記動作は、
統一資源識別子（ＵＲＩ）に関連付けられたボットサーバによって、第１のハイパーテキスト転送プロトコル（ＨＴＴＰ）ＰＯＳＴ呼び出しメッセージを受信することを含み、前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１ユーザに関連付けられて、第１のメッセージングアプリケーションサーバから前記ＵＲＩに送られ、前記動作は、さらに、
前記ボットサーバによって、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを受信することを含み、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２ユーザに関連付けられて、第２のメッセージングアプリケーションサーバから前記ＵＲＩに送られ、前記第２のメッセージングアプリケーションサーバは、前記第１のメッセージングアプリケーションサーバとは異なり、前記動作は、さらに、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第１キーワードを特定することと、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび前記第１キーワードに基づいて複数のユーザの中から第１の現在のユーザを特定することと、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を前記第１の現在のユーザに関連付けることと、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第２キーワードを特定することと、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび前記第２キーワードに基づいて前記複数のユーザの中から第２の現在のユーザを特定することとを含み、前記第２の現在のユーザは、前記第１の現在のユーザであり、前記動作は、さらに、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を前記第１の現在のユーザに関連付けることと、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、および前記第１の現在のユーザのうちの少なくとも１つ以上からの情報に基づいて前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答を生成することとを含む、システム。
【請求項９】
前記第１ユーザのＩＤは、前記第２ユーザのＩＤとは異なる、請求項８に記載のシステム。
【請求項１０】
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答は、前記第１のメッセージングアプリケーションサーバを用いて送信される、請求項８に記載のシステム。
【請求項１１】
前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記第１の現在のユーザを企業アカウントに関連付けることを含む動作を実行させる命令をさらに含み、前記企業アカウントは、メッセージングアプリケーションサーバとは別である、請求項８に記載のシステム。
【請求項１２】
前記第１のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒアプリケーション、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒインスタントメッセージングアプリケーション、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒメッセージングアプリケーション、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）ビデオ電話アプリケーション、のうちの１つに関連付けられ、前記第２のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒアプリケーション、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒインスタントメッセージングアプリケーション、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒメッセージングアプリケーション、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）ビデオ電話アプリケーション、のうちの１つに関連付けられ、前記第１のメッセージングアプリケーションサーバは、前記第２のメッセージングアプリケーションサーバとは異なり、前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第１のモバイル機器から前記第１のメッセージングアプリケーションサーバに送信され、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第２のモバイル機器から前記第２のメッセージングアプリケーションサーバに送信される、請求項８に記載のシステム。
【請求項１３】
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１の自然言語対話を含み、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２の自然言語対話を含む、請求項８に記載のシステム。
【請求項１４】
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記応答、前記第１のメッセージングアプリケーションサーバ、前記第２のメッセージングアプリケーションサーバ、前記第１ユーザ、および前記第２ユーザのうちの少なくとも１つ以上からの情報がセッションに含まれる、請求項８に記載のシステム。
【請求項１５】
非一時的な機械読み取り可能な記憶媒体に有形に含まれた、複数のメッセージをユーザに関連付けるためのコンピュータプログラムプロダクトであって、命令を含み、前記命令は、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
統一資源識別子（ＵＲＩ）に関連付けられたボットサーバによって、第１のハイパーテキスト転送プロトコル（ＨＴＴＰ）ＰＯＳＴ呼び出しメッセージを受信させ、前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１ユーザに関連付けられて、第１のメッセージングアプリケーションサーバから前記ＵＲＩに送られ、前記命令は、さらに、前記１つ以上のプロセッサに、
前記ボットサーバによって、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを受信させ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２ユーザに関連付けられて、第２のメッセージングアプリケーションサーバから前記ＵＲＩに送られ、前記第２のメッセージングアプリケーションサーバは、前記第１のメッセージングアプリケーションサーバとは異なり、前記命令は、さらに、前記１つ以上のプロセッサに、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第１キーワードを特定させ、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび前記第１キーワードに基づいて複数のユーザの中から第１の現在のユーザを特定させ、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を前記第１の現在のユーザに関連付けさせ、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第２キーワードを特定させ、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび前記第２キーワードに基づいて前記複数のユーザの中から第２の現在のユーザを特定させ、前記第２の現在のユーザは、前記第１の現在のユーザであり、前記命令は、さらに、前記１つ以上のプロセッサに、
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を前記第１の現在のユーザに関連付けさせ、
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、および前記第１の現在のユーザのうちの少なくとも１つ以上からの情報に基づいて前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答を生成させる、コンピュータプログラムプロダクト。
【請求項１６】
前記第１ユーザのＩＤは、前記第２ユーザのＩＤとは異なる、請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１７】
前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答は、前記第１のメッセージングアプリケーションサーバを用いて送信される、請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１８】
前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記第１の現在のユーザを企業アカウントに関連付けさせる命令をさらに含み、前記企業アカウントは、メッセージングアプリケーションサーバとは別である、請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１９】
前記第１のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒアプリケーション、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒインスタントメッセージングアプリケーション、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒメッセージングアプリケーション、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）ビデオ電話アプリケーション、のうちの１つに関連付けられ、前記第２のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒアプリケーション、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒインスタントメッセージングアプリケーション、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒメッセージングアプリケーション、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）ビデオ電話アプリケーション、のうちの１つに関連付けられ、前記第１のメッセージングアプリケーションサーバは、前記第２のメッセージングアプリケーションサーバとは異なり、前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第１のモバイル機器から前記第１のメッセージングアプリケーションサーバに送信され、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第２のモバイル機器から前記第２のメッセージングアプリケーションサーバに送信される、請求項１５に記載のコンピュータプログラムプロダクト。
【請求項２０】
前記第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、前記応答、前記第１のメッセージングアプリケーションサーバ、前記第２のメッセージングアプリケーションサーバ、前記第１ユーザ、および前記第２ユーザのうちの少なくとも１つ以上からの情報がセッションに含まれる、請求項１５に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、米国特許法第１１９条の下で、２０１６年６月２１日に出願された米国仮出願第６２／３５３，００７号の利益を主張するものであり、そのすべての記載内容を、引用により本明細書に援用する。
【背景技術】
【０００２】
背景
メッセージングアプリケーション（たとえば、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）など）は、電子機器（たとえば、コンピュータ、モバイル機器、スマートテレビなど）において急速に人気を集めた技術である。メッセージングアプリケーションは、広く浸透しており、１日の使用回数が多い。しかしながら、モバイル機器上の企業アプリケーション（たとえば、事業および／または企業に関連したアプリケーション）は、ユーザに企業アプリケーションを定期的にダウンロードして使用してもらうことに苦労している。そのため、企業は、企業のコンテンツをさらに浸透させて、１日の使用回数を増やす必要がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
メッセージングアプリケーションを利用してユーザと通信するためのボット（bot）サーバを提供するための方法、システム、およびコンピュータプログラムプロダクトを、本明細書において提供する。いくつかの実装形態において、メッセージングアプリケーションを利用するボットサーバが受信するメッセージを関連付けるための方法、システム、およびコンピュータプログラムプロダクトを提供する。たとえば、第１の方法は、メッセージングアプリケーションサーバからハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージを受信することを含み得る。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、統一資源識別子（ＵＲＩ：Uniform Resource Identifier）に関連付けられたボットサーバによって受信され得る。このような例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ユーザに関連付けられて、メッセージングアプリケーションサーバから当該ＵＲＩに送られ得る。
【０００４】
第１の方法は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析してキーワードを特定するステップをさらに含み得る。第１の方法は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよびキーワードに基づいて複数のセッションの中から現在のセッションを特定するステップをさらに含み得る。いくつかの例において、複数のセッションのうちの１つのセッションは、ユーザとボットサーバとの間の対話を表す。いくつかの実装形態において、現在のセッションは、当該セッションであり得る。
【０００５】
第１の方法は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を現在のセッションに関連付けるステップをさらに含み得る。第１の方法は、現在のセッションに基づいてＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答を生成するステップをさらに含み得る。
【０００６】
いくつかの実装形態において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、自然言語による対話を含み得る。いくつかの実装形態において、メッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥのうちの少なくとも１つ以上に関連付けられ得る。このような実装形態において、モバイル機器上のメッセージングアプリケーションを用いて、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、メッセージングアプリケーションサーバに送信され得る。たとえば、文字、オーディオ、またはメディアなどのユーザコンテンツが、モバイル機器からメッセージングアプリケーションサーバに送信され得る。次に、メッセージングアプリケーションサーバは、ユーザコンテンツを用いて、ボットサーバに送信されるＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを作成することができる。
【０００７】
いくつかの実装形態において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバのコネクタによって受信され得る。このような実装形態において、コネクタは、メッセージングアプリケーションサーバとボットサーバとの間のインタフェースであり得る。このような実装形態において、コネクタは、複数のメッセージングアプリケーションサーバ間でメッセージを正規化することができる。正規化には、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを共通フォーマットにフォーマットすることが含まれ得る。
【０００８】
いくつかの実装形態において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバのロードバランサ・コンポーネントによって受信され得る。このような実装形態において、ロードバランサ・コンポーネントは、ボットサーバの負荷に基づいてＨＴＴＰ  ＰＯＳＴ呼び出しメッセージをボットサーバ上の複数のコネクタのうちの１つのコネクタに送信することができる。
【０００９】
いくつかの実装形態において、セッションは、第１ボットサーバからの第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報と、第２ボットサーバからの第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報とを含み得る。いくつかの実装形態において、セッションは、第１メッセージングアプリケーションからの第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報と、第２メッセージングアプリケーションからの第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報とを含み得る。
【００１０】
いくつかの実装形態において、現在のセッションを特定するステップは、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージが現在のセッションに関係するかどうかを判定するステップを含み得る。いくつかの実装形態において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、２人以上のユーザ間の会話に含まれ得、メッセージングアプリケーションによって当該会話が容易になる。このような実装形態において、会話は、第１トピックと、第２トピックとを含み得る。第１トピックは、第１セッションに関連付けられ得、第２トピックは、第２セッションに関連付けられ得る。いくつかの実装形態において、２人以上のユーザのうちの１人のユーザは、ボットサーバである。
【００１１】
いくつかの実装形態において、コンテキストは、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのタイムスタンプ、企業データ、ユーザからの１通以上の前のメッセージ、ユーザのユーザプロファイル、ユーザの１つ以上のユーザ嗜好、ボットサーバに関連付けられた企業とユーザとの間の１つ以上の対話についての以前の履歴、またはそれらの任意の組合せ、のうちの少なくとも１つ以上を含み得る。いくつかの例において、以前の履歴は、過去の購入、過去の会話、過去のアクション、過去のクエリ、過去のアプリケーション・プログラミング・インターフェース（ＡＰＩ：Application Programming Interface）呼び出し、過去のデータ要求、または過去のデータ検索を含み得る。いくつかの例において、企業データは、メッセージングアプリケーションサーバとは無関係のソースからボットサーバが取得した情報を含み得る。このような実装形態において、会話は、２人以上のユーザ間の会話であり得る。メッセージングアプリケーションサーバによって会話が容易になり得、会話は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージの少なくとも一部を含み得る。いくつかの実装形態において、第１の方法は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答からの情報をセッションに関連付けるステップをさらに含み得る。
【００１２】
いくつかの実装形態において、複数のメッセージをユーザに関連付けるための方法、システム、およびコンピュータプログラムプロダクトを提供する。たとえば、第２の方法は、第１のハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージを受信するステップを含み得る。いくつかの実装形態において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、統一資源識別子（ＵＲＩ：Uniform Resource Identifier）に関連付けられたボットサーバによって受信され得る。第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１ユーザに関連付けられて、第１のメッセージングアプリケーションサーバからＵＲＩに送られ得る。
【００１３】
第２の方法は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを受信するステップをさらに含み得る。いくつかの実装形態において、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ＵＲＩに関連付けられたボットサーバによって受信され得る。第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２ユーザに関連付けられて、第２のメッセージングアプリケーションサーバからＵＲＩに送られ得る。
【００１４】
第２の方法は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第１キーワードを特定するステップをさらに含み得る。第２の方法は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび第１キーワードに基づいて複数のユーザの中から第１の現在のユーザを特定するステップをさらに含み得る。第２の方法は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を第１の現在のユーザに関連付けるステップをさらに含み得る。
【００１５】
第２の方法は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第２キーワードを特定するステップをさらに含み得る。第２の方法は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび第２キーワードに基づいて第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージの第２の現在のユーザを複数のユーザの中から特定するステップをさらに含み得る。いくつかの例において、第２の現在のユーザは、第１の現在のユーザであり得る。
【００１６】
第２の方法は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を第１の現在のユーザに関連付けるステップをさらに含み得る。第２の方法は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、および第１の現在のユーザの少なくとも１つ以上からの情報に基づいて第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに応答するステップをさらに含み得る。
【００１７】
いくつかの実装形態において、第１ユーザのＩＤは、第２ユーザのＩＤとは異なり得る。第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答は、第１のメッセージングアプリケーションサーバを用いてユーザに送信され得る。
【００１８】
第２の方法は、第１の現在のユーザを企業アカウントに関連付けるステップをさらに含み得る。企業アカウントは、メッセージングアプリケーションサーバとは別であり得る。いくつかの実装形態において、第１のメッセージングアプリケーションサーバおよび第２のメッセージングアプリケーションサーバの各々は、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）のうちの１つに関連付けられ得る。いくつかの例において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第１のモバイル機器から第１のメッセージングアプリケーションサーバに送信され得、第２メッセージのコンテンツの少なくとも一部は、第２のモバイル機器から第２のメッセージングアプリケーションサーバに送信され得る。第１のモバイル機器は、第２のモバイル機器と同じで有り得、または、第２のモバイル機器とは異なり得る。
【００１９】
いくつかの実装形態において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージおよび第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、各々、自然言語対話を含み得る。いくつかの実装形態において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、第１のメッセージングアプリケーションサーバ、第２のメッセージングアプリケーションサーバ、第１ユーザ、第２ユーザ、またはそれらの任意の組合せ、のうちの少なくとも１つ以上からの情報は、セッションに関連付けられ得る。
【００２０】
いくつかの実装形態において、サーバ連携のための方法、システム、およびコンピュータプログラムプロダクトを提供する。たとえば、第３の方法は、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージを受信するステップを含み得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１ボットサーバによって受信され得る。いくつかの実装形態において、第１ボットサーバは、第１統一資源識別子（ＵＲＩ：Uniform Resource Identifier）を含み得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ユーザに関連付けられて、第１のメッセージングアプリケーションサーバからＵＲＩに送られ得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報は、セッションに関連付けられ得る。
【００２１】
第３の方法は、ＨＴＴＰ  ＰＯＳＴメッセージに基づいて第２ボットサーバにセッションを転送すると決定するステップをさらに含み得る。当該決定は、第１ボットサーバによって行われ得る。いくつかの実装形態において、第２ボットサーバは、第２ＵＲＩを含み得る。
【００２２】
第３の方法は、第１ボットサーバによって、転送要求を送信するステップをさらに含み得る。いくつかの実装形態において、転送要求は、第２ボットサーバに送られ得る。転送要求は、セッションの第１ボットサーバとの関連付けを解除させて、当該セッションを第２ボットサーバに関連付けさせ得る。いくつかの実装形態において、第１ボットサーバに関連付けられた情報は、第２ボットサーバに関連付けられた情報とは別々にセッションに保存され得る。
【００２３】
第３の方法は、第１ボットサーバによってリターン要求を受信するステップをさらに含み得る。リターン要求は、セッションの第２ボットサーバとの関連付けを解除させて、当該セッションを第１ボットサーバに関連付けさせることができる。いくつかの実装形態において、リターン要求は第２ボットサーバがセッションを終えた後、または転送要求が送信されてから時間が経過した後に、第２ボットサーバから第１ボットサーバに送信され得る。
【００２４】
いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、自然言語対話を含み得る。いくつかの実装形態において、メッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）のうちの１つに関連付けられ得る。このような実装形態において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、モバイル機器からメッセージングアプリケーションサーバに送信され得る。
【００２５】
使用する用語および表現は、説明のための用語として使用されるが、限定するものではない。このような用語および表現の使用に際して、図示および説明された特徴またはそれらの一部の均等物を除外する意図はない。しかしながら、クレームされるシステムおよび方法の範囲内でのさまざまな変更例が可能であることが分かる。よって、本システムおよび方法が例および任意選択の特徴によって具体的に開示されるが、本明細書において開示の概念の変更および変形は、当業者によって行使されてもよく、このような変更例および変形例は、添付の請求項で定められるシステムおよび方法の範囲内であると考えられる、と理解されたい。
【００２６】
本概要欄は、クレームされる主題の重要または本質的な特徴を断定することを意図せず、クレームされる主題の範囲を決定するために単独で使用されることも意図しない。本発明の主題は、本特許明細書全体のうちの適切な部分、図面の一部またはすべて、および各請求項を参照することによって理解される。
【００２７】
上記を、他の特徴および例とともに、次の明細書、請求項、および添付の図面において、さらに詳しく以下に説明する。
【００２８】
例示的な実施例を、以下の図面を参照して詳細に以下に説明する。
【図面の簡単な説明】
【００２９】
【図１】メッセージングアプリケーションを用いてユーザと通信するためのボットサーバを実装するシステムの例を説明する図である。
【図２】１つ以上のメッセージングアプリケーションを用いて複数のユーザと通信を行うためにスケーラブルであるボットサーバの例を説明する図である。
【図３】複数のセッションを用いた、モバイル機器上のユーザとボットサーバとの会話の例を示す図である。
【図４】セッションにメッセージを関連付けるためのプロセスの例を説明するフローチャートである。
【図５】ＦＩＧ．５Ａは、第１メッセージングアプリケーションを用いた、ボットサーバとユーザとの第１の会話の例を説明する図である。ＦＩＧ．５Ｂは、第２メッセージングアプリケーションを用いた、ボットサーバとユーザとの第２の会話の例を説明する図である。
【図６】前のメッセージが受信されたメッセージングアプリケーションとは異なるメッセージングアプリケーションを用いて応答するボットサーバの例を説明する図である。
【図７】複数のメッセージをユーザに関連付けるためのプロセスの例を説明するフローチャートである。
【図８】ＦＩＧ．８Ａは、１つの会話中の第１ボットサーバと第２ボットサーバとの間のハンドオフの例を説明する図である。ＦＩＧ．８Ｂは、１つの会話中の第１ボットサーバと第２ボットサーバとの間のハンドオフの例のさらに他の会話を説明する図である。
【図９】第１ボットサーバに従って第２ボットサーバがタイムアウトした後の、第１ボットサーバと第２ボットサーバとの間のハンドオフの例を説明する図である。
【図１０】サーバ連携のためのプロセスの例を説明するフローチャートである。
【図１１】分散システムの例を説明する図である。
【図１２】システム環境の構成要素を簡略化したブロック図である。
【図１３】コンピュータシステムの例を説明する図である。
【発明を実施するための形態】
【００３０】
詳細な説明
以下の説明において、説明の便宜上、本開示の十分な理解のために、具体的な詳細を記載する。しかしながら、これらの具体的な詳細がなくても、さまざまな例を実施することができることが明らかになるだろう。図面および説明は、限定を意図したものではない。
【００３１】
次の説明は、例に過ぎず、本開示の範囲、利用可能性、または構成を限定することを意図しない。むしろ、これらの例の以下の説明は、本開示の例を実現するための、実施を可能にする説明を当業者に提供する。添付の請求の範囲に記載の本開示の趣旨および範囲を逸脱することなく、要素の機能および配置にさまざまな変更を行ってもよいと理解されたい。
【００３２】
これらの例の十分な理解のために、具体的な詳細を以下の説明に記載する。しかしながら、当業者は、これらの具体的な詳細がなくてもこれらの例を実施することができると理解するだろう。不必要な詳細で当該例を曖昧にしないように、たとえば、回路、システム、ネットワーク、プロセス、およびその他の構成要素は、ブロック図の形で構成要素として図示される場合がある。他の場合、周知の回路、プロセス、アルゴリズム、構造、および技術が、これらの例を曖昧にしないように、不必要な詳細を説明しないで図示される場合がある。
【００３３】
なお、個々の例は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明される場合もある。フローチャートは、逐次プロセスとして動作を示し得るが、動作の多くのは、平行して、または同時に実行することができる。これに加えて、動作の順序は、並び替えられてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれないステップをさらに有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに相当してもよい。プロセスが関数に相当する場合、その終了は、呼び出し関数またはメイン関数へのこの関数の戻りに相当し得る。
【００３４】
用語「機械読み取り可能な記憶媒体」または「コンピュータ読み取り可能な記憶媒体」は、持ち運び可能なもしくは据え置き型の記憶装置、光記憶装置、および、命令（複数可）ならびに／またはデータを格納、含有、または保持できるさまざまなその他の媒体を含むが、これらに限定されない。機械読み取り可能な記憶媒体またはコンピュータ読み取り可能な憶媒体は、データを格納することができ、かつ、無線でもしくは有線接続で伝播する搬送波および／または一時的な電気信号を含まない非一時的な媒体を含んでもよい。非一時的な媒体として、磁気ディスクもしくは磁気テープ、ＣＤ（Compact Disk）もしくはＤＶＤ（Digital Versatile Disk）などの光記憶媒体、フラッシュメモリ、メモリ、または記憶装置などが挙げられ得るが、これらに限定されない。コンピュータプログラムプロダクトは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、もしくはプログラム文の任意の組合せを表し得るコードおよび／または機械によって実行可能な命令を含んでもよい。コードセグメントは、情報、データ、引数、パラメータ、もしくはメモリコンテンツを渡すおよび／または受けることによって、別のコードセグメントまたはハードウェア回路に接続されてもよい。情報、引数、パラメータ、データなどが、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の適した手段を介して渡されたり、転送されたり、送信されてもよい。
【００３５】
さらに、例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実現された場合、必要なタスク（たとえば、コンピュータプログラムプロダクト）を実行するためのプログラムコードまたはコードセグメントが、機械読み取り可能な媒体に格納されてもよい。プロセッサ（複数可）が当該必要なタスクを実行してもよい。
【００３６】
図面のいくつかに示すシステムは、さまざまな構成で提供されてもよい。いくつかの例において、これらのシステムは、システムの１つ以上の構成要素がクラウドコンピューティングシステムにおける１つ以上のネットワーク間で分散される分散システムとして構成されてもよい。
【００３７】
Ａ．概要
本明細書における例は、自然言語メッセージを利用したメッセージングアプリケーションを通して自然言語による質問および／またはコメントに応答することができるボットサーバに関する。具体的には、例によって、企業は、ユーザと通信する１つ以上のボット（bot）サーバを定義し、マルチテナント、クロスメッセージングプラットフォームのように、当該１つ以上のボットサーバを大規模に実行できるようになる。いくつかの例において、当該１つ以上のボットサーバは、ユーザとの通信を開始することができる。
【００３８】
いくつかの例において、ボットサーバは、統一資源識別子（ＵＲＩ：Uniform Resource Identifier）（たとえば、ＵＲＬ（Uniform Resource Locator）および統一資源名（ＵＲＮ：Uniform Resource Name））に関連付けられ得る。ＵＲＩは、文字列を利用してボットサーバを識別できる。いくつかの例において、当該ＵＲＩは、１つ以上のメッセージングアプリケーションサーバ用のｗｅｂｈｏｏｋ（たとえば、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージなど、ＨＴＴＰコールバック）として利用できる。いくつかの例において、メッセージングアプリケーションサーバは、ｗｅｂｈｏｏｋを使用して１つ以上のイベントが発生した場合に、メッセージをボットサーバに送信することができる。ｗｅｂｈｏｏｋは、ボットサーバが、情報が発生した際に、当該情報を頻繁にポーリングするのではなく、当該情報を受信する手段として機能し得る。
【００３９】
いくつかの例において、ボットサーバは、メッセージングアプリケーションサーバからメッセージ（たとえば、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージ）を受信するように設計され得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、メッセージングアプリケーションサーバからＵＲＩに送られ得る。いくつかの例において、メッセージは、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージとは異なり得る。たとえば、ボットサーバは、ＳＭＳ（Short Message Server）からメッセージを受信できる。本明細書における説明は、ボットサーバがメッセージとして受信するデータに関する説明であるが、当業者は、このメッセージが、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、ＳＭＳメッセージ、またはメッセージングプラットフォームからのその他の種類のメッセージであり得ることが分かるだろう。これに加えて、当業者は、ある構成要素から別の構成要素にボットサーバがメッセージを送信するときは実際のメッセージが送信されない可能性がいつでもあることが分かるだろう。その代わりに、メッセージからの情報、またはメッセージの記憶場所を指すポインタが送信され得る。
【００４０】
いくつかの例において、ボットサーバは、１つ以上のユーザの操作を自動的に処理できる。たとえば、所望の目的を達成するために、ユーザは、１通以上のメッセージをボットサーバに送信できる。メッセージは、自然言語のメッセージ（たとえば、文字、絵文字、音声、またはメッセージを伝達するその他の方法）を含み得る。ボットサーバは、このメッセージを、標準化された形式（たとえば、企業サービスに対する、正しいパラメータを用いたＲＥＳＴ呼び出し）に変換して、自然言語による応答を生成できる。また、ボットサーバは、必要なパラメータをユーザにさらに求めることができ、かつ、情報をさらに要求できる。また、いくつかの例において、ボットサーバは、ユーザとの通信文を開始することができる。
【００４１】
図１は、メッセージングアプリケーションを用いてユーザと通信するためのボットサーバ１２０を実装するシステムの例を示す図である。いくつかの例において、メッセージングアプリケーションは、電子機器（たとえば、デスクトップコンピュータ、ラップトップ、モバイル機器１１０）上にインストールすることができる。本明細書における説明では、モバイル機器とメッセージングアプリケーションとを例にするが、当業者は、任意の電子機器を用いることができ、任意のメッセージングプラットフォームを利用することができることが分かるだろう（たとえば、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）、ＳＭＳ（Short Message Service））。他の例において、メッセージングアプリケーションは、モバイル機器１１０上にインストールされたブラウザ（たとえば、ＧＯＯＧＬＥ  ＣＨＲＯＭＥ（登録商標）、ＭＯＺＩＬＬＡ（登録商標）ＦＩＲＥＦＯＸ（登録商標）、およびＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ）を通じて動作し得る。メッセージングアプリケーションは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）、または、ユーザが通信できるようになるためのプラットフォームを提供するその他のメッセージングアプリケーションであり得る。メッセージングアプリケーションは、メッセージングアプリケーションサーバ１１５に関連付けられ得る。いくつかの例において、モバイル機器１１０は、第１ネットワーク（たとえば、インターネット、または、あるデバイスを別のデバイスに接続する他の方法）によって、メッセージングアプリケーションサーバ１１５に接続され得る。メッセージングアプリケーションサーバ１１５は、メッセージングアプリケーションを通してモバイル機器間で送受信されるコンテンツを管理できる。コンテンツは、文字、絵文字、音声、メディア（たとえば、写真、映像、リンク）、またはメッセージを伝達する他の方法を含み得る。いくつかの例において、ボットサーバ１２０がＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒから受信する通常のメッセージは、以下の通りであり得る。
【００４２】
【数１】
2019528495.tif 000003
【００４３】
いくつかの例において、メッセージングアプリケーションサーバ１１５は、ボットサーバ１２０とも通信できる。メッセージングアプリケーションサーバ１１５とボットサーバ１２０との間の通信では、第２ネットワーク（たとえば、インターネット、または、あるデバイスを別のデバイスに接続する他の方法）を使用できる。第１ネットワークと第２ネットワークとは、同じネットワークで有り得、または、同様のまたは完全に異なるネットワークであり得る。メッセージングアプリケーションサーバ１１５は、インターネットを利用して、モバイル機器１１０からのコンテンツ（たとえば、メッセージ、メッセージからの情報、または、メッセージの記憶場所を指すポインタ）を、ボットサーバ１２０にルーティングすることができる。コンテンツの送信先（たとえば、ボットサーバ１２０のＩＤ）は、名目上の受信者として、コンテンツに含まれ得る。
【００４４】
ボットサーバ１２０は、コネクタ１３０を利用してコンテンツを受信できる。コネクタ１３０は、メッセージングアプリケーションサーバ１１５とボットサーバ１２０との間のインタフェースとして機能することができる。いくつかの例において、コネクタ１２０は、ボットサーバ１２０が異なるメッセージングアプリケーションサーバ間のコンテンツを解析できるように、メッセージングアプリケーションサーバ１１５からのコンテンツを正規化することができる。正規化には、各種類のメッセージングアプリケーションからのコンテンツを処理するために共通フォーマットにフォーマットすることが含まれ得る。いくつかの例において、ボットサーバ１２０は、図２において説明するように、メッセージングアプリケーション（ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）、ＳＭＳ（Short Message Service）など）の各々に対して、１つ以上のコネクタを含み得る。
【００４５】
コネクタ１３０は、このコンテンツを受信メッセージキュー１４０にルーティングすることができる。いくつかの例において、受信メッセージキュー１４０は、コンテンツを受信した順番に格納することができる。他の例において、受信メッセージキュー１４０は、コンテンツを、各方法に割り当てられた優先順位に基づいて格納することができる。このような例において、当該優先順位は、コンテンツ、コンテンツのタイムスタンプ、コンテンツを送信したユーザに関連する情報、またはコンテンツもしくはボットサーバに関するその他の情報（たとえば、コンテンツの予想処理量と比較したボットサーバの負荷）、のうちの少なくとも１つ以上に基づき得る。いくつかの例において、コネクタ１３０は、図２に説明するように、１つ以上の受信メッセージキューに関連付けられ得る。
【００４６】
受信メッセージキュー１４０は、メッセージプロセッサパイプライン１５０が利用可能になったときに、コンテンツをメッセージプロセッサパイプライン１５０に送信できる。いくつかの例において、メッセージプロセッサパイプライン１５０は、本明細書に記載のイノベーションのうちの１つ以上を用いてコンテンツを解析できる。たとえば、メッセージプロセッサパイプライン１５０は、セッション化部１５２、ユーザリゾルバ１５４、自然言語プロセッサ１５６、またはそれらの任意の組合せ、のうちの少なくとも１つ以上を含み得る。全体的に、セッション化部１５２は、ユーザのセッションおよびボットサーバのセッションを作成および管理できる。全体的に、ユーザリゾルバ１５４は、ユーザが複数のメッセージングアプリケーションを利用していることを理由にまとめることができるセッションを決定できる。全体的に、自然言語プロセッサ１５６は、メッセージを構文解析して、メッセージの意図やセッションを判断することができる。当該意図は、メッセージの目的を含み得る。たとえば、メッセージの目的は、ピザを注文する、コンピュータを注文する、配達について質問をすることなどであり得る。
【００４７】
メッセージプロセッサパイプライン１５０によってコンテンツが解析された後、解析されたコンテンツは、ボットコード（bot code）１６０に送信され得る。ボットコード１６０は、サードパーティ（たとえば、ボットサーバが関連付けられた企業）によって書かれ得、解析されたコンテンツおよびセッションに基づいて、実行するアクションを決定し得る。いくつかの例において、ボットコード１６０は、アウトバウンドコンテンツを送信メッセージキュー１７０に送信できる。送信メッセージキュー１７０は、アウトバウンドコンテンツをコネクタ１３０に送信できる。次に、コネクタ１３０は、アウトバウンドコンテンツを、ボットコード１６０が示すメッセージングアプリケーションサーバに送信できる。次に、メッセージングアプリケーションサーバ１１５は、モバイル機器１１５上のメッセージングアプリケーションに当該アウトバウンドコンテンツを転送することができる。
【００４８】
ボットサーバ１２０は、１つ以上の企業サービス（たとえば、企業サービス１２５）、ナレッジグラフサーバ（図示せず）、または他のコンテンツ送信元（たとえば、リモートデータベースまたはリモートデバイスなど）とさらに通信できる。企業サービス１２５は、コネクタ１３０、ボットコード１６０、またはそれらの任意の組合せ、のうちの少なくとも１つ以上と通信することができる。企業サービス１２５は、メッセージングアプリケーションサーバ１１５と同様の方法でコネクタ１３０と通信することができる。企業サービス１２５は、１人以上のユーザに関連付けられるコネクタ１３０にコンテンツを送信できる。また、企業サービス１２５は、コンテンツをコネクタ１３０に送信して、ボットサーバ１２０に、ユーザに関連付けられたアクションを実行させることができる。ボットコード１６０は、企業サービス１２５から情報を取得する、および／または、ボットコード１６０で識別されるアクションを企業サービス１２５が行えるように、企業サービス１２５と通信することができる。
【００４９】
いくつかの例において、ボットサーバ１２０は、１つ以上のタイマを備えることができる。タイマは、時間が経過した後に、コネクタ１３０がメッセージングアプリケーションサーバ１１５を利用することによって、ボットコード１６０にユーザに対してコンテンツを送信させる。このコンテンツは、ユーザのデバイス上にインストールされたメッセージングアプリケーション上でユーザまで届き得る。いくつかの例において、タイマは、ユーザまたは企業サービス１２５と同様に、コンテンツをボットサーバ１２０に送信できる。たとえば、タイマは、ユーザからのメッセージが解析されるように解析されるメッセージをボットサーバ１２０に送信できる。
【００５０】
ボットサーバ１２０の通信プロセスを説明するために、ここで、例を説明する。ユーザは、ユーザのデバイス上のメッセージングアプリケーションを用いて、メッセージをメッセージングアプリケーションサーバに送信できる。メッセージングアプリケーションサーバは、当該メッセージを送信するために、このメッセージを構文解析してメッセージングアプリケーションサーバに関連付けられたアカウントを特定することができる。メッセージングアプリケーションサーバは、ボットサーバを当該アカウントであると識別できる。次に、メッセージングアプリケーションサーバは、このメッセージをボットサーバに送信できる。いくつかの例において、メッセージングアプリケーションサーバは、ボットサーバに送信するために、このメッセージを異なるフォーマットにパッケージ化し直すことができる（たとえば、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ）。当該メッセージは、あいさつの言葉を含み得る。ボットサーバは、ユーザとの新しい会話が開始したと識別できる。ボットサーバは、ユーザの１つ以上の特性を特定できる。たとえば、ボットサーバは、メッセージングアプリケーションサーバ上でユーザに関連付けられたプロファイルを用いて、ユーザの名前を特定できる。１つ以上の特性を利用して、ボットサーバは、メッセージングアプリケーション上でユーザに応答できる。この応答は、ユーザから受信したメッセージに応答する、ユーザへの個人的なメッセージを含み得る。たとえば、応答は、ユーザの名前を用いたあいさつの言葉を含み得る。
【００５１】
ボットサーバに関連付けられた企業によっては、ボットサーバは、企業の目的を達成するように発展し得る。たとえば、ボットサーバがピザ配達企業に関連付けられている場合、ボットサーバは、ピザの購入を容易にすることができる。ボットサーバとユーザとの間の会話は、ボットサーバが会話を完了するまで、またはユーザがボットサーバに応答するのをやめるまで継続し得、行ったり来たりする。
【００５２】
いくつかの例において、ボットサーバは、ユーザとの会話を開始できる。ボットサーバによって開始された会話は、ユーザとの前の会話に応答するものであり得る。たとえば、ユーザは、前の会話において、ピザを注文し得る。次に、ボットサーバは、ピザの用意ができたときに会話を開始し得る。いくつかの例において、ボットサーバは、ボットサーバに関連付けられた企業から指示を受信（たとえば、従業員がピザの用意ができたというメッセージをボットサーバに送信）したときに、ピザの用意ができたと判断し得る。会話は、ピザが出来たことを示す、ユーザに送信されたメッセージを含み得る。別の例として、ボットサーバは、前の会話から一定の間が経過した後に、別の会話を開始できる。
【００５３】
いくつかの例において、ボットサーバは、前のメッセージを受信したメッセージングアプリケーションとは異なるメッセージングアプリケーション上でユーザにメッセージを送信できる。たとえば、ボットサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒではなく、ＳＭＳ（Short Message Service）を用いてメッセージを送信すると決定できる。このような実装形態において、ボットサーバは、複数のメッセージングアプリケーションを統合することができる。
【００５４】
いくつかの例において、ボットサーバは、タイマに基づいて会話を開始すると決定できる。たとえば、ボットサーバは、メッセージングアプリケーションを通してピザが最後に購入されてから１週間後に、ユーザがピザをまた欲しいかどうかをボットサーバが尋ねることを決定してもよい。タイマは、企業によって設定し、ボットサーバによって実施することができる。
【００５５】
いくつかの例において、ボットサーバは、会話間のユーザの情報を保持できる。この情報は、ユーザとボットサーバとの間で新しい会話が開始されるたびにボットサーバが質問をしなくて済むように利用できる。たとえば、ボットサーバは、ユーザによる前のピザの注文を記憶できる。新しい会話では、ボットサーバは、前回と同じ注文がよいかを尋ねるメッセージをユーザに送信できる。
【００５６】
図２は、１つ以上のメッセージングアプリケーションを用いて複数のユーザと通信を行うためにスケーラブルであるボットサーバ２２０の例を示す図である。ボットサーバ２２０は、図１において説明した構成要素のうちの多くの構成要素の複数のインスタンスを含み得る。たとえば、ボットサーバ２２０は、メッセージングアプリケーションサーバからコンテンツを受信できる。しかしながら、コンテンツは、コネクタにおいて受信されるのではなく、第１ロードバランサ２２５において受信され得る。第１ロードバランサ２２５は、このコンテンツを１つ以上のコネクタ２３０にインテリジェントにルーティングし、ボットサーバ２２０の効率を改善することができる。第１ロードバランサ２２５は、メッセージの１つ以上の属性をハッシングすることによって、メッセージを送信する先のコネクタを決定できる。たとえば、ユーザのＩＤおよびメッセージの長さがハッシングされ得る。
【００５７】
いくつかの例において、１つ以上のコネクタ２３０のうちの少なくとも１つが各メッセージングアプリケーションサーバに関連付けられ得る。いくつかの例において、それぞれ異なるメッセージングアプリケーションサーバは、各メッセージングアプリケーションサーバからの通常または現在のボットサーバ２２０に対する負荷に応じて、異なる数のコネクタに関連付けられ得る。
【００５８】
１つ以上のコネクタ２３０は、ボットサーバ２２０が受信したコンテンツを１つ以上の受信メッセージキュー２４０に分けることができる。Ａｐａｃｈｅ  Ｋａｆｋａなど、待ち行列システムを利用して、１つ以上の受信メッセージキュー２４０を管理することができる。各企業、またはユーザは、１つ以上の受信メッセージキュー２４０のうちの少なくとも１つに関連付けられ得る。
【００５９】
いくつかの例において、ユーザからの着信メッセージにおいて特定される１つ以上のプロパティに基づいて１つ以上の受信メッセージキュー２４０の中から１つの受信メッセージキューが決定され得る。たとえば、特定のユーザまたは会話からの着信メッセージを、同じ受信メッセージキューに入れることができる。
【００６０】
いくつかの例において、受信メッセージキューは、１つ以上のメッセージプロセッサパイプライン２５０にコンテンツを送信できる。いくつかの例において、１つ以上のメッセージプロセッサパイプラインの各々は、仮想マシンであり得る。このような例において、１つ以上のメッセージプロセスパイプライン２５０の負荷に応じて、仮想マシンをさらに追加できる。
【００６１】
いくつかの例において、１つ以上のメッセージプロセスパイプライン２５０は、解析されたコンテンツを第２ロードバランサ２５５に送信できる。第２ロードバランサ２５５は、解析されたコンテンツを、ボットコード２６０の１つ以上のインスタンスに分けることができる。ボットコード２６０の１つ以上のインスタンスは、１通以上のアウトバウンドメッセージを１つ以上の送信メッセージキュー２７０に送信できる。いくつかの例において、１つ以上の送信メッセージキュー２７０の数は、ボットコード２６０の１つ以上のインスタンスの数に対応し得る。他の例において、１つ以上の送信メッセージキュー２７０は、ボットコード２６０から送信されてくる大量のメッセージに対応し得る。１つ以上の送信メッセージキュー２７０は、１通以上のアウトバウンドメッセージを第３ロードバランサ２７５に漸進的に送信できる。第３ロードバランサ２７５は、１通以上のアウトバウンドメッセージを１つ以上のコネクタ２３０にインテリジェントにルーティングでき、これによって、１通以上のアウトバウンドメッセージをメッセージングアプリケーションサーバに送信できる。図１と同様に、１つ以上のコネクタ２３０およびボットコード２６０の１つ以上のインスタンスは、１つ以上の企業サービスと通信できる。
【００６２】
ボットサーバ２２０によるメッセージの処理および送信に失速が認められた場合、ボットサーバ２２０は、ボットサーバ２２０の各構成要素をスケール変更させることができる。たとえば、閾値（たとえば、ボットサーバ２２０の現在の構成で効率よく処理できるメッセージの数を示す閾値）を超える数のメッセージがコネクタ２３０に届いていることをボットサーバ２２０が認めた場合、コネクタ２３０に１つ以上のコネクタがさらに追加され得る。これに加えて、失速が認められるかどうか、および／またはどこで失速が認められるかによって、受信メッセージキューの数、メッセージプロセッサパイプラインの数、ボットコードのインスタンスの数、送信メッセージキューの数、またはそれらの任意の組合せの数を増やすことができる。このような実装形態において、他の追加の構成要素（たとえば、受信メッセージキュー）を追加しなくても、構成要素（たとえば、コネクタ）をさらに追加することができる。たとえば、ボットコードのインスタンスをさらに追加しなくても、コネクタを追加することができる。いくつかの実装形態において、ボットサーバ２２０の１つ以上の構成要素、またはボットサーバ２２０の１つの構成要素の一部を仮想マシン上で実行させることができる。１つの仮想マシン上で実行させることによって、追加の仮想マシンを自在に開始させることができる。
【００６３】
いくつかの例において、ボットサーバ２２０は、ユーザに関連する情報をキャッシュに記憶できる。当該キャッシュは、コネクタ２３０からメッセージングアプリケーションサーバにアウトバウンドメッセージが送信された後にこの情報を保存するために、長期メモリ（たとえば、データベース、読出し専用メモリ、フラッシュメモリ、ハードディスクドライブ、フロッピー（登録商標）ディスク、磁気テープ、または光ディスクなど、不揮発性メモリ）に書き込むことができる。他の例において、キャッシュは、異なるタイミングで長期メモリに書き込むことができる（たとえば、特定の構成要素の後、各構成要素の後、長期メモリに書き込むタイミングを決定するための時間またはその他の評価指標の後）。
【００６４】
本開示においてボットサーバがアクションを実行すると記載される場合はいつでも、当該アクションは、ボットサーバのセッションおよびボットサーバ間のセッションを制御する管理サーバによって実行され得ることを理解されたい。
【００６５】
Ｂ．セッション化部
上述したように、メッセージプロセッサパイプライン１５０は、セッション化部１５２を含み得る。セッション化部１５２は、ボットサーバ１２０が受信したメッセージをセッションに関連付けることと、当該セッションを管理することとができる。いくつかの例において、メッセージは、セッションに関連付けられなくてもよい、その代わりに、メッセージの一部、メッセージの記憶場所を指すポインタ、またはメッセージからの情報がセッションに関連付けられ得る。いくつかの例において、メッセージをセッションに関連付けることは、メッセージの一部またはメッセージからの情報を、セッションを表すオブジェクト（または他のデータ構造）に含めることを意味し得る。セッションは、１人以上のユーザと１つ以上のボットサーバとの間の対話を表す１通以上のメッセージ（または、１通以上のメッセージからの情報）を含み得る。セッションは、ボットサーバ１５２に関連付けられた揮発性メモリおよび／または不揮発性メモリに格納される、セッション化部１５２によって作成されるオブジェクトであり得る。
【００６６】
いくつかの例において、メッセージをセッションに関連付けるステップは、セッションの開始、メッセージを当該セッションに含めるかどうか、およびセッションの終了を決定するステップを含み得る。たとえば、会話では、異なるセッションを各々が表す複数のトピックが話題になり得る。このような例において、セッション化部１５２は、１つの通信において１つ以上のメッセージがインターリーブされていた場合であっても、各セッションに関連付けられる１つ以上のメッセージを判断できる。この判断は、メッセージが題名を含まない場合であっても起こり得る。判断は、メッセージのコンテンツおよびメッセージのコンテキストに基づき得る。
【００６７】
メッセージコンテンツは、メッセージに含まれるデータを含み得る。たとえば、メッセージコンテンツは、ボットサーバのＩＤ、メッセージングアプリケーションのＩＤ、メッセージングアプリケーションサーバ上のユーザのＩＤ、メッセージングアプリケーションの種類、メッセージングアプリケーションにおけるウィンドウのＩＤ、メッセージのＩＤ、メッセージに含まれるコンテンツ、メッセージに含まれるコンテンツの種類、またはメッセージのコンテンツに関する本明細書に記載のその他の情報、のうちの少なくとも１つ以上を含み得る。いくつかの例において、メッセージに含まれるコンテンツは、メッセージの本文に含まれ得、文字、絵文字、音声、メディア（たとえば、写真、映像、リンク）または、それらのその他の組合せ、のうちの少なくとも１つ以上を含む。いくつかの例において、コンテンツは、メッセージのトピックを判断するために解析され得る。
【００６８】
メッセージコンテキストは、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのタイムスタンプ、企業データ（たとえば、企業が知る情報）、ユーザからの１通以上の前のメッセージ、ユーザのユーザプロファイル、ユーザの１つ以上のユーザ嗜好、ユーザとボットサーバに関連付けられた企業との間の１つ以上の対話についての以前の履歴、またはそれらの任意の組合せ、のうちの少なくとも１つ以上を含み得る。いくつかの例において、以前の履歴は、過去の購入、過去の会話、過去のアクション、過去のクエリ、過去のＡＰＩ（Application Programming Interface）呼び出し、過去のデータ要求、または過去のデータ検索を含み得る。いくつかの例において、企業データは、メッセージングアプリケーションサーバとは無関係のソースからボットサーバが取得した情報を含み得る。いくつかの例において、第１メッセージからのタイムスタンプと第２メッセージからのタイムスタンプとの差は、閾値を上回り得、第１メッセージおよび第２メッセージがそれぞれ異なるセッションに関連付けられていることを示す。企業データは、メッセージのコンテンツに直接含まれていないコンテンツを含み得る。たとえば、企業データは、メッセージの外部のボットサーバによって特定された情報を含み得る。いくつかの例において、メッセージの一部がセッションに関連付けられ得る。
【００６９】
一旦セッションが作成されれば、セッション化部１５２は、新しいメッセージがボットサーバ１２０によって受信されるときに、当該セッションを保持することができる。たとえば、セッション化部１５２は、セッションに関連付けられるべきと判断された新しいメッセージからの情報を当該セッションに加えることができる。いくつかの例において、メッセージに対して応答することに関連する情報がセッションに加えられてもよい。
【００７０】
いくつかの例において、メッセージのコンテキストに基づいて、１つ以上のセッションが特定され得る。一旦１つ以上のセッションが特定されれば、メッセージのコンテンツが構文解析されてキーワードが特定され得る。次に、一致するセッションを特定するために、このキーワードは、１つ以上のセッションのうちの１つに含まれる単語と照合され得る。一致がない場合、このメッセージのために新しいセッションが作成され得る。他の例において、メッセージのコンテンツが構文解析されてキーワードが特定され得る。このキーワードは、類似する１つ以上のセッションを特定するために利用され得る。次に、メッセージのコンテキストに基づいて、１つ以上のセッションのうちの１つのセッションがメッセージと照会され得る。
【００７１】
図３は、モバイル機器３１０上のユーザとボットサーバとの間の、複数のセッションを有する会話の例を示す図である。いくつかの例において、メッセージングアプリケーションサーバ（たとえば、モバイル機器３１０は、メッセージングアプリケーションサーバに関連付けられたメッセージングアプリケーションを含み得る）によってこの会話が容易になり得る。左側のメッセージ（たとえば、メッセージ３２０、３４０、３６０）は、ユーザからのメッセージであり得、右側のメッセージ（たとえば、メッセージ３３０、３５０）は、ボットサーバからのメッセージであり得る。たとえば、ユーザは、モバイル機器３１０にインストールされたメッセージングアプリケーションを用いて、メッセージングアプリケーションサーバに第１メッセージ３２０を送信できる。第１メッセージ３２０は、「ピザが欲しいです。」という文句を含み得る。
【００７２】
上述したように、第１メッセージ３２０は、ボットサーバのセットアップに応じて、ボットサーバのコネクタまたはロードバランサに届き得る。第１メッセージ３２０は、受信メッセージキューに入れられ得、最終的に、メッセンジャープロセッサパイプラインに送信される。メッセンジャープロセッサパイプラインでは、第１メッセージ３２０は、自然言語プロセッサによって解析され得る。第１メッセージ３２０は、第１メッセージ３２０のコンテンツおよびメッセージ３２０のコンテキストに基づいてセッションに入れられ得る。これがユーザとボットサーバとの間の第１メッセージであるため、第１メッセージ３２０は、第１メッセージ３２０用のセッションを作成させる。このセッションは、ユーザに関する情報、メッセージのコンテンツ、およびボットサーバがアクセスできる第１メッセージ３２０に関連付けられたその他の情報を記憶し得る。第１メッセージおよび／またはセッションはボットコードに送信されて、応答が決定され得る。
【００７３】
この応答は、第２メッセージ３３０に含まれる文句「どのような種類のピザが欲しいですか？」を含み得る。第２メッセージ３３０は、ボットコードから送信メッセージキューに送信され得、最終的に、コネクタに送信されて、メッセージングアプリケーションサーバを利用してモバイル機器３１０にインストールされたメッセージングアプリケーションに送り返され得る。モバイル機器３１０にインストールされたメッセージングアプリケーションは、第２メッセージ３３０を受信して、図３に示すように第２メッセージ３３０を表示できる。第２メッセージ３３０からの情報は、セッションに保存され得る。
【００７４】
ユーザは、第２メッセージ３３０を受信後、モバイル機器３１０上のメッセージングアプリケーションを用いて、ボットサーバに第３メッセージ３４０を送信できる。第３メッセージ３４０は、「ピザが欲しいです。」という文句を含み得る。ボットサーバは、セッション化部を用いて、第３メッセージのコンテンツおよび第３メッセージのコンテキストに基づいて第３メッセージ３４０が新しいセッションであると判断できる。たとえば、ユーザが第２メッセージ３３０を受信してから、およびユーザが第３メッセージ３４０を送信してから、時間が経過し得る。別の例において、セッション化部は、第３メッセージ３４０が第２メッセージ３３０に対する応答ではないと判断できる。いずれの例においても、セッション化部は、第３メッセージ３４０用の新しいセッションを作成できる。ボットサーバは、第１メッセージ３２０と同様に（たとえば、どのような種類のピザをユーザが食べたいかを尋ねる第４メッセージ３５０を送信することによって）第３メッセージ３４０に応答できる。
【００７５】
ユーザは、第４メッセージ３５０に対して、ユーザが食べたいピザの種類を含む第５メッセージ３６０で応答できる。ボットサーバは、上述したように第５メッセージ３６０を受信できる。しかしながら、セッション化部は、第５メッセージ３６０用の新しいセッションを作成するのではなく、第５メッセージ３６０が第３メッセージ３４０および第４メッセージ３５０を含む会話の一部であると判定することができる。ボットサーバがこれらの３通のメッセージをまとめることによって、ボットサーバのボットコードは、第３メッセージ、第４メッセージ、および第５メッセージをまとめて解析することによって、第５メッセージ３６０に対してどう応答するかを決定できる。いくつかの例において、応答は、ボットサーバに関連付けられた企業に送信されて、ユーザがペパロニピザを欲しがっていることを通知するメッセージであり得る。
【００７６】
図４は、メッセージをセッションに関連付けるためのプロセス４００の例を説明するフローチャートである。いくつかの態様において、プロセス４００は、ボットサーバによって実行され得る。ボットサーバの具体例を示すが、当業者は、プロセス４００に他のデバイスが含まれ得ることが分かるだろう。
【００７７】
プロセス４００は、論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実現され得る一連の動作を表す。コンピュータ命令において、当該動作は、１つ以上のコンピュータ読み取り可能な記憶媒体上に格納されるコンピュータ実行可能な命令を表し、当該命令は、１つ以上のプロセッサによって実行されると、記載の動作を行う。一般に、コンピュータ実行可能な命令は、特定の機能を実行する、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記載される順序は、限定と解釈される意図はなく、任意の数の記載の動作が任意の順序および／または平行に組み合わされて、プロセスが実行され得る。
【００７８】
これに加えて、プロセス４００は、実行可能な命令を有して構成される１つ以上のコンピュータシステムの制御のもとでハードウェアによって実行され得、ハードウェアまたは１つ以上のコンピュータシステムの組合せによって、１つ以上のプロセッサ上でまとめて実行するコード（たとえば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現され得る。上記のように、当該コードは、機械読み取り可能な記憶媒体上に、たとえば、１つ以上のプロセッサによって実行可能な複数の命令からなるコンピュータプログラムの形で格納され得る。機械読み取り可能な記憶媒体は、非一時的な記憶媒体であり得る。
【００７９】
ステップ４１０において、プロセス４００は、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージを受信するステップを含む。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、統一資源識別子（ＵＲＩ：Uniform Resource Identifier）に関連付けられたボットサーバによって受信され得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ユーザに関連付けられて、メッセージングアプリケーションサーバから当該ＵＲＩに送られ得る。メッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）のうちの１つに関連付けられ得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、モバイル機器からメッセージングアプリケーションサーバに送信され得る。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、自然言語対話を含み得る。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、２人以上のユーザ（たとえば、少なくとも１人のユーザおよびボットサーバ）間の会話に関連付けられ得る。メッセージングアプリケーションサーバによってこの会話が容易になり得る。このような例において、会話は、第１トピックと、第２トピックとを含み得る。第１トピックは、第１セッションに関連付けられ得、第２トピックは、第２セッションに関連付けられ得る。
【００８０】
いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバのコネクタによって受信され得る。コネクタは、メッセージングアプリケーションサーバとボットサーバとの間のインタフェースであり得る。いくつかの例において、コネクタは、複数のメッセージングアプリケーションサーバ間でメッセージを正規化することができる。このような例において、正規化には、メッセージングアプリケーションサーバからのＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ（または、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに含まれるコンテンツ）を共通フォーマットにフォーマットすることが含まれ得る。他の例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバのロードバランサ・コンポーネントによって受信され得る。ロードバランサ・コンポーネントは、ボットサーバの負荷に基づいて、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを複数のコネクタのうちの１つのコネクタに送信できる。ボットサーバは、複数のコネクタを含み得る。
【００８１】
ステップ４２０において、プロセス４００は、メッセージのコンテンツを構文解析してキーワードを特定するステップをさらに含む。ステップ４３０において、プロセス４００は、メッセージのコンテキストおよびキーワードに基づいて複数のセッションの中から現在のセッションを特定するステップをさらに含む。いくつかの例において、複数のセッションのうちの１つのセッションがユーザとボットサーバとの間の対話を表し得る。このセッションは、第１ボットサーバからの第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報と、第２ボットサーバからの第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報とを含み得る。いくつかの例において、このセッションは、第１のメッセージングアプリケーションサーバからの第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報と、第２のメッセージングアプリケーションサーバからの第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報とを含み得る。
【００８２】
コンテキストは、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのタイムスタンプ、企業データ、ユーザからの１通以上の前のメッセージ、ユーザのユーザプロファイル、ユーザの１つ以上のユーザ嗜好、ユーザとボットサーバに関連付けられた企業との間の１つ以上の対話についての以前の履歴、またはそれらの任意の組合せ、のうちの少なくとも１つ以上を含み得る。いくつかの例において、以前の履歴は、過去の購入、過去の会話、過去のアクション、過去のクエリ、過去のＡＰＩ（Application Programming Interface）呼び出し、過去のデータ要求、または過去のデータ検索を含み得る。いくつかの例において、企業データは、メッセージングアプリケーションサーバとは無関係のソースからボットサーバが取得した情報を含み得る。企業データは、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに含まれていないコンテンツを含み得る。タイムスタンプは、メッセージングアプリケーション、メッセージングアプリケーションサーバ、またはボットサーバによってＨＴＴＰメッセージに含まれる情報の少なくとも一部が受信されたタイミングに関連付けられ得る。いくつかの例において、現在のセッションは、当該セッションである。
【００８３】
ステップ４４０において、プロセス４００は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を現在のセッションに関連付けるステップをさらに含む。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを現在のセッションに関連付けるステップは、セッションの開始を決定するステップ、およびＨＴＴＰ  ＰＯＳＴ呼び出しメッセージが現在のセッションに関係するかどうかを決定するステップのうち少なくとも１つ以上を含み得る。
【００８４】
ステップ４５０において、プロセス４００は、現在のセッションに基づいてＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答を生成するステップをさらに含む。いくつかの例において、プロセス４００は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答からの情報をセッションに関連付けるステップをさらに含み得る。
【００８５】
Ｃ．ユーザリゾルバ
上述したように、メッセージプロセッサパイプラインは、ユーザリゾルバ１５４を含み得る。ユーザリゾルバ１５４は、異なるメッセージングアプリケーションサーバ間で、ボットサーバ１２０が受信したメッセージをユーザに関連付けることができる。いくつかの例において、ユーザリゾルバ１５４は、少なくともボットサーバ１２０が第１のメッセージングアプリケーションサーバから受信した第１メッセージ、および、少なくともボットサーバ１２０が第２のメッセージングアプリケーションサーバから受信した第２メッセージが、同じユーザ、同じアカウント、および／または同じセッションに関連付けられていると判断できる。このような例において、メッセージが同じユーザ、同じアカウント、および／または同じセッションに関連付けられている場合であっても、各メッセージの送信者に関連付けられた識別子（たとえば、ユーザＩＤ）は異なり得る。ユーザリゾルバ１５４は、この関連付けを判断することができ、メッセージ、ユーザ、アカウント、および／またはセッション同士を結び付けることができる。
【００８６】
いくつかの例において、セッション化部１５２が保持するセッションは、同じユーザに関連付けられた１つ以上のメッセージングアプリケーションサーバのアカウントへの参照を含み得る。このような例において、ボットサーバ１２０は、第１のメッセージングアプリケーションサーバからメッセージを受信できる。ボットサーバ１２０は、第２のメッセージングアプリケーションサーバを利用して、このメッセージに応答できる。メッセージが異なるメッセージングアプリケーション上で送信された場合、このメッセージは、当該異なるメッセージングアプリケーションに適合するようにフォーマットされ得る。いくつかの例において、このメッセージは、当該メッセージングアプリケーションに一意のオプションを利用できる。たとえば、メッセージは、当該異なるメッセージングアプリケーションが提供するウィジェットを使用できる。
【００８７】
いくつかの例において、ユーザリゾルバ１５４は、既知の企業アカウントに１つ以上のメッセージを結び付けることができる。たとえば、企業アカウントは、銀行預金口座、光熱費口座、または非メッセージングアプリケーションに関連付けられた他のアカウントを含み得る。このような例において、ユーザリゾルバは、上記と同様の方法で、非メッセージングアカウントをメッセージングアカウントに結び付けることができる。たとえば、銀行のボットサーバは、ユーザと銀行との間のトランザクションを容易にすることができる。ユーザは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、またはＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）など、メッセージングアプリケーションから、銀行のサーバと通信できる。ユーザは、１つ以上の本人認証に関する質問によってユーザの素性を確認できる。一旦結び付けられれば、ユーザは、メッセージングアプリケーションを利用して、まるで銀行と直接通信しているかのようにボットサーバと通信できる。
【００８８】
ＦＩＧ．５Ａは、モバイル機器５１０にインストールされた第１メッセージングアプリケーションを用いた、ボットサーバとユーザとの第１の会話の例を示す図である。この会話は、ユーザが第１メッセージングアプリケーションを用いて第１メッセージ５２０をボットサーバに送信することから開始し得る。第１メッセージ５２０は、「ピザが欲しいです。」を含み得る。第１メッセージ５２０は、第１メッセージングアプリケーションに関連付けられた第１のメッセージングアプリケーションサーバを通して、ボットサーバに送信され得る。
【００８９】
ボットサーバは、ボットコードを用いて、第１メッセージ５２０に対して、「どのような種類のピザが欲しいですか？」を含み得る第２メッセージ５２５で応答できる。ユーザは、第２メッセージ５２５に対して、「ペパロニです。」を含み得る第３メッセージ５３０で応答できる。ボットサーバは、ボットコードを用いて、第３メッセージ５３０に対して、「ピザはどちらに配達いたしましょうか？」とユーザに尋ねる第４メッセージ５３５で応答できる。第１、第２、第３、および、第４メッセージは、すべて、ボットサーバのセッション化部によって１つのセッションに含まれ得る。
【００９０】
ＦＩＧ．５Ｂは、モバイル機器５１０上にインストールされた第２メッセージングアプリケーションを用いた、ボットサーバとユーザとの第２の会話の例を示す図である。ＦＩＧ．５Ａに記載のように、第２の会話は、第１の会話の後に起こり得る。第２の会話もまた、第１メッセージ５４０において「ピザが欲しいです。」とユーザがボットサーバに伝えることから開始し得る。
【００９１】
ボットサーバは、第２のメッセージングアプリケーションサーバに関連付けられたユーザが第１のメッセージングアプリケーションサーバに関連付けられたユーザと同じユーザであると判断できる。この判断は、第１のメッセージングアプリケーションサーバに関連付けられたユーザのＩＤと、第２のメッセージングアプリケーションサーバに関連付けられたユーザのＩＤとを比較するステップを含み得る。また、この判断は、第１メッセージングアプリケーションおよび第２メッセージングアプリケーションがインストールされたモバイル機器を検出することも含む。また、この判断は、第１のメッセージングアプリケーションサーバに関連付けられたユーザと第２のメッセージングアプリケーションサーバに関連付けられたユーザとの予め特定された結び付きも含み得る。
【００９２】
ユーザ同士が結び付けられた後、これらの２人のユーザに関連付けられたセッション情報が１つのセッションに含まれ得る。たとえば、第１の会話からのセッションが第２の会話と組み合わされ得る。いくつかの例において、ユーザ同士の結び付きは、特定のメッセージングアプリケーションサーバから２通以上のメッセージが受信された後に判断され得る。このような例においても、ユーザ同士は、結び付けられ得、セッションは、組み合わされ得る。いくつかの例において、ボットサーバは、第２メッセージングアプリケーション上でメッセージをユーザに送信し、第１メッセージングアプリケーションに関連付けられたユーザが第２メッセージングアプリケーションに関連付けられたユーザと同じであるかどうかを尋ねることができる。
【００９３】
一旦ユーザ、アカウント、および／またはセッション同士が結び付けられれば、ボットサーバは、第１のメッセージングアプリケーションサーバに関連付けられた情報を、第２のメッセージングアプリケーションサーバを用いた会話に使用することができる。たとえば、ボットサーバは、第２メッセージ５２５においてなされたように、ピザについて尋ねる一般的な質問で再度応答するのではなく、「ペパロニピザがよろしいでしょうか？」を含む第２メッセージ５４５など、個人用メッセージでユーザに応答することができる。第２の質問５４５は、セッションがＦＩＧ．５Ａの第１の会話から作成されるため、ペパロニという追加情報を含み得る。ボットサーバは、ユーザがペパロニピザを以前注文したことがあるという情報を保存できる。
【００９４】
第２の会話は、メッセージ５５０、５５５、５６０、５６５で継続し得る。メッセージ５５０、５５５、５６０、５６５は、ユーザとボットサーバとの第２の会話と、第２の会話用に作成されたセッションを完結させ得る。
【００９５】
図６は、前のメッセージを受信したメッセージングアプリケーションとは異なるメッセージングアプリケーションを用いて応答するボットサーバの例を示す図である。具体的には、メッセージ６２０、６３０、６４０、６５０は、ＦＩＧ．５Ａに示す、第２メッセージングアプリケーションを用いた第１の会話に含まれ得る。しかしながら、ボットサーバは、ボットコードを用いて、最後の通信文が第２メッセージングアプリケーション（たとえば、第６メッセージ５６５）に含まれていても、第２メッセージングアプリケーションではなく第１メッセージングアプリケーションを用いてユーザに第５メッセージ６６０を送信すると決定できる。
【００９６】
ボットサーバは、いろいろな理由から、第１メッセージングアプリケーションを用いてユーザに第５メッセージ６６０を送信すると決定できる。たとえば、ユーザは、第１メッセージングアプリケーションを用いてメッセージが送信されるのを好むことを示し得る。別の例として、ボットサーバは、ユーザが第２メッセージングアプリケーションに送信されたメッセージを読んでいないと判断し得る。このような例において、ボットサーバは、メッセージが送信または受信されてから経過した時間、および、ユーザが第５メッセージ６６０を受信した切迫度合いなどの情報を使用できる。別の例として、ボットサーバは、第２メッセージングアプリケーションが含まないオプションを第１メッセージングアプリケーションが含んでおり、第１メッセージングアプリケーションの方が第５メッセージ６６０の情報を提示するのに適していると判断できる。たとえば、第１メッセージングアプリケーションは、特定のウィジェットを許可できる一方、第２メッセージングアプリケーションは、許可しない。
【００９７】
図７は、複数のメッセージを１人のユーザ（または、アカウント）に関連付けるためのプロセスの例を説明するフローチャートである。いくつかの態様において、プロセス７００は、ボットサーバによって実行され得る。ボットサーバの具体例を示すが、当業者は、プロセス７００に他のデバイスが含まれ得ることが分かるだろう。
【００９８】
プロセス７００は、論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実現され得る一連の動作を表す。コンピュータ命令において、当該動作は、１つ以上のコンピュータ読み取り可能な記憶媒体上に格納されるコンピュータ実行可能な命令を表し、当該命令は、１つ以上のプロセッサによって実行されると、記載の動作を行う。一般に、コンピュータ実行可能な命令は、特定の機能を実行する、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記載される順序は、限定と解釈される意図はなく、任意の数の記載の動作が任意の順序および／または平行に組み合わされて、プロセスが実行され得る。
【００９９】
これに加えて、プロセス７００は、実行可能な命令を有して構成される１つ以上のコンピュータシステムの制御のもとでハードウェアによって実行され得、ハードウェアまたは１つ以上のコンピュータシステムの組合せによって、１つ以上のプロセッサ上でまとめて実行するコード（たとえば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現され得る。上記のように、当該コードは、機械読み取り可能な記憶媒体上に、たとえば、１つ以上のプロセッサによって実行可能な複数の命令からなるコンピュータプログラムの形で格納され得る。機械読み取り可能な記憶媒体は、非一時的な記憶媒体であり得る。
【０１００】
ステップ７１０において、プロセス７００は、第１のハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージを受信するステップを含む。いくつかの例において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、統一資源識別子（ＵＲＩ：Uniform Resource Identifier）に関連付けられたボットサーバによって受信され得る。第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１ユーザに関連付けられ得、第１のメッセージングアプリケーションサーバからＵＲＩに送られ得る。いくつかの例において、第１のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）のうちの１つに関連付けられ得る。いくつかの例において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、第１のモバイル機器から第１のメッセージングアプリケーションサーバに送信され得る。第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバとの自然言語対話を含み得る。
【０１０１】
ステップ７２０において、プロセス７００は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージを受信するステップをさらに含む。いくつかの例において、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバによって受信され得る。第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第２ユーザに関連付けられ、第２のメッセージングアプリケーションサーバからＵＲＩに送られ得る。いくつかの例において、第２のメッセージングアプリケーションサーバは、第１のメッセージングアプリケーションサーバとは異なり得る。いくつかの例において、第１ユーザのＩＤは、第２ユーザのＩＤとは異なり得る。いくつかの例において、第２のメッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）のうちの１つに関連付けられ得る。このような例において、第１のメッセージングアプリケーションサーバは、第２のメッセージングアプリケーションサーバとは異なり得る。他の例において、第１のメッセージングアプリケーションサーバは、第２のメッセージングアプリケーションサーバと同じであり得る。このような例において、第１ユーザおよび第２ユーザは、それぞれ異なるＩＤを含み得る。いくつかの例において、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツ少なくとも一部は、第２のモバイル機器から第２のメッセージングアプリケーションサーバに送信され得る。第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ボットサーバとの自然言語対話を含み得る。
【０１０２】
ステップ７３０において、プロセス７００は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第１キーワードを特定するステップをさらに含む。ステップ７４０において、プロセス７００は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテキストおよび第１キーワードに基づいて複数のユーザの中から第１の現在のユーザを特定するステップをさらに含む。いくつかの例において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージについて第１の現在のユーザが特定され得る。ステップ７５０において、プロセス７００は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を第１の現在のユーザに関連付けるステップをさらに含む。
【０１０３】
ステップ７６０において、プロセス７００は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツを構文解析して第２キーワードを特定するステップをさらに含む。ステップ７７０において、プロセス７００は、第２メッセージのコンテキストおよび第２キーワードに基づいて複数のユーザの中から第２の現在のユーザを特定するステップをさらに含む。いくつかの例において、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージについて第２の現在のユーザが特定され得る。いくつかの例において、第２の現在のユーザは、第１の現在のユーザであり得る。ステップ７８０において、プロセス７００は、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報を第１の現在のユーザに関連付けるステップをさらに含む。
【０１０４】
ステップ７９０において、プロセス７００は、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、および第１の現在のユーザのうちの少なくとも１つ以上からの情報に基づいて第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答を生成するステップをさらに含む。いくつかの例において、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに対する応答は、第１のメッセージングアプリケーションサーバを用いて送信され得る。いくつかの例において、第１のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、第２のＨＴＴＰ  ＰＯＳＴ呼び出しメッセージ、応答、第１のメッセージングアプリケーションサーバ、第２のメッセージングアプリケーションサーバ、第１ユーザ、および第２ユーザのうちの少なくとも１つ以上からの情報は、セッションに関連付けられる。
【０１０５】
いくつかの例において、プロセス７００は、第１の現在のユーザを企業アカウントに関連付けるステップをさらに含み得る。企業アカウントは、メッセージングアプリケーションサーバとは別であり得る。
【０１０６】
Ｄ．サーバ連携
また、いくつかの例において、セッション化部１５２は、ボットサーバ間のセッションを管理できる。このような例において、１人以上のユーザと第１ボットサーバとの間のセッションは、セッション化部１５２によって維持され得る。セッションは、第１ボットサーバに関連付けられた情報を当該セッションの第１の位置に含み得る。また、セッションは、第２ボットサーバに関連付けられた情報をセッションの第２の位置に含み得る。第１の位置と第２の位置は、それぞれ異なり得る。各ボットサーバに関連付けられた情報を異なる位置に有することによって、情報の上書きを回避できる。
【０１０７】
いくつかの例において、第１ボットサーバは、ユーザ、アカウント、および／またはセッションを、第２ボットサーバにハンドオフまたは転送すると決定できる。このような例において、第１ボットサーバのセッションは、第１ボットサーバが収集、保存、および／または受信したセッションに含まれる情報を第２ボットサーバが有することができるように、第２ボットサーバに転送され得る。たとえば、第１ボットサーバは、人材センターに関連付けられ得る。第１ボットサーバは、第２ボットサーバにユーザを送信して第２ボットサーバからサービスを受信すると決定できる。このような例において、第２ボットサーバは、第１ボットサーバが格納または保存した情報の恩恵を受けることができる。
【０１０８】
ハンドオフを容易にするために、第１ボットサーバは、ちょうどユーザが第２ボットサーバにメッセージを送信するように、メッセージを第２ボットサーバに送信できる。このメッセージは、第２ボットサーバに関連付けられたセッション化部に、第１ボットサーバからのセッションを第２ボットサーバに対して再構成させ得る。他の例において、第１ボットサーバは、ロードバランサ・コンポーネント、受信メッセージキュー、またはメッセージプロセッサパイプラインなど、第２ボットサーバの別の構成要素にメッセージを送信できる。たとえば、ハンドオフメッセージは、以下の通りであり得る。
【０１０９】
【数２】
2019528495.tif 000004
【０１１０】
いくつかの例において、セッション情報は、ボットサーバ間で切り離され得る。たとえば、ハンドオフが発生した場合、第１ボットサーバからのセッション情報と第２ボットサーバからのセッション情報は、別々に保存され得る。
【０１１１】
いくつかの例において、第２ボットサーバは、セッションを第１ボットサーバに戻すことができる。この転送は、第２ボットサーバがその目的を完了したときに起こり得る。いくつかの例において、第２ボットサーバは、上述したようにメッセージを第１ボットサーバのセッション化部に送信してセッションを第１ボットサーバに戻すことができる。また、この転送は、第１ボットサーバがハンドオフをキャンセルしたときに起こり得る。たとえば、第１ボットサーバは、第２ボットサーバが時間がかかりすぎていると判断できる。このような例において、第１ボットサーバは、第２ボットサーバのセッション化部にメッセージを送信してセッションを第１ボットサーバに戻すことができる。たとえば、第２ボットサーバから第１ボットサーバにセッションを戻すためのメッセージは、以下の通りであり得る。
【０１１２】
【数３】
2019528495.tif 000005
【０１１３】
例示のために、企業における新しい従業員の例を説明することができる。新しい従業員には、最初に完了しなければならないいくつかのタスクがある。たとえば、電子メールが発行され得、ラップトップが注文され得、場所が割り当てられ得る。しかしながら、タスクは、各々、企業において異なる人に関連付けられ得る。このような例において、ボットサーバは、各タスクに関連付けられ得る。そして、各ボットサーバは、その他のボットサーバと通信して効率を改善させることができる。
【０１１４】
ＦＩＧ．８Ａ〜ＦＩＧ．８Ｂは、１つの会話中の第１ボットサーバと第２ボットサーバとの間のハンドオフの例を示す図である。ＦＩＧ．８Ａ〜ＦＩＧ．８Ｂの目的のために、ＦＩＧ．８Ｂの会話は、ＦＩＧ．８Ａの会話の続きであると見ることができるだろう。この１つの会話は、企業における新しい従業員に関し得る。新しい従業員に、企業においていくつかのエンティティと個々に接触させるのではなく、本明細書における例では、モバイル機器８１０にインストールされたメッセージングアプリケーションにおいて従業員に１つのメッセージスレッドを使用させる。
【０１１５】
たとえば、ユーザは、モバイル機器８１０上にインストールされたメッセージングアプリケーションのチャットウィンドウにおいて、第１メッセージ８２０を第１ボットサーバに送信できる。第１メッセージ８２０は、メッセージングアプリケーションに関連付けられたメッセージングアプリケーションサーバに送信され得る。メッセージングアプリケーションサーバは、第１メッセージ８２０を第１ボットサーバに送信できる。第１ボットサーバは、ボットコードを用いて、第１メッセージ８２０に対して、「こんにちは、人事です。お名前は何ですか？」を含む第２メッセージ８２５で応答することができる。ユーザは、第２メッセージ８２５に対して、「ボブです。」を含む第３メッセージ８３０で応答できる。第１ボットサーバは、ユーザに関連付けられたセッションに、ユーザの名前として「ボブ」を保存できる。
【０１１６】
第１ボットサーバは、ユーザが「新しいコンピュータが欲しい」かどうかを尋ねる第４メッセージ８３５で第３メッセージに返信できる。第４メッセージ８３５に対する返信である第５メッセージ８４０においてユーザが「はい。」と応答することによって、第１ボットサーバのボットコードは、セッションが第２ボットサーバにハンドオフされるべきであると判断できる。第２ボットサーバは、新しい従業員の第１ステップである、コンピュータを注文することに関連付けられ得る。ハンドオフを容易にするために、第１ボットサーバは、転送要求を第２ボットサーバに送信できる。転送要求は、第２ボットサーバのセットアップに応じて、コネクタまたはロードバランサにおいて受信され得る。いくつかの例において、転送要求は、受信メッセージキューまたはセッション化部を含む、第２ボットサーバの異なる要素に送信され得る。転送要求は、セッションに関連付けられる１通以上の新しい受信メッセージが第１ボットサーバではなく第２ボットサーバによって受信されるように、ユーザに関連付けられたセッションの第１ボットサーバとの関連付けを解除させて、当該セッションを第２ボットサーバに関連付けさせ得る。
【０１１７】
いくつかの例において、１通以上の新しいメッセージが、第１ボットサーバではなく、第２ボットサーバによって受信され得る。なぜならば、第１ボットサーバに関連付けられたＵＲＩが変更され得るからである。たとえば、第１ボットサーバおよび第２ボットサーバを再構成することによって、ＵＲＩは、第１ボットサーバではなく、第２ボットサーバに割り当てられ得る。別の例として、メッセージングアプリケーションサーバが新しいメッセージを第２ボットサーバに送信するようにセッションのＵＲＩを変更するためのメッセージが、メッセージングアプリケーションサーバに送信され得る。別の例として、ＵＲＩは、１つ以上のボットサーバ宛てのすべてのメッセージを受信する管理サーバに関連付けられ得る。次に、管理サーバは、メッセージを適切なボットサーバに送信し得る。別の例として、第１ボットサーバは、第２ボットサーバの仲介役として機能し得、第１ボットサーバが受信したメッセージを第２ボットサーバに転送する。
【０１１８】
ここで、第１ボットサーバがメッセージに応答するのではなく、第２ボットサーバがメッセージングアプリケーションサーバを通してメッセージに応答する。しかしながら、このメッセージは、第２ボットサーバが第１ボットサーバであるかのように、チャットウィンドウに含まれたままであり得る。転送要求、および、第５メッセージ８４０におけるユーザによる肯定的回答に応答して、第２ボットサーバは、第６メッセージ８４５をユーザに送信できる。第６メッセージ８４５は、「ボブさん、どのような種類のコンピュータが欲しいですか？」を含み得る。このような例において、ユーザは、別のボットサーバがユーザと通信していることに気が付かないだろう。ユーザは、第６メッセージ８４５に対して第７メッセージ８５０で応答できる。ユーザと第２ボットサーバとの会話は、第２ボットサーバがその目的（たとえば、ボブのためにコンピュータを注文する）を完了するまで継続し得る。第２ボットサーバがその目的を完了した場合、第２ボットサーバは、ユーザを第１ボットサーバに戻す、ユーザを第３ボットサーバに送信する、または、この会話を完了させることができる（サーバ間の転送は、上記と同様の方法で行われ得る）。
【０１１９】
図９は、第１ボットサーバに従って第２ボットサーバがタイムアウトした後の、第１ボットサーバと第２ボットサーバとの間のハンドオフの例を示す図である。このような例において、第１ボットサーバは、第２ボットサーバがその目的を完了するタイマを設定し得る。たとえば、第１ボットサーバは、第２ボットサーバがその目的を１０分で完了することが望ましいと決定できる。タイマが満了すると、第１ボットサーバは、第２ボットサーバにメッセージを送信し、ユーザと第２ボットサーバとの会話のステータスを要求できる。まだユーザを処理中であると第２ボットサーバが第１ボットサーバに応答した場合、第１ユーザは、第２ボットサーバとのハンドオフを終了する（そして、第１ボットサーバにユーザを戻す）、第２ボットサーバがその目的を完了する新しいタイマをセットする（これは、上記と同様の方法で動作する）、または、何もしない、と決定できる。
【０１２０】
ハンドオフを終了するために、第１ボットサーバは、第２ボットサーバにメッセージを送信できる。当該メッセージは、第１および第２ボットサーバのセットアップに応じて、コネクタ、ロードバランサ、またはセッション化部に送信され得る。メッセージは、ＦＩＧ．８に上記した同様の方法で、セッションの第２ボットサーバとの関連付けを解除させて、当該セッションを第１ボットサーバに関連付けさせることができる。第２ボットサーバとのハンドオフを終了することによって、本明細書における例は、第２ボットサーバのボットコードが遅延、失敗、またはフリーズする状況に対処できる。
【０１２１】
たとえば、ユーザが第７メッセージ９５０（第７メッセージ８５０と同様）を送信した後、第１ボットサーバは、第１ボットサーバが第２ボットサーバへのハンドオフを終了することが望ましいと決定できる。第２ボットサーバへのハンドオフを終了することによって、上述したように、セッションの第２ボットサーバとの関連付けは解除され、当該セッションは、第１ボットサーバに関連付けられる。ハンドオフの後、第１ボットサーバは、「欲しいコンピュータを注文し終わりましたか？」と尋ねる第８メッセージ９５５をユーザに送信できる。その後、第１ボットサーバは、ユーザとの会話を継続できる。
【０１２２】
他の例において、第１ボットサーバは、第２ボットサーバが完了できなかったと判断できる。このような例において、第１ボットサーバは、第８メッセージ９５５の送信を取りやめて、第２ボットサーバが完了できなかったことを分かった状態で会話を継続することができる。第１ボットサーバは、セッションを解析することによって、第２ボットサーバが完了できなかったと判断できる。
【０１２３】
図１０は、サーバ連携のためのプロセス１０００の例を示すフローチャートである。いくつかの態様において、プロセス１０００は、ボットサーバによって実行され得る。ボットサーバの具体例を示すが、当業者は、プロセス１０００に他のデバイスが含まれ得ることが分かるだろう。
【０１２４】
プロセス１０００論理フロー図として示されており、その動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実現され得る一連の動作を表す。コンピュータ命令において、当該動作は、１つ以上のコンピュータ読み取り可能な記憶媒体上に格納されるコンピュータ実行可能な命令を表し、当該命令は、１つ以上のプロセッサによって実行されると、記載の動作を行う。一般に、コンピュータ実行可能な命令は、特定の機能を実行する、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記載される順序は、限定と解釈される意図はなく、任意の数の記載の動作が任意の順序および／または平行に組み合わされて、プロセスが実行され得る。
【０１２５】
これに加えて、プロセス１０００は、実行可能な命令を有して構成される１つ以上のコンピュータシステムの制御のもとでハードウェアによって実行され得、ハードウェアまたは１つ以上のコンピュータシステムの組合せによって、１つ以上のプロセッサ上でまとめて実行するコード（たとえば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実現され得る。上記のように、当該コードは、機械読み取り可能な記憶媒体上に、たとえば、１つ以上のプロセッサによって実行可能な複数の命令からなるコンピュータプログラムの形で格納され得る。機械読み取り可能な記憶媒体は、非一時的な記憶媒体であり得る。
【０１２６】
ステップ１０１０において、プロセス１０００は、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）ＰＯＳＴ呼び出しメッセージを受信するステップを含む。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、第１統一資源識別子（ＵＲＩ：Uniform Resource Identifier）を有する第１ボットサーバによって受信され得る。ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、ユーザに関連付けられて、メッセージングアプリケーションサーバから当該ＵＲＩに送られ得る。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージからの情報は、セッションに関連付けられ得る。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージは、自然言語対話を含み得る。いくつかの例において、メッセージングアプリケーションサーバは、ＦＡＣＥＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキスト／音声メッセージング通信サービス、ＫＩＫ（登録商標）Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）Ｍｅｓｓｅｎｇｅｒ、およびＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）のうちの１つに関連付けられ得る。いくつかの例において、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージのコンテンツの少なくとも一部は、モバイル機器からメッセージングアプリケーションサーバに送信される。
【０１２７】
ステップ１０２０において、プロセス１０００は、ＨＴＴＰ  ＰＯＳＴ呼び出しメッセージに基づいて第２ボットサーバにセッションを転送すると決定するステップをさらに含む。いくつかの例において、この転送の決定は、第１ボットサーバによるものであり得る。いくつかの例において、第２ボットサーバは、第２ＵＲＩを含み得る。
【０１２８】
ステップ１０３０において、プロセス１０００は、第１ボットサーバによって、転送要求を送信するステップをさらに含む。いくつかの例において、転送要求は、セッションの第１ボットサーバとの関連付けを解除させて、当該セッションを第２ボットサーバに関連付けさせ得る。いくつかの例において、第１ボットサーバに関連付けられた情報は、第２ボットサーバに関連付けられた情報とは別にセッションに保存され得る。
【０１２９】
いくつかの例において、プロセス１０００は、第１ボットサーバまたは第２ボットサーバによってリターン要求を送信するステップをさらに含み得る。リターン要求は、セッションの第２ボットサーバとの関連付けを解除させて、当該セッションを第１ボットサーバに関連付けさせ得る。いくつかの例において、リターン要求は、転送要求が送信または受信されてから時間が経過した後に送信され得る。
【０１３０】
Ｅ．例示的なシステム
図１１は、分散システム１１００を簡素化した図を示す。分散システム１１００は、１つ以上のクライアントコンピューティングデバイス１１０２、１１０４、１１０６、および１１０８を備える。１つ以上のクライアントコンピューティングデバイス１１０２、１１０４、１１０６、および１１０８は、各々、１つ以上のネットワーク（複数可）１１１０で、ウェブブラウザ、プロプライエタリ・クライアント（たとえば、Oracle Forms）などのクライアントアプリケーションを実行および操作するように構成され得る。サーバ１１１２は、ネットワーク１１１０を介して、リモートクライアントコンピューティングデバイス１１０２、１１０４、１１０６、および１１０８と通信可能に接続されてもよい。
【０１３１】
さまざまな例において、サーバ１１１２は、分散システム１１００の構成要素のうちの１つ以上が提供する１つ以上のサービスまたはソフトウェアアプリケーションを実行するようになされてもよい。サービスまたはソフトウェアアプリケーションは、非仮想環境および仮想環境を含み得る。仮想環境は、２次元表現であれ３次元（３Ｄ）表現であれ、仮想イベント、見本市、シミュレータ、教室、品物の売買、および企業のための仮想環境、ページベースの論理的環境、または上記以外のその他のものを含み得る。いくつかの例において、これらのサービスは、クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および／または１１０８のユーザに対して、ウェブベースのサービスもしくはクラウドサービスとして提供されてもよく、または、ＳａａＳ（Software as a Service）モデル下で提供されてもよい。クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および／または１１０８を操作するユーザは、１つ以上のクライアントアプリケーションを利用してサーバ１１１２とやり取りして、これらの構成要素が提供するサービスを利用できる。
【０１３２】
図１１において、分散システム１１００のソフトウェアコンポーネント１１１８、１１２０、および１１２２がサーバ１１１２上に実装されたものとして示される。他の例において、分散システム１１００の構成要素のうちの１つ以上および／またはこれらの構成要素が提供するサービスのうちの１つ以上は、クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および／または１１０８のうちの１つ以上によって実現されてもよい。次に、クライアントコンピューティングデバイスを操作しているユーザは、１つ以上のクライアントアプリケーションを利用して、これらの構成要素が提供するサービスを使用してもよい。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。さまざまな異なるシステム構成が可能であり、これらは、分散システム１１００とは異なってもよいことを理解されたい。よって、図に示す例は、例示的なシステムを実現するための分散システムの一例であって、限定を意図したものではない。
【０１３３】
クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および／または１１０８は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのソフトウェアおよび／またはｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  １０、Ｐａｌｍ  ＯＳなどのいろいろなモバイルオペレーティングシステムを実行し、かつ、インターネット、電子メール、ＳＭＳ（Short Message Service）、Ｂｌａｃｋｂｅｒｒｙ（登録商標）、または他の通信プロトコルに対応する手のひらサイズのポータブルデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）、携帯電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、ＰＤＡ（Personal Digital Assistant））またはウェアラブルデバイス（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）であってもよい。クライアントコンピューティングデバイスは、例として、さまざまなバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、これらに限定されないが、たとえば、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどいろいろなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを含む各種市販のＵＮＩＸ（登録商標）またはＵＮＩＸに似たオペレーティングシステムを実行するワークステーションコンピュータであり得る。これに代えて、またはこれに加えて、クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および１１０８は、シン・クライアントコンピュータ、インターネット対応のゲーミングシステム（たとえば、Ｋｉｎｅｃｔ（登録商標）ジェスチャ入力装置付きまたは無しのＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘのゲーミングコンソール）、および／またはパーソナルメッセージングデバイスなど、ネットワーク（複数可）１１１０で通信可能なその他の電子機器であってもよい。
【０１３４】
例示的な分散システム１１００は、４台のクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサ付きデバイスなど、他のデバイスがサーバ１１１２と対話を行ってもよい。
【０１３５】
分散システム１１００におけるネットワーク（複数可）１１１０は、これらに限定されないが、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、ＳＮＡ（Systems Network Architecture）、ＩＰＸ（Internet Packet Exchange）、ＡｐｐｌｅＴａｌｋなどを含む、各種市販のプロトコルを使用したデータ通信をサポートできる、当業者にとってなじみのある任意の種類のネットワークであってもよい。単に一例として、ネットワーク（複数可）１１１０は、Ｅｔｈｅｒｎｅｔ（登録商標）および／またはトークンリングなどに基づいたＬＡＮ（Local Area Network）などのＬＡＮであり得る。ネットワーク（複数可）１１１０は、ワイドエリアネットワークおよびインターネットであり得る。ネットワーク（複数可）１１１０は、これらに限定されないが、ＶＰＮ（Virtual Private Network）、イントラネット、エクストラネット、ＰＳＴＮ（Public Switched Telephone Network）、赤外線ネットワーク、ワイヤレスネットワーク（たとえば、ＩＥＥＥ（Institute of Electrical and Electronics）８０２．１１スイートのプロトコル、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／またはその他のワイヤレスプロトコルのうちのいずれかの下で動作するネットワーク）、および／もしくはこれらの任意の組合せを含む仮想ネットワーク、ならびに／または他のネットワークを含み得る。
【０１３６】
サーバ１１１２は、１つ以上の汎用コンピュータ、専用サーバコンピュータ（一例として、ＰＣ（Personal Computer）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジ・サーバ、メインフレーム・コンピュータ、ラックマウント式サーバなどを含む）、サーバファーム、サーバ・クラスタ、またはその他の適切な配置および／もしくは組合せから構成されてもよい。サーバ１１１２は、仮想オペレーティングシステムを実行している１つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理記憶装置の１つ以上のフレキシブルプールを仮想化して、サーバ用の仮想記憶装置を維持することができる。仮想ネットワークは、ＳＤＮ（Software-Defined Networking）を用いて、サーバ１１１２によって制御され得る。さまざまな例において、サーバ１１１２は、上記の開示において説明した１つ以上のサービスまたはソフトウェアアプリケーションを実行するようになされてもよい。たとえば、サーバ１１１２は、本開示の例に従って上述した処理を行うためのサーバに対応してもよい。
【０１３７】
サーバ１１１２は、上述のオペレーティングシステムのいずれか、および任意の市販のサーバオペレーティングシステムを実行してもよい。また、サーバ１１１２は、ＨＴＴＰ（Hypertext Transport Protocol）サーバ、ＦＴＰ（File Transfer Protocol）サーバ、ＣＧＩ（Common Gateway Interface）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含む、各種の追加のサーバアプリケーションおよび／またはミッドティア・アプリケーションを実行してもよい。例示的なデータベースサーバとして、Ｏｒａｃｌｅ、Ｍｉｃｒｏｓｏｆｔ、Ｓｙｂａｓｅ、ＩＢＭ（International Business Machines）などが販売するデータベースサーバが挙げられるが、これらに限定されない。
【０１３８】
いくつかの実装形態において、サーバ１１１２は、クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および１１０８のユーザから受信したデータフィードおよび／またはイベント更新を分析するおよび１つにまとめるための１つ以上のアプリケーションを含んでもよい。例として、データフィードおよび／またはイベント更新は、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新、または１つ以上のサードパーティ情報ソースおよび連続したデータストリームから受信されるリアルタイム更新を含んでもよいが、これらに限定されない。データフィードおよび／またはイベント更新は、センサーデータアプリケーション、チッカー（financial ticker）、ネットワークパフォーマンス測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通量監視などに関するリアルタイムイベントを含み得る。また、サーバ１１１２は、クライアントコンピューティングデバイス１１０２、１１０４、１１０６、および１１０８の１つ以上の表示装置を介してデータフィードおよび／またはリアルタイムイベントを表示するための１つ以上のアプリケーションを含んでもよい。
【０１３９】
また、分散システム１１００は、１つ以上のデータベース１１１４および１１１６を含んでもよい。データベース１１１４および１１１６は、いろいろな場所に存在してもよい。例として、データベース１１１４および１１１６のうちの１つ以上は、サーバ１１１２にローカルな（および／または存在する）非一時的な記憶媒体上に存在してもよい。これに代えて、データベース１１１４および１１１６は、サーバ１１１２から遠隔の場所に存在し、ネットワークベースの接続または専用の接続を通してサーバ１１１２と通信していてもよい。一組の例において、データベース１１１４および１１１６は、ＳＡＮ（Storage-Area Network）に存在してもよい。同様に、サーバ１１１２に起因する機能を実行するための必要なファイルは、いずれも、サーバ１１１２上のローカルな場所および／またはサーバ１１１２から遠隔の場所に適宜格納されてもよい。一組の例において、データベース１１１４および１１１６は、Ｏｒａｃｌｅが提供するデータベースなど、ＳＱＬフォーマットのコマンドに応答してデータを格納、更新、および取り出すようになされたリレーショナルデータベースを含んでもよい。
【０１４０】
図１２は、システム環境１２００の１つ以上の構成要素を簡略化したブロック図である。システム環境１２００によって、１つ以上の構成要素が提供するサービスがクラウドサービスとして提供されてもよい。図示された例において、システム環境１２００は、１つ以上のクライアントコンピューティングデバイス１２０４、１２０６、および１２０８を含む。１つ以上のクライアントコンピューティングデバイス１２０４、１２０６、および１２０８は、ユーザによって、クラウドサービスを提供するクラウドインフラストラクチャシステム１２０２と対話するために使用されもよい。クライアントコンピューティングデバイスは、ウェブブラウザ、プロプライエタリ・クライアントアプリケーション（たとえば、Oracle Forms）、または他のアプリケーションなど、クライアントアプリケーションを操作するように構成されてもよい。クライアントアプリケーションは、クライアントコンピューティングデバイスのユーザによって、クラウドインフラストラクチャシステム１２０２と対話を行ってクラウドインフラストラクチャシステム１２０２が提供するサービスを利用するために使用され得る。
【０１４１】
クラウドインフラストラクチャシステム１２０２が図示された構成要素以外の構成要素を有し得ることを理解されたい。さらに、図に示す例は、本開示の例を組み込み得るクラウドインフラストラクチャシステムの一例に過ぎない。他のいくつかの例において、クラウドインフラストラクチャシステム１２０２は、図１２に示す構成要素よりも多いまたは少ない数の構成要素を有してもよく、２つ以上の構成要素を組み合わせてもよく、または構成要素の構成もしくは配置が異なっていてもよい。
【０１４２】
クライアントコンピューティングデバイス１２０４、１２０６、および１２０８は、１１０２、１１０４、１１０６、および１１０８に関して上述したクライアントコンピューティングデバイスと同様のデバイスであってもよい。例示的なシステム環境１２００は、３つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサ付きデバイスなど、他のデバイスがクラウドインフラストラクチャシステム１２０２と対話を行ってもよい。
【０１４３】
ネットワーク（複数可）１２１０は、クライアント１２０４、１２０６、および１２０８とクラウドインフラストラクチャシステム１２０２との間のデータの通信およびやり取りを容易にしてもよい。各ネットワークは、ネットワーク（複数可）１２１０に関して上述したプロトコルを含む各種市販のプロトコルのいずれかを用いたデータ通信をサポートできる、当業者にとってなじみのある任意の種類のネットワークであってもよい。
【０１４４】
クラウドインフラストラクチャシステム１２０２は、サーバ１１１２に関して上述したコンピュータおよびサーバを含み得る１台以上のコンピュータおよび／またはサーバから構成されてもよい。
【０１４５】
特定の例において、クラウドインフラストラクチャシステムが提供するサービスは、オンラインのデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされたオフィススイートドキュメント連携サービス、データベース処理、管理されたテクニカルサポートサービスなど、クラウドインフラストラクチャシステムのユーザが要求すれば利用可能になるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムが提供するサービスは、動的にスケール変更してそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムが提供するサービスを具体的にインスタンス化したものは、本明細書において、「サービスインスタンス」と称される。一般に、インターネットなどの通信ネットワークを介してユーザが利用できるようになる、クラウドサービスプロバイダのシステムからのいずれのサービスも、「クラウドサービス」と称される。通常、パブリッククラウド環境において、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客所有のオンプレミス・サーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、要求に基づいてアプリケーションを注文および使用すればよい。
【０１４６】
いくつかの例において、コンピュータネットワークのクラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされたデータベース、ホストされたウェブサーバ、ソフトウェアアプリケーションへの保護されたコンピュータネットワークアクセス、もしくはクラウドベンダーがユーザに提供するその他のサービス、または、当技術分野で周知の上記以外のその他のサービスを含んでもよい。たとえば、サービスは、インターネットを通した、クラウド上のリモートストレージへのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワークで結ばれた開発者が私的使用するための、ウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語のミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上にホストされた電子メールソフトウェア・アプリケーションへのアクセスを含み得る。
【０１４７】
特定の例において、クラウドインフラストラクチャシステム１２０２は、顧客にセルフサービスでサブスクリプション方式で伸縮自在にスケーラブルで信頼性があり、かつ高い可用性を有するセキュアな方法で届けられるアプリケーションのスイート、ミドルウェア、およびデータベースサービス提供物を含んでもよい。このようなクラウドインフラストラクチャシステムの例が、本願の譲受人が提供するオラクルパブリッククラウド（Oracle Public Cloud）である。
【０１４８】
ビッグデータと呼ばれることもある大容量のデータは、インフラストラクチャシステムによって、多くのレベルかつ異なる規模でホストおよび／または操作され得る。このようなデータは、大規模かつ複雑過ぎるために通常のデータベース管理ツールまたは旧来のデータ処理アプリケーションを用いて処理することが難しいデータセットを含み得る。たとえば、パーソナルコンピュータまたはそれらのラック式パーソナルコンピュータを用いてテラバイトのデータを格納、取り出し、および処理することは、難しいだろう。最新のリレーショナルデータベース管理システムおよびデスクトップ統計データならびに可視化パッケージを用いてこのようなサイズのデータを扱うのは難しいだろう。このようなサイズのデータを許容可能な経過時間内で収取、取りまとめ、管理、および処理するためには、よく用いられるソフトウェアツールの構造では対応できない何千ものサーバコンピュータを実行する大規模並列処理ソフトウェアを必要とし得る。
【０１４９】
大量のデータを可視化する、トレンドを検出する、および／または当該データを用いてやり取りするために、極めて大きなデータセットが格納されてアナリストおよび研究者によって操作され得る。このようなデータを提示する、またはこのデータに対する外力または当該データが表すものをシミュレーションするために、並列にリンクされた何十、何百、または何千ものプロセッサがこのデータに作用し得る。これらのデータセットは、データベースに編成された構造化データもしくは構造化モデルに応じて編成された構造化データ、および／または非構造化データ（たとえば、Ｅメール、画像、データＢＬＯＢ（Binary Large Objects）、ウェブページ、複雑なイベント処理など）を伴い得る。比較的素早くより多くの（または、より少ない）コンピューティングリソースを目標に集中させる例の能力を活用することによって、クラウドインフラストラクチャシステムは、事業、政府関係機関、研究機関、私人、同じ意見を持った個人同士のグループもしくは組織、または他のエンティティからの要求に基づいて大きなデータセットに対してタスクを実行するためにさらに利用できるようになってもよい。
【０１５０】
さまざまな例において、クラウドインフラストラクチャシステム１２０２は、クラウドインフラストラクチャシステム１２０２が提供するサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理、および追跡するようになされてもよい。クラウドインフラストラクチャシステム１２０２は、それぞれ異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドサービス（たとえば、オラクルコーポレーション所有）を販売する組織がクラウドインフラストラクチャシステム１２０２を所有してサービスが一般大衆またはそれぞれ異なる産業企業に利用可能になるパブリッククラウドモデル下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム１２０２が１つの組織のためだけに動かされてクラウドインフラストラクチャシステム１２０２が組織内の１つ以上のエンティティ用のサービスを提供し得るプライベートクラウドモデル下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム１２０２およびクラウドインフラストラクチャシステム１２０２が提供するサービスが関連コミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデル下で提供されてもよい。クラウドサービスは、２つ以上の異なるモデルの組み合せであるハイブリッドクラウドモデル下で提供されてもよい。
【０１５１】
いくつかの例において、クラウドインフラストラクチャシステム１２０２が提供するサービスは、ＳａａＳ（Software as a Service）カテゴリ、ＰａａＳ（Platform as a Service）カテゴリ、ＩａａＳ（Infrastructure as a Service）カテゴリ下で提供される１つ以上のサービス、またはハイブリッドサービスを含むその他のカテゴリのサービスを含んでもよい。顧客は、クラウドインフラストラクチャシステム１２０２が提供する１つ以上のサービスを、サブスクリプションの注文によって注文してもよい。次に、クラウドインフラストラクチャシステム１２０２は、処理を実行して、顧客のサブスクリプションの注文にあるサービスを提供する。
【０１５２】
いくつかの例において、クラウドインフラストラクチャシステム１２０２が提供するサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを含んでもよいが、これらに限定されない。いくつかの例において、アプリケーションサービスは、ＳａａＳサービスを介してクラウドインフラストラクチャシステムによって提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに該当するクラウドサービスを提供するように構成されてもよい。たとえば、ＳａａＳプラットフォームは、オンデマンドアプリケーションのスイートを構築して統合開発／デプロイメントプラットフォームに届けるための機能を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御してもよい。ＳａａＳプラットフォームが提供するサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、アプリケーションサービスを、ライセンスおよびサポートを別に購入する必要なしに、入手できる。さまざまな異なるＳａａＳサービスが提供されてもよい。例として、大きな組織のための販売実績管理、企業統合、および事業の柔軟性に対するソリューションを提供するサービスなどが挙げられるが、これに限定されない。
【０１５３】
いくつかの例において、プラットフォームサービスは、ＰａａＳプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。ＰａａＳプラットフォームは、ＰａａＳカテゴリに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスとして、存在するアプリケーションを組織（Ｏｒａｃｌｅなど）が共有の共通アーキテクチャ上に１つにまとめることを可能にするサービス、およびプラットフォームサービスが提供する共有サービスを活用する新しいアプリケーションを作る能力などが挙げられるが、これらに限定されない。ＰａａＳプラットフォームは、ＰａａＳサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、ＰａａＳクラウドインフラストラクチャシステムが提供するサービスを、ライセンスおよびサポートを別に購入する必要なしに、入手できる。プラットフォームサービスとして、ＪＣＳ（Oracle Java Cloud Service）、ＤＢＣＳ（Oracle Database Cloud Service）、およびその他が挙げられるが、これらに限定されない。
【０１５４】
ＰａａＳプラットフォームが提供するサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムがサポートするプログラミング言語およびツールを採用することができ、また、デブロイされたサービスを管理することができる。いくつかの例において、クラウドインフラストラクチャシステムが提供するプラットフォームサービスは、データベース・クラウドサービス、ミドルウェアクラウドサービス（たとえば、Ｏｒａｃｌｅ  Ｆｕｓｉｏｎ  Ｍｉｄｄｌｅｗａｒｅサービス）、およびＪａｖａクラウドサービスを含んでもよい。一例において、データベース・クラウドサービスは、組織がデータベースリソースをプールすることと、データベース・クラウドの形でＤａｔａｂａｓｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅを顧客に提供することとを可能にする共有サービスデプロイメントモデルをサポートしてもよい。クラウドインフラストラクチャシステムにおいて、ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発およびデプロイするためのプラットフォームを提供してもよく、Ｊａｖａクラウドサービスは、顧客がＪａｖａアプリケーションをデプロイするためのプラットフォームを提供してもよい。
【０１５５】
クラウドインフラストラクチャシステムでは、ＩａａＳプラットフォームによってさまざまな異なるインフラストラクチャサービスが提供されてもよい。インフラストラクチャサービスによって、ストレージ、ネットワークなど基礎となるコンピューティングリソース、および、ＳａａＳプラットフォームおよびＰａａＳプラットフォームが提供するサービスを利用している顧客のためのその他の基本的なコンピューティングリソースの管理および制御が容易になる。
【０１５６】
また、特定の例において、クラウドインフラストラクチャシステム１２０２は、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャ・リソース１２３０を含んでもよい。一例において、インフラストラクチャ・リソース１２３０は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームが提供するサービスを実行するための、サーバなどのハードウェアと、ストレージと、ネットワーキング・リソースとの予め統合された最適な組合せを含んでもよい。
【０１５７】
いくつかの例において、クラウドインフラストラクチャシステム１２０２におけるリソースは、複数のユーザによって共有され、要求に応じて動的に再割り当てされてもよい。これに加えて、リソースは、それぞれ異なるタイムゾーンのユーザに割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム１２３０は、第１のタイムゾーンにいる第１セットのユーザがクラウドインフラストラクチャシステムのリソースを指定された時間数利用することを可能にした後、異なるタイムゾーンに位置する別のセットのユーザに同じリソースを再割り当てすることを可能にし、リソースの利用を最大限に活用できるようになる。
【０１５８】
特定の例において、クラウドインフラストラクチャシステム１２０２のそれぞれ異なる構成要素またはモジュールによって、およびクラウドインフラストラクチャシステム１２０２が提供するサービスによって共有されるいくつかの内部共有サービス１２３２が提供されてもよい。これらの内部共有サービスは、セキュリティ／素性サービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャン／ホワイトリストサービス、可用性の高いバックアップ・リカバリサービス、クラウドサポートを可能にするためのサービス、Ｅメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【０１５９】
特定の例において、クラウドインフラストラクチャシステム１２０２は、クラウドインフラストラクチャシステムにおけるクラウドサービス（たとえば、ＳａａＳサービス、ＰａａＳサービス、およびＩａａＳサービス）の包括的な管理を提供してもよい。一例において、クラウド管理機能は、クラウドインフラストラクチャシステム１２０２が受信した顧客のサブスクリプションなどをプロビジョニング、管理、および追跡するための機能を含んでもよい。
【０１６０】
一例において、図１２に示すように、クラウド管理機能は、オーダー管理モジュール１２２０、オーダーオーケストレーションモジュール１２２２、オーダープロビジョニングモジュール１２２４、オーダー管理／監視モジュール１２２６、および素性管理モジュール１２２８など、１つ以上のモジュールによって提供されてもよい。これらのモジュールは、１つ以上のコンピュータおよび／またはサーバを含んでもよく、または、これらを使用して提供されてもよい。１つ以上のコンピュータおよび／またはサーバは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバ・クラスタ、またはその他の適切な配置および／もしくは組合せであり得る。
【０１６１】
例示的な動作１２３４において、クライアントデバイス１２０４、１２０６、または１２０８などのクライアントデバイスを使用している顧客は、クラウドインフラストラクチャシステム１２０２が提供する１つ以上のサービスを要求し、クラウドインフラストラクチャシステム１２０２が提供する１つ以上のサービスのサブスクリプションを注文することによって、クラウドインフラストラクチャシステム１２０２と対話してもよい。特定の例において、顧客は、クラウドＵＩ（User Interface）、クラウドＵＩ１２１２、クラウドＵＩ１２１４、および／またはクラウドＵＩ１２１６にアクセスし、これらのＵＩを介してサブスクリプションの注文を行ってもよい。顧客が注文をすることに応答してクラウドインフラストラクチャシステム１２０２が受信するオーダー情報は、この顧客を特定する情報、および、クラウドインフラストラクチャシステム１２０２が提供する、顧客がサブスクリプションをする目的の１つ以上のサービスを含んでもよい。
【０１６２】
顧客によって注文がされた後、クラウドＵＩ１２１２、１２１４、および／または１２１６を介してオーダー情報が受け付けられる。
【０１６３】
動作１２３６において、この注文は、オーダーデータベース１２１８に格納される。オーダーデータベース１２１８は、クラウドインフラストラクチャシステム１２１８によって操作され、かつ、他のシステム要素と共に操作されるいくつかのデータベースのうちの１つであり得る。
【０１６４】
動作１２３８において、オーダー情報がオーダー管理モジュール１２２０に転送される。場合によっては、オーダー管理モジュール１２２０は、注文の確認、確認後の注文の登録など、注文に関する課金機能および会計機能を実行するように構成されてもよい。
【０１６５】
動作１２４０において、注文に関する情報がオーダーオーケストレーションモジュール１２２２に伝送される。オーダーオーケストレーションモジュール１２２２は、このオーダー情報を利用して、顧客が行った注文に関するサービスおよびリソースのプロビジョニングをオーケストレーションしてもよい。場合によっては、オーダーオーケストレーションモジュール１２２２は、リソースのプロビジョニングをオーケストレーションして、オーダープロビジョニングモジュール１２２４のサービスを使用してサブスクリプションされているサービスをサポートしてもよい。
【０１６６】
特定の例において、オーダーオーケストレーションモジュール１２２２は、各注文に関連する業務の流れの管理を可能にし、ビジネスロジックを適用して、注文がプロビジョニングに進むべきかどうかを判断する。動作１２４２において、新しいサブスクリプションの注文を受けると、オーダーオーケストレーションモジュール１２２２は、サブスクリプションの注文を満たすために必要なリソースを割り当ててこれらのリソースを構成する要求をオーダープロビジョニングモジュール１２２４に送信する。オーダープロビジョニングモジュール１２２４は、顧客が申し込んだサービスのためのリソースの割り当てを有効にする。オーダープロビジョニングモジュール１２２４は、クラウドインフラストラクチャシステム１２００が提供するクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理実施層との間に抽象度を設ける。よって、サービスおよびリソースがオンザフライで実際にプロビジョニングされたかどうか、または予めプロビジョニングされて要求された場合にのみ割り当てられたかどうかなどの実装の詳細からオーダーオーケストレーションモジュール１２２２を切り離すことができる。
【０１６７】
動作１２４４において、一旦サービスおよびリソースがプロビジョニングされれば、クラウドインフラストラクチャシステム１２０２のオーダープロビジョニングモジュール１２２４によって、クライアントデバイス１２０４、１２０６、および／または１２０８上の顧客に、提供されたサービスについての通知が送信されてもよい。
【０１６８】
動作１２４６において、オーダー管理／監視モジュール１２２６よって顧客のサブスクリプションの注文が管理および追跡されてもよい。場合によっては、オーダー管理／監視モジュール１２２６は、サブスクリプションの注文におけるサービスに関する使用統計データ、たとえば、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムの稼働時間およびシステムの休止時間などを収集するように構成されてもよい。
【０１６９】
特定の例において、クラウドインフラストラクチャシステム１２００は、素性管理モジュール１２２８を備えてもよい。素性管理モジュール１２２８は、クラウドインフラストラクチャシステム１２００におけるアクセス管理およびアクセス認可サービスなどの素性サービスを提供するように構成されてもよい。いくつかの例において、素性管理モジュール１２２８は、クラウドインフラストラクチャシステム１２０２が提供するサービスを利用したい顧客についての情報を制御／管理してもよい。このような情報は、このような顧客の素性を認証する情報、および、さまざまなシステムリソース（たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してそれらの顧客がどのような操作を行うことが承認されているのかを記述する情報を含み得る。また、素性管理モジュール１２２８は、各顧客についての記述情報の管理、およびその記述情報が誰によってどのようにアクセスおよび変更され得るかについての管理を含んでもよい。
【０１７０】
図１３は、本開示のさまざまな例が実施され得るコンピュータシステム１３００の例を示す図である。コンピュータシステム１３００を使用して、上述したコンピュータシステムのいずれかを実現してもよい。図に示すように、コンピュータシステム１３００は、バス・サブシステム１３０２を介していくつかの周辺サブシステムと通信する処理装置１３０４を備える。これらの周辺サブシステムは、処理高速化装置１３０６と、Ｉ／Ｏサブシステム１３０８と、ストレージサブシステム１３１８と、通信サブシステム１３２４とを含んでもよい。ストレージサブシステム１３１８は、有形のコンピュータ読み取り可能な記憶媒体１３２２と、システムメモリ１３１０とを含む。
【０１７１】
バス・サブシステム１３０２は、コンピュータシステム１３００のさまざまな構成要素およびサブシステムを互いに意図した通りに通信させるためのメカニズムを提供する。バス・サブシステム１３０２は、１つのバスとして図示されているが、バス・サブシステムの別の例は、複数のバスを利用してもよい。バス・サブシステム１３０２は、各種のバスアーキテクチャを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、およびＰＣＩ（Peripheral Component Interconnect）バスを含んでもよく、これらは、ＩＥＥＥ  Ｐ１３８６．１標準規格に準拠して製造されるＭｅｚｚａｎｉｎｅバスとして実現され得る。
【０１７２】
１つ以上の集積回路（たとえば、従来のマイクロプロセッサまたはマイクロコントローラ）として実現され得る処理装置１３０４は、コンピュータシステム１３００の動作を制御できる。処理装置１３０４には、１つ以上のプロセッサが含まれてもよい。これらのプロセッサは、シングルコア・プロセッサまたはマルチコア・プロセッサを含んでもよい。特定の例において、処理装置９０４は、シングルコア・プロセッサまたはマルチコア・プロセッサを各々が含んだ１つ以上の独立した処理装置１３３２および／または１３３４として実現されてもよい。また、他の例において、処理装置１３０４は、２つのデュアルコアプロセッサを１つのチップに組み込むことによって形成されるクアッドコア処理装置として実現されてもよい。
【０１７３】
さまざまな例において、処理装置１３０４は、プログラムコードに応答していろいろなプログラムを実行でき、複数の同時に実行しているプログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ（複数可）１３０４に、および／またはストレージサブシステム１３１８に存在し得る。適したプログラミングによって、プロセッサ（複数可）１３０４は、上述したさまざまな機能を提供できる。コンピュータシステム１３００は、処理高速化装置１３０６をさらに備えてもよい。処理高速化装置１３０６は、ＤＳＰ（Digital Signal Processor）および／または専用プロセッサなどを含み得る。
【０１７４】
Ｉ／Ｏサブシステム１３０８は、ユーザインタフェース入力装置と、ユーザインタフェース出力装置とを含んでもよい。ユーザインタフェース入力装置は、キーボード、マウスもしくはトラックボールなどのポインティングデバイス、タッチパッドもしくはディスプレイに組み込まれたタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、ボイスコマンド認識システムを有する音声入力装置、マイクロホン、および他の種類の入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、ジェスチャコマンドおよび音声コマンドを用いた自然なユーザインタフェースによってユーザがＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラなどの入力装置を制御およびそれとやり取りすることを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサなどの動き検知デバイスおよび／またはジェスチャ認識デバイスを含んでもよい。また、ユーザインタフェース入力装置は、ユーザの目の行動（たとえば、写真を撮影しているおよび／またはメニュー選択を行っている間の「まばたき」）を検出し、目の仕草（eye gesture）を入力装置（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変形させるＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）まばたき検出装置などのアイジェスチャ認識デバイスを含んでもよい。これに加えて、ユーザインタフェース入力装置は、ユーザがボイスコマンドによって音声認識システム（たとえば、Ｓｉｒｉ（登録商標）ナビゲータ）とやり取りすることを可能にする音声認識検知デバイスを含んでもよい。
【０１７５】
また、ユーザインタフェース入力装置は、３次元（３Ｄ）マウス、ジョイスティックもしくはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダー、ポータブルメディアプレーヤ、ウェブカム、イメージスキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザー測距器、および視線追跡装置などのオーディオ／ビジュアル装置を含むが、これらに限定されない。これに加えて、ユーザインタフェース入力装置は、たとえば、コンピュータ断層撮影法、磁気共鳴画像、陽電子放出断層撮影装置、超音波検査デバイスなど、医用画像入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、ＭＩＤＩキーボード、デジタル楽器などのオーディオ入力装置を含んでもよい。
【０１７６】
ユーザインタフェース出力装置は、表示サブシステム、インジケーターライト、または音声出力装置などの非視覚的表示装置などを含んでもよい。表示サブシステムは、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使用するものなどのフラットパネル表示装置、投影装置、タッチスクリーンなどであってもよい。一般に、用語「出力装置」の使用は、コンピュータシステム１３００からユーザまたは他のコンピュータに情報を出力するためのあらゆる種類のデバイスおよびメカニズムを含むことを意図する。たとえば、ユーザインタフェース出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、作図装置、音声出力装置、およびモデムなど、文字、図形、および音声／映像情報を視覚的に伝えるいろいろな表示装置を含み得るが、これらに限定されない。
【０１７７】
コンピュータシステム１３００は、システムメモリ１３１０内に現在位置して図示されているソフトウェア要素を含むストレージサブシステム１３１８から構成されてもよい。システムメモリ１３１０は、処理装置１３０４上でロード可能かつ実行可能なプログラム命令、およびこれらのプログラムの実行中に生成されるデータを格納してもよい。
【０１７８】
コンピュータシステム１３００の構成および種類によっては、システムメモリ１３１０は、揮発性メモリであってもよく（ＲＡＭ（Random Access Memory）など）、および／または不揮発性メモリ（ＲＯＭ（Read-Only Memory）、フラッシュメモリなど）であってもよい。ＲＡＭは、通常、処理装置１３０４がすぐにアクセスできる、および／または現在操作および実行しているデータおよび／またはプログラムモジュールを含む。いくつかの実装形態において、システムメモリ１３１０は、ＳＲＡＭ（Static Random Access Memory）またはＤＲＡＭ（Dynamic Random Access Memory）など、複数の異なる種類のメモリを含んでもよい。いくつかの実装形態において、起動中などで、コンピュータシステム１３００内の要素間で情報を転送することを助ける基本ルーチンを含むＢＩＯＳ（Basic Input/Output System）は、通常、ＲＯＭに格納されてもよい。また、一例として、限定ではないが、システムメモリ１３１０は、クライアントアプリケーション、ウェブブラウザ、ミッドティア・アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ:Relational Database Management Systems）などを含み得るアプリケーションプログラム１３１２と、プログラムデータ１３１４と、オペレーティングシステム１３１６とを含む。例として、オペレーティングシステム１３１６は、さまざまなバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、および／もしくはＬｉｎｕｘオペレーティングシステム、いろいろな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸに似たオペレーティングシステム（いろいろなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むが、これらに限定されない）、ならびに／またはｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）１０ＯＳ、およびＰａｌｍ（登録商標）ＯＳオペレーティングシステムなど、モバイルオペレーティングシステムを含んでもよい。
【０１７９】
また、ストレージサブシステム１３１８は、いくつかの例の機能を提供する基本プログラミング構成およびデータ構成を格納するための有形のコンピュータ読み取り可能な記憶媒体を提供してもよい。ストレージサブシステム１３１８には、プロセッサによって実行されると上述の機能を提供するソフトウェア（プログラム、コードモジュール、命令）が格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理装置１３０４によって実行されてもよい。また、ストレージサブシステム１３１８は、本開示に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【０１８０】
また、ストレージサブシステム１３００は、コンピュータ読み取り可能な記憶媒体１３２２にさらに接続され得るコンピュータ読み取り可能な記憶媒体リーダ１３２０を含んでもよい。システムメモリ１３１０と合わせて、必要に応じてシステムメモリ１３１０と組み合わせて、コンピュータ読み取り可能な記憶媒体１３２２は、遠隔の記憶装置、ローカル記憶装置、固定記憶装置、および／またはリム―バブル記憶装置、ならびにコンピュータ読み取り可能な情報を一時的におよび／またはさらに永続して含み、格納し、送信し、および取り出すための記憶媒体を包括的に表してもよい。
【０１８１】
コードまたはコードの一部を含んだコンピュータ読み取り可能な記憶媒体１３２２は、これらに限定されないが、情報の格納および／または伝送のための任意の方法および技術で実現される揮発性媒体および不揮発性媒体、取り外し可能な媒体および固定型媒体などの記憶媒体および通信媒体を含む、当技術分野において既知または使用される任意の適切な媒体も含んでもよい。これは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（Electronically Erasable Programmable ROM）、フラッシュメモリ、もしくは他のメモリ・テクノロジー、ＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disk）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置などの有形の非一時的なコンピュータ読み取り可能な記憶媒体、またはその他の有形のコンピュータ読み取り可能な媒体を含み得る。特に指定する場合、これは、データ信号、データ伝送など無形の一時的なコンピュータ読み取り可能な媒体、または所望の情報を伝送するために使用され得るその他の媒体、およびコンピューティングシステム１３００によってアクセスされ得るその他の媒体なども含み得る。
【０１８２】
例として、コンピュータ読み取り可能な記憶媒体１３２２は、固定型不揮発性磁気媒体から読み出しまたは書き込みを行うハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読み出しまたは書き込みを行う磁気ディスクドライブ、ならびに、ＣＤ  ＲＯＭ、ＤＶＤ、およびＢｌｕ−Ｒａｙ（登録商標）ディスクなどの取外し可能な不揮発性光ディスクもしくは他の光学媒体から読み出しまたは書き込みを行う光ディスクドライブを含んでもよい。コンピュータ読み取り可能な記憶媒体１３２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリーカード、ＵＳＢ（Universal Serial Bus）フラッシュドライブ、ＳＤ（Secure Digital）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでもよいが、これらに限定されない。また、コンピュータ読み取り可能な記憶媒体１３２２は、フラッシュメモリベースのＳＳＤ（Solid-State Drives）、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなど、不揮発性メモリに基づくＳＳＤ（Solid-State Drives）と、ソリッドステートＲＡＭ、動的ＲＡＭ、静的ＲＡＭ、ＤＲＡＭベースのＳＳＤなど、揮発性メモリに基づくＳＳＤと、ＭＲＡＭ（Magnetoresistive RAM）ＳＳＤと、ＤＲＡＭとフラッシュメモリとの組合せベースのＳＳＤを使用するハイブリッドＳＳＤとを含んでもよい。これらのディスクドライブおよびそれらの関連するコンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、およびその他のコンピュータシステム１３００用データの不揮発性ストレージを提供してもよい。
【０１８３】
通信サブシステム１３２４は、他のコンピュータシステムおよびネットワークへのインタフェースを提供する。通信サブシステム１３２４は、コンピュータシステム１３００からデータを受信し、コンピュータシステム１３００から他のシステムにデータを送信するためのインタフェースとして機能する。たとえば、通信サブシステム１３２４は、コンピュータシステム１３００がインターネットを介して１つ以上のデバイスに接続することを可能にしてもよい。いくつかの例において、通信サブシステム１３２４は、（たとえば、携帯電話技術、３Ｇ、４Ｇ、もしくはＥＤＧＥ（Enhanced Data Rates For Global Evolution）などの次世代データネットワークテクノロジー、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー標準規格）、他の移動体通信技術、またはそれらの任意の組合せを使用する）ワイヤレス音声ネットワークもしくは／またはデータネットワークにアクセスするためのＲＦ（Radio Frequency）トランシーバコンポーネント、ＧＰＳ（Global Positioning System）レシーバコンポーネント、および／または他の構成要素を含み得る。いくつかの例において、通信サブシステム１３２４は、ワイヤレスインタフェースに加えて、またはワイヤレスインタフェースの代わりに、有線ネットワーク接続性（たとえば、Ｅｔｈｅｒｎｅｔ）を提供できる。
【０１８４】
また、いくつかの例において、通信サブシステム１３２４は、コンピュータシステム１３００を利用し得る１人以上のユーザに代わって、構造化および／または非構造化データフィード１３２６、イベントストリーム１３２８、イベント更新１３３０などの形で入力通信文を受信してもよい。
【０１８５】
例として、通信サブシステム１３２４は、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）の更新、ＲＳＳ（Rich Site Summary）フィードなどのｗｅｂフィード、および／もしくは１つ以上のサードパーティ情報ソースからのリアルタイム更新など、ソーシャルメディアネットワークならびに／または他のコミュニケーションサービスのユーザからデータフィード２９２６をリアルタイムで受信するように構成されてもよい。
【０１８６】
また、これに加えて、通信サブシステム１３２４は、連続したデータストリームの形でデータを受信するように構成されてもよい。連続したデータストリームは、リアルタイムイベントのイベントストリーム１３２８および／またはイベント更新１３３０を含んでもよく、実際に明確な終端がない連続ストリームまた無限ストリームであってもよい。連続データを生成するアプリケーションとして、たとえば、センサーデータアプリケーション、チッカー、ネットワークパフォーマンス測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通量監視などが挙げられてもよい。
【０１８７】
また、通信サブシステム１３２４は、コンピュータシステム１３００に接続された１つ以上のストリーミングデータソースコンピュータと通信中であり得る１つ以上のデータベースに、構造化および／または非構造化データフィード１３２６、イベントストリーム１３２８、イベント更新１３３０などを出力するように構成されてもよい。
【０１８８】
コンピュータシステム１３００は、手のひらサイズのポータブルデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）携帯電話、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまな種類のうちの１つであり得る。
【０１８９】
変わり続けるというコンピュータおよびネットワークの性質のため、図に示すコンピュータシステム１３００の説明は、具体例にすぎない。図に示すシステムよりも多いまたは少ない構成要素を有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアが使用されてもよく、および／または、ハードウェア、ファームウェア、ソフトウェア（アプレットを含む）、またはそれらの組合せで特定の要素が実現されてもよい。さらに、ネットワーク入／出力装置など、他のコンピューティングデバイスへの接続を採用してもよい。本明細書に記載の開示および教示に基づいて、当業者は、さまざまな例を実現するための他のやり方および／または方法が分かるだろう。
【０１９０】
上記の明細書において、本開示の態様をその具体例を参照しながら説明したが、当業者は本開示がこれに限定されないことが分かるだろう。上述した開示のさまざまな特徴および態様は、個々に、または共同で用いられてもよい。さらに、例は、本明細書のより広義の趣旨および範囲から逸脱することなく、本明細書において記載した環境およびアプリケーションの数を上回る任意の数の環境およびアプリケーションにおいて利用され得る。明細書および添付の図面は、したがって、限定ではなく例示とみなされる。
【０１９１】
上記の説明において、例示のために方法を特定の順序で説明した。他の例において、これらの方法は、記載された順序とは異なる順序で実行されてもよいことを理解されたい。上述した方法は、ハードウェアコンポーネントによって実行されてもよく、機械によって実行可能な命令シーケンスに含まれてもよいことも理解されたい。機械によって実行可能な命令は、汎用プロセッサもしくは専用プロセッサ、または当該命令がプログラムされた論理回路などの機械に当該方法を実行させ得る。これらの機械によって実行可能な命令は、ＣＤ−ＲＯＭもしくは他の種類の光ディスク、フロッピーディスケット、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カードもしくは光カード、フラッシュメモリ、または電子命令を格納するのに適した他の種類の機械読み取り可能な媒体など、１つ以上の機械読み取り可能な記媒体上に格納されてもよい。これに代えて、方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【０１９２】
構成要素が特定の動作を実行するように構成されると説明されている箇所では、このような構成は、たとえば、この動作を実行するように電子回路または他のハードウェアを設計することによって、この動作を実行するようにプログラム可能な電子回路（たとえば、マイクロプロセッサ、または他の適した電子回路）をプログラムすることによって、またはそれらの任意の組合せによって達成され得る。
【０１９３】
アプリケーションの例示的な例を本明細書において詳細に説明したが、当然ながら、当該発明概念は、それ以外の場合、種々に実施および用いられてもよく、従来技術によって限定されない限り、添付の請求の範囲は、このような変形例を含むと解釈されることを意図する。
【図１】
2019528495.tif 000006
【図２】
2019528495.tif 000007
【図３】
2019528495.tif 000008
【図４】
2019528495.tif 000009
【図５】
2019528495.tif 000010
【図６】
2019528495.tif 000011
【図７】
2019528495.tif 000012
【図８】
2019528495.tif 000013
【図９】
2019528495.tif 000014
【図１０】
2019528495.tif 000015
【図１１】
2019528495.tif 000016
【図１２】
2019528495.tif 000017
【図１３】
2019528495.tif 000018
【国際調査報告】
2019528495.tif 000019
2019528495.tif 000020