以下では、本明細書において説明されるいくつかの新規な実施形態についての基本的な理解を提供するために、簡略化された要約を提示する。この要約は、広範な概要ではなく、主要/必須な要素を識別すること、またはそれらの範囲の輪郭を描くことは、意図されていない。いくつかの概念は、後で提示されるより詳細な説明に対する前置きとして、簡略化された形態で提示される。
様々な実施形態は、一般に、メッセージング・ボットのための技法に対して向けられている。いくつかの実施形態は、特に、メッセージング・アプリケーション内における対話を用いる、メッセージング・ボットのための技法に対して向けられている。いくつかの実施形態は、特に、メッセージング・システム上においてリッチ・コミュニケーションを使用する、メッセージング・ボットのための技法に対して向けられている。
一実施形態においては、例えば、装置は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取り、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動し、メッセージング・ボット対話ユーザ・インターフェースを介してメッセージング・ボット対話コマンドを受け取り、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示するように動作するユーザ・インターフェース・コンポーネントと、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信し、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取るように動作するクライアント・メッセージング・コンポーネントとを備えることができる。他の実施形態も、説明され、特許請求される。
別の実施形態においては、例えば、装置は、メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するように動作するメッセージング・コンポーネントと、メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントとを備えることができる。他の実施形態も、説明され、特許請求される。
上記および関連する目的を達成するために、ある特定の例示的な態様が、以下の説明および添付の図面に関連して本明細書において記載される。これらの態様は、本明細書において開示される原理を実行することができる様々な方法を示し、全ての態様およびその均等物が、特許請求される主題の範囲内にあることが意図される。他の利点および新規な特徴は、以下の詳細な説明を図面と併せて検討することにより明らかとなるであろう。
本発明による実施形態は、特に、方法、記憶媒体、システム、およびコンピュータ・プログラム製品に向けられた、添付の特許請求の範囲において開示され、1つの請求項カテゴリ、例えば、方法において言及されたいずれの特徴も、別の請求項カテゴリ、例えば、システムにおいて、同様に特許請求され得る。添付の特許請求の範囲における前述に対する従属および参照は、もっぱら形式的な理由で選択される。しかしながら、いずれかの先行請求項に対する意図的な参照(特に複数の従属)からもたらされるいかなる主題も、請求項およびそれの特徴のいずれかの組み合わせが開示されるように、同様に特許請求され得、添付の特許請求の範囲において選択される従属にかかわらず、特許請求され得る。特許請求されることが可能な主題は、添付の特許請求の範囲において述べられたような特徴の組み合わせばかりでなく、特許請求の範囲における特徴の他の任意の組み合わせも備え、特許請求の範囲において言及された各特徴は、特許請求の範囲における他の任意の特徴または他の特徴の組み合わせと組み合わされ得る。さらに、本明細書において説明または描写される実施形態および特徴のいずれも、単独の請求項において、および/または本明細書において説明もしくは描写される任意の実施形態もしくは特徴との、もしくは添付の特許請求の範囲の特徴のいずれかとの任意の組み合わせで、特許請求され得る。
本発明による一実施形態においては、コンピュータ実装方法は、
メッセージをクライアント・デバイスから受け取る工程と、
メッセージをメッセージ待ち行列に対して追加する工程と、
メッセージ待ち行列を監視する工程と、
メッセージがメッセージング・ボット起動を示していることを検出する工程と、
メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
メッセージに関連付けられたメッセージング・ボットを決定する工程と、
メッセージをメッセージング・ボットに対して渡す工程と
を備える。
本発明による一実施形態においては、コンピュータ実装方法は、
メッセージング・サーバ、メール・サーバおよびメッセージング・システムのクライアント・フロントエンド・サーバのメッセージング・コンポーネントの1以上が、メッセージをクライアント・デバイスから受け取る工程と、
メッセージをメッセージ待ち行列に対して追加する工程と、
メッセージング・システムのワーカ・サーバのメッセージ待ち行列監視コンポーネントが、メッセージ待ち行列を監視する工程と、
メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備え、
メッセージ待ち行列監視コンポーネントが、メッセージ待ち行列内の各エントリを検査し、メッセージがメッセージング・ボット起動を示していることを検出するように構成され、
コンピュータ実装方法は、
メッセージ待ち行列監視コンポーネントが、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージについての識別子など、メッセージング・ボット起動を伴うメッセージが検出された旨のメッセージまたは通知を、ボット・フレームワーク・コンポーネントに対して渡す工程と、
ボット・フレームワーク・コンポーネントが、
メッセージに関連付けられたメッセージング・ボットを決定する工程と、
メッセージをメッセージング・ボットに対して渡す工程と
を備える。
本発明による一実施形態においては、メッセージが、テキスト内容部分を備えることができ、方法は、
メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、
ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備えることができる。
本発明による一実施形態においては、メッセージが、テキスト内容部分を備えることができ、方法は、
メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、
ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備えることができ、および/または
ボットについての情報を含むメッセージには、メッセージのメタデータ部分にボット起動フラグを用いてフラグが立てられているという点で、送り元クライアント・デバイスによってフラグが立てられており、メッセージ監視コンポーネントが、ボット起動フラグを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出するように構成される。
本発明による一実施形態においては、方法は、
メッセージに対するメッセージング・ボット応答を受け取る工程と、
メッセージング・ボット応答をメッセージ待ち行列内に挿入する工程と
を備えることができる。
本発明による一実施形態においては、方法は、
メッセージに対するメッセージング・ボット応答を受け取る工程と、
メッセージング・ボット応答をメッセージ待ち行列内に挿入する工程と、任意選択で、
メッセージング・クライアントのディスプレイ上における表示のために、メッセージング・ボット応答をクライアント・デバイスに対して送信する工程と
を備えることができる。
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージ待ち行列内に挿入されるメッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられ得る。
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージ待ち行列内に挿入されるメッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられ得、任意選択で、メッセージ・ボットは、ユーザによってメッセージ・ボットに対して送り出されたメッセージに応答して、メッセージをメッセージ待ち行列に対して追加することを許可され、メッセージ・ボットは、さらに、任意選択で、メッセージに対する単一の応答を送ることを認可され、および/または限られた期間だけ、メッセージに対する応答を認可され得る。
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、
ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
1以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、1以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、
1以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程と
をさらに備えることができる。
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備え、任意選択で、ボット・フレームワーク・コンポーネントが、
ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
コマンド開始部分をメッセージング・ボットに対して渡す工程と、
1以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、1以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、
1以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程と
をさらに備えることができる。
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージが、ボット・サブスクリプション・コマンドを備え、
ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、
メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、
複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの1つのブロードキャスト・ワーカに対して割り当てる工程と、
複数のブロードキャスト・ワーカが、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程と
をさらに備えることができる。
本発明による一実施形態においては、装置は、
デバイス上のプロセッサ回路と、
メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するようにプロセッサ回路上において動作するメッセージング・コンポーネントと、
メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、
メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントと
を備える。
本発明による一実施形態においては、メッセージが、テキスト内容部分を備え、装置は、
メッセージのテキスト内容部分においてボット起動シンボルを検出し、ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出するように動作するメッセージ待ち行列監視コンポーネント
をさらに備えることができる。
本発明による一実施形態においては、装置は、
メッセージに対するメッセージング・ボット応答を受け取り、メッセージング・ボット応答をメッセージ待ち行列内に挿入するように動作するボット・フレームワーク・コンポーネント
をさらに備えることができる。
本発明による一実施形態においては、メッセージがメッセージ・スレッドに関連付けられ得、メッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられて、メッセージ待ち行列内に挿入され得る、装置。
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、装置は、
ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、1以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、1以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、1以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程とを行うように動作するボット・フレームワーク・コンポーネント
をさらに備えることができる。
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備え、装置は、
ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、コマンド開始部分をメッセージング・ボットに対して渡す工程と、1以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、1以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、1以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程とを行うように動作するボット・フレームワーク・コンポーネント
をさらに備えることができる。
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージが、ボット・サブスクリプション・コマンドを備え、装置は、
ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブするように動作するボット・フレームワーク・コンポーネントと、
ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程とを行うように動作するブロードキャスト・コンポーネントと、
複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程とを行うように動作する複数のブロードキャスト・ワーカと
をさらに備えることができる。
本発明による一実施形態においては、命令を備える少なくとも1つのコンピュータ可読記憶媒体は、命令が実行されたときに、システムに、
メッセージをクライアント・デバイスから受け取る工程と、
メッセージをメッセージ待ち行列に対して追加する工程と、
メッセージ待ち行列を監視する工程と、
メッセージがメッセージング・ボット起動を示していることを検出する工程と、
メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
メッセージに関連付けられたメッセージング・ボットを決定する工程と、
メッセージをメッセージング・ボットに対して渡す工程と
を行わせることができる。
本発明による一実施形態においては、メッセージが、テキスト内容部分を備えることができ、コンピュータ可読記憶媒体は、実行されたときに、システムに、
メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、
ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程と
を行わせる命令をさらに備えることができる。
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、コンピュータ可読記憶媒体は、実行されたときに、システムに、
メッセージに対するメッセージング・ボット応答を受け取る工程と、
メッセージ・スレッドにおける表示のために印しを付けられたメッセージング・ボット応答をメッセージ待ち行列内に挿入する工程と
を行わせることができる命令をさらに備えることができる。
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、コンピュータ可読記憶媒体は、実行されたときに、システムに、
ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
1以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、1以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、
1以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程と
を行わせることができる命令をさらに備えることができる。
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備えることができ、コンピュータ可読記憶媒体は、実行されたときに、システムに、
ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
コマンド開始部分をメッセージング・ボットに対して渡す工程と、
1以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、1以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、
1以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程と
を行わせることができる命令をさらに備える。
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージが、ボット・サブスクリプション・コマンドを備え、コンピュータ可読記憶媒体は、実行されたときに、システムに、
ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、
メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、
複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの1つのブロードキャスト・ワーカに対して割り当てる工程と、
複数のブロードキャスト・ワーカが、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程と
を行わせることができる命令をさらに備えることができる。
本発明によるさらなる一実施形態においては、1以上のコンピュータ可読非一時的記憶媒体は、実行されたときに、本発明または上述の実施形態のいずれかによる方法を遂行するように動作可能なソフトウェアを具体化する。
本発明によるさらなる一実施形態においては、システムは、1以上のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を備える、少なくとも1つのメモリとを備え、プロセッサは、命令を実行したときに、本発明または上述の実施形態のいずれかによる方法を遂行するように動作可能である。
本発明によるさらなる一実施形態においては、好ましくは、コンピュータ可読非一時的記憶媒体を備える、コンピュータ・プログラム製品は、データ処理システム上において実行されたときに、本発明または上述の実施形態のいずれかによる方法を遂行するように動作可能である。
ネットワーク接続されたコンピューティング・デバイスは、それらのユーザに、対人コミュニケーションに関わるための先例のない能力を提供することができる。人々は、友達、家族、同僚、および他の仲間とのメッセージング対話に関わることができる。交信相手とのユーザのメッセージ交換は、各々が、別個のメッセージ・スレッド内に維持され得る。
これらのネットワーク接続されたコンピューティング・デバイスは、それらのユーザに、ネットワーク・アクセス可能なサービスに対するアクセスも提供することができる。例えば、輸送サービス、ダイニング・サービス、エンターテイメント・サービス、および他のサービスは、人々が自分のクライアント・デバイスを使用して、それらのサービスと関わることを可能にするために、ウェブサイト、ウェブ・アプリケーション、クライアント・アプリケーション、または他のネットワーク・アクセスを可能にする技法を使用することができる。いくつかのエンターテイメントまたはメディア・サービスなど、いくつかのケースにおいては、サービスは、クライアント・デバイスを介して、準備されること、および配信されることがともに可能である。例えば、音楽は、クライアント・デバイスを介して購入され、再生するためにクライアント・デバイスに対して配信され得る。輸送、ダイニング、および自身のエンターテイメントなど、他のケースにおいては、サービスは、クライアント・デバイスを介して準備され得るが、クライアント・デバイスの外部において遂行される。例えば、自動車同乗サービスは、クライアント・デバイスを介して準備され得るが、自動車同乗をユーザに対して提供する自動車およびドライバを通して遂行され得る。
いくつかのケースにおいては、ネットワーク・アクセス可能なサービスの使用は、2人以上の人に関連することができる。特に、サービスに対するユーザのアクセスが、彼らがメッセージングのためにも使用するクライアント・デバイスである場合、ユーザは、メッセージング・クライアントにおけるネットワーク・アクセス可能なサービスとの彼らの関わりを、サービスが関連する他人と共有することから、利益を得ることができる。そのため、メッセージ・スレッドは、交信相手とのユーザのオンライン・ソーシャル・リレーションシップのためのハブとしての役割を果たすことができ、メッセージ・スレッドは、メッセージングのために使用される同じクライアントを介して要求され、監視され、または関わりを持たされるサービスを組み込む。
メッセージング・コンテキストを介してサービスと対話する際に、ユーザを支援するために、サービスは、メッセージング・システム内において、メッセージング・ボットとして表現され得る。メッセージング・ボットは、メッセージ・スレッド内における参加者として表現され得る、ネットワーク・アクセス可能なサービスに対する完全または部分的に自動化されたフロントエンドであることができる。いくつかのケースにおいては、特定のユーザとメッセージング・ボットとの間の1対1メッセージ・スレッドなど、メッセージング・ボットを明示的に含むメッセージ・スレッドにおいて、メッセージング・ボットとやり取りすることができる。他のケースにおいては、メッセージング・ボットが、常連の参加者ではなく、メッセージング・ボットが、サービスと対話することを目的とした、メッセージ・スレッドへの一時的な参加者である、メッセージ・スレッドにおいて、メッセージング・ボットとやり取りすることができる。メッセージング・ボットは、2人のユーザ間の1対1スレッドであるか、それとも複数のユーザ間のグループ・スレッドであるかにかかわらず、他の任意のスレッドへの一時的な参加者として含まれ得る。
そのため、ユーザは、メッセージング・クライアントの馴染み深いエクスペリエンス内において、ネットワーク・サービスと関わることができる。さらに、メッセージング・クライアントを使用することによって、ユーザは、他の人々を含むことを許容するように、メッセージング・コンテキスト内において、ネットワーク・サービスと関わることができる。いくつかのケースにおいては、これは、友達または家族に輸送詳細について知らせるなど、単純にサービスに関して他の人々に知らせることができる。他のケースにおいては、これは、ディナー、同乗、エンターテイメント、または他のサービスが準備される場合など、複数の人々が使用するための、複数の人々に対するサービスの遂行を可能にすることができる。結果として、実施形態は、ネットワーク・アクセス可能なサービスを使用するエクスペリエンスを改善することができ、メッセージング・システムのユーザに対するネットワーク・アクセス可能なサービスのリーチを拡大することができる。
ここで、図面を参照し、図面では、類似の要素は、全体を通して同様の参照符号を用いて示している。以下の説明では、その完全な理解を与えるため、説明を目的として、様々な具体的詳細について記載している。しかしながら、これら特定の詳細を省いても、新規な実施形態を実施できることは明らかであろう。一方で、周知の構造およびデバイスについては、その説明を容易とするために、ブロック図の形式で示している。その意図は、請求項に係る主題に矛盾しないあらゆる変更、均等物、および代替案を包括することである。
本明細書で使用される「a」および「b」および「c」および同様な記号は、任意の正の整数を表す変数であることを意図していることに留意されたい。したがって、例えば、実施態様においてa=5の値が設定される場合、コンポーネント122−1〜122−aとして示される一式のコンポーネント122は、コンポーネント122−1、122−2、122−3、122−4、および122−5を含む。実施形態は、この文脈に限定されない。
図1は、メッセージング・システム100のブロック図を示す。一実施形態では、メッセージング・システム100は、1つまたは複数のコンポーネントを含むソフトウェア・アプリケーションを有するコンピュータ実装システムを含み得る。図1に示すメッセージング・システム100は、特定のトポロジにおいて限定された数の要素を有するが、メッセージング・システム100は、所与の実施態様に関して所望されるように、代替トポロジにおいてより多くのまたはより少ない要素を含むことができることが理解されるであろう。
メッセージング・サーバ110は、メッセージング・システム100の一部としてのメッセージング・プラットフォームによって動作させられる、1つまたは複数のメッセージング・サーバを備えることができる。メッセージング・サーバは、インターネット・アクセス可能なサーバを備えることができ、ネットワーク120は、メッセージング・システム100の様々なデバイスを接続し、少なくとも一部にインターネットを備える。
ユーザは、スマートフォン・デバイス150を所有し、動作させることができる。スマートフォン・デバイス150は、iPhone(登録商標)デバイス、Android(登録商標)デバイス、Blackberry(登録商標)デバイス、またはスマートフォン形態に準拠した他の任意のモバイル・コンピューティング・デバイスを備えることができる。スマートフォン・デバイス150は、セルラー信号135を使用し、セル・システム130を介して、ネットワーク120に対して接続することが可能な、セルラー・デバイスであることができる。いくつかの実施形態、およびいくつかのケースにおいては、スマートフォン・デバイス150は、追加的または代替的に、Wi−Fiまたは他のネットワーク接続技術を使用して、ネットワーク120に対して接続することができる。スマートフォン・デバイス150は、メッセージング・クライアント、ウェブブラウザ、または他のローカル・アプリケーションを実行して、メッセージング・サーバ110にアクセスすることができる。
同じユーザは、タブレット・デバイス160を所有し、動作させることができる。タブレット・デバイス150は、iPad(登録商標)デバイス、Android(登録商標)タブレット・デバイス、Kindle Fire(登録商標)デバイス、またはタブレット形態に準拠した他の任意のモバイル・コンピューティング・デバイスを備えることができる。タブレット・デバイス160は、Wi−Fi信号145を使用し、Wi−Fiアクセス・ポイント140を介して、ネットワーク120に対して接続することが可能な、Wi−Fiデバイスであることができる。いくつかの実施形態、およびいくつかのケースにおいては、タブレット・デバイス160は、追加的または代替的に、セルラーまたは他のネットワーク接続技術を使用して、ネットワーク120に対して接続することができる。タブレット・デバイス160は、メッセージング・クライアント、ウェブブラウザ、または他のローカル・アプリケーションを実行して、メッセージング・サーバ110にアクセスすることができる。
同じユーザは、パーソナル・コンピュータ・デバイス180を所有し、動作させることができる。パーソナル・コンピュータ・デバイス180は、Mac OS(登録商標)デバイス、Windows(登録商標)デバイス、Linux(登録商標)デバイス、または別のオペレーティングシステムを走らせる他のコンピュータ・デバイスを備えることができる。パーソナル・コンピュータ・デバイス180は、イーサネット(登録商標)接続を介して、ネットワーク120に対して接続することが可能な、イーサネット・デバイスであることができる。いくつかの実施形態、およびいくつかのケースにおいては、パーソナル・コンピュータ・デバイス180は、追加的または代替的に、ネットワーク120に対するセルラー、Wi−Fi、または他のネットワーク接続技術を使用することができる。パーソナル・コンピュータ・デバイス180は、メッセージング・クライアント、ウェブブラウザ170、または他のローカル・アプリケーションを実行して、メッセージング・サーバ110にアクセスすることができる。
メッセージング・クライアントは、専用メッセージング・クライアントであることができる。専用メッセージング・クライアントは、具体的には、メッセージング・サーバ110を含むメッセージング・プラットフォームを管理する、メッセージング・プロバイダに関連付けられ得る。専用メッセージング・クライアントは、メッセージング・サーバ110を含むメッセージング・プラットフォームを管理する、メッセージング・プロバイダを含む、複数の異なるメッセージング・プロバイダとともに働くように動作する、汎用クライアントであることができる。
メッセージング・クライアントは、追加の機能性を提供する、アプリケーションのコンポーネントであることができる。例えば、ソーシャル・ネットワーキング・サービスは、ソーシャル・ネットワーキング・サービスにアクセスし、使用するために、モバイル・デバイス上において使用する、ソーシャル・ネットワーキング・アプリケーションを提供することができる。ソーシャル・ネットワーキング・サービスは、メッセージング・サーバ110によって提供され得るような、メッセージング機能性を含むことができる。メッセージング・サーバ110は、ソーシャル・ネットワーキング・サービスのための、コンピューティング・デバイスの1つのコンポーネントであることができ、コンピューティング・デバイスは、ソーシャル・ネットワーキング・サービスの追加の機能性を提供することが理解されよう。同様に、ソーシャル・ネットワーキング・アプリケーションは、メッセージング機能性および追加のソーシャル・ネットワーキング機能性の両方を提供することができる。
いくつかのケースにおいては、メッセージング・エンドポイントは、ユーザ・セッションの間、状態を保持しておくことができ、いくつかのケースにおいては、メッセージング・エンドポイントは、ユーザ・セッションの間、状態を放棄することができる。メッセージング・エンドポイントは、メッセージ受信ボックスの現在の状態を保持しておくために、ローカル・ストアを使用することができる。例えば、ローカル・アプリケーションが中止された、もしくは他の方法でメモリから除去された、またはデバイスの電源がオフにされ、再びオンにされた状況を含む、1つのセッションと次のセッションとの間に、状態が取り出され得るように、ローカル・ストアは、永続的ストレージ内にセーブされ得る。代替的に、メッセージング・エンドポイントは、メッセージ受信ボックスの現在の状態を保持するが、メッセージ受信ボックスの状態を永続的ストレージにコミットすることを差し控えるために、メモリ・キャッシュを使用することができる。
メッセージ受信ボックスの状態を保持するメッセージング・エンドポイントは、専用メッセージング・アプリケーション、またはソーシャル・ネットワーキング・アプリケーションなど、別のローカル・アプリケーション内に統合されたメッセージング・ユーティリティを備えることができる。メッセージ受信ボックスの状態を放棄するメッセージング・エンドポイントは、ウェブブラウザ内において実施されるメッセージング・アクセスを備えることができる。一実施形態においては、パーソナル・コンピュータ・デバイス180上において実行されるウェブブラウザ170などの、ウェブブラウザは、メッセージング機能性をユーザに対して提示するために、メッセージング・サーバと対話する、HTML5コードを実行することができる。
ユーザは、スマートフォン・デバイス150、タブレット・デバイス160、およびパーソナル・コンピュータ・デバイス180を含む、複数のデバイスから、メッセージを送り、受け取ることができる。ユーザは、スマートフォン・デバイス150上において第1のメッセージング・アプリケーションを、タブレット・デバイス160において第2のメッセージング・アプリケーションを、パーソナル・コンピュータ・デバイス180上においてウェブブラウザ170を使用することができる。第1および第2のメッセージング・アプリケーションは、両方のデバイス上において同じアプリケーションのインストールを備えることができる。第1および第2のメッセージング・アプリケーションは、共通アプリケーションのスマートフォン固有およびタブレット固有のバージョンを備えることができる。第1および第2のメッセージング・アプリケーションは、別個のアプリケーションを備えることができる。
ユーザは、メッセージ受信ボックスが彼らのデバイスの間で整合的に保たれるようにすることから利益を得ることができる。ユーザは、自宅から離れている間は、セル・システム130上においてスマートフォン・デバイス150を使用して、セル・システム130を介して、メッセージを送り、受け取ることができる。ユーザは、コーヒー・ショップ、またはWi−Fiをオファーする他の場所に立ち寄り、タブレット・デバイス160をWi−Fiアクセス・ポイント140に対して接続することができる。タブレット・デバイス160は、メッセージ受信ボックスについての既存の知られた状態を取り出し、スマートフォン・デバイス150を動作させている間にユーザによって受け取られ得た、タブレット・デバイス160がネットワークに対して最後にアクセスした時以降に発生した更新を受け取ることができ、それには、スマートフォン・デバイス150によって送られたいずれのメッセージも含む。ユーザは、その後、帰宅し、パーソナル・コンピュータ・デバイス180上においてウェブブラウザ170を使用して、メッセージ受信ボックスにアクセスすることができる。ウェブブラウザ170は、メッセージ受信ボックスについての既存の状態を維持していないので、またはそうでない場合既存の状態にアクセスしていないので、メッセージ受信ボックスの現在の状態のスナップショットをメッセージング・サーバ110から受け取ることができる。その後、ウェブブラウザ170は、メッセージング・サーバ110を用いてユーザ・セッションを維持している限り、メッセージ受信ボックスの状態に対するいずれの新たな変化についての漸進的な更新も取り出すことができ、ウェブブラウザ170がユーザによって閉じられたときなど、セッションの最後において、メッセージ受信ボックスについての知られた状態を破棄する。限定することなく、更新は、メールボックスに対するメッセージの追加、メールボックスからのメッセージの削除、および開封確認に対応することができる。
メッセージング・システム100は、複数のメッセージを備えるように、メッセージング受信ボックスを定義することによって、動作することができ、各メッセージは、2人以上の参加者の間の通信の個々のトランザクションである。メール・サーバは、メッセージング受信ボックスについてのメッセージ・インデックスを維持することによって、動作することができる。メール・サーバは、メッセージを受け取り、メッセージをメール・アーカイブ内に記憶することができ、メッセージは、そこから、メッセージ・インデックスに対する参照を通して、取り出され得る。メール・クライアントは、メール・サーバに対して接続し、最後の更新以降にメール・アーカイブに対して追加されたメッセージを取り出すことができる。メール・クライアントは、どんなメッセージがメール・アーカイブ内に記憶されているかを示すメール・インデックスを、メール・アーカイブから受け取ることができる。メール・クライアントは、どのメッセージを取り逃しているかを決定するために、メール・アーカイブを現在の受信ボックスと比較することができ、その後、それらをメール・アーカイブに要求する。メール・クライアントは、受信ボックスに対する変化を起こすことができ、それは、メール・アーカイブに対して送られ、メール・アーカイブ上におけるメール受信ボックスの表現に対して起こす変更をメール・アーカイブに命令する、メール受信ボックス命令をもたらす。
メッセージング・システムによって仲介されるメッセージング対話は、メッセージ・スレッドとして知られる共有空間に組織され得る。メッセージ・スレッドは、ユーザの特定のグループの間で共有されるメッセージを一緒に収集することができる。ユーザのペアの間で個々に送られるメッセージは、ユーザのペアの間のプライベートなメッセージングと一意的に関連付けられた、1対1メッセージ・スレッド内に収集され得る。3人以上のユーザのグループの間で送られるメッセージは、メンバシップによって一意的に定義され得ないが、代わりに、いくつかの実施形態においては、グループ・スレッドを一意的に識別する識別子によって定義され得る。グループ・スレッドにおけるメンバシップは、いくつかの実施形態においては、メンバを追加し、および/または失いながら、時間とともに変動する。
メッセージング・システム100は、ユーザ間の対話から生成される知識を使用してもよい。メッセージング・システム100はソーシャル・ネットワーキング・システムのコンポーネントを備えてもよく、ソーシャル・ネットワーキング・システムのより幅広い対話から生成される知識を使用してもよい。このように、メッセージング・システム100およびより大きなソーシャル・ネットワーキング・システムのユーザのプライバシを保護するために、メッセージング・システム100は、ユーザがそのアクションをメッセージング・システム100によって記録させる、または、例えば、適切なプライバシ設定を設定することによって他のシステム(例、サードパーティシステム)と共有させることをオプトインまたはオプトアウトするのを可能にする認可サーバ(または他の適したコンポーネント)を含み得る。ユーザのプライバシ設定は、ユーザに関連付けられているどの情報を記録してもよいか、ユーザに関連付けられている情報をどのように記録してもよいか、ユーザに関連付けられている情報をいつ記録してもよいか、ユーザに関連付けられている情報を誰が記録してもよいか、ユーザに関連付けられている情報を誰と共有してもよいか、ユーザに関連付けられている情報をどのような目的で記録または共有してもよいかを決定してもよい。認可サーバまたは他の認可コンポーネントは、ブロッキング、データのハッシュ化、匿名化、または他の適切な技術により、メッセージング・システム100およびソーシャル・ネットワーキング・システムの他の要素のユーザの1つまたは複数のプライバシ設定を実施するために使用してもよい。
図2は、ソーシャル・グラフ200の一実施例を示す。特定の実施形態において、ソーシャル・ネットワーキング・システムは、ソーシャルグラフデータ構造として、1つまたは複数のソーシャル・グラフ200を1つまたは複数のデータストアに記憶してもよい。
特定の実施形態において、ソーシャル・グラフ200は、多数のユーザノード202および多数の概念ノード204を含み得る多数のノードを含み得る。ソーシャル・グラフ200は、ノード同士を接続する多数のエッジ206を含み得る。特定の実施形態では、ソーシャル・ネットワーキング・システム、クライアントシステム、サードパーティシステム、または任意の他のシステムもしくはデバイスは、適切なアプリケーションのソーシャル・グラフ200および関連ソーシャル・グラフ情報にアクセスしてもよい。ソーシャル・グラフ200のノードおよびエッジはデータオブジェクトとして、例えば、データストア(ソーシャルグラフデータベースなど)に記憶してもよい。このようなデータストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含み得る。
特定の実施形態において、ユーザノード202はソーシャル・ネットワーキング・システムのユーザに対応してもよい。限定ではないが、例として、ユーザは、ソーシャル・ネットワーキング・システムと対話もしくは通信する、またはソーシャル・ネットワーキング・システムを通じて対話もしくは通信する個人(人間のユーザ)、エンティティ(例、エンタープライズ、企業、もしくはサードパーティアプリケーション)、または(例、個人もしくはエンティティの)グループであってもよい。特定の実施形態では、ユーザがアカウントをソーシャル・ネットワーキング・システムに登録すると、ソーシャル・ネットワーキング・システムはユーザに対応するユーザノード202を作成し、ユーザノード202を1つまたは複数のデータストアに記憶してもよい。本明細書に記載するユーザおよびユーザノード202は、適切な場合、登録ユーザおよび登録ユーザに関連付けられているユーザノード202をいう。追加的にまたは代替例として、本明細書に記載するユーザおよびユーザノード202は、適切な場合、ソーシャル・ネットワーキング・システムに登録していないユーザをいう。特定の実施形態において、ユーザノード202は、ユーザが提供する情報、またはソーシャル・ネットワーキング・システムを含む様々なシステムが収集する情報に関連付けてもよい。限定ではないが、例として、ユーザは、その名前、プロフィール写真、連絡先情報、誕生日、性別、婚姻状態、家族の状態、職業、学歴、プリファレンス、興味、またはその他人口統計学的情報を提供してもよい。特定の実施形態では、ユーザノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータオブジェクトに関連付けてもよい。特定の実施形態では、ユーザノード202は1つまたは複数のウェブページに対応してもよい。ユーザノード202は、ソーシャル・ネットワーキング・システムにおけるユーザ用の固有ユーザ識別子に関連付けてもよい。
特定の実施形態において、概念ノード204は概念に対応してもよい。限定ではないが、例として、概念は場所(例えば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(例えば、ソーシャルネットワークシステムに関連付けられているウェブサイト、ウェブアプリケーションサーバに関連付けられているサードパーティウェブサイトなど)、エンティティ(例えば、人、企業、グループ、スポーツチーム、もしくは有名人など)、ソーシャル・ネットワーキング・システム内もしくはウェブアプリケーションサーバなどの外部のサーバ上に所在し得るリソース(例えば、オーディオファイル、ビデオファイル、デジタルフォト、テキストファイル、構造化文書、もしくはアプリケーション)、不動産もしくは知的財産(例えば、彫刻、絵画、映画、ゲーム、楽曲、着想、写真、もしくは著作物)、ゲーム、活動、着想もしくは理論、別の適切な概念、または2つ以上のこのような概念に対応してもよい。概念ノード204は、ユーザが提供する概念の情報またはソーシャル・ネットワーキング・システムを含む様々なシステムが収集する情報に関連付けてもよい。限定ではないが、例として、概念の情報は、名称もしくはタイトル、1つまたは複数の画像(例、本の表紙の画像)、場所(例、住所もしくは地理的な場所)、ウェブサイト(URLに関連付けられていてもよい)、連絡先情報(例、電話番号もしくは電子メールアドレス)、その他適した概念情報、またはこのような情報の任意の適した組合せを含み得る。特定の実施形態において、概念ノード204は、概念ノード204に関連付けられている情報に対応する1つまたは複数のデータオブジェクトに関連付けてもよい。特定の実施形態では、概念ノード204は1つまたは複数のウェブページに対応してもよい。
特定の実施形態では、ソーシャル・グラフ200のノードはウェブページ(これは「プロフィールページ」と呼ばれることがある)を表し、またはウェブページによって表されてもよい。プロフィールページはソーシャル・ネットワーキング・システムによってホストされ、またはソーシャル・ネットワーキング・システムにアクセス可能であってもよい。プロフィールページは、サードパーティサーバに関連付けられているサードパーティウェブサイト上でもホストされてもよい。限定ではないが、例として、特定の外部ウェブページに対応するプロフィールページはその特定の外部ウェブページであってもよく、プロフィールページは特定の概念ノード204に対応してもよい。プロフィールページは他のユーザ全員または選ばれた小集団によって閲覧可能であってもよい。限定ではないが、例として、ユーザノード202は、対応するユーザがコンテンツを追加し、発表を行い、またはその他自己を表現することのできる対応するユーザプロフィールページを有してもよい。企業ページ205などの企業ページは、コマースエンティティ用のユーザプロフィールページを含み得る。限定ではないが、別の例として、概念ノード204は、特に概念ノード204に対応する概念に関して、1名または複数名のユーザがコンテンツを追加し、発表を行い、または自己を表現することのできる対応する概念プロフィールページを有してもよい。
特定の実施形態において、概念ノード204は、サードパーティシステムがホストするサードパーティウェブページまたはリソースを表してもよい。サードパーティウェブページまたはリソースは、他の要素の中でも特に、アクションもしくは活動を表すコンテンツ、選択可能なアイコンもしくは他のアイコン、または他の対話可能なオブジェクト(これは例えば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードに実装してもよい)を含み得る。限定ではないが、例として、サードパーティウェブサイトは、「いいね!」、「チェックイン」、「食べる」、「お薦め」、または他の適したアクションもしくは活動などの選択可能なアイコンを含み得る。サードパーティウェブページを閲覧するユーザは、アイコンの1つ(例、「食べる」)を選択して、クライアントシステムにユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システムに送信させることにより、アクションを行ってもよい。メッセージに対応して、ソーシャル・ネットワーキング・システムは、ユーザに対応するユーザノード202とサードパーティウェブページまたはリソースに対応する概念ノード204との間にエッジ(例、「食べる」エッジ)を作成し、エッジ206を1つまたは複数のデータストアに記憶してもよい。
特定の実施形態において、ソーシャル・グラフ200の1対のノードは1つまたは複数のエッジ206によって互いに接続されてもよい。1対のノードを接続するエッジ206はその1対のノード間の関係を表してもよい。特定の実施形態において、エッジ206は、1対のノード間の関係に対応する1つまたは複数のデータオブジェクトまたは属性を含み、または表してもよい。限定ではないが、例として、第1ユーザは、第2ユーザが第1ユーザの「友達」であることを示してもよい。この表示に応答して、ソーシャル・ネットワーキング・システムは第2ユーザに「友達申請」を送信してもよい。第2ユーザが「友達申請」を確認すると、ソーシャル・ネットワーキング・システムはソーシャル・グラフ200で第1ユーザのユーザノード202を第2ユーザのユーザノード202に接続するエッジ206を作成し、エッジ206をソーシャル・グラフ情報として1つまたは複数のデータストアに記憶してもよい。図2の実施例では、ソーシャル・グラフ200は、ユーザ「アマンダ」とユーザ「ドロシー」のユーザノード202間の友達関係を示すエッジ206を含む。本開示は特定のユーザノード202を接続する特定の属性をもつ特定のエッジ206を記載または例示するが、本開示はユーザノード202を接続する任意の適した属性をもつ任意の適したエッジ206を企図する。限定ではないが、例として、エッジ206は交友関係、家族関係、仕事関係もしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、加入者関係、上下関係、互恵関係、非互恵関係、別の適した種類の関係、または2つ以上のこのような関係を表してもよい。また、本開示は、全体として、ノードを接続されているものとして記載しているが、本開示はユーザまたは概念も接続されるものとして記載する。本明細書において、ユーザまたは概念が接続されるというとき、適切な場合、そのユーザまたは概念に対応するノードがソーシャル・グラフ200において1つまたは複数のエッジ206によって接続されることをいう。
特定の実施形態において、ユーザノード202と概念ノード204との間のエッジ206は、ユーザノード202に関連付けられているユーザが概念ノード204に関連付けられている概念に対して行う特定のアクションまたは活動を表してもよい。限定ではないが、例として、図2に図示するように、ユーザはある概念について、「いいね!を表明する」、「出席した」、「再生した」、「聴いた」、「料理した」、「勤務した」、または「見た」のであってもよく、そのそれぞれが、あるエッジタイプまたはサブタイプに対応してもよい。概念ノード204に対応する概念プロフィールページは、例えば、選択可能な「チェックイン」アイコン(例えば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含み得る。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャル・ネットワーキング・システムは、それぞれのアクションに対応するユーザのアクションに応答して、「お気に入り」エッジまたは「チェックイン」エッジを作成してもよい。限定ではないが、別の例として、ユーザ(ユーザ「カーラ」は特定のアプリケーション(オンラインミュージックアプリケーションのSPOTIFY)を使用して特定の楽曲(「アクロス・ザ・シー」)を聴いた可能性がある。この場合、ソーシャル・ネットワーキング・システムは、ユーザがその楽曲を聴いて、そのアプリケーションを使用したことを示すために、ユーザに対応するユーザノード202と楽曲およびアプリケーションに対応する概念ノード204との間に「聴いた」エッジ206および「使用した」エッジ(図2に図示する)を作成してもよい。また、ソーシャル・ネットワーキング・システムは、その特定の楽曲がその特定のアプリケーションによって再生されたことを示すために、楽曲およびアプリケーションに対応する概念ノード204間に「再生した」エッジ206(図2に図示する)を作成してもよい。この場合、「再生した」エッジ206は外部アプリケーション(SPOTIFY)が外部オーディオファイル(楽曲「アクロス・ザ・シー」)に対して行ったアクションに対応する。本開示はユーザノード202と概念ノード204とを接続する特定の属性をもつ特定のエッジ206を記載するが、本開示はユーザノード202と概念ノード204とを接続する任意の適した属性をもつ任意の適したエッジ206を企図する。また、本開示は、単一の関係を表すユーザノード202と概念ノード204との間のエッジを記載するが、本開示は1つまたは複数の関係を表すユーザノード202と概念ノード204との間のエッジを企図する。限定ではないが、例として、エッジ206は、ユーザが特定の概念について「いいね!」を表明したことおよび使用したことの両方を表してもよい。代替的に、別のエッジ206がユーザノード202と概念ノード204との各タイプの関係(または多数の単一の関係)を表してもよい(図2に図示するように、ユーザ「エドウィン」のユーザノード202と「SPOTIFY」の概念ノード204との間)。
特定の実施形態において、ソーシャル・ネットワーキング・システムは、ソーシャル・グラフ200にユーザノード202と概念ノード204との間のエッジを作成してもよい。限定ではないが、例として、概念プロフィールページを閲覧するユーザは(例えば、ウェブブラウザまたはユーザのクライアントシステムがホストする特定用途向けアプリケーションを使用することによってなど)、「いいね!」アイコンをクリックまたは選択することによって、概念ノード204で表される概念が好きであることを示してもよく、「いいね!」アイコンは、ユーザのクライアントシステムに、概念プロフィールページに関連付けられている概念をユーザが好きであることを示すメッセージをソーシャル・ネットワーキング・システムに送信させてもよい。メッセージに応答して、ソーシャル・ネットワーキング・システムは、ユーザと概念ノード204との間の「いいね!」エッジ206で図示されるように、ユーザに関連付けられているユーザノード202と概念ノード204との間にエッジ206を作成してもよい。特定の実施形態において、ソーシャル・ネットワーキング・システムはエッジ206を1つまたは複数のデータストアに記憶してもよい。特定の実施形態において、エッジ206は、特定のユーザのアクションに応答して、ソーシャル・ネットワーキング・システムによって自動的に形成されてもよい。限定ではないが、例として、第1ユーザが写真をアップロードし、映画を鑑賞し、または楽曲を聴く場合、第1ユーザに対応するユーザノード202とこれらの概念に対応する概念ノード204との間にエッジ206が形成されてもよい。本開示は特定のエッジ206を特定の方法で形成することを記載するが、本開示は任意の適したエッジ206を任意の適した方法で形成することを企図する。
ソーシャル・グラフ200は複数の製品ノードをさらに含み得る。製品ノードは特定の企業に関連付けられていてもよい特定の製品を表してもよい。企業は消費者・企業間システム110に製品カタログを提供してもよく、そのため消費者・企業間システム110はソーシャル・グラフ200の製品内の各製品を表してもよく、各製品は個別の製品ノードにある。製品ノードは、価格情報、説明情報、製造者情報、在庫情報、および他の関連情報など、製品に関わる情報を含み得る。例えば、レストランのメニューに掲載される品目のそれぞれをソーシャル・グラフ200内で、品目のそれぞれを記述する製品ノードを用いて表してもよい。製品ノードは、エッジによって、製品を提供する企業にリンク付けしてもよい。多数の企業が1つの製品を提供する場合、各企業は自らの製品提供に関連付けられている個別の製品ノードを有してもよく、またはそれぞれ同じ製品ノードにリンク付けしてもよい。製品ノードは、エッジによって、製品を購入した、評価した、所有した、推奨している、または閲覧した各ユーザに、関係の性質(例、購入した、評価した、所有している、推奨した、閲覧した、またはその他の関係)を記述するエッジを用いてリンク付けしてもよい。製品ノードのそれぞれは、リンク付けされた加盟店企業であることによって、グラフIDおよび関連加盟店IDに関連付けてもよい。そのため、ある企業から入手可能な製品は、ソーシャル・グラフ200内の企業のユーザノードにリンク付けされている入手可能な製品ノードを検索することによって、ユーザに通信されてもよい。製品ノードに関する情報は、参照製品に関する情報をカプセル化する製品オブジェクトとして、メッセージング・システムによって操作されてもよい。
そのため、ソーシャル・グラフ200は、ソーシャル・ネットワーキング・システムの2人以上のユーザの共有される関心、共有される体験、または他の共有されるもしくは共通の属性を推測するために使用され得る。例えば、ソーシャル・グラフ200内に表現された共通のビジネス、製品、メディア・アイテム、協会、または他のエンティティに対するエッジを各々が有する、2人以上のユーザは、そのエンティティとの共有される関係を示すことができ、それは、メッセージング・システム150を含む、ソーシャル・ネットワーキング・システムの使用のカスタマイズを、1人または複数のユーザに対して提案するために使用され得る。
図3Aは、クライアント・デバイス320上における、メッセージング・インターフェースを表示したユーザ・インターフェース300の一実施形態を示している。
ユーザ・インターフェース300は、1対1メッセージ・スレッドのためのユーザ・インターフェースを備えることができる。メッセージ・スレッドについてのメッセージ交換の少なくとも部分は、1対1メッセージ・スレッド対話表示310内に表示され得る。1対1メッセージ・スレッド対話表示310は、1対1メッセージ・スレッドのユーザによって交換された1つまたは複数のメッセージの表示を備えることができる。
1つまたは複数のメッセージの各々は、メッセージ・バブル315など、特定のメッセージ・バブルによって表現され得る。メッセージ・バブルは、原子的なメッセージング対話を表現することができる。メッセージ・バブルは、一般に、定義された幾何学的領域に対応することができ、特定のメッセージング交換の内容(例えば、テキスト、メディア)は、定義された幾何学的領域内に含まれる。メッセージ・バブルは、それをメッセージ・スレッド対話表示の背景から区別する、別個の色または複数の色(例えば、1つもしくは複数のグラデーション)を有することができる。メッセージ・バブルは、描写されたような黒い輪郭など、別個に色付けされた境界を有することができ、またはメッセージ・バブルと背景の異なる色の間にインターフェースによって定義された境界を有することができる。いくつかの実施形態においては、メッセージ・バブルおよび背景のどちらかまたは両方の1つまたは複数の色は、表示構成システム100のユーザによってカスタマイズおよび構成され得る。
メッセージ・スレッドのためのユーザ・インターフェース300は、スレッド・コントロール317を含むことができる。さらなるユーザ・インターフェース・コントロールに対するアクセスを可能にするコントロール・バーなど、スレッド・コントロール317のいくつかの部分は、メッセージ・スレッドの表示中、持続的に可視であることができる。コントロール・バー内のコントロールなど、スレッド・コントロール317のいくつかは、テキスト入力、メディア選択、絵文字選択、カメラ使用など、様々なタスクの遂行のためのさらなるユーザ・インターフェース・コントロールに対するアクセスを可能にすることができる。しかしながら、いくつかのコントロール(いくつかの実施形態においては、スレッド・コントロール317のただ1つ)は、ソーシャル承認アイコンなど、単一のアイコンを即時に送ることを可能にする。スレッド・コントロール317の1つまたは複数は、特定のメッセージング・ボットまたはサービスに対応する、ボット起動またはサービス要求コントロールを備えることができる。スレッド・コントロール317の部分は、テキストの入力のためのテキスト・コントロールを備えることができる。スレッド・コントロール317の部分は、ユーザによって入力されたまたは他の方法で選択されたテキストを表示する、テキスト入力表示領域を備えることができるが、それは、スレッド内の他の参加者に対してまだメッセージとして送られていない。いくつかの実施形態においては、テキスト入力表示領域において入力されたまたは入力のために選択されたテキストは、分析、提案の提供、または他の動作のために、メッセージング・システム100のメッセージング・サーバ110に対して伝達され得る。
ユーザ・インターフェース300は、スレッドに関与する1人または複数の他のユーザをリストアップした、スレッド・タイトル305を含むことができる。スレッド・タイトル305は、姓名、省略名、またはメッセージングおよび/もしくはソーシャル・ネットワーキング対話のために特定のユーザとともに使用する名前として登録された他の名前など、ユーザの名前を自動的に使用することができる。
図3Bは、クライアント・デバイス320上における、運送インターフェースを表示したユーザ・インターフェース325の一実施形態を示している。運送インターフェースは、メッセージング・クライアントの要素を備えることができる。
運送インターフェースは、運送が要求されるときに、運送コントロールを選択することなどによって起動され得る。一般に、サービス固有のインターフェースは、サービス固有のコントロールが起動されたときに、起動され得る。いくつかのケースにおいては、サービス固有のインターフェースは、ローカル運送(例えば、自動車同乗)など、サービスのクラスまたはタイプに固有であることができる。他のケースにおいては、サービス固有のインターフェースは、特定の運送提供者など、特定のサービス提供者に固有であることができる。
運送インターフェースは、クライアント・デバイス320がある、および代わりにクライアント・デバイス320のユーザがいるローカル・エリアの地図など、運送情報表示335を含むことができる。運送情報表示335は、ローカル・エリアの地図上に表現され得るような、クライアント・デバイス320の現在のロケーションを含むことができる。
運送インターフェースは、運送コントロール340を含むことができる。運送コントロールは、出発ロケーションおよび行先ロケーションの指定を可能にすることができる。自動車同乗サービスなど、運送サービスが要求されている場合、出発ロケーションは、サービスのユーザが迎えに来てもらうロケーションを備えることができる。行先ロケーションは、サービスのユーザが送り届けてもらうロケーションを備えることができる。図3Bに示された実施形態においては、出発ロケーションは、指定されているが、行先ロケーションは、指定されていない。出発ロケーションは、要求されたサービスについての推定される迎車時刻に関連付けられる。行先ロケーションは、「行先を追加」と書かれたコントロールが選択された場合に、指定され得る。出発ロケーションは、現在の出発行先によって表現されたコントロールが選択された場合、変更され得る。いくつかの実施形態においては、出発ロケーションおよび/または行先ロケーションは、表示された地図上においてそれを選択することなどによって、指定され得る。いくつかの実施形態においては、表示された地図は、ズーム・イン、ズーム・アウト、スクロール、または他の方法で操作され得る。
図3Cは、行先構成インターフェースを表示したユーザ・インターフェース350の一実施形態を示している。
運送構成コントロール355は、複数の提案されるロケーションの表示を備えることができる。提案されるロケーションは、様々な技法に基づいて、決定され得る。いくつかの実施形態においては、提案されるロケーションは、運送構成コントロール355がそれから起動されたメッセージ・スレッドの内容に基づいて、決定され得る。例えば、メッセージ・スレッドの内容に関連するロケーションが、提案され得る。示された実施形態においては、映画館に着くことに言及するメッセージ・スレッドに応答して、映画館が、提案され得た。
いくつかの実施形態においては、ロケーションは、近さに基づいて、提案され得、より近いロケーションは、より遠いロケーションよりも奨励される。いくつかの実施形態においては、ロケーションは、メッセージ・スレッドに関与する1人または複数のユーザ、特にクライアント・デバイス320のユーザの履歴に基づいて、提案され得る。例えば、現在の時(例えば、時間帯、曜日)に類似するかつての時に、最近訪れた、頻繁に訪れた、最近もしくは頻繁に訪れたロケーション、または他の方法でユーザの履歴に関連するロケーションが、提案され得る。いくつかの実施形態においては、1人または複数のユーザの住所など、メッセージ・スレッドに関わる1人または複数のユーザに関連するロケーションが、提案され得る。いくつかの実施形態においては、1人または複数の他のユーザに関係のあるロケーションが、提案され得る。例えば、メッセージ・スレッドにおいて、別のユーザが言及されている場合、そのユーザの住所が、クライアント・デバイス320のユーザに利用可能にされている場合、提案され得る。
運送構成コントロール355は、テキスト入力コントロールを含むことができる。提案されるロケーションは、テキスト入力コントロールを使用して入力されたテキストに少なくとも一部は基づいて、決定され得る。
図3Dは、構成された運送要求を表示したユーザ・インターフェース360の一実施形態を示している。
構成された運送要求は、指定された出発ロケーションおよび行先ロケーションの両方を含むことができる。出発ロケーションおよび行先ロケーションのテキスト版は、更新された運送コントロール370内に表示され得る。更新された運送コントロール370は、現在構成されている出発ロケーションまたは行先ロケーションを選択することによって、出発ロケーションおよび/または行先ロケーションの変更を可能にすることができる。出発ロケーションおよび行先ロケーション、ならびに提案される経路のグラフィック表現が、更新された運送情報365内に表示され得る。いくつかの実施形態においては、更新された運送要求は、構成された道のりについての推定される移動時間に関連付けて、表示され得る。
図3Eは、メッセージ・スレッド内に運送要求を表示したユーザ・インターフェース375の一実施形態を示している。
メッセージ・スレッドからサービスに対して渡された構成された運送要求は、その後、メッセージ・スレッド内に表示され得る。サービス要求の一実施形態が、生成され、メッセージ・スレッドのメッセージの系列に対して追加され、メッセージ・スレッドに関わるユーザのすべてに対して送信され得る。メッセージ・スレッドに関わるユーザの各々は、メッセージ・スレッドのビュー内において、スレッド内ボット要求表示385を提供され得る。運送要求については、スレッド内ボット要求表示385は、出発ロケーションのテキスト表示、行先ロケーションのテキスト表示、出発ロケーションの視覚的表現、行先ロケーションの視覚的表現、および/または提案されるルートの表現を含むことができる。一般に、要求表示は、要求されるサービスのテキスト・ディスクリプタを含むことができる。
図4Aは、メッセージ・スレッド内にボット・メッセージを表示した、ユーザ・インターフェース400の一実施形態を示している。ボット・メッセージは、直接的な人間の関与なしに、自動化ルーチンによって生成された、自動的に生成されたメッセージであることができる。
いくつかのケースにおいては、ボットは、メッセージを生成し、メッセージをメッセージ・スレッドに対して提供することができる。メッセージは、メッセージ・スレッド内からボットに要求されたサービスに関連することができる。スレッド内から行われたボットに対する要求は、そうでない場合それを行うことが防止され得る、メッセージをメッセージ・スレッドに対して送信することをボットに認可することができ、この例においては、スレッド内ボット・メッセージ405は、ボットに要求されたサービスの確認を備えることができる。いくつかの実施形態においては、スレッド内ボット・メッセージ405は、メッセージ内ボット・コントロール410を含むことができ、複数のメッセージ内ボット・コントロールを含むことができる。メッセージ内ボット・コントロール410は、ユーザが、メッセージ内ボット・メッセージ405が関連する要求を変更し、取消し、またはそうでない場合それと対話することを可能にすることができる。この例においては、メッセージ内ボット・コントロール410は、要求された運送サービスの取消を可能にすることができる。
図4Bは、メッセージ・スレッド内にサービス更新のためのボット・メッセージを表示した、ユーザ・インターフェース425の一実施形態を示している。
示された実施形態においては、第2のスレッド内ボット・メッセージ430が、ボットによって、メッセージ・スレッドに対して追加されている。第2のスレッド内ボット・メッセージ430は、ボットに要求されたサービスに関する更新に関連し、このケースにおいては、更新は、ボットに要求されたサービスを提供する具体的な個人、サービスの遂行に関連する他の情報、およびサービスの遂行に関連する推定される時間を伝達している。第2のスレッド内ボット・メッセージ430は、サービスを提供する具体的な個人との交信など、追加の機能を可能にし、サービスを提供する個人についての更新された推定される到着時間を取り出す、メッセージ内ボット・コントロール435をさらに含む。
図4Cは、サービス提供者からのスレッド内ライブ・チャット・メッセージ455を表示した、ユーザ・インターフェース450の一実施形態を示している。
いくつかの実施形態においては、サービスについてのスレッド内メッセージは、メッセージング・ボットによって自動的に生成されたボット・メッセージであることができる。しかしながら、他の実施形態においては、サービスについてのスレッド内メッセージは、スレッド内ライブ・チャット・メッセージ455であることができる。スレッド内ライブ・チャット・メッセージ455は、メッセージ・スレッド内において要求されたサービスに応答して、人間の運用者によって作文され、および渡されたメッセージを備えることができる。ボット・メッセージとは対照的に、スレッド内ライブ・チャット・メッセージ455は、使用するためにプログラムされ、またはプログラム的に生成される代わりに、サービスの状況またはメッセージ・スレッド内において行われた他の要求に応答して、個々に生成または個々に選択され、メッセージング・システム100に対して渡され得る。
スレッド内ライブ・チャット・メッセージ455は、サービスが、一般にメッセージ・スレッドの参加者でなく、一般にメッセージ・スレッドの内容に通じておらず、および一般にメッセージをメッセージ・スレッドに対して追加することを認可されていないにもかかわらず、メッセージ・スレッド内に挿入され得る。サービスは、サービスの要求、サービスに対する問い合わせ、またはそうでない場合サービスとの交信を行うために使用されたメッセージ・スレッドに基づいて、スレッド内ライブ・チャット・メッセージ455をメッセージ・スレッドに対して渡すことを、メッセージング・システム100によって認可され得る。しかしながら、サービス提供者が、サービス提供者に対して向けられていないメッセージを受け取ることも、見ることも防止され得、最初にサービス・エイリアスもしくはメッセージング・ボット・エイリアスを使用したメッセージ、またはそうでない場合サービス提供者に対してアドレス指定され、もしくはサービス提供者からのメッセージに応答しているメッセージなど、サービス提供者に対して具体的に向けられたメッセージだけを提供され得る。
スレッド内ライブ・チャット・メッセージ455は、具体的なサービスを提供する運用者によって提供され得る。示された実施形態においては、自動車同乗サービスについてのドライバは、スレッド内ライブ・チャット・メッセージ455をメッセージング・システム100に対して送信し、スレッド内ライブ・チャット・メッセージ455をメッセージ・スレッドの参加者に対して配信させた。これらのケースにおいては、スレッド内ライブ・チャット・メッセージ455は、表示のために、具体的なサービスを提供する運用者についてのアカウント名、ユーザ・アバタ、または他の個人識別情報に関連付けられ得、運用者は、メッセージ・スレッドまたはそれの部分に一時的にアクセスすることを、個々に認可され得る。例えば、運用者は、運用者に対して、または運用者が関連付けられたサービスに対してアドレス指定された、メッセージ・スレッドの部分に一時的にアクセスすることを、個々に認可され得る。運用者またはサービスは、「@」シンボルなどのアドレス・シンボルおよびサービスについての名前をコメントの前に付けることによって、アドレス指定され得る。
代替的に、スレッド内ライブ・チャット・メッセージ455は、サービス提供者の代表など、サービスについてのサービス提供者によって提供され得る。例えば、自動車同乗サービスを代表するカスタマ・サービスは、メッセージ・スレッドの参加者に対する配信のために、スレッド内ライブ・チャット・メッセージ455をメッセージング・システム100に対して送信することができる。これらのケースにおいては、スレッド内ライブ・チャット・メッセージ455は、表示のために、サービスの代表についてのアカウント名、ユーザ・アバタ、または他の個人識別情報に関連付けられ得、代表は、メッセージ・スレッドに一時的にアクセスすることを、個々に認可され得る。代替的に、スレッド内ライブ・チャット・メッセージ455は、表示のために、サービス全般についてのアカウント名、ユーザ・アバタ、または他の個人識別情報に関連付けられ得る。サービスのためのコンピュータ・システムは、メッセージ・スレッドまたはそれの部分に一時的にアクセスすることを、個々に認可され得、サービスは、それ自体の手順に従った、それの代表に対する、メッセージ・スレッドを用いた伝達のために、コンピュータ・システムに対するアクセスを提供する。例えば、運用者は、運用者に対して、または運用者が関連付けられたサービスに対してアドレス指定された、メッセージ・スレッドの部分に一時的にアクセスすることを、個々に認可され得る。
図5Aは、メッセージ・スレッド内にトリガを表示した、ユーザ・インターフェース500の一実施形態を示している。
トリガは、一般に、メッセージング・システム100が潜在的なアクションに関連付けた、メッセージ・スレッドの単語、句、または他の要素に対応することができる。ボット・トリガは、一般に、メッセージング・システム100がボットに対する潜在的な要求に関連付けた、トリガに対応することができる。示された実施形態においては、テキスト断片「映画館」は、第1のボット・トリガ505を備えることができ、テキスト断片「サウスポイント」は、第2のボット・トリガ510を備えることができる。第1のボット・トリガ505は、映画館に関連するボット要求に対する関心を示すことができる。第2のボット・トリガ510は、ロケーション「サウスポイント」に関連するボット要求に対する関心を示すことができ、「サウスポイント」は、独立して、または映画の既存のスレッド・コンテキストに関連付けて、「サウスポイント」と呼ばれる特定の映画館に関連付けられたものとして識別され得る。トリガを選択したユーザは、トリガに関連する、提案されるボットなど、提案されるサービスを起動することができる。トリガは、単語および/または句とサービスとの間の事前決定および事前割り当てされた関連付けに基づいて、決定され得、または自然言語プログラミング技法に基づいて、自動的に決定され得る。
図5Bは、トリガに応答して提案されるサービスを表示した、ユーザ・インターフェース525の一実施形態を示している。
ユーザは、メッセージング・スレッド・インターフェースにおいて、トリガを選択することができる。メッセージングに応答して、クライアントは、提案されるボットに対応することができるような、複数の提案されるサービスを取り出し、複数のトリガされたコントロール530内に表示することができる。いくつかの実施形態においては、複数の提案されるサービスは、メッセージング・クライアントおよび/またはメッセージング・システム100がトリガを検出したのに応答して、自動的に表示され得る。トリガされたコントロール530は、複数のメッセージング・ボット・オプションを備えることができる。メッセージング・ボット・オプション535は、特定のサービスに関連付けられた特定のボットを備えることができる。いくつかの実施形態においては、メッセージング・ボット・オプションは、サービス遂行情報540に関連付けられ得る。サービス遂行情報は、例えば、推定される到着時間、および推定される費用または価格情報など、推定される遂行情報を含むことができる。メッセージング・ボット・オプションは、サービス・レーティング情報545を含むことができ、サービス・レーティング情報545は、ユーザ・フィードバックから導き出され得るような、サービスの品質の評価を備える。メッセージング・ボット・オプションは、関連付けられたメッセージング・ボットとの対話を起動するために、選択され得る。メッセージング・ボット・オプションは、それらがそれから起動されたメッセージング・スレッドに関連付けて、表示され得る。
トリガされたコントロール530は、サービスについての、およびメッセージング・ボットについての提案を備えることができる。トリガされたコントロール530は、提案されるメッセージング・ボットのランク付けされたリストを備えることができる。提案されるメッセージング・ボットは、様々な技法に基づいて、および様々な要因に基づいて、決定され得る。提案されるメッセージング・ボットは、スレッド内のユーザのロケーションに基づいて、選択され、ランク付けされ得る。例えば、1人または複数のユーザのロケーションに地理的に近い、またはより地理的に近いメッセージング・ボットが、選択され、またはより高くランク付けされ得る。カップルが、ともに職場にいながら、互いにメッセージングを行っているときに、レストラン関連のメッセージング・ボットを提案するなど、ユーザの現在の地理的ロケーションと以前に関連付けられたアクティビティに関連するメッセージング・ボットが、同様に、選択され、またはより高くランク付けされ得る。
提案されるメッセージング・ボットは、1つまたは複数の検出されたキーワードまたは意図とメッセージング・ボットとの間の関連付けに基づいて、選択され、ランク付けされ得る。キーワードは、メッセージング対話の内容から抽出された単語または句に対応することができる。メッセージング・システム100は、関係のあるキーワードのレジストリを有することができ、メッセージング・ボットを選択し、ランク付けするための基礎として、それらのキーワードを識別し、抽出するために、メッセージング対話の内容を検査することができる。例えば、「同乗」または「輸送」の言及は、輸送関連サービスの提案、または輸送関連サービスに対するより高いランク付けを促すことができる。意図は、メッセージング対話内において明示的に使用されていない、メッセージング対話のコンテキストに基づいて生成されたキーワード、概念、句、または他の識別子を備えることができる。メッセージング・システム100は、意図のレジストリを有することができ、メッセージング対話によって推測される意図を決定するために、メッセージング対話の内容に対して自然言語処理を遂行することができる。例えば、複数の具体的な映画の言及は、単語「映画」の具体的な使用がなくても、意図キーワード「映画」を暗示することができる。別の例においては、「何かを見に行きたい」かどうかに関する個人対個人の質問は、単語「映画」の直接的な使用がなくても、映画に対する関心を暗示することができる。
キーワードおよび/または意図は、メッセージ・スレッドにおいて具体化されたメッセージング対話の内容または内容の一部から、抽出され得る。いくつかのケースにおいては、メッセージ・スレッドとの関わりの現在の期間を検出し、その現在の期間についてのメッセージ・スレッドからキーワードおよび/または意図を抽出することなどによって、メッセージ・スレッドの最近の部分が、使用され得る。メッセージ・スレッドの最近の部分は、様々な技法に従って、定義され得る。いくつかのケースにおいては、最近の部分は、事前定義された時間の長さに従って、定義され得、最近の部分は、事前定義された時間の長さに等しい長さにわたり、現在時間において終了する、時間の範囲の間に交換された、スレッドの断片である。いくつかのケースにおいては、最近の部分は、メッセージ・スレッドとの関わりの一時的な解消を示す、事前定義され得る十分な長さの会話における、直近の中断を検出することなどによって、可変の長さにわたるように、決定され得る。例えば、メッセージ・スレッドの最近の部分は、1時間よりも長い会話におけるギャップ(中断)を含まない、現在時間において終了するスレッドの最大範囲であることができる。スレッドの最近の部分を定義するための他の技法が、使用され得る。メッセージ・スレッドのこの最近の部分は、メッセージ・スレッド内において明示的に使用される1つまたは複数の明示的なキーワードを備えることができ、および自然言語処理技法に基づいてメッセージ・スレッドから推測される1つまたは複数の意図キーワードを備えることができる、1つまたは複数のキーワードを決定するために、解析され得る。
明示的に抽出されたか、それとも意図から導き出されたかにかかわらず、キーワードは、メッセージ・スレッド内のユーザにとって関心があり得る、1つまたは複数のサービスを決定するために、使用され得る。トリガされたコントロール530は、1つまたは複数のサービスについての1人または複数の提供者に対応する、メッセージング・ボットの選択を備えることができる。例えば、「映画」および「輸送」に関連するキーワードが、抽出され、または推測され得る。チケット販売サービスおよび映画館運営者など、映画に関連する複数の提供者が、選択され得る。複数の自動車同乗サービスなど、輸送に関連する複数の提供者が、選択され得る。複数のサービスの各々についての複数の提供者は、メッセージ・スレッドにおけるユーザにとって関心があり得るものとして検出された複数のサービスを表現する、複数の組み合わされた提供者に、一緒に結び合わされ得る。この複数の組み合わされた提供者、およびそれらに関連付けられたメッセージング・ボットは、その後、ロケーション、提供者によって提供されるサービスに対する検出された関心のレベル、具体的な提供者に対する検出された関心のレベル、全体的に1人もしくは複数のユーザについての、もしくは具体的にメッセージ・スレッド内において、様々なサービスを要求した以前の履歴、全体的に1人もしくは複数のユーザについての、もしくは具体的にメッセージ・スレッド内において、様々な提供者を使用した以前の履歴を含む、様々な要因に従って、または他の任意の関連のある要因に従って、ランク付けされ得る。
複数のサービスがオファーされる、いくつかの実施形態においては、対応する提供者のランク付けは、オファーされる様々なサービスを紹介するために、構築され得る。例えば、各サービスについて最も高くランク付けされる提供者は、サービスのいずれについても、第2の提供者よりも先に、トップにリストアップされる提供者(したがって、トップにリストアップされる関連付けられたメッセージング・ボット)として、選択され、供与され得る。各サービスについて最も高くランク付けされる提供者は、本明細書において説明された様々な要因に従って決定され得るように、一般にサービスに対する予想される関心に従って、および/または具体的には提供者に対する予想される関心に基づいて、ランク付けされ得る。
図6は、アカウントをリンクさせるように促すプロンプトを表示した、ユーザ・インターフェース600の一実施形態を示している。
ユーザが特定のサービスに関するアカウントをすでに所有している場合、特に、ユーザが特定のサービスに関するアカウントを有していることを、メッセージング・クライアントが認識している場合、ユーザは、メッセージング・システム100に関するメッセージング・アカウントを、サービスのためのユーザ・アカウントとリンクさせることを勧められ得る。メッセージング・クライアントは、ユーザがサービスに関するアカウントをすでに有していることを、例えば、クライアント・デバイス320上にインストールされているサービスのためのアプリケーション、メッセージング・クライアントおよびサービスの両方に知られているユーザについての識別情報(例えば、電話番号、電子メール・アドレス)に基づいて、または任意の知られた技法を使用して、検出することができる。
選択されたボットに対応するサービスに関するアカウントをすでに所有しているユーザは、既存のユーザ・ダイアログ605を提示され得る。既存のユーザ・ダイアログ605は、アカウントをリンクさせることを取消す、または差し控えるためのコントロールを備えることができる。既存のユーザ・ダイアログ605は、アカウントをリンクさせることを続けるためのコントロールを備えることができる。
アカウントをリンクさせることは、メッセージング・システム100とサービスのためのシステムとの間における情報の交換を含むことができる。アカウントをリンクさせることは、名前、人口統計情報、住所、電話番号、電子メール・アドレス、または他の情報など、ユーザについての識別情報の交換を含むことができる。アカウントをリンクさせることは、金融情報の交換を含むことができる。一般に、ユーザに関連するいずれの情報も、アカウントをリンクさせた結果として、交換され得る。アカウントをリンクさせることは、メッセージング・システム100が、ユーザに代わって、リンクされたサービスにサービスを要求することを可能にすることができる。アカウントをリンクさせることは、リンクされたサービスが、メッセージング・システム100を介して、メッセージをユーザに対して送信することを可能にすることができる。
図7Aは、新たなユーザ・ダイアログ705を表示した、ユーザ・インターフェース700の一実施形態を示している。
新たなユーザ・ダイアログ705は、ユーザがサービスに関する既存のアカウントを有することについての知識を、メッセージング・クライアントが欠いているときに、メッセージング・クライアントによって表示され得る。ユーザがサービスに関する既存のアカウントを有することについての知識を、メッセージング・クライアントが欠いている場合、ボットが選択されたときに、新たなユーザ・ダイアログ705が、起動され得る。新たなユーザ・ダイアログ705は、ユーザが、自分がサービスに関するアカウントをすでに有することを示し、アカウントをリンクさせるためにサービス・アカウントについての情報を提供することを可能にする、既存アカウント・コントロールを含むことができる。新たなユーザ・ダイアログ705は、ユーザがサービスに関するアカウントを構成することを可能にする、アカウント作成コントロールを含むことができる。
図7Bは、アカウント作成ダイアログ730についてのアカウント詳細要求を表示した、ユーザ・インターフェース725の一実施形態を示している。
アカウント作成ダイアログ730は、ユーザが、選択されたボットについてのサービスに関するアカウントを作成することを、可能にすることができる。アカウントのために必要とされる詳細の少なくともいくつかの部分は、メッセージング・システム100に知られている場合は、メッセージング・システム100によって指定され得る。示された実施形態においては、電子メール・アドレスおよび公開プロフィール(すなわち、ソーシャル・ネットワーキング・システムのための)は、サービスによって必要とされる詳細を可能にするために、共有され得る。
しかしながら、いくつかの詳細は、メッセージング・システム100に知られていないことがあり、したがって、アカウント作成ダイアログ730は、未知の詳細をユーザが指定することを要求することができる。必要とされる情報コントロール735は、ユーザが、メッセージング・システム100に知られていない必要とされる情報を指定することを可能にする。示された実施形態においては、メッセージング・システム100は、サービスに対して提供するために、電話番号およびクレジット・カード情報をユーザに対して要求する。メッセージング・システム100は、ユーザについてのユーザ・アカウント情報を拡張するために、この情報を保持することができ、その後、この情報を再使用することができる。
サービスによって必要とされる情報が、まだメッセージング・システム100に知られていない場合、メッセージング・クライアントは、無効化されたアカウント作成コントロール740を提示することができる。無効化されたアカウント作成コントロール740は、ユーザがそれを使用してアカウント作成を完成することができないように、非アクティブであることができる。無効アカウント作成コントロール740は、必要とされる情報がひとたび入力されると、有効化され得る。
図7Cは、完成されたアカウント作成ダイアログを表示した、ユーザ・インターフェース750の一実施形態を示している。
ユーザについての必要とされる情報のすべてが、ひとたびメッセージング・システム100に登録されると、完成されたアカウント作成ダイアログは、示されたダイアログに対応することができる。メッセージング・システム100にそのすべてが知られている情報を必要とするボットが、選択された場合、中間の未完成アカウント作成ダイアログなしに、完成アカウント作成ダイアログが、即座に表示され得る。サービスによって必要とされるすべての情報が、メッセージング・システム100に登録されているので、アカウント作成ダイアログ730は、今は、有効化されたアカウント作成コントロール755を含む。有効化されたアカウント作成コントロール755は、ユーザが、サービスに関するアカウントの作成を始めることを可能にすることができる。メッセージング・システム100は、必要とされる情報をサービスに対して提供し、それによって、アカウント作成を遂行することができる。
いくつかの実施形態においては、金融情報だけは、トークン化された形態で、サービスに対して提供され得る。クレジット・カード情報など、金融情報のトークン化された形態は、サービスが金融情報の詳細にアクセスすることなしに、サービスが取引を遂行することを可能にするのに、十分であることができる。例えば、ユーザについてのクレジット・カード番号は、サービスから隠蔽され、もっぱらメッセージング・システム100を用いて維持され得る。いくつかの実施形態においては、メッセージング・システム100は、ユーザの代わりに、ユーザについての金融情報を使用して、金融取引を遂行し、必要とされる資金をサービスに対して提供することができる。どちらの実施形態においても、ユーザの金融情報は、それをサービスに対して送信することを差し控えることによって、保護され得る。
図8Aは、提案されたボット805とともに、部分的なボット・アドレス810を表示した、ユーザ・インターフェース800の一実施形態を示している。
ユーザは、テキスト・コントロールを使用して、メッセージング・インターフェースのテキスト入力フィールドにおいてテキストを入力することができる。ユーザによって入力されたテキストは、それがボット起動に対応することができるかどうかを決定するために、解析され得る。いくつかの実施形態においては、「@」シンボルなど、特定のシンボルが、ボット起動を示すために、使用され得る。メッセージング・クライアントおよび/またはメッセージング・システム100は、ボット起動シンボルを検出し、返答としてボットを提案することができる。ボット起動シンボルばかりでなく、追加のテキストも、指定された場合、メッセージング・システム100は、指定されたテキストで開始するボット・エイリアスを有する、特定の提案されるボット805を生成することができる。ボット・エイリアスは、ボットについての登録名に対応することができ、名前は、メッセージング・システム100に登録されている。
提案されるボット805は、様々な技法に基づいて、決定され得る。いくつかの実施形態においては、提案されるボット805は、部分的なボット・アドレス810が入力された、メッセージ・スレッドの内容に基づいて、決定され得る。例えば、メッセージ・スレッドのコンテキストに関連するボットが、提案され得る。示された実施形態においては、映画館に行くことに言及したメッセージ・スレッドに応答して、映画サービスのためのボットが、提案され得た。いくつかの実施形態においては、ボットは、メッセージ・スレッドに関与する1人または複数のユーザ、特にクライアント・デバイス320のユーザの履歴に基づいて、提案され得る。例えば、現在の時(例えば、時間帯、曜日)に類似するかつての時に、最近使用された、頻繁に使用された、最近もしくは頻繁に使用されたボット、または他の方法でユーザの履歴に関連するボットが、提案され得る。図5Bを参照して説明された技法のいずれかなど、様々な技法のいずれかが、提案されたボット805の選択のために使用され得る。提案されたボットを選択することは、選択されたボットについての完成エイリアスを用いて、テキスト入力フィールドを自動的に完成することができる。
図8Bは、完成したボット・アドレス835に基づいて取り出された、提案されるコマンド830を表示した、ユーザ・インターフェース825の一実施形態を示している。
完成したボット・アドレス835は、ボット起動シンボルで開始し、ボット・エイリアスに対応するテキスト断片が後続する、テキスト断片を備えることができる。ボット・アドレスの完成は、スペースなど、ボット・エイリアス内において許容されない特定のキャラクタの使用を通して、決定され得る。テキスト入力フィールドにおいて入力された完成したボット・アドレス835に応答して、提案されるコマンド830が、メッセージング・クライアントによって取り出され、ユーザに対して提供され得る。
提案されるボット・コマンド830は、ボットに対応するサービスによって、決定され得る。提案されるボット・コマンド830は、ボットに対して発行するために利用可能なコマンドを備えることができる。提案されるボット・コマンド830は、様々な技法に基づいて、決定され得る。いくつかの実施形態においては、提案されるボット・コマンド830は、完成したボット・アドレス835が入力された、メッセージ・スレッドの内容に基づいて、決定され得る。例えば、メッセージ・スレッドのコンテキストに関連するボット・コマンドが、提案され得る。示された実施形態においては、映画館に行くことに言及したメッセージ・スレッドに応答して、映画サービスのためのボットが、提案され得た。しかしながら、他の実施形態においては、メッセージ・スレッドのプライバシを侵害することを回避するために、ボット・サービスが、ボットのために具体的に印しを付けられていないメッセージ内容を受け取ることが防止され得る。いくつかの実施形態においては、メッセージ・スレッドの完全な履歴を提供することなしに、キーワードが、ボット・サービスに対して提供され得る。
いくつかの実施形態においては、ボット・コマンドは、メッセージ・スレッドに関与する1人または複数のユーザ、特にクライアント・デバイス320のユーザの履歴に基づいて、提案され得る。例えば、現在の時(例えば、時間帯、曜日)に類似するかつての時に、最近使用された、頻繁に使用された、最近もしくは頻繁に使用されたボット・コマンド、または他の方法でユーザの履歴に関連するボット・コマンドが、提案され得る。いくつかの実施形態においては、ボット・サービスが、それに知られているユーザ履歴に基づいて役割を果たすことを可能にするために、完成したボット・アドレス835を入力したユーザについてのユーザ識別子が、ボット・サービスに対して提供され得る。いくつかの実施形態においては、ボット・サービスは、提案されるボット・コマンド830を生成し、メッセージング・クライアントを介してユーザに対して提供するために、それをメッセージング・システム100に対して提供することに、責任を負うことができる。提案されたボット・コマンドを選択することは、完成したボット・コマンドを用いて、テキスト入力フィールドを自動的に完成することができる。
図8Cは、部分的なボット・コマンド860に基づいて取り出された、更新された提案されるコマンド855を表示した、ユーザ・インターフェース850の一実施形態を示している。
テキスト入力フィールドは、ボット起動シンボルと、後続する完成したボット・エイリアスおよび部分的なボット・コマンド860とを含むことができる。メッセージング・システム100は、部分的なボット・コマンド860を、完成したボット・エイリアスによって指定されたボット・サービスについてのボット・コマンドと照合して、部分的なボット・コマンド860のキャラクタで開始するコマンドなど、部分的なボット・コマンド860に対応する更新された提案されるコマンド855を提供することができる。いくつかの実施形態においては、部分的なボット・コマンド860は、完成したボット・エイリアスに関連付けられたボット・サービスに対して提供され得、更新された提案されるコマンド855が、応答して提供され、その後、メッセージング・クライアントを介して、ユーザに対して提供される。これらの実施形態においては、メッセージング・システム100は、メッセージング・クライアント上において生成された各テキスト断片(すなわち、キャラクタの反復的な追加を通して生成された各テキスト断片)を、適切なボット・サービスに対して提供し、応答して提案されるコマンドを受け取り、提案されるコマンドをユーザに対して提供することができる。
図8Dは、スレッド内ボット応答885を表示した、ユーザ・インターフェース875の一実施形態を示している。
メッセージ・スレッドのためのテキスト入力フィールドを介して入力された、スレッド内ボット・コマンド880は、メッセージ・スレッド内におけるメッセージとして、メッセージ・スレッドのすべての参加者に対して配信され得、それによって、メッセージ・スレッドのすべての参加者によって使用されるすべてのデバイスに対して配信され得る。スレッド内ボット・コマンド880は、さらに、ボット・サービスに対して提供され得る。
ボット・サービスは、スレッド内ボット応答885を用いて、スレッド内ボット・コマンド880に応答することができる。スレッド内ボット応答885は、ボット・サービスが、一般にメッセージ・スレッドの参加者でなく、一般にメッセージ・スレッドの内容に通じておらず、および一般にメッセージをメッセージ・スレッドに対して追加することを認可されていないにもかかわらず、メッセージ・スレッド内に挿入され得る。スレッド内ボット応答885は、スレッド内ボット・コマンド880に応答して、ボット・サービスによって生成された応答を備えることができる。この例においては、スレッド内ボット応答885は、ユーザがスレッド内ボット応答885に関連するアクションを取ることを可能にする、スレッド内ボット・コントロール890を備える。ユーザは、テキスト入力フィールドを介して入力され、メッセージ・スレッドの要素として送出される、追加のボット・コマンドを使用して、スレッド内ボット応答885に応答することも可能にされ得る。
図9は、メッセージング・システム100を通して送信されるメッセージ910の一実施形態を示している。
メッセージング・システム100は、複数のコンポーネントを備えることができる。いくつかの実施形態においては、これらの複数のコンポーネントは、複数のサーバの間に分散させられ得る。他の実施形態においては、単一のサーバが、複数のコンポーネントを実施することができる。いくつかの実施形態においては、複数のサーバは、単一のサーバ・デバイスによって実行され得る。他の実施形態においては、複数のサーバは、複数のサーバ・デバイスによって実行され得る。いくつかの実施形態においては、様々なコンポーネントおよび様々なサーバの複数の実例が、冗長性、改善されたスケーリング、および他の利益を提供するために、実行され得る。同様に、クライアント・デバイスは、メッセージング・クライアントの一部として、複数のコンポーネントを実行することができる。
クライアント・デバイスは、ネットワーク・トラフィックを交換するために、無線送信を使用して、他のデバイスと通信することができる。メッセージング取引の交換に含まれ得るような、ネットワーク・トラフィックを交換することは、ネットワーク・インターフェース・コントローラ(NIC)を介して、ネットワーク・トラフィックを送信し、受け取ることを備えることができる。NICは、クライアント・デバイスなどのコンピュータ・デバイスをコンピュータ・ネットワークに対して接続する、ハードウェア・コンポーネントを備える。NICは、ソフトウェア・アプリケーションが、NICにアクセスし、それを使用することを可能にする、ソフトウェア・ネットワーク・インターフェースに関連付けられ得る。ネットワーク・トラフィックは、データ・リンク上において送信される信号として、コンピュータ・ネットワーク上において受け取られ得る。ネットワーク・トラフィックは、これらの信号を捉え、それらを解釈することによって、受け取られ得る。NICは、コンピュータ・ネットワーク上においてネットワーク・トラフィックを受け取り、ネットワーク・インターフェース・アプリケーション・プログラミング・インターフェース(API)を使用して、ネットワーク・トラフィックを、ソフトウェア・アプリケーションからアクセス可能なメモリ・ストレージに対して移送することができる。ネットワーク・インターフェース・コントローラは、ネットワーク通信を通したメッセージング・クライアントとメッセージング・サーバ110との相互動作を含む、本明細書において説明される実施形態のネットワーク・アクティビティのために、使用され得る。例えば、メッセージをクライアント・フロントエンド・サーバ935に対して送信し、またはメッセージをクライアント・フロントエンド・サーバ935から受け取る、メッセージング・クライアントは、情報の送信または受け取りのための、通信ネットワークに対するネットワーク・アクセスのために、ネットワーク・インターフェース・コントローラを使用すると、解釈され得る。
メッセージング・クライアントは、ユーザ・インターフェース・コンポーネント923を備えることができる。ユーザ・インターフェース・コンポーネント923は、一般に、ユーザ・インターフェースをクライアント・デバイスのユーザに対して表示し、クライアント・デバイスについてのメッセージング・クライアントのためのユーザ・コマンドを受け取るように準備され得る。ユーザ・インターフェース・コンポーネント923は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取り、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動することができる。ユーザ・インターフェース・コンポーネント923は、その後、メッセージング・ボット対話ユーザ・インターフェースを介して、メッセージング・ボット対話コマンドを受け取ることができる。
メッセージング・クライアントは、クライアント・メッセージング・コンポーネント926を備えることができる。クライアント・メッセージング・コンポーネント926は、一般に、クライアント・フロントエンド・サーバ935との通信を介して、メッセージング・クライアントの代わりに、メッセージング対話を行うように準備され得る。クライアント・メッセージング・コンポーネント926は、メッセージング・ボット対話コマンドを、クライアント・デバイスからメッセージング・システムに対して送信するように動作することができる。メッセージング・ボット対話コマンドは、メッセージ910として伝達されたテキスト断片の少なくとも部分など、メッセージ910の少なくとも部分であることができる。いくつかのケースにおいては、メッセージ910のメッセージ・ボディを備えるテキスト断片は、メッセージング・ボット対話コマンドに対応することができる。
クライアント・フロントエンド・サーバ935は、一般に、送り元クライアント・デバイス920などのクライアント・デバイスのために、メッセージング・システム100に対するネットワーク・アクセス・ポイントとしての役割を果たすように準備され得る。クライアント・フロントエンド・サーバ935は、メッセージング・コンポーネント930を備えることができ、メッセージング・コンポーネント930は、一般に、メッセージング・システム100のために、メッセージング・サービスに対するネットワーク・アクセス・ポイントとしての役割を果たすように準備される。メッセージング・コンポーネント930は、送り元クライアント・デバイス920からメッセージ910を受け取り、メッセージ910をメッセージ待ち行列980に対して追加することができる。
メッセージ待ち行列980は、具体的には、送り元クライアント・デバイス920のユーザのためのユーザ・アカウントと、メッセージング・システム100内において一意的に関連付けられることなどによって、送り元クライアント・デバイス920のユーザに関連付けられ得る。メッセージ待ち行列980は、このユーザによって使用されるすべてのメッセージング・エンドポイントのために使用される、単一の待ち行列であることができる。メッセージ待ち行列980は、厳密に線形順序で、更新の表現を備えることができる。メッセージ待ち行列980は、様々な技法に従って、データ・ユニットとして組織され得る。メッセージ待ち行列980は、半永続的なメモリ、永続的なストレージ、半永続的なメモリおよび永続的なストレージの両方、または2つの組み合わせの中に記憶され得る。メッセージ待ち行列980は、リンクされたリスト、配列、および待ち行列を組織するための他の技法を含む、様々なデータ構造に従って組織され得る。メッセージ待ち行列980は、一般に、いかなる更新も、それよりも先に受け取られたどの更新よりも前に、待ち行列から除去されない、先入れ先出し(FIFO)待ち行列を備えることができる。
メッセージング・システム100は、ワーカ・サーバ945を備えることができる。一般に、メッセージング・システム100は、様々なタスクに対して割り当てられ得る、複数のワーカ・サーバを備えることができる。ワーカ・サーバ945は、メッセージ待ち行列監視コンポーネント940を備えることができ、メッセージ待ち行列監視コンポーネント940は、メッセージ待ち行列980内に、および様々なフラグ、インジケータ、および他の情報のためのメッセージング・システム100の他のメッセージ待ち行列内にメッセージを備えることができるように、更新を監視するように準備される。
メッセージ待ち行列監視コンポーネント940は、メッセージ待ち行列980を監視するように動作することができる。メッセージ待ち行列監視コンポーネント940は、メッセージ待ち行列980内の各エントリを検査し、メッセージ910がメッセージング・ボット起動を示していることを検出することができる。メッセージ910がメッセージング・ボット起動を示していることを検出したのに応答して、メッセージ待ち行列監視コンポーネント940は、メッセージ910をボット・フレームワーク・コンポーネント950に対して渡すことができる。メッセージ910をボット・フレームワーク・コンポーネント950に対して渡すことは、いくつかの実施形態においては、メッセージ910をボット・フレームワーク・コンポーネント950に対して送信することを備えることができる。他の実施形態においては、メッセージ910をボット・フレームワーク・コンポーネント950に対して渡すことは、メッセージ910についての識別子をボット・フレームワーク・コンポーネント950に対して送信することなどによって、メッセージング・ボット起動を伴うメッセージ910が検出された旨の通知を、ボット・フレームワーク・コンポーネント950に対して送信することを備えることができる。
メッセージング・システム100は、ボット・フロントエンド・サーバ955を備えることができる。ボット・フロントエンド・サーバ955は、メッセージング・システム100のためのメッセージング・ボット・サービスに対するアクセス・ポイントとしての役割を果たすことができる。ボット・フロントエンド・サーバ955は、メッセージング・システム100のサーバと、1つまたは複数の内部および/または外部ボット実行サーバとの間の仲介者としての役割を果たすことができる。ボット・フロントエンド・サーバ955は、一般にアクセス可能なフレームワークをメッセージング・ボット・システムに対して提供するように準備された、ボット・フレームワーク・コンポーネント950を備えることができる。
ボット・フレームワーク・コンポーネント950は、メッセージ910をメッセージ待ち行列監視コンポーネント940から受け取り、またはメッセージ910の通知をメッセージ待ち行列監視コンポーネント940から受け取り、メッセージ910をメッセージ待ち行列980から取り出し、メッセージ910に関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作することができる。
メッセージング・ボット起動は、ボット起動テキスト断片を備えることができる。メッセージ910は、テキスト内容部分を備えることができ、テキスト内容部分は、ボット起動テキスト断片を記録する。ユーザ・インターフェース・コンポーネント923は、メッセージ・スレッド表示のテキスト入力部分において、ボット起動テキスト断片を受け取ることができる。クライアント・メッセージング・コンポーネント926は、ボット起動テキスト断片をメッセージング・サーバ110に対して送信することができる。
ボット起動テキスト断片は、「@」アドレス・シンボルなど、ボット起動シンボルで開始するテキスト断片に基づいて、識別され得る。メッセージ待ち行列監視コンポーネント940は、メッセージ910のテキスト内容部分においてボット起動シンボルを検出し、ボット起動シンボルを検出したことに基づいて、メッセージ910がメッセージング・ボット起動を示していることを検出することができる。メッセージ待ち行列監視コンポーネント940は、メッセージ待ち行列980内の各メッセージを、それらのメッセージがボット起動シンボルで開始しているかについて検査するように動作することができる。
いくつかの実施形態においては、送り元クライアント・デバイス920は、ボット起動フラグを用いてメッセージ910のメタデータ部分にフラグを立てることによって、ボットについての情報を含むメッセージにフラグを立てることができる。メッセージ待ち行列監視コンポーネント940は、メッセージ910のメタデータ部分においてボット起動フラグを検出し、ボット起動フラグを検出したことに基づいて、メッセージ910がメッセージング・ボット起動を示していることを検出することができる。
いくつかのケースにおいては、メッセージング・ボットは、ボットに関連付けられたサービスによって運用される外部ボット・サーバ975など、メッセージング・システム100の外部のサーバによって実行され得る。ボット・フレームワーク・コンポーネント950は、メッセージング・ボットに関連付けられたサービスのための、外部ボット・サーバ975を決定することができる。メッセージング・システム100は、ボット・エイリアスに基づいてインデックス付けされた、ボット・エイリアス・レジストリを維持することができる。ボット・フレームワーク・コンポーネント950は、メッセージ910からのボット・エイリアスによって識別されるメッセージング・ボットを調べ、ボット・エイリアスに関連付けられた外部ボット・サーバ975についてのボット情報を取り出すことができる。ボット情報は、限定することなく、外部ボット・サーバ975と交信するためのアドレス指定情報を示すことができる。ボット・フレームワーク・コンポーネント950は、メッセージ910をメッセージング・ボットに関連付けられた外部ボット・サーバ975に対して送信することによって、メッセージ910をメッセージング・ボットに対して渡すことができる。いくつかの実施形態においては、メッセージ910を渡すことは、メッセージ内容を抽出し、ボット・サーバ対話アプリケーション・プログラミング・インターフェース(API)を使用して、メッセージ内容を外部ボット・サーバ975に対して送信することを含むことができる。
他のケースにおいては、メッセージング・ボットは、メッセージング・システム100のサーバによって実行され得る。ボット・フレームワーク・コンポーネント950は、メッセージング・ボットに関連付けされたサービスのためにホステッド・ボット・サーバ965を決定することができる。ボット・フレームワーク・コンポーネント950は、メッセージ910からのボット・エイリアスによって識別されるメッセージング・ボットを調べ、ボット・エイリアスに関連付けられたホステッド・ボット・サーバ965についてのボット情報を取り出すことができる。ホステッド・ボット・サーバ965は、メッセージング・システム100のプロバイダによって維持される、ボット・サーバを含むことができる。ボット・フレームワーク・コンポーネント950は、メッセージ910をメッセージング・ボットに関連付けられたホステッド・ボット・サーバ965に対して送信することによって、メッセージ910をメッセージング・ボットに対して渡すことができる。
メッセージング・システム100は、ユーザがボットを見つけるのを、およびボットをアドレス指定するのを支援することができる。メッセージング・システム100は、クライアント・デバイスのユーザのために提案されるメッセージング・ボットを生成することができる。これらの提案は、メッセージング・クライアントのテキスト入力フィールドにおいてボット起動シンボルを入力することなどによる、メッセージング・ボットの予想される起動に応答して、生成され得る。これらの提案は、検索を遂行するユーザに即して、メッセージ・スレッド内における1人もしくは複数の他のユーザに即して、メッセージ・スレッドに即して、および/または他の情報に即して、選択され得る。これらの提案は、ユーザによってテキスト入力フィールドに入力されたテキストで開始するボット・エイリアスを選択することによって、ユーザがテキスト入力フィールドに追加のテキストを入力するにつれて、精緻化され得る。
ユーザ・インターフェース・コンポーネント923は、メッセージング・クライアントのテキスト入力フィールドにおいて、エイリアス開始部分を受け取ることができる。ユーザ・インターフェース・コンポーネント923は、テキスト入力フィールドに入力されたテキストを、ボット起動シンボルがそれに先行していることに基づいて、エイリアス開始部分と識別することができる。しかしながら、一般に、ユーザ・インターフェース・コンポーネント923は、テキスト入力フィールドに入力されたいずれのテキストもメッセージング・システム100に対して送信することができる。ユーザ・インターフェース・コンポーネント923は、エイリアス開始部分をボット・フレームワーク・コンポーネント950に対して送信することができる。いくつかの実施形態においては、エイリアス開始部分は、ボット・フロントエンド・サーバ955に対して直接的に送信され得る。他の実施形態においては、エイリアス開始部分は、クライアント・フロントエンド・サーバ935を介して送信され得る。
ボット・フレームワーク・コンポーネント950は、ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取ることができる。ボット・フレームワーク・コンポーネント950は、1つまたは複数の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに照会し、1つまたは複数の予想されるボット・エイリアス・テキスト断片を送り元クライアント・デバイス920に対して送信することができる。送り元クライアント・デバイス920は、1つまたは複数の予想されるボット・エイリアス・テキスト断片を、選択または使用のために、ユーザから利用可能にするために、1つまたは複数の予想されるボット・エイリアス・テキスト断片を、送り元クライアント・デバイス920のユーザに対して表示することができる。ユーザが、ボット・エイリアスをインターフェースにおいて選択すること、またはボット・エイリアスをテキスト入力フィールド内にタイプすることによって、1つまたは複数の予想されるボット・エイリアス・テキスト断片によって伝達される予想されるボット・エイリアスの1つを使用した場合、メッセージ910は、したがって、1つまたは複数の予想されるボット・エイリアス・テキスト断片のうちのボット・エイリアス・テキスト断片を、メッセージ910のテキスト部分に備えることができる。
メッセージング・システム100は、ユーザがボット・コマンドを決定するのを支援することができる。メッセージング・システム100は、クライアント・デバイスのユーザのために、提案されるメッセージング・ボット・コマンドを生成することができる。これらの提案は、メッセージング・クライアントのテキスト入力フィールドにおいて、識別されるボット・エイリアスが後続する、ボット起動シンボルを入力することなどによる、メッセージング・ボットの予想される起動に応答して、生成され得る。これらの提案は、検索を遂行するユーザに即して、メッセージ・スレッド内における1人もしくは複数の他のユーザに即して、メッセージ・スレッドに即して、および/または他の情報に即して、選択され得る。ボット・コマンドの提案は、ボットを実行するサービスによって遂行され得、そのため、提案は、サービス・プロバイダによって、メッセージング・システム100の外部において生成され得る。
これらの提案は、ユーザによってテキスト入力フィールドに入力されたテキストで開始するボット・コマンドを選択することによって、ユーザがテキスト入力フィールドに追加のテキストを入力するにつれて、精緻化され得る。ユーザ・インターフェース・コンポーネント923は、メッセージ・スレッド表示のテキスト入力部分を介して、コマンド・テキスト断片開始部分を受け取り、コマンド・テキスト断片開始部分をボット・フレームワーク・コンポーネント950に対して送信し、コマンド・テキスト断片開始部分をボット・フレームワーク・コンポーネント950に対して送信したのに応答して、1つまたは複数の予想されるボット・コマンド・テキスト断片をボット・フレームワーク・コンポーネント950から受け取ることによって、1つまたは複数の予想されるボット・コマンド・テキスト断片を決定することができる。
ユーザ・インターフェース・コンポーネント923は、メッセージ・スレッド表示のテキスト入力部分において、ボット起動テキスト断片を受け取ることができる。このボット起動テキスト断片を受け取ることは、メッセージング・ボット起動を受け取ることに対応することができる。ユーザ・インターフェース・コンポーネント923は、1つまたは複数の予想されるボット・コマンド・テキスト断片を決定するために、ボット起動テキスト断片をボット・フレームワーク・コンポーネント950に対して送信することができる。ボット・エイリアスについての提案と同様に、いくつかの実施形態においては、ボット起動テキスト断片は、クライアント・フロントエンド・サーバ935を介して、ボット・フレームワーク・コンポーネント950に対して送信され得る。
ボット・フレームワーク・コンポーネント950は、ボット起動テキスト断片を受け取り、ボット・コマンド・テキスト断片のコマンド開始部分を抽出することができる。コマンド開始部分を抽出することは、ボット起動シンボルおよびボット・エイリアスをボット起動テキスト断片から排除することを備えることができる。代替的に、いくつかの実施形態においては、ボット起動テキスト断片全体が、メッセージング・ボットに対して渡され得る。ボット・フレームワーク・コンポーネント950は、コマンド開始部分をメッセージング・ボットに対して渡し、1つまたは複数の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取ることができる。ボット・フレームワーク・コンポーネント950は、その後、1つまたは複数の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信することができる。ユーザが、予想されるボット・コマンド・テキスト断片の1つを使用した場合、それは、メッセージ910のテキスト部分内に現れることができる。
ユーザ・インターフェース・コンポーネント923は、1つまたは複数の予想されるボット・コマンド・テキスト断片をボット・フレームワーク・コンポーネント950から受け取り、1つまたは複数の予想されるボット・コマンド・テキスト断片をメッセージ・スレッド表示内に表示することができる。1つまたは複数の予想されるボット・コマンド・テキスト断片のこの表示は、メッセージング・ボット対話ユーザ・インターフェースを起動することに対応することができる。
ユーザ・インターフェース・コンポーネント923は、1つまたは複数の予想されるボット・コマンド・テキスト断片からのボット・コマンド・テキスト断片のユーザ選択を受け取ることができる。ユーザ選択は、予想されるボット・コマンド断片の表示において、予想されるボット・コマンド・テキスト断片の1つを選択することを備えることができる。ユーザ選択は、メッセージング・クライアントのテキスト入力フィールドにおいて、予想されるボット・コマンド・テキスト断片の1つを入力することを備えることができる。このボット・コマンド・テキスト断片は、メッセージ910として、クライアント・フロントエンド・サーバ935のメッセージング・コンポーネント930に対して送信され得る。
いくつかのケースにおいては、メッセージング・ボットのための構成インターフェースは、メッセージング・ボット対話ユーザ・インターフェースとして起動され得る。メッセージ・スレッド内においてメッセージ・ボットを起動することは、ユーザ・インターフェース・コンポーネント923が、メッセージ・スレッド表示において、メッセージング・ボット・コントロール選択を受け取ることを含むことができる。メッセージング・ボット・コントロール選択に応答して、ユーザ・インターフェース・コンポーネント923は、メッセージ・スレッド表示内にメッセージング・ボット対話構成インターフェースを表示することができる。ユーザ・インターフェース・コンポーネント923は、メッセージング・ボット対話構成インターフェースについての1つまたは複数のユーザ・インターフェース選択を受け取ることができる。受け取られた1つまたは複数のユーザ・インターフェース選択は、メッセージ910を介してメッセージング・システム100に対して送られた、メッセージング・ボット対話コマンドを備えることができる。
いくつかのケースにおいては、選択されたコントロールは、サービス・タイプ・コントロールであることができる。サービス・タイプ・コントロールは、サービスのために複数の提供者が利用可能であることができる、サービスのカテゴリを示す。ユーザ・インターフェース・コンポーネント923は、送り元クライアント・デバイス920上のメッセージ・スレッド表示において、サービス・タイプ・コントロールのサービス・タイプ・コントロール選択を受け取ることができる。ユーザ・インターフェース・コンポーネント923は、サービス・タイプ・コントロール選択に応答して、メッセージ・スレッド表示内に複数のメッセージング・ボット・コントロールを表示することができる。
ユーザ・インターフェース・コンポーネント923は、複数のメッセージング・ボット・コントロールの各々に関連付けられた、サービス遂行情報を表示することができる。サービス遂行情報は、限定することなく、推定されるコスト、推定される到着時間、推定される移動時間、およびサービス利用可能性のうちの1つまたは複数を含むことができる。サービス遂行情報は、ボット・フレームワーク・コンポーネント950によって、関連付けられたメッセージング・ボットのためのボット・サーバから取り出され、ユーザ・インターフェース・コンポーネント923に対して提供され得る。
メッセージング・ボット、したがって、関連付けられたサービスの使用は、サービスに関するユーザについてのアカウントを必要とすることがある。ユーザ・インターフェース・コンポーネント923は、送り元クライアント・デバイス920上のメッセージ・スレッド表示において、メッセージング・ボット・コントロール選択を受け取ることができる。ユーザ・インターフェース・コンポーネント923は、ユーザがメッセージング・ボットに関連付けられたサービスのためのアカウントを欠いていることを決定し、それに応答して、メッセージ・スレッド表示内に、サービスのためのユーザ・アカウント作成インターフェースを表示することができる。ユーザ・インターフェース・コンポーネント923は、ユーザ・アカウント作成インターフェースとのユーザ対話を受け取り、受け取られたユーザ・アカウント作成インターフェースとのユーザ対話に基づいて、ユーザ・アカウント作成コマンドを生成し、ユーザ・アカウント作成コマンドをサービスに対して送信することができる。いくつかの実施形態においては、ユーザ・アカウント作成コマンドは、サービスに対して直接的に送信され得る。他の実施形態においては、ユーザ・アカウント作成コマンドは、ボット・フレームワーク・コンポーネント950および/またはクライアント・フロントエンド・サーバ935を介して、送信され得る。
いくつかのサービスは、要求されたサービスの遂行の前に、送り元クライアント・デバイス920についてのユーザ電話番号が検証されることを必要とすることがある。メッセージング・システム100が、(例えば、テキスト・メッセージで)検証コードを電話番号に対して送信し、メッセージング・クライアントにおいて入力された検証コードを有することなどによって、電話番号をすでに検証している場合、メッセージング・システム100は、電話番号の検証を裏付け、したがって、サービスが電話番号検証を遂行することを省き、ユーザが電話番号検証を遂行する労力を省くことができる。そのため、メッセージング・システム100は、ユーザ・アカウント作成コマンドに関連付けられたサービスに対して、クライアント・デバイスに関連付けられたユーザ電話番号を検証することができる。サービスに対してユーザ電話番号を検証することは、サービスがユーザ電話番号検証を遂行することを防止するように動作することができる。
ユーザについての金融情報が、メッセージング・システム100に登録されている場合、ユーザについての完全な金融情報は、ユーザの金融詳細を保護するために、サービスから隠され得る。代わりに、メッセージング・ボット対話コマンドが、サービスに関するサービス要求を起動した場合、クライアント・メッセージング・コンポーネント926は、ユーザについてのトークン化された金融情報をサービスに対して送信することができる。トークン化された金融情報は、ユーザについての完全な金融情報をサービスに対して暴露することなしに、サービスが、金融取引を遂行することを可能にすることができる。メッセージング・システム100は、トークン化された金融情報を生成するために、金融情報に対して不可逆変換を使用することができる。いくつかのケースにおいては、金融情報は、送り元クライアント・デバイス920の代わりに、またはそれに加えて、メッセージング・サーバ110上に記憶され得、トークン化された金融情報は、メッセージング・サーバ110によって生成され、それから送られる。
ユーザが、サービスに関するアカウントをすでに有する場合、メッセージング・サービス100は、サービスに関する、サービスを準備するための既存のアカウントを使用することができる。メッセージング・システム100が、ユーザについての金融情報を現在有していない場合、サービスは、メッセージング・システム100および他のサービスに関する、金融取引とともに使用するためのユーザの金融情報をメッセージング・システム100に対して提供することができる。メッセージング・システム100に対するこの金融情報の提供は、完成したトークン化されていない形態を取ることができる。ユーザ・インターフェース・コンポーネント923は、クライアント・デバイス上のメッセージ・スレッド表示において、メッセージング・ボット・コントロール選択を受け取り、ユーザが、メッセージング・ボットに関連付けられたサービスのためのユーザ・アカウントに関連付けられていることを決定することができる。この決定は、送り元クライアント・デバイス920上のメッセージング・クライアントによって、またはメッセージング・サーバ110によって行われ得る。送り元クライアント・デバイス920、またはボット・フレームワーク・コンポーネント950は、メッセージング・ボット・コントロール選択を受け取ったのに応答して、ユーザについての金融情報についてサービスに問い合わせ、メッセージング・システム100のユーザに関連付けられた金融情報を記憶することができる。
メッセージ待ち行列980から抽出されるのに加えて、メッセージ910は、受け取り先クライアント・デバイス990に対して送信され得る。送り元クライアント・デバイス920上のメッセージング・クライアントのメッセージ・スレッド表示は、メッセージング・システム100を用いて、メッセージ・スレッドに関連付けられ得る。メッセージ・スレッドは、メッセージング・システムの2人以上の個人ユーザに関連付けられ得る。受け取り先クライアント・デバイス990を含むことができる、送り元クライアント・デバイス920以外の、それらのユーザについてのクライアント・デバイスは、各々、メッセージ910のコピーを受け取ることができる。2人のユーザだけがメッセージ・スレッドに関連付けられている場合であっても、各ユーザは、2つ以上のクライアント・デバイスに関連付けられ得、メッセージ910を受け取るためのクライアント・デバイスの数を増加させる。グループ・メッセージ・スレッドなどにおいて、追加のユーザが、メッセージ・スレッドに関連付けられる場合、それらの追加のユーザについてのクライアント・デバイスも、メッセージ910を受け取ることができる。メッセージ910は、メッセージング・ボットによる処理のために抽出されるのに加えて、一般に、メッセージ910は、メッセージング・システム100の通常の動作を通して、クライアント・デバイスに対して配信され得る。
図10は、メッセージング・システム100における、メッセージ910に対する応答1010の一実施形態を示している。
いくつかのケースにおいては、メッセージング・システム100は、ボット応答を生成することができる。ホステッド・ボット・サーバ965上のボット実行コンポーネント960は、メッセージ910に対するメッセージング・ボット応答1010を生成することができる。いくつかのホステッド・ボットは、メッセージング・システム100のプロバイダの内部において開発され得、それは、限定することなく、ゲームをプレイするためのボット、メッセージング・システム・サービスにアクセスするためのボット、または他のサービスのためのボットを含むことができる。いくつかのホステッド・ボットは、メッセージング・システム100のプロバイダの外部において開発され得る。これらのサードパーティ・ボットは、ホステッド・ボットを実行するサードパーティ・ソフトウェアのためのホスティング・プラットフォームとして、ホステッド・ボット・サーバ965を使用して、メッセージング・システム100のプロバイダによってホストされ得る。ボット実行コンポーネント960は、メッセージ910に対するメッセージング・ボット応答1010を、ボット・フレームワーク・コンポーネント950に対して送信することができる。
ボット・フレームワーク・コンポーネント950は、メッセージ910に対するメッセージング・ボット応答1010を、ホステッド・ボット・サーバ965からか、それとも外部ボット・サーバ975からかにかかわらず、ボット・サーバから受け取ることができる。ボット・フレームワーク・コンポーネント950は、メッセージ910に対するメッセージング・ボット応答1010を受け取り、メッセージング・ボット応答1010をメッセージ待ち行列980内に挿入することができる。メッセージング・ボット応答1010をメッセージ待ち行列980内に挿入することは、メッセージ待ち行列980に対する新たな更新として、メッセージング・ボット応答1010をメッセージ待ち行列980に対して追加することを備えることができる。メッセージング・コンポーネント930は、メッセージ待ち行列980内のメッセージをそれの関連するユーザのデバイスに対して提供する、メッセージ待ち行列980の通常の動作の一部として、メッセージング・ボット応答1010を送り元クライアント・デバイス920に対して送信することができる。
メッセージ910は、メッセージ・スレッドに関連付けて、発生させ得る。いくつかのケースにおいては、メッセージ・スレッドは、ユーザが、追加のユーザなしに、ボットと直接的に関わる、1人対ボット・メッセージ・スレッドであることができる。他のケースにおいては、1対1メッセージ・スレッドまたはグループ・メッセージ・スレッドなどの、メッセージ・スレッドは、複数のユーザを含むことができる。メッセージング・ボット応答1010は、メッセージ・スレッド内における表示のために印しを付けられて、メッセージ待ち行列980内に挿入され得る。メッセージング・ボット応答1010は、メッセージ・スレッド内における表示のために印しを付けられて、メッセージ・スレッドの各参加者のためのメッセージ待ち行列内に挿入され得る。
メッセージ・スレッドは、メッセージング・システム100の2人以上の個人ユーザに関連付けられ得る。ユーザの各々は、メッセージング・システム100を用いて、彼らに関連付けられたメッセージ待ち行列を有することができる。応答1010は、2人以上のユーザの各々について、メッセージ待ち行列内に挿入され得る。これらのユーザの各々は、ユーザの各々についてのユーザ・アカウントを用いて登録されたメッセージング・クライアントを、クライアント・デバイスの各々に有することなどによって、少なくとも1つのクライアント・デバイスに関連付けられ得る。したがって、クライアント・フロントエンド・サーバ上のメッセージング・コンポーネントは、メッセージング・ボット対話応答1010を、メッセージング・システム100から2つ以上のクライアント・デバイスに対して送信することができる。
送り元クライアント・デバイス920上のメッセージング・クライアントのクライアント・メッセージング・コンポーネント926は、メッセージング・ボット対話応答1010をメッセージング・システム100から受け取ることができる。その後、メッセージング・クライアントのユーザ・インターフェース・コンポーネント923は、メッセージ・スレッド表示内に、メッセージング・ボット対話応答1010を表示することができる。
図11は、メッセージング・システム100における、サブスクリプション・コマンド1110の一実施形態を示している。
ほとんどのケースにおいては、ボットは、ユーザによってボットに対して送り出されたメッセージに応答して、ユーザのメッセージ待ち行列980に対してメッセージを追加することだけを許可され得る。メッセージング・ボットは、ユーザがメッセージ910をメッセージング・ボットに対して送信したので、応答1010を用いてメッセージ910に応答することを認可され得る。いくつかのケースにおいては、メッセージング・ボットは、メッセージ910に対する単一の応答1010を送ることを認可され得る。他のケースにおいては、メッセージング・ボットは、メッセージ910に応答して、限られた期間の間、応答を送ることを認可され得る。
加えて、メッセージング・システム100のユーザは、ボットから更新をプッシュされるように、メッセージ・スレッドをボットに対してサブスクライブすることも可能にされ得る。ボットに対するサブスクリプションは、メッセージをサブスクライブされたメッセージ・スレッドに送信することを、ボットに認可することができる。この認可は、与えられた時間期間内において送られ得るサブスクリプション・メッセージの数には限界があるなど、制限を有することができる。例えば、メッセージング・ボットは、1日にたかだか1つのメッセージを、または1日に具体的な数のメッセージを送信するように制限され得る。いくつかの実施形態においては、ユーザについてのサブスクライバ・スレッド・プリファレンスは、メッセージング・ボットがメッセージ・スレッドをメッセージングすることができる頻度に対する制限を指定することができる。
メッセージング・ボットに対するメッセージ910は、サブスクリプション・コマンド1110を備えることができ、サブスクリプション・コマンド1110は、メッセージング・システム100およびメッセージング・ボットに、メッセージ・サブスクリプション・コマンド1110に関連付けられたメッセージ・スレッドが、メッセージング・ボットからのサブスクリプション・メッセージを受け取るべきであることを命令する。ボット・フレームワーク・コンポーネント950は、ボット・サブスクリプション・コマンド1110に応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブすることができる。様々な実施形態においては、サブスクリプション・コマンドは、クライアント・メッセージング・コンポーネント926からボット・フレームワーク・コンポーネント950に対して直接的に送信され得、メッセージング・コンポーネント930からボット・フレームワーク・コンポーネント950に対して直接的に送信され得、またはメッセージ待ち行列980内において検出され、それによって、ボット・フレームワーク・コンポーネント950に対して伝達され得る。
サブスクリプション・コマンド1110は、サブスクリプション・コマンド1110によってサブスクライブされたメッセージ・スレッドに関与するユーザについてのあらゆる受け取り先クライアント・デバイスなど、受け取り先クライアント・デバイス990によっても受け取られ得る。サブスクリプション・コマンド1110は、メッセージ・スレッドがメッセージング・ボットに対してサブスクライブされた旨のメッセージ・スレッドにおける通知として、受け取り先クライアント・デバイス990に対して伝達され得る。一般に、任意の数のメッセージ・スレッドが、スレッドをメッセージング・ボットに対してサブスクライブし、スレッドをメッセージング・ボットからアンサブスクライブし、またはメッセージング・ボットに対するメッセージ・スレッドのサブスクリプションについてのサブスクライバ・スレッド・プリファレンスを変更することができる。これらのアクションのいずれも、メッセージ・スレッドの各メンバのためのメッセージ待ち行列に対して追加される通知メッセージをもたらすことができ、通知メッセージは、アクションがサブスクリプションか、アンサブスクリプションか、それともサブスクライバ・スレッド・プリファレンスの変更かを伝達する。
サブスクリプションは、サブスクリプション・レジストリ内に維持され得る。サブスクリプション・レジストリは、メッセージング・システム100内においてメッセージ・スレッドを一意的に識別するスレッド識別子と、メッセージング・ボットに対するサブスクリプションとの間の対応付けを行うことができる。サブスクリプション・レジストリは、限定することなく、データベース、または登録された各サブスクリプションのための行を有するデータベース・テーブルを備えることができる。登録された各サブスクリプションは、そのサブスクリプションについてのサブスクライバ・スレッド・プリファレンスに関連付けられ得る。
図12は、メッセージング・システム100における、ブロードキャスト・メッセージ1210の一実施形態を示している。
クライアント・デバイスに対するブロードキャスト・メッセージ1210の配信は、ブロードキャスト・メッセージ1210が有することができる多数の受け取り先に配慮し、したがって、ブロードキャスト・メッセージ1210をブロードキャストする仕事を複数のサーバおよびサーバ・デバイスに分散させるために、2つのステージにおいて遂行され得る。いくつかのケースにおいては、メッセージング・ボットは、数百万または数十億のサブスクライバを有することがあり、それは、ブロードキャスト・メッセージ1210を望ましい応答性で配信する単一のサーバ・デバイスの能力を超えることがある。そのため、第1ステージ・サーバは、潜在的な受け取り先のリストを生成することができ、複数の第2ステージ・サーバは、ブロードキャスト・メッセージ1210を、ブロードキャスト・メッセージ1210の受け取り先のメッセージ待ち行列に対して追加することができる。
ボット・フロントエンド・サーバ955は、ブロードキャスト・コンポーネント1240を備えることができる。ブロードキャスト・コンポーネント1240は、一般に、潜在的な受け取り先のリストを生成し、ブロードキャスト・メッセージ1210の配信を1つまたは複数のブロードキャスト・ワーカに対して割り当てるように準備され得る。ブロードキャスト・コンポーネント1240は、ブロードキャスト・メッセージ1210をメッセージング・ボットから受け取り、ブロードキャスト・メッセージについての複数のサブスクライバ・スレッドを決定することができる。複数のサブスクライバ・スレッドを決定することは、メッセージング・ボットについてのメッセージング・ボット識別子をサブスクリプション・レジストリと比較し、メッセージング・ボットに対してサブスクライブされたメッセージ・スレッドについてのスレッド識別子を取り出すことなどによって、メッセージング・ボットに基づいて行われ得る。
ブロードキャスト・コンポーネント1240は、複数のサブスクライバ・スレッドを、複数のサブスクライバ・スレッド・チャンクに分割することができる。サブスクライバ・スレッド・チャンクは、メッセージング・システム100内において、事前定義されたサイズを有することができる。ボット・フレームワーク・コンポーネント950は、事前定義されたチャンク・サイズに基づいて、複数のサブスクライバ・スレッド・チャンクを生成することができ、サブスクライバ・スレッドの数が事前定義されたサイズと正確に同じではないことが原因の、より小さいサイズの単一のチャンクをあり得る例外として、複数のサブスクライバ・スレッドを事前定義されたサイズのチャンクに分割する。互いの一方のうちにメンバシップを有するように、ほぼ等しいサイズのサブスクライバ・スレッド・チャンクを作成するなど、他の分割方式が、使用され得、このほぼ等しいサイズは、事前定義されたサイズを超えずに、可能な限り大きい。他の分割技法は、代替的または追加的に使用され得る。
ボット・フレームワーク・コンポーネント950は、複数のサブスクライバ・スレッド・チャンクの各々を、複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てることができる。この複数のブロードキャスト・ワーカは、複数のワーカ・サーバ1245上において実行することができる。ブロードキャスト・ワーカ1250は、一般に、サブスクライバ・スレッド・チャンクを処理し、ブロードキャスト・メッセージ1210を複数のメッセージ待ち行列に対して追加するように準備され得る。複数のブロードキャスト・ワーカは、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加することができ、複数のブロードキャスト・メッセージの各々は、ブロードキャスト・メッセージを、それが割り当てられたサブスクライバ・スレッド・チャンクに対応する、メッセージ待ち行列に対して追加する。
ブロードキャスト・ワーカのアクションは、サブスクライバ・スレッド・チャンクの要素として、ブロードキャスト・ワーカに対して配信され得る、サブスクライバ・スレッド・プリファレンスによって知らされ得る。複数のブロードキャスト・ワーカは、複数のサブスクライバ・スレッド・プリファレンスを取り出すことができ、複数のサブスクライバ・スレッド・プリファレンスの各々は、対応するサブスクライバ・スレッドに関連付けられる。複数のブロードキャスト・ワーカは、複数の選択されるサブスクライバ・スレッドを決定するために、複数のサブスクライバ・スレッド・プリファレンスの各々を対応するサブスクライバ・スレッドと比較することができ、複数の選択されたサブスクライバ・スレッドは、複数のサブスクライバ・スレッドのサブセットである。例えば、サブスクライバ・スレッド・プリファレンスは、1日の夜間の睡眠時間帯を除外するなどした、ブロードキャスト・メッセージが望まれる1日の時間帯を指定することができる。サブスクライバ・スレッド・プリファレンスは、ブロードキャスト・メッセージのトピック、頻度、内容(例えば、テキスト、画像、ビデオ)、もしくは他の任意の要素、またはブロードキャスト・メッセージについてのコンテキストを指定し、そのようなブロードキャスト・メッセージが許容されるべきか、それとも許容されるべきではないかを指定することができる。様々な技法が、限定することなく、サブスクライバ・スレッド・プリファレンスのためのルールを指定し、適用するために使用され得る。その後、複数のブロードキャスト・ワーカが、ブロードキャスト・メッセージを、複数の選択されるサブスクライバ・スレッドに対応する複数の選択されるメッセージ待ち行列に対して追加することができ、複数の選択されるメッセージ待ち行列は、選択されたサブスクライバ・スレッドのメンバであるユーザのためのメッセージ待ち行列に対応する。
本明細書には、開示するアーキテクチャの新規な態様を実施するための例示的な方法の代表的な1組のフローチャートが記載される。説明を単純にするために、例えば、フローチャートまたはフロー図の形態で本明細書に示す1つまたは複数の方法は、一連の行為として図示され、記載されるが、いくつかの行為は、それに従い、本明細書に図示し、記載するものとは異なる順番で他の行為と同時に、または、記載するものとは異なる順番かもしくは他の行為と同時に発生してもよいため、方法は行為の順番によって制限されるものではないことは理解されるべきである。例えば、当業者は、方法が、代替的に、状態図にあるように、一連の相関状態または相関イベントとして表すことができるであろうことを了解し、理解するであろう。また、新規の実施態様には、方法に示されるすべての行為が必要でなくてもよい。
図13Aは、第1の論理フロー1300の一実施形態を示す。論理フロー1300は、本明細書に記載される1つまたは複数の実施形態によって実行される動作のいくつかまたは全部を表すものであってもよい。
図13Aに示された、示された実施形態においては、論理フロー1300は、ブロック1302において、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取ることができる。
論理フロー1300は、ブロック1304において、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動することができる。
論理フロー1300は、ブロック1306において、メッセージング・ボット対話ユーザ・インターフェースを介して、メッセージング・ボット対話コマンドを受け取ることができる。
論理フロー1300は、ブロック1308において、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信することができる。
論理フロー1300は、ブロック1310において、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取ることができる。
論理フロー1300は、ブロック1312において、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示することができる。
実施形態は、この例に限定されない。
図13Bは、第1の論理フロー1350の一実施形態を示す。論理フロー1300は、本明細書に記載される1つまたは複数の実施形態によって実行される動作のいくつかまたは全部を表すものであってもよい。
図13Bに示された、示された実施形態においては、論理フロー1350は、ブロック1352において、メッセージをクライアント・デバイスから受け取ることができる。
論理フロー1350は、ブロック1354において、メッセージをメッセージ待ち行列に対して追加することができる。
論理フロー1350は、ブロック1356において、メッセージ待ち行列を監視することができる。
論理フロー1350は、ブロック1358において、メッセージがメッセージング・ボット起動を示していることを検出することができる。
論理フロー1350は、ブロック1360において、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すことができる。
論理フロー1350は、ブロック1362において、メッセージに関連付けられたメッセージング・ボットを決定することができる。
論理フロー1350は、ブロック1364において、メッセージをメッセージング・ボットに対して渡すことができる。
実施形態は、この例に限定されない。
コンピュータ・システムの実施形態
図14は、中央集中システム1400のブロック図を示す。中央集中システム1400は、全体が単一の中央集中サーバ・デバイス1420内など、単一コンピューティングエンティティ内のメッセージング・システム100の構造および動作または構造もしくは動作のいくつかまたは全部を実装してもよい。
中央集中サーバ・デバイス1420は、メッセージング・システム100のために情報を受信し、処理し、送信することのできる電子デバイスを備え得る。電子デバイスの例は、限定ではないが、ウルトラモバイルデバイス、モバイル・デバイス、携帯情報端末(PDA)、モバイル・コンピューティング・デバイス、スマートフォン、電話、デジタル電話、携帯電話、電子書籍リーダ、ハンドセット、ワンウェイページャ、ツーウェイページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家庭用電子機器、プログラム可能な家庭用電子機器、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、無線アクセス・ポイント、基地局、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはそれらの組合せを含むことができる。実施形態は、これに限定されない。
中央集中サーバ・デバイス1420は、処理コンポーネント1430を用いて、メッセージング・システム100のための処理動作またはロジックを実行してもよい。処理コンポーネント1430は様々なハードウェア要素、ソフトウェア要素、または双方の組合せを含むことができる。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子(例えば、トランジスタ、レジスタ、キャパシタ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含むことができる。ソフトウェア要素の例は、ソフトウェア・コンポーネント、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプロケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組合せを含むことができる。実施形態がハードウェア要素を用いて実施されるか、ソフトウェア要素を用いて実施されるか、またはハードウェア要素およびソフトウェア要素を用いて実施されるかを決定することは、所望の計算速度、パワーレベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能の制約等の任意の数の要因に従って、所与の実施態様にとって望ましいとおりに変動することができる。
中央集中サーバ・デバイス1420は、通信コンポーネント1440を用いて、メッセージング・システム100のための通信動作またはロジックを実行することができる。通信コンポーネント1440は、パケット交換ネットワーク(例えば、インターネット等の公共ネットワーク、社内イントラネット等のプライベートネットワーク等)、回路交換網(例えば、公衆交換電話網)、またはパケット交換ネットワークおよび回路交換網の(適切なゲートウェイおよびトランスレータを用いた)組合せ等と共に使用するのに適した技法等の、任意のよく知られた通信技法およびプロトコルを実施することができる。通信コンポーネント1440は、1つまたは複数の通信インターフェース、ネットワーク・インターフェース、ネットワークインタフェースカード(NIC:Network Interface Card)、無線通信装置、無線トランスミッタ/無線レシーバ(トランシーバ)、有線無線通信媒体および無線通信媒体の両方または一方、物理的コネクタ等の様々なタイプの標準的な通信要素を含むことができる。限定ではないが、例として、通信媒体1412は有線通信媒体および無線通信媒体を含む。有線通信媒体の例は、有線、ケーブル、金属導線、プリント回路基盤(PCB:Printed Circuit Board)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバ、伝搬信号等を含むことができる。無線通信媒体の例は、音響、無線周波数(RF:Radio−Frequency)スペクトル、赤外線および他の無線媒体を含むことができる。
中央集中サーバ・デバイス1420は、通信コンポーネント1440を介して、通信信号1414を使用して、通信メディア1412上において、他のデバイスと通信することができる。デバイスは、与えられた実施にとって望ましいように、中央集中サーバ・デバイス1420の内部または外部にあることができる。デバイスは、クライアント・デバイス1410を含むことができる。クライアント・デバイス1410は、一般に、パーソナル・コンピュータ・デバイス180、スマートフォン・デバイス150、テーブル・デバイス160、クライアント・デバイス320、送り元クライアント・デバイス920、および受け取り先クライアント・デバイス990のいずれかに対応することができる。
図15は、分散システム1500のブロック図を示す。分散システム1500は、メッセージング・システム100について、その構造およびオペレーションの両方または一方のいくつかの部分を、複数のコンピューティングエンティティに分散させることができる。分散システム1500の例として、限定するものではないが、クライアントサーバーアーキテクチャ、3層アーキテクチャ、N層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムを含むことができる。実施形態は、これに限定されない。
分散システム1500は、複数のサーバ・デバイス1535、1545,1555および1565を備え得る。概して、サーバ・デバイス1535、1545,1555および1565は、図14を参照して説明したような中央集中サーバ・デバイス1420と同じまたは類似したものであり得る。例えば、サーバ・デバイス1535、1545,1555および1565はそれぞれ、処理コンポーネント1530および通信コンポーネント1540を有することができ、それらは、図14を参照して説明したような処理コンポーネント1430および通信コンポーネント1440とそれぞれ同じまたは類似したものである。他の例では、サーバ・デバイス1535、1545,1555および1565は、通信コンポーネント1540を介して、通信信号1514を用いて通信媒体1512を通して通信することができる。
サーバ・デバイスは、説明された実施形態に従って、様々な方法を遂行するように動作する、1つまたは複数のクライアント・プログラムを備え、または利用することができる。複数のクライアント・フロントエンド・サーバ・デバイス1535は、各々が、クライアント・フロントエンド・サーバ935を実行することができ、クライアント・フロントエンド・サーバの各々は、クライアント・フロントエンド・サーバ935を参照して説明されたように、タスクを実行する。複数のワーカ・サーバ・デバイス1545は、各々が、ワーカ・サーバ945、またはワーカ・サーバ1245の1つに対応するワーカ・サーバを実行することができ、ワーカ・サーバの各々は、ワーカ・サーバ945またはワーカ・サーバ1245を参照して説明されたように、タスクを実行する。複数のボット・フロントエンド・サーバ・デバイス1555は、各々が、ボット・フロントエンド・サーバ955を実行することができ、ボット・フロントエンド・サーバの各々は、ボット・フロントエンド・サーバ955を参照して説明されたように、タスクを実行する。複数のホステッド・ボット・サーバ・デバイス1565は、各々が、ホステッド・ボット・サーバ965を実行することができ、ホステッド・ボット・サーバの各々は、ホステッド・ボット・サーバ965を参照して説明されたように、タスクを実行する。
サーバとサーバ・デバイスとの間の関係は、1対1でないことがあることが理解されよう。いくつかの実施形態においては、単一のサーバ・デバイスが、複数のサーバを実行することができる。同様に、いくつかの実施形態においては、サーバ・デバイスは、メッセージング・システム100の求めに基づいて、役割を変え、したがって、それらが実行するサーバを変えることができる。一般に、サーバ・タスクを複数のサーバ・デバイスにわたって分散させるために、様々な技法が、使用され得る。
クライアント・デバイス1520は、一般に、パーソナル・コンピュータ・デバイス180、スマートフォン・デバイス150、テーブル・デバイス160、クライアント・デバイス320、送り元クライアント・デバイス920、受け取り先クライアント・デバイス990、およびクライアント・デバイス1410のいずれかに対応することができる。
図16は、上記に記載の様々な実施形態を実施するのに適した例示的なコンピューティングアーキテクチャ1600の一実施形態を示す。1つの実施形態では、コンピューティングアーキテクチャ1600は、電子デバイスを備えるか、電子デバイスの一部として実施されることが可能である。電子デバイスの例は、中でも、図14および図15を参照して説明したものを含むことができる。実施形態はこれに限定されない。
本出願において用いられるとき、「システム」および「コンポーネント」という語は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータに関係したエンティティを指すことを意図され、それらの例が、例示的なコンピューティングアーキテクチャ1600によって提供される。例えば、コンポーネントは、限定ではないが、プロセッサにおいて実行されるプロセス、プロセッサ、ハードディスクドライブ、(光学および/または磁気記録媒体の)マルチ記録ドライブ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピュータであり得る。例示のために、サーバ上で実行されるアプリケーションおよびサーバの双方がコンポーネントであり得る。1つまたは複数のコンポーネントがプロセスおよび/または実行スレッド内に常駐することができ、コンポーネントは、1つのコンピュータ上に局在することができ、および/または2つ以上のコンピュータ間で分散され得る。更に、コンポーネントは、動作を協調させるように、様々なタイプの通信媒体によって互いに通信可能に結合され得る。協調は、情報の一方向または双方向の交換を含むことができる。例えば、コンポーネントは、通信媒体により通信される信号の形態で情報を通信することができる。情報は、様々な信号線に割り当てられる信号として実施され得る。そのような割り当てにおいて、各メッセージは信号である。一方、更なる実施形態は、代替的にデータメッセージを用いることができる。そのようなデータメッセージは、様々な接続にわたって送信され得る。例示的な接続は、パラレルインタフェース、シリアルインタフェースおよびバスインタフェースを含む。
コンピューティングアーキテクチャ1600は、1つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント、電源等の様々な一般的なコンピューティング要素を含む。しかしながら、実施形態は、コンピューティングアーキテクチャ1600による実施に限定されない。
図16に示すように、コンピューティングアーキテクチャ1600は、処理ユニット1604、システム・メモリ1606およびシステムバス1608を備える。処理ユニット1604、限定ではないが、AMD(登録商標)プロセッサ、Athlon(登録商標)プロセッサ、Duron(登録商標)プロセッサおよびOpteron(登録商標)プロセッサ;ARM(登録商標)のアプリケーションプロセッサ、組込み型プロセッサおよびセキュアプロセッサ;IBM(登録商標)およびMotorola(登録商標)のDragonBall(登録商標)プロセッサおよびPowerPC(登録商標)プロセッサ;IBMおよびSony(登録商標)のセルプロセッサ;Intel(登録商標)のCeleron(登録商標)プロセッサ、Core(2)Duo(登録商標)プロセッサ、Itanium(登録商標)プロセッサ、Pentium(登録商標)プロセッサ、Xeon(登録商標)プロセッサおよびXScale(登録商標)プロセッサ;ならびに同様なプロセッサを含む様々な市販のプロセッサのうちの任意のものであり得る。デュアルマイクロプロセッサ、マルチコアプロセッサおよび他のマルチプロセッサアーキテクチャも処理ユニット1604として用いられることが可能である。
システムバス1608は、限定ではないがシステム・メモリ1606を含むシステムコンポーネントのためのインターフェースを処理ユニット1604に提供する。システムバス1608は、多岐にわたる市販のバスアーキテクチャのうちの任意のものを用いてメモリバス(メモリ・コントローラを有するかまたは有しない)、周辺バスおよびローカルバスに更に相互接続することができるいくつかのタイプのバス構造のうちの任意のものとすることができる。インタフェースアダプタは、スロットアーキテクチャを介してシステムバス1608に接続することができる。例示的なスロットアーキテクチャは、限定ではないが、アクセラレーテッドグラフィックスポート(AGP:Accelerated Graphics Port)、カードバス、(拡張)業界標準アーキテクチャ((E)ISA:(Extended)Industry Standard Architecture)、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)、NuBus、周辺コンポーネント相互接続(拡張)(PCI(X):Peripheral Component Interconnect(Extended))、PCIエクスプレス、パーソナルコンピュータメモリカード国際組織(PCMCIA:Personal Computer Memory Card International Association)等を含むことができる。
コンピューティングアーキテクチャ1600は、様々な製造品を含むかまたは実装することができる。製造品は、ロジックを記憶するためのコンピュータ可読記録媒体を含むことができる。コンピュータ可読記録媒体の例は、揮発性メモリまたは不揮発性メモリ、取外し可能または非取外し可能メモリ、消去可能または非消去可能メモリ、書き込み可能または書き換え可能メモリ等を含む、電子データを記憶することが可能な任意の有形媒体を含むことができる。ロジックの例は、ソースコード、コンパイルされたコード、解釈実行されたコード、実行可能コード、スタティックコード、ダイナミックコード、オブジェクト指向コード、視覚コード等の任意の適切なタイプのコードを用いて実施される実行可能なコンピュータ・プログラム命令を含むことができる。実施形態はまた、1つまたは複数のプロセッサによって読出しおよび実行されて、本明細書に記載の動作の実行を可能にすることができる、非一時的コンピュータ可読媒体に含まれるかまたは非一時的コンピュータ可読媒体上にある命令として少なくとも部分的に実施されることが可能である。
システム・メモリ1606は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM:Double−Data−Rate DRAM)、同期DRAM(SDRAM:synchronous DRAM)、スタティックRAM(SRAM:static RAM)、プログラマブルROM(PROM:programmable ROM)、消去可能なプログラマブルROM(EPROM:erasable programmable ROM)、電気的に消去可能なプログラマブルROM(EEPROM:electrically erasable programmable ROM)、フラッシュメモリ、強誘電性ポリマーメモリ等のポリマーメモリ、オーボニックメモリ(ovonic memory)、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン(SONOS:silicon−oxide−nitride−oxide−silicon)メモリ、磁気カードまたは光カード、独立ディスクの冗長アレイ(RAID:Redundant Array of Independent Disks)ドライブ等のデバイスのアレイ、ソリッドステートメモリデバイス(例えば、USBメモリ、ソリッドステートドライブ(SSD:solid state drive)および情報を記憶するのに適した任意の他のタイプの記録媒体等の1つまたは複数の高速メモリユニットの形態の様々なタイプのコンピュータ可読記録媒体を含むことができる。図16に示す例示される実施形態では、システム・メモリ1606は、不揮発性メモリ1610および/または揮発性メモリ1612を含むことができる。基本入出力システム(BIOS:basic input/output system)を不揮発性メモリ1610に記憶することができる。
コンピュータ1602は、内部(または外部)ハードディスクドライブ(HDD)1614、取外し可能な磁気ディスク1618に対し読出しまたは書き込みを行うための磁気フロッピー(登録商標)ディスクドライブ(FDD)1616、および取外し可能な光ディスク1622(例えば、CD−ROMまたはDVD)に対し読出しまたは書き込みを行うための光ディスクドライブ1620を含む1つまたは複数の低速メモリユニットの形態で様々なタイプのコンピュータ可読記録媒体を備えることができる。HDD1614、FDD1616および光ディスクドライブ1620は、それぞれHDDインターフェース1624、FDDインターフェース1626、および光ドライブインタフェース1628によってシステムバス1608に接続されることが可能である。外部ドライブ実装のためのHDDインターフェース1624は、ユニバーサルシリアルバス(USB)およびIEEE1394インターフェース技術の少なくとも一方または双方を含むことができる。
ドライブおよび関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令等の揮発性記録および/または不揮発性記録を提供する。例えば、オペレーティングシステム1630、1つまたは複数のアプリケーションプログラム1632、他のプログラムモジュール1634およびプログラムデータ1636を含む複数のプログラムモジュールがドライブおよびメモリユニット1610、1612に記憶され得る。1つの実施形態では、1つまたは複数のアプリケーションプログラム1632、他のプログラムモジュール1634およびプログラムデータ1636は、例えば、メッセージング・システム100の様々なアプリケーションおよび/またはコンポーネントを含むことができる。
ユーザは、1つまたは複数の有線/無線入力デバイス、例えば、キーボード1638、およびマウス1640等のポインティングデバイスを通じてコンピュータ1602にコマンドおよび情報を入力することができる。他の入力デバイスは、マイクロフォン、赤外線(IR)リモートコントロール、無線周波数(RF)リモートコントロール、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン(例えば、容量型、抵抗型等)、トラックボール、トラックパッド、センサ、スタイラス等を含むことができる。これらのおよび他の入力デバイスは、多くの場合に、システムバス1608に結合された入力デバイス・インターフェース1642を通じて処理ユニット1604に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェース等の他のインターフェースによって接続されてもよい。
モニタ1644または他のタイプの表示デバイスも、ビデオ・アダプタ1646等のインターフェースを介してシステムバス1608に接続される。モニタ1644は、コンピュータ1602に対し内部または外部にあり得る。モニタ1644に加えて、コンピュータは通常、スピーカ、プリンタ等の他の周辺出力デバイスを備える。
コンピュータ1602は、リモート・コンピュータ1648等の1つまたは複数のリモート・コンピュータへの有線および/または無線通信を介して論理接続を用いてネットワーク化された環境において動作することができる。リモート・コンピュータ1648は、ワークステーション、サーバーコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサに基づく娯楽機器、ピアデバイス、または他の共通ネットワークノードであり得、通常、コンピュータ1602について記載した要素のうちの多くまたは全てを備えるが、簡潔にするために、メモリ/記録デバイス1650のみが示されている。描かれる論理接続は、ローカルエリアネットワーク(LAN)1652および/またはより大きなネットワーク、例えば広域ネットワーク(WAN)1654への有線/無線接続を含む。そのようなLANおよびWANネットワーキング環境は、事務所および会社において一般的であり、イントラネット等の、企業規模のコンピュータ・ネットワークを容易にする。これらは全て、グローバル通信ネットワーク、例えばインターネットに接続することができる。
LANネットワーキング環境において用いられるとき、コンピュータ1602は、有線および/または無線通信ネットワーク・インターフェースまたはアダプタ1656を通じてLAN1652に接続される。アダプタ1656は、LAN1652への有線および/または無線通信を容易にすることができる。LAN1652も、アダプタ1656の無線機能と通信するために配置された無線アクセス・ポイントを含むことができる。
WANネットワーキング環境において用いられるとき、コンピュータ1602は、モデム1658を含むことができるか、またはWAN1654の通信サーバに接続されるか、またはインターネット等によってWAN1654を介して、通信を確立する他の手段を有する。内部または外部の、有線および/または無線デバイスであり得るモデム1658は、入力デバイス・インターフェース1642を介してシステムバス1608に接続する。ネットワーク化された環境では、コンピュータ1602について述べられたプログラムモジュールまたはその一部分をリモートメモリ/記録デバイス1650に記憶することができる。示されるネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段が用いられてもよいことが理解されるであろう。
コンピュータ1602は、IEEE802系規格を用いて、無線通信(例えば、IEEE802.20オーバーザエアー変調技法)において動作可能に配置される無線デバイス等の、有線および無線デバイスまたはエンティティと通信するように動作可能である。これは、少なくとも、中でも、Wi−Fi(または無線フィデリティ)、WiMaxおよびBluetooth(登録商標)の無線通信技術を含む。このため、この通信は従来のネットワークと同じように予め定義された通信構造であり得るか、または、単に少なくとも2つの装置の間におけるアドホック通信であり得る。Wi−Fiネットワークは、安全で信頼性が高く高速な無線接続を提供するIEEE802.20x(a、b、g、n等)と称される無線技術を用いる。Wi−Fiネットワークはコンピュータを互いに、インターネットに、および有線ネットワーク(IEEE802.3関連の媒体および機能を用いる)に接続するのに用いられ得る。
図17は上記の様々な実施形態を実施するのに適した例示的な通信アーキテクチャ1700のブロック図を示す。この通信アーキテクチャ1700は、トランスミッタ、レシーバ、トランシーバ、無線通信装置、ネットワーク・インターフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、電源等の様々な一般的な通信要素を含む。しかしながら、本発明の実施形態は通信アーキテクチャ1700による実施に限定されない。
図17に示されるように、通信アーキテクチャ1700は、1つまたは複数のクライアント1702と、サーバ1704とを備え、含む。クライアント・デバイス1702は、一般に、パーソナル・コンピュータ・デバイス180、スマートフォン・デバイス150、テーブル・デバイス160、クライアント・デバイス320、送り元クライアント・デバイス920、受け取り先クライアント・デバイス990、クライアント・デバイス1410、およびクライアント・デバイス1520のいずれかを実施することができる。サーバ1704は、中央集中サーバ・デバイス1420、ならびにクライアント・フロントエンド・サーバ・デバイス1535、ワーカ・サーバ・デバイス1545、ボット・フロントエンド・サーバ・デバイス1555、およびホステッド・ボット・サーバ・デバイス1565のいずれかを実施することができる。クライアント1702およびサーバ1704は、クッキーおよび/または関連付けられたコンテキスト情報などの情報を、それぞれのクライアント1702およびサーバ1704に対してローカルに記憶するために利用され得る、1つまたは複数のそれぞれのクライアント・データ・ストア1708およびサーバ・データ・ストア1710に動作可能に接続される。
クライアント1702およびサーバ1704は通信フレームワーク1706を用いて互いの間で情報を通信することができる。通信フレームワーク1706は任意の既知の通信技法およびプロトコルを実装することができる。通信フレームワーク1706は、パケット交換網(例えば、インターネット等の公衆ネットワーク、社内イントラネット等のプライベートネットワーク等)、回線交換網(例えば、公衆交換電話網)、またはパケット交換網と回線交換網との組合せ(適切なゲートウェイおよびトランスレータを備える)として実装されることが可能である。
通信フレームワーク1706は、通信ネットワークを受け入れ、通信ネットワークと通信し、通信ネットワークに接続するように構成される様々なネットワーク・インターフェースを実施することができる。ネットワーク・インターフェースは、特殊な形態の入出力インターフェースと見なされ得る。ネットワーク・インターフェースは、限定ではないが、直接接続、イーサネット(登録商標)(例えば、シック、シン、ツイストペア10/100/1000BaseT等)、トークンリング、無線ネットワーク・インターフェース、セルラーネットワークインタフェース、IEEE802.11a−xネットワーク・インターフェース、IEEE802.16ネットワーク・インターフェース、IEEE802.20ネットワーク・インターフェース等を含む接続プロトコルを用いることができる。更に、様々な通信ネットワークタイプと関わるために複数のネットワーク・インターフェースが用いられ得る。例えば、ブロードキャスト、マルチキャストおよびユニキャストネットワークによる通信を可能にするために、複数のネットワーク・インターフェースが用いられることが可能である。処理要件がより高い速度およびより多くの容量を指示する場合、クライアント1702およびサーバ1704によって必要とされる通信帯域幅をプールし、負荷分散し、他の形で増大させるために、分散ネットワークコントローラアーキテクチャが同様に利用されることが可能である。通信ネットワークは、限定ではないが、直接相互接続、セキュア化されたカスタム接続、プライベートネットワーク(例えば、社内イントラネット)、公衆ネットワーク(例えば、インターネット)、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、インターネット上のノードとして動作しているミッション(OMNI:Operating Missions as Nodes on the Internet)、広域ネットワーク(WAN)、無線ネットワーク、セルラーネットワークおよび他の通信ネットワークを含む有線および/または無線ネットワークのうちの任意の1つまたはそれらの組合せであり得る。
図18は、メッセージング・システム100のようなマルチキャリアOFDMシステムで使用するためのデバイス1800の実施形態を示している。デバイス1800は、例えば、メッセージング・システム100を参照して説明したようなソフトウェア・コンポーネント1860、および/または論理回路1835を実装することができる。論理回路1835は、メッセージング・システム100について説明したオペレーションを実行するための物理回路を含み得る。図18に示すように、デバイス1800は、無線インターフェース1810と、ベースバンド回路1820と、コンピューティング・プラットフォーム1830とを備え得るが、ただし実施形態は、この構成に限定されない。
デバイス1100は、完全に単一のデバイス内にあるなどの単一のコンピューティングエンティティにおいて、メッセージング・システム100および/または論理回路1835について、その構造および/またはオペレーションの一部またはすべてを具体化することができる。あるいは、デバイス1800は、クライアントサーバーアーキテクチャ、3層アーキテクチャ、N層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムのような分散システムアーキテクチャを用いて、メッセージング・システム100および/または論理回路1835について、その構造および/またはオペレーションのいくつかの部分を複数のコンピューティングエンティティに分散させることができる。実施形態は、これに限定されない。
一実施形態では、無線インターフェース1810は、(例えば、相補型符号変調(CCK)および/または直交周波数分割多重(OFDM)シンボルを含む)シングルキャリアまたはマルチキャリア変調信号を送信および/または受信するように構成されたコンポーネントもしくはコンポーネントの組み合わせを有し得るが、ただし実施形態は、いずれかの特定の空中(over−the−air)インターフェースまたは変調方式に限定されない。無線インターフェース1810は、例えば、受信機1812、送信機1816、および/または周波数シンセサイザ1814を有し得る。無線インターフェース1810は、バイアスコントロール、水晶発振器、および/または1つ以上のアンテナ1818を有し得る。他の実施形態では、無線インターフェース1810は、必要に応じて、外部の電圧制御発振器(VCO)、弾性表面波フィルタ、中間周波数(IF)フィルタ、および/またはRFフィルタを使用することができる。可能なRFインターフェース構成は多様であるため、その広範な説明は省略する。
ベースバンド回路1820は、受信信号および/または送信信号を処理するために無線インターフェース1810と通信することができ、例えば、受信信号をダウンコンバートするためのアナログデジタル変換器1822、信号を送信用にアップコンバートするためのデジタルアナログ変換器1824を有し得る。さらに、ベースバンド回路1820は、個々の受信/送信信号のPHYリンク層処理のためのベースバンドまたは物理層(PHY)処理回路1856を有し得る。ベースバンド回路1820は、例えば、メディアアクセス制御(MAC)/データ・リンク層処理のための処理回路1828を有し得る。ベースバンド回路1820は、例えば、1つ以上のインターフェース1834を介した処理回路1828および/またはコンピューティング・プラットフォーム1830による通信のためのメモリ・コントローラ1832を有し得る。
いくつかの実施形態では、PHY処理回路1826は、無線フレームのような通信フレームを構築および/または分解するために、バッファメモリのような追加回路と組み合わせて、フレーム構築および/または検出モジュールを含み得る。代替的または追加的に、MAC処理回路1828は、これらの機能のうちのいくつかの処理を共有するか、またはこれらのプロセスをPHY処理回路1826とは独立に実行することができる。
コンピューティング・プラットフォーム1830は、デバイス1800にコンピューティング機能を提供し得る。図示のように、コンピューティング・プラットフォーム1830は、処理コンポーネント1840を有し得る。デバイス1100は、ベースバンド回路1820に対して追加的または代替的に、処理コンポーネント1840を用いて、メッセージング・システム100および/または論理回路1835について、その処理オペレーションまたはロジックを実行することができる。処理コンポーネント1840(および/またはPHY1826および/またはMAC1828)は、各種ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを含み得る。ハードウェア要素の例として、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子(例えば、トランジスタ、抵抗器、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含むことができる。ソフトウェア要素の例として、ソフトウェア・コンポーネント、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはその任意の組み合わせを含むことができる。ハードウェア要素および/またはソフトウェア要素を用いて実施形態を実現するかどうかの判断は、所望の計算速度、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリ資源、データバス速度、および他の設計制約または性能制約など、所与のインプリメンテーションで要求される任意の数のファクタに応じて異なる判断となり得る。
コンピューティング・プラットフォーム1830は、さらに、他のプラットフォーム・コンポーネント1850を有し得る。他のプラットフォーム・コンポーネント1850は、1つ以上のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミング装置、ビデオカード、オーディオカード、マルチメディア入力/出力(I/O)コンポーネント(例えば、デジタルディスプレイ)、パワーサプライなどのような、一般的な計算要素を含む。メモリユニットの例として、限定するものではないが、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、強誘電性ポリマーメモリのようなポリマーメモリ、オーボニックメモリ、相変化または強誘電体メモリ、シリコン/酸化膜/窒化膜/酸化膜/シリコン(SONOS)メモリ、磁気または光カード、独立ディスクの冗長アレイ(RAID)ドライブのようなデバイスアレイ、ソリッドステートメモリデバイス(例えば、USBメモリ、ソリッドステートドライブ(SSD))、および情報を保存するのに適した他の任意のタイプの記憶媒体のような、1つ以上のより高速のメモリユニットの形態の各種タイプのコンピュータ可読およびマシン可読記憶媒体を含むことができる。
デバイス1800は、例えば、ウルトラモバイルデバイス、モバイル・デバイス、固定デバイス、マシンツーマシン(M2M)デバイス、パーソナルデジタルアシスタント(PDA)、モバイル・コンピューティング・デバイス、スマートフォン、電話機、デジタル電話機、セルラー電話機、ユーザ装置、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージング装置、コンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイまたはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家電機器、プログラマブル家電機器、ゲーム機、テレビ、デジタルテレビ、セットトップボックス、無線アクセス・ポイント、基地局、ノードB、発展型ノードB(eNB)、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはその組み合わせであり得る。従って、本明細書に記載のデバイス1800の機能および/または具体的な構成は、要求に応じて適宜、デバイス1800の種々の実施形態に含むことも、または省くこともできる。いくつかの実施形態では、デバイス1800は、3GPP LTE仕様および/またはWMAN用のIEEE1102.16規格および/または本明細書で引用される他の広帯域無線ネットワークの1つ以上に関連したプロトコルおよび周波数に準拠するように構成することができるが、実施形態は、この点に関して限定されない。
デバイス1800の実施形態は、単入力単出力(SISO)アーキテクチャを用いて実現することができる。一方、いくつかの実現形態では、ビームフォーミングまたは空間分割多重アクセス(SDMA)のための適応アンテナ技術、および/またはMIMO通信技術を用いた送信および/または受信用のマルチアンテナ(例えば、アンテナ1818)を備えることができる。
デバイス1800のコンポーネントおよび機能は、ディスクリート回路、特定用途向け集積回路(ASIC)、論理ゲート、および/またはシングルチップアーキテクチャの任意の組み合わせを用いて実装することができる。さらに、デバイス1800の機能は、必要に応じて適宜、マイクロコントローラ、プログラマブルロジックアレイ、および/またはマイクロプロセッサ、またはその任意の組み合わせを用いて実装することができる。なお、本明細書において、ハードウェア、ファームウェア、および/またはソフトウェア要素を、「ロジック」または「回路」と総称または個称する場合があるということに留意すべきである。
図18のブロック図に示す例示的なデバイス1800は、多くの可能性のある実現形態の1つの機能的説明例を表し得るということは理解されるべきである。従って、添付の図面に示す機能ブロックの分割、欠落、または組み込みは、必ずしも、実施形態における、それらの機能を実装するためのハードウェア・コンポーネント、回路、ソフトウェア、および/または要素の分割、欠落、または組み込みを推測させるものではない。
コンピュータ実装方法は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取る工程と、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動する工程と、メッセージング・ボット対話ユーザ・インターフェースを介してメッセージング・ボット対話コマンドを受け取る工程と、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信する工程と、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取る工程と、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示する工程とを備えることができる。
コンピュータ実装方法は、メッセージ・スレッド表示のテキスト入力部分において、ボット起動テキスト断片を受け取る工程であって、ボット起動テキスト断片を受け取る工程が、メッセージング・ボット起動を受け取る工程を備える、工程と、1以上の予想されるボット・コマンド・テキスト断片を決定する工程と、メッセージ・スレッド表示において1以上の予想されるボット・コマンド・テキスト断片を表示する工程であって、1以上の予想されるボット・コマンド・テキスト断片を表示する工程が、メッセージング・ボット対話ユーザ・インターフェースを起動する工程を備える、工程と、1以上の予想されるボット・コマンド・テキスト断片からのボット・コマンド・テキスト断片のユーザ選択を受け取る工程と、ユーザ選択に対応するボット・コマンド・テキスト断片をクライアント・デバイスからメッセージング・システムに対して送信する工程であって、ボット・コマンド・テキスト断片をメッセージング・システムに対して送信する工程が、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信する工程を備える、工程とをさらに備えることができる。
コンピュータ実装方法は、メッセージ・スレッド表示のテキスト入力部分を介して、コマンド・テキスト断片開始部分を受け取る工程と、コマンド・テキスト断片開始部分をメッセージング・システムに対して送信する工程と、コマンド・テキスト断片開始部分をメッセージング・システムに対して送信したのに応答して、1以上の予想されるボット・コマンド・テキスト断片を受け取ることによって、1以上の予想されるボット・コマンド・テキスト断片を決定する工程とをさらに備えることができる。
コンピュータ実装方法は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット・コントロール選択を受け取る工程であって、メッセージング・ボット・コントロール選択を受け取る工程が、メッセージング・ボット起動を受け取る工程を備え、メッセージング・ボット・コントロール選択が、メッセージング・ボットに関連付けられたメッセージング・ボット・コントロールについてのものである、工程と、メッセージ・スレッド表示においてメッセージング・ボット対話構成インターフェースを表示する工程であって、メッセージング・ボット対話構成インターフェースを表示する工程が、メッセージング・ボット対話ユーザ・インターフェースを起動する工程を備える、工程と、メッセージング・ボット対話構成インターフェースについての1以上のユーザ・インターフェース選択を受け取る工程であって、1以上のユーザ・インターフェース選択を受け取る工程が、メッセージング・ボット対話コマンドを受け取る工程を備える、工程とをさらに備えることができる。
コンピュータ実装方法は、クライアント・デバイス上のメッセージ・スレッド表示において、サービス・タイプ・コントロールのサービス・タイプ・コントロール選択を受け取る工程と、サービス・タイプ・コントロール選択に応答して、メッセージ・スレッド表示において複数のメッセージング・ボット・コントロールを表示する工程であって、複数のメッセージング・ボット・コントロールが、メッセージング・ボット・コントロールを備える、工程と、複数のメッセージング・ボット・コントロールの各々に関連付けられたサービス遂行情報を表示する工程であって、サービス遂行情報が、推定されるコスト、推定される到着時間、推定される移動時間、およびサービス利用可能性のうちの1以上を備える、工程とをさらに備えることができる。
コンピュータ実装方法は、メッセージング・システムのユーザに関連付けられたクライアント・デバイスをさらに備えることができ、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット・コントロール選択を受け取る工程であって、メッセージング・ボット・コントロール選択を受け取る工程が、メッセージング・ボット起動を受け取る工程を備え、メッセージング・ボット・コントロール選択が、メッセージング・ボットに関連付けられたメッセージング・ボット・コントロールについてのものである、工程と、ユーザがメッセージング・ボットに関連付けられたサービスのためのユーザ・アカウントを欠いていることを決定する工程と、メッセージ・スレッド表示においてサービスのためのユーザ・アカウント作成インターフェースを表示する工程と、ユーザ・アカウント作成インターフェースを用いたユーザ対話を受け取る工程と、ユーザ・アカウント作成インターフェースを用いて受け取られたユーザ対話に基づいて、ユーザ・アカウント作成コマンドを生成する工程と、ユーザ・アカウント作成コマンドをサービスに対して送信する工程とをさらに備える。
コンピュータ実装方法は、クライアント・デバイスに関連付けられたユーザ電話番号を、ユーザ・アカウント作成コマンドに関連付けられたサービスに対して検証する工程であって、ユーザ電話番号をサービスに対して検証する工程が、サービスがユーザ電話番号検証を遂行することを防止するように動作する、工程とをさらに備えることができる。
コンピュータ実装方法は、メッセージング・システムのユーザに関連付けられたクライアント・デバイスをさらに備えることができ、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信する工程が、サービスに関するサービス要求を起動し、ユーザについてのトークン化された金融情報をサービスに対して送信する工程をさらに備える。
コンピュータ実装方法は、メッセージング・システムのユーザに関連付けられたクライアント・デバイスをさらに備えることができ、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット・コントロール選択を受け取る工程であって、メッセージング・ボット・コントロール選択を受け取る工程が、メッセージング・ボット起動を受け取る工程を備え、メッセージング・ボット・コントロール選択が、メッセージング・ボットに関連付けられたメッセージング・ボット・コントロールについてのものである、工程と、ユーザがメッセージング・ボットに関連付けられたサービスのためのユーザ・アカウントに関連付けられていることを決定する工程と、メッセージング・ボット・コントロール選択を受け取ったのに応答して、ユーザについての金融情報についてサービスに問い合わせる工程と、メッセージング・システムのユーザに関連付けられた金融情報を記憶する工程とをさらに備える。
コンピュータ実装方法は、メッセージング・システムに関するメッセージ・スレッドに関連付けられたメッセージ・スレッド表示をさらに備えることができ、メッセージ・スレッドは、メッセージング・システムの2人以上の個人ユーザに関連付けられる。
コンピュータ実装方法は、2つ以上のクライアント・デバイスに関連付けられた2人以上の個人ユーザをさらに備えることができ、2つ以上のクライアント・デバイスは、クライアント・デバイスを備え、メッセージング・ボット対話応答をメッセージング・システムから2つ以上のクライアント・デバイスに対して送信する工程をさらに備える。
装置は、デバイス上のプロセッサ回路と、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取り、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動し、メッセージング・ボット対話ユーザ・インターフェースを介してメッセージング・ボット対話コマンドを受け取り、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示するようにプロセッサ回路上において動作するユーザ・インターフェース・コンポーネントと、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信し、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取るようにプロセッサ回路上において動作するクライアント・メッセージング・コンポーネントとを備えることができる。装置は、本明細書において説明されるコンピュータ実装方法のいずれかを実施するように動作することができる。
コンピュータ実装方法は、メッセージをクライアント・デバイスから受け取る工程と、メッセージをメッセージ待ち行列に対して追加する工程と、メッセージ待ち行列を監視する工程と、メッセージがメッセージング・ボット起動を示していることを検出する工程と、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、メッセージに関連付けられたメッセージング・ボットを決定する工程と、メッセージをメッセージング・ボットに対して渡す工程とを備えることができる。
コンピュータ実装方法は、テキスト内容部分を備えるメッセージをさらに備えることができ、メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程とをさらに備える。
コンピュータ実装方法は、メタデータ部分を備えるメッセージをさらに備えることができ、メッセージのメタデータ部分においてボット起動フラグを検出する工程と、ボット起動フラグを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程とをさらに備える。
コンピュータ実装方法は、メッセージをメッセージング・ボットに関連付けられたボット・サーバに対して送信することによって、メッセージをメッセージング・ボットに対して渡す工程をさらに備えることができる。
コンピュータ実装方法は、メッセージに対するメッセージング・ボット応答をボット・サーバから受け取る工程をさらに備えることができる。
コンピュータ実装方法は、メッセージに対するメッセージング・ボット応答を生成する工程と、メッセージに対するメッセージング・ボット応答をボット・フレームワーク・コンポーネントに対して送信する工程とをさらに備えることができる。
コンピュータ実装方法は、メッセージに対するメッセージング・ボット応答を受け取る工程と、メッセージング・ボット応答をメッセージ待ち行列内に挿入する工程とをさらに備えることができる。
コンピュータ実装方法は、メッセージング・ボット応答をクライアント・デバイスに対して送信する工程をさらに備えることができる。
コンピュータ実装方法は、メッセージ・スレッドに関連付けられたメッセージをさらに備えることができ、メッセージ待ち行列内に挿入されるメッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられる。
コンピュータ実装方法は、2人以上の個人ユーザに関連付けられたメッセージ・スレッドをさらに備えることができる。
コンピュータ実装方法は、テキスト部分を備えるメッセージをさらに備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、1以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、1以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、1以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程とをさらに備える。
コンピュータ実装方法は、テキスト部分を備えるメッセージをさらに備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備え、ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、コマンド開始部分をメッセージング・ボットに対して渡す工程と、1以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、1以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、1以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程とをさらに備える。
コンピュータ実装方法は、メッセージ・スレッドに関連付けられたメッセージをさらに備えることができ、メッセージが、ボット・サブスクリプション・コマンドを備え、ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブする工程と、ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程と、複数のブロードキャスト・ワーカが、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程とをさらに備える。
コンピュータ実装方法は、複数のサブスクライバ・スレッド・プリファレンスを取り出す工程であって、複数のサブスクライバ・スレッド・プリファレンスの各々が、対応するサブスクライバ・スレッドに関連付けられる、工程と、複数の選択されるサブスクライバ・スレッドを決定するために、複数のサブスクライバ・スレッド・プリファレンスの各々を対応するサブスクライバ・スレッドと比較する工程であって、複数の選択されるサブスクライバ・スレッドが、複数のサブスクライバ・スレッドのサブセットである、工程と、ブロードキャスト・メッセージを、複数の選択されるサブスクライバ・スレッドに対応する複数の選択されるメッセージ待ち行列に対して追加する工程とをさらに備えることができる。
装置は、デバイス上のプロセッサ回路と、メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するようにプロセッサ回路上において動作するメッセージング・コンポーネントと、メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すようにプロセッサ回路上において動作するメッセージ待ち行列監視コンポーネントと、メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントとを備えることができる。装置は、本明細書において説明されるコンピュータ実装方法のいずれかを実施するように動作することができる。
少なくとも1つのコンピュータ可読記憶媒体は、実行されたときに、本明細書に記載されるコンピュータ実装方法のいずれかをシステムに行わせる命令を備え得る。
いくつかの実施形態は、「1つの実施形態」または「実施形態」という表現と、それらの派生語とを用いて説明され得る。これらの用語は、実施形態に関して説明される特定の特徴、構造または特性が少なくとも1つの実施形態に含まれることを意味している。本明細書の様々な箇所に現れる「1つの実施形態において」というフレーズは、必ずしも全てが同じ実施形態を指しているわけではない。更に、いくつかの実施形態は、「結合された」および「接続された」という表現と、それらの派生語とを用いて説明され得る。これらの表現は必ずしも互いの同義語として意図されているわけではない。例えば、いくつかの実施形態は、「接続された」および/または「結合された」という表現を用いることにより、2つ以上の要素が直接物理的にまたは電気的に相互接触していることを示すように説明され得る。一方、「結合された」という用語は、2つ以上の要素が互いに直接接触していないが、それでも互いに協働またはインタラクトしていることを意味する場合もある。
本明細書において用いられる表記および専門用語を全体的に参照すると、本明細書における詳細な説明は、コンピュータまたはコンピュータのネットワーク上で実行されるプログラムプロシージャの観点で表され得る。これらの手続き的(procedural)記載および表現は、当業者によって、当該技術分野における他の当業者に自身の研究の本質を最も効果的に伝えるために用いられている。
プロシージャとは、ここでは、また一般的に、所望の結果をもたらすオペレーションの首尾一貫したシーケンスであると考えられる。これらのオペレーションは、物理的量の物理的操作を必要とするものである。必須ではないが通例、これらの量は、記憶、転送、組合せ、比較および他の形で操作されることが可能な電気信号、磁気信号または光信号の形態をとる。場合によっては、主に一般的用法の理由から、これらの信号を、ビット、値、要素、シンボル、文字、語、数等と呼ぶことが好都合であることがわかっている。しかしながら、これらの用語および同様の用語は全て適切な物理的量に関連付けられ、これらの量に適用される好都合なラベルにすぎないことに留意されたい。
更に、実行される操作は、多くの場合、人間のオペレータによって実行される知的オペレーションに一般的に関連付けられる、追加または比較等の用語で参照される。1つまたは複数の実施形態の一部を形成する、本明細書に説明されるオペレーションのいずれにおいても、人間のオペレータのそのような能力は必要でないか、ほとんどの場合に望ましくない。むしろ、オペレーションは機械オペレーションである。様々な実施形態のオペレーションを実行するための有用な機械は、汎用デジタルコンピュータまたは同様のデバイスを含む。
様々な実施形態は、これらのオペレーションを実行するための装置またはシステムにも関する。この装置は、必要とされる目的のために特に構築されることが可能であるか、またはコンピュータに記憶されるコンピュータ・プログラムによって選択的にアクティベートまたは再構成される汎用コンピュータを含むことができる。本明細書において提示されるプロシージャは、特定のコンピュータまたは他の装置に本質的に関係しない。様々な汎用機械は、本明細書における教示に関連して書かれたプログラムと共に用いられ得るか、または、必要とされる方法ステップを実行する、より特殊な装置を構築することが好都合であるとわかる場合がある。様々なこれらの機械のために必要とされる構造は、与えられる説明から明らかとなるであろう。
本開示の要約書は、読み手が技術的開示の本質を迅速に理解できるようにするために提供されていることを強調しておく。要約書は、特許請求の範囲の範囲または意味を解釈または限定することに用いられないという理解のもとに提出されている。更に、上記した「発明を実施するための形態」においては、開示を効率化するために様々な特徴がまとめて単一の実施形態にされていることを見てとることができる。このような開示方法は、特許請求される実施形態が各請求項に明示的に記された特徴以外のものを必要とする意図を表していると解釈されるべきではない。むしろ、以下の特許請求の範囲が表しているように、本発明の主題は、開示されている単一の実施形態の全特徴よりも少ない特徴にある。このため、以下の特許請求の範囲は本明細書において「発明を実施するための形態」に組み込まれ、各請求項は独立した1つの実施形態に基づく。「第1の」、「第2の」、「第3の」等の用語は単にラベルとして用いられており、それらの対象物に数的限定を課すことを意図したものではない。
上記で説明したものは、開示されているアーキテクチャの例を含む。当然ながら、コンポーネントおよび/または方法の全ての考え得る組合せを記載することは不可能であるが、当業者であれば、多くの更なる組合せおよび置き換えが可能であることを認識することができる。したがって、新規のアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内にある全ての変化、変更および変形を包含することが意図される。