ネットワーク接続されたコンピューティングデバイスは、個人間通信に関わるためのこれまでにない能力をそのユーザに提供することができる。人々は、友達、家族、同僚、および他の関係者とのメッセージング対話に関わることができる。連絡先との間のユーザのメッセージ交換は、別個のメッセージスレッド内に維持され得る。
このようなネットワーク接続されたコンピューティングデバイスは、そのユーザに、ネットワークアクセス可能なサービスへのアクセスを提供することもできる。例えば、輸送サービス、ダイニングサービス、娯楽サービス、および他のサービスが、ウェブサイト、ウェブアプリケーション、クライアントアプリケーション、または他のネットワークアクセスを可能にする技術を使用して、人々が自身のクライアントデバイスを使用して自社のサービスに関わることを可能にし得る。一部の娯楽またはメディアサービスなどいくつかの場合には、サービスの手配と送付の両方がクライアントデバイスを介して行われることがある。例えば、クライアントデバイスを介して音楽が購入され、再生のためにクライアントデバイスに送付され得る。輸送、ダイニング、および対面で行われる娯楽のような他の場合、サービスはクライアントデバイスを介して手配可能であるが、クライアントデバイスの外部で行われる。例えば、自動車同乗サービスは、クライアントデバイスを介して手配されるが、ユーザに自動車同乗を提供する車両および運転者を通じて行われ得る。
いくつかの場合には、ネットワークアクセス可能なサービスの使用は、2人以上の人に関係することがある。特にサービスへのユーザのアクセス手段が、メッセージングにも使用するクライアントデバイスである場合、ユーザは、メッセージングクライアントにおけるネットワークアクセス可能なサービスとの自身の関わりを、当該サービスが関係する他者と共有することから、利益を得られる可能性がある。そのため、メッセージスレッドは、連絡先とのユーザのオンラインソーシャル関係のためのハブとして働くことができ、メッセージスレッドは、メッセージングに使用されるのと同じクライアントを介して要求されるサービス、監視されるサービス、または関わりを持ったサービスを取り込む。
ユーザがメッセージングコンテクストを介してサービスと対話するのを支援するために、サービスがメッセージングシステム内でメッセージングボットとして表現され得る。メッセージングボットは、メッセージスレッドの中で参加者として表現されることが可能な、ネットワークアクセス可能なサービスへの自動化されたフロントエンドであり得る。いくつかの場合には、メッセージングボットは、特定のユーザとそのメッセージングボットとの間の1対1メッセージスレッドなど、そのメッセージングボットを明示的に含むメッセージスレッド内でやり取りされ得る。他の場合には、メッセージングボットは、そのメッセージングボットが普段の参加者ではないメッセージスレッド内でやり取りされ得、メッセージングボットは、サービスと対話することを目的とした、メッセージスレッドへの一時的な参加者となる。メッセージングボットは、2人のユーザ間の1対1スレッドであれ、または複数のユーザ間のグループスレッドであれ、任意の他のスレッドに一時的な参加者として含まれ得る。
いくつかの場合には、ネットワークアクセス可能なサービスの使用は、2人以上の人に関係することがある。特にサービスへのユーザのアクセス手段が、メッセージングにも使用するクライアントデバイスである場合、ユーザは、メッセージングクライアントにおけるネットワークアクセス可能なサービスとの自身の関わりを、当該サービスが関係する他者と共有することから、利益を得られる可能性がある。そのため、メッセージスレッドは、連絡先とのユーザのオンラインソーシャル関係のためのハブとして働くことができ、メッセージスレッドは、メッセージングに使用されるのと同じクライアントを介して要求されるサービス、監視されるサービス、または関わりを持ったサービスを取り込む。
ユーザがメッセージングコンテクストを介してサービスと対話するのを支援するために、サービスがメッセージングシステム内でメッセージングボットとして表現され得る。メッセージングボットは、メッセージスレッドの中で参加者として表現されることが可能な、ネットワークアクセス可能なサービスへの自動化されたフロントエンドであり得る。いくつかの場合には、メッセージングボットは、特定のユーザとそのメッセージングボットとの間の1対1メッセージスレッドなど、そのメッセージングボットを明示的に含むメッセージスレッド内でやり取りされ得る。他の場合には、メッセージングボットは、そのメッセージングボットが普段の参加者ではないメッセージスレッド内でやり取りされ得、メッセージングボットは、サービスと対話することを目的とした、メッセージスレッドへの一時的な参加者となる。メッセージングボットは、2人のユーザ間の1対1スレッドであれ、または複数のユーザ間のグループスレッドであれ、任意の他のスレッドに一時的な参加者として含まれ得る。
そのため、ユーザは、メッセージングクライアントの慣れ親しんだ体験の中でネットワークサービスと関わることができる。さらに、メッセージングクライアントを使用することにより、ユーザは、他の人々の包含を許すようにメッセージングコンテクスト内でネットワークサービスと関わることができる。いくつかの場合には、これは、友達や家族に輸送の詳細を知らせるなど、単に他の人々にサービスについて知らせることであり得る。他の場合には、これは、食事、乗車、娯楽、または他のサービスが複数の人々による使用のために手配される場合など、複数の人々に対するサービスの実施を可能にすることができる。その結果、実施形態は、ネットワークアクセス可能なサービスを使用する際の体験を向上させることができ、またネットワークアクセス可能なサービスの到達範囲をメッセージングシステムのユーザまで拡大することができる。
ユーザは関わるべきボットを提案され得る。これらの提案は、2人以上のユーザ間のメッセージスレッドのコンテクスト内で行われ得る。そのため、これらの提案は、提案を表示するために使用される画面空間の量を制御する技術を使用して行われ得る。これらの提案は、選択されるとメッセージングボットを用いてサービス要求を構成するためのより大きいインターフェースをインスタンス化する、コントロールであり得る。
開発者は、自身のメッセージングボットの能力を指定するための自然な様式を提供されることによって支援され得る。ボットプラットフォームは、開発者が開発者によって定義された例のセットを使用して自身のボットの能力を定義することを可能にするボットエンジンを提供し得る。例は、開発者が自身のメッセージングボットを推奨させるべきであると考える実例発言または会話であり得る。その結果、実施形態は、ユーザに推奨するメッセージングボットを決定する難しさを低減させることができる。
次いで図面を参照する。図面では、すべての図を通じて同様の参照符号を使用して同様の要素を参照する。以下の記載では、説明の目的で、その完全な理解を提供するために多数の具体的な詳細が述べられる。ただし、新規な実施形態はそれらの具体的な詳細を用いずに実施することも可能であることが明らかであろう。他の事例では、よく知られた構造およびデバイスは、その説明を容易にするためにブロック図の形態で示される。特許請求される主題に矛盾しないすべての修正、均等物、および代替物を包含することが意図される。
本明細書で使用される「a」および「b」および「c」ならびに同様の指示子は任意の正の整数を表現する変数であることを意図することに注意されたい。よって、例えば、ある実装形態が値をa=5と設定する場合、コンポーネント122-1~122-aと例示されるコンポーネント122の完全な組は、コンポーネント122-1、122-2、122-3、122-4、および122-5を含み得る。実施形態はこれに関して限定されない。
図1は、消費者・企業間通信システム100のブロック図を例示する。1つの実施形態では、消費者・企業間通信システム100は、1つまたは複数のコンポーネントを備えるソフトウェアアプリケーションを有するコンピュータ実装システムからなり得る。図1に示す消費者・企業間通信システム100は、限られた数の要素を特定のトポロジーで有するが、消費者・企業間通信システム100は、所与の実装の必要に応じて、より多くのまたは少ない要素を代替のトポロジーで含み得ることが理解できよう。
消費者・企業間サービス110は、消費者と企業との間の仲介として機能し得る。消費者および企業の両方が消費者・企業間サービス110のユーザとなり得、消費者は、個人ユーザアカウントを介して表現され、企業は、商業アカウントと、場合によっては、企業の代表者や他の従業員に関連付けられた個人ユーザアカウントなどの、その企業に関連付けられた1つまたは複数の個人ユーザアカウントとによって表現される。消費者ユーザは、ソーシャルグラフ内でユーザエンティティを用いて表現され得る。企業または他の商用ユーザは、ソーシャルグラフ内で企業エンティティによって表現され得る。消費者ユーザと商用ユーザとの間の関係は、ソーシャルグラフ内で、ユーザエンティティと企業エンティティとの間の1つまたは複数のエッジによって表現され得る。
消費者・企業間サービス110は、メッセージングシステム140を備え得る。メッセージングシステム140は一般に、個人ユーザなどの個人エンティティと、企業や他の組織などの集団エンティティとの間で、メッセージを受信し、記憶し、および送付するようになされ得る。メッセージングシステム140は、メッセージングエンドポイント125などのメッセージングエンドポイントがオフラインである間にメッセージを記憶し、メッセージングエンドポイントが利用可能になるとそのメッセージを送付し得る。メッセージングシステム140は、ユーザが、複数のメッセージングエンドポイント(例えば、モバイルデバイスのメッセージングクライアント、パーソナルコンピュータのウェブブラウザ)を同じユーザアカウントに対して使用することを可能にし得、メッセージングシステム140は、すべてのメッセージングエンドポイントをユーザアカウントのメッセージング状態に関して最新の状態に保つ。
消費者・企業間サービス110は、ソーシャルネットワーキングサービス130を備え得る。ソーシャルネットワーキングサービス130は、ソーシャルグラフを表現するソーシャルグラフデータ構造を維持し得る。ソーシャルグラフは、ユーザエンティティ、商業エンティティ、および任意の他の種のエンティティなどのエンティティ間の関係を表現し得る。ソーシャルグラフはそれらの関係をグラフ関係として表現し得、その中で、すべての情報は、グラフ中の特定のノードに付加されるか、またはグラフ中の2つのノード間の特定のエッジに付加されるかのいずれかとして符号化される。メッセージングシステム140はソーシャルネットワーキングサービス130の一要素であり得、ソーシャルグラフは、少なくとも部分的にソーシャルネットワーキング情報を収容している。消費者・企業間サービス110の全体は、ソーシャルネットワーキングサービスの一要素であるか、または複数の要素から構成され得る。
消費者・企業間サービス110は、消費者ポータル150を備え得る。消費者ポータル150は、消費者によって使用されているクライアントアプリケーションのための消費者・企業間サービス110への統一された入口点であり得る。消費者ポータル150は、消費者・企業間サービス110を使用して商業に関わることがないユーザを含む非商業エンティティのための一般ユーザポータルとして機能することができる。消費者ポータル150は、メッセージングシステム140およびソーシャルネットワーキングサービス130へのアクセスを提供することができる。いくつかの実施形態では、ソーシャルネットワーキングサービス130へのすべてのアクセスは、消費者ポータル150によって仲介され得、消費者ポータル150内ではソーシャルネットワーキングサービス130の情報がユーザに代わって使用および管理され、ユーザがソーシャルグラフ情報の一部またはすべてに直接アクセスすることはない。いくつかの実施形態では、ユーザは、自身のユーザアカウントを使用してメッセージングシステム140に直接アクセスし得、消費者ポータル150は、消費者ポータル150の仲介なしにメッセージングエンドポイント125とメッセージングシステム140との間の直接のネットワーク通信を通じて提供される一般的なメッセージング機能性(例えば友達とのメッセージング)を用いる、消費者・企業間サービス110の消費者機能に限定される。
消費者・企業間サービス110は、企業ポータル160を備え得る。企業ポータル160は、企業エンティティによって使用されているクライアントアプリケーションのための消費者・企業間サービス110への統一された入口点であり得る。企業ポータル160は、メッセージングシステム140およびソーシャルネットワーキングサービス130へのアクセスを提供することができる。いくつかの実施形態では、ソーシャルネットワーキングサービス130へのすべてのアクセスは、企業ポータル160によって仲介され得、企業ポータル160内ではソーシャルネットワーキングサービス130の情報が企業エンティティに代わって使用および管理され、企業エンティティがソーシャルグラフ情報の一部またはすべてに直接アクセスすることはない。いくつかの実施形態では、企業エンティティは、自身の商業アカウントを使用してメッセージングシステム140に直接アクセスし得、企業ポータル160は、企業ポータル160の仲介なしに1つまたは複数のボット190とメッセージングシステム140との間の直接のネットワーク通信を通じて提供される一般的なメッセージング機能性(例えば顧客とのメッセージング)を用いる、消費者・企業間サービス110のビジネス機能に限定される。
ユーザは、消費者・企業間通信システム100に参加し、クライアントデバイス120で実行されるメッセージングエンドポイント125のソフトウェアアプリケーションを使用して消費者・企業間サービス110と対話し得る。クライアントデバイス120は通例、スマートフォン、すなわち、iPhone(登録商標)、Android(登録商標)フォン、または他のスマートフォンなど、従来の電話機の機能を超える機能性を提供するソフトウェアアプリケーションを実行することが可能な携帯電話機であり得る。メッセージングエンドポイント125は、消費者・企業間サービス110の一部を形成する特定のメッセージングシステム140に明確に関連付けられる場合も、または複数のメッセージングサービスと対話するように動作する汎用メッセージングクライアントである場合もある。メッセージングエンドポイント125は、消費者ポータル150およびメッセージングシステム140の一方または両方と、メッセージングタスクおよび商業タスクを実施するために対話し得る。
企業エンティティは、メッセージングシステム内で、ユーザに表示するための情報の集合を備える商業表現によって表現され得る。商業表現は企業ページを備えることがあり、企業ページは、消費者・企業間通信システム100内での企業の識別である。企業ページは、企業エンティティに関する情報を表示し得る。企業ページは、企業エンティティについての情報、例えば、企業エンティティの物理的位置、物理的位置の営業時間、またはその企業エンティティ(例えば企業エンティティの代表者)が消費者・企業間通信システム100を通じてメッセージング可能である時間、の1つまたは複数を含み得る。企業ページは、ソーシャルグラフで表現され得る、ソーシャルネットワーク内でその企業エンティティを「いいね!」したまたは「フォロー」した閲覧ユーザの友達のリストなどの、企業エンティティのソーシャルネットワーキング情報を含み得る。
商業表現は、企業エンティティと正確に対応しないこともある。企業などの単一の企業エンティティが複数の商業表現を有し、したがって複数の企業ページを有することがある。例えば、単一の企業が、その同じ企業によって所有され、運営される異なるブランドに対して異なる表現を有し得る。小売業者または再販業者が、複数のブランドを販売することがあり、販売する各異なるブランドに対して異なる表現を有し得る。企業は、米国向けに1つの企業ページがあり、ヨーロッパ向けに別の企業ページがあり、ロシア向けに別の企業ページがある等、その企業が営業している異なる地理的エリアごとに異なる表現を有し得る。
ユーザがメッセージングコンテクスト内でサービスと対話するのを支援するために、サービスがボット190として表現され得る。ボットは、対話の中で参加者として表現されることが可能な、ネットワークアクセス可能なサービスへの完全にまたは部分的に自動化されたフロントエンドであり得る。一部の事例では、対話は、メッセージスレッド内で具現化されたメッセージング対話からなることができ、ボット190はメッセージングボットからなる。いくつかの場合には、メッセージングボットは、特定のユーザとメッセージングボットとの間の1対1メッセージスレッドなど、そのメッセージングボットを明示的に含むメッセージスレッド内でやり取りされ得る。他の場合には、メッセージングボットは、そのメッセージングボットが普段の参加者ではないメッセージスレッド内でやり取りされ得、メッセージングボットは、サービスと対話することを目的とした、メッセージスレッドへの一時的な参加者となる。メッセージングボットは、2人のユーザ間の1対1スレッドであれ、または3人以上のユーザ間のグループスレッドであれ、任意の他のスレッドに一時的な参加者として含まれ得る。
ボット190は、メッセージング以外の通信チャネルを使用してユーザと対話し得る。例えば、ボットは、スマートフォン、パーソナルコンピュータ、音声作動式機器、またはユーザが音声を介して対話し得る他のデバイスなどの、音声システムを介して動作する音声ボットからなり得る。そのような実施形態では、音声システムが、ボット190に代わって音声認識および音声生成を行い得る。ボット190とユーザとの間を仲介するために他のタイプの対話型システムが使用され得る。
商業表現のためのメッセージングボットは、メッセージングシステム140内のメッセージング会話の中に提示され得る。メッセージングシステム140のユーザは、企業の仮想表現を備えるメッセージングボットとのメッセージングによって、その企業と対話し得る。メッセージングボットは、企業ページとして提示される商業表現に明確に対応し得、メッセージングボットは、メッセージングコンテクストにおける企業ページの表現である。ボットとのメッセージングは、したがって、主として企業からユーザへの情報を提供するため専用の企業ページにある商業表現の存在を、ユーザと企業が会話に関わることができる対話型メッセージングへと拡張し得る。
企業は、1つまたは複数の商業アプリケーションを使用してメッセージングシステム140と関わり得る。アプリケーションは、アプリケーション・プログラミング・インターフェース(API)を介したメッセージングシステム140および/またはソーシャルネットワーキングサービス130へのアクセスを可能にする、特定の登録に対応し得る。アプリケーションは、そのアプリケーションにメッセージングシステム140からどのように接触できるかを指定する、そのアプリケーションのための様々な登録されたフックを介して、メッセージングシステム140に登録され得る。これらのフックは、メッセージングシステム140内でのユーザメッセージングなどのイベントに応答してアプリケーションに接触するために使用され得る。アプリケーションには、認証ならびにメッセージングシステム140との間の情報の安全な(例えば暗号化された)受信および送信のために使用され得るセキュアトークンが割り当てられ得る。アプリケーションは、メッセージングシステム140および/またはソーシャルネットワーキングサービス130との特定のAppIDに対応し得る。企業は、エージェントを介してその企業が提供するサービスおよび製品の複数の態様をもたらすことがあるので、メッセージングシステム140を介してユーザと対話するために、複数の異なるアプリケーションが企業エンティティによって使用され得る。各アプリケーションは、そのアプリケーションが支持する企業ページなどの1つまたは複数の商業表現に対して、メッセージングシステム140にサブスクライブし得る。
ネットワーク180は、コンピュータデバイス間のコンピュータ送信を搬送するように動作する任意形態のコンピュータネットワークからなり得る。ネットワーク180は、イントラネットおよびインターネットの一方または両方を含み得る。ネットワーク180は、モバイルクライアントデバイス120に接続性を提供するために使用されるものなどの、セルラーデータおよび/またはWi-Fiデータネットワークを含み得る。
消費者・企業間通信システム100は、ユーザ間の対話から生成された知識を使用し得る。消費者・企業間通信システム100は、ソーシャルネットワーキングサービス130の一コンポーネントを構成し得、ソーシャルネットワーキングサービス130のより広範な対話から生成される知識を使用し得る。そのため、消費者・企業間通信システム100およびさらに大きなソーシャルネットワーキングサービス130のユーザのプライバシーを保護するために、消費者・企業間通信システム100は、認可サーバ(または他の適切なコンポーネント)を含み得、認可サーバは、ユーザが、例えば適当なプライバシー設定を設定することにより、自身のアクションを消費者・企業間通信システム100によってログに記録させること、または他のシステム(例えばサードパーティシステム)と共有させることをオプトインまたはオプトアウトできるようにする。ユーザのプライバシー設定は、そのユーザに関連付けられたどの情報がログに記録され得るか、そのユーザに関連付けられた情報がどのようにログに記録され得るか、そのユーザに関連付けられた情報がいつログに記録され得るか、そのユーザに関連付けられた情報を誰がログに記録し得るか、そのユーザに関連付けられた情報が誰と共有され得るか、およびそのユーザに関連付けられた情報がどのような目的でログに記録される、または共有されるか、を決定し得る。認可サーバまたは他の認可コンポーネントを使用して、ブロッキング、データのハッシュ化、匿名化、または適宜他の適切な技術を通じて、消費者・企業間通信システム100およびソーシャルネットワーキングサービス130の他の要素のユーザの1つまたは複数のプライバシー設定を施行し得る。例えば、ソーシャルネットワーキングサービス130のユーザとソーシャルネットワーキングサービス130との間の対話を使用してメディアコンテンツの嗜好や、異なるコンテンツに対する嗜好間の関係を学習し得るが、これらの対話は、学習プロセスに先立って、またはその一部として、匿名化され得る。
図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は、対応する概念プロフィールページを有し得、このページの中で、1人または複数のユーザが、特に概念ノード204に対応する概念との関連で、コンテンツを追加し、宣言を行い、または自身を表し得る。
特定の実施形態では、概念ノード204は、サードパーティシステムによってホストされるサードパーティウェブページまたはリソースを表現し得る。サードパーティウェブページまたはリソースは、種々の要素の中でも特に、コンテンツ、選択可能なもしくはその他のアイコン、またはアクションもしくは活動を表現する他の対話可能オブジェクト(例えば、JavaScript、AJAX、またはPHPコードで実装され得る)を含み得る。限定ではなく例として、サードパーティウェブページが、「いいね!」、「チェックイン」、「食べる」、「推奨される」、または他の適切なアクションもしくは活動などの、選択可能なアイコンを含み得る。そのサードパーティウェブページを閲覧するユーザは、アイコンの1つ(例えば「食べる」)を選択して、クライアントシステムからソーシャルネットワーキングシステムにユーザのアクションを指示するメッセージを送信させることにより、アクションを行うことができる。そのメッセージに応答して、ソーシャルネットワーキングシステムは、当該ユーザに対応するユーザノード202と、サードパーティウェブページまたはリソースに対応する概念ノード204との間にエッジ(例えば「食べる」のエッジ)を作り、エッジ206を1つまたは複数のデータストアに記憶し得る。
特定の実施形態では、ソーシャルグラフ200中のノードのペアが、1つまたは複数のエッジ206によって互いと接続され得る。ノードのペア同士を接続するエッジ206は、そのノードのペア間の関係を表現し得る。特定の実施形態では、エッジ206は、ノードのペア間の関係に対応する1つまたは複数のデータオブジェクトまたは属性を含むか、または表現し得る。限定ではなく例として、第1のユーザが、第2のユーザが第1のユーザの「友達」であることを指示し得る。この指示に応答して、ソーシャルネットワーキングシステムは、第2のユーザに「友達申請」を送信し得る。第2のユーザが「友達申請」を確定した場合、ソーシャルネットワーキングシステムは、ソーシャルグラフ200内に第1のユーザのユーザノード202を第2のユーザのユーザノード202に接続するエッジ206を作り、エッジ206をソーシャルグラフ情報として1つまたは複数のデータストアに記憶し得る。図2の例では、ソーシャルグラフ200は、ユーザ「アマンダ」のユーザノード202とユーザ「ドロシー」のユーザノード202との間の友達関係を指示するエッジ206を含んでいる。本開示は、特定のユーザノード202同士を接続する特定の属性をもつ特定のエッジ206について記載または例示するが、本開示は、ユーザノード202同士を接続する任意の適切な属性をもつ任意の適切なエッジ206を企図する。限定ではなく例として、エッジ206は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、サブスクライバ関係、上下関係、互恵関係、非互恵関係、別の適切なタイプの関係、または2つ以上の同様の関係を表現し得る。さらに、本開示は概してノードを接続されたものとして説明するが、本開示は、ユーザまたは概念も接続されたものとして説明する。本明細書において、接続されたユーザまたは概念への言及は、該当する場合、ソーシャルグラフ200内で1つまたは複数のエッジ206によって接続されているそれらユーザまたは概念に対応するノードを指し得る。
特定の実施形態では、ユーザノード202と概念ノード204との間のエッジ206は、概念ノード204に関連付けられた概念に向けて、ユーザノード202に関連付けられたユーザによって行われる特定のアクションまたは活動を表現し得る。限定ではなく例として、図2に例示されるように、ユーザは、概念を「いいね!」する、概念に「在籍した」、概念を「再生した」、「聴いた」、「料理した」、概念で「勤務した」、または概念を「視聴した」可能性があり、それぞれが1つのエッジタイプまたはサブタイプに対応し得る。概念ノード204に対応する概念プロフィールページは、例えば、選択可能な「チェックイン」アイコン(例えばクリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含み得る。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャルネットワーキングシステムは、それぞれのアクションに対応するユーザのアクションに応じて、「お気に入り」エッジまたは「チェックイン」エッジを作り得る。別の例として、限定ではなく、ユーザ(ユーザ「カーラ」)が、特定のアプリケーション(オンライン音楽アプリケーション、SPOTIFY)を使用して特定の歌(「Across the Sea」)を聴くとする。この場合、ソーシャルネットワーキングシステムは、当該ユーザに対応するユーザノード202と、その歌およびアプリケーションに対応する概念ノード204との間に「聴いた」エッジ206および「使用した」エッジを作って(図2に例示されるように)、そのユーザがその歌を聴き、そのアプリケーションを使用したことを指示し得る。さらに、ソーシャルネットワーキングシステムは、歌に対応する概念ノード204とアプリケーションに対応する概念ノード204との間に「再生した」エッジ206を作って(図2に例示されるように)、その特定の歌がその特定のアプリケーションによって再生されたことを指示し得る。この場合、「再生した」エッジ206は、外部のアプリケーション(SPOTIFY)によって外部のオーディオファイル(歌「Across the Sea」)に対して行われたアクションに対応する。本開示は、ユーザノード202と概念ノード204とを接続する特定の属性をもつ特定のエッジ206について記載するが、本開示は、ユーザノード202と概念ノード204とを接続する任意の適切な属性をもつ任意の適切なエッジ206を企図する。さらに、本開示は、単一の関係を表現するユーザノード202と概念ノード204との間のエッジについて記載するが、本開示は、1つまたは複数の関係を表現するユーザノード202と概念ノード204の間のエッジを企図する。限定ではなく例として、エッジ206は、ユーザが特定の概念を好むことおよびその概念を使用したことの両方を表現し得る。あるいは、別のエッジ206は、ユーザノード202と概念ノード204との間の各タイプの関係を(または単一の関係を複数個)表現してもよい(図2でユーザ「エドウィン」のユーザノード202と「SPOTIFY」の概念ノード204との間に例示されるように)。
特定の実施形態では、ソーシャルネットワーキングシステムは、ソーシャルグラフ200中でユーザノード202と概念ノード204との間にエッジ206を作り得る。限定ではなく例として、ある概念プロフィールページを(例えば、ユーザのクライアントシステムにホストされるウェブブラウザまたは特殊目的アプリケーションを使用するなどにより)閲覧しているユーザが、「いいね!」アイコンをクリックまたは選択することにより、概念ノード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内でその企業のユーザノードにリンクされた利用可能な製品ノードを取り出すことにより、ユーザに伝えられ得る。製品ノードについての情報は、参照される製品に関する情報をカプセル化している製品オブジェクトとして、ソーシャルネットワーキングシステムによって操作され得る。
図3Aは、メッセージングボット起動コントロール315を含むメッセージ対話表示310を備えたユーザインターフェース300の一実施形態を例示する。
クライアントデバイス320は、消費者・企業間通信システム100にアクセスするために使用される任意のデバイスに対応し得る。図3Aに例示される実施形態では、クライアントデバイス320はスマートフォンデバイスを模しているが、本明細書に記載される技術は任意タイプのデバイスに使用され得ることが理解されよう。ユーザインターフェース300は、一般に、メッセージングシステム140に関するメッセージスレッドの表示に対応し得る。
メッセージングクライアントは、メッセージングクライアントヘッダ305を表示し得る。メッセージングクライアントヘッダ305は、メッセージスレッドに参加している1人または複数のユーザの名前など、メッセージスレッドのタイトルを含むことができ、ユーザの名前は、実名、ニックネーム、または他の名前情報に従って選択され得る。メッセージングクライアントヘッダ305は、ユーザをメッセージングクライアントの受信ボックスビューに戻すためのコントロールを含み得る。受信ボックスビューコントロールは、未読メッセージを含む最近のメッセージスレッドの数で強化されてもよい。
メッセージスレッドのユーザインターフェース300は、作成コントロール322を含み得る。作成コントロール322の多く、大半、またはほぼすべては、テキスト入力、メディア選択、絵文字選択、カメラの使用、ソーシャル承認アイコン等の、様々なタスクを行うためのインターフェースコントロールへのアクセスおよび使用を可能にし得る。コントロールは、テキストベースのメッセージを作成するためのテキストの入力を可能にする、テキスト入力コントロールを含み得る。コントロールは、ハードウェアコントロールを含み得る。いくつかの実施形態では、コントロールは、タッチ画面に基づくコントロールであり得る。
メッセージスレッドのユーザインターフェース300は、メッセージ対話表示310を備え得る。メッセージ対話表示310は、メッセージスレッド内で交換されるメッセージを備え得る。メッセージ対話表示310は、メッセージスレッドの参加者によって追加的なメッセージがメッセージスレッドに追加されるのに伴い、反復的に更新され得る。メッセージは、ユーザのアバターに関連付けて表示され得る。
メッセージングクライアントおよび/またはメッセージングシステム140は、1つまたは複数のメッセージングボットを選択および構成する際に使用するためのメッセージング内容を検出し得る。抽出されるメッセージング内容は、一般に、単語、句、文、メッセージの連続もしくは交換、またはメッセージングシステム140が潜在的なアクション、オプション、もしくは他の提案に関連付けるメッセージスレッドの他の要素に対応し得る。メッセージングシステム140は、識別したメッセージング内容を使用して、そのメッセージング内容に関係する、提案されるメッセージングボットなどの提案されるサービスを起動し得る。抽出するメッセージング内容は、単語および/または句ならびに様々な提案の間の事前に決定され、事前に割り当てられた関連付けに基づいて決定され得、または自然言語プログラミング技術に基づいて自動的に決定され得る。
メッセージングボットと対話することへの潜在的なユーザの関心を検出することによって、メッセージングボット起動コントロール315の表示を起動し得る。メッセージングクライアントは、提案されるメッセージングボットに対応するものなどの、複数の提案されるサービスを取り出して、複数のトリガされたメッセージングボット起動コントロール315内で表示し得る。いくつかの実施形態では、複数の提案されるサービスは、メッセージングクライアントおよび/またはメッセージングシステム140が関連するコンテクストを検出するのに応答して、自動的に表示され得る。メッセージングボット起動コントロール315は、複数のメッセージングボットオプションを含み得る。メッセージングボット起動コントロールは、特定のサービスに関連付けられた特定のメッセージングボットを含み得る。
メッセージングボット起動コントロール315は、メッセージングボットによって表現されるものなど、サービスに関する提案を含み得る。メッセージングボット起動コントロール315は、提案されるメッセージングボットのランク付けされたリストを備え得る。提案されるメッセージングボットは、各種技術に基づいて、および各種要因に基づいて決定され得る。提案されるメッセージングボットのランク付けは、メッセージングボット起動コントロール315の順序付けで表現され得、ランクが高いメッセージングボットはより目立つように表示され、ランクが低いメッセージングボットはあまり目立たないように表示される。例えば、ランクが低いいくつかのメッセージングボットは、完全にまたは部分的に画面外に置かれ、ユーザがメッセージングボット起動コントロール315を通じてナビゲートした場合にのみ公開される(または完全に公開される)ように配置され得る。
情報は、メッセージスレッドとして具現化されるメッセージング対話の内容、または内容の一部分から抽出され得る。いくつかの場合には、メッセージスレッドとの関わりのうち現在の期間を検出し、その現在の期間にわたるメッセージスレッドを分析するなどにより、メッセージスレッドの最近の部分が使用され得る。メッセージスレッドの最近の部分は、各種技術に従って定義され得る。いくつかの場合には、最近の部分は、事前に定義された長さの時間に従って定義され得、最近の部分は、事前に定義された長さに等しい長さに及び、かつ現在の時間で終了する範囲の時間中に交換されたスレッドの断片である。いくつかの場合には、最近の部分は、メッセージスレッドとの関わりの一時的な解消を示す、十分な長さ(事前に定義され得る)の会話の直近の中断を検出するなどにより、可変の長さに及ぶように決定され得る。例えば、メッセージスレッドの最近の部分は、1時間よりも長い会話の断絶を全く含まない、現在の時間に終了するスレッドの最大範囲であり得る。スレッドの最近の部分を検出するための他の技術が使用され得る。
複数のメッセージングボット起動コントロール315の中からメッセージングボット起動コントロールを選択すると、その特定の選択されたメッセージングボットと対話するためのインターフェースが起動され得る。
いくつかの実施形態では、メッセージスレッドは、複数の参加者がメッセージ対話に関わるマルチユーザメッセージスレッドであり得る。しかし、代替実施形態では、メッセージスレッドはボット要求スレッドであってもよく、ボット要求スレッドでは、様々なメッセージングボットを推奨し、それらにユーザを誘導することができるシステムに、ユーザが直接かつ意図的に関わる。ユーザは、ボットのリストからボット要求スレッドを選択し、ボット要求エンジンと関わって推奨されるボットを受け取り、その後ボット要求スレッド内でそれらのボットと関わることができる。例えば、「今夜食事をしに行きたい?僕は中華料理を考えている。」と尋ねる代わりに、ユーザは、ボット要求スレッド内で「今夜食事をしに行きたいんだけど中華料理を考えている」とサブミットし、それに応答してボット要求システムがユーザにメッセージングボットを推奨する。そして、ユーザ間対話の中で暗黙的な推奨の機会を検出することへの応答ではなく、ユーザによる直接的な照会への応答として、メッセージングボット起動コントロール315が提示され得る。
別の代替実施形態では、メッセージングボットの支援を求める要求が、ユーザ間メッセージスレッド内で直接起動され得る。ボット要求は、ボット提案システムを直接的にアドレス指定することによって行われ得る。ボット提案システムを直接的にアドレス指定することは、各種技術を使用して行われ得る。例えば、ボット提案システムは、ボット提案システムがアドレス指定されていることを指示するテキスト断片をテキストベースの要求の先頭に付けることにより、アドレス指定され得る。例えば、ユーザが「@M今夜食事をしに行きたいんだけど中華料理を考えている」と入力し、「@M」のテキスト断片がボット提案システムを起動させる。代替として、または追加として、ユーザ間メッセージスレッドでボット提案システムをアドレス指定することを可能にするコントロールが、作成コントロール322の一部として提供されてもよい。いくつかの実施形態では、ボット提案システムが直接起動される場合、ボット提案システムの起動、ボット提案システムによる応答(メッセージングボット起動コントロール315もしくは他の応答など)、またはメッセージングボットとの対話は、ボット提案システムおよび任意のボットを起動するクライアントデバイス320のユーザのみに示され得、メッセージングシステム140は、これらの対話を他のクライアントデバイスに提供することを控える。これにより、起動元のユーザと、ボット提案システムと、メッセージングボットとの間のユーザ間メッセージスレッド内に、スレッドにいるどの他の参加者からもプライベートなサイド会話を作り出す。しかし、他の実施形態では、他のクライアントデバイス、およびしたがってそれらのユーザに、そのような対話の一部またはすべてが提供されてもよい。
図3Bは、メッセージングボットメニュー335を含むユーザインターフェース325の一実施形態を例示する。
特定のメッセージングボットのメッセージングボットメニュー335は、そのメッセージングボットのためのメッセージングボット起動コントロールが、クライアントデバイス320のユーザによって選択されるのに応答して表示され得る。メッセージングボットメニュー335は、そのメニューが起動されるメッセージングスレッドに関連付けて表示され得る。
メッセージングボットメニュー335は、特定のメッセージングボットに明確に関連付けられた表示要素であり、そのメニューが起動されたメッセージスレッドのコンテクストの中で、ユーザがメッセージングボットのインターフェースと対話することを可能にする。クライアントデバイス320のユーザは、メッセージングボットメニュー335の中に移動し、メッセージングボットメニュー335と対話してメッセージングボットと対話し、メッセージングボットメニュー335から戻ってメッセージスレッドでのメッセージング会話に再度関わり、メッセージングボットメニュー335の中に戻ってメッセージングボットに再度関わり、異なるメッセージングボットメニュー間を移動し、メッセージスレッドのコンテクストの中で一般には動的にメッセージングボットメニューと対話することにより、進行中のメッセージング会話への接続を保持しながら、メッセージングボットを選択し、そのメッセージングボットと対話し得る。
メッセージングボット起動コントロール330は、メッセージングボットメニュー335に隣接して表示され得る。メッセージングボット起動コントロール330は、メッセージング会話に隣接して表示されるメッセージングボット起動コントロール315と実質的に同様であり得るが、クライアントデバイス320の画面の一番上の部分に移される。移されたメッセージングボット起動コントロール330は、様々なメッセージングボットメニューから選択するためのタブであり得る。そのため、現在選択されていないメッセージングボット起動コントロールを選択すると、メッセージングクライアントが遷移して、現在選択されたメッセージングボット起動コントロールに対応するメッセージングボットメニューを表示させ得る。現在のメッセージングボットメニュー335に関連付けられた特定のメッセージングボット起動コントロールは、別個の視覚的スタイルで表示されて、それにより、そのメッセージングボット起動コントロールに対応するメッセージングボットが、アクティブなメッセージングボットメニュー335を現在有していることを指示し得る。現在アクティブなメッセージングボットメニュー335に対応するコントロールを再度選択すると、メッセージングボットメニュー335が最小化されて、ユーザがメッセージング対話表示310内のメッセージングボット会話のビューに戻ることを可能にし得る。
メッセージングボットメニュー335は、複数のカスタマイズオプション345を含み得る。これらのカスタマイズオプション345は、メッセージングボットメニュー335の一部として提供されたメッセージングボットのためのコントロールによって設定されたメッセージングボットを構成する設定を含む。カスタマイズオプション345は、メッセージスレッドのコンテクストに基づいて、メッセージングボット起動コントロール315の表示を促す特定のメッセージング対話の内容に基づいて、メッセージスレッドおよび/もしくは特定のメッセージング対話についてのユーザ情報に基づいて、ならびに/またはメッセージングボットメニュー335のコンテクストの他の分析に従って、最初に自動的に設定され得る。これらのカスタマイズオプション345は、その後ユーザによって保持されるか、メッセージングボットメニュー335のコントロールを使用して修正され得る。
一般に、メッセージングボットメニュー335は、自動的に設定されるカスタマイズオプション345であれ、またはクライアントデバイス320のユーザによって手動で設定されるものであれ、カスタマイズオプション345に基づいて構成される。いくつかの事例では、メッセージングボットメニュー335は、1つまたは複数のメニュー項目を含み得る。例えば、レストランの推奨を構成、表示、および選択するために設計されたメッセージングボットメニュー335の場合、メニュー項目340は特定のレストランに対応し得る。メニュー項目340は、店名、位置、価格情報、パフォーマンス情報、およびメニュー項目340に関係する他の情報を含み得る。メニュー項目340は、1つまたは複数のコントロールを含み得る。例えば、レストランメニューのためのコントロールは、レストランと、そのレストランについての特定の利用可能な予約時間との両方の選択を可能にし得る。これらの事例では、メニュー項目は、少なくとも部分的にカスタマイズオプション345に基づいて決定される。メニュー項目は、部分的に、メッセージスレッドまたはメッセージスレッドの参加者に関係する情報などの追加的な情報に基づいて決定されてもよい。
図3Cは、マルチユーザ要求コントロール355を含むメッセージングボットメニューを備えたユーザインターフェース350の一実施形態を例示する。
いくつかの場合には、複数のクライアントデバイスの複数のユーザがサービス要求の構成に寄与するように、消費者・企業間サービス110と対話するためのインターフェースが、複数のクライアントデバイスに分散され得る。主ユーザがメッセージングボットとの対話を開始し、そのメッセージングボットと対話するために主インターフェースを使用し得る。しかし、メッセージスレッド内の他のユーザは、主ユーザおよびいる場合には他の副ユーザと一緒にメッセージングボットに関わる機会を与えられ得る。
いくつかの場合には、メッセージングボットのためのインターフェース、または消費者・企業間サービス110を使用してユーザと通信する他のエージェントが、主ユーザがそのエージェントを選択することに基づいて、複数のクライアントデバイスにまたがってインスタンス化され得る。他の場合には、エージェントが、最初に単一のクライアントデバイス上で単一ユーザインターフェースをインスタンス化し、任意選択でまたは単に最終的に、複数のクライアントデバイス上でインスタンス化し得る。インスタンス化元のクライアントデバイスのインターフェースは、マルチユーザインターフェースのための主インターフェースまたは制御インターフェースである、主マルチユーザインターフェースとなり得る。
マルチユーザ要求コントロール355は、副クライアントデバイス上に副ユーザインターフェースをインスタンス化するために使用され得る。副クライアントデバイスは、グループメッセージスレッド内の他の参加者によって現在使用されているデバイスとして識別され得る。マルチユーザ要求コントロール355は、サービス要求を構成するために、1つまたは複数の他のクライアントデバイス上で副ユーザインターフェースのインスタンス化を開始し得る。図の実施形態では、マルチユーザ要求コントロール355は、副クライアントデバイス上にユーザインターフェースをインスタンス化して、副クライアントデバイスのユーザに、要求されるサービスに参加する人の数に自分を含めるべきか否かを指示するように求めている。
図3Dは、副マルチユーザインターフェース365を備えるユーザインターフェース360の一実施形態を例示する。
ユーザインターフェース360は、副クライアントデバイス370上で表示され得る。副クライアントデバイス370は、メッセージングボットへの接触を開始したユーザ以外の、メッセージスレッド内の参加者によって使用されるクライアントデバイスからなり得る。
副クライアントデバイス370向けのユーザインターフェース360は、主クライアントデバイス上の主マルチユーザインターフェースに基づいて副クライアントデバイス370上でインスタンス化される副マルチユーザインターフェース365を含み得る。副マルチユーザインターフェース365は、主マルチユーザインターフェース内で指定された情報を含み得る。例えば、レストラン予約の場合、主マルチユーザインターフェースは、特定のレストラン、日付、および予約の時間を決定することができる。副マルチユーザインターフェース365は、1つまたは複数のマルチユーザコントロールからなるマルチユーザコントロール368を含み得る。副マルチユーザインターフェースのマルチユーザコントロール368は、メッセージスレッドの参加者がサービス要求の構成に寄与することを可能にし得る。例えば、サービス要求を構成しようとしている場合には、1つまたは複数のマルチユーザコントロールが、ユーザが要求対象のサービスに自身を含めたいか否かを登録することを可能にし得る。
メッセージスレッドのユーザインターフェース360は、作成コントロール369を含み得る。作成コントロール369の多く、大半、またはほぼすべては、テキスト入力、メディア選択、絵文字選択、カメラの使用、ソーシャル承認アイコンなど、様々なタスクを行うためのインターフェースコントロールへのアクセスおよび使用を可能にし得る。コントロールは、テキストベースのメッセージを作成するためのテキストの入力を可能にする、テキスト入力コントロールを含み得る。コントロールは、ハードウェアコントロールを含み得る。いくつかの実施形態では、コントロールは、タッチ画面に基づくコントロールであってよい。
図3Eは、マルチユーザ寄与要素395を含む、構成されたサービス要求についてのメッセージングボットメニュー390のユーザインターフェース380の一実施形態を例示する。
メッセージングボットメニュー390は、サービス要求が、サービス要求を許すのに十分に構成されたところまで進行し得る。メッセージングボットメニュー390がこの状態に達すると、サービス要求コントロール385が表示され得る。サービス要求コントロール385は、ユーザがサービスの実施を要求することを可能にする。
構成されたサービス要求についてのメッセージングボットメニュー390は、マルチユーザインターフェースに基づいて構成されたオプションを含み得、構成されたオプションの少なくとも一部分は、1つまたは複数の副マルチユーザインターフェースのユーザによるマルチユーザインターフェースへの参加に基づく。構成されたオプションは、マルチユーザ寄与要素395を含み得、マルチユーザ寄与要素395は、マルチユーザインターフェースに対応する主クライアントデバイス320以外の1つまたは複数の副クライアントデバイス上での、ユーザインターフェース対話を反映する。図の実施形態では、マルチユーザ寄与要素395は、メッセージスレッドの参加者がグループ予約に加わるかどうかに関する情報を副マルチユーザインターフェースが収集した結果を反映している。
図4Aは、メッセージ対話表示410を含むユーザインターフェース400の一実施形態を例示し、管理テキスト415がサービス要求を伝えている。
ユーザがサービス要求コントロール385を選択するか、その他の方法でメッセージングボットにサービスを要求すると、メッセージングボットは、管理テキスト415をメッセージングシステム140に提供し得、管理テキスト415が、構成されたサービスを伝える。管理テキスト415はその後、メッセージング対話表示410の一部として表示するために、メッセージングシステム140によってクライアントデバイス320に提供される。管理テキスト415は、当該ユーザに属する他のクライアントデバイス、およびメッセージスレッドの他の参加者に関連付けられたクライアントデバイスにも配布されてよい。管理テキスト415は、テキスト、画像、コントロール、または任意の他の要素を含み得る。管理テキスト415は、閲覧者に基づいてカスタマイズされ得る。例えば、管理テキストは、あるサービスを要求しているユーザを、そのユーザと、他のユーザとに対して異なるように識別し得る。
図4Bは、メッセージ対話表示435を含むユーザインターフェース425の一実施形態を例示しており、管理テキスト440が、多ユーザインターフェースの副ユーザに合わせてカスタマイズされたサービス要求を伝えている。
管理テキスト440は、副クライアントデバイス370上のメッセージ対話表示435に提供される。管理テキストは、メッセージスレッドの参加者に対応する各クライアントデバイスに合わせてカスタマイズされ得る。副クライアントデバイス720向けの管理テキスト440は、副クライアントデバイス370のユーザがその構成に参加したサービス要求を伝え得る。副クライアントデバイス370向けの管理テキスト440は、副クライアントデバイス370の具体的な寄与を反映し得る。例えば、あるサービスに対する要求の場合、管理テキスト440は、ユーザがそのサービス要求に参加することを選択決定したかどうかを反映し得る。いくつかの実施形態では、サービス要求に参加することを拒否したユーザは管理テキストの受信から除外され、管理テキストは、そのサービス要求に参加することを選択決定したユーザのみに送られる。
図5は、メッセージング対話に基づいてユーザ意図515を判定する消費者・企業間通信システム100の一実施形態を例示する。
メッセージングシステム140は、複数のコンポーネントを備え得る。いくつかの実施形態では、これら複数のコンポーネントは、複数のサーバ間に分散され得る。他の実施形態では、単一のサーバが複数のコンポーネントを実装し得る。いくつかの実施形態では、複数のサーバが単一のサーバデバイスによって実行され得る。他の実施形態では、複数のサーバが複数のサーバデバイスによって実行され得る。いくつかの実施形態では、様々なコンポーネントおよび様々なサーバの複数のインスタンスを実行して、冗長性、向上したスケーリング、および他の利益を提供し得る。同様に、クライアントデバイスが、メッセージングクライアントの一部として複数のコンポーネントを実行してもよい。
クライアントデバイスは、ワイヤレス送信を使用してネットワークトラフィックを交換することにより、他のデバイスと通信し得る。メッセージングトランザクションの交換に含まれるものなどのネットワークトラフィックの交換は、ネットワーク・インターフェース・コントローラ(NIC)を介してネットワークトラフィックを送受信することを含み得る。NICは、クライアントデバイスなどのコンピュータデバイスをコンピュータネットワークに接続するハードウェアコンポーネントを備える。NICは、ソフトウェアアプリケーションがNICにアクセスし、使用することを可能にするソフトウェアネットワークインターフェースに関連付けられ得る。ネットワークトラフィックは、データリンクを通じて送信される信号として、コンピュータネットワークを通じて受信され得る。ネットワークトラフィックは、これらの信号を捕捉し、解釈することによって受信され得る。NICは、コンピュータネットワークを通じてネットワークトラフィックを受信し、そのネットワークトラフィックを、ネットワーク・インターフェース・アプリケーション・プログラミング・インターフェース(API)を使用して、ソフトウェアアプリケーションからアクセス可能なメモリストレージに転送し得る。ネットワーク・インターフェース・コントローラは、ネットワーク通信を通じたメッセージングクライアントおよびメッセージングサーバの相互動作を含む、本明細書に記載される実施形態のネットワーク活動に使用され得る。例えば、クライアントフロントエンドサーバ535にメッセージを送信する、またはそこからメッセージを受信するメッセージングクライアントは、情報の送信または受信用の通信ネットワークにネットワークアクセスするためにネットワーク・インターフェース・コントローラを使用しているものと解釈され得る。
メッセージングクライアントは、ユーザインターフェースコンポーネント523を備え得る。ユーザインターフェースコンポーネント523は、一般に、クライアントデバイスのユーザにユーザインターフェースを表示し、クライアントデバイスのメッセージングクライアントに対するユーザコマンドを受け取るようになされ得る。メッセージングクライアントは、クライアントメッセージングコンポーネント526を備え得る。クライアントメッセージングコンポーネント526は、一般に、クライアントフロントエンドサーバ535との通信を介して、メッセージングクライアントに代わってメッセージング対話を行うようになされ得る。
クライアントフロントエンドサーバ535は、一般に、送り元クライアントデバイス520などのクライアントデバイスに対して、メッセージングシステム140へのネットワークアクセスポイントとして働くようになされ得る。クライアントフロントエンドサーバ535は、メッセージングコンポーネント530を備え得、メッセージングコンポーネント530は、一般に、メッセージングシステム140に関するメッセージングサービスへのネットワークアクセスポイントとして働くようになされ得る。メッセージングコンポーネント530は、クライアントデバイスからメッセージを受信し、そのメッセージをメッセージ待ち行列に追加し得る。
メッセージ待ち行列580は、メッセージングシステム140内で送り元クライアントデバイス520のユーザのユーザアカウントに一意に関連付けられることなどにより、送り元クライアントデバイス520のユーザに明確に関連付けられ得る。メッセージ待ち行列580は、このユーザによって使用されるすべてのメッセージングエンドポイントに使用される単一の待ち行列であり得る。メッセージ待ち行列580は、厳格な線形の順序で更新の表現を含み得る。メッセージ待ち行列580は、各種技術によりデータ単位として編成され得る。メッセージ待ち行列580は、半永続的メモリ、永続的ストレージ、半永続的メモリおよび永続的ストレージの両方、または両者の組み合わせに記憶され得る。メッセージ待ち行列580は、リンクされたリスト、配列を含む各種のデータ構造、ならびに待ち行列を編成するための他の技術により編成され得る。メッセージ待ち行列580は、一般に、更新が自身より先に受信されたどの更新よりも前に待ち行列から除去または取り出されることがない、先入れ先出し(FIFO)型の待ち行列からなり得る。
メッセージングシステム140は、ワーカサーバ545、555、565などの1つまたは複数のワーカサーバを含み得る。一般に、メッセージングシステム140は、様々なタスクに割り当てられ得る複数のワーカサーバを含むことができる。ワーカサーバ545はメッセージ待ち行列監視コンポーネント540を備え得る。メッセージ待ち行列監視コンポーネント540は、メッセージ待ち行列580およびメッセージングシステム140の他のメッセージ待ち行列内で、様々なフラグ、インジケータ、および他の情報に関して、メッセージを含むものなどの更新を監視するようになされる。ワーカサーバ555は対話処理コンポーネント550を備え得、対話処理コンポーネント550は、メッセージング対話の内容に基づくユーザ意図515の生成を管理するように動作する。ワーカサーバ565は自然言語処理コンポーネント560を備え得、自然言語処理(NLP)コンポーネント560は、自然言語処理技術を使用してメッセージング対話を分析することによってメッセージング対話を分析し、メッセージング対話に基づいてユーザ意図515を生成するように動作する。NLPコンポーネント560は、自然言語機械学習技術を使用して自身のNLP動作を向上させるように動作する自然言語機械学習コンポーネントを備え得る。
対話処理コンポーネント550は、NLPコンポーネント560とのインターフェースを取り得る。NLPコンポーネント560は、消費者・企業間通信システム100に関する自然言語処理を行う。自然言語処理の実行は、メッセージング対話の意図を判定するためのメッセージング対話の内容の分析を含み得る。意図は、メッセージング対話が求めようとしている目標を表す。例えば、どこに食事をしに行くかを話し合っている人たちは、「ダイニング」、「食べる」、「レストラン」、または他の関係する語である意図を有し得る。対話処理コンポーネント550は、1つまたは複数のメッセージを含むメッセージング対話の内容をNLPコンポーネント560に提供し得、NLPコンポーネント560は、その対話に対して自身が検出するユーザ意図515または複数のユーザ意図を返す。NLPコンポーネント560は、知られている自然言語処理(NLP)および機械学習(ML)技術を使用して実装され得る。
メッセージ待ち行列監視コンポーネント540は、メッセージング対話を監視する。このメッセージング対話は、メッセージングシステム140を介して交換される。このメッセージング対話は、送り元クライアントデバイス520および/または受け取り先クライアントデバイス590などの、少なくとも1つのクライアントデバイスに関与する。メッセージ510は、送り元クライアントデバイス520上のメッセージングクライアントのクライアントメッセージングコンポーネント526から送られ得る。このメッセージ510はメッセージスレッドに関連付けられ、メッセージスレッドは、送り元クライアントデバイス520のユーザを含む2人以上の参加者に関与する。このメッセージ510は、メッセージスレッドのメッセージング対話の一部分を含む。
メッセージ510は、クライアントフロントエンドサーバ535のメッセージングコンポーネント530によって受信され、送り元に関連付けられたメッセージ待ち行列580に追加される。メッセージ510は、メッセージ待ち行列580を使用して受け取り先クライアントデバイス590に配布される。メッセージ待ち行列監視コンポーネント540もメッセージ510を受信し、メッセージ510を対話処理コンポーネント550に提供する。
対話処理コンポーネント550は、メッセージ510をNLPコンポーネント560に提供し、それに応答してユーザ意図515を受け取る。メッセージ510は、複数のメッセージの保管場所の一部としてのNLPコンポーネント560に提供され、それによりメッセージング対話全体の分析を可能にし得る。そのため、対話処理コンポーネント550は、メッセージング対話の少なくとも一部分をNLPコンポーネント560にサブミットし、メッセージング対話の少なくとも一部分をNLPコンポーネント560にサブミットするのに応答してNLPコンポーネント560からユーザ意図515を受け取ることにより、メッセージング対話に関するユーザ意図を判定する。したがって、対話処理コンポーネント550は、NLPコンポーネント560を使用することによってメッセージング対話に関するユーザ意図515を検出し得る。
図6は、ユーザ意図515に基づいてメッセージングボットオプション構成を判定する消費者・企業間通信システム100の一実施形態を例示する。
いくつかの実施形態では、消費者・企業間通信システム100は、消費者・企業間通信システム100のためのメッセージングボットサービスへのアクセスポイントとして働くボット管理コンポーネント660を含み得る。ボット管理コンポーネント660は、メッセージングシステム140のサーバと、1つまたは複数の内部および/または外部のボット実行サーバとの間の仲介として働き得る。ボット管理コンポーネント660は、一般にはメッセージングボットシステムにアクセス可能なフレームワークを提供するようになされるボットフレームワークを備え得る。ボット管理コンポーネント660は、図5を参照して説明したワーカサーバ545、555、565と実質的に同様であるワーカサーバ665によって実行され得る。
いくつかの場合には、メッセージングボットは、ボットに関連付けられたサービスによって運営される外部のボットサーバなど、消費者・企業間通信システム100の外部にあるサーバによって実行され得る。ボット管理コンポーネント660は、メッセージングボットに関連付けられたサービスのための外部のボットサーバを決定し得る。ボット管理コンポーネント660は、メッセージングボットに関連付けられた外部のボットサーバにメッセージを送ることにより、メッセージングボットにメッセージをサブミットし得る。いくつかの実施形態では、メッセージをサブミットすることは、メッセージ内容を抽出し、ボットサーバ対話のアプリケーション・プログラミング・インターフェース(API)を使用してそのメッセージ内容を外部のボットサーバに送信することを含み得る。メッセージングボットからのボットメッセージも同様に、外部のボットサーバからボット管理コンポーネント660によって受信され得る。
他の場合には、メッセージングボットは、消費者・企業間通信システム100のサーバによって実行され得る。ボット管理コンポーネント660は、メッセージングボットに関連付けられたサービスのためのホストされたボットサーバを決定し得る。ホストされたボットサーバは、消費者・企業間通信システム100の提供者によって維持されるボットサーバからなり得る。ボット管理コンポーネント660は、メッセージングボットに関連付けられたホストされたボットサーバにメッセージを送ることにより、メッセージングボットにメッセージをサブミットし、ホストされたボットサーバからメッセージを受信することにより、メッセージングボットからのメッセージを受信し得る。
ボット管理コンポーネント660は、対話処理コンポーネント550からユーザ意図515を受け取り、ユーザ意図515に基づいてクライアントデバイスのためのメッセージングボットオプション構成610を決定する。メッセージングボットオプション構成610は、1つまたは複数のクライアントデバイスを、1つまたは複数のクライアントデバイスの1人または複数のユーザが1つまたは複数のメッセージングボットと関わることを可能にするインターフェースコントロールで構成する。
ボット管理コンポーネント660はその後、メッセージ510が送り元クライアントデバイス520によって送られることによって起こるメッセージング対話のコンテクストの変化に応答して、送り元クライアントデバイス520にメッセージングボットオプション構成610を送る。メッセージングボットオプション構成610を送り元クライアントデバイス520に送ることは、メッセージングボットオプション構成610を、メッセージング対話が現在行われているメッセージスレッドに関連付けられたメッセージ待ち行列580などの、メッセージ待ち行列580に追加することを含み得る。メッセージングボットオプション構成はその後、サーバメッセージングコンポーネント530がメッセージングボットオプション構成610をメッセージ待ち行列580から取り出し、クライアントメッセージングコンポーネント526に送付することにより、送り元クライアントデバイス520に配布される。メッセージングボットオプション構成610は、メッセージスレッド内のあらゆる参加者に属するあらゆるクライアントデバイスなど、メッセージング対話に関与するあらゆるユーザおよびクライアントデバイスに配布され得る。そのため、メッセージ510の受け取り先クライアントデバイス590も、メッセージ510に応答して生成されたメッセージングボットオプション構成610を受信し得る。いくつかの実施形態では、メッセージングボットオプション構成610は、あるメッセージングボット対話を開始した主クライアントと、メッセージスレッド内に存在するが、メッセージングボット対話を開始したのではない1つまたは複数の副クライアントとに対して、別個に構成され得る。
メッセージング対話は、複数の交換されるメッセージを含む。この複数の交換されるメッセージは、メッセージ対話の直近のメッセージ510を含む。メッセージングコンポーネント530を介してクライアントデバイスに送られる、直近のメッセージ510に関連付けられたメッセージパッケージは、メッセージングボットオプション構成610を送付するために使用され得る。送り元クライアントデバイス510に送られるメッセージパッケージは、メッセージングシステム140によりメッセージ510の受信を確認するために使用され得るか、1つまたは複数の受け取り先ユーザへのメッセージ510の送付を報告するために使用され得るか、および/または受け取り先ユーザがメッセージ510を見たことを報告するために使用され得る。受け取り先クライアントデバイス590に送られるメッセージパッケージは、受け取り先クライアントデバイス590へのメッセージ510の最初の送付などの場合に、メッセージ510の両方を含み得る。いずれの場合も、メッセージパッケージは、追加的にメッセージングボットオプション構成610を含み得る。
一般に、メッセージ510は、メッセージ510を送るために使用されるクライアントデバイスを含む、あるメッセージスレッドに関係するあらゆるクライアントデバイスに送られ得る。このメッセージ510は、メッセージ510を送付するために使用されるパッケージ中で、メッセージングボットオプション構成610によって強化され得る。メッセージングボットオプション構成610は、メッセージスレッドを表示する際のメッセージングクライアントのメッセージングインターフェースを、メッセージングボットとの対話を可能にするコントロールで構成する。したがって、ボット管理コンポーネント660は、クライアントデバイスにメッセージパッケージを送るように動作し、メッセージパッケージは直近のメッセージ510に関連付けられており、メッセージパッケージはメッセージングボットオプション構成610を含む。このメッセージパッケージは、クライアントデバイスを直近のメッセージ510で更新する。いくつかの場合には、この直近のメッセージ510は、メッセージパッケージを受信するクライアントデバイスとは異なるクライアントデバイスから受信される。いくつかの場合には、メッセージパッケージ510は、クライアントデバイスからの直近のメッセージを受信したことを送信側に通知し得る。
一部の事例では、メッセージングボットオプション構成610は、メッセージングボットに関連付けられたメッセージングボットメニューであり得る。メッセージングボットメニューは、ユーザ意図515に基づいてカスタマイズされる。メッセージングボットメニューは、複数のユーザカスタマイズ可能なオプションから構成され得る。ユーザ意図に基づいてメッセージングボットメニューをカスタマイズすることは、ユーザカスタマイズ可能なオプションの1つまたは複数をユーザ意図に基づいて事前に埋めることから構成され得る。メッセージングボットメニューは、メッセージングボットオプション構成をクライアントデバイスに提供する後段段階または第2段階を備えることができ、第1段階は、メッセージングボットオプション構成であり、第2段階は、メッセージングボット起動コントロールの作動に応答して提供されるカスタマイズされたメッセージングボットメニューである。
一部の事例では、メッセージングボットオプション構成610は、複数のメッセージングボット起動コントロールから構成され得る。各メッセージングボット起動コントロールは、異なるメッセージングボットに関連付けられる。この複数のメッセージングボット起動コントロールは、ユーザ意図515に基づいて選択される。ユーザ意図515は、ユーザによって表された目標またはメッセージング対話の主題を反映し得る。様々なメッセージングボットがこのユーザ意図515に関連付けられ得る。例えば、メッセージングボットには、消費者・企業間通信システム100への登録時に1つまたは複数のユーザ意図が割り当てられ得る。ユーザ意図515に関連付けられた複数のメッセージングボットが決定され、クライアントデバイスに提供される。一部の事例では、ユーザコンテクストに基づいて複数のメッセージングボット起動コントロールが追加的に選択され得る。ユーザコンテクストは、制限なしに、ユーザの位置およびローカルユーザ時間の1つまたは複数から構成され得る。複数のメッセージングボット起動コントロールは、ユーザプロフィールに記憶されたユーザサービス嗜好情報に基づくなど、ユーザプロフィールに基づいて追加的に選択され得る。
メッセージングボット起動コントロールを含むメッセージングボットオプション構成610の送付後、クライアントデバイスのユーザは、メッセージングボット起動コントロールの1つを選択し得る。そして、メッセージングコンポーネント550は、クライアントデバイスから、複数のメッセージングボット起動コントロールのうち選択されたメッセージングボット起動コントロールのユーザメッセージングボット選択を受信し得る。選択されたメッセージングボット起動コントロールは、選択されたメッセージングボットに関連付けられる。ユーザメッセージングボット選択はボット管理コンポーネント660に渡され、ボット管理コンポーネント660は、その後それに応答してメッセージングボットインターフェースをクライアントデバイスに送る。このメッセージングボットインターフェースは、一部の事例ではメッセージングボットメニューを備え得る。
メッセージングボット選択を処理するために、ボット管理コンポーネント660は、選択されたメッセージングボットに関連付けられたボットサーバに、メッセージングボット起動メッセージを送る。メッセージングボット起動メッセージは、メッセージングボットがユーザ意図515に従って自身を構成するのを可能にするためにユーザ意図515を含んでいる。一部の事例では、ボットサーバは、消費者・企業間通信システム100によってホストされ得る。他の事例では、ボットサーバは、メッセージングボットの開発者などによって、外部でホストされ得る。ボット管理コンポーネント660はその後、メッセージングボット起動メッセージに応答してボットサーバからメッセージングボットインターフェース仕様を受信し、このメッセージングボットインターフェースはメッセージングボットインターフェース仕様に基づく。
メッセージングコンポーネント530は、複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化し得る。インスタンス化することは、多ユーザインターフェースの少なくとも一部分を複数のクライアントデバイスの各々に表示することを意味する。それに応答して、複数のクライアントデバイス各々のメッセージングクライアントは、多ユーザインターフェースの少なくとも一部分を表示する。メッセージングコンポーネントは、複数のクライアントデバイスのうちの第1のクライアントデバイスからユーザインターフェース対話を受信し、ユーザインターフェース対話に基づいて複数のクライアントデバイス上の多ユーザインターフェースを更新する。メッセージングコンポーネント530は、複数のクライアントデバイスのうちの開始元クライアントデバイスから多ユーザアプリケーションの開始を受信し、その多ユーザアプリケーションの開始に応答して複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化し得る。
多ユーザアプリケーションの開始は、メッセージングシステムに関するメッセージスレッドに関連付けられ得る。メッセージスレッドは、複数の参加者ユーザアカウントに関連付けられ得、複数の参加者ユーザアカウントは複数のクライアントデバイスに関連付けられている。多ユーザインターフェースは、複数の参加者ユーザアカウントが、メッセージスレッド内の複数の参加者ユーザアカウントに対応する複数のクライアントデバイスに関連付けられていることに基づいて、複数のクライアントデバイス上でインスタンス化される。
メッセージングコンポーネント530は、複数の参加者ユーザアカウントとメッセージスレッドとの間の関連付けに基づいてユーザインターフェース更新オブジェクトを配布することにより、複数のクライアントデバイス上の多ユーザインターフェースを更新し得る。ユーザインターフェース更新オブジェクトは、メッセージ待ち行列580を使用して配布され得、オブジェクトは、複数のクライアントデバイスに配布するために待ち行列に入れられる。
開始元クライアントデバイスは、複数の参加者ユーザアカウントのうち開始元ユーザアカウントに関連付けられ得る。開始元ユーザアカウントは、ボットと対話するための主アカウントとして使用され得、要求されるサービスは、開始元ユーザアカウントからの要求として要求される。メッセージングコンポーネント530は、多ユーザインターフェースを介して、複数の参加者ユーザアカウントからの入力を含むサービス要求を受信することができ、そのサービス要求をメッセージングボットにサブミットし得る。サービス要求は、開始元ユーザアカウントに関連付けられているものとして開始元ユーザアカウントによってサブミットされる。サービス要求は、開始元ユーザアカウントで発生したものとしてメッセージングボットに送られる。
複数の参加者ユーザアカウントは、開始元ユーザアカウントと、開始元ユーザアカウント以外の1つまたは複数の寄与者ユーザアカウントとを含み得る。サービス要求を含む入力は、開始元ユーザアカウントからのグループサービス構成と、1つまたは複数の寄与者ユーザアカウントからの1つまたは複数の個人サービス構成とを含み得る。例えば、各参加ユーザは、自身が受信したいと思うサービスの特定部分を指示し得る。例えば、参加ユーザは、料理の注文、輸送の注文、または他のサービスの注文を選択し得る。そのため、1つまたは複数の個人サービス構成は、1つまたは複数のオプション選択を含み得る。あるいは、1つまたは複数の個人サービス構成は、1つまたは複数のサービス要求参加確認を含み得、そのため、要求されるサービスへの参加者数は、1つまたは複数のサービス要求参加確認に基づいて決定される。
関連費用を伴うサービス要求を生成するために、多ユーザアプリケーションが使用され得る。いくつかの場合には、メッセージングコンポーネント530が、開始元ユーザアカウントから費用分担要求を受信し、その費用分担要求を1つまたは複数の寄与者ユーザアカウントに送り得る。費用分担要求は、メッセージ待ち行列580を介して送られ得る。費用分担要求は、1つまたは複数の寄与者ユーザアカウントからの金銭の転送を開始するように動作し得る。一部の事例では、金銭の転送は、開始元ユーザアカウントに払い戻しをするために使用され得る。あるいは、1つまたは複数の参加者ユーザアカウントからの金銭の転送は、要求されるサービスの支払いのためにプールしておいてもよい。
図7は、ユーザ情報交換730およびボット情報交換795に基づいてメッセージングボットオプション構成610を決定する消費者・企業間通信システム100の一実施形態を例示する。
ユーザ・ボット間会話は、ボット管理コンポーネント660によって仲介され得る。ボット管理コンポーネント660は、メッセージングシステム140のメッセージングサーバに結合され得る。メッセージングサーバは、ボット管理コンポーネント660とユーザクライアント720との間のメッセージの送受信を行い得る。メッセージングサーバが、ボット管理コンポーネント660とボットアプリケーション790との間の情報の送受信を行い得、または企業ポータル160などのボット・アプリケーション・フロントエンドが使用され得る。
ユーザクライアント720は、メッセージングクライアント、ボットアプリケーション790もしくは複数のボット190に関する複数のボットアプリケーションにアクセスするための専用クライアント、またはメッセージング機能性を含む任意の他のクライアントからなり得る。ユーザクライアント720は、クライアントデバイスで実行され得る。ユーザクライアント720は、クライアント通信コンポーネント740を使用して、ボット管理コンポーネント660とのユーザ情報交換730に関わり得る。クライアント通信コンポーネント740は、ボット管理コンポーネント660へのクライアントフロントエンドを提供することができ、これは、メッセージングシステム140によるメッセージの送信によって仲介され得る。ユーザ情報交換730は、ユーザクライアント720からボット管理コンポーネント660にユーザによって作成されたメッセージを送ることと、ボット管理コンポーネント660からユーザクライアント720にボットメッセージを送ることを含み得る。ユーザ情報交換730は、ユーザメッセージに加えて追加的なユーザ情報をさらに含んでよく、追加的なユーザ情報は、制限なしに、1人または複数のユーザのソーシャルネットワーキング情報、1人または複数のユーザのボット対話履歴情報、または他のユーザ情報などである。
ボットアプリケーション790は、開発者コンピュータシステムで実行される、または消費者・企業間通信システム100によってホストされるものなどの、ソフトウェアプログラムを備え得る。ボットアプリケーション790は、ボット・アプリケーション・インターフェース・コンポーネント780を介して、ボット管理コンポーネント660とのボット情報交換795に関わり得る。ボット・アプリケーション・インターフェース・コンポーネント780は、ボット管理コンポーネント660および/またはボットアプリケーションのためのメッセージングシステムへのフロントエンドとして働き得る。ボット情報交換795は、ボット管理コンポーネント660への実例会話のサブミットと、ボットアプリケーション790との間のボット・アプリケーション・インターフェース・コンポーネント780によるボットAPI呼び出しの実行とを含み得る。ボット情報交換795は、ボット管理コンポーネント660へのボット能力カタログのサブミット、および/またはユーザに提案するボットの選択に関する他の情報交換を含み得る。
ボット・アプリケーション・インターフェース・コンポーネント780は、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログ770を受信する。ボットサービスシステムは、メッセージングシステム140の一コンポーネントを構成し得る。特定のボットアプリケーション790のボット能力カタログは、そのボットアプリケーション790との間のボット情報交換790の少なくとも一部として受信され得る。ボット・アプリケーション・インターフェース・コンポーネント780は、ボット能力カタログ770を、ボット各々についてのボット情報交換795の一部として対話処理コンポーネント760に提供する。
複数のボット能力カタログ770の各々は、関連付けられたボットについてボット能力を自然言語で表す。特定のサービスまたはサービスのセットを提供するために、特定のボットが構築される。これらのサービスは、英語、スペイン語、または任意の他の言語などの自然言語で表され得る。これらのサービスは、ボットがユーザにどのようなサービスを提供できるのかを、自然言語を使用して人間が読める言葉で記述し得る。人間が読める様々なボット能力記述が使用され得る。例えば、開発者が、「このボットはサンフランシスコ地域で料理の配達を探し、注文するのを助けることができます」という文で料理配達注文ボットを記述し得る。複数のボット能力カタログ770の1つまたは複数が、1つまたは複数の実例ユーザプロンプト内でボット能力を表し得る。実例ユーザプロンプトは、ボットをユーザに提案するなど、そのボットとの対話を促すべきと開発者が指示するユーザ発言、ユーザ対話、または他のユーザ挙動の例である。例えば、実例ユーザプロンプトは、文章例に例示されるように、「何か注文するのはどう?」という人間が読める自然言語文であり得る。実例文に例示されるように、実例ユーザプロンプトは、ユーザ間交換の一部分を構成し得、それにより、ユーザは、1人または複数の他のユーザとの会話の自然な流れに同伴するボットを提案され得る。
ボット・アプリケーション・インターフェース・コンポーネント780は、開発者ボット構成インターフェースを介して、複数のボット能力カタログ770のうちの1つまたは複数のボット能力カタログを受信し得る。そのため、ボット能力の自然言語描写は、開発者が書いたボット能力の記述であり得る。さらに、開発者が書いたボット能力の記述は、開発者が書いた実例ユーザプロンプトであり得る。いくつかの場合には、開発者は、ボットとのユーザ対話のログを受け取り得る。そして、開発者は、ユーザプロンプトを、そのボットとの対話を促すユーザ発言の例として今後使用されるべき実例ユーザプロンプトとしてマークし得る。そのため、少なくとも一部のボット能力記述は、開発者によって承認され、ユーザによって生成された実例ユーザプロンプトであり得る。いくつかの場合には、開発者が、ユーザによって生成されたプロンプトを、ユーザによって生成されたそのプロンプトをボットに対して実例ユーザプロンプトとして使用する前に編集し得る。
クライアント通信コンポーネント740は、ユーザクライアントデバイスからユーザサービスプロンプトを受信する。ユーザサービスプロンプトは、ユーザにボットを提案することが適当であり得ることをそのユーザとの関連で知らせる、任意の指示である。ユーザサービスプロンプトは自然言語で表され得る。この自然言語は、書かれたテキスト、話し言葉、視覚的な仕草もしくは身ぶり(例えば手話)、または自然言語の任意の他の使用を含み得る。いくつかの場合には、ユーザプロンプトは、ユーザクライアントデバイス上のメッセージングクライアントを介して受信され得る。ユーザプロンプトは、2人以上のユーザ間の対話の一部分を含み得る。この対話は、メッセージングクライアントを使用して行われるメッセージング対話を含み得る。
いくつかの場合には、ユーザプロンプトは、ボット対話結果を含み得る。ボット対話結果は、1人または複数のユーザと1つまたは複数のボットとの間の対話の結果である。例えば、ユーザがボットを介してレストランの予約をすることは、ボット対話結果である。ボット対話結果は、ボットとの対話のつながりを促進するために、ユーザプロンプトとして認識され得る。例えば、ユーザは、面会の約束、予約、または特定の位置に行く他の計画を行ったというボット対話結果に応答して、輸送サービスのボットを提案され得る。例えば、ボットを介してレストランの予約が行われるのに応答して、ユーザは、ユーザによる一切の他のユーザアクション(輸送への具体的な関心を表すなど)を行うことなく、自動車同乗ボットを提案され得る。
対話処理コンポーネント760は、ユーザサービスプロンプトを複数のボット能力カタログ770と照合することにより、複数のボットのうち1つまたは複数の選択されたボットを決定する。いくつかの場合には、消費者・企業間システム100は、可能な場合には、ユーザにオプションを提供するために複数のボットを提案するように構成され得る。そのため、対話処理コンポーネント760は、複数のボットのうち2つ以上の選択されたボットを決定してもよい。
クライアント通信コンポーネント740はその後、ユーザ情報交換730の一部としてユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、1つまたは複数の選択されたボットをユーザクライアントデバイスに対して識別する。1つまたは複数の選択されたボットは、ユーザプロンプトを検出するために使用された、ユーザクライアントデバイス上の同じメッセージングクライアントに対して識別され得る。
対話処理コンポーネント760は、NLPコンポーネント560を使用して、自然言語のユーザプロンプトを自然言語のボット能力と照合する。対話処理コンポーネント760は、複数のボット能力カタログ770をNLPコンポーネント560にサブミットし、それに対してNLPコンポーネント560からボット能力テーブル710を受け取る。対話処理コンポーネント760は、NLPコンポーネント560にユーザプロンプトをサブミットし、それに対してNLPコンポーネント560からユーザ意図を受け取る。そして、対話処理コンポーネント760は、ユーザ意図をボット能力テーブルと比較することにより、1つまたは複数の選択されたボットを決定する。
この比較は、推測される自然言語描写の意味を抽象化された数値形態で表現する数値ベクトルを使用して行われ得る。ボット能力テーブル710は、複数のボット能力カタログを複数のボット能力ベクトルとして表現し得る。複数のボット能力ベクトルは、自然言語のボット能力を、抽象化された数値形態に符号化する。いくつかの実施形態では、各ボットは、単一のボット能力ベクトルによって表現され得、そのため、複数の自然言語ボット能力描写でさえも組み合わせて単一の数値ベクトルとされる。しかし、他の実施形態では、ボット能力テーブル710内で複数のボット能力描写(例えば複数の実例ユーザプロンプト)の各々に対して別個のベクトルを有することなどにより、ボットが複数のベクトルによって表現され得る。自然言語のボット能力から非自然言語のボット能力ベクトルへの変形は、自然言語・ベクトル変換技術を使用してNLPコンポーネント560によって行われる。
同様に、ユーザ意図は、ユーザプロンプトをユーザ意図ベクトルとして表現し得る。自然言語のユーザプロンプトから非自然言語の数値ベクトルへの変形は、自然言語・ベクトル変換技術を使用してNLPコンポーネント560によって行われる。
したがって、ユーザ意図をボット能力テーブル710と比較することは、ユーザ意図ベクトルに基づいて複数のボット能力ベクトルの類似度検索を行うことを含み得る。対話処理コンポーネント760は、ベクトル化されたユーザ意図を検索語として使用してボット能力テーブル710を検索し得る。類似度検索は、コサイン類似度比較に基づき得る。ボット能力テーブル710は、効率的なコサイン類似度比較を可能にするように編成され得、それにより、直接のコサイン類似度計算が複数のボット能力ベクトルのすべてとユーザ意図ベクトルとの間で行われることなく、複数のボット能力ベクトルが検索される。対話処理コンポーネント760は、1つまたは複数のボットについての1つまたは複数のボット能力ベクトルがユーザ意図ベクトルと類似すると類似検索で判定することに基づいて、1つまたは複数のボットを選択する。
対話処理コンポーネント760は、ユーザ意図ベクトルとの類似度が最も高いボット能力ベクトルをもつ、事前に定義された数のボットを選択することにより、事前に定義された数のボットを選択し得る。あるいは、対話処理コンポーネント760は、ユーザ意図ベクトルとの事前に定義された類似度閾値を上回るボット能力ベクトルをもつボットを選択することにより、ボットのうち選抜されたものを選択してもよい。これらの技術は、組み合わせて使用されてもよく、例えば、ユーザ意図ベクトルとの事前に定義された類似度閾値を上回るボット能力ベクトルをもつボットを、事前に定義された数のボットを超えないように選択し、事前に定義された数によって許されるよりも多くのボットが、事前に定義された類似度閾値を上回る場合は、ユーザ意図との類似度が最も高い事前に定義された数のボットが選択されるようにする。そのため、選択されたボットは、最大で事前に定義された数のボットまでの、事前に定義された類似度閾値を上回るボットであり得る。選択されたボットは、クライアントデバイスで表示するために類似度に従ってランク付けされ得、類似度がより高いボットは、類似度がより低いボットよりも高くランク付けされる。
いくつかの実施形態では、選択されたボットをユーザ固有の情報に基づいてフィルタリングして、特定のユーザに対するボットの選択およびランク付けを向上させ得る。そのため、対話処理コンポーネント760は、ボット関連度に基づいて2つ以上の選択されたボットのうち2つ以上のフィルタリングされたボットを決定し、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、2つ以上のフィルタリングされたボットをユーザクライアントデバイスに対して識別し得る。ボット関連度は、特定のユーザへの特定のボットの予測される関連度に対応する。選択されたボットを、特定のユーザへの、またはメッセージスレッド内の複数のユーザへのボット関連度に関してフィルタリングすることで、消費者・企業間通信システム100のユーザベース全体にわたって均一に推奨を行う場合と比べて、1人または複数のユーザの特定の嗜好に対処し、それにより特定のユーザ個々の経験を向上させる。
対話処理コンポーネント760は、2つ以上の提案されるボットのボット関連度を決定して、1つまたは複数のフィルタリングされたボットを決定する。ボット関連度の決定は、制限なしに、ユーザプロフィール情報、ユーザ挙動情報、ユーザ位置情報、ユーザメッセージングコンテクスト情報、およびユーザボット履歴情報などの、1つまたは複数の信号に基づき得る。クライアント通信コンポーネント740は、信号を分析する際に使用するユーザ情報を取り出し、そのユーザ情報をユーザ情報交換730の一部として提供し得る。
ユーザプロフィール情報は、各種の異なるタイプの情報を含み得る。ユーザプロフィール情報は、人口統計学的情報を含み得る。ユーザプロフィール情報は、関係情報を含み得る。ユーザプロフィール情報は、教育および/または職業の情報を含み得る。ユーザプロフィール情報は、ユーザの好きなメディア、サービス、または他の嗜好を指示する、ユーザによって生成された情報などの、嗜好情報を含み得る。そのため、ユーザプロフィール情報は、ユーザのユーザプロフィールにユーザサービス嗜好情報を含み得る。
ボットは、消費者・企業間通信システム100がボットをランク付けするのを支援するために、ボットのランク付けに関連するボットランク付け情報を消費者・企業間通信システム100に提供することを可能にされ得る。ボットには、ユーザサービスプロンプト、および/または1つもしくは複数のボットの提供を促す1人もしくは複数のユーザを記述する情報が提供され得る。ボットは、この情報を分析し、ユーザサービスプロンプトに応答するため、および/または1人もしくは複数のユーザにサービスを提供するためにそのボットが適当であるかどうかの自身の分析を指示するボットランク付け情報を提供することを許される。そのボットを高くランク付けすべきであることを指示するボットランク付け情報を提供するものの、その後ユーザによる評判がよくないボットにペナルティを課すことにより、ボットは、ありのままの正確な査定を提供するように促進され得る。一般に、ユーザによる当該ボットの評判に確実に対応しているボットランク付け情報を提供するボットに報酬を与え、ユーザによる当該ボットの評判に良好に対応していないボットランク付け情報を提供するボットを罰することにより、ボットは、ありのままの正確な査定を提供するように促進され得る。ユーザによるボットの評判は、これらに限定されないが、使用するために選択されているボット、サービスを受けるためにボットを使用しているユーザ、ボットから受けたサービスのユーザ満足度、またはボット体験の何らかの他の要素など、提案されるボットに対するユーザ反応の1つまたは複数の指標を含み得る。
対話処理コンポーネント760は、2つ以上のフィルタリングされたボットのボットランク付け情報を照会し、ボットランク付け情報に基づいて2つ以上のフィルタリングされたボットをランク付けする。フィルタリングされたボットのランク付けは、フィルタリングされたボットのどれを1人もしくは複数のユーザに対して表示するか、および/または、1つもしくは複数のフィルタリングされたボットを1人もしくは複数のユーザに表示する順序を決定し得る。ランク付けボット情報は、フィルタリングされたボットのランク付け順序の決定に寄与し得る。最もランクの高いフィルタリングされたボットのグループが、1つまたは複数のクライアントデバイスに表示のために提供され、提供されたフィルタリングされたボットのランク付け順序に基づいて、表示のために順序付けされ得る。ボットランク付け情報は、ボット情報交換795の少なくとも一部分を構成し得る。ボットランク付け情報は、ボットによって生成された数値スコアを含み得、数値スコアは、数値スコアを含む複数の要因の数学的組み合わせを通じて各ボットのランク付け番号に寄与する。
いくつかの場合には、ボットは、ボットランク付け情報をボットが生成するのを支援するために、ユーザのユーザ情報を提供され得る。2つ以上のフィルタリングされたボットのボットランク付け情報を照会することは、ユーザアカウントにユーザ情報を提供することを含み得、ユーザサービスプロンプトはボットサービスシステムのユーザアカウントに関連付けられる。ユーザ情報は、人口統計学的情報およびユーザ関心事情報などを含み得る、ユーザプロフィール情報を含み得る。ユーザ情報は、ユーザサービス嗜好情報を含み得る。ユーザ情報は位置情報を含み得、位置情報は特に、料理の配達や輸送などのための物理的コンポーネントを含むサービスに関係するボットに有用であり得る。
ユーザ情報は、消費者・企業間通信システム100によって安全に保たれ、そのため、情報を共有する前にユーザ情報を共有するためのユーザからの許可が必要とされ得る。そのため、対話処理コンポーネント760は、2つ以上のフィルタリングされたボットのうちのボットについてのユーザ情報共有設定を決定し、そのユーザ情報共有設定と、そのボットをフィルタリングされたボットとして決定することとに基づいて、ユーザアカウントにユーザ情報共有許可を要求し得る。ユーザ情報共有許可は、ユーザアカウントに関連付けられたユーザ情報を第三者と共有するための許可である。そのような許可は、情報が第三者と共有される前に必要とされ得る。いくつかの実施形態では、第三者と情報を共有する許可が、消費者・企業間通信システム100を使用してすべてのボットについて要求され、受け取られ、一般には提案されるボットを決定するときに特定の情報を共有する許可が付与される。あるいは、いくつかの実施形態では、第三者と情報を共有する許可は、特定のボットについて要求され、受け取られてもよく、そのため、ユーザ情報を共有する許可は、その特定のボットに関してユーザに要求され、受け取られた許可はその特定のボットだけについてのものとなる。そのため、そのような実施形態では、ユーザは、他のボットと情報を共有するためのさらに他の許可を要求される可能性がある。
ある場合には、フィルタリングされたボットは、アカウントに基づくボットを含み得る。アカウントに基づくボットは、サービスを受けるためのそのボットの使用が、消費者・企業間通信システム100に使用されるユーザアカウントに加えてユーザアカウントを使用するボットである。例えば、ユーザは、メッセージングシステム140のメッセージングアカウントを有し、さらに自動車同乗ボットに使用するための別個のユーザアカウントを有し得る。これらのアカウントは、消費者・企業間通信システム100との間のサービスの使用を容易にするために互いとリンクされ得るが、各アカウントは、それぞれ別個のシステムへのユーザの別個の登録を表現する。この場合、アカウントに基づくボットに提供されるユーザ情報は、アカウントに基づくボットに関連付けられたサービスのためのアカウント情報などの、アカウントに基づくボットのためのアカウント情報を含み得る。例えば、自動車同乗サービスに関連付けられた自動車同乗ボットは、ユーザクライアントデバイス上で自動車同乗アプリケーションによっても表現され得る。
ボットサービスシステムは、ユーザ対話をエージェントとつなぐように動作して、あるエージェントとの1つの対話が、追加的なエージェントにつながり得る追加的な提案を生じさせるようにし、このパターンが可能性としては無限に継続する。エージェントは、メッセージスレッドの参加者の便益のためにメッセージスレッドと関わるように動作する任意のエンティティを含み得る。エージェントは、1つまたは複数のメッセージングボット、1つまたは複数の多ユーザアプリケーション、1つまたは複数のメッセージングクライアントツール、および1つまたは複数のソーシャルネットワーキングツール、のうちの1つまたは複数を備え得る。メッセージングクライアントツールは、ユーザ入力に基づいてメッセージスレッドにサービスを提供するように動作し、メッセージスレッドに関する結果を生じさせるメッセージングクライアント機構を備え得る。ソーシャルネットワーキングツールは、ソーシャルネットワーキング情報に基づいてサービスを提供するように動作する、および/またはメッセージスレッドに関するソーシャルネットワーキング情報を生成する、メッセージングクライアント機構を備え得る。
エージェントは、多ユーザ投票ツールを備え得る。多ユーザ投票ツールは、複数のクライアントデバイス上で投票を提供することができ、この投票は、クライアントデバイスから選択を収集し、クライアントデバイスからの個々の選択に基づくグループ選択をメッセージスレッド内に提供する。多ユーザ投票は、複数のオプションを備える。いくつかの場合には、多ユーザ投票ツールのオプションは、主ユーザによって構成されてよく、メッセージスレッド内の参加者を共に構成する主ユーザおよび1人または複数の副ユーザは、その後それらのオプションに票を入れ、多ユーザ投票の結果が、オプションの中からの過半数または複数の選択を構成する。いくつかの実施形態では、消費者・企業間通信システム100は、1つまたは複数のオプションを自動的に構成し得る。オプションの自動的な構成は、メッセージング対話情報およびメッセージングボットからのボット情報のうち一方または両方に基づき得る。メッセージングボットからのボット情報は、メッセージングボット構成オプションを含み得る。メッセージングボット構成オプションは、メッセージングボットによって提供されるサービスを構成するためにメッセージングボットを構成するのに利用可能なオプションを含み得る。
ユーザ対話をエージェントとつなぐことは、エージェントが特定のイベントをサブスクライブすることに基づき得る。イベントは、これらに限定されないが、メッセージスレッドとの対話から結果が生じることを含む。対話処理コンポーネント760は、ボット情報交換795の一部として、ボットサービスシステムにおいて複数のエージェントについての複数のエージェント・イベント・サブスクリプションを受信し得る。エージェントは、そのエージェントを消費者・企業間通信システム100と共に使用するためのエージェントの構成の一部として、1つまたは複数のイベントにサブスクライブされる。例えば、メッセージングボットは、開発者によるメッセージングボットの構成の一部として、様々なイベントにサブスクライブされ得る。
対話処理コンポーネント760は、ユーザアカウントに関連付けられたイベントを検出する。このユーザアカウントは、ユーザクライアントデバイスに関連付けられている。対話処理コンポーネント760は、イベントを複数のエージェント・イベント・サブスクリプションと照合して、1つまたは複数のイベント応答エージェントを決定し、イベントを検出するのに応答してそれら1つまたは複数のイベント応答エージェントをユーザクライアントデバイスに対して識別する。イベント応答エージェントは、ユーザクライアントデバイスに対して、ユーザによる選択が可能な複数の提案されるエージェントとして識別され得る。
イベントは、ユーザサービスプロンプト、ユーザアカウントに関するソーシャル情報更新、およびユーザアカウントに関するユーザコンテクストの変化、のうち1つまたは複数を含み得る。ユーザサービスプロンプトは、2人以上のユーザ間の対話においてエージェントに基づくサービスに関わることへの検出された関心を含み得る。ソーシャル情報更新は、制限なしに、関係ステータスの変化および友達の追加の一方を含み得る。ユーザコンテクストの変化は、制限なしに、ユーザ位置の変化を含み得る。イベントは、ボット対話結果を含み得る。ユーザ位置の変化は、特定の都市区域への到着、特定の都市への到着、または任意の他のユーザ位置の変化に対応し得る。
イベントは、2人以上のユーザ間の対話の一部分に基づいて検出され得る。例えば、消費者・企業間通信システム100は、多ユーザ投票ツールを実行し、多ユーザ投票数から多ユーザ投票結果を受け取り、多ユーザ投票結果に基づいてその対話についての後続イベントを生成し得る。後続イベントが複数のエージェント・イベント・サブスクリプションと照合されて、1つまたは複数の追加的なイベント応答エージェントを決定する。そして、これらの追加的なイベント応答エージェントは、当該後続イベントを検出するのに応答してユーザクライアントデバイスに対して識別され得る。イベントは、イベント情報に従って検出され得る。イベント情報は、ユーザクライアントデバイス上のメッセージングクライアントを介して受信され得、1つまたは複数のイベント応答エージェントは、ユーザクライアントデバイス上のメッセージングクライアントに対して識別される。イベント情報は、例えば、特定のイベントへの特定の位置での予定される出席を含み得る。
NLPコンポーネント560は自然言語機械学習コンポーネントを含み得、それにより、NLPコンポーネント560は、機械学習技術を使用して自身の性能を向上させるように動作する。したがって、対話処理コンポーネント760は、ボットサービスシステムに関するボット対話履歴に基づいて自然言語機械学習コンポーネントに教示し得る。
いくつかの実施形態では、ボットサービスシステムの最初の期間には分類法が使用され、その後、ボット能力とサービスプロンプトとの間の機械学習に基づくマッチングに置き換えられ得る。分類法は、定義された分類法に従ってボット能力を表現する、人間によって生成された分類法を含み得、対話処理コンポーネント760が、定義された分類法用の技術を使用して、定義された分類法に基づいて、ユーザプロンプトをボット能力と照合する。対話処理コンポーネント760は、ボットサービスシステムに対して分類法に基づく複数のボット選択を行って、ボット対話履歴の少なくとも一部分を生成し得る。
消費者・企業間通信システム100は、ユーザにボットを提案することの進行中の体験に基づく機械学習を使用することにより、自身の性能を反復的に向上させ得る。ボット・アプリケーション・インターフェース・コンポーネント780は、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受け取る。複数のボット能力カタログの各々は、関連付けられたボットについて自然言語でボット能力を表す。クライアント通信コンポーネント740は、複数のユーザクライアントデバイスから複数のユーザサービスプロンプトを受信し、複数のユーザサービスプロンプトは自然言語で表されている。対話処理コンポーネント760は、自然言語機械学習コンポーネントによって生成されたボット能力テーブル710を使用して、複数のユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のユーザプロンプトの各々に対して複数のボットのうち選択されたボットを決定する。
クライアント通信コンポーネント740は、上記複数のユーザサービスプロンプトを受信するのに応答して、選択されたボットを複数のユーザクライアントデバイスに提供する。対話処理コンポーネント760は、選択されたボットとのユーザ対話に基づくボット対話履歴を記録し、その後ボット対話履歴に基づいて自然言語機械学習コンポーネントを更新する。対話処理コンポーネント760は、ボット対話履歴に基づくボットの性能に関係する信号を集める。
対話処理コンポーネント760は、ボット完了率を最適化することに基づいて自然言語機械学習コンポーネントを更新し得る。ボット完了率は、ユーザがボットとの対話を完了する率に対応し得る。ボットとの対話は、対話がそのユーザに対して結果を生じた場合に完了する。ボット完了率の最適化は、ユーザボット棄却率に基づき得る。ボット完了率の最適化は、ユーザボット棄却率を、定義されたボット棄却閾値未満に維持することに基づき得る。ボット完了率の最適化は、ユーザボット履歴信号に基づき得る。ユーザボット履歴信号は、ユーザとボットとの間の対話に関する情報を指示する。ボット能力テーブルが、複数のボット能力カタログを複数のボット能力ベクトルとして表現する場合、対話処理コンポーネント760は、複数のボット能力カタログと複数のボット能力ベクトルとの間の対応付けを修正するように、自然言語機械学習コンポーネントを更新し得る。
いくつかの実施形態では、対話処理コンポーネント760は、ボット情報の共有を増すことに基づいて自然言語機械学習コンポーネントを更新し得る。結果を生じさせるが、ボットサービスシステムへの正式の情報報告信号を使用して結果に関する情報を共有しないボットは、提案されるボットの中でそのランクを下げることによってペナルティを課され得る。ボットがサービスの構成時にユーザ情報を受け取るが、そのユーザ情報をボットサービスシステムに提供しない場合にも、同様のペナルティが課されてよい。反対に、ボットは、それらがサービスの構成中に決定されたユーザに関するユーザ情報などの情報を、ボットサービスシステムに提供する場合に、より高いランク付けで報酬を与えられ得る。
本明細書には、開示されるアーキテクチャの新規な態様を実施するための例示的方法論を表すフローチャートの組が含まれている。説明を簡略化するために、例えばフローチャートまたは流れ図の形態で本明細書に示される1つまたは複数の方法論は、一連の動作として図示され、説明されるが、一部の動作は、本明細書に従い、本明細書に図示および記載されるのとは異なる順序で、および/または他の動作と同時に行われ得るため、それらの方法論は動作の順序によって制限されないことを理解し、認識すべきである。例えば、当業者は、方法論は代わりに、状態図など、相互に関係する一連の状態または事象として表現されることも可能であることを理解し、認識されよう。さらに、方法論に例示されるすべての動作が新規の実装形態のために必要であるとは限らない。
図8Aは、論理フロー800の一実施形態を例示する。論理フロー800は、本明細書に記載される1つまたは複数の実施形態によって実行される動作の一部またはすべてを表し得る。
図8Aに示す例示実施形態では、論理フロー800は、ブロック802で、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受信し得、複数のボット能力カタログの各々は、関連付けられたボットについてボット能力を自然言語で表す。
論理フロー800は、ブロック804で、ユーザクライアントデバイスからユーザサービスプロンプトを受信し得、ユーザサービスプロンプトは自然言語で表されている。
論理フロー800は、ブロック806で、ユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のボットのうち1つまたは複数の選択されたボットを決定し得る。
論理フロー800は、ブロック808で、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、1つまたは複数の選択されたボットをユーザクライアントデバイスに対して識別し得る。
図8Bは、論理フロー820の一実施形態を例示する。論理フロー820は、本明細書に記載される1つまたは複数の実施形態によって実行される動作の一部またはすべてを表し得る。
図8Bに示される例示実施形態では、論理フロー820は、ブロック822で、ボットサービスシステムにおいてユーザクライアントデバイスからユーザサービスプロンプトを受信し得、ユーザサービスプロンプトは自然言語で表されている。
論理フロー820は、ブロック824で、複数のボットのうち2つ以上の選択されたボットを決定し得る。
論理フロー820は、ブロック826で、ボット関連度に基づいて、2つ以上の選択されたボットのうち2つ以上のフィルタリングされたボットを決定し得る。
論理フロー820は、ブロック828で、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、2つ以上のフィルタリングされたボットをユーザクライアントデバイスに対して識別し得る。
図8Cは、論理フロー840の一実施形態を例示する。論理フロー840は、本明細書に記載される1つまたは複数の実施形態によって実行される動作の一部またはすべてを表し得る。
図8Cに示される例示実施形態では、論理フロー840は、ブロック842で、ボットサービスシステムにおいて、複数のエージェントについての複数のエージェント・イベント・サブスクリプションを受信し得る。
論理フロー840は、ブロック844で、ユーザアカウントに関連付けられたイベントを検出し得、ユーザアカウントはユーザクライアントデバイスに関連付けられている。
論理フロー840は、ブロック846で、イベントを複数のエージェント・イベント・サブスクリプションと照合して、1つまたは複数のイベント応答エージェントを決定し得る。
論理フロー840は、ブロック848で、イベントを検出するのに応答してそれら1つまたは複数のイベント応答エージェントをユーザクライアントデバイスに対して識別し得る。
図8Dは、論理フロー860の一実施形態を例示する。論理フロー860は、本明細書に記載される1つまたは複数の実施形態によって実行される動作の一部またはすべてを表し得る。
図8Dに示される例示実施形態では、論理フロー860は、ブロック862で、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受信し得、複数のボット能力カタログの各々は、関連付けられたボットについてボット能力を自然言語で表す。
論理フロー860は、ブロック864で、複数のユーザクライアントデバイスから複数のユーザサービスプロンプトを受信し得、複数のユーザサービスプロンプトは自然言語で表されている。
論理フロー860は、ブロック866で、自然言語機械学習コンポーネントによって生成されたボット能力テーブルを使用して、複数のユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のユーザプロンプトの各々に対して複数のボットのうち選択されたボットを決定し得る。
論理フロー860は、ブロック868で、上記複数のユーザサービスプロンプトを受信するのに応答して、選択されたボットを複数のユーザクライアントデバイスに提供し得る。
論理フロー860は、ブロック870で、選択されたボットとのユーザ対話に基づくボット対話履歴を記録し得る。
論理フロー860は、ブロック872で、ボット対話履歴に基づいて自然言語機械学習コンポーネントを更新し得る。
図8Eは、論理フロー880の一実施形態を例示する。論理フロー880は、本明細書に記載される1つまたは複数の実施形態によって実行される動作の一部またはすべてを表し得る。
図8Eに示される例示実施形態では、論理フロー880は、ブロック882で、複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化し得、インスタンス化することは、多ユーザインターフェースの少なくとも一部分を複数のクライアントデバイスの各々に表示することを意味する。
論理フロー880は、ブロック884で、複数のクライアントデバイスのうちの第1のクライアントデバイスからユーザインターフェース対話を受信し得る。
論理フロー880は、ブロック886で、ユーザインターフェース対話に基づいて複数のクライアントデバイス上の多ユーザインターフェースを更新し得る。
実施形態はこれらの例に限定されない。
図9は、集中システム900のブロック図を例示する。集中システム900は、消費者・企業間通信システム100に関する構造および/または動作の一部またはすべてを単一の集中サーバデバイス920内に完全に実装するなど、単一のコンピューティングエンティティ内に実装し得る。
集中サーバデバイス920は、消費者・企業間通信システム100に関する情報を受信し、処理し、送ることが可能な任意の電子デバイスを含み得る。電子デバイスの例は、制限なしに、ウルトラモバイルデバイス、モバイルデバイス、携帯情報端末(PDA)、モバイルコンピューティングデバイス、スマートフォン、電話機、デジタル電話、セルラー電話、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、ネットブックコンピュータ、手持ち型コンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサを利用したシステム、消費者家電機器、プログラム可能消費者家電機器、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、ワイヤレスアクセスポイント、基地局、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、機械、またはそれらの組み合わせを含み得る。実施形態はこれに関して制限されない。
集中サーバデバイス920は、処理コンポーネント930を使用して消費者・企業間通信システム100に関する処理動作またはロジックを実行し得る。処理コンポーネント930は、様々なハードウェア要素、ソフトウェア要素、または両者の組み合わせを含み得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路要素(例えばトランジスタ、抵抗、コンデンサ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラム可能論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含み得る。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーション・プログラム・インターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コード断片、コンピュータコード断片、ワード、値、シンボル、またはそれらの任意の組み合わせを含み得る。ある実施形態をハードウェア要素を使用して実施するか、および/またはソフトウェア要素を使用して実施するかの決定は、所与の実装の必要に応じて、所望の演算レート、電力レベル、耐熱性、処理サイクル予算、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能上の制約などの、任意数の要因に応じて異なり得る。
集中サーバデバイス920は、通信コンポーネント940を使用して消費者・企業間通信システム100に関する通信動作またはロジックを実行し得る。通信コンポーネント940は、任意のよく知られた通信技術およびプロトコルを実装し得、それらには、パケット交換ネットワーク(例えばインターネットなどの公衆ネットワーク、エンタープライズイントラネットなどのプライベートネットワーク等)、回路交換ネットワーク(例えば公衆交換電話網)、またはパケット交換ネットワークと回線交換ネットワークとの組み合わせ(適切なゲートウェイおよびトランスレータを伴う)に使用するのに適した技術がある。通信コンポーネント940は、1つまたは複数の通信インターフェース、ネットワークインターフェース、ネットワークインターフェースカード(NIC)、無線機、ワイヤレス送信器/受信器(送受信器)、有線および/またはワイヤレス通信媒体、物理コネクタ等の、様々なタイプの標準的な通信要素を含み得る。制限ではなく例として、通信媒体912は、有線通信媒体およびワイヤレス通信媒体を含む。有線通信媒体の例は、配線、ケーブル、金属導線、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバー、伝搬信号等を含み得る。ワイヤレス通信媒体の例は、音響、無線周波(RF)スペクトル、赤外線、および他のワイヤレス媒体を含み得る。
集中サーバデバイス920は、消費者・企業間サービス110を単一のコンピューティングエンティティ内に実装し得る。集中サーバデバイス920は、通信コンポーネント940を介して、通信信号914を使用して通信媒体912を通じて他のデバイスと通信し得る。デバイスは、所与の実装の必要に応じて、集中サーバデバイス920の内部にある場合も外部にある場合もある。集中サーバデバイス920は、クライアントデバイス120、クライアントデバイス320、副クライアントデバイス370、送り元クライアントデバイス520、受け取り先クライアントデバイス590、または任意の他のクライアントデバイスを含み得るものなどの、複数のクライアントデバイス910と通信し得る。
図10は、分散システム1000のブロック図を例示する。分散システム1000は、消費者・企業間通信システム100に関する構造および/または動作のいくつかの部分を、複数のコンピューティングエンティティにわたって分散させ得る。分散システム1000の例は、制限なしに、クライアント・サーバアーキテクチャ、3層アーキテクチャ、N層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスター・スレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムを含み得る。実施形態はこれに関して制限されない。
分散システム1000は、複数の分散サーバデバイス1010を備え得る。一般に、分散サーバデバイス1010は、図9を参照して説明したような、集中サーバデバイス820と同じまたは同様であり得る。例えば、分散サーバデバイス1010は各々、処理コンポーネント1030および通信コンポーネント1040を備え得、これらは、図9を参照して説明したような、それぞれ処理コンポーネント930および通信コンポーネント940と同じまたは同様であり得る。別の例では、分散サーバデバイス1010は、通信コンポーネント1040を介して、通信信号1014を使用して通信媒体1012を通じて通信し得る。
分散サーバデバイス1010は、記載される実施形態に従って様々な方法論を行うように動作する1つまたは複数のサーバプログラムを備える、または用い得る。1つの実施形態では、例えば、分散サーバデバイス1010は各々、1つまたは複数の消費者・企業間サーバ1015を実装し得る。消費者・企業間サーバ1015は、分散コンピューティングエンティティとして消費者・企業間サービス110を共に実装し得る。消費者・企業間サーバ1015は、クライアントデバイス120、クライアントデバイス320、副クライアントデバイス370、送り元クライアントデバイス520、受け取り先クライアントデバイス590、クライアントデバイス910、または任意の他のクライアントデバイスを含み得るものなどの、複数のクライアントデバイス1020と通信し得る。
図11は、上記に記載したような様々な実施形態を実施するのに適した例示的コンピューティングアーキテクチャ1100の一実施形態を例示する。1つの実施形態では、コンピューティングアーキテクチャ1100は、電子デバイスの一部を構成するか、または一部として実施され得る。電子デバイスの例は、とりわけ図9、図10を参照して説明したものを含み得る。実施形態はこれに関して制限されない。
本願で使用される場合、用語「システム」および「コンポーネント」は、ハードウェアハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアであるかを問わず、コンピュータに関係するエンティティを指すことが意図され、その例が、例示的コンピューティングアーキテクチャ1100によって提供される。例えば、コンポーネントは、これらに限定されないが、プロセッサで走るプロセス、プロセッサ、ハードディスクドライブ、(光学および/または磁気記憶媒体の)複数の記憶ドライブ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および/またはコンピュータであり得る。例示として、サーバで走るアプリケーションとサーバの両方がコンポーネントであり得る。1つまたは複数のコンポーネントが、プロセスおよび/または実行のスレッド内に存在することができ、コンポーネントは、1つのコンピュータに局所化する、および/または2つ以上のコンピュータ間に分散させることができる。さらに、コンポーネント同士を、様々なタイプの通信媒体によって通信的に結合して動作を連携させ得る。連携は、情報の単方向または二方向の交換を伴い得る。例えば、コンポーネント同士は、通信媒体を通じて通信される信号の形態で情報を通信し得る。情報は、様々な信号線に割り振られた信号として実施され得る。そのような割り振りでは、各メッセージが信号となる。しかし、さらなる実施形態は、代替としてデータメッセージを用い得る。そのようなデータメッセージは、様々な接続を介して送られ得る。例示的な接続には、パラレルインターフェース、シリアルインターフェース、およびバスインターフェースが含まれる。
コンピューティングアーキテクチャ1100は、1つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント、電源等の、様々な一般的コンピューティング要素を含む。しかし、実施形態は、コンピューティングアーキテクチャ1100による実施に限定されない。
図11に示すように、コンピューティングアーキテクチャ1100は、処理ユニット1104、システムメモリ1106、およびシステムバス1108を備える。処理ユニット1104は、AMD(登録商標)Athlon(登録商標)、Duron(登録商標)、およびOpteron(登録商標)プロセッサ、ARM(登録商標)アプリケーション、組み込みおよびセキュアプロセッサ、IBM(登録商標)およびMotorola(登録商標)DragonBall(登録商標)およびPowerPC(登録商標)プロセッサ、IBMおよびSony(登録商標)のCellプロセッサ、Intel(登録商標)Celeron(登録商標)、Core(2)Duo(登録商標)、Itanium(登録商標)、Pentium(登録商標)、Xeon(登録商標)、およびXScale(登録商標)プロセッサ、ならびに同様のプロセッサを制限なしに含む、様々な市販プロセッサのいずれかであり得る。デュアルマイクロプロセッサ、マルチコアプロセッサ、および他のマルチプロセッサアーキテクチャも、処理ユニット1104として用いられ得る。
システムバス1108は、処理ユニット1104への、これに限定されないが、システムメモリ1106を含むシステムコンポーネントのためのインターフェースを提供する。システムバス1108は、各種の市販バスアーキテクチャのいずれかを使用して、メモリバス(メモリコントローラを備える、または備えない)、ペリフェラルバス、およびローカルバスにさらに相互接続し得る、数タイプのバス構造のいずれかとすることができる。インターフェースアダプタが、スロットアーキテクチャを介してシステムバス1108に接続し得る。例示的なスロットアーキテクチャは、制限なしに、アクセラレーテッドグラフィックスポート(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)等を含み得る。
コンピューティングアーキテクチャ1100は、様々な製造品を備える、または実装し得る。製造品は、ロジックを記憶するためのコンピュータ可読記憶媒体を備え得る。コンピュータ可読記憶媒体の例は、揮発性メモリまたは不揮発性メモリ、取り外し可能または取り外し不能メモリ、消去可能または非消去可能メモリ、書込み可能または再書込み可能メモリ等を含む、電子データを記憶することが可能な任意の有形媒体を含み得る。ロジックの例は、ソースコード、コンパイルされるコード、解釈されるコード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、視覚コード等の任意の適切なタイプのコードを使用して実施される、実行可能コンピュータプログラム命令を含み得る。実施形態は、少なくとも部分的に、非一時的コンピュータ可読媒体に収容された命令として実施されてもよく、その命令が1つまたは複数のプロセッサによって読み出され、実行されて、本明細書に記載される動作を行えるようにする。
システムメモリ1106は、1つまたは複数のより高速なメモリユニットの形態の様々なタイプのコンピュータ可読記憶媒体を含み得、そのような記憶媒体は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラム可能ROM(PROM)、消去可能なプログラム可能ROM(EPROM)、電気的に消去可能なプログラム可能ROM(EEPROM)、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オーボニックメモリ、相変化または強誘電性メモリ、シリコン-酸化物-窒化物-酸化物-シリコン(SONOS)メモリ、磁気または光学カード、独立ディスクの冗長アレイ(RAID:Redundant Array of Independent Disks)ドライブなどのデバイスのアレイ、固体状態メモリデバイス(例えば、USBメモリ、ソリッドステートドライブ(SSD))、および情報を記憶するのに適した任意の他のタイプの記憶媒体などである。図11に示す例示実施形態では、システムメモリ1106は、不揮発性メモリ1110および/または揮発性メモリ1112を含むことができる。基本入出力システム(BIOS)が、不揮発性のメモリ1110に記憶され得る。
コンピュータ1102は、内部(または外部)ハードディスクドライブ(HDD)1114、取り外し可能磁気ディスク1118の読み書きを行う磁気フロッピーディスクドライブ(FDD)1116、および取り外し可能光ディスク1122(例えばCD-ROMまたはDVD)の読み書きを行う光ディスクドライブ1120を含む、1つまたは複数のより低速のメモリユニットの形態の様々なタイプのコンピュータ可読記憶媒体を含み得る。HDD1114、FDD1116、および光ディスクドライブ1120は、それぞれHDDインターフェース1124、FDDインターフェース1126、および光学ドライブインターフェース1128によってシステムバス1108に接続され得る。外部ドライブ実装のためのHDDインターフェース1124は、ユニバーサルシリアルバス(USB)およびIEEE1394インターフェース技術の少なくとも一方または両方を含むことができる。
これらのドライブおよび関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令等の揮発性および/または不揮発性の記憶を提供する。例えば、オペレーティングシステム1130、1つまたは複数のアプリケーションプログラム1132、他のプログラムモジュール1134、およびプログラムデータ1136を含む、いくつかのプログラムモジュールが、ドライブおよびメモリユニット1110、1112に記憶され得る。1つの実施形態では、1つまたは複数のアプリケーションプログラム1132、他のプログラムモジュール1134、およびプログラムデータ1136は、例えば、システム100の様々なアプリケーションおよび/またはコンポーネントを含むことができる。
ユーザは、1つまたは複数の配線/ワイヤレス入力装置、例えば、キーボード1138、およびマウス1140などのポインティングデバイスを通じて、コンピュータ1102にコマンドおよび情報を入力することができる。他の入力装置は、マイクロフォン、赤外線(IR)リモコン、無線周波(RF)リモコン、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックタブレット、ジョイスティック、キーボード、網膜リーダ、タッチ画面(例えば容量式、抵抗式等)、トラックボール、トラックパッド、センサ、スタイラス等を含み得る。これらおよび他の入力装置は、多くの場合、システムバス1108に結合された入力装置インターフェース1142を通じて処理ユニット1104に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェース等の他のインターフェースによって接続されることが可能である。
モニタ1144または他のタイプの表示デバイスも、ビデオアダプタ1146などのインターフェースを介してシステムバス1108に接続される。モニタ1144は、コンピュータ1102の内部にある場合も外部にある場合もある。モニタ1144に加えて、コンピュータは通例、スピーカ、プリンタ等の他の周辺出力装置を含む。
コンピュータ1102は、リモートコンピュータ1148などの1つまたは複数のリモートコンピュータへの配線および/またはワイヤレス通信を介した論理接続を使用して、ネットワーク化された環境で動作し得る。リモートコンピュータ1148は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、携帯型コンピュータ、マイクロプロセッサを利用した娯楽アプライアンス、ピアデバイス、または他の一般的なネットワークノードであり得、通例は、コンピュータ1102に関して記載される要素の多くまたはすべてを含むが、図を簡潔にするために、メモリ/記憶装置1150のみが例示されている。図示される論理接続は、ローカルエリアネットワーク(LAN)1152、および/またはより大きいネットワーク、例えばワイドエリアネットワーク(WAN)1154への配線/ワイヤレス接続性を含む。このようなLANおよびWANネットワーキング環境は、オフィスや会社で一般に見られ、イントラネットなどのエンタープライズ規模のコンピュータネットワークを容易にし、それらのコンピュータネットワークはすべて、世界規模の通信ネットワーク、例えばインターネットに接続し得る。
LANネットワーキング環境で使用される場合、コンピュータ1102は、配線および/またはワイヤレス通信ネットワークインターフェースまたはアダプタ1156を通じてLAN1152に接続される。アダプタ1156は、LAN1152への配線および/またはワイヤレス通信を容易にすることができ、LAN1152は、アダプタ1156のワイヤレス機能性と通信するために配設されたワイヤレスアクセスポイントも含み得る。
WANネットワーキング環境で使用される場合、コンピュータ1102は、モデム1158を含むことができ、またはWAN1154上の通信サーバに接続されるか、またはインターネットを経由するなど、WAN1154を通じて通信を確立するための他の手段を有する。モデム1158は、内部または外部にある、配線および/またはワイヤレスデバイスであり得、入力装置インターフェース1142を介してシステムバス1108に接続する。ネットワーク化された環境では、コンピュータ1102に関して図示されたプログラムモジュール、またはその一部は、リモートのメモリ/記憶装置1150に記憶され得る。図示されるネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段が使用され得ることが認識されよう。
コンピュータ1102は、ワイヤレス通信(例えばIEEE802.11オーバーザエア変調技術)に動作可能に配設されたワイヤレスデバイスなど、IEEE802系規格を使用して配線およびワイヤレスデバイスまたはエンティティと通信するように動作可能である。これは、とりわけ、Wi-Fi(またはWireless Fidelity)、WiMax、およびBluetooth(商標)ワイヤレス技術を少なくとも含む。よって、通信は、従来のネットワークのように事前に定義された構造である場合も、または単に少なくとも2つのデバイス間のアドホック通信である場合もある。Wi-Fiネットワークは、IEEE 802.l lx(a、b、g、n等)と呼ばれる無線技術を使用して、安全で、信頼性が高く、高速なワイヤレス接続性を提供する。Wi-Fiネットワークを使用して、コンピュータを互いに、インターネットに、および配線ネットワーク(IEEE802.3に関係する媒体および機能を使用する)に接続することができる。
図12は、上記に記載したような様々な実施形態を実施するのに適した例示的通信アーキテクチャ1200のブロック図を例示する。通信アーキテクチャ1200は、送信器、受信器、送受信器、無線機、ネットワークインターフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、電源等の、様々な一般的な通信要素を含む。しかし、実施形態は、通信アーキテクチャ1200による実施に限定されない。
図12に示すように、通信アーキテクチャ1200は、1つまたは複数のクライアント1202およびサーバ1204を備える。クライアント1202は、メッセージングクライアントまたは他の通信クライアントに対応し得る。サーバ1204は、消費者・企業間サービス110のサーバを実装し得る。クライアント1202およびサーバ1204は、クッキーおよび/または関連付けられたコンテクスト情報など、それぞれのクライアント1202およびサーバ1204にとってローカルな情報を記憶するために用いることが可能な、1つまたは複数の各自のクライアントデータストア1208およびサーバデータストア1210に動作的に接続される。
クライアント1202およびサーバ1204は、通信フレームワーク1206を使用して互いとの間で情報を通信し得る。通信フレームワーク1206は、任意のよく知られた通信技術およびプロトコルを実装し得る。通信フレームワーク1206は、パケット交換ネットワーク(例えばインターネットなどの公衆ネットワーク、エンタープライズイントラネットなどのプライベートネットワーク等)、回路交換ネットワーク(例えば衆交換電話網)、またはパケット交換ネットワークと回路交換ネットワークの組み合わせ(適切なゲートウェイおよびトランスレータを伴う)として実施され得る。
通信フレームワーク1206は、通信ネットワークを受け入れ、通信ネットワークと通信し、通信ネットワークに接続するようになされた様々なネットワークインターフェースを実装し得る。ネットワークインターフェースは、特殊化された形態の入出力インターフェースとみなし得る。ネットワークインターフェースは、直接接続、イーサネット(例えば、シック、シン、ツイストペア10/100/1000 Base T等)、トークンリング、ワイヤレスネットワークインターフェース、セルラーネットワークインターフェース、IEEE802.11a-xネットワークインターフェース、IEEE802.16ネットワークインターフェース、IEEE802.20ネットワークインターフェース等を制限なしに含む、接続プロトコルを用い得る。さらに、様々な通信ネットワークタイプと関わるために複数のネットワークインターフェースが使用され得る。例えば、複数のネットワークインターフェースを用いて、ブロードキャスト、マルチキャスト、およびユニキャストネットワークを通じた通信を可能にし得る。処理要件がより高量の速度および容量を要求する場合は、分散ネットワークコントローラアーキテクチャを同様に用いて、クライアント1202およびサーバ1204によって必要とされる通信帯域幅をプールし、負荷分散し、その他の形で増大させ得る。通信ネットワークは、直接相互接続、セキュリティ保護されたカスタム接続、プライベートネットワーク(例えばエンタープライズイントラネット)、公衆ネットワーク(例えばインターネット)、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、メトロポリタンネットワーク(MAN)、インターネット上でノードとして動作しているミッション(OMNI:Operating Missions as Nodes on Internet)、ワイドエリアネットワーク(WAN)、ワイヤレスネットワーク、セルラーネットワーク、および他の通信ネットワークを制限なしに含む、有線および/またはワイヤレスネットワークのうちの任意の1つまたは組み合わせであり得る。
図13は、システム100などのマルチキャリアOFDMシステムで使用するためのデバイス1300の一実施形態を例示する。デバイス1300は、例えば、システム100を参照して説明したようなソフトウェアコンポーネント1360、および/または論理回路1335を実装し得る。論理回路1335は、システム100に関して説明した動作を行うための物理的回路を含み得る。図13に示すように、デバイス1300は、無線インターフェース1310、ベースバンド回路構成1320、およびコンピューティングプラットフォーム1330を含み得るが、実施形態はこの構成に制限されない。
デバイス1300は、システム100および/または論理回路1335に関する構造および/または動作の一部またはすべてを、単一のデバイス内に完全に実装するなど、単一のコンピューティングエンティティ内に実装し得る。あるいは、デバイス1300は、システム100および/または論理回路1335に関する構造および/または動作のいくつかの部分を、分散システムアーキテクチャを使用して複数のコンピューティングエンティティに分散させ得、そのような分散システムアーキテクチャには、クライアント・サーバアーキテクチャ、3層アーキテクチャ、N層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスター・スレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムなどがある。実施形態はこれに関して制限されない。
1つの実施形態では、無線インターフェース1310は、単一キャリアまたはマルチキャリアの変調信号(例えば相補符号変調(CCK:complementary code keying)および/または直交周波数分割多重化(OFDM)シンボルを含む)を送信および/または受信するために適合されたコンポーネントまたはコンポーネントの組み合わせを含み得るが、実施形態は、どの特定のオーバーザエアインターフェースまたは変調方式にも限定されない。無線インターフェース1310は、例えば、受信器1312、送信器1316、および/または周波数合成器1314を含み得る。無線インターフェース1310は、バイアスコントロール、水晶発振器、および/または1つまたは複数のアンテナ1318を含み得る。別の実施形態では、無線インターフェース1310は、必要に応じて、外部の電圧制御発振器(VCO)、弾性表面波フィルタ、中間周波数(IF)フィルタ、および/またはRFフィルタを使用し得る。潜在的なRFインターフェース設計が多岐にわたるため、その広範な説明は省略する。
ベースバンド回路構成1320は、無線インターフェース1310と通信して信号を処理、受信および/または送信し得、例えば、受信信号をダウンコンバートするためのアナログ・デジタル変換器1322、送信する信号をアップコンバートするためのデジタル・アナログ変換器1324を含み得る。さらに、ベースバンド回路構成1320は、それぞれの受信/送信信号のPHYリンク層処理を行うためのベースバンドまたは物理層(PHY)処理回路1356を含み得る。ベースバンド回路構成1320は、例えば、メディアアクセス制御(MAC)/データリンク層処理のための処理回路1328を含み得る。ベースバンド回路構成1320は、例えば1つまたは複数のインターフェース1334を介して、処理回路1328および/またはコンピューティングプラットフォーム1330と通信するためのメモリコントローラ1332を含み得る。
いくつかの実施形態では、PHY処理回路1326は、無線フレームなどの通信フレームを構築および/または分解するために、バッファメモリなどの追加的な回路構成と組み合わせてフレーム構築および/または検出モジュールを含み得る。代替として、または追加的に、MAC処理回路1328は、これらの機能のうち特定のものについての処理をPHY処理回路1326と分担する、またはこれらのプロセスをPHY処理回路1326とは独立して行い得る。いくつかの実施形態では、MACおよびPHYの処理が単一の回路に統合され得る。
コンピューティングプラットフォーム1330は、デバイス1300にコンピューティング機能性を提供し得る。図示されるように、コンピューティングプラットフォーム1330は、処理コンポーネント1340を含み得る。ベースバンド回路構成1320に加えて、またはその代替として、デバイス1300は、処理コンポーネント1340を使用してシステム100および論理回路1335に関する処理動作またはロジックを実行し得る。処理コンポーネント1340(ならびに/またはPHY1326および/もしくはMAC1328)は、様々なハードウェア要素、ソフトウェア要素、または両者の組み合わせを備え得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路要素(例えば、トランジスタ、抵抗、コンデンサ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラム可能論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含み得る。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーション・プログラム・インターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コード断片、コンピュータコード断片、ワード、値、シンボル、またはそれらの任意の組み合わせを含み得る。ある実施形態をハードウェア要素を使用して実施するか、および/またはソフトウェア要素を使用して実施するかの決定は、所与の実装の必要に応じて、所望の演算レート、電力レベル、耐熱性、処理サイクル予算、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能上の制約などの、任意数の要因に応じて異なり得る。
コンピューティングプラットフォーム1330はさらに、他のプラットフォームコンポーネント1350を含み得る。他のプラットフォームコンポーネント1350は、1つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント(例えばデジタルディスプレイ)、電源等の、一般的なコンピューティング要素を含む。メモリユニットの例は、1つまたは複数のより高速なメモリユニットの形態の様々なタイプのコンピュータ可読および機械可読記憶媒体を制限なしに含み得、そのような記憶媒体は、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラム可能ROM(PROM)、消去可能なプログラム可能ROM(EPROM)、電気的に消去可能なプログラム可能ROM(EEPROM)、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オーボニックメモリ、相変化または強誘電性メモリ、シリコン-酸化物-窒化物-酸化物-シリコン(SONOS)メモリ、磁気または光学カード、独立ディスクの冗長アレイ(RAID:Redundant Array of Independent Disks)ドライブなどのデバイスのアレイ、固体状態メモリデバイス(例えば、USBメモリ、ソリッドステートドライブ(SSD))、および情報を記憶するのに適した任意の他のタイプの記憶媒体などである。
デバイス1300は、例えば、ウルトラモバイルデバイス、モバイルデバイス、固定デバイス、マシンツーマシン(M2M)デバイス、携帯情報端末(PDA)、モバイルコンピューティングデバイス、スマートフォン、電話機、デジタル電話、セルラー電話、ユーザ機器、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、ネットブックコンピュータ、手持ち型コンピュータ、タブレットコンピュータ、サーバ、サーバアレイまたはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサを利用したシステム、消費者家電機器、プログラム可能な消費者家電機器、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、ワイヤレスアクセスポイント、基地局、ノードB、発展型ノードB(eNB)、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、機械、またはそれらの組み合わせであり得る。それゆえに、本明細書に記載されるデバイス1300の機能および/または特定の構成は、必要に応じて適宜デバイス1300の様々な実施形態に含められる、または省略され得る。いくつかの実施形態では、デバイス1300は、3GPP LTE仕様および/またはWMANのためのIEEE 1302.16規格、および/または本明細書で引用される他の広帯域ワイヤレスネットワークの1つまたは複数に関連付けられたプロトコルおよび周波数と互換性をもつように構成され得るが、実施形態はこれに関して制限されない。
デバイス1300の実施形態は、単入力単出力(SISO)アーキテクチャを使用して実施され得る。しかし、特定の実装形態は、ビーム形成もしくは空間分割多重接続(SDMA)のための適応アンテナ技術を使用する、および/またはMIMO通信技術を使用する、送信および/または受信用の複数のアンテナ(例えばアンテナ1318)を含み得る。
デバイス1300のコンポーネントおよび機構は、離散回路構成、特定用途向け集積回路(ASIC)、論理ゲート、および/または単一チップアーキテクチャの任意の組み合わせを使用して実施され得る。さらに、デバイス1300の機構は、マイクロコントローラ、プログラム可能ロジックアレイおよび/またはマイクロプロセッサ、または適切な場合には前述の任意の組み合わせを使用して実施され得る。ハードウェア、ファームウェアおよび/またはソフトウェア要素を、本明細書ではまとめてまたは個々に「ロジック」または「回路」と呼ぶことがあることに留意されたい。
図13のブロック図に示す例示的デバイス1300は、多くの潜在的な実装形態のうち1つの機能的説明例を表し得ることを認識すべきである。それゆえに、添付図面に図示されるブロック機能の分割、省略、または包含は、それらの機能を実装するためのハードウェアコンポーネント、回路、ソフトウェアおよび/または要素が、実施形態において必ず分割、省略、または包含されることを示唆するものではない。
コンピュータ実装方法は、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受信することであって、複数のボット能力カタログの各々は、関連付けられたボットについてボット能力を自然言語で表す、複数のボット能力カタログを受信することと、ユーザクライアントデバイスからユーザサービスプロンプトを受信することであって、ユーザサービスプロンプトは自然言語で表されている、ユーザサービスプロンプトを受信することと、ユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のボットのうち1つまたは複数の選択されたボットを決定することと、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、1つまたは複数の選択されたボットをユーザクライアントデバイスに対して識別することと、を含み得る。
コンピュータ実装方法は、開発者ボット構成インターフェースを介して複数のボット能力カタログのうち1つまたは複数のボット能力カタログを受信することをさらに含み得る。
コンピュータ実装方法は、複数のボット能力カタログのうち1つまたは複数が、1つまたは複数の実例ユーザプロンプトを含むこと、をさらに含み得る。
コンピュータ実装方法は、ユーザプロンプトが、ユーザクライアントデバイス上のメッセージングクライアントを介して受信され、1つまたは複数の選択されたボットが、ユーザクライアントデバイス上のメッセージングクライアントに対して識別されること、をさらに含み得る。
コンピュータ実装方法は、ユーザプロンプトが2人以上のユーザ間の対話の一部分を含むこと、をさらに含み得る。
コンピュータ実装方法は、対話がメッセージング対話を含むこと、をさらに含み得る。
コンピュータ実装方法は、自然言語処理コンポーネントに複数のボット能力カタログをサブミットすることと、自然言語処理コンポーネントからボット能力テーブルを受け取ることと、自然言語処理コンポーネントにユーザプロンプトをサブミットすることと、自然言語処理コンポーネントからユーザ意図を受け取ることと、ユーザ意図をボット能力テーブルと比較することにより、1つまたは複数の選択されたボットを決定することと、をさらに含み得る。
コンピュータ実装方法は、ボット能力テーブルが、複数のボット能力カタログを複数のボット能力ベクトルとして表現し、ユーザ意図が、ユーザプロンプトをユーザ意図ベクトルとして表現し、ユーザ意図をボット能力テーブルと比較することが、ユーザ意図ベクトルに基づいて複数のボット能力ベクトルの類似度検索を行うことを含むこと、をさらに含み得る。
コンピュータ実装方法は、類似度検索がコサイン類似度比較に基づくこと、をさらに含み得る。
コンピュータ実装方法は、自然言語処理コンポーネントが自然言語機械学習コンポーネントを備え、方法が、ボットサービスシステムに関するボット対話履歴に基づいて自然言語機械学習コンポーネントに教示することをさらに含むこと、をさらに含み得る。
コンピュータ実装方法は、ボットサービスシステムに対して分類法に基づく複数のボット選択を行って、ボット対話履歴の少なくとも一部分を生成することをさらに含み得る。
装置は、デバイス上のプロセッサ回路と、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受信するようにプロセッサ回路上で動作するボット・アプリケーション・インターフェース・コンポーネントであって、複数のボット能力カタログの各々は、関連付けられたボットについてボット能力を自然言語で表す、ボット・アプリケーション・インターフェース・コンポーネントと、ユーザクライアントデバイスからユーザサービスプロンプトを受信し、ユーザサービスプロンプトが自然言語で表されており、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、1つまたは複数の選択されたボットをユーザクライアントデバイスに対して識別するように動作するクライアント通信コンポーネントと、ユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のボットのうち1つまたは複数の選択されたボットを決定するように動作する対話処理コンポーネントと、を備え得る。装置は、本明細書に記載されるコンピュータ実装方法のいずれかを実施するように動作し得る。
コンピュータ実装方法は、ボットサービスシステムにおいてユーザクライアントデバイスからユーザサービスプロンプトを受信することであって、ユーザサービスプロンプトが自然言語で表されている、ユーザサービスプロンプトを受信することと、複数のボットのうち2つ以上の選択されたボットを決定することと、ボット関連度に基づいて2つ以上の選択されたボットのうち2つ以上のフィルタリングされたボットを決定することと、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、2つ以上のフィルタリングされたボットをユーザクライアントデバイスに対して識別することと、を含み得る。
コンピュータ実装方法は、ユーザプロンプトが、ユーザクライアントデバイス上のメッセージングクライアントを介して受信され、1つまたは複数の選択されたボットが、ユーザクライアントデバイス上のメッセージングクライアントに対して識別されること、をさらに含み得る。
コンピュータ実装方法は、ユーザプロンプトが2人以上のユーザ間の対話の一部分を含むこと、をさらに含み得る。
コンピュータ実装方法は、ユーザプロンプトがボット対話結果を含むこと、をさらに含み得る。
コンピュータ実装方法は、2つ以上のフィルタリングされたボットのボットランク付け情報を照会することと、ボットランク付け情報に基づいて2つ以上のフィルタリングされたボットをランク付けすることとをさらに含み得る。
コンピュータ実装方法は、ユーザサービスプロンプトがボットサービスシステムのユーザアカウントに関連付けられており、2つ以上のフィルタリングされたボットのボットランク付け情報を照会することが、ユーザアカウントにユーザ情報を提供することを含むこと、をさらに含み得る。
コンピュータ実装方法は、2つ以上のフィルタリングされたボットのうちのボットについてのユーザ情報共有設定を決定すること、および、そのユーザ情報共有設定と、そのボットをフィルタリングされたボットとして決定することとに基づいて、ユーザアカウントにユーザ情報共有許可を要求すること、をさらに含み得る。
コンピュータ実装方法は、2つ以上のフィルタリングされたボットが、アカウントに基づくボットを含み、ユーザ情報が、アカウントに基づくボットのためのアカウント情報を含むこと、をさらに含み得る。
コンピュータ実装方法は、ユーザプロフィール情報、ユーザ挙動情報、ユーザ位置情報、ユーザメッセージングコンテクスト情報、およびユーザボット履歴情報の1つまたは複数に基づいて、2つ以上の提案されるボットのボット関連度を決定することをさらに含み得る。
装置は、デバイス上のプロセッサ回路と、ボットサービスシステムにおいてユーザクライアントデバイスからユーザサービスプロンプトを受信し、ユーザサービスプロンプトが自然言語で表されており、ユーザクライアントデバイスからユーザサービスプロンプトを受信するのに応答して、2つ以上のフィルタリングされたボットをユーザクライアントデバイスに対して識別するようにプロセッサ回路上で動作するクライアント通信コンポーネントと、ボット関連度に基づいて、複数のボットのうち2つ以上の選択されたボットを決定し、その2つ以上の選択されたボットのうち2つ以上のフィルタリングされたボットを決定するように動作する対話処理コンポーネントと、を備え得る。装置は、本明細書に記載されるコンピュータ実装方法のいずれかを実施するように動作し得る。
コンピュータ実装方法は、ボットサービスシステムにおいて複数のエージェントについての複数のエージェント・イベント・サブスクリプションを受信することと、ユーザアカウントに関連付けられたイベントを検出し、ユーザアカウントはユーザクライアントデバイスに関連付けられている、イベントを検出することと、イベントを複数のエージェント・イベント・サブスクリプションと照合して、1つまたは複数のイベント応答エージェントを決定することと、イベントを検出するのに応答して1つまたは複数のイベント応答エージェントをユーザクライアントデバイスに対して識別することと、を含み得る。
コンピュータ実装方法は、イベントがイベント情報に従って検出され、イベント情報がユーザクライアントデバイス上のメッセージングクライアントを介して受信され、1つまたは複数のイベント応答エージェントが、ユーザクライアントデバイス上のメッセージングクライアントに対して識別されること、をさらに含み得る。
コンピュータ実装方法は、イベントが2人以上のユーザ間の対話の一部分に基づいて検出されること、をさらに含み得る。
コンピュータ実装方法は、複数のエージェントが、1つまたは複数のメッセージングボット、1つまたは複数の多ユーザアプリケーション、1つまたは複数のメッセージングクライアントツール、および1つまたは複数のソーシャルネットワーキングツールの1つまたは複数を含むこと、をさらに含み得る。
コンピュータ実装方法は、複数のエージェントが多ユーザ投票ツールを備えること、をさらに含み得る。
コンピュータ実装方法は、イベントが2人以上のユーザ間の対話の一部分に基づいて検出され、方法が、多ユーザ投票ツールを実行することと、多ユーザ投票数から多ユーザ投票結果を受け取ることと、多ユーザ投票結果に基づいてその対話についての後続イベントを生成することとをさらに含むこと、をさらに含み得る。
コンピュータ実装方法は、イベントが、ユーザサービスプロンプト、ユーザアカウントに関するソーシャル情報更新、およびユーザアカウントに関するユーザコンテクストの変化のうち1つまたは複数を含むこと、をさらに含み得る。
コンピュータ実装方法は、ソーシャル情報更新が、関係ステータスの変化および友達の追加の一方を含むこと、をさらに含み得る。
コンピュータ実装方法は、ユーザコンテクストの変化がユーザ位置の変化を含むこと、をさらに含み得る。
コンピュータ実装方法は、イベントがボット対話結果を含むこと、をさらに含み得る。
装置は、デバイス上のプロセッサ回路と、ボットサービスシステムにおいて複数のエージェントについての複数のエージェント・イベント・サブスクリプションを受信するようにプロセッサ回路上で動作するボット・アプリケーション・インターフェース・コンポーネントと、ユーザアカウントに関連付けられたイベントを検出し、ユーザアカウントはユーザクライアントデバイスに関連付けられており、そのイベントを複数のエージェント・イベント・サブスクリプションと照合して、1つまたは複数のイベント応答エージェントを決定するように動作する対話処理コンポーネントと、イベントを検出するのに応答して1つまたは複数のイベント応答エージェントをユーザクライアントデバイスに対して識別するように動作するクライアント通信コンポーネントと、を備え得る。装置は、本明細書に記載されるコンピュータ実装方法のいずれかを実施するように動作し得る。
コンピュータ実装方法は、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受信することであって、複数のボット能力カタログの各々は、関連付けられたボットについてボット能力を自然言語で表す、複数のボット能力カタログを受信することと、複数のユーザクライアントデバイスから複数のユーザサービスプロンプトを受信することであって、複数のユーザサービスプロンプトが自然言語で表されている、複数のユーザサービスプロンプトを受信することと、自然言語機械学習コンポーネントによって生成されたボット能力テーブルを使用して、複数のユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のユーザプロンプトの各々に対して複数のボットのうち選択されたボットを決定することと、複数のユーザサービスプロンプトを受信するのに応答して、選択されたボットを複数のユーザクライアントデバイスに提供することと、選択されたボットとのユーザ対話に基づくボット対話履歴を記録することと、ボット対話履歴に基づいて自然言語機械学習コンポーネントを更新することと、を含み得る。
コンピュータ実装方法は、ボット完了率を最適化することに基づいて自然言語機械学習コンポーネントを更新することをさらに含み得る。
コンピュータ実装方法は、ボット完了率の最適化がユーザボット棄却率に基づくこと、をさらに含み得る。
コンピュータ実装方法は、ボット完了率の最適化が、ユーザボット棄却率を定義されたボット棄却閾値未満に維持することに基づくこと、をさらに含み得る。
コンピュータ実装方法は、ボット完了率の最適化がユーザボット履歴信号に基づくこと、をさらに含み得る。
コンピュータ実装方法は、ボット情報を増大させることに基づいて自然言語機械学習コンポーネントを更新することをさらに含み得る。
コンピュータ実装方法は、ボット能力テーブルが、複数のボット能力カタログを複数のボット能力ベクトルとして表現し、方法が、複数のボット能力カタログと複数のボット能力ベクトルとの間の対応付けを修正するように、自然言語機械学習コンポーネントを更新することをさらに含むこと、をさらに含み得る。
装置は、デバイス上のプロセッサ回路と、ボットサービスシステムにおいて複数のボットについての複数のボット能力カタログを受信するようにプロセッサ回路上で動作するボット・アプリケーション・インターフェース・コンポーネントであって、複数のボット能力カタログの各々は、関連付けられたボットについてボット能力を自然言語で表す、ボット・アプリケーション・インターフェース・コンポーネントと、複数のユーザクライアントデバイスから複数のユーザサービスプロンプトを受信し、複数のユーザサービスプロンプトが自然言語で表されており、複数のユーザサービスプロンプトを受信するのに応答して、選択されたボットを複数のユーザクライアントデバイスに提供するように動作するクライアント通信コンポーネントと、自然言語機械学習コンポーネントによって生成されたボット能力テーブルを使用して、複数のユーザサービスプロンプトを複数のボット能力カタログと照合することにより、複数のユーザプロンプトの各々に対して複数のボットのうち選択されたボットを決定し、選択されたボットとのユーザ対話に基づくボット対話履歴を記録し、ボット対話履歴に基づいて自然言語機械学習コンポーネントを更新するように動作する対話処理コンポーネントと、を備え得る。装置は、本明細書に記載されるコンピュータ実装方法のいずれかを実施するように動作し得る。
コンピュータ実装方法は、複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化することであって、インスタンス化することは、多ユーザインターフェースの少なくとも一部分を複数のクライアントデバイスの各々に表示することを意味する、インスタンス化することと、複数のクライアントデバイスのうち第1のクライアントデバイスからユーザインターフェース対話を受信することと、ユーザインターフェース対話に基づいて複数のクライアントデバイス上の多ユーザインターフェースを更新することと、を含み得る。
コンピュータ実装方法は、複数のクライアントデバイス上のメッセージングクライアントが、多ユーザインターフェースの少なくとも一部分を表示することをさらに含み得る。
コンピュータ実装方法は、複数のクライアントデバイスのうちの開始元クライアントデバイスから多ユーザアプリケーションの開始を受信することと、多ユーザアプリケーションの開始に応答して複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化することと、をさらに含み得る。
コンピュータ実装方法は、多ユーザアプリケーションの開始が、メッセージングシステムに関するメッセージスレッドに関連付けられており、メッセージスレッドが複数の参加者ユーザアカウントに関連付けられており、複数の参加者ユーザアカウントが複数のクライアントデバイスに関連付けられており、多ユーザインターフェースは、複数の参加者ユーザアカウントが、メッセージスレッド内の複数の参加者ユーザアカウントに対応する複数のクライアントデバイスに関連付けられていることに基づいて、複数のクライアントデバイス上でインスタンス化されること、をさらに含み得る。
コンピュータ実装方法は、複数の参加者ユーザアカウントとメッセージスレッドとの間の関連付けに基づいてユーザインターフェース更新オブジェクトを配布することにより、複数のクライアントデバイス上の多ユーザインターフェースを更新することをさらに含み得る。
コンピュータ実装方法は、開始元クライアントデバイスが、複数の参加者ユーザアカウントのうち開始元ユーザアカウントに関連付けられており、方法が、多ユーザインターフェースを介して、複数の参加者ユーザアカウントからの入力を含むサービス要求を受信することと、そのサービス要求をメッセージングボットにサブミットすることとをさらに含むこと、をさらに含み得る。
コンピュータ実装方法は、サービス要求が開始元ユーザアカウントによってサブミットされ、サービス要求が、開始元ユーザアカウントで発生したものとしてメッセージングボットに送られること、をさらに含み得る。
コンピュータ実装方法は、複数の参加者ユーザアカウントが、開始元ユーザアカウントと、開始元ユーザアカウント以外の1つまたは複数の寄与者ユーザアカウントとを含み、入力が、開始元ユーザアカウントからのグループサービス構成と、1つまたは複数の寄与者ユーザアカウントからの1つまたは複数の個人サービス構成とを含むこと、をさらに含み得る。
コンピュータ実装方法は、1つまたは複数の個人サービス構成が、1つまたは複数のサービス要求参加確認を含むこと、をさらに含み得る。
コンピュータ実装方法は、1つまたは複数の個人サービス構成が1つまたは複数のオプション選択を含むこと、をさらに含み得る。
コンピュータ実装方法は、開始元ユーザアカウントから費用分担要求を受信することと、その費用分担要求を1つまたは複数の寄与者ユーザアカウントに送ることとをさらに含み得る。
装置は、デバイス上のプロセッサ回路と、複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化することであって、インスタンス化することは、多ユーザインターフェースの少なくとも一部分を複数のクライアントデバイスの各々に表示することを意味する、インスタンス化することと、複数のクライアントデバイスのうち第1のクライアントデバイスからユーザインターフェース対話を受信することと、ユーザインターフェース対話に基づいて複数のクライアントデバイス上の多ユーザインターフェースを更新することと、を行うようにプロセッサ回路上で動作するメッセージングコンポーネントと、を備え得る。装置は、本明細書に記載されるコンピュータ実装方法のいずれかを実施するように動作し得る。
少なくとも1つのコンピュータ可読記憶媒体は、実行されると、本明細書に記載されるコンピュータ実装方法のいずれかをシステムに実行させる命令を含み得る。
コンピュータ実装方法は、メッセージングボットが、メッセージスレッド内で参加者として表現されるのに適した、ネットワークアクセス可能なサービスへの自動化されたフロントエンドであり、メッセージングボットが任意選択で、メッセージングボットを明示的に含むメッセージスレッド内で、特に特定のユーザとメッセージングボットとの間の1対1メッセージスレッドとして、または、メッセージングボットが普段の参加者ではないメッセージスレッドであって、メッセージングボットが、サービスと対話することを目的とした、メッセージスレッドへの一時的な参加者である、メッセージスレッド内で、やり取りされること、をさらに含み得る。
装置は、メッセージングコンポーネントが、複数のクライアントデバイス上に多ユーザインターフェースをインスタンス化することであって、インスタンス化することは、多ユーザインターフェースの少なくとも一部分を複数のクライアントデバイスの各々に表示することを意味する、インスタンス化することと、複数のクライアントデバイスのうち第1のクライアントデバイスからユーザインターフェース対話を受信することと、ユーザインターフェース対話に基づいて複数のクライアントデバイス上の多ユーザインターフェースを更新することと、を行うようにプロセッサ回路上で動作し、ならびに/または、ボット・アプリケーション・インターフェース・コンポーネントが、ボット管理コンポーネントへのフロントエンド、および/もしくはボットアプリケーションのためのメッセージングシステムとして働くように構成されること、をさらに含み得る。
装置は、ボット管理コンポーネントをさらに備え得、ボット管理コンポーネントは、対話処理コンポーネントからユーザ意図を受け取り、ユーザ意図に基づいてクライアントデバイスのためのメッセージングボットオプション構成を決定し、メッセージングボットオプション構成をクライアントデバイスに送るように動作可能であり、メッセージングボットオプションをクライアントデバイスに送ることは、任意選択で、メッセージングボットオプション構成をメッセージ待ち行列に加えることを含む。
装置は、メッセージングボットオプション構成が、メッセージスレッドを表示する際のメッセージングクライアントのメッセージングインターフェースを、メッセージングボットとの対話を可能にするコントロールで構成するように動作可能であり、および/または、メッセージングボットオプション構成は、各々が異なるメッセージングボットに関連付けられた、複数のメッセージングボット起動コントロールから構成されること、をさらに含み得る。
いくつかの実施形態は、「1つの実施形態」または「一実施形態」という表現をそれらの派生形と共に使用して説明されることがある。これらの用語は、その実施形態との関連で記載される特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。明細書中の様々な箇所における「1つの実施形態では」というフレーズの出現は、必ずしもすべてが同じ実施形態を指しているとは限らない。さらに、いくつかの実施形態は、「結合された(coupled)」および「接続された(connected)」という表現をそれらの派生形と共に使用して説明されることがある。これらの用語は、必ずしも互いの同義語であることを意図されない。例えば、いくつかの実施形態は、2つ以上の要素が互いと物理的または電気的に直接接触していることを指示するために、用語「接続された」および/または「結合された」を使用して説明されることがある。しかし、用語「結合された」は、2つ以上の要素が互いと直接接触していないものの、なお互いと協働する、または相互作用することも意味し得る。
本明細書で使用される表記および術語を一般に参照すると、本明細書における詳細な説明は、コンピュータまたはコンピュータのネットワーク上で実行されるプログラム手順の点から提示されることがある。これらの手順的な説明および表現は、当業者が自身の仕事の実質的内容を他の当業者に最も効果的に伝えるために使用される。
手順は、ここでは、また一般的に、所望の結果をもたらす動作の自己充足的な連続と考えられる。それらの動作は、物理的数量の物理的操作を必要とする動作である。通常、ただし必ずそうである訳ではないが、それらの数量は、記憶、転送、組み合わせ、比較、およびその他の形で操作されることが可能な、電気信号、磁気信号、または光学信号の形態を取る。時に、主として広く使用されているという理由から、それらの信号をビット、値、要素、シンボル、文字、項、数等と呼ぶことが利便であることが判明する。しかし、これらおよび同様の用語はすべて、該当する物理的数量に関連付けられ、単にそれらの数量に適用される利便なラベルに過ぎないことに留意すべきである。
さらに、行われる操作はしばしば、追加する、または比較するなどの用語の中で参照されるが、これらは普通、人間のオペレータによって頭の中で行われる動作に関連する。そのような人間のオペレータの能力は、1つまたは複数の実施形態の一部を形成する本明細書に記載される動作のいずれにおいても、大半の場合は必要でないか、または望まれない。むしろ、それらの動作は機械動作である。様々な実施形態の動作を行うのに有用な機械には、汎用デジタルコンピュータまたは同様のデバイスが含まれる。
様々な実施形態は、これらの動作を行うための装置またはシステムにも関する。この装置は、必要とされる目的のために特別に構築され得、またはコンピュータに記憶されたコンピュータプログラムによって選択的に起動もしくは再構成される汎用コンピュータからなり得る。本明細書に提示される手順は、基本的に特定のコンピュータまたは他の装置には関係しない。本明細書の教示に従って書かれたプログラムと共に様々な汎用機械が使用され得、または必要とされる方法ステップを行うためにより特化された装置を構築することが利便であることが判明する場合もある。各種のそのような機械のために必要とされる構造は、与えられる説明から明らかになろう。
本開示の要約書は、読者が技術的開示内容の性質を手早く把握できるように提供されることを強調しておく。要約書は、請求項の範囲または意味を解釈または制限するために使用されることはないという理解の下に与えられる。また、前述の詳細な説明では、本開示を効率化する目的で様々な特徴が1つの実施形態に共にまとめられていることが見て取れる。この開示方法は、特許請求される実施形態が、各請求項に明確に述べられるよりも多くの特徴を必要とするという意向を反映しているとは解釈すべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示される実施形態のすべての特徴よりも少ない特徴に存在する。よって、以下の特許請求の範囲は、それにより詳細な説明に援用され、各請求項は別々の実施形態として独立している。添付の特許請求の範囲において、用語「including」および「in which」は、それぞれ用語「comprising」および「wherein」の平易な英語の相当語として使用される。さらに、用語「第1の」、「第2の」、「第3の」等は単にラベルとして使用され、それらの対象に数値的要件を課すものではない。
上述した内容は、開示されるアーキテクチャの例を含んでいる。無論、構成要素および/または方法論のあらゆる可能な組み合わせを記載することは可能でなく、当業者は、多くのさらなる組み合わせおよび置換が可能であることを認識されよう。それゆえに、新規なアーキテクチャは、添付の特許請求の範囲の主旨および範囲内に該当するすべてのそのような改変、修正、および変形を包含することが意図される。