(57)【要約】  リッチ・コミュニケーションを用いるメッセージング・ボットのための技法が、説明される。一実施形態においては、装置は、メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するように動作するメッセージング・コンポーネントと、メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントとを備えることができる。他の実施形態も、説明され、特許請求される。
2019511775.tif 000002
【特許請求の範囲】
【請求項１】
メッセージをクライアント・デバイスから受け取る工程と、
前記メッセージをメッセージ待ち行列に対して追加する工程と、
前記メッセージ待ち行列を監視する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
前記メッセージに関連付けられたメッセージング・ボットを決定する工程と、
前記メッセージを前記メッセージング・ボットに対して渡す工程と
を備える、コンピュータ実装方法。
【請求項２】
前記メッセージが、テキスト内容部分を備え、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出する工程と、
前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出する工程と
をさらに備える、請求項１に記載の方法。
【請求項３】
前記メッセージに対するメッセージング・ボット応答を受け取る工程と、
前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入する工程と
をさらに備える、請求項１に記載の方法。
【請求項４】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージ待ち行列内に挿入される前記メッセージング・ボット応答が、前記メッセージ・スレッドにおける表示のために印しを付けられる、請求項３に記載の方法。
【請求項５】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、前記ボット・エイリアス・テキスト断片を備える、工程と、
前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項１に記載の方法。
【請求項６】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、
前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項１に記載の方法。
【請求項７】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、
前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、
前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程と、
前記複数のブロードキャスト・ワーカが、前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程と
をさらに備える、請求項１に記載の方法。
【請求項８】
デバイス上のプロセッサ回路と、
メッセージをクライアント・デバイスから受け取り、前記メッセージをメッセージ待ち行列に対して追加するように前記プロセッサ回路上において動作するメッセージング・コンポーネントと、
前記メッセージ待ち行列を監視し、前記メッセージがメッセージング・ボット起動を示していることを検出し、前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、
前記メッセージに関連付けられたメッセージング・ボットを決定し、前記メッセージを前記メッセージング・ボットに対して渡すように動作する前記ボット・フレームワーク・コンポーネントと
を備える、装置。
【請求項９】
前記メッセージが、テキスト内容部分を備え、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出し、前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出するように動作する前記メッセージ待ち行列監視コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１０】
前記メッセージに対するメッセージング・ボット応答を受け取り、前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入するように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１１】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージング・ボット応答が、前記メッセージ・スレッドにおける表示のために印しを付けられて、前記メッセージ待ち行列内に挿入される、請求項１０に記載の装置。
【請求項１２】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程とを行うように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１３】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程とを行うように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１４】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブするように動作する前記ボット・フレームワーク・コンポーネントと、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程とを行うように動作するブロードキャスト・コンポーネントと、
前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程を行うように動作する前記複数のブロードキャスト・ワーカと
をさらに備える、請求項８に記載の装置。
【請求項１５】
命令を備える少なくとも１つのコンピュータ可読記憶媒体であって、前記命令が実行されたときに、システムに、
メッセージをクライアント・デバイスから受け取る工程と、
前記メッセージをメッセージ待ち行列に対して追加する工程と、
前記メッセージ待ち行列を監視する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
前記メッセージに関連付けられたメッセージング・ボットを決定する工程と、
前記メッセージを前記メッセージング・ボットに対して渡す工程と
を行わせる、少なくとも１つのコンピュータ可読記憶媒体。
【請求項１６】
前記メッセージが、テキスト内容部分を備え、実行されたときに、システムに、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出する工程と、
前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記メッセージが、メッセージ・スレッドに関連付けられ、実行されたときに、システムに、
前記メッセージに対するメッセージング・ボット応答を受け取る工程と、
前記メッセージ・スレッドにおける表示のために印しを付けられた前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、実行されたときに、システムに、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、前記ボット・エイリアス・テキスト断片を備える、工程と、
前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、実行されたときに、システムに、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、
前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、実行されたときに、システムに、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、
前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、
前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの１つのブロードキャスト・ワーカに対して割り当てる工程と、
前記複数のブロードキャスト・ワーカが、前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項２１】
メッセージング・サーバ、メール・サーバおよびメッセージング・システムのクライアント・フロントエンド・サーバのメッセージング・コンポーネントの１以上が、メッセージをクライアント・デバイスから受け取る工程と、
前記メッセージをメッセージ待ち行列に対して追加する工程と、
前記メッセージング・システムのワーカ・サーバのメッセージ待ち行列監視コンポーネントが、前記メッセージ待ち行列を監視する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備え、
前記メッセージ待ち行列監視コンポーネントが、前記メッセージ待ち行列内の各エントリを検査し、前記メッセージがメッセージング・ボット起動を示していることを検出するように構成され、
前記メッセージ待ち行列監視コンポーネントが、前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージについての識別子など、メッセージング・ボット起動を伴うメッセージが検出された旨のメッセージまたは通知を、ボット・フレームワーク・コンポーネントに対して渡す工程と、
前記ボット・フレームワーク・コンポーネントが、
前記メッセージに関連付けられたメッセージング・ボットを決定する工程と、
前記メッセージを前記メッセージング・ボットに対して渡す工程と
を備える、コンピュータ実装方法。
【請求項２２】
前記メッセージが、テキスト内容部分を備え、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出する工程と、
前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出する工程と
をさらに備え、および／または、
ボットについての情報を含む前記メッセージには、前記メッセージのメタデータ部分にボット起動フラグを用いてフラグが立てられているという点で、送り元クライアント・デバイスによってフラグが立てられており、メッセージ監視コンポーネントが、前記ボット起動フラグを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出するように構成される、
請求項２１に記載の方法。
【請求項２３】
前記ボット・フレームワーク・コンポーネントが、
前記メッセージに対するメッセージング・ボット応答を受け取る工程と、
前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入する工程と、
任意選択で、メッセージング・クライアントのディスプレイ上における表示のために、前記メッセージング・ボット応答を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項２１または２２に記載の方法。
【請求項２４】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージ待ち行列内に挿入される前記メッセージング・ボット応答が、前記メッセージ・スレッドにおける表示のために印しを付けられ、任意選択で、メッセージ・ボットは、ユーザによって前記メッセージ・ボットに対して送り出されたメッセージに応答して、メッセージを前記メッセージ待ち行列に対して追加することを許可され、前記メッセージ・ボットは、さらに、任意選択で、前記メッセージに対する単一の応答を送ることを認可され、および／または限られた期間だけ、前記メッセージに対する応答を認可される、請求項２３に記載の方法。
【請求項２５】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、前記ボット・フレームワーク・コンポーネントが、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、前記ボット・エイリアス・テキスト断片を備える、工程と、
前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項２１〜２４のいずれか一項に記載の方法。
【請求項２６】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、
前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項２１〜２５のいずれか一項に記載の方法。
【請求項２７】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、
前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、
前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの１つのブロードキャスト・ワーカに対して割り当てる工程と、
前記複数のブロードキャスト・ワーカが、前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程と
をさらに備える、請求項２１〜２６のいずれか一項に記載の方法。
【請求項２８】
デバイス上の、好ましくは、メッセージング・サーバおよび／もしくはメール・サーバ上の、ならびに／またはメッセージング・システムのクライアント・フロントエンド・サーバのメッセージング・コンポーネントにおけるプロセッサ回路と、
メッセージをクライアント・デバイスから受け取り、前記メッセージをメッセージ待ち行列に対して追加するように前記プロセッサ回路上において動作するメッセージング・コンポーネントと、
前記メッセージ待ち行列を監視し、前記メッセージがメッセージング・ボット起動を示していることを検出するように動作する、前記メッセージング・システムのワーカ・サーバのメッセージ待ち行列監視コンポーネントであって、前記メッセージ待ち行列監視コンポーネントが、前記メッセージ待ち行列内の各エントリを検査し、前記メッセージがメッセージング・ボット起動を示していることを検出するように構成される、メッセージ待ち行列監視コンポーネントと、
前記メッセージ待ち行列監視コンポーネントが、前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージについての識別子など、メッセージング・ボット起動を伴うメッセージが検出された旨のメッセージまたは通知を、ボット・フレームワーク・コンポーネントに対して渡すことと、
前記メッセージに関連付けられたメッセージング・ボットを決定し、前記メッセージを前記メッセージング・ボットに対して渡すように動作する前記ボット・フレームワーク・コンポーネントと
を備える、装置。
【請求項２９】
前記メッセージが、テキスト内容部分を備え、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出し、前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出するように動作する前記メッセージ待ち行列監視コンポーネント
をさらに備え、および／または
ボットについての情報を含む前記メッセージには、前記メッセージのメタデータ部分にボット起動フラグを用いてフラグが立てられているという点で、送り元クライアント・デバイスによってフラグが立てられており、メッセージ監視コンポーネントが、前記ボット起動フラグを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出するように構成される、
請求項２８に記載の装置。
【請求項３０】
前記メッセージに対するメッセージング・ボット応答を受け取り、前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入し、任意選択で、メッセージング・クライアントのディスプレイ上における表示のために、前記メッセージング・ボット応答を前記クライアント・デバイスに対して送信するように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項２８または２９に記載の装置。
【請求項３１】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージ待ち行列内に挿入される前記メッセージング・ボット応答が、前記メッセージ・スレッドにおける表示のために印しを付けられ、任意選択で、メッセージ・ボットは、ユーザによって前記メッセージ・ボットに対して送り出されたメッセージに応答して、メッセージを前記メッセージ待ち行列に対して追加することを許可され、前記メッセージ・ボットは、さらに、任意選択で、前記メッセージに対する単一の応答を送ることを認可され、および／または限られた期間だけ、前記メッセージに対する応答を認可される、請求項３０に記載の装置。
【請求項３２】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程とを行うように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項２８〜３１のいずれか一項に記載の装置。
【請求項３３】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程とを行うように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項２８〜３２のいずれか一項に記載の装置。
【請求項３４】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブするように動作する前記ボット・フレームワーク・コンポーネントと、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの１つのブロードキャスト・ワーカに対して割り当てる工程とを行うように動作するブロードキャスト・コンポーネントと、
前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程を行うように動作する前記複数のブロードキャスト・ワーカと
をさらに備える、請求項２８〜３３のいずれか一項に記載の装置。
【請求項３５】
実行されたときに、システムに、請求項２１〜２７のいずれか一項に記載の方法を遂行させる命令を備える、少なくとも１つのコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メッセージング・ボット・リッチ・コミュニケーションのための技法に関する。
【背景技術】
【０００２】
ユーザは、メッセージング・システムにおいて、２名以上のユーザ間でテキストベースの会話で互いにメッセージをやりとりしながら互いに対話することがある。ユーザは、メッセージング・システムにおいて自身に関連付けられているユーザ・アカウントを有してもよく、ユーザ・アカウントは、ユーザのオンラインアイデンティティ、ユーザ宛てに送られるメッセージの宛先を与え、一般には、メッセージング・システムへのユーザのアクセスとその使用を調整する。ユーザは、モバイル・デバイス（例、携帯電話）、デスクトップコンピュータ、ウェブブラウザ、専門のメッセージング・クライアント等を含め、多様なエンドポイントからメッセージング・システムにアクセスしてもよい。
【図面の簡単な説明】
【０００３】
【図１】メッセージング・システムの一実施形態を示す図。
【図２】ソーシャル・グラフの一実施例を示す図。
【図３Ａ】メッセージング・インターフェースを表示したユーザ・インターフェースの一実施形態を示す図。
【図３Ｂ】運送インターフェースを表示したユーザ・インターフェースの一実施形態を示す図。
【図３Ｃ】行先構成インターフェースを表示したユーザ・インターフェースの一実施形態を示す図。
【図３Ｄ】構成された運送要求を表示したユーザ・インターフェースの一実施形態を示す図。
【図３Ｅ】運送要求をメッセージ・スレッド内に表示したユーザ・インターフェースの一実施形態を示す図。
【図４Ａ】ボット・メッセージをメッセージ・スレッド内に表示したユーザ・インターフェースの一実施形態を示す図。
【図４Ｂ】サービス更新用のボット・メッセージをメッセージ・スレッド内に表示したユーザ・インターフェースの一実施形態を示す図。
【図４Ｃ】サービス提供者からのライブ・チャット・メッセージを表示したユーザ・インターフェースの一実施形態を示す図。
【図５Ａ】トリガをメッセージ・スレッド内に表示したユーザ・インターフェースの一実施形態を示す図。
【図５Ｂ】トリガに応答して提案されるサービスを表示したユーザ・インターフェースの一実施形態を示す図。
【図６】アカウントをリンクするように促すプロンプトを表示したユーザ・インターフェースの一実施形態を示す図。
【図７Ａ】新たなユーザ・ダイアログを表示したユーザ・インターフェースの一実施形態を示す図。
【図７Ｂ】アカウント作成ダイアログのためのアカウント詳細要求を表示したユーザ・インターフェースの一実施形態を示す図。
【図７Ｃ】完成されたアカウント作成ダイアログを表示したユーザ・インターフェースの一実施形態を示す図。
【図８Ａ】提案されるボットとともに部分的ボット・アドレスを表示したユーザ・インターフェースの一実施形態を示す図。
【図８Ｂ】完成ボット・アドレスに基づいて取り出された提案されるコマンドを表示したユーザ・インターフェースの一実施形態を示す図。
【図８Ｃ】部分的ボット・コマンドに基づいて取り出された更新された提案されるコマンドを表示したユーザ・インターフェースの一実施形態を示す図。
【図８Ｄ】スレッド内ボット応答を表示したユーザ・インターフェースの一実施形態を示す図。
【図９】メッセージング・システムを通して送信されるメッセージの一実施形態を示す図。
【図１０】メッセージング・システムにおけるメッセージに対する応答の一実施形態を示す図。
【図１１】メッセージング・システムにおけるサブスクリプション・コマンドの一実施形態を示す図。
【図１２】メッセージング・システムにおけるブロードキャスト・メッセージの一実施形態を示す図。
【図１３Ａ】図１のシステムに関する第１の論理フローの一実施形態を示す図。
【図１３Ｂ】図１のシステムに関する第２の論理フローの一実施形態を示す図。
【図１４】図１のシステムに関する中央集中システムの一実施形態を示す図。
【図１５】図１のシステムに関する分散システムの一実施形態を示す図。
【図１６】コンピューティングアーキテクチャの一実施形態を示す図。
【図１７】通信アーキテクチャの一実施形態を示す図。
【図１８】無線デバイスアーキテクチャの一実施形態を示す図。
【発明を実施するための形態】
【０００４】
以下では、本明細書において説明されるいくつかの新規な実施形態についての基本的な理解を提供するために、簡略化された要約を提示する。この要約は、広範な概要ではなく、主要／必須な要素を識別すること、またはそれらの範囲の輪郭を描くことは、意図されていない。いくつかの概念は、後で提示されるより詳細な説明に対する前置きとして、簡略化された形態で提示される。
【０００５】
様々な実施形態は、一般に、メッセージング・ボットのための技法に対して向けられている。いくつかの実施形態は、特に、メッセージング・アプリケーション内における対話を用いる、メッセージング・ボットのための技法に対して向けられている。いくつかの実施形態は、特に、メッセージング・システム上においてリッチ・コミュニケーションを使用する、メッセージング・ボットのための技法に対して向けられている。
【０００６】
一実施形態においては、例えば、装置は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取り、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動し、メッセージング・ボット対話ユーザ・インターフェースを介してメッセージング・ボット対話コマンドを受け取り、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示するように動作するユーザ・インターフェース・コンポーネントと、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信し、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取るように動作するクライアント・メッセージング・コンポーネントとを備えることができる。他の実施形態も、説明され、特許請求される。
【０００７】
別の実施形態においては、例えば、装置は、メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するように動作するメッセージング・コンポーネントと、メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントとを備えることができる。他の実施形態も、説明され、特許請求される。
【０００８】
上記および関連する目的を達成するために、ある特定の例示的な態様が、以下の説明および添付の図面に関連して本明細書において記載される。これらの態様は、本明細書において開示される原理を実行することができる様々な方法を示し、全ての態様およびその均等物が、特許請求される主題の範囲内にあることが意図される。他の利点および新規な特徴は、以下の詳細な説明を図面と併せて検討することにより明らかとなるであろう。
【０００９】
本発明による実施形態は、特に、方法、記憶媒体、システム、およびコンピュータ・プログラム製品に向けられた、添付の特許請求の範囲において開示され、１つの請求項カテゴリ、例えば、方法において言及されたいずれの特徴も、別の請求項カテゴリ、例えば、システムにおいて、同様に特許請求され得る。添付の特許請求の範囲における前述に対する従属および参照は、もっぱら形式的な理由で選択される。しかしながら、いずれかの先行請求項に対する意図的な参照（特に複数の従属）からもたらされるいかなる主題も、請求項およびそれの特徴のいずれかの組み合わせが開示されるように、同様に特許請求され得、添付の特許請求の範囲において選択される従属にかかわらず、特許請求され得る。特許請求されることが可能な主題は、添付の特許請求の範囲において述べられたような特徴の組み合わせばかりでなく、特許請求の範囲における特徴の他の任意の組み合わせも備え、特許請求の範囲において言及された各特徴は、特許請求の範囲における他の任意の特徴または他の特徴の組み合わせと組み合わされ得る。さらに、本明細書において説明または描写される実施形態および特徴のいずれも、単独の請求項において、および／または本明細書において説明もしくは描写される任意の実施形態もしくは特徴との、もしくは添付の特許請求の範囲の特徴のいずれかとの任意の組み合わせで、特許請求され得る。
【００１０】
本発明による一実施形態においては、コンピュータ実装方法は、
メッセージをクライアント・デバイスから受け取る工程と、
メッセージをメッセージ待ち行列に対して追加する工程と、
メッセージ待ち行列を監視する工程と、
メッセージがメッセージング・ボット起動を示していることを検出する工程と、
メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
メッセージに関連付けられたメッセージング・ボットを決定する工程と、
メッセージをメッセージング・ボットに対して渡す工程と
を備える。
【００１１】
本発明による一実施形態においては、コンピュータ実装方法は、
メッセージング・サーバ、メール・サーバおよびメッセージング・システムのクライアント・フロントエンド・サーバのメッセージング・コンポーネントの１以上が、メッセージをクライアント・デバイスから受け取る工程と、
メッセージをメッセージ待ち行列に対して追加する工程と、
メッセージング・システムのワーカ・サーバのメッセージ待ち行列監視コンポーネントが、メッセージ待ち行列を監視する工程と、
メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備え、
メッセージ待ち行列監視コンポーネントが、メッセージ待ち行列内の各エントリを検査し、メッセージがメッセージング・ボット起動を示していることを検出するように構成され、
コンピュータ実装方法は、
メッセージ待ち行列監視コンポーネントが、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージについての識別子など、メッセージング・ボット起動を伴うメッセージが検出された旨のメッセージまたは通知を、ボット・フレームワーク・コンポーネントに対して渡す工程と、
ボット・フレームワーク・コンポーネントが、
メッセージに関連付けられたメッセージング・ボットを決定する工程と、
メッセージをメッセージング・ボットに対して渡す工程と
を備える。
【００１２】
本発明による一実施形態においては、メッセージが、テキスト内容部分を備えることができ、方法は、
メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、
ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備えることができる。
【００１３】
本発明による一実施形態においては、メッセージが、テキスト内容部分を備えることができ、方法は、
メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、
ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程と
を備えることができ、および／または
ボットについての情報を含むメッセージには、メッセージのメタデータ部分にボット起動フラグを用いてフラグが立てられているという点で、送り元クライアント・デバイスによってフラグが立てられており、メッセージ監視コンポーネントが、ボット起動フラグを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出するように構成される。
【００１４】
本発明による一実施形態においては、方法は、
メッセージに対するメッセージング・ボット応答を受け取る工程と、
メッセージング・ボット応答をメッセージ待ち行列内に挿入する工程と
を備えることができる。
【００１５】
本発明による一実施形態においては、方法は、
メッセージに対するメッセージング・ボット応答を受け取る工程と、
メッセージング・ボット応答をメッセージ待ち行列内に挿入する工程と、任意選択で、
メッセージング・クライアントのディスプレイ上における表示のために、メッセージング・ボット応答をクライアント・デバイスに対して送信する工程と
を備えることができる。
【００１６】
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージ待ち行列内に挿入されるメッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられ得る。
【００１７】
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージ待ち行列内に挿入されるメッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられ得、任意選択で、メッセージ・ボットは、ユーザによってメッセージ・ボットに対して送り出されたメッセージに応答して、メッセージをメッセージ待ち行列に対して追加することを許可され、メッセージ・ボットは、さらに、任意選択で、メッセージに対する単一の応答を送ることを認可され、および／または限られた期間だけ、メッセージに対する応答を認可され得る。
【００１８】
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、
ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、
１以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程と
をさらに備えることができる。
【００１９】
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備え、任意選択で、ボット・フレームワーク・コンポーネントが、
ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
コマンド開始部分をメッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、１以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、
１以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程と
をさらに備えることができる。
【００２０】
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージが、ボット・サブスクリプション・コマンドを備え、
ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、
メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、
複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの１つのブロードキャスト・ワーカに対して割り当てる工程と、
複数のブロードキャスト・ワーカが、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程と
をさらに備えることができる。
【００２１】
本発明による一実施形態においては、装置は、
デバイス上のプロセッサ回路と、
メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するようにプロセッサ回路上において動作するメッセージング・コンポーネントと、
メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、
メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントと
を備える。
【００２２】
本発明による一実施形態においては、メッセージが、テキスト内容部分を備え、装置は、
メッセージのテキスト内容部分においてボット起動シンボルを検出し、ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出するように動作するメッセージ待ち行列監視コンポーネント
をさらに備えることができる。
【００２３】
本発明による一実施形態においては、装置は、
メッセージに対するメッセージング・ボット応答を受け取り、メッセージング・ボット応答をメッセージ待ち行列内に挿入するように動作するボット・フレームワーク・コンポーネント
をさらに備えることができる。
【００２４】
本発明による一実施形態においては、メッセージがメッセージ・スレッドに関連付けられ得、メッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられて、メッセージ待ち行列内に挿入され得る、装置。
【００２５】
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、装置は、
ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、１以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、１以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程とを行うように動作するボット・フレームワーク・コンポーネント
をさらに備えることができる。
【００２６】
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備え、装置は、
ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、コマンド開始部分をメッセージング・ボットに対して渡す工程と、１以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、１以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、１以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程とを行うように動作するボット・フレームワーク・コンポーネント
をさらに備えることができる。
【００２７】
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージが、ボット・サブスクリプション・コマンドを備え、装置は、
ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブするように動作するボット・フレームワーク・コンポーネントと、
ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程とを行うように動作するブロードキャスト・コンポーネントと、
複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程とを行うように動作する複数のブロードキャスト・ワーカと
をさらに備えることができる。
【００２８】
本発明による一実施形態においては、命令を備える少なくとも１つのコンピュータ可読記憶媒体は、命令が実行されたときに、システムに、
メッセージをクライアント・デバイスから受け取る工程と、
メッセージをメッセージ待ち行列に対して追加する工程と、
メッセージ待ち行列を監視する工程と、
メッセージがメッセージング・ボット起動を示していることを検出する工程と、
メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
メッセージに関連付けられたメッセージング・ボットを決定する工程と、
メッセージをメッセージング・ボットに対して渡す工程と
を行わせることができる。
【００２９】
本発明による一実施形態においては、メッセージが、テキスト内容部分を備えることができ、コンピュータ可読記憶媒体は、実行されたときに、システムに、
メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、
ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程と
を行わせる命令をさらに備えることができる。
【００３０】
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、コンピュータ可読記憶媒体は、実行されたときに、システムに、
メッセージに対するメッセージング・ボット応答を受け取る工程と、
メッセージ・スレッドにおける表示のために印しを付けられたメッセージング・ボット応答をメッセージ待ち行列内に挿入する工程と
を行わせることができる命令をさらに備えることができる。
【００３１】
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、コンピュータ可読記憶媒体は、実行されたときに、システムに、
ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、
１以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程と
を行わせることができる命令をさらに備えることができる。
【００３２】
本発明による一実施形態においては、メッセージが、テキスト部分を備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備えることができ、コンピュータ可読記憶媒体は、実行されたときに、システムに、
ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
コマンド開始部分をメッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、１以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、
１以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程と
を行わせることができる命令をさらに備える。
【００３３】
本発明による一実施形態においては、メッセージが、メッセージ・スレッドに関連付けられ得、メッセージが、ボット・サブスクリプション・コマンドを備え、コンピュータ可読記憶媒体は、実行されたときに、システムに、
ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、
メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、
複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの１つのブロードキャスト・ワーカに対して割り当てる工程と、
複数のブロードキャスト・ワーカが、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程と
を行わせることができる命令をさらに備えることができる。
【００３４】
本発明によるさらなる一実施形態においては、１以上のコンピュータ可読非一時的記憶媒体は、実行されたときに、本発明または上述の実施形態のいずれかによる方法を遂行するように動作可能なソフトウェアを具体化する。
【００３５】
本発明によるさらなる一実施形態においては、システムは、１以上のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を備える、少なくとも１つのメモリとを備え、プロセッサは、命令を実行したときに、本発明または上述の実施形態のいずれかによる方法を遂行するように動作可能である。
【００３６】
本発明によるさらなる一実施形態においては、好ましくは、コンピュータ可読非一時的記憶媒体を備える、コンピュータ・プログラム製品は、データ処理システム上において実行されたときに、本発明または上述の実施形態のいずれかによる方法を遂行するように動作可能である。
【００３７】
ネットワーク接続されたコンピューティング・デバイスは、それらのユーザに、対人コミュニケーションに関わるための先例のない能力を提供することができる。人々は、友達、家族、同僚、および他の仲間とのメッセージング対話に関わることができる。交信相手とのユーザのメッセージ交換は、各々が、別個のメッセージ・スレッド内に維持され得る。
【００３８】
これらのネットワーク接続されたコンピューティング・デバイスは、それらのユーザに、ネットワーク・アクセス可能なサービスに対するアクセスも提供することができる。例えば、輸送サービス、ダイニング・サービス、エンターテイメント・サービス、および他のサービスは、人々が自分のクライアント・デバイスを使用して、それらのサービスと関わることを可能にするために、ウェブサイト、ウェブ・アプリケーション、クライアント・アプリケーション、または他のネットワーク・アクセスを可能にする技法を使用することができる。いくつかのエンターテイメントまたはメディア・サービスなど、いくつかのケースにおいては、サービスは、クライアント・デバイスを介して、準備されること、および配信されることがともに可能である。例えば、音楽は、クライアント・デバイスを介して購入され、再生するためにクライアント・デバイスに対して配信され得る。輸送、ダイニング、および自身のエンターテイメントなど、他のケースにおいては、サービスは、クライアント・デバイスを介して準備され得るが、クライアント・デバイスの外部において遂行される。例えば、自動車同乗サービスは、クライアント・デバイスを介して準備され得るが、自動車同乗をユーザに対して提供する自動車およびドライバを通して遂行され得る。
【００３９】
いくつかのケースにおいては、ネットワーク・アクセス可能なサービスの使用は、２人以上の人に関連することができる。特に、サービスに対するユーザのアクセスが、彼らがメッセージングのためにも使用するクライアント・デバイスである場合、ユーザは、メッセージング・クライアントにおけるネットワーク・アクセス可能なサービスとの彼らの関わりを、サービスが関連する他人と共有することから、利益を得ることができる。そのため、メッセージ・スレッドは、交信相手とのユーザのオンライン・ソーシャル・リレーションシップのためのハブとしての役割を果たすことができ、メッセージ・スレッドは、メッセージングのために使用される同じクライアントを介して要求され、監視され、または関わりを持たされるサービスを組み込む。
【００４０】
メッセージング・コンテキストを介してサービスと対話する際に、ユーザを支援するために、サービスは、メッセージング・システム内において、メッセージング・ボットとして表現され得る。メッセージング・ボットは、メッセージ・スレッド内における参加者として表現され得る、ネットワーク・アクセス可能なサービスに対する完全または部分的に自動化されたフロントエンドであることができる。いくつかのケースにおいては、特定のユーザとメッセージング・ボットとの間の１対１メッセージ・スレッドなど、メッセージング・ボットを明示的に含むメッセージ・スレッドにおいて、メッセージング・ボットとやり取りすることができる。他のケースにおいては、メッセージング・ボットが、常連の参加者ではなく、メッセージング・ボットが、サービスと対話することを目的とした、メッセージ・スレッドへの一時的な参加者である、メッセージ・スレッドにおいて、メッセージング・ボットとやり取りすることができる。メッセージング・ボットは、２人のユーザ間の１対１スレッドであるか、それとも複数のユーザ間のグループ・スレッドであるかにかかわらず、他の任意のスレッドへの一時的な参加者として含まれ得る。
【００４１】
そのため、ユーザは、メッセージング・クライアントの馴染み深いエクスペリエンス内において、ネットワーク・サービスと関わることができる。さらに、メッセージング・クライアントを使用することによって、ユーザは、他の人々を含むことを許容するように、メッセージング・コンテキスト内において、ネットワーク・サービスと関わることができる。いくつかのケースにおいては、これは、友達または家族に輸送詳細について知らせるなど、単純にサービスに関して他の人々に知らせることができる。他のケースにおいては、これは、ディナー、同乗、エンターテイメント、または他のサービスが準備される場合など、複数の人々が使用するための、複数の人々に対するサービスの遂行を可能にすることができる。結果として、実施形態は、ネットワーク・アクセス可能なサービスを使用するエクスペリエンスを改善することができ、メッセージング・システムのユーザに対するネットワーク・アクセス可能なサービスのリーチを拡大することができる。
【００４２】
ここで、図面を参照し、図面では、類似の要素は、全体を通して同様の参照符号を用いて示している。以下の説明では、その完全な理解を与えるため、説明を目的として、様々な具体的詳細について記載している。しかしながら、これら特定の詳細を省いても、新規な実施形態を実施できることは明らかであろう。一方で、周知の構造およびデバイスについては、その説明を容易とするために、ブロック図の形式で示している。その意図は、請求項に係る主題に矛盾しないあらゆる変更、均等物、および代替案を包括することである。
【００４３】
本明細書で使用される「ａ」および「ｂ」および「ｃ」および同様な記号は、任意の正の整数を表す変数であることを意図していることに留意されたい。したがって、例えば、実施態様においてａ＝５の値が設定される場合、コンポーネント１２２−１〜１２２−ａとして示される一式のコンポーネント１２２は、コンポーネント１２２−１、１２２−２、１２２−３、１２２−４、および１２２−５を含む。実施形態は、この文脈に限定されない。
【００４４】
図１は、メッセージング・システム１００のブロック図を示す。一実施形態では、メッセージング・システム１００は、１つまたは複数のコンポーネントを含むソフトウェア・アプリケーションを有するコンピュータ実装システムを含み得る。図１に示すメッセージング・システム１００は、特定のトポロジにおいて限定された数の要素を有するが、メッセージング・システム１００は、所与の実施態様に関して所望されるように、代替トポロジにおいてより多くのまたはより少ない要素を含むことができることが理解されるであろう。
【００４５】
メッセージング・サーバ１１０は、メッセージング・システム１００の一部としてのメッセージング・プラットフォームによって動作させられる、１つまたは複数のメッセージング・サーバを備えることができる。メッセージング・サーバは、インターネット・アクセス可能なサーバを備えることができ、ネットワーク１２０は、メッセージング・システム１００の様々なデバイスを接続し、少なくとも一部にインターネットを備える。
【００４６】
ユーザは、スマートフォン・デバイス１５０を所有し、動作させることができる。スマートフォン・デバイス１５０は、ｉＰｈｏｎｅ（登録商標）デバイス、Ａｎｄｒｏｉｄ（登録商標）デバイス、Ｂｌａｃｋｂｅｒｒｙ（登録商標）デバイス、またはスマートフォン形態に準拠した他の任意のモバイル・コンピューティング・デバイスを備えることができる。スマートフォン・デバイス１５０は、セルラー信号１３５を使用し、セル・システム１３０を介して、ネットワーク１２０に対して接続することが可能な、セルラー・デバイスであることができる。いくつかの実施形態、およびいくつかのケースにおいては、スマートフォン・デバイス１５０は、追加的または代替的に、Ｗｉ−Ｆｉまたは他のネットワーク接続技術を使用して、ネットワーク１２０に対して接続することができる。スマートフォン・デバイス１５０は、メッセージング・クライアント、ウェブブラウザ、または他のローカル・アプリケーションを実行して、メッセージング・サーバ１１０にアクセスすることができる。
【００４７】
同じユーザは、タブレット・デバイス１６０を所有し、動作させることができる。タブレット・デバイス１５０は、ｉＰａｄ（登録商標）デバイス、Ａｎｄｒｏｉｄ（登録商標）タブレット・デバイス、Ｋｉｎｄｌｅ  Ｆｉｒｅ（登録商標）デバイス、またはタブレット形態に準拠した他の任意のモバイル・コンピューティング・デバイスを備えることができる。タブレット・デバイス１６０は、Ｗｉ−Ｆｉ信号１４５を使用し、Ｗｉ−Ｆｉアクセス・ポイント１４０を介して、ネットワーク１２０に対して接続することが可能な、Ｗｉ−Ｆｉデバイスであることができる。いくつかの実施形態、およびいくつかのケースにおいては、タブレット・デバイス１６０は、追加的または代替的に、セルラーまたは他のネットワーク接続技術を使用して、ネットワーク１２０に対して接続することができる。タブレット・デバイス１６０は、メッセージング・クライアント、ウェブブラウザ、または他のローカル・アプリケーションを実行して、メッセージング・サーバ１１０にアクセスすることができる。
【００４８】
同じユーザは、パーソナル・コンピュータ・デバイス１８０を所有し、動作させることができる。パーソナル・コンピュータ・デバイス１８０は、Ｍａｃ  ＯＳ（登録商標）デバイス、Ｗｉｎｄｏｗｓ（登録商標）デバイス、Ｌｉｎｕｘ（登録商標）デバイス、または別のオペレーティングシステムを走らせる他のコンピュータ・デバイスを備えることができる。パーソナル・コンピュータ・デバイス１８０は、イーサネット（登録商標）接続を介して、ネットワーク１２０に対して接続することが可能な、イーサネット・デバイスであることができる。いくつかの実施形態、およびいくつかのケースにおいては、パーソナル・コンピュータ・デバイス１８０は、追加的または代替的に、ネットワーク１２０に対するセルラー、Ｗｉ−Ｆｉ、または他のネットワーク接続技術を使用することができる。パーソナル・コンピュータ・デバイス１８０は、メッセージング・クライアント、ウェブブラウザ１７０、または他のローカル・アプリケーションを実行して、メッセージング・サーバ１１０にアクセスすることができる。
【００４９】
メッセージング・クライアントは、専用メッセージング・クライアントであることができる。専用メッセージング・クライアントは、具体的には、メッセージング・サーバ１１０を含むメッセージング・プラットフォームを管理する、メッセージング・プロバイダに関連付けられ得る。専用メッセージング・クライアントは、メッセージング・サーバ１１０を含むメッセージング・プラットフォームを管理する、メッセージング・プロバイダを含む、複数の異なるメッセージング・プロバイダとともに働くように動作する、汎用クライアントであることができる。
【００５０】
メッセージング・クライアントは、追加の機能性を提供する、アプリケーションのコンポーネントであることができる。例えば、ソーシャル・ネットワーキング・サービスは、ソーシャル・ネットワーキング・サービスにアクセスし、使用するために、モバイル・デバイス上において使用する、ソーシャル・ネットワーキング・アプリケーションを提供することができる。ソーシャル・ネットワーキング・サービスは、メッセージング・サーバ１１０によって提供され得るような、メッセージング機能性を含むことができる。メッセージング・サーバ１１０は、ソーシャル・ネットワーキング・サービスのための、コンピューティング・デバイスの１つのコンポーネントであることができ、コンピューティング・デバイスは、ソーシャル・ネットワーキング・サービスの追加の機能性を提供することが理解されよう。同様に、ソーシャル・ネットワーキング・アプリケーションは、メッセージング機能性および追加のソーシャル・ネットワーキング機能性の両方を提供することができる。
【００５１】
いくつかのケースにおいては、メッセージング・エンドポイントは、ユーザ・セッションの間、状態を保持しておくことができ、いくつかのケースにおいては、メッセージング・エンドポイントは、ユーザ・セッションの間、状態を放棄することができる。メッセージング・エンドポイントは、メッセージ受信ボックスの現在の状態を保持しておくために、ローカル・ストアを使用することができる。例えば、ローカル・アプリケーションが中止された、もしくは他の方法でメモリから除去された、またはデバイスの電源がオフにされ、再びオンにされた状況を含む、１つのセッションと次のセッションとの間に、状態が取り出され得るように、ローカル・ストアは、永続的ストレージ内にセーブされ得る。代替的に、メッセージング・エンドポイントは、メッセージ受信ボックスの現在の状態を保持するが、メッセージ受信ボックスの状態を永続的ストレージにコミットすることを差し控えるために、メモリ・キャッシュを使用することができる。
【００５２】
メッセージ受信ボックスの状態を保持するメッセージング・エンドポイントは、専用メッセージング・アプリケーション、またはソーシャル・ネットワーキング・アプリケーションなど、別のローカル・アプリケーション内に統合されたメッセージング・ユーティリティを備えることができる。メッセージ受信ボックスの状態を放棄するメッセージング・エンドポイントは、ウェブブラウザ内において実施されるメッセージング・アクセスを備えることができる。一実施形態においては、パーソナル・コンピュータ・デバイス１８０上において実行されるウェブブラウザ１７０などの、ウェブブラウザは、メッセージング機能性をユーザに対して提示するために、メッセージング・サーバと対話する、ＨＴＭＬ５コードを実行することができる。
【００５３】
ユーザは、スマートフォン・デバイス１５０、タブレット・デバイス１６０、およびパーソナル・コンピュータ・デバイス１８０を含む、複数のデバイスから、メッセージを送り、受け取ることができる。ユーザは、スマートフォン・デバイス１５０上において第１のメッセージング・アプリケーションを、タブレット・デバイス１６０において第２のメッセージング・アプリケーションを、パーソナル・コンピュータ・デバイス１８０上においてウェブブラウザ１７０を使用することができる。第１および第２のメッセージング・アプリケーションは、両方のデバイス上において同じアプリケーションのインストールを備えることができる。第１および第２のメッセージング・アプリケーションは、共通アプリケーションのスマートフォン固有およびタブレット固有のバージョンを備えることができる。第１および第２のメッセージング・アプリケーションは、別個のアプリケーションを備えることができる。
【００５４】
ユーザは、メッセージ受信ボックスが彼らのデバイスの間で整合的に保たれるようにすることから利益を得ることができる。ユーザは、自宅から離れている間は、セル・システム１３０上においてスマートフォン・デバイス１５０を使用して、セル・システム１３０を介して、メッセージを送り、受け取ることができる。ユーザは、コーヒー・ショップ、またはＷｉ−Ｆｉをオファーする他の場所に立ち寄り、タブレット・デバイス１６０をＷｉ−Ｆｉアクセス・ポイント１４０に対して接続することができる。タブレット・デバイス１６０は、メッセージ受信ボックスについての既存の知られた状態を取り出し、スマートフォン・デバイス１５０を動作させている間にユーザによって受け取られ得た、タブレット・デバイス１６０がネットワークに対して最後にアクセスした時以降に発生した更新を受け取ることができ、それには、スマートフォン・デバイス１５０によって送られたいずれのメッセージも含む。ユーザは、その後、帰宅し、パーソナル・コンピュータ・デバイス１８０上においてウェブブラウザ１７０を使用して、メッセージ受信ボックスにアクセスすることができる。ウェブブラウザ１７０は、メッセージ受信ボックスについての既存の状態を維持していないので、またはそうでない場合既存の状態にアクセスしていないので、メッセージ受信ボックスの現在の状態のスナップショットをメッセージング・サーバ１１０から受け取ることができる。その後、ウェブブラウザ１７０は、メッセージング・サーバ１１０を用いてユーザ・セッションを維持している限り、メッセージ受信ボックスの状態に対するいずれの新たな変化についての漸進的な更新も取り出すことができ、ウェブブラウザ１７０がユーザによって閉じられたときなど、セッションの最後において、メッセージ受信ボックスについての知られた状態を破棄する。限定することなく、更新は、メールボックスに対するメッセージの追加、メールボックスからのメッセージの削除、および開封確認に対応することができる。
【００５５】
メッセージング・システム１００は、複数のメッセージを備えるように、メッセージング受信ボックスを定義することによって、動作することができ、各メッセージは、２人以上の参加者の間の通信の個々のトランザクションである。メール・サーバは、メッセージング受信ボックスについてのメッセージ・インデックスを維持することによって、動作することができる。メール・サーバは、メッセージを受け取り、メッセージをメール・アーカイブ内に記憶することができ、メッセージは、そこから、メッセージ・インデックスに対する参照を通して、取り出され得る。メール・クライアントは、メール・サーバに対して接続し、最後の更新以降にメール・アーカイブに対して追加されたメッセージを取り出すことができる。メール・クライアントは、どんなメッセージがメール・アーカイブ内に記憶されているかを示すメール・インデックスを、メール・アーカイブから受け取ることができる。メール・クライアントは、どのメッセージを取り逃しているかを決定するために、メール・アーカイブを現在の受信ボックスと比較することができ、その後、それらをメール・アーカイブに要求する。メール・クライアントは、受信ボックスに対する変化を起こすことができ、それは、メール・アーカイブに対して送られ、メール・アーカイブ上におけるメール受信ボックスの表現に対して起こす変更をメール・アーカイブに命令する、メール受信ボックス命令をもたらす。
【００５６】
メッセージング・システムによって仲介されるメッセージング対話は、メッセージ・スレッドとして知られる共有空間に組織され得る。メッセージ・スレッドは、ユーザの特定のグループの間で共有されるメッセージを一緒に収集することができる。ユーザのペアの間で個々に送られるメッセージは、ユーザのペアの間のプライベートなメッセージングと一意的に関連付けられた、１対１メッセージ・スレッド内に収集され得る。３人以上のユーザのグループの間で送られるメッセージは、メンバシップによって一意的に定義され得ないが、代わりに、いくつかの実施形態においては、グループ・スレッドを一意的に識別する識別子によって定義され得る。グループ・スレッドにおけるメンバシップは、いくつかの実施形態においては、メンバを追加し、および／または失いながら、時間とともに変動する。
【００５７】
メッセージング・システム１００は、ユーザ間の対話から生成される知識を使用してもよい。メッセージング・システム１００はソーシャル・ネットワーキング・システムのコンポーネントを備えてもよく、ソーシャル・ネットワーキング・システムのより幅広い対話から生成される知識を使用してもよい。このように、メッセージング・システム１００およびより大きなソーシャル・ネットワーキング・システムのユーザのプライバシを保護するために、メッセージング・システム１００は、ユーザがそのアクションをメッセージング・システム１００によって記録させる、または、例えば、適切なプライバシ設定を設定することによって他のシステム（例、サードパーティシステム）と共有させることをオプトインまたはオプトアウトするのを可能にする認可サーバ（または他の適したコンポーネント）を含み得る。ユーザのプライバシ設定は、ユーザに関連付けられているどの情報を記録してもよいか、ユーザに関連付けられている情報をどのように記録してもよいか、ユーザに関連付けられている情報をいつ記録してもよいか、ユーザに関連付けられている情報を誰が記録してもよいか、ユーザに関連付けられている情報を誰と共有してもよいか、ユーザに関連付けられている情報をどのような目的で記録または共有してもよいかを決定してもよい。認可サーバまたは他の認可コンポーネントは、ブロッキング、データのハッシュ化、匿名化、または他の適切な技術により、メッセージング・システム１００およびソーシャル・ネットワーキング・システムの他の要素のユーザの１つまたは複数のプライバシ設定を実施するために使用してもよい。
【００５８】
図２は、ソーシャル・グラフ２００の一実施例を示す。特定の実施形態において、ソーシャル・ネットワーキング・システムは、ソーシャルグラフデータ構造として、１つまたは複数のソーシャル・グラフ２００を１つまたは複数のデータストアに記憶してもよい。
【００５９】
特定の実施形態において、ソーシャル・グラフ２００は、多数のユーザノード２０２および多数の概念ノード２０４を含み得る多数のノードを含み得る。ソーシャル・グラフ２００は、ノード同士を接続する多数のエッジ２０６を含み得る。特定の実施形態では、ソーシャル・ネットワーキング・システム、クライアントシステム、サードパーティシステム、または任意の他のシステムもしくはデバイスは、適切なアプリケーションのソーシャル・グラフ２００および関連ソーシャル・グラフ情報にアクセスしてもよい。ソーシャル・グラフ２００のノードおよびエッジはデータオブジェクトとして、例えば、データストア（ソーシャルグラフデータベースなど）に記憶してもよい。このようなデータストアは、ソーシャル・グラフ２００のノードまたはエッジの１つまたは複数の検索可能なまたはクエリ可能なインデックスを含み得る。
【００６０】
特定の実施形態において、ユーザノード２０２はソーシャル・ネットワーキング・システムのユーザに対応してもよい。限定ではないが、例として、ユーザは、ソーシャル・ネットワーキング・システムと対話もしくは通信する、またはソーシャル・ネットワーキング・システムを通じて対話もしくは通信する個人（人間のユーザ）、エンティティ（例、エンタープライズ、企業、もしくはサードパーティアプリケーション）、または（例、個人もしくはエンティティの）グループであってもよい。特定の実施形態では、ユーザがアカウントをソーシャル・ネットワーキング・システムに登録すると、ソーシャル・ネットワーキング・システムはユーザに対応するユーザノード２０２を作成し、ユーザノード２０２を１つまたは複数のデータストアに記憶してもよい。本明細書に記載するユーザおよびユーザノード２０２は、適切な場合、登録ユーザおよび登録ユーザに関連付けられているユーザノード２０２をいう。追加的にまたは代替例として、本明細書に記載するユーザおよびユーザノード２０２は、適切な場合、ソーシャル・ネットワーキング・システムに登録していないユーザをいう。特定の実施形態において、ユーザノード２０２は、ユーザが提供する情報、またはソーシャル・ネットワーキング・システムを含む様々なシステムが収集する情報に関連付けてもよい。限定ではないが、例として、ユーザは、その名前、プロフィール写真、連絡先情報、誕生日、性別、婚姻状態、家族の状態、職業、学歴、プリファレンス、興味、またはその他人口統計学的情報を提供してもよい。特定の実施形態では、ユーザノード２０２は、ユーザに関連付けられている情報に対応する１つまたは複数のデータオブジェクトに関連付けてもよい。特定の実施形態では、ユーザノード２０２は１つまたは複数のウェブページに対応してもよい。ユーザノード２０２は、ソーシャル・ネットワーキング・システムにおけるユーザ用の固有ユーザ識別子に関連付けてもよい。
【００６１】
特定の実施形態において、概念ノード２０４は概念に対応してもよい。限定ではないが、例として、概念は場所（例えば、映画館、レストラン、ランドマーク、もしくは都市など）、ウェブサイト（例えば、ソーシャルネットワークシステムに関連付けられているウェブサイト、ウェブアプリケーションサーバに関連付けられているサードパーティウェブサイトなど）、エンティティ（例えば、人、企業、グループ、スポーツチーム、もしくは有名人など）、ソーシャル・ネットワーキング・システム内もしくはウェブアプリケーションサーバなどの外部のサーバ上に所在し得るリソース（例えば、オーディオファイル、ビデオファイル、デジタルフォト、テキストファイル、構造化文書、もしくはアプリケーション）、不動産もしくは知的財産（例えば、彫刻、絵画、映画、ゲーム、楽曲、着想、写真、もしくは著作物）、ゲーム、活動、着想もしくは理論、別の適切な概念、または２つ以上のこのような概念に対応してもよい。概念ノード２０４は、ユーザが提供する概念の情報またはソーシャル・ネットワーキング・システムを含む様々なシステムが収集する情報に関連付けてもよい。限定ではないが、例として、概念の情報は、名称もしくはタイトル、１つまたは複数の画像（例、本の表紙の画像）、場所（例、住所もしくは地理的な場所）、ウェブサイト（ＵＲＬに関連付けられていてもよい）、連絡先情報（例、電話番号もしくは電子メールアドレス）、その他適した概念情報、またはこのような情報の任意の適した組合せを含み得る。特定の実施形態において、概念ノード２０４は、概念ノード２０４に関連付けられている情報に対応する１つまたは複数のデータオブジェクトに関連付けてもよい。特定の実施形態では、概念ノード２０４は１つまたは複数のウェブページに対応してもよい。
【００６２】
特定の実施形態では、ソーシャル・グラフ２００のノードはウェブページ（これは「プロフィールページ」と呼ばれることがある）を表し、またはウェブページによって表されてもよい。プロフィールページはソーシャル・ネットワーキング・システムによってホストされ、またはソーシャル・ネットワーキング・システムにアクセス可能であってもよい。プロフィールページは、サードパーティサーバに関連付けられているサードパーティウェブサイト上でもホストされてもよい。限定ではないが、例として、特定の外部ウェブページに対応するプロフィールページはその特定の外部ウェブページであってもよく、プロフィールページは特定の概念ノード２０４に対応してもよい。プロフィールページは他のユーザ全員または選ばれた小集団によって閲覧可能であってもよい。限定ではないが、例として、ユーザノード２０２は、対応するユーザがコンテンツを追加し、発表を行い、またはその他自己を表現することのできる対応するユーザプロフィールページを有してもよい。企業ページ２０５などの企業ページは、コマースエンティティ用のユーザプロフィールページを含み得る。限定ではないが、別の例として、概念ノード２０４は、特に概念ノード２０４に対応する概念に関して、１名または複数名のユーザがコンテンツを追加し、発表を行い、または自己を表現することのできる対応する概念プロフィールページを有してもよい。
【００６３】
特定の実施形態において、概念ノード２０４は、サードパーティシステムがホストするサードパーティウェブページまたはリソースを表してもよい。サードパーティウェブページまたはリソースは、他の要素の中でも特に、アクションもしくは活動を表すコンテンツ、選択可能なアイコンもしくは他のアイコン、または他の対話可能なオブジェクト（これは例えば、ＪＡＶＡＳＣＲＩＰＴ（登録商標）、ＡＪＡＸ、もしくはＰＨＰコードに実装してもよい）を含み得る。限定ではないが、例として、サードパーティウェブサイトは、「いいね！」、「チェックイン」、「食べる」、「お薦め」、または他の適したアクションもしくは活動などの選択可能なアイコンを含み得る。サードパーティウェブページを閲覧するユーザは、アイコンの１つ（例、「食べる」）を選択して、クライアントシステムにユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システムに送信させることにより、アクションを行ってもよい。メッセージに対応して、ソーシャル・ネットワーキング・システムは、ユーザに対応するユーザノード２０２とサードパーティウェブページまたはリソースに対応する概念ノード２０４との間にエッジ（例、「食べる」エッジ）を作成し、エッジ２０６を１つまたは複数のデータストアに記憶してもよい。
【００６４】
特定の実施形態において、ソーシャル・グラフ２００の１対のノードは１つまたは複数のエッジ２０６によって互いに接続されてもよい。１対のノードを接続するエッジ２０６はその１対のノード間の関係を表してもよい。特定の実施形態において、エッジ２０６は、１対のノード間の関係に対応する１つまたは複数のデータオブジェクトまたは属性を含み、または表してもよい。限定ではないが、例として、第１ユーザは、第２ユーザが第１ユーザの「友達」であることを示してもよい。この表示に応答して、ソーシャル・ネットワーキング・システムは第２ユーザに「友達申請」を送信してもよい。第２ユーザが「友達申請」を確認すると、ソーシャル・ネットワーキング・システムはソーシャル・グラフ２００で第１ユーザのユーザノード２０２を第２ユーザのユーザノード２０２に接続するエッジ２０６を作成し、エッジ２０６をソーシャル・グラフ情報として１つまたは複数のデータストアに記憶してもよい。図２の実施例では、ソーシャル・グラフ２００は、ユーザ「アマンダ」とユーザ「ドロシー」のユーザノード２０２間の友達関係を示すエッジ２０６を含む。本開示は特定のユーザノード２０２を接続する特定の属性をもつ特定のエッジ２０６を記載または例示するが、本開示はユーザノード２０２を接続する任意の適した属性をもつ任意の適したエッジ２０６を企図する。限定ではないが、例として、エッジ２０６は交友関係、家族関係、仕事関係もしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、加入者関係、上下関係、互恵関係、非互恵関係、別の適した種類の関係、または２つ以上のこのような関係を表してもよい。また、本開示は、全体として、ノードを接続されているものとして記載しているが、本開示はユーザまたは概念も接続されるものとして記載する。本明細書において、ユーザまたは概念が接続されるというとき、適切な場合、そのユーザまたは概念に対応するノードがソーシャル・グラフ２００において１つまたは複数のエッジ２０６によって接続されることをいう。
【００６５】
特定の実施形態において、ユーザノード２０２と概念ノード２０４との間のエッジ２０６は、ユーザノード２０２に関連付けられているユーザが概念ノード２０４に関連付けられている概念に対して行う特定のアクションまたは活動を表してもよい。限定ではないが、例として、図２に図示するように、ユーザはある概念について、「いいね！を表明する」、「出席した」、「再生した」、「聴いた」、「料理した」、「勤務した」、または「見た」のであってもよく、そのそれぞれが、あるエッジタイプまたはサブタイプに対応してもよい。概念ノード２０４に対応する概念プロフィールページは、例えば、選択可能な「チェックイン」アイコン（例えば、クリック可能な「チェックイン」アイコンなど）、または選択可能な「お気に入りに追加」アイコンを含み得る。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャル・ネットワーキング・システムは、それぞれのアクションに対応するユーザのアクションに応答して、「お気に入り」エッジまたは「チェックイン」エッジを作成してもよい。限定ではないが、別の例として、ユーザ（ユーザ「カーラ」は特定のアプリケーション（オンラインミュージックアプリケーションのＳＰＯＴＩＦＹ）を使用して特定の楽曲（「アクロス・ザ・シー」）を聴いた可能性がある。この場合、ソーシャル・ネットワーキング・システムは、ユーザがその楽曲を聴いて、そのアプリケーションを使用したことを示すために、ユーザに対応するユーザノード２０２と楽曲およびアプリケーションに対応する概念ノード２０４との間に「聴いた」エッジ２０６および「使用した」エッジ（図２に図示する）を作成してもよい。また、ソーシャル・ネットワーキング・システムは、その特定の楽曲がその特定のアプリケーションによって再生されたことを示すために、楽曲およびアプリケーションに対応する概念ノード２０４間に「再生した」エッジ２０６（図２に図示する）を作成してもよい。この場合、「再生した」エッジ２０６は外部アプリケーション（ＳＰＯＴＩＦＹ）が外部オーディオファイル（楽曲「アクロス・ザ・シー」）に対して行ったアクションに対応する。本開示はユーザノード２０２と概念ノード２０４とを接続する特定の属性をもつ特定のエッジ２０６を記載するが、本開示はユーザノード２０２と概念ノード２０４とを接続する任意の適した属性をもつ任意の適したエッジ２０６を企図する。また、本開示は、単一の関係を表すユーザノード２０２と概念ノード２０４との間のエッジを記載するが、本開示は１つまたは複数の関係を表すユーザノード２０２と概念ノード２０４との間のエッジを企図する。限定ではないが、例として、エッジ２０６は、ユーザが特定の概念について「いいね！」を表明したことおよび使用したことの両方を表してもよい。代替的に、別のエッジ２０６がユーザノード２０２と概念ノード２０４との各タイプの関係（または多数の単一の関係）を表してもよい（図２に図示するように、ユーザ「エドウィン」のユーザノード２０２と「ＳＰＯＴＩＦＹ」の概念ノード２０４との間）。
【００６６】
特定の実施形態において、ソーシャル・ネットワーキング・システムは、ソーシャル・グラフ２００にユーザノード２０２と概念ノード２０４との間のエッジを作成してもよい。限定ではないが、例として、概念プロフィールページを閲覧するユーザは（例えば、ウェブブラウザまたはユーザのクライアントシステムがホストする特定用途向けアプリケーションを使用することによってなど）、「いいね！」アイコンをクリックまたは選択することによって、概念ノード２０４で表される概念が好きであることを示してもよく、「いいね！」アイコンは、ユーザのクライアントシステムに、概念プロフィールページに関連付けられている概念をユーザが好きであることを示すメッセージをソーシャル・ネットワーキング・システムに送信させてもよい。メッセージに応答して、ソーシャル・ネットワーキング・システムは、ユーザと概念ノード２０４との間の「いいね！」エッジ２０６で図示されるように、ユーザに関連付けられているユーザノード２０２と概念ノード２０４との間にエッジ２０６を作成してもよい。特定の実施形態において、ソーシャル・ネットワーキング・システムはエッジ２０６を１つまたは複数のデータストアに記憶してもよい。特定の実施形態において、エッジ２０６は、特定のユーザのアクションに応答して、ソーシャル・ネットワーキング・システムによって自動的に形成されてもよい。限定ではないが、例として、第１ユーザが写真をアップロードし、映画を鑑賞し、または楽曲を聴く場合、第１ユーザに対応するユーザノード２０２とこれらの概念に対応する概念ノード２０４との間にエッジ２０６が形成されてもよい。本開示は特定のエッジ２０６を特定の方法で形成することを記載するが、本開示は任意の適したエッジ２０６を任意の適した方法で形成することを企図する。
【００６７】
ソーシャル・グラフ２００は複数の製品ノードをさらに含み得る。製品ノードは特定の企業に関連付けられていてもよい特定の製品を表してもよい。企業は消費者・企業間システム１１０に製品カタログを提供してもよく、そのため消費者・企業間システム１１０はソーシャル・グラフ２００の製品内の各製品を表してもよく、各製品は個別の製品ノードにある。製品ノードは、価格情報、説明情報、製造者情報、在庫情報、および他の関連情報など、製品に関わる情報を含み得る。例えば、レストランのメニューに掲載される品目のそれぞれをソーシャル・グラフ２００内で、品目のそれぞれを記述する製品ノードを用いて表してもよい。製品ノードは、エッジによって、製品を提供する企業にリンク付けしてもよい。多数の企業が１つの製品を提供する場合、各企業は自らの製品提供に関連付けられている個別の製品ノードを有してもよく、またはそれぞれ同じ製品ノードにリンク付けしてもよい。製品ノードは、エッジによって、製品を購入した、評価した、所有した、推奨している、または閲覧した各ユーザに、関係の性質（例、購入した、評価した、所有している、推奨した、閲覧した、またはその他の関係）を記述するエッジを用いてリンク付けしてもよい。製品ノードのそれぞれは、リンク付けされた加盟店企業であることによって、グラフＩＤおよび関連加盟店ＩＤに関連付けてもよい。そのため、ある企業から入手可能な製品は、ソーシャル・グラフ２００内の企業のユーザノードにリンク付けされている入手可能な製品ノードを検索することによって、ユーザに通信されてもよい。製品ノードに関する情報は、参照製品に関する情報をカプセル化する製品オブジェクトとして、メッセージング・システムによって操作されてもよい。
【００６８】
そのため、ソーシャル・グラフ２００は、ソーシャル・ネットワーキング・システムの２人以上のユーザの共有される関心、共有される体験、または他の共有されるもしくは共通の属性を推測するために使用され得る。例えば、ソーシャル・グラフ２００内に表現された共通のビジネス、製品、メディア・アイテム、協会、または他のエンティティに対するエッジを各々が有する、２人以上のユーザは、そのエンティティとの共有される関係を示すことができ、それは、メッセージング・システム１５０を含む、ソーシャル・ネットワーキング・システムの使用のカスタマイズを、１人または複数のユーザに対して提案するために使用され得る。
【００６９】
図３Ａは、クライアント・デバイス３２０上における、メッセージング・インターフェースを表示したユーザ・インターフェース３００の一実施形態を示している。
ユーザ・インターフェース３００は、１対１メッセージ・スレッドのためのユーザ・インターフェースを備えることができる。メッセージ・スレッドについてのメッセージ交換の少なくとも部分は、１対１メッセージ・スレッド対話表示３１０内に表示され得る。１対１メッセージ・スレッド対話表示３１０は、１対１メッセージ・スレッドのユーザによって交換された１つまたは複数のメッセージの表示を備えることができる。
【００７０】
１つまたは複数のメッセージの各々は、メッセージ・バブル３１５など、特定のメッセージ・バブルによって表現され得る。メッセージ・バブルは、原子的なメッセージング対話を表現することができる。メッセージ・バブルは、一般に、定義された幾何学的領域に対応することができ、特定のメッセージング交換の内容（例えば、テキスト、メディア）は、定義された幾何学的領域内に含まれる。メッセージ・バブルは、それをメッセージ・スレッド対話表示の背景から区別する、別個の色または複数の色（例えば、１つもしくは複数のグラデーション）を有することができる。メッセージ・バブルは、描写されたような黒い輪郭など、別個に色付けされた境界を有することができ、またはメッセージ・バブルと背景の異なる色の間にインターフェースによって定義された境界を有することができる。いくつかの実施形態においては、メッセージ・バブルおよび背景のどちらかまたは両方の１つまたは複数の色は、表示構成システム１００のユーザによってカスタマイズおよび構成され得る。
【００７１】
メッセージ・スレッドのためのユーザ・インターフェース３００は、スレッド・コントロール３１７を含むことができる。さらなるユーザ・インターフェース・コントロールに対するアクセスを可能にするコントロール・バーなど、スレッド・コントロール３１７のいくつかの部分は、メッセージ・スレッドの表示中、持続的に可視であることができる。コントロール・バー内のコントロールなど、スレッド・コントロール３１７のいくつかは、テキスト入力、メディア選択、絵文字選択、カメラ使用など、様々なタスクの遂行のためのさらなるユーザ・インターフェース・コントロールに対するアクセスを可能にすることができる。しかしながら、いくつかのコントロール（いくつかの実施形態においては、スレッド・コントロール３１７のただ１つ）は、ソーシャル承認アイコンなど、単一のアイコンを即時に送ることを可能にする。スレッド・コントロール３１７の１つまたは複数は、特定のメッセージング・ボットまたはサービスに対応する、ボット起動またはサービス要求コントロールを備えることができる。スレッド・コントロール３１７の部分は、テキストの入力のためのテキスト・コントロールを備えることができる。スレッド・コントロール３１７の部分は、ユーザによって入力されたまたは他の方法で選択されたテキストを表示する、テキスト入力表示領域を備えることができるが、それは、スレッド内の他の参加者に対してまだメッセージとして送られていない。いくつかの実施形態においては、テキスト入力表示領域において入力されたまたは入力のために選択されたテキストは、分析、提案の提供、または他の動作のために、メッセージング・システム１００のメッセージング・サーバ１１０に対して伝達され得る。
【００７２】
ユーザ・インターフェース３００は、スレッドに関与する１人または複数の他のユーザをリストアップした、スレッド・タイトル３０５を含むことができる。スレッド・タイトル３０５は、姓名、省略名、またはメッセージングおよび／もしくはソーシャル・ネットワーキング対話のために特定のユーザとともに使用する名前として登録された他の名前など、ユーザの名前を自動的に使用することができる。
【００７３】
図３Ｂは、クライアント・デバイス３２０上における、運送インターフェースを表示したユーザ・インターフェース３２５の一実施形態を示している。運送インターフェースは、メッセージング・クライアントの要素を備えることができる。
【００７４】
運送インターフェースは、運送が要求されるときに、運送コントロールを選択することなどによって起動され得る。一般に、サービス固有のインターフェースは、サービス固有のコントロールが起動されたときに、起動され得る。いくつかのケースにおいては、サービス固有のインターフェースは、ローカル運送（例えば、自動車同乗）など、サービスのクラスまたはタイプに固有であることができる。他のケースにおいては、サービス固有のインターフェースは、特定の運送提供者など、特定のサービス提供者に固有であることができる。
【００７５】
運送インターフェースは、クライアント・デバイス３２０がある、および代わりにクライアント・デバイス３２０のユーザがいるローカル・エリアの地図など、運送情報表示３３５を含むことができる。運送情報表示３３５は、ローカル・エリアの地図上に表現され得るような、クライアント・デバイス３２０の現在のロケーションを含むことができる。
【００７６】
運送インターフェースは、運送コントロール３４０を含むことができる。運送コントロールは、出発ロケーションおよび行先ロケーションの指定を可能にすることができる。自動車同乗サービスなど、運送サービスが要求されている場合、出発ロケーションは、サービスのユーザが迎えに来てもらうロケーションを備えることができる。行先ロケーションは、サービスのユーザが送り届けてもらうロケーションを備えることができる。図３Ｂに示された実施形態においては、出発ロケーションは、指定されているが、行先ロケーションは、指定されていない。出発ロケーションは、要求されたサービスについての推定される迎車時刻に関連付けられる。行先ロケーションは、「行先を追加」と書かれたコントロールが選択された場合に、指定され得る。出発ロケーションは、現在の出発行先によって表現されたコントロールが選択された場合、変更され得る。いくつかの実施形態においては、出発ロケーションおよび／または行先ロケーションは、表示された地図上においてそれを選択することなどによって、指定され得る。いくつかの実施形態においては、表示された地図は、ズーム・イン、ズーム・アウト、スクロール、または他の方法で操作され得る。
【００７７】
図３Ｃは、行先構成インターフェースを表示したユーザ・インターフェース３５０の一実施形態を示している。
運送構成コントロール３５５は、複数の提案されるロケーションの表示を備えることができる。提案されるロケーションは、様々な技法に基づいて、決定され得る。いくつかの実施形態においては、提案されるロケーションは、運送構成コントロール３５５がそれから起動されたメッセージ・スレッドの内容に基づいて、決定され得る。例えば、メッセージ・スレッドの内容に関連するロケーションが、提案され得る。示された実施形態においては、映画館に着くことに言及するメッセージ・スレッドに応答して、映画館が、提案され得た。
【００７８】
いくつかの実施形態においては、ロケーションは、近さに基づいて、提案され得、より近いロケーションは、より遠いロケーションよりも奨励される。いくつかの実施形態においては、ロケーションは、メッセージ・スレッドに関与する１人または複数のユーザ、特にクライアント・デバイス３２０のユーザの履歴に基づいて、提案され得る。例えば、現在の時（例えば、時間帯、曜日）に類似するかつての時に、最近訪れた、頻繁に訪れた、最近もしくは頻繁に訪れたロケーション、または他の方法でユーザの履歴に関連するロケーションが、提案され得る。いくつかの実施形態においては、１人または複数のユーザの住所など、メッセージ・スレッドに関わる１人または複数のユーザに関連するロケーションが、提案され得る。いくつかの実施形態においては、１人または複数の他のユーザに関係のあるロケーションが、提案され得る。例えば、メッセージ・スレッドにおいて、別のユーザが言及されている場合、そのユーザの住所が、クライアント・デバイス３２０のユーザに利用可能にされている場合、提案され得る。
【００７９】
運送構成コントロール３５５は、テキスト入力コントロールを含むことができる。提案されるロケーションは、テキスト入力コントロールを使用して入力されたテキストに少なくとも一部は基づいて、決定され得る。
【００８０】
図３Ｄは、構成された運送要求を表示したユーザ・インターフェース３６０の一実施形態を示している。
構成された運送要求は、指定された出発ロケーションおよび行先ロケーションの両方を含むことができる。出発ロケーションおよび行先ロケーションのテキスト版は、更新された運送コントロール３７０内に表示され得る。更新された運送コントロール３７０は、現在構成されている出発ロケーションまたは行先ロケーションを選択することによって、出発ロケーションおよび／または行先ロケーションの変更を可能にすることができる。出発ロケーションおよび行先ロケーション、ならびに提案される経路のグラフィック表現が、更新された運送情報３６５内に表示され得る。いくつかの実施形態においては、更新された運送要求は、構成された道のりについての推定される移動時間に関連付けて、表示され得る。
【００８１】
図３Ｅは、メッセージ・スレッド内に運送要求を表示したユーザ・インターフェース３７５の一実施形態を示している。
メッセージ・スレッドからサービスに対して渡された構成された運送要求は、その後、メッセージ・スレッド内に表示され得る。サービス要求の一実施形態が、生成され、メッセージ・スレッドのメッセージの系列に対して追加され、メッセージ・スレッドに関わるユーザのすべてに対して送信され得る。メッセージ・スレッドに関わるユーザの各々は、メッセージ・スレッドのビュー内において、スレッド内ボット要求表示３８５を提供され得る。運送要求については、スレッド内ボット要求表示３８５は、出発ロケーションのテキスト表示、行先ロケーションのテキスト表示、出発ロケーションの視覚的表現、行先ロケーションの視覚的表現、および／または提案されるルートの表現を含むことができる。一般に、要求表示は、要求されるサービスのテキスト・ディスクリプタを含むことができる。
【００８２】
図４Ａは、メッセージ・スレッド内にボット・メッセージを表示した、ユーザ・インターフェース４００の一実施形態を示している。ボット・メッセージは、直接的な人間の関与なしに、自動化ルーチンによって生成された、自動的に生成されたメッセージであることができる。
【００８３】
いくつかのケースにおいては、ボットは、メッセージを生成し、メッセージをメッセージ・スレッドに対して提供することができる。メッセージは、メッセージ・スレッド内からボットに要求されたサービスに関連することができる。スレッド内から行われたボットに対する要求は、そうでない場合それを行うことが防止され得る、メッセージをメッセージ・スレッドに対して送信することをボットに認可することができ、この例においては、スレッド内ボット・メッセージ４０５は、ボットに要求されたサービスの確認を備えることができる。いくつかの実施形態においては、スレッド内ボット・メッセージ４０５は、メッセージ内ボット・コントロール４１０を含むことができ、複数のメッセージ内ボット・コントロールを含むことができる。メッセージ内ボット・コントロール４１０は、ユーザが、メッセージ内ボット・メッセージ４０５が関連する要求を変更し、取消し、またはそうでない場合それと対話することを可能にすることができる。この例においては、メッセージ内ボット・コントロール４１０は、要求された運送サービスの取消を可能にすることができる。
【００８４】
図４Ｂは、メッセージ・スレッド内にサービス更新のためのボット・メッセージを表示した、ユーザ・インターフェース４２５の一実施形態を示している。
示された実施形態においては、第２のスレッド内ボット・メッセージ４３０が、ボットによって、メッセージ・スレッドに対して追加されている。第２のスレッド内ボット・メッセージ４３０は、ボットに要求されたサービスに関する更新に関連し、このケースにおいては、更新は、ボットに要求されたサービスを提供する具体的な個人、サービスの遂行に関連する他の情報、およびサービスの遂行に関連する推定される時間を伝達している。第２のスレッド内ボット・メッセージ４３０は、サービスを提供する具体的な個人との交信など、追加の機能を可能にし、サービスを提供する個人についての更新された推定される到着時間を取り出す、メッセージ内ボット・コントロール４３５をさらに含む。
【００８５】
図４Ｃは、サービス提供者からのスレッド内ライブ・チャット・メッセージ４５５を表示した、ユーザ・インターフェース４５０の一実施形態を示している。
いくつかの実施形態においては、サービスについてのスレッド内メッセージは、メッセージング・ボットによって自動的に生成されたボット・メッセージであることができる。しかしながら、他の実施形態においては、サービスについてのスレッド内メッセージは、スレッド内ライブ・チャット・メッセージ４５５であることができる。スレッド内ライブ・チャット・メッセージ４５５は、メッセージ・スレッド内において要求されたサービスに応答して、人間の運用者によって作文され、および渡されたメッセージを備えることができる。ボット・メッセージとは対照的に、スレッド内ライブ・チャット・メッセージ４５５は、使用するためにプログラムされ、またはプログラム的に生成される代わりに、サービスの状況またはメッセージ・スレッド内において行われた他の要求に応答して、個々に生成または個々に選択され、メッセージング・システム１００に対して渡され得る。
【００８６】
スレッド内ライブ・チャット・メッセージ４５５は、サービスが、一般にメッセージ・スレッドの参加者でなく、一般にメッセージ・スレッドの内容に通じておらず、および一般にメッセージをメッセージ・スレッドに対して追加することを認可されていないにもかかわらず、メッセージ・スレッド内に挿入され得る。サービスは、サービスの要求、サービスに対する問い合わせ、またはそうでない場合サービスとの交信を行うために使用されたメッセージ・スレッドに基づいて、スレッド内ライブ・チャット・メッセージ４５５をメッセージ・スレッドに対して渡すことを、メッセージング・システム１００によって認可され得る。しかしながら、サービス提供者が、サービス提供者に対して向けられていないメッセージを受け取ることも、見ることも防止され得、最初にサービス・エイリアスもしくはメッセージング・ボット・エイリアスを使用したメッセージ、またはそうでない場合サービス提供者に対してアドレス指定され、もしくはサービス提供者からのメッセージに応答しているメッセージなど、サービス提供者に対して具体的に向けられたメッセージだけを提供され得る。
【００８７】
スレッド内ライブ・チャット・メッセージ４５５は、具体的なサービスを提供する運用者によって提供され得る。示された実施形態においては、自動車同乗サービスについてのドライバは、スレッド内ライブ・チャット・メッセージ４５５をメッセージング・システム１００に対して送信し、スレッド内ライブ・チャット・メッセージ４５５をメッセージ・スレッドの参加者に対して配信させた。これらのケースにおいては、スレッド内ライブ・チャット・メッセージ４５５は、表示のために、具体的なサービスを提供する運用者についてのアカウント名、ユーザ・アバタ、または他の個人識別情報に関連付けられ得、運用者は、メッセージ・スレッドまたはそれの部分に一時的にアクセスすることを、個々に認可され得る。例えば、運用者は、運用者に対して、または運用者が関連付けられたサービスに対してアドレス指定された、メッセージ・スレッドの部分に一時的にアクセスすることを、個々に認可され得る。運用者またはサービスは、「＠」シンボルなどのアドレス・シンボルおよびサービスについての名前をコメントの前に付けることによって、アドレス指定され得る。
【００８８】
代替的に、スレッド内ライブ・チャット・メッセージ４５５は、サービス提供者の代表など、サービスについてのサービス提供者によって提供され得る。例えば、自動車同乗サービスを代表するカスタマ・サービスは、メッセージ・スレッドの参加者に対する配信のために、スレッド内ライブ・チャット・メッセージ４５５をメッセージング・システム１００に対して送信することができる。これらのケースにおいては、スレッド内ライブ・チャット・メッセージ４５５は、表示のために、サービスの代表についてのアカウント名、ユーザ・アバタ、または他の個人識別情報に関連付けられ得、代表は、メッセージ・スレッドに一時的にアクセスすることを、個々に認可され得る。代替的に、スレッド内ライブ・チャット・メッセージ４５５は、表示のために、サービス全般についてのアカウント名、ユーザ・アバタ、または他の個人識別情報に関連付けられ得る。サービスのためのコンピュータ・システムは、メッセージ・スレッドまたはそれの部分に一時的にアクセスすることを、個々に認可され得、サービスは、それ自体の手順に従った、それの代表に対する、メッセージ・スレッドを用いた伝達のために、コンピュータ・システムに対するアクセスを提供する。例えば、運用者は、運用者に対して、または運用者が関連付けられたサービスに対してアドレス指定された、メッセージ・スレッドの部分に一時的にアクセスすることを、個々に認可され得る。
【００８９】
図５Ａは、メッセージ・スレッド内にトリガを表示した、ユーザ・インターフェース５００の一実施形態を示している。
トリガは、一般に、メッセージング・システム１００が潜在的なアクションに関連付けた、メッセージ・スレッドの単語、句、または他の要素に対応することができる。ボット・トリガは、一般に、メッセージング・システム１００がボットに対する潜在的な要求に関連付けた、トリガに対応することができる。示された実施形態においては、テキスト断片「映画館」は、第１のボット・トリガ５０５を備えることができ、テキスト断片「サウスポイント」は、第２のボット・トリガ５１０を備えることができる。第１のボット・トリガ５０５は、映画館に関連するボット要求に対する関心を示すことができる。第２のボット・トリガ５１０は、ロケーション「サウスポイント」に関連するボット要求に対する関心を示すことができ、「サウスポイント」は、独立して、または映画の既存のスレッド・コンテキストに関連付けて、「サウスポイント」と呼ばれる特定の映画館に関連付けられたものとして識別され得る。トリガを選択したユーザは、トリガに関連する、提案されるボットなど、提案されるサービスを起動することができる。トリガは、単語および／または句とサービスとの間の事前決定および事前割り当てされた関連付けに基づいて、決定され得、または自然言語プログラミング技法に基づいて、自動的に決定され得る。
【００９０】
図５Ｂは、トリガに応答して提案されるサービスを表示した、ユーザ・インターフェース５２５の一実施形態を示している。
ユーザは、メッセージング・スレッド・インターフェースにおいて、トリガを選択することができる。メッセージングに応答して、クライアントは、提案されるボットに対応することができるような、複数の提案されるサービスを取り出し、複数のトリガされたコントロール５３０内に表示することができる。いくつかの実施形態においては、複数の提案されるサービスは、メッセージング・クライアントおよび／またはメッセージング・システム１００がトリガを検出したのに応答して、自動的に表示され得る。トリガされたコントロール５３０は、複数のメッセージング・ボット・オプションを備えることができる。メッセージング・ボット・オプション５３５は、特定のサービスに関連付けられた特定のボットを備えることができる。いくつかの実施形態においては、メッセージング・ボット・オプションは、サービス遂行情報５４０に関連付けられ得る。サービス遂行情報は、例えば、推定される到着時間、および推定される費用または価格情報など、推定される遂行情報を含むことができる。メッセージング・ボット・オプションは、サービス・レーティング情報５４５を含むことができ、サービス・レーティング情報５４５は、ユーザ・フィードバックから導き出され得るような、サービスの品質の評価を備える。メッセージング・ボット・オプションは、関連付けられたメッセージング・ボットとの対話を起動するために、選択され得る。メッセージング・ボット・オプションは、それらがそれから起動されたメッセージング・スレッドに関連付けて、表示され得る。
【００９１】
トリガされたコントロール５３０は、サービスについての、およびメッセージング・ボットについての提案を備えることができる。トリガされたコントロール５３０は、提案されるメッセージング・ボットのランク付けされたリストを備えることができる。提案されるメッセージング・ボットは、様々な技法に基づいて、および様々な要因に基づいて、決定され得る。提案されるメッセージング・ボットは、スレッド内のユーザのロケーションに基づいて、選択され、ランク付けされ得る。例えば、１人または複数のユーザのロケーションに地理的に近い、またはより地理的に近いメッセージング・ボットが、選択され、またはより高くランク付けされ得る。カップルが、ともに職場にいながら、互いにメッセージングを行っているときに、レストラン関連のメッセージング・ボットを提案するなど、ユーザの現在の地理的ロケーションと以前に関連付けられたアクティビティに関連するメッセージング・ボットが、同様に、選択され、またはより高くランク付けされ得る。
【００９２】
提案されるメッセージング・ボットは、１つまたは複数の検出されたキーワードまたは意図とメッセージング・ボットとの間の関連付けに基づいて、選択され、ランク付けされ得る。キーワードは、メッセージング対話の内容から抽出された単語または句に対応することができる。メッセージング・システム１００は、関係のあるキーワードのレジストリを有することができ、メッセージング・ボットを選択し、ランク付けするための基礎として、それらのキーワードを識別し、抽出するために、メッセージング対話の内容を検査することができる。例えば、「同乗」または「輸送」の言及は、輸送関連サービスの提案、または輸送関連サービスに対するより高いランク付けを促すことができる。意図は、メッセージング対話内において明示的に使用されていない、メッセージング対話のコンテキストに基づいて生成されたキーワード、概念、句、または他の識別子を備えることができる。メッセージング・システム１００は、意図のレジストリを有することができ、メッセージング対話によって推測される意図を決定するために、メッセージング対話の内容に対して自然言語処理を遂行することができる。例えば、複数の具体的な映画の言及は、単語「映画」の具体的な使用がなくても、意図キーワード「映画」を暗示することができる。別の例においては、「何かを見に行きたい」かどうかに関する個人対個人の質問は、単語「映画」の直接的な使用がなくても、映画に対する関心を暗示することができる。
【００９３】
キーワードおよび／または意図は、メッセージ・スレッドにおいて具体化されたメッセージング対話の内容または内容の一部から、抽出され得る。いくつかのケースにおいては、メッセージ・スレッドとの関わりの現在の期間を検出し、その現在の期間についてのメッセージ・スレッドからキーワードおよび／または意図を抽出することなどによって、メッセージ・スレッドの最近の部分が、使用され得る。メッセージ・スレッドの最近の部分は、様々な技法に従って、定義され得る。いくつかのケースにおいては、最近の部分は、事前定義された時間の長さに従って、定義され得、最近の部分は、事前定義された時間の長さに等しい長さにわたり、現在時間において終了する、時間の範囲の間に交換された、スレッドの断片である。いくつかのケースにおいては、最近の部分は、メッセージ・スレッドとの関わりの一時的な解消を示す、事前定義され得る十分な長さの会話における、直近の中断を検出することなどによって、可変の長さにわたるように、決定され得る。例えば、メッセージ・スレッドの最近の部分は、１時間よりも長い会話におけるギャップ（中断）を含まない、現在時間において終了するスレッドの最大範囲であることができる。スレッドの最近の部分を定義するための他の技法が、使用され得る。メッセージ・スレッドのこの最近の部分は、メッセージ・スレッド内において明示的に使用される１つまたは複数の明示的なキーワードを備えることができ、および自然言語処理技法に基づいてメッセージ・スレッドから推測される１つまたは複数の意図キーワードを備えることができる、１つまたは複数のキーワードを決定するために、解析され得る。
【００９４】
明示的に抽出されたか、それとも意図から導き出されたかにかかわらず、キーワードは、メッセージ・スレッド内のユーザにとって関心があり得る、１つまたは複数のサービスを決定するために、使用され得る。トリガされたコントロール５３０は、１つまたは複数のサービスについての１人または複数の提供者に対応する、メッセージング・ボットの選択を備えることができる。例えば、「映画」および「輸送」に関連するキーワードが、抽出され、または推測され得る。チケット販売サービスおよび映画館運営者など、映画に関連する複数の提供者が、選択され得る。複数の自動車同乗サービスなど、輸送に関連する複数の提供者が、選択され得る。複数のサービスの各々についての複数の提供者は、メッセージ・スレッドにおけるユーザにとって関心があり得るものとして検出された複数のサービスを表現する、複数の組み合わされた提供者に、一緒に結び合わされ得る。この複数の組み合わされた提供者、およびそれらに関連付けられたメッセージング・ボットは、その後、ロケーション、提供者によって提供されるサービスに対する検出された関心のレベル、具体的な提供者に対する検出された関心のレベル、全体的に１人もしくは複数のユーザについての、もしくは具体的にメッセージ・スレッド内において、様々なサービスを要求した以前の履歴、全体的に１人もしくは複数のユーザについての、もしくは具体的にメッセージ・スレッド内において、様々な提供者を使用した以前の履歴を含む、様々な要因に従って、または他の任意の関連のある要因に従って、ランク付けされ得る。
【００９５】
複数のサービスがオファーされる、いくつかの実施形態においては、対応する提供者のランク付けは、オファーされる様々なサービスを紹介するために、構築され得る。例えば、各サービスについて最も高くランク付けされる提供者は、サービスのいずれについても、第２の提供者よりも先に、トップにリストアップされる提供者（したがって、トップにリストアップされる関連付けられたメッセージング・ボット）として、選択され、供与され得る。各サービスについて最も高くランク付けされる提供者は、本明細書において説明された様々な要因に従って決定され得るように、一般にサービスに対する予想される関心に従って、および／または具体的には提供者に対する予想される関心に基づいて、ランク付けされ得る。
【００９６】
図６は、アカウントをリンクさせるように促すプロンプトを表示した、ユーザ・インターフェース６００の一実施形態を示している。
ユーザが特定のサービスに関するアカウントをすでに所有している場合、特に、ユーザが特定のサービスに関するアカウントを有していることを、メッセージング・クライアントが認識している場合、ユーザは、メッセージング・システム１００に関するメッセージング・アカウントを、サービスのためのユーザ・アカウントとリンクさせることを勧められ得る。メッセージング・クライアントは、ユーザがサービスに関するアカウントをすでに有していることを、例えば、クライアント・デバイス３２０上にインストールされているサービスのためのアプリケーション、メッセージング・クライアントおよびサービスの両方に知られているユーザについての識別情報（例えば、電話番号、電子メール・アドレス）に基づいて、または任意の知られた技法を使用して、検出することができる。
【００９７】
選択されたボットに対応するサービスに関するアカウントをすでに所有しているユーザは、既存のユーザ・ダイアログ６０５を提示され得る。既存のユーザ・ダイアログ６０５は、アカウントをリンクさせることを取消す、または差し控えるためのコントロールを備えることができる。既存のユーザ・ダイアログ６０５は、アカウントをリンクさせることを続けるためのコントロールを備えることができる。
【００９８】
アカウントをリンクさせることは、メッセージング・システム１００とサービスのためのシステムとの間における情報の交換を含むことができる。アカウントをリンクさせることは、名前、人口統計情報、住所、電話番号、電子メール・アドレス、または他の情報など、ユーザについての識別情報の交換を含むことができる。アカウントをリンクさせることは、金融情報の交換を含むことができる。一般に、ユーザに関連するいずれの情報も、アカウントをリンクさせた結果として、交換され得る。アカウントをリンクさせることは、メッセージング・システム１００が、ユーザに代わって、リンクされたサービスにサービスを要求することを可能にすることができる。アカウントをリンクさせることは、リンクされたサービスが、メッセージング・システム１００を介して、メッセージをユーザに対して送信することを可能にすることができる。
【００９９】
図７Ａは、新たなユーザ・ダイアログ７０５を表示した、ユーザ・インターフェース７００の一実施形態を示している。
新たなユーザ・ダイアログ７０５は、ユーザがサービスに関する既存のアカウントを有することについての知識を、メッセージング・クライアントが欠いているときに、メッセージング・クライアントによって表示され得る。ユーザがサービスに関する既存のアカウントを有することについての知識を、メッセージング・クライアントが欠いている場合、ボットが選択されたときに、新たなユーザ・ダイアログ７０５が、起動され得る。新たなユーザ・ダイアログ７０５は、ユーザが、自分がサービスに関するアカウントをすでに有することを示し、アカウントをリンクさせるためにサービス・アカウントについての情報を提供することを可能にする、既存アカウント・コントロールを含むことができる。新たなユーザ・ダイアログ７０５は、ユーザがサービスに関するアカウントを構成することを可能にする、アカウント作成コントロールを含むことができる。
【０１００】
図７Ｂは、アカウント作成ダイアログ７３０についてのアカウント詳細要求を表示した、ユーザ・インターフェース７２５の一実施形態を示している。
アカウント作成ダイアログ７３０は、ユーザが、選択されたボットについてのサービスに関するアカウントを作成することを、可能にすることができる。アカウントのために必要とされる詳細の少なくともいくつかの部分は、メッセージング・システム１００に知られている場合は、メッセージング・システム１００によって指定され得る。示された実施形態においては、電子メール・アドレスおよび公開プロフィール（すなわち、ソーシャル・ネットワーキング・システムのための）は、サービスによって必要とされる詳細を可能にするために、共有され得る。
【０１０１】
しかしながら、いくつかの詳細は、メッセージング・システム１００に知られていないことがあり、したがって、アカウント作成ダイアログ７３０は、未知の詳細をユーザが指定することを要求することができる。必要とされる情報コントロール７３５は、ユーザが、メッセージング・システム１００に知られていない必要とされる情報を指定することを可能にする。示された実施形態においては、メッセージング・システム１００は、サービスに対して提供するために、電話番号およびクレジット・カード情報をユーザに対して要求する。メッセージング・システム１００は、ユーザについてのユーザ・アカウント情報を拡張するために、この情報を保持することができ、その後、この情報を再使用することができる。
【０１０２】
サービスによって必要とされる情報が、まだメッセージング・システム１００に知られていない場合、メッセージング・クライアントは、無効化されたアカウント作成コントロール７４０を提示することができる。無効化されたアカウント作成コントロール７４０は、ユーザがそれを使用してアカウント作成を完成することができないように、非アクティブであることができる。無効アカウント作成コントロール７４０は、必要とされる情報がひとたび入力されると、有効化され得る。
【０１０３】
図７Ｃは、完成されたアカウント作成ダイアログを表示した、ユーザ・インターフェース７５０の一実施形態を示している。
ユーザについての必要とされる情報のすべてが、ひとたびメッセージング・システム１００に登録されると、完成されたアカウント作成ダイアログは、示されたダイアログに対応することができる。メッセージング・システム１００にそのすべてが知られている情報を必要とするボットが、選択された場合、中間の未完成アカウント作成ダイアログなしに、完成アカウント作成ダイアログが、即座に表示され得る。サービスによって必要とされるすべての情報が、メッセージング・システム１００に登録されているので、アカウント作成ダイアログ７３０は、今は、有効化されたアカウント作成コントロール７５５を含む。有効化されたアカウント作成コントロール７５５は、ユーザが、サービスに関するアカウントの作成を始めることを可能にすることができる。メッセージング・システム１００は、必要とされる情報をサービスに対して提供し、それによって、アカウント作成を遂行することができる。
【０１０４】
いくつかの実施形態においては、金融情報だけは、トークン化された形態で、サービスに対して提供され得る。クレジット・カード情報など、金融情報のトークン化された形態は、サービスが金融情報の詳細にアクセスすることなしに、サービスが取引を遂行することを可能にするのに、十分であることができる。例えば、ユーザについてのクレジット・カード番号は、サービスから隠蔽され、もっぱらメッセージング・システム１００を用いて維持され得る。いくつかの実施形態においては、メッセージング・システム１００は、ユーザの代わりに、ユーザについての金融情報を使用して、金融取引を遂行し、必要とされる資金をサービスに対して提供することができる。どちらの実施形態においても、ユーザの金融情報は、それをサービスに対して送信することを差し控えることによって、保護され得る。
【０１０５】
図８Ａは、提案されたボット８０５とともに、部分的なボット・アドレス８１０を表示した、ユーザ・インターフェース８００の一実施形態を示している。
ユーザは、テキスト・コントロールを使用して、メッセージング・インターフェースのテキスト入力フィールドにおいてテキストを入力することができる。ユーザによって入力されたテキストは、それがボット起動に対応することができるかどうかを決定するために、解析され得る。いくつかの実施形態においては、「＠」シンボルなど、特定のシンボルが、ボット起動を示すために、使用され得る。メッセージング・クライアントおよび／またはメッセージング・システム１００は、ボット起動シンボルを検出し、返答としてボットを提案することができる。ボット起動シンボルばかりでなく、追加のテキストも、指定された場合、メッセージング・システム１００は、指定されたテキストで開始するボット・エイリアスを有する、特定の提案されるボット８０５を生成することができる。ボット・エイリアスは、ボットについての登録名に対応することができ、名前は、メッセージング・システム１００に登録されている。
【０１０６】
提案されるボット８０５は、様々な技法に基づいて、決定され得る。いくつかの実施形態においては、提案されるボット８０５は、部分的なボット・アドレス８１０が入力された、メッセージ・スレッドの内容に基づいて、決定され得る。例えば、メッセージ・スレッドのコンテキストに関連するボットが、提案され得る。示された実施形態においては、映画館に行くことに言及したメッセージ・スレッドに応答して、映画サービスのためのボットが、提案され得た。いくつかの実施形態においては、ボットは、メッセージ・スレッドに関与する１人または複数のユーザ、特にクライアント・デバイス３２０のユーザの履歴に基づいて、提案され得る。例えば、現在の時（例えば、時間帯、曜日）に類似するかつての時に、最近使用された、頻繁に使用された、最近もしくは頻繁に使用されたボット、または他の方法でユーザの履歴に関連するボットが、提案され得る。図５Ｂを参照して説明された技法のいずれかなど、様々な技法のいずれかが、提案されたボット８０５の選択のために使用され得る。提案されたボットを選択することは、選択されたボットについての完成エイリアスを用いて、テキスト入力フィールドを自動的に完成することができる。
【０１０７】
図８Ｂは、完成したボット・アドレス８３５に基づいて取り出された、提案されるコマンド８３０を表示した、ユーザ・インターフェース８２５の一実施形態を示している。
完成したボット・アドレス８３５は、ボット起動シンボルで開始し、ボット・エイリアスに対応するテキスト断片が後続する、テキスト断片を備えることができる。ボット・アドレスの完成は、スペースなど、ボット・エイリアス内において許容されない特定のキャラクタの使用を通して、決定され得る。テキスト入力フィールドにおいて入力された完成したボット・アドレス８３５に応答して、提案されるコマンド８３０が、メッセージング・クライアントによって取り出され、ユーザに対して提供され得る。
【０１０８】
提案されるボット・コマンド８３０は、ボットに対応するサービスによって、決定され得る。提案されるボット・コマンド８３０は、ボットに対して発行するために利用可能なコマンドを備えることができる。提案されるボット・コマンド８３０は、様々な技法に基づいて、決定され得る。いくつかの実施形態においては、提案されるボット・コマンド８３０は、完成したボット・アドレス８３５が入力された、メッセージ・スレッドの内容に基づいて、決定され得る。例えば、メッセージ・スレッドのコンテキストに関連するボット・コマンドが、提案され得る。示された実施形態においては、映画館に行くことに言及したメッセージ・スレッドに応答して、映画サービスのためのボットが、提案され得た。しかしながら、他の実施形態においては、メッセージ・スレッドのプライバシを侵害することを回避するために、ボット・サービスが、ボットのために具体的に印しを付けられていないメッセージ内容を受け取ることが防止され得る。いくつかの実施形態においては、メッセージ・スレッドの完全な履歴を提供することなしに、キーワードが、ボット・サービスに対して提供され得る。
【０１０９】
いくつかの実施形態においては、ボット・コマンドは、メッセージ・スレッドに関与する１人または複数のユーザ、特にクライアント・デバイス３２０のユーザの履歴に基づいて、提案され得る。例えば、現在の時（例えば、時間帯、曜日）に類似するかつての時に、最近使用された、頻繁に使用された、最近もしくは頻繁に使用されたボット・コマンド、または他の方法でユーザの履歴に関連するボット・コマンドが、提案され得る。いくつかの実施形態においては、ボット・サービスが、それに知られているユーザ履歴に基づいて役割を果たすことを可能にするために、完成したボット・アドレス８３５を入力したユーザについてのユーザ識別子が、ボット・サービスに対して提供され得る。いくつかの実施形態においては、ボット・サービスは、提案されるボット・コマンド８３０を生成し、メッセージング・クライアントを介してユーザに対して提供するために、それをメッセージング・システム１００に対して提供することに、責任を負うことができる。提案されたボット・コマンドを選択することは、完成したボット・コマンドを用いて、テキスト入力フィールドを自動的に完成することができる。
【０１１０】
図８Ｃは、部分的なボット・コマンド８６０に基づいて取り出された、更新された提案されるコマンド８５５を表示した、ユーザ・インターフェース８５０の一実施形態を示している。
【０１１１】
テキスト入力フィールドは、ボット起動シンボルと、後続する完成したボット・エイリアスおよび部分的なボット・コマンド８６０とを含むことができる。メッセージング・システム１００は、部分的なボット・コマンド８６０を、完成したボット・エイリアスによって指定されたボット・サービスについてのボット・コマンドと照合して、部分的なボット・コマンド８６０のキャラクタで開始するコマンドなど、部分的なボット・コマンド８６０に対応する更新された提案されるコマンド８５５を提供することができる。いくつかの実施形態においては、部分的なボット・コマンド８６０は、完成したボット・エイリアスに関連付けられたボット・サービスに対して提供され得、更新された提案されるコマンド８５５が、応答して提供され、その後、メッセージング・クライアントを介して、ユーザに対して提供される。これらの実施形態においては、メッセージング・システム１００は、メッセージング・クライアント上において生成された各テキスト断片（すなわち、キャラクタの反復的な追加を通して生成された各テキスト断片）を、適切なボット・サービスに対して提供し、応答して提案されるコマンドを受け取り、提案されるコマンドをユーザに対して提供することができる。
【０１１２】
図８Ｄは、スレッド内ボット応答８８５を表示した、ユーザ・インターフェース８７５の一実施形態を示している。
メッセージ・スレッドのためのテキスト入力フィールドを介して入力された、スレッド内ボット・コマンド８８０は、メッセージ・スレッド内におけるメッセージとして、メッセージ・スレッドのすべての参加者に対して配信され得、それによって、メッセージ・スレッドのすべての参加者によって使用されるすべてのデバイスに対して配信され得る。スレッド内ボット・コマンド８８０は、さらに、ボット・サービスに対して提供され得る。
【０１１３】
ボット・サービスは、スレッド内ボット応答８８５を用いて、スレッド内ボット・コマンド８８０に応答することができる。スレッド内ボット応答８８５は、ボット・サービスが、一般にメッセージ・スレッドの参加者でなく、一般にメッセージ・スレッドの内容に通じておらず、および一般にメッセージをメッセージ・スレッドに対して追加することを認可されていないにもかかわらず、メッセージ・スレッド内に挿入され得る。スレッド内ボット応答８８５は、スレッド内ボット・コマンド８８０に応答して、ボット・サービスによって生成された応答を備えることができる。この例においては、スレッド内ボット応答８８５は、ユーザがスレッド内ボット応答８８５に関連するアクションを取ることを可能にする、スレッド内ボット・コントロール８９０を備える。ユーザは、テキスト入力フィールドを介して入力され、メッセージ・スレッドの要素として送出される、追加のボット・コマンドを使用して、スレッド内ボット応答８８５に応答することも可能にされ得る。
【０１１４】
図９は、メッセージング・システム１００を通して送信されるメッセージ９１０の一実施形態を示している。
メッセージング・システム１００は、複数のコンポーネントを備えることができる。いくつかの実施形態においては、これらの複数のコンポーネントは、複数のサーバの間に分散させられ得る。他の実施形態においては、単一のサーバが、複数のコンポーネントを実施することができる。いくつかの実施形態においては、複数のサーバは、単一のサーバ・デバイスによって実行され得る。他の実施形態においては、複数のサーバは、複数のサーバ・デバイスによって実行され得る。いくつかの実施形態においては、様々なコンポーネントおよび様々なサーバの複数の実例が、冗長性、改善されたスケーリング、および他の利益を提供するために、実行され得る。同様に、クライアント・デバイスは、メッセージング・クライアントの一部として、複数のコンポーネントを実行することができる。
【０１１５】
クライアント・デバイスは、ネットワーク・トラフィックを交換するために、無線送信を使用して、他のデバイスと通信することができる。メッセージング取引の交換に含まれ得るような、ネットワーク・トラフィックを交換することは、ネットワーク・インターフェース・コントローラ（ＮＩＣ）を介して、ネットワーク・トラフィックを送信し、受け取ることを備えることができる。ＮＩＣは、クライアント・デバイスなどのコンピュータ・デバイスをコンピュータ・ネットワークに対して接続する、ハードウェア・コンポーネントを備える。ＮＩＣは、ソフトウェア・アプリケーションが、ＮＩＣにアクセスし、それを使用することを可能にする、ソフトウェア・ネットワーク・インターフェースに関連付けられ得る。ネットワーク・トラフィックは、データ・リンク上において送信される信号として、コンピュータ・ネットワーク上において受け取られ得る。ネットワーク・トラフィックは、これらの信号を捉え、それらを解釈することによって、受け取られ得る。ＮＩＣは、コンピュータ・ネットワーク上においてネットワーク・トラフィックを受け取り、ネットワーク・インターフェース・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用して、ネットワーク・トラフィックを、ソフトウェア・アプリケーションからアクセス可能なメモリ・ストレージに対して移送することができる。ネットワーク・インターフェース・コントローラは、ネットワーク通信を通したメッセージング・クライアントとメッセージング・サーバ１１０との相互動作を含む、本明細書において説明される実施形態のネットワーク・アクティビティのために、使用され得る。例えば、メッセージをクライアント・フロントエンド・サーバ９３５に対して送信し、またはメッセージをクライアント・フロントエンド・サーバ９３５から受け取る、メッセージング・クライアントは、情報の送信または受け取りのための、通信ネットワークに対するネットワーク・アクセスのために、ネットワーク・インターフェース・コントローラを使用すると、解釈され得る。
【０１１６】
メッセージング・クライアントは、ユーザ・インターフェース・コンポーネント９２３を備えることができる。ユーザ・インターフェース・コンポーネント９２３は、一般に、ユーザ・インターフェースをクライアント・デバイスのユーザに対して表示し、クライアント・デバイスについてのメッセージング・クライアントのためのユーザ・コマンドを受け取るように準備され得る。ユーザ・インターフェース・コンポーネント９２３は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取り、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動することができる。ユーザ・インターフェース・コンポーネント９２３は、その後、メッセージング・ボット対話ユーザ・インターフェースを介して、メッセージング・ボット対話コマンドを受け取ることができる。
【０１１７】
メッセージング・クライアントは、クライアント・メッセージング・コンポーネント９２６を備えることができる。クライアント・メッセージング・コンポーネント９２６は、一般に、クライアント・フロントエンド・サーバ９３５との通信を介して、メッセージング・クライアントの代わりに、メッセージング対話を行うように準備され得る。クライアント・メッセージング・コンポーネント９２６は、メッセージング・ボット対話コマンドを、クライアント・デバイスからメッセージング・システムに対して送信するように動作することができる。メッセージング・ボット対話コマンドは、メッセージ９１０として伝達されたテキスト断片の少なくとも部分など、メッセージ９１０の少なくとも部分であることができる。いくつかのケースにおいては、メッセージ９１０のメッセージ・ボディを備えるテキスト断片は、メッセージング・ボット対話コマンドに対応することができる。
【０１１８】
クライアント・フロントエンド・サーバ９３５は、一般に、送り元クライアント・デバイス９２０などのクライアント・デバイスのために、メッセージング・システム１００に対するネットワーク・アクセス・ポイントとしての役割を果たすように準備され得る。クライアント・フロントエンド・サーバ９３５は、メッセージング・コンポーネント９３０を備えることができ、メッセージング・コンポーネント９３０は、一般に、メッセージング・システム１００のために、メッセージング・サービスに対するネットワーク・アクセス・ポイントとしての役割を果たすように準備される。メッセージング・コンポーネント９３０は、送り元クライアント・デバイス９２０からメッセージ９１０を受け取り、メッセージ９１０をメッセージ待ち行列９８０に対して追加することができる。
【０１１９】
メッセージ待ち行列９８０は、具体的には、送り元クライアント・デバイス９２０のユーザのためのユーザ・アカウントと、メッセージング・システム１００内において一意的に関連付けられることなどによって、送り元クライアント・デバイス９２０のユーザに関連付けられ得る。メッセージ待ち行列９８０は、このユーザによって使用されるすべてのメッセージング・エンドポイントのために使用される、単一の待ち行列であることができる。メッセージ待ち行列９８０は、厳密に線形順序で、更新の表現を備えることができる。メッセージ待ち行列９８０は、様々な技法に従って、データ・ユニットとして組織され得る。メッセージ待ち行列９８０は、半永続的なメモリ、永続的なストレージ、半永続的なメモリおよび永続的なストレージの両方、または２つの組み合わせの中に記憶され得る。メッセージ待ち行列９８０は、リンクされたリスト、配列、および待ち行列を組織するための他の技法を含む、様々なデータ構造に従って組織され得る。メッセージ待ち行列９８０は、一般に、いかなる更新も、それよりも先に受け取られたどの更新よりも前に、待ち行列から除去されない、先入れ先出し（ＦＩＦＯ）待ち行列を備えることができる。
【０１２０】
メッセージング・システム１００は、ワーカ・サーバ９４５を備えることができる。一般に、メッセージング・システム１００は、様々なタスクに対して割り当てられ得る、複数のワーカ・サーバを備えることができる。ワーカ・サーバ９４５は、メッセージ待ち行列監視コンポーネント９４０を備えることができ、メッセージ待ち行列監視コンポーネント９４０は、メッセージ待ち行列９８０内に、および様々なフラグ、インジケータ、および他の情報のためのメッセージング・システム１００の他のメッセージ待ち行列内にメッセージを備えることができるように、更新を監視するように準備される。
【０１２１】
メッセージ待ち行列監視コンポーネント９４０は、メッセージ待ち行列９８０を監視するように動作することができる。メッセージ待ち行列監視コンポーネント９４０は、メッセージ待ち行列９８０内の各エントリを検査し、メッセージ９１０がメッセージング・ボット起動を示していることを検出することができる。メッセージ９１０がメッセージング・ボット起動を示していることを検出したのに応答して、メッセージ待ち行列監視コンポーネント９４０は、メッセージ９１０をボット・フレームワーク・コンポーネント９５０に対して渡すことができる。メッセージ９１０をボット・フレームワーク・コンポーネント９５０に対して渡すことは、いくつかの実施形態においては、メッセージ９１０をボット・フレームワーク・コンポーネント９５０に対して送信することを備えることができる。他の実施形態においては、メッセージ９１０をボット・フレームワーク・コンポーネント９５０に対して渡すことは、メッセージ９１０についての識別子をボット・フレームワーク・コンポーネント９５０に対して送信することなどによって、メッセージング・ボット起動を伴うメッセージ９１０が検出された旨の通知を、ボット・フレームワーク・コンポーネント９５０に対して送信することを備えることができる。
【０１２２】
メッセージング・システム１００は、ボット・フロントエンド・サーバ９５５を備えることができる。ボット・フロントエンド・サーバ９５５は、メッセージング・システム１００のためのメッセージング・ボット・サービスに対するアクセス・ポイントとしての役割を果たすことができる。ボット・フロントエンド・サーバ９５５は、メッセージング・システム１００のサーバと、１つまたは複数の内部および／または外部ボット実行サーバとの間の仲介者としての役割を果たすことができる。ボット・フロントエンド・サーバ９５５は、一般にアクセス可能なフレームワークをメッセージング・ボット・システムに対して提供するように準備された、ボット・フレームワーク・コンポーネント９５０を備えることができる。
【０１２３】
ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０をメッセージ待ち行列監視コンポーネント９４０から受け取り、またはメッセージ９１０の通知をメッセージ待ち行列監視コンポーネント９４０から受け取り、メッセージ９１０をメッセージ待ち行列９８０から取り出し、メッセージ９１０に関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作することができる。
【０１２４】
メッセージング・ボット起動は、ボット起動テキスト断片を備えることができる。メッセージ９１０は、テキスト内容部分を備えることができ、テキスト内容部分は、ボット起動テキスト断片を記録する。ユーザ・インターフェース・コンポーネント９２３は、メッセージ・スレッド表示のテキスト入力部分において、ボット起動テキスト断片を受け取ることができる。クライアント・メッセージング・コンポーネント９２６は、ボット起動テキスト断片をメッセージング・サーバ１１０に対して送信することができる。
【０１２５】
ボット起動テキスト断片は、「＠」アドレス・シンボルなど、ボット起動シンボルで開始するテキスト断片に基づいて、識別され得る。メッセージ待ち行列監視コンポーネント９４０は、メッセージ９１０のテキスト内容部分においてボット起動シンボルを検出し、ボット起動シンボルを検出したことに基づいて、メッセージ９１０がメッセージング・ボット起動を示していることを検出することができる。メッセージ待ち行列監視コンポーネント９４０は、メッセージ待ち行列９８０内の各メッセージを、それらのメッセージがボット起動シンボルで開始しているかについて検査するように動作することができる。
【０１２６】
いくつかの実施形態においては、送り元クライアント・デバイス９２０は、ボット起動フラグを用いてメッセージ９１０のメタデータ部分にフラグを立てることによって、ボットについての情報を含むメッセージにフラグを立てることができる。メッセージ待ち行列監視コンポーネント９４０は、メッセージ９１０のメタデータ部分においてボット起動フラグを検出し、ボット起動フラグを検出したことに基づいて、メッセージ９１０がメッセージング・ボット起動を示していることを検出することができる。
【０１２７】
いくつかのケースにおいては、メッセージング・ボットは、ボットに関連付けられたサービスによって運用される外部ボット・サーバ９７５など、メッセージング・システム１００の外部のサーバによって実行され得る。ボット・フレームワーク・コンポーネント９５０は、メッセージング・ボットに関連付けられたサービスのための、外部ボット・サーバ９７５を決定することができる。メッセージング・システム１００は、ボット・エイリアスに基づいてインデックス付けされた、ボット・エイリアス・レジストリを維持することができる。ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０からのボット・エイリアスによって識別されるメッセージング・ボットを調べ、ボット・エイリアスに関連付けられた外部ボット・サーバ９７５についてのボット情報を取り出すことができる。ボット情報は、限定することなく、外部ボット・サーバ９７５と交信するためのアドレス指定情報を示すことができる。ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０をメッセージング・ボットに関連付けられた外部ボット・サーバ９７５に対して送信することによって、メッセージ９１０をメッセージング・ボットに対して渡すことができる。いくつかの実施形態においては、メッセージ９１０を渡すことは、メッセージ内容を抽出し、ボット・サーバ対話アプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用して、メッセージ内容を外部ボット・サーバ９７５に対して送信することを含むことができる。
【０１２８】
他のケースにおいては、メッセージング・ボットは、メッセージング・システム１００のサーバによって実行され得る。ボット・フレームワーク・コンポーネント９５０は、メッセージング・ボットに関連付けされたサービスのためにホステッド・ボット・サーバ９６５を決定することができる。ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０からのボット・エイリアスによって識別されるメッセージング・ボットを調べ、ボット・エイリアスに関連付けられたホステッド・ボット・サーバ９６５についてのボット情報を取り出すことができる。ホステッド・ボット・サーバ９６５は、メッセージング・システム１００のプロバイダによって維持される、ボット・サーバを含むことができる。ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０をメッセージング・ボットに関連付けられたホステッド・ボット・サーバ９６５に対して送信することによって、メッセージ９１０をメッセージング・ボットに対して渡すことができる。
【０１２９】
メッセージング・システム１００は、ユーザがボットを見つけるのを、およびボットをアドレス指定するのを支援することができる。メッセージング・システム１００は、クライアント・デバイスのユーザのために提案されるメッセージング・ボットを生成することができる。これらの提案は、メッセージング・クライアントのテキスト入力フィールドにおいてボット起動シンボルを入力することなどによる、メッセージング・ボットの予想される起動に応答して、生成され得る。これらの提案は、検索を遂行するユーザに即して、メッセージ・スレッド内における１人もしくは複数の他のユーザに即して、メッセージ・スレッドに即して、および／または他の情報に即して、選択され得る。これらの提案は、ユーザによってテキスト入力フィールドに入力されたテキストで開始するボット・エイリアスを選択することによって、ユーザがテキスト入力フィールドに追加のテキストを入力するにつれて、精緻化され得る。
【０１３０】
ユーザ・インターフェース・コンポーネント９２３は、メッセージング・クライアントのテキスト入力フィールドにおいて、エイリアス開始部分を受け取ることができる。ユーザ・インターフェース・コンポーネント９２３は、テキスト入力フィールドに入力されたテキストを、ボット起動シンボルがそれに先行していることに基づいて、エイリアス開始部分と識別することができる。しかしながら、一般に、ユーザ・インターフェース・コンポーネント９２３は、テキスト入力フィールドに入力されたいずれのテキストもメッセージング・システム１００に対して送信することができる。ユーザ・インターフェース・コンポーネント９２３は、エイリアス開始部分をボット・フレームワーク・コンポーネント９５０に対して送信することができる。いくつかの実施形態においては、エイリアス開始部分は、ボット・フロントエンド・サーバ９５５に対して直接的に送信され得る。他の実施形態においては、エイリアス開始部分は、クライアント・フロントエンド・サーバ９３５を介して送信され得る。
【０１３１】
ボット・フレームワーク・コンポーネント９５０は、ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取ることができる。ボット・フレームワーク・コンポーネント９５０は、１つまたは複数の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに照会し、１つまたは複数の予想されるボット・エイリアス・テキスト断片を送り元クライアント・デバイス９２０に対して送信することができる。送り元クライアント・デバイス９２０は、１つまたは複数の予想されるボット・エイリアス・テキスト断片を、選択または使用のために、ユーザから利用可能にするために、１つまたは複数の予想されるボット・エイリアス・テキスト断片を、送り元クライアント・デバイス９２０のユーザに対して表示することができる。ユーザが、ボット・エイリアスをインターフェースにおいて選択すること、またはボット・エイリアスをテキスト入力フィールド内にタイプすることによって、１つまたは複数の予想されるボット・エイリアス・テキスト断片によって伝達される予想されるボット・エイリアスの１つを使用した場合、メッセージ９１０は、したがって、１つまたは複数の予想されるボット・エイリアス・テキスト断片のうちのボット・エイリアス・テキスト断片を、メッセージ９１０のテキスト部分に備えることができる。
【０１３２】
メッセージング・システム１００は、ユーザがボット・コマンドを決定するのを支援することができる。メッセージング・システム１００は、クライアント・デバイスのユーザのために、提案されるメッセージング・ボット・コマンドを生成することができる。これらの提案は、メッセージング・クライアントのテキスト入力フィールドにおいて、識別されるボット・エイリアスが後続する、ボット起動シンボルを入力することなどによる、メッセージング・ボットの予想される起動に応答して、生成され得る。これらの提案は、検索を遂行するユーザに即して、メッセージ・スレッド内における１人もしくは複数の他のユーザに即して、メッセージ・スレッドに即して、および／または他の情報に即して、選択され得る。ボット・コマンドの提案は、ボットを実行するサービスによって遂行され得、そのため、提案は、サービス・プロバイダによって、メッセージング・システム１００の外部において生成され得る。
【０１３３】
これらの提案は、ユーザによってテキスト入力フィールドに入力されたテキストで開始するボット・コマンドを選択することによって、ユーザがテキスト入力フィールドに追加のテキストを入力するにつれて、精緻化され得る。ユーザ・インターフェース・コンポーネント９２３は、メッセージ・スレッド表示のテキスト入力部分を介して、コマンド・テキスト断片開始部分を受け取り、コマンド・テキスト断片開始部分をボット・フレームワーク・コンポーネント９５０に対して送信し、コマンド・テキスト断片開始部分をボット・フレームワーク・コンポーネント９５０に対して送信したのに応答して、１つまたは複数の予想されるボット・コマンド・テキスト断片をボット・フレームワーク・コンポーネント９５０から受け取ることによって、１つまたは複数の予想されるボット・コマンド・テキスト断片を決定することができる。
【０１３４】
ユーザ・インターフェース・コンポーネント９２３は、メッセージ・スレッド表示のテキスト入力部分において、ボット起動テキスト断片を受け取ることができる。このボット起動テキスト断片を受け取ることは、メッセージング・ボット起動を受け取ることに対応することができる。ユーザ・インターフェース・コンポーネント９２３は、１つまたは複数の予想されるボット・コマンド・テキスト断片を決定するために、ボット起動テキスト断片をボット・フレームワーク・コンポーネント９５０に対して送信することができる。ボット・エイリアスについての提案と同様に、いくつかの実施形態においては、ボット起動テキスト断片は、クライアント・フロントエンド・サーバ９３５を介して、ボット・フレームワーク・コンポーネント９５０に対して送信され得る。
【０１３５】
ボット・フレームワーク・コンポーネント９５０は、ボット起動テキスト断片を受け取り、ボット・コマンド・テキスト断片のコマンド開始部分を抽出することができる。コマンド開始部分を抽出することは、ボット起動シンボルおよびボット・エイリアスをボット起動テキスト断片から排除することを備えることができる。代替的に、いくつかの実施形態においては、ボット起動テキスト断片全体が、メッセージング・ボットに対して渡され得る。ボット・フレームワーク・コンポーネント９５０は、コマンド開始部分をメッセージング・ボットに対して渡し、１つまたは複数の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取ることができる。ボット・フレームワーク・コンポーネント９５０は、その後、１つまたは複数の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信することができる。ユーザが、予想されるボット・コマンド・テキスト断片の１つを使用した場合、それは、メッセージ９１０のテキスト部分内に現れることができる。
【０１３６】
ユーザ・インターフェース・コンポーネント９２３は、１つまたは複数の予想されるボット・コマンド・テキスト断片をボット・フレームワーク・コンポーネント９５０から受け取り、１つまたは複数の予想されるボット・コマンド・テキスト断片をメッセージ・スレッド表示内に表示することができる。１つまたは複数の予想されるボット・コマンド・テキスト断片のこの表示は、メッセージング・ボット対話ユーザ・インターフェースを起動することに対応することができる。
【０１３７】
ユーザ・インターフェース・コンポーネント９２３は、１つまたは複数の予想されるボット・コマンド・テキスト断片からのボット・コマンド・テキスト断片のユーザ選択を受け取ることができる。ユーザ選択は、予想されるボット・コマンド断片の表示において、予想されるボット・コマンド・テキスト断片の１つを選択することを備えることができる。ユーザ選択は、メッセージング・クライアントのテキスト入力フィールドにおいて、予想されるボット・コマンド・テキスト断片の１つを入力することを備えることができる。このボット・コマンド・テキスト断片は、メッセージ９１０として、クライアント・フロントエンド・サーバ９３５のメッセージング・コンポーネント９３０に対して送信され得る。
【０１３８】
いくつかのケースにおいては、メッセージング・ボットのための構成インターフェースは、メッセージング・ボット対話ユーザ・インターフェースとして起動され得る。メッセージ・スレッド内においてメッセージ・ボットを起動することは、ユーザ・インターフェース・コンポーネント９２３が、メッセージ・スレッド表示において、メッセージング・ボット・コントロール選択を受け取ることを含むことができる。メッセージング・ボット・コントロール選択に応答して、ユーザ・インターフェース・コンポーネント９２３は、メッセージ・スレッド表示内にメッセージング・ボット対話構成インターフェースを表示することができる。ユーザ・インターフェース・コンポーネント９２３は、メッセージング・ボット対話構成インターフェースについての１つまたは複数のユーザ・インターフェース選択を受け取ることができる。受け取られた１つまたは複数のユーザ・インターフェース選択は、メッセージ９１０を介してメッセージング・システム１００に対して送られた、メッセージング・ボット対話コマンドを備えることができる。
【０１３９】
いくつかのケースにおいては、選択されたコントロールは、サービス・タイプ・コントロールであることができる。サービス・タイプ・コントロールは、サービスのために複数の提供者が利用可能であることができる、サービスのカテゴリを示す。ユーザ・インターフェース・コンポーネント９２３は、送り元クライアント・デバイス９２０上のメッセージ・スレッド表示において、サービス・タイプ・コントロールのサービス・タイプ・コントロール選択を受け取ることができる。ユーザ・インターフェース・コンポーネント９２３は、サービス・タイプ・コントロール選択に応答して、メッセージ・スレッド表示内に複数のメッセージング・ボット・コントロールを表示することができる。
【０１４０】
ユーザ・インターフェース・コンポーネント９２３は、複数のメッセージング・ボット・コントロールの各々に関連付けられた、サービス遂行情報を表示することができる。サービス遂行情報は、限定することなく、推定されるコスト、推定される到着時間、推定される移動時間、およびサービス利用可能性のうちの１つまたは複数を含むことができる。サービス遂行情報は、ボット・フレームワーク・コンポーネント９５０によって、関連付けられたメッセージング・ボットのためのボット・サーバから取り出され、ユーザ・インターフェース・コンポーネント９２３に対して提供され得る。
【０１４１】
メッセージング・ボット、したがって、関連付けられたサービスの使用は、サービスに関するユーザについてのアカウントを必要とすることがある。ユーザ・インターフェース・コンポーネント９２３は、送り元クライアント・デバイス９２０上のメッセージ・スレッド表示において、メッセージング・ボット・コントロール選択を受け取ることができる。ユーザ・インターフェース・コンポーネント９２３は、ユーザがメッセージング・ボットに関連付けられたサービスのためのアカウントを欠いていることを決定し、それに応答して、メッセージ・スレッド表示内に、サービスのためのユーザ・アカウント作成インターフェースを表示することができる。ユーザ・インターフェース・コンポーネント９２３は、ユーザ・アカウント作成インターフェースとのユーザ対話を受け取り、受け取られたユーザ・アカウント作成インターフェースとのユーザ対話に基づいて、ユーザ・アカウント作成コマンドを生成し、ユーザ・アカウント作成コマンドをサービスに対して送信することができる。いくつかの実施形態においては、ユーザ・アカウント作成コマンドは、サービスに対して直接的に送信され得る。他の実施形態においては、ユーザ・アカウント作成コマンドは、ボット・フレームワーク・コンポーネント９５０および／またはクライアント・フロントエンド・サーバ９３５を介して、送信され得る。
【０１４２】
いくつかのサービスは、要求されたサービスの遂行の前に、送り元クライアント・デバイス９２０についてのユーザ電話番号が検証されることを必要とすることがある。メッセージング・システム１００が、（例えば、テキスト・メッセージで）検証コードを電話番号に対して送信し、メッセージング・クライアントにおいて入力された検証コードを有することなどによって、電話番号をすでに検証している場合、メッセージング・システム１００は、電話番号の検証を裏付け、したがって、サービスが電話番号検証を遂行することを省き、ユーザが電話番号検証を遂行する労力を省くことができる。そのため、メッセージング・システム１００は、ユーザ・アカウント作成コマンドに関連付けられたサービスに対して、クライアント・デバイスに関連付けられたユーザ電話番号を検証することができる。サービスに対してユーザ電話番号を検証することは、サービスがユーザ電話番号検証を遂行することを防止するように動作することができる。
【０１４３】
ユーザについての金融情報が、メッセージング・システム１００に登録されている場合、ユーザについての完全な金融情報は、ユーザの金融詳細を保護するために、サービスから隠され得る。代わりに、メッセージング・ボット対話コマンドが、サービスに関するサービス要求を起動した場合、クライアント・メッセージング・コンポーネント９２６は、ユーザについてのトークン化された金融情報をサービスに対して送信することができる。トークン化された金融情報は、ユーザについての完全な金融情報をサービスに対して暴露することなしに、サービスが、金融取引を遂行することを可能にすることができる。メッセージング・システム１００は、トークン化された金融情報を生成するために、金融情報に対して不可逆変換を使用することができる。いくつかのケースにおいては、金融情報は、送り元クライアント・デバイス９２０の代わりに、またはそれに加えて、メッセージング・サーバ１１０上に記憶され得、トークン化された金融情報は、メッセージング・サーバ１１０によって生成され、それから送られる。
【０１４４】
ユーザが、サービスに関するアカウントをすでに有する場合、メッセージング・サービス１００は、サービスに関する、サービスを準備するための既存のアカウントを使用することができる。メッセージング・システム１００が、ユーザについての金融情報を現在有していない場合、サービスは、メッセージング・システム１００および他のサービスに関する、金融取引とともに使用するためのユーザの金融情報をメッセージング・システム１００に対して提供することができる。メッセージング・システム１００に対するこの金融情報の提供は、完成したトークン化されていない形態を取ることができる。ユーザ・インターフェース・コンポーネント９２３は、クライアント・デバイス上のメッセージ・スレッド表示において、メッセージング・ボット・コントロール選択を受け取り、ユーザが、メッセージング・ボットに関連付けられたサービスのためのユーザ・アカウントに関連付けられていることを決定することができる。この決定は、送り元クライアント・デバイス９２０上のメッセージング・クライアントによって、またはメッセージング・サーバ１１０によって行われ得る。送り元クライアント・デバイス９２０、またはボット・フレームワーク・コンポーネント９５０は、メッセージング・ボット・コントロール選択を受け取ったのに応答して、ユーザについての金融情報についてサービスに問い合わせ、メッセージング・システム１００のユーザに関連付けられた金融情報を記憶することができる。
【０１４５】
メッセージ待ち行列９８０から抽出されるのに加えて、メッセージ９１０は、受け取り先クライアント・デバイス９９０に対して送信され得る。送り元クライアント・デバイス９２０上のメッセージング・クライアントのメッセージ・スレッド表示は、メッセージング・システム１００を用いて、メッセージ・スレッドに関連付けられ得る。メッセージ・スレッドは、メッセージング・システムの２人以上の個人ユーザに関連付けられ得る。受け取り先クライアント・デバイス９９０を含むことができる、送り元クライアント・デバイス９２０以外の、それらのユーザについてのクライアント・デバイスは、各々、メッセージ９１０のコピーを受け取ることができる。２人のユーザだけがメッセージ・スレッドに関連付けられている場合であっても、各ユーザは、２つ以上のクライアント・デバイスに関連付けられ得、メッセージ９１０を受け取るためのクライアント・デバイスの数を増加させる。グループ・メッセージ・スレッドなどにおいて、追加のユーザが、メッセージ・スレッドに関連付けられる場合、それらの追加のユーザについてのクライアント・デバイスも、メッセージ９１０を受け取ることができる。メッセージ９１０は、メッセージング・ボットによる処理のために抽出されるのに加えて、一般に、メッセージ９１０は、メッセージング・システム１００の通常の動作を通して、クライアント・デバイスに対して配信され得る。
【０１４６】
図１０は、メッセージング・システム１００における、メッセージ９１０に対する応答１０１０の一実施形態を示している。
いくつかのケースにおいては、メッセージング・システム１００は、ボット応答を生成することができる。ホステッド・ボット・サーバ９６５上のボット実行コンポーネント９６０は、メッセージ９１０に対するメッセージング・ボット応答１０１０を生成することができる。いくつかのホステッド・ボットは、メッセージング・システム１００のプロバイダの内部において開発され得、それは、限定することなく、ゲームをプレイするためのボット、メッセージング・システム・サービスにアクセスするためのボット、または他のサービスのためのボットを含むことができる。いくつかのホステッド・ボットは、メッセージング・システム１００のプロバイダの外部において開発され得る。これらのサードパーティ・ボットは、ホステッド・ボットを実行するサードパーティ・ソフトウェアのためのホスティング・プラットフォームとして、ホステッド・ボット・サーバ９６５を使用して、メッセージング・システム１００のプロバイダによってホストされ得る。ボット実行コンポーネント９６０は、メッセージ９１０に対するメッセージング・ボット応答１０１０を、ボット・フレームワーク・コンポーネント９５０に対して送信することができる。
【０１４７】
ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０に対するメッセージング・ボット応答１０１０を、ホステッド・ボット・サーバ９６５からか、それとも外部ボット・サーバ９７５からかにかかわらず、ボット・サーバから受け取ることができる。ボット・フレームワーク・コンポーネント９５０は、メッセージ９１０に対するメッセージング・ボット応答１０１０を受け取り、メッセージング・ボット応答１０１０をメッセージ待ち行列９８０内に挿入することができる。メッセージング・ボット応答１０１０をメッセージ待ち行列９８０内に挿入することは、メッセージ待ち行列９８０に対する新たな更新として、メッセージング・ボット応答１０１０をメッセージ待ち行列９８０に対して追加することを備えることができる。メッセージング・コンポーネント９３０は、メッセージ待ち行列９８０内のメッセージをそれの関連するユーザのデバイスに対して提供する、メッセージ待ち行列９８０の通常の動作の一部として、メッセージング・ボット応答１０１０を送り元クライアント・デバイス９２０に対して送信することができる。
【０１４８】
メッセージ９１０は、メッセージ・スレッドに関連付けて、発生させ得る。いくつかのケースにおいては、メッセージ・スレッドは、ユーザが、追加のユーザなしに、ボットと直接的に関わる、１人対ボット・メッセージ・スレッドであることができる。他のケースにおいては、１対１メッセージ・スレッドまたはグループ・メッセージ・スレッドなどの、メッセージ・スレッドは、複数のユーザを含むことができる。メッセージング・ボット応答１０１０は、メッセージ・スレッド内における表示のために印しを付けられて、メッセージ待ち行列９８０内に挿入され得る。メッセージング・ボット応答１０１０は、メッセージ・スレッド内における表示のために印しを付けられて、メッセージ・スレッドの各参加者のためのメッセージ待ち行列内に挿入され得る。
【０１４９】
メッセージ・スレッドは、メッセージング・システム１００の２人以上の個人ユーザに関連付けられ得る。ユーザの各々は、メッセージング・システム１００を用いて、彼らに関連付けられたメッセージ待ち行列を有することができる。応答１０１０は、２人以上のユーザの各々について、メッセージ待ち行列内に挿入され得る。これらのユーザの各々は、ユーザの各々についてのユーザ・アカウントを用いて登録されたメッセージング・クライアントを、クライアント・デバイスの各々に有することなどによって、少なくとも１つのクライアント・デバイスに関連付けられ得る。したがって、クライアント・フロントエンド・サーバ上のメッセージング・コンポーネントは、メッセージング・ボット対話応答１０１０を、メッセージング・システム１００から２つ以上のクライアント・デバイスに対して送信することができる。
【０１５０】
送り元クライアント・デバイス９２０上のメッセージング・クライアントのクライアント・メッセージング・コンポーネント９２６は、メッセージング・ボット対話応答１０１０をメッセージング・システム１００から受け取ることができる。その後、メッセージング・クライアントのユーザ・インターフェース・コンポーネント９２３は、メッセージ・スレッド表示内に、メッセージング・ボット対話応答１０１０を表示することができる。
【０１５１】
図１１は、メッセージング・システム１００における、サブスクリプション・コマンド１１１０の一実施形態を示している。
ほとんどのケースにおいては、ボットは、ユーザによってボットに対して送り出されたメッセージに応答して、ユーザのメッセージ待ち行列９８０に対してメッセージを追加することだけを許可され得る。メッセージング・ボットは、ユーザがメッセージ９１０をメッセージング・ボットに対して送信したので、応答１０１０を用いてメッセージ９１０に応答することを認可され得る。いくつかのケースにおいては、メッセージング・ボットは、メッセージ９１０に対する単一の応答１０１０を送ることを認可され得る。他のケースにおいては、メッセージング・ボットは、メッセージ９１０に応答して、限られた期間の間、応答を送ることを認可され得る。
【０１５２】
加えて、メッセージング・システム１００のユーザは、ボットから更新をプッシュされるように、メッセージ・スレッドをボットに対してサブスクライブすることも可能にされ得る。ボットに対するサブスクリプションは、メッセージをサブスクライブされたメッセージ・スレッドに送信することを、ボットに認可することができる。この認可は、与えられた時間期間内において送られ得るサブスクリプション・メッセージの数には限界があるなど、制限を有することができる。例えば、メッセージング・ボットは、１日にたかだか１つのメッセージを、または１日に具体的な数のメッセージを送信するように制限され得る。いくつかの実施形態においては、ユーザについてのサブスクライバ・スレッド・プリファレンスは、メッセージング・ボットがメッセージ・スレッドをメッセージングすることができる頻度に対する制限を指定することができる。
【０１５３】
メッセージング・ボットに対するメッセージ９１０は、サブスクリプション・コマンド１１１０を備えることができ、サブスクリプション・コマンド１１１０は、メッセージング・システム１００およびメッセージング・ボットに、メッセージ・サブスクリプション・コマンド１１１０に関連付けられたメッセージ・スレッドが、メッセージング・ボットからのサブスクリプション・メッセージを受け取るべきであることを命令する。ボット・フレームワーク・コンポーネント９５０は、ボット・サブスクリプション・コマンド１１１０に応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブすることができる。様々な実施形態においては、サブスクリプション・コマンドは、クライアント・メッセージング・コンポーネント９２６からボット・フレームワーク・コンポーネント９５０に対して直接的に送信され得、メッセージング・コンポーネント９３０からボット・フレームワーク・コンポーネント９５０に対して直接的に送信され得、またはメッセージ待ち行列９８０内において検出され、それによって、ボット・フレームワーク・コンポーネント９５０に対して伝達され得る。
【０１５４】
サブスクリプション・コマンド１１１０は、サブスクリプション・コマンド１１１０によってサブスクライブされたメッセージ・スレッドに関与するユーザについてのあらゆる受け取り先クライアント・デバイスなど、受け取り先クライアント・デバイス９９０によっても受け取られ得る。サブスクリプション・コマンド１１１０は、メッセージ・スレッドがメッセージング・ボットに対してサブスクライブされた旨のメッセージ・スレッドにおける通知として、受け取り先クライアント・デバイス９９０に対して伝達され得る。一般に、任意の数のメッセージ・スレッドが、スレッドをメッセージング・ボットに対してサブスクライブし、スレッドをメッセージング・ボットからアンサブスクライブし、またはメッセージング・ボットに対するメッセージ・スレッドのサブスクリプションについてのサブスクライバ・スレッド・プリファレンスを変更することができる。これらのアクションのいずれも、メッセージ・スレッドの各メンバのためのメッセージ待ち行列に対して追加される通知メッセージをもたらすことができ、通知メッセージは、アクションがサブスクリプションか、アンサブスクリプションか、それともサブスクライバ・スレッド・プリファレンスの変更かを伝達する。
【０１５５】
サブスクリプションは、サブスクリプション・レジストリ内に維持され得る。サブスクリプション・レジストリは、メッセージング・システム１００内においてメッセージ・スレッドを一意的に識別するスレッド識別子と、メッセージング・ボットに対するサブスクリプションとの間の対応付けを行うことができる。サブスクリプション・レジストリは、限定することなく、データベース、または登録された各サブスクリプションのための行を有するデータベース・テーブルを備えることができる。登録された各サブスクリプションは、そのサブスクリプションについてのサブスクライバ・スレッド・プリファレンスに関連付けられ得る。
【０１５６】
図１２は、メッセージング・システム１００における、ブロードキャスト・メッセージ１２１０の一実施形態を示している。
クライアント・デバイスに対するブロードキャスト・メッセージ１２１０の配信は、ブロードキャスト・メッセージ１２１０が有することができる多数の受け取り先に配慮し、したがって、ブロードキャスト・メッセージ１２１０をブロードキャストする仕事を複数のサーバおよびサーバ・デバイスに分散させるために、２つのステージにおいて遂行され得る。いくつかのケースにおいては、メッセージング・ボットは、数百万または数十億のサブスクライバを有することがあり、それは、ブロードキャスト・メッセージ１２１０を望ましい応答性で配信する単一のサーバ・デバイスの能力を超えることがある。そのため、第１ステージ・サーバは、潜在的な受け取り先のリストを生成することができ、複数の第２ステージ・サーバは、ブロードキャスト・メッセージ１２１０を、ブロードキャスト・メッセージ１２１０の受け取り先のメッセージ待ち行列に対して追加することができる。
【０１５７】
ボット・フロントエンド・サーバ９５５は、ブロードキャスト・コンポーネント１２４０を備えることができる。ブロードキャスト・コンポーネント１２４０は、一般に、潜在的な受け取り先のリストを生成し、ブロードキャスト・メッセージ１２１０の配信を１つまたは複数のブロードキャスト・ワーカに対して割り当てるように準備され得る。ブロードキャスト・コンポーネント１２４０は、ブロードキャスト・メッセージ１２１０をメッセージング・ボットから受け取り、ブロードキャスト・メッセージについての複数のサブスクライバ・スレッドを決定することができる。複数のサブスクライバ・スレッドを決定することは、メッセージング・ボットについてのメッセージング・ボット識別子をサブスクリプション・レジストリと比較し、メッセージング・ボットに対してサブスクライブされたメッセージ・スレッドについてのスレッド識別子を取り出すことなどによって、メッセージング・ボットに基づいて行われ得る。
【０１５８】
ブロードキャスト・コンポーネント１２４０は、複数のサブスクライバ・スレッドを、複数のサブスクライバ・スレッド・チャンクに分割することができる。サブスクライバ・スレッド・チャンクは、メッセージング・システム１００内において、事前定義されたサイズを有することができる。ボット・フレームワーク・コンポーネント９５０は、事前定義されたチャンク・サイズに基づいて、複数のサブスクライバ・スレッド・チャンクを生成することができ、サブスクライバ・スレッドの数が事前定義されたサイズと正確に同じではないことが原因の、より小さいサイズの単一のチャンクをあり得る例外として、複数のサブスクライバ・スレッドを事前定義されたサイズのチャンクに分割する。互いの一方のうちにメンバシップを有するように、ほぼ等しいサイズのサブスクライバ・スレッド・チャンクを作成するなど、他の分割方式が、使用され得、このほぼ等しいサイズは、事前定義されたサイズを超えずに、可能な限り大きい。他の分割技法は、代替的または追加的に使用され得る。
【０１５９】
ボット・フレームワーク・コンポーネント９５０は、複数のサブスクライバ・スレッド・チャンクの各々を、複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てることができる。この複数のブロードキャスト・ワーカは、複数のワーカ・サーバ１２４５上において実行することができる。ブロードキャスト・ワーカ１２５０は、一般に、サブスクライバ・スレッド・チャンクを処理し、ブロードキャスト・メッセージ１２１０を複数のメッセージ待ち行列に対して追加するように準備され得る。複数のブロードキャスト・ワーカは、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加することができ、複数のブロードキャスト・メッセージの各々は、ブロードキャスト・メッセージを、それが割り当てられたサブスクライバ・スレッド・チャンクに対応する、メッセージ待ち行列に対して追加する。
【０１６０】
ブロードキャスト・ワーカのアクションは、サブスクライバ・スレッド・チャンクの要素として、ブロードキャスト・ワーカに対して配信され得る、サブスクライバ・スレッド・プリファレンスによって知らされ得る。複数のブロードキャスト・ワーカは、複数のサブスクライバ・スレッド・プリファレンスを取り出すことができ、複数のサブスクライバ・スレッド・プリファレンスの各々は、対応するサブスクライバ・スレッドに関連付けられる。複数のブロードキャスト・ワーカは、複数の選択されるサブスクライバ・スレッドを決定するために、複数のサブスクライバ・スレッド・プリファレンスの各々を対応するサブスクライバ・スレッドと比較することができ、複数の選択されたサブスクライバ・スレッドは、複数のサブスクライバ・スレッドのサブセットである。例えば、サブスクライバ・スレッド・プリファレンスは、１日の夜間の睡眠時間帯を除外するなどした、ブロードキャスト・メッセージが望まれる１日の時間帯を指定することができる。サブスクライバ・スレッド・プリファレンスは、ブロードキャスト・メッセージのトピック、頻度、内容（例えば、テキスト、画像、ビデオ）、もしくは他の任意の要素、またはブロードキャスト・メッセージについてのコンテキストを指定し、そのようなブロードキャスト・メッセージが許容されるべきか、それとも許容されるべきではないかを指定することができる。様々な技法が、限定することなく、サブスクライバ・スレッド・プリファレンスのためのルールを指定し、適用するために使用され得る。その後、複数のブロードキャスト・ワーカが、ブロードキャスト・メッセージを、複数の選択されるサブスクライバ・スレッドに対応する複数の選択されるメッセージ待ち行列に対して追加することができ、複数の選択されるメッセージ待ち行列は、選択されたサブスクライバ・スレッドのメンバであるユーザのためのメッセージ待ち行列に対応する。
【０１６１】
本明細書には、開示するアーキテクチャの新規な態様を実施するための例示的な方法の代表的な１組のフローチャートが記載される。説明を単純にするために、例えば、フローチャートまたはフロー図の形態で本明細書に示す１つまたは複数の方法は、一連の行為として図示され、記載されるが、いくつかの行為は、それに従い、本明細書に図示し、記載するものとは異なる順番で他の行為と同時に、または、記載するものとは異なる順番かもしくは他の行為と同時に発生してもよいため、方法は行為の順番によって制限されるものではないことは理解されるべきである。例えば、当業者は、方法が、代替的に、状態図にあるように、一連の相関状態または相関イベントとして表すことができるであろうことを了解し、理解するであろう。また、新規の実施態様には、方法に示されるすべての行為が必要でなくてもよい。
【０１６２】
図１３Ａは、第１の論理フロー１３００の一実施形態を示す。論理フロー１３００は、本明細書に記載される１つまたは複数の実施形態によって実行される動作のいくつかまたは全部を表すものであってもよい。
【０１６３】
図１３Ａに示された、示された実施形態においては、論理フロー１３００は、ブロック１３０２において、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取ることができる。
【０１６４】
論理フロー１３００は、ブロック１３０４において、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動することができる。
【０１６５】
論理フロー１３００は、ブロック１３０６において、メッセージング・ボット対話ユーザ・インターフェースを介して、メッセージング・ボット対話コマンドを受け取ることができる。
【０１６６】
論理フロー１３００は、ブロック１３０８において、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信することができる。
【０１６７】
論理フロー１３００は、ブロック１３１０において、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取ることができる。
【０１６８】
論理フロー１３００は、ブロック１３１２において、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示することができる。
実施形態は、この例に限定されない。
【０１６９】
図１３Ｂは、第１の論理フロー１３５０の一実施形態を示す。論理フロー１３００は、本明細書に記載される１つまたは複数の実施形態によって実行される動作のいくつかまたは全部を表すものであってもよい。
【０１７０】
図１３Ｂに示された、示された実施形態においては、論理フロー１３５０は、ブロック１３５２において、メッセージをクライアント・デバイスから受け取ることができる。
論理フロー１３５０は、ブロック１３５４において、メッセージをメッセージ待ち行列に対して追加することができる。
【０１７１】
論理フロー１３５０は、ブロック１３５６において、メッセージ待ち行列を監視することができる。
論理フロー１３５０は、ブロック１３５８において、メッセージがメッセージング・ボット起動を示していることを検出することができる。
【０１７２】
論理フロー１３５０は、ブロック１３６０において、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すことができる。
【０１７３】
論理フロー１３５０は、ブロック１３６２において、メッセージに関連付けられたメッセージング・ボットを決定することができる。
論理フロー１３５０は、ブロック１３６４において、メッセージをメッセージング・ボットに対して渡すことができる。
【０１７４】
実施形態は、この例に限定されない。
コンピュータ・システムの実施形態
図１４は、中央集中システム１４００のブロック図を示す。中央集中システム１４００は、全体が単一の中央集中サーバ・デバイス１４２０内など、単一コンピューティングエンティティ内のメッセージング・システム１００の構造および動作または構造もしくは動作のいくつかまたは全部を実装してもよい。
【０１７５】
中央集中サーバ・デバイス１４２０は、メッセージング・システム１００のために情報を受信し、処理し、送信することのできる電子デバイスを備え得る。電子デバイスの例は、限定ではないが、ウルトラモバイルデバイス、モバイル・デバイス、携帯情報端末（ＰＤＡ）、モバイル・コンピューティング・デバイス、スマートフォン、電話、デジタル電話、携帯電話、電子書籍リーダ、ハンドセット、ワンウェイページャ、ツーウェイページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家庭用電子機器、プログラム可能な家庭用電子機器、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、無線アクセス・ポイント、基地局、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはそれらの組合せを含むことができる。実施形態は、これに限定されない。
【０１７６】
中央集中サーバ・デバイス１４２０は、処理コンポーネント１４３０を用いて、メッセージング・システム１００のための処理動作またはロジックを実行してもよい。処理コンポーネント１４３０は様々なハードウェア要素、ソフトウェア要素、または双方の組合せを含むことができる。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子（例えば、トランジスタ、レジスタ、キャパシタ、インダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含むことができる。ソフトウェア要素の例は、ソフトウェア・コンポーネント、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプロケーションプログラムインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組合せを含むことができる。実施形態がハードウェア要素を用いて実施されるか、ソフトウェア要素を用いて実施されるか、またはハードウェア要素およびソフトウェア要素を用いて実施されるかを決定することは、所望の計算速度、パワーレベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能の制約等の任意の数の要因に従って、所与の実施態様にとって望ましいとおりに変動することができる。
【０１７７】
中央集中サーバ・デバイス１４２０は、通信コンポーネント１４４０を用いて、メッセージング・システム１００のための通信動作またはロジックを実行することができる。通信コンポーネント１４４０は、パケット交換ネットワーク（例えば、インターネット等の公共ネットワーク、社内イントラネット等のプライベートネットワーク等）、回路交換網（例えば、公衆交換電話網）、またはパケット交換ネットワークおよび回路交換網の（適切なゲートウェイおよびトランスレータを用いた）組合せ等と共に使用するのに適した技法等の、任意のよく知られた通信技法およびプロトコルを実施することができる。通信コンポーネント１４４０は、１つまたは複数の通信インターフェース、ネットワーク・インターフェース、ネットワークインタフェースカード（ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、無線通信装置、無線トランスミッタ／無線レシーバ（トランシーバ）、有線無線通信媒体および無線通信媒体の両方または一方、物理的コネクタ等の様々なタイプの標準的な通信要素を含むことができる。限定ではないが、例として、通信媒体１４１２は有線通信媒体および無線通信媒体を含む。有線通信媒体の例は、有線、ケーブル、金属導線、プリント回路基盤（ＰＣＢ：Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバ、伝搬信号等を含むことができる。無線通信媒体の例は、音響、無線周波数（ＲＦ：Ｒａｄｉｏ−Ｆｒｅｑｕｅｎｃｙ）スペクトル、赤外線および他の無線媒体を含むことができる。
【０１７８】
中央集中サーバ・デバイス１４２０は、通信コンポーネント１４４０を介して、通信信号１４１４を使用して、通信メディア１４１２上において、他のデバイスと通信することができる。デバイスは、与えられた実施にとって望ましいように、中央集中サーバ・デバイス１４２０の内部または外部にあることができる。デバイスは、クライアント・デバイス１４１０を含むことができる。クライアント・デバイス１４１０は、一般に、パーソナル・コンピュータ・デバイス１８０、スマートフォン・デバイス１５０、テーブル・デバイス１６０、クライアント・デバイス３２０、送り元クライアント・デバイス９２０、および受け取り先クライアント・デバイス９９０のいずれかに対応することができる。
【０１７９】
図１５は、分散システム１５００のブロック図を示す。分散システム１５００は、メッセージング・システム１００について、その構造およびオペレーションの両方または一方のいくつかの部分を、複数のコンピューティングエンティティに分散させることができる。分散システム１５００の例として、限定するものではないが、クライアントサーバーアーキテクチャ、３層アーキテクチャ、Ｎ層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムを含むことができる。実施形態は、これに限定されない。
【０１８０】
分散システム１５００は、複数のサーバ・デバイス１５３５、１５４５，１５５５および１５６５を備え得る。概して、サーバ・デバイス１５３５、１５４５，１５５５および１５６５は、図１４を参照して説明したような中央集中サーバ・デバイス１４２０と同じまたは類似したものであり得る。例えば、サーバ・デバイス１５３５、１５４５，１５５５および１５６５はそれぞれ、処理コンポーネント１５３０および通信コンポーネント１５４０を有することができ、それらは、図１４を参照して説明したような処理コンポーネント１４３０および通信コンポーネント１４４０とそれぞれ同じまたは類似したものである。他の例では、サーバ・デバイス１５３５、１５４５，１５５５および１５６５は、通信コンポーネント１５４０を介して、通信信号１５１４を用いて通信媒体１５１２を通して通信することができる。
【０１８１】
サーバ・デバイスは、説明された実施形態に従って、様々な方法を遂行するように動作する、１つまたは複数のクライアント・プログラムを備え、または利用することができる。複数のクライアント・フロントエンド・サーバ・デバイス１５３５は、各々が、クライアント・フロントエンド・サーバ９３５を実行することができ、クライアント・フロントエンド・サーバの各々は、クライアント・フロントエンド・サーバ９３５を参照して説明されたように、タスクを実行する。複数のワーカ・サーバ・デバイス１５４５は、各々が、ワーカ・サーバ９４５、またはワーカ・サーバ１２４５の１つに対応するワーカ・サーバを実行することができ、ワーカ・サーバの各々は、ワーカ・サーバ９４５またはワーカ・サーバ１２４５を参照して説明されたように、タスクを実行する。複数のボット・フロントエンド・サーバ・デバイス１５５５は、各々が、ボット・フロントエンド・サーバ９５５を実行することができ、ボット・フロントエンド・サーバの各々は、ボット・フロントエンド・サーバ９５５を参照して説明されたように、タスクを実行する。複数のホステッド・ボット・サーバ・デバイス１５６５は、各々が、ホステッド・ボット・サーバ９６５を実行することができ、ホステッド・ボット・サーバの各々は、ホステッド・ボット・サーバ９６５を参照して説明されたように、タスクを実行する。
【０１８２】
サーバとサーバ・デバイスとの間の関係は、１対１でないことがあることが理解されよう。いくつかの実施形態においては、単一のサーバ・デバイスが、複数のサーバを実行することができる。同様に、いくつかの実施形態においては、サーバ・デバイスは、メッセージング・システム１００の求めに基づいて、役割を変え、したがって、それらが実行するサーバを変えることができる。一般に、サーバ・タスクを複数のサーバ・デバイスにわたって分散させるために、様々な技法が、使用され得る。
【０１８３】
クライアント・デバイス１５２０は、一般に、パーソナル・コンピュータ・デバイス１８０、スマートフォン・デバイス１５０、テーブル・デバイス１６０、クライアント・デバイス３２０、送り元クライアント・デバイス９２０、受け取り先クライアント・デバイス９９０、およびクライアント・デバイス１４１０のいずれかに対応することができる。
【０１８４】
図１６は、上記に記載の様々な実施形態を実施するのに適した例示的なコンピューティングアーキテクチャ１６００の一実施形態を示す。１つの実施形態では、コンピューティングアーキテクチャ１６００は、電子デバイスを備えるか、電子デバイスの一部として実施されることが可能である。電子デバイスの例は、中でも、図１４および図１５を参照して説明したものを含むことができる。実施形態はこれに限定されない。
【０１８５】
本出願において用いられるとき、「システム」および「コンポーネント」という語は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータに関係したエンティティを指すことを意図され、それらの例が、例示的なコンピューティングアーキテクチャ１６００によって提供される。例えば、コンポーネントは、限定ではないが、プロセッサにおいて実行されるプロセス、プロセッサ、ハードディスクドライブ、（光学および／または磁気記録媒体の）マルチ記録ドライブ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび／またはコンピュータであり得る。例示のために、サーバ上で実行されるアプリケーションおよびサーバの双方がコンポーネントであり得る。１つまたは複数のコンポーネントがプロセスおよび／または実行スレッド内に常駐することができ、コンポーネントは、１つのコンピュータ上に局在することができ、および／または２つ以上のコンピュータ間で分散され得る。更に、コンポーネントは、動作を協調させるように、様々なタイプの通信媒体によって互いに通信可能に結合され得る。協調は、情報の一方向または双方向の交換を含むことができる。例えば、コンポーネントは、通信媒体により通信される信号の形態で情報を通信することができる。情報は、様々な信号線に割り当てられる信号として実施され得る。そのような割り当てにおいて、各メッセージは信号である。一方、更なる実施形態は、代替的にデータメッセージを用いることができる。そのようなデータメッセージは、様々な接続にわたって送信され得る。例示的な接続は、パラレルインタフェース、シリアルインタフェースおよびバスインタフェースを含む。
【０１８６】
コンピューティングアーキテクチャ１６００は、１つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力（Ｉ／Ｏ）コンポーネント、電源等の様々な一般的なコンピューティング要素を含む。しかしながら、実施形態は、コンピューティングアーキテクチャ１６００による実施に限定されない。
【０１８７】
図１６に示すように、コンピューティングアーキテクチャ１６００は、処理ユニット１６０４、システム・メモリ１６０６およびシステムバス１６０８を備える。処理ユニット１６０４、限定ではないが、ＡＭＤ（登録商標）プロセッサ、Ａｔｈｌｏｎ（登録商標）プロセッサ、Ｄｕｒｏｎ（登録商標）プロセッサおよびＯｐｔｅｒｏｎ（登録商標）プロセッサ；ＡＲＭ（登録商標）のアプリケーションプロセッサ、組込み型プロセッサおよびセキュアプロセッサ；ＩＢＭ（登録商標）およびＭｏｔｏｒｏｌａ（登録商標）のＤｒａｇｏｎＢａｌｌ（登録商標）プロセッサおよびＰｏｗｅｒＰＣ（登録商標）プロセッサ；ＩＢＭおよびＳｏｎｙ（登録商標）のセルプロセッサ；Ｉｎｔｅｌ（登録商標）のＣｅｌｅｒｏｎ（登録商標）プロセッサ、Ｃｏｒｅ（２）Ｄｕｏ（登録商標）プロセッサ、Ｉｔａｎｉｕｍ（登録商標）プロセッサ、Ｐｅｎｔｉｕｍ（登録商標）プロセッサ、Ｘｅｏｎ（登録商標）プロセッサおよびＸＳｃａｌｅ（登録商標）プロセッサ；ならびに同様なプロセッサを含む様々な市販のプロセッサのうちの任意のものであり得る。デュアルマイクロプロセッサ、マルチコアプロセッサおよび他のマルチプロセッサアーキテクチャも処理ユニット１６０４として用いられることが可能である。
【０１８８】
システムバス１６０８は、限定ではないがシステム・メモリ１６０６を含むシステムコンポーネントのためのインターフェースを処理ユニット１６０４に提供する。システムバス１６０８は、多岐にわたる市販のバスアーキテクチャのうちの任意のものを用いてメモリバス（メモリ・コントローラを有するかまたは有しない）、周辺バスおよびローカルバスに更に相互接続することができるいくつかのタイプのバス構造のうちの任意のものとすることができる。インタフェースアダプタは、スロットアーキテクチャを介してシステムバス１６０８に接続することができる。例示的なスロットアーキテクチャは、限定ではないが、アクセラレーテッドグラフィックスポート（ＡＧＰ：Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、カードバス、（拡張）業界標準アーキテクチャ（（Ｅ）ＩＳＡ：（Ｅｘｔｅｎｄｅｄ）Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、マイクロチャネルアーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＮｕＢｕｓ、周辺コンポーネント相互接続（拡張）（ＰＣＩ（Ｘ）：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（Ｅｘｔｅｎｄｅｄ））、ＰＣＩエクスプレス、パーソナルコンピュータメモリカード国際組織（ＰＣＭＣＩＡ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）等を含むことができる。
【０１８９】
コンピューティングアーキテクチャ１６００は、様々な製造品を含むかまたは実装することができる。製造品は、ロジックを記憶するためのコンピュータ可読記録媒体を含むことができる。コンピュータ可読記録媒体の例は、揮発性メモリまたは不揮発性メモリ、取外し可能または非取外し可能メモリ、消去可能または非消去可能メモリ、書き込み可能または書き換え可能メモリ等を含む、電子データを記憶することが可能な任意の有形媒体を含むことができる。ロジックの例は、ソースコード、コンパイルされたコード、解釈実行されたコード、実行可能コード、スタティックコード、ダイナミックコード、オブジェクト指向コード、視覚コード等の任意の適切なタイプのコードを用いて実施される実行可能なコンピュータ・プログラム命令を含むことができる。実施形態はまた、１つまたは複数のプロセッサによって読出しおよび実行されて、本明細書に記載の動作の実行を可能にすることができる、非一時的コンピュータ可読媒体に含まれるかまたは非一時的コンピュータ可読媒体上にある命令として少なくとも部分的に実施されることが可能である。
【０１９０】
システム・メモリ１６０６は、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ：Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ：ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ：ｓｔａｔｉｃ  ＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ：ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ：ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリ等のポリマーメモリ、オーボニックメモリ（ｏｖｏｎｉｃ  ｍｅｍｏｒｙ）、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン（ＳＯＮＯＳ：ｓｉｌｉｃｏｎ−ｏｘｉｄｅ−ｎｉｔｒｉｄｅ−ｏｘｉｄｅ−ｓｉｌｉｃｏｎ）メモリ、磁気カードまたは光カード、独立ディスクの冗長アレイ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）ドライブ等のデバイスのアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ：ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）および情報を記憶するのに適した任意の他のタイプの記録媒体等の１つまたは複数の高速メモリユニットの形態の様々なタイプのコンピュータ可読記録媒体を含むことができる。図１６に示す例示される実施形態では、システム・メモリ１６０６は、不揮発性メモリ１６１０および／または揮発性メモリ１６１２を含むことができる。基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）を不揮発性メモリ１６１０に記憶することができる。
【０１９１】
コンピュータ１６０２は、内部（または外部）ハードディスクドライブ（ＨＤＤ）１６１４、取外し可能な磁気ディスク１６１８に対し読出しまたは書き込みを行うための磁気フロッピー（登録商標）ディスクドライブ（ＦＤＤ）１６１６、および取外し可能な光ディスク１６２２（例えば、ＣＤ−ＲＯＭまたはＤＶＤ）に対し読出しまたは書き込みを行うための光ディスクドライブ１６２０を含む１つまたは複数の低速メモリユニットの形態で様々なタイプのコンピュータ可読記録媒体を備えることができる。ＨＤＤ１６１４、ＦＤＤ１６１６および光ディスクドライブ１６２０は、それぞれＨＤＤインターフェース１６２４、ＦＤＤインターフェース１６２６、および光ドライブインタフェース１６２８によってシステムバス１６０８に接続されることが可能である。外部ドライブ実装のためのＨＤＤインターフェース１６２４は、ユニバーサルシリアルバス（ＵＳＢ）およびＩＥＥＥ１３９４インターフェース技術の少なくとも一方または双方を含むことができる。
【０１９２】
ドライブおよび関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令等の揮発性記録および／または不揮発性記録を提供する。例えば、オペレーティングシステム１６３０、１つまたは複数のアプリケーションプログラム１６３２、他のプログラムモジュール１６３４およびプログラムデータ１６３６を含む複数のプログラムモジュールがドライブおよびメモリユニット１６１０、１６１２に記憶され得る。１つの実施形態では、１つまたは複数のアプリケーションプログラム１６３２、他のプログラムモジュール１６３４およびプログラムデータ１６３６は、例えば、メッセージング・システム１００の様々なアプリケーションおよび／またはコンポーネントを含むことができる。
【０１９３】
ユーザは、１つまたは複数の有線／無線入力デバイス、例えば、キーボード１６３８、およびマウス１６４０等のポインティングデバイスを通じてコンピュータ１６０２にコマンドおよび情報を入力することができる。他の入力デバイスは、マイクロフォン、赤外線（ＩＲ）リモートコントロール、無線周波数（ＲＦ）リモートコントロール、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン（例えば、容量型、抵抗型等）、トラックボール、トラックパッド、センサ、スタイラス等を含むことができる。これらのおよび他の入力デバイスは、多くの場合に、システムバス１６０８に結合された入力デバイス・インターフェース１６４２を通じて処理ユニット１６０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェース等の他のインターフェースによって接続されてもよい。
【０１９４】
モニタ１６４４または他のタイプの表示デバイスも、ビデオ・アダプタ１６４６等のインターフェースを介してシステムバス１６０８に接続される。モニタ１６４４は、コンピュータ１６０２に対し内部または外部にあり得る。モニタ１６４４に加えて、コンピュータは通常、スピーカ、プリンタ等の他の周辺出力デバイスを備える。
【０１９５】
コンピュータ１６０２は、リモート・コンピュータ１６４８等の１つまたは複数のリモート・コンピュータへの有線および／または無線通信を介して論理接続を用いてネットワーク化された環境において動作することができる。リモート・コンピュータ１６４８は、ワークステーション、サーバーコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサに基づく娯楽機器、ピアデバイス、または他の共通ネットワークノードであり得、通常、コンピュータ１６０２について記載した要素のうちの多くまたは全てを備えるが、簡潔にするために、メモリ／記録デバイス１６５０のみが示されている。描かれる論理接続は、ローカルエリアネットワーク（ＬＡＮ）１６５２および／またはより大きなネットワーク、例えば広域ネットワーク（ＷＡＮ）１６５４への有線／無線接続を含む。そのようなＬＡＮおよびＷＡＮネットワーキング環境は、事務所および会社において一般的であり、イントラネット等の、企業規模のコンピュータ・ネットワークを容易にする。これらは全て、グローバル通信ネットワーク、例えばインターネットに接続することができる。
【０１９６】
ＬＡＮネットワーキング環境において用いられるとき、コンピュータ１６０２は、有線および／または無線通信ネットワーク・インターフェースまたはアダプタ１６５６を通じてＬＡＮ１６５２に接続される。アダプタ１６５６は、ＬＡＮ１６５２への有線および／または無線通信を容易にすることができる。ＬＡＮ１６５２も、アダプタ１６５６の無線機能と通信するために配置された無線アクセス・ポイントを含むことができる。
【０１９７】
ＷＡＮネットワーキング環境において用いられるとき、コンピュータ１６０２は、モデム１６５８を含むことができるか、またはＷＡＮ１６５４の通信サーバに接続されるか、またはインターネット等によってＷＡＮ１６５４を介して、通信を確立する他の手段を有する。内部または外部の、有線および／または無線デバイスであり得るモデム１６５８は、入力デバイス・インターフェース１６４２を介してシステムバス１６０８に接続する。ネットワーク化された環境では、コンピュータ１６０２について述べられたプログラムモジュールまたはその一部分をリモートメモリ／記録デバイス１６５０に記憶することができる。示されるネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段が用いられてもよいことが理解されるであろう。
【０１９８】
コンピュータ１６０２は、ＩＥＥＥ８０２系規格を用いて、無線通信（例えば、ＩＥＥＥ８０２．２０オーバーザエアー変調技法）において動作可能に配置される無線デバイス等の、有線および無線デバイスまたはエンティティと通信するように動作可能である。これは、少なくとも、中でも、Ｗｉ−Ｆｉ（または無線フィデリティ）、ＷｉＭａｘおよびＢｌｕｅｔｏｏｔｈ（登録商標）の無線通信技術を含む。このため、この通信は従来のネットワークと同じように予め定義された通信構造であり得るか、または、単に少なくとも２つの装置の間におけるアドホック通信であり得る。Ｗｉ−Ｆｉネットワークは、安全で信頼性が高く高速な無線接続を提供するＩＥＥＥ８０２．２０ｘ（ａ、ｂ、ｇ、ｎ等）と称される無線技術を用いる。Ｗｉ−Ｆｉネットワークはコンピュータを互いに、インターネットに、および有線ネットワーク（ＩＥＥＥ８０２．３関連の媒体および機能を用いる）に接続するのに用いられ得る。
【０１９９】
図１７は上記の様々な実施形態を実施するのに適した例示的な通信アーキテクチャ１７００のブロック図を示す。この通信アーキテクチャ１７００は、トランスミッタ、レシーバ、トランシーバ、無線通信装置、ネットワーク・インターフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、電源等の様々な一般的な通信要素を含む。しかしながら、本発明の実施形態は通信アーキテクチャ１７００による実施に限定されない。
【０２００】
図１７に示されるように、通信アーキテクチャ１７００は、１つまたは複数のクライアント１７０２と、サーバ１７０４とを備え、含む。クライアント・デバイス１７０２は、一般に、パーソナル・コンピュータ・デバイス１８０、スマートフォン・デバイス１５０、テーブル・デバイス１６０、クライアント・デバイス３２０、送り元クライアント・デバイス９２０、受け取り先クライアント・デバイス９９０、クライアント・デバイス１４１０、およびクライアント・デバイス１５２０のいずれかを実施することができる。サーバ１７０４は、中央集中サーバ・デバイス１４２０、ならびにクライアント・フロントエンド・サーバ・デバイス１５３５、ワーカ・サーバ・デバイス１５４５、ボット・フロントエンド・サーバ・デバイス１５５５、およびホステッド・ボット・サーバ・デバイス１５６５のいずれかを実施することができる。クライアント１７０２およびサーバ１７０４は、クッキーおよび／または関連付けられたコンテキスト情報などの情報を、それぞれのクライアント１７０２およびサーバ１７０４に対してローカルに記憶するために利用され得る、１つまたは複数のそれぞれのクライアント・データ・ストア１７０８およびサーバ・データ・ストア１７１０に動作可能に接続される。
【０２０１】
クライアント１７０２およびサーバ１７０４は通信フレームワーク１７０６を用いて互いの間で情報を通信することができる。通信フレームワーク１７０６は任意の既知の通信技法およびプロトコルを実装することができる。通信フレームワーク１７０６は、パケット交換網（例えば、インターネット等の公衆ネットワーク、社内イントラネット等のプライベートネットワーク等）、回線交換網（例えば、公衆交換電話網）、またはパケット交換網と回線交換網との組合せ（適切なゲートウェイおよびトランスレータを備える）として実装されることが可能である。
【０２０２】
通信フレームワーク１７０６は、通信ネットワークを受け入れ、通信ネットワークと通信し、通信ネットワークに接続するように構成される様々なネットワーク・インターフェースを実施することができる。ネットワーク・インターフェースは、特殊な形態の入出力インターフェースと見なされ得る。ネットワーク・インターフェースは、限定ではないが、直接接続、イーサネット（登録商標）（例えば、シック、シン、ツイストペア１０／１００／１０００ＢａｓｅＴ等）、トークンリング、無線ネットワーク・インターフェース、セルラーネットワークインタフェース、ＩＥＥＥ８０２．１１ａ−ｘネットワーク・インターフェース、ＩＥＥＥ８０２．１６ネットワーク・インターフェース、ＩＥＥＥ８０２．２０ネットワーク・インターフェース等を含む接続プロトコルを用いることができる。更に、様々な通信ネットワークタイプと関わるために複数のネットワーク・インターフェースが用いられ得る。例えば、ブロードキャスト、マルチキャストおよびユニキャストネットワークによる通信を可能にするために、複数のネットワーク・インターフェースが用いられることが可能である。処理要件がより高い速度およびより多くの容量を指示する場合、クライアント１７０２およびサーバ１７０４によって必要とされる通信帯域幅をプールし、負荷分散し、他の形で増大させるために、分散ネットワークコントローラアーキテクチャが同様に利用されることが可能である。通信ネットワークは、限定ではないが、直接相互接続、セキュア化されたカスタム接続、プライベートネットワーク（例えば、社内イントラネット）、公衆ネットワーク（例えば、インターネット）、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネット上のノードとして動作しているミッション（ＯＭＮＩ：Ｏｐｅｒａｔｉｎｇ  Ｍｉｓｓｉｏｎｓ  ａｓ  Ｎｏｄｅｓ  ｏｎ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク、セルラーネットワークおよび他の通信ネットワークを含む有線および／または無線ネットワークのうちの任意の１つまたはそれらの組合せであり得る。
【０２０３】
図１８は、メッセージング・システム１００のようなマルチキャリアＯＦＤＭシステムで使用するためのデバイス１８００の実施形態を示している。デバイス１８００は、例えば、メッセージング・システム１００を参照して説明したようなソフトウェア・コンポーネント１８６０、および／または論理回路１８３５を実装することができる。論理回路１８３５は、メッセージング・システム１００について説明したオペレーションを実行するための物理回路を含み得る。図１８に示すように、デバイス１８００は、無線インターフェース１８１０と、ベースバンド回路１８２０と、コンピューティング・プラットフォーム１８３０とを備え得るが、ただし実施形態は、この構成に限定されない。
【０２０４】
デバイス１１００は、完全に単一のデバイス内にあるなどの単一のコンピューティングエンティティにおいて、メッセージング・システム１００および／または論理回路１８３５について、その構造および／またはオペレーションの一部またはすべてを具体化することができる。あるいは、デバイス１８００は、クライアントサーバーアーキテクチャ、３層アーキテクチャ、Ｎ層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムのような分散システムアーキテクチャを用いて、メッセージング・システム１００および／または論理回路１８３５について、その構造および／またはオペレーションのいくつかの部分を複数のコンピューティングエンティティに分散させることができる。実施形態は、これに限定されない。
【０２０５】
一実施形態では、無線インターフェース１８１０は、（例えば、相補型符号変調（ＣＣＫ）および／または直交周波数分割多重（ＯＦＤＭ）シンボルを含む）シングルキャリアまたはマルチキャリア変調信号を送信および／または受信するように構成されたコンポーネントもしくはコンポーネントの組み合わせを有し得るが、ただし実施形態は、いずれかの特定の空中（ｏｖｅｒ−ｔｈｅ−ａｉｒ）インターフェースまたは変調方式に限定されない。無線インターフェース１８１０は、例えば、受信機１８１２、送信機１８１６、および／または周波数シンセサイザ１８１４を有し得る。無線インターフェース１８１０は、バイアスコントロール、水晶発振器、および／または１つ以上のアンテナ１８１８を有し得る。他の実施形態では、無線インターフェース１８１０は、必要に応じて、外部の電圧制御発振器（ＶＣＯ）、弾性表面波フィルタ、中間周波数（ＩＦ）フィルタ、および／またはＲＦフィルタを使用することができる。可能なＲＦインターフェース構成は多様であるため、その広範な説明は省略する。
【０２０６】
ベースバンド回路１８２０は、受信信号および／または送信信号を処理するために無線インターフェース１８１０と通信することができ、例えば、受信信号をダウンコンバートするためのアナログデジタル変換器１８２２、信号を送信用にアップコンバートするためのデジタルアナログ変換器１８２４を有し得る。さらに、ベースバンド回路１８２０は、個々の受信／送信信号のＰＨＹリンク層処理のためのベースバンドまたは物理層（ＰＨＹ）処理回路１８５６を有し得る。ベースバンド回路１８２０は、例えば、メディアアクセス制御（ＭＡＣ）／データ・リンク層処理のための処理回路１８２８を有し得る。ベースバンド回路１８２０は、例えば、１つ以上のインターフェース１８３４を介した処理回路１８２８および／またはコンピューティング・プラットフォーム１８３０による通信のためのメモリ・コントローラ１８３２を有し得る。
【０２０７】
いくつかの実施形態では、ＰＨＹ処理回路１８２６は、無線フレームのような通信フレームを構築および／または分解するために、バッファメモリのような追加回路と組み合わせて、フレーム構築および／または検出モジュールを含み得る。代替的または追加的に、ＭＡＣ処理回路１８２８は、これらの機能のうちのいくつかの処理を共有するか、またはこれらのプロセスをＰＨＹ処理回路１８２６とは独立に実行することができる。
【０２０８】
コンピューティング・プラットフォーム１８３０は、デバイス１８００にコンピューティング機能を提供し得る。図示のように、コンピューティング・プラットフォーム１８３０は、処理コンポーネント１８４０を有し得る。デバイス１１００は、ベースバンド回路１８２０に対して追加的または代替的に、処理コンポーネント１８４０を用いて、メッセージング・システム１００および／または論理回路１８３５について、その処理オペレーションまたはロジックを実行することができる。処理コンポーネント１８４０（および／またはＰＨＹ１８２６および／またはＭＡＣ１８２８）は、各種ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを含み得る。ハードウェア要素の例として、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子（例えば、トランジスタ、抵抗器、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含むことができる。ソフトウェア要素の例として、ソフトウェア・コンポーネント、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはその任意の組み合わせを含むことができる。ハードウェア要素および／またはソフトウェア要素を用いて実施形態を実現するかどうかの判断は、所望の計算速度、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリ資源、データバス速度、および他の設計制約または性能制約など、所与のインプリメンテーションで要求される任意の数のファクタに応じて異なる判断となり得る。
【０２０９】
コンピューティング・プラットフォーム１８３０は、さらに、他のプラットフォーム・コンポーネント１８５０を有し得る。他のプラットフォーム・コンポーネント１８５０は、１つ以上のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミング装置、ビデオカード、オーディオカード、マルチメディア入力／出力（Ｉ／Ｏ）コンポーネント（例えば、デジタルディスプレイ）、パワーサプライなどのような、一般的な計算要素を含む。メモリユニットの例として、限定するものではないが、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリのようなポリマーメモリ、オーボニックメモリ、相変化または強誘電体メモリ、シリコン／酸化膜／窒化膜／酸化膜／シリコン（ＳＯＮＯＳ）メモリ、磁気または光カード、独立ディスクの冗長アレイ（ＲＡＩＤ）ドライブのようなデバイスアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ））、および情報を保存するのに適した他の任意のタイプの記憶媒体のような、１つ以上のより高速のメモリユニットの形態の各種タイプのコンピュータ可読およびマシン可読記憶媒体を含むことができる。
【０２１０】
デバイス１８００は、例えば、ウルトラモバイルデバイス、モバイル・デバイス、固定デバイス、マシンツーマシン（Ｍ２Ｍ）デバイス、パーソナルデジタルアシスタント（ＰＤＡ）、モバイル・コンピューティング・デバイス、スマートフォン、電話機、デジタル電話機、セルラー電話機、ユーザ装置、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージング装置、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイまたはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家電機器、プログラマブル家電機器、ゲーム機、テレビ、デジタルテレビ、セットトップボックス、無線アクセス・ポイント、基地局、ノードＢ、発展型ノードＢ（ｅＮＢ）、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはその組み合わせであり得る。従って、本明細書に記載のデバイス１８００の機能および／または具体的な構成は、要求に応じて適宜、デバイス１８００の種々の実施形態に含むことも、または省くこともできる。いくつかの実施形態では、デバイス１８００は、３ＧＰＰ  ＬＴＥ仕様および／またはＷＭＡＮ用のＩＥＥＥ１１０２．１６規格および／または本明細書で引用される他の広帯域無線ネットワークの１つ以上に関連したプロトコルおよび周波数に準拠するように構成することができるが、実施形態は、この点に関して限定されない。
【０２１１】
デバイス１８００の実施形態は、単入力単出力（ＳＩＳＯ）アーキテクチャを用いて実現することができる。一方、いくつかの実現形態では、ビームフォーミングまたは空間分割多重アクセス（ＳＤＭＡ）のための適応アンテナ技術、および／またはＭＩＭＯ通信技術を用いた送信および／または受信用のマルチアンテナ（例えば、アンテナ１８１８）を備えることができる。
【０２１２】
デバイス１８００のコンポーネントおよび機能は、ディスクリート回路、特定用途向け集積回路（ＡＳＩＣ）、論理ゲート、および／またはシングルチップアーキテクチャの任意の組み合わせを用いて実装することができる。さらに、デバイス１８００の機能は、必要に応じて適宜、マイクロコントローラ、プログラマブルロジックアレイ、および／またはマイクロプロセッサ、またはその任意の組み合わせを用いて実装することができる。なお、本明細書において、ハードウェア、ファームウェア、および／またはソフトウェア要素を、「ロジック」または「回路」と総称または個称する場合があるということに留意すべきである。
【０２１３】
図１８のブロック図に示す例示的なデバイス１８００は、多くの可能性のある実現形態の１つの機能的説明例を表し得るということは理解されるべきである。従って、添付の図面に示す機能ブロックの分割、欠落、または組み込みは、必ずしも、実施形態における、それらの機能を実装するためのハードウェア・コンポーネント、回路、ソフトウェア、および／または要素の分割、欠落、または組み込みを推測させるものではない。
【０２１４】
コンピュータ実装方法は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取る工程と、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動する工程と、メッセージング・ボット対話ユーザ・インターフェースを介してメッセージング・ボット対話コマンドを受け取る工程と、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信する工程と、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取る工程と、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示する工程とを備えることができる。
【０２１５】
コンピュータ実装方法は、メッセージ・スレッド表示のテキスト入力部分において、ボット起動テキスト断片を受け取る工程であって、ボット起動テキスト断片を受け取る工程が、メッセージング・ボット起動を受け取る工程を備える、工程と、１以上の予想されるボット・コマンド・テキスト断片を決定する工程と、メッセージ・スレッド表示において１以上の予想されるボット・コマンド・テキスト断片を表示する工程であって、１以上の予想されるボット・コマンド・テキスト断片を表示する工程が、メッセージング・ボット対話ユーザ・インターフェースを起動する工程を備える、工程と、１以上の予想されるボット・コマンド・テキスト断片からのボット・コマンド・テキスト断片のユーザ選択を受け取る工程と、ユーザ選択に対応するボット・コマンド・テキスト断片をクライアント・デバイスからメッセージング・システムに対して送信する工程であって、ボット・コマンド・テキスト断片をメッセージング・システムに対して送信する工程が、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信する工程を備える、工程とをさらに備えることができる。
【０２１６】
コンピュータ実装方法は、メッセージ・スレッド表示のテキスト入力部分を介して、コマンド・テキスト断片開始部分を受け取る工程と、コマンド・テキスト断片開始部分をメッセージング・システムに対して送信する工程と、コマンド・テキスト断片開始部分をメッセージング・システムに対して送信したのに応答して、１以上の予想されるボット・コマンド・テキスト断片を受け取ることによって、１以上の予想されるボット・コマンド・テキスト断片を決定する工程とをさらに備えることができる。
【０２１７】
コンピュータ実装方法は、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット・コントロール選択を受け取る工程であって、メッセージング・ボット・コントロール選択を受け取る工程が、メッセージング・ボット起動を受け取る工程を備え、メッセージング・ボット・コントロール選択が、メッセージング・ボットに関連付けられたメッセージング・ボット・コントロールについてのものである、工程と、メッセージ・スレッド表示においてメッセージング・ボット対話構成インターフェースを表示する工程であって、メッセージング・ボット対話構成インターフェースを表示する工程が、メッセージング・ボット対話ユーザ・インターフェースを起動する工程を備える、工程と、メッセージング・ボット対話構成インターフェースについての１以上のユーザ・インターフェース選択を受け取る工程であって、１以上のユーザ・インターフェース選択を受け取る工程が、メッセージング・ボット対話コマンドを受け取る工程を備える、工程とをさらに備えることができる。
【０２１８】
コンピュータ実装方法は、クライアント・デバイス上のメッセージ・スレッド表示において、サービス・タイプ・コントロールのサービス・タイプ・コントロール選択を受け取る工程と、サービス・タイプ・コントロール選択に応答して、メッセージ・スレッド表示において複数のメッセージング・ボット・コントロールを表示する工程であって、複数のメッセージング・ボット・コントロールが、メッセージング・ボット・コントロールを備える、工程と、複数のメッセージング・ボット・コントロールの各々に関連付けられたサービス遂行情報を表示する工程であって、サービス遂行情報が、推定されるコスト、推定される到着時間、推定される移動時間、およびサービス利用可能性のうちの１以上を備える、工程とをさらに備えることができる。
【０２１９】
コンピュータ実装方法は、メッセージング・システムのユーザに関連付けられたクライアント・デバイスをさらに備えることができ、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット・コントロール選択を受け取る工程であって、メッセージング・ボット・コントロール選択を受け取る工程が、メッセージング・ボット起動を受け取る工程を備え、メッセージング・ボット・コントロール選択が、メッセージング・ボットに関連付けられたメッセージング・ボット・コントロールについてのものである、工程と、ユーザがメッセージング・ボットに関連付けられたサービスのためのユーザ・アカウントを欠いていることを決定する工程と、メッセージ・スレッド表示においてサービスのためのユーザ・アカウント作成インターフェースを表示する工程と、ユーザ・アカウント作成インターフェースを用いたユーザ対話を受け取る工程と、ユーザ・アカウント作成インターフェースを用いて受け取られたユーザ対話に基づいて、ユーザ・アカウント作成コマンドを生成する工程と、ユーザ・アカウント作成コマンドをサービスに対して送信する工程とをさらに備える。
【０２２０】
コンピュータ実装方法は、クライアント・デバイスに関連付けられたユーザ電話番号を、ユーザ・アカウント作成コマンドに関連付けられたサービスに対して検証する工程であって、ユーザ電話番号をサービスに対して検証する工程が、サービスがユーザ電話番号検証を遂行することを防止するように動作する、工程とをさらに備えることができる。
【０２２１】
コンピュータ実装方法は、メッセージング・システムのユーザに関連付けられたクライアント・デバイスをさらに備えることができ、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信する工程が、サービスに関するサービス要求を起動し、ユーザについてのトークン化された金融情報をサービスに対して送信する工程をさらに備える。
【０２２２】
コンピュータ実装方法は、メッセージング・システムのユーザに関連付けられたクライアント・デバイスをさらに備えることができ、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット・コントロール選択を受け取る工程であって、メッセージング・ボット・コントロール選択を受け取る工程が、メッセージング・ボット起動を受け取る工程を備え、メッセージング・ボット・コントロール選択が、メッセージング・ボットに関連付けられたメッセージング・ボット・コントロールについてのものである、工程と、ユーザがメッセージング・ボットに関連付けられたサービスのためのユーザ・アカウントに関連付けられていることを決定する工程と、メッセージング・ボット・コントロール選択を受け取ったのに応答して、ユーザについての金融情報についてサービスに問い合わせる工程と、メッセージング・システムのユーザに関連付けられた金融情報を記憶する工程とをさらに備える。
【０２２３】
コンピュータ実装方法は、メッセージング・システムに関するメッセージ・スレッドに関連付けられたメッセージ・スレッド表示をさらに備えることができ、メッセージ・スレッドは、メッセージング・システムの２人以上の個人ユーザに関連付けられる。
【０２２４】
コンピュータ実装方法は、２つ以上のクライアント・デバイスに関連付けられた２人以上の個人ユーザをさらに備えることができ、２つ以上のクライアント・デバイスは、クライアント・デバイスを備え、メッセージング・ボット対話応答をメッセージング・システムから２つ以上のクライアント・デバイスに対して送信する工程をさらに備える。
【０２２５】
装置は、デバイス上のプロセッサ回路と、クライアント・デバイス上のメッセージ・スレッド表示においてメッセージング・ボット起動を受け取り、メッセージング・ボット起動に応答して、クライアント・デバイス上において、メッセージ・スレッド表示と組み合わされる、メッセージング・ボット対話ユーザ・インターフェースを起動し、メッセージング・ボット対話ユーザ・インターフェースを介してメッセージング・ボット対話コマンドを受け取り、メッセージ・スレッド表示においてメッセージング・ボット対話応答を表示するようにプロセッサ回路上において動作するユーザ・インターフェース・コンポーネントと、メッセージング・ボット対話コマンドをクライアント・デバイスからメッセージング・システムに対して送信し、メッセージング・ボット対話応答をクライアント・デバイスにおいてメッセージング・システムから受け取るようにプロセッサ回路上において動作するクライアント・メッセージング・コンポーネントとを備えることができる。装置は、本明細書において説明されるコンピュータ実装方法のいずれかを実施するように動作することができる。
【０２２６】
コンピュータ実装方法は、メッセージをクライアント・デバイスから受け取る工程と、メッセージをメッセージ待ち行列に対して追加する工程と、メッセージ待ち行列を監視する工程と、メッセージがメッセージング・ボット起動を示していることを検出する工程と、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、メッセージに関連付けられたメッセージング・ボットを決定する工程と、メッセージをメッセージング・ボットに対して渡す工程とを備えることができる。
【０２２７】
コンピュータ実装方法は、テキスト内容部分を備えるメッセージをさらに備えることができ、メッセージのテキスト内容部分においてボット起動シンボルを検出する工程と、ボット起動シンボルを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程とをさらに備える。
【０２２８】
コンピュータ実装方法は、メタデータ部分を備えるメッセージをさらに備えることができ、メッセージのメタデータ部分においてボット起動フラグを検出する工程と、ボット起動フラグを検出したことに基づいて、メッセージがメッセージング・ボット起動を示していることを検出する工程とをさらに備える。
【０２２９】
コンピュータ実装方法は、メッセージをメッセージング・ボットに関連付けられたボット・サーバに対して送信することによって、メッセージをメッセージング・ボットに対して渡す工程をさらに備えることができる。
【０２３０】
コンピュータ実装方法は、メッセージに対するメッセージング・ボット応答をボット・サーバから受け取る工程をさらに備えることができる。
コンピュータ実装方法は、メッセージに対するメッセージング・ボット応答を生成する工程と、メッセージに対するメッセージング・ボット応答をボット・フレームワーク・コンポーネントに対して送信する工程とをさらに備えることができる。
【０２３１】
コンピュータ実装方法は、メッセージに対するメッセージング・ボット応答を受け取る工程と、メッセージング・ボット応答をメッセージ待ち行列内に挿入する工程とをさらに備えることができる。
【０２３２】
コンピュータ実装方法は、メッセージング・ボット応答をクライアント・デバイスに対して送信する工程をさらに備えることができる。
コンピュータ実装方法は、メッセージ・スレッドに関連付けられたメッセージをさらに備えることができ、メッセージ待ち行列内に挿入されるメッセージング・ボット応答が、メッセージ・スレッドにおける表示のために印しを付けられる。
【０２３３】
コンピュータ実装方法は、２人以上の個人ユーザに関連付けられたメッセージ・スレッドをさらに備えることができる。
コンピュータ実装方法は、テキスト部分を備えるメッセージをさらに備えることができ、テキスト部分が、ボット・エイリアス・テキスト断片を備え、ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、１以上の予想されるボット・エイリアス・テキスト断片を決定するために、エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、１以上の予想されるボット・エイリアス・テキスト断片をクライアント・デバイスに対して送信する工程とをさらに備える。
【０２３４】
コンピュータ実装方法は、テキスト部分を備えるメッセージをさらに備えることができ、テキスト部分が、ボット・コマンド・テキスト断片を備え、ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、コマンド開始部分をメッセージング・ボットに対して渡す工程と、１以上の予想されるボット・コマンド・テキスト断片をメッセージング・ボットから受け取る工程であって、１以上の予想されるボット・コマンド・テキスト断片が、ボット・コマンド・テキスト断片を備える、工程と、１以上の予想されるボット・コマンド・テキスト断片をクライアント・デバイスに対して送信する工程とをさらに備える。
【０２３５】
コンピュータ実装方法は、メッセージ・スレッドに関連付けられたメッセージをさらに備えることができ、メッセージが、ボット・サブスクリプション・コマンドを備え、ボット・サブスクリプション・コマンドに応答して、メッセージ・スレッドをメッセージング・ボットに対してサブスクライブする工程と、ブロードキャスト・メッセージをメッセージング・ボットから受け取る工程と、メッセージング・ボットに基づいて、ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、複数のサブスクライバ・スレッドが、メッセージ・スレッドを備える、工程と、複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程と、複数のブロードキャスト・ワーカが、複数のサブスクライバ・スレッド・チャンクに基づいて、ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、複数のメッセージ待ち行列が、メッセージ待ち行列を備える、工程とをさらに備える。
【０２３６】
コンピュータ実装方法は、複数のサブスクライバ・スレッド・プリファレンスを取り出す工程であって、複数のサブスクライバ・スレッド・プリファレンスの各々が、対応するサブスクライバ・スレッドに関連付けられる、工程と、複数の選択されるサブスクライバ・スレッドを決定するために、複数のサブスクライバ・スレッド・プリファレンスの各々を対応するサブスクライバ・スレッドと比較する工程であって、複数の選択されるサブスクライバ・スレッドが、複数のサブスクライバ・スレッドのサブセットである、工程と、ブロードキャスト・メッセージを、複数の選択されるサブスクライバ・スレッドに対応する複数の選択されるメッセージ待ち行列に対して追加する工程とをさらに備えることができる。
【０２３７】
装置は、デバイス上のプロセッサ回路と、メッセージをクライアント・デバイスから受け取り、メッセージをメッセージ待ち行列に対して追加するようにプロセッサ回路上において動作するメッセージング・コンポーネントと、メッセージ待ち行列を監視し、メッセージがメッセージング・ボット起動を示していることを検出し、メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、メッセージをボット・フレームワーク・コンポーネントに対して渡すようにプロセッサ回路上において動作するメッセージ待ち行列監視コンポーネントと、メッセージに関連付けられたメッセージング・ボットを決定し、メッセージをメッセージング・ボットに対して渡すように動作するボット・フレームワーク・コンポーネントとを備えることができる。装置は、本明細書において説明されるコンピュータ実装方法のいずれかを実施するように動作することができる。
【０２３８】
少なくとも１つのコンピュータ可読記憶媒体は、実行されたときに、本明細書に記載されるコンピュータ実装方法のいずれかをシステムに行わせる命令を備え得る。
いくつかの実施形態は、「１つの実施形態」または「実施形態」という表現と、それらの派生語とを用いて説明され得る。これらの用語は、実施形態に関して説明される特定の特徴、構造または特性が少なくとも１つの実施形態に含まれることを意味している。本明細書の様々な箇所に現れる「１つの実施形態において」というフレーズは、必ずしも全てが同じ実施形態を指しているわけではない。更に、いくつかの実施形態は、「結合された」および「接続された」という表現と、それらの派生語とを用いて説明され得る。これらの表現は必ずしも互いの同義語として意図されているわけではない。例えば、いくつかの実施形態は、「接続された」および／または「結合された」という表現を用いることにより、２つ以上の要素が直接物理的にまたは電気的に相互接触していることを示すように説明され得る。一方、「結合された」という用語は、２つ以上の要素が互いに直接接触していないが、それでも互いに協働またはインタラクトしていることを意味する場合もある。
【０２３９】
本明細書において用いられる表記および専門用語を全体的に参照すると、本明細書における詳細な説明は、コンピュータまたはコンピュータのネットワーク上で実行されるプログラムプロシージャの観点で表され得る。これらの手続き的（ｐｒｏｃｅｄｕｒａｌ）記載および表現は、当業者によって、当該技術分野における他の当業者に自身の研究の本質を最も効果的に伝えるために用いられている。
【０２４０】
プロシージャとは、ここでは、また一般的に、所望の結果をもたらすオペレーションの首尾一貫したシーケンスであると考えられる。これらのオペレーションは、物理的量の物理的操作を必要とするものである。必須ではないが通例、これらの量は、記憶、転送、組合せ、比較および他の形で操作されることが可能な電気信号、磁気信号または光信号の形態をとる。場合によっては、主に一般的用法の理由から、これらの信号を、ビット、値、要素、シンボル、文字、語、数等と呼ぶことが好都合であることがわかっている。しかしながら、これらの用語および同様の用語は全て適切な物理的量に関連付けられ、これらの量に適用される好都合なラベルにすぎないことに留意されたい。
【０２４１】
更に、実行される操作は、多くの場合、人間のオペレータによって実行される知的オペレーションに一般的に関連付けられる、追加または比較等の用語で参照される。１つまたは複数の実施形態の一部を形成する、本明細書に説明されるオペレーションのいずれにおいても、人間のオペレータのそのような能力は必要でないか、ほとんどの場合に望ましくない。むしろ、オペレーションは機械オペレーションである。様々な実施形態のオペレーションを実行するための有用な機械は、汎用デジタルコンピュータまたは同様のデバイスを含む。
【０２４２】
様々な実施形態は、これらのオペレーションを実行するための装置またはシステムにも関する。この装置は、必要とされる目的のために特に構築されることが可能であるか、またはコンピュータに記憶されるコンピュータ・プログラムによって選択的にアクティベートまたは再構成される汎用コンピュータを含むことができる。本明細書において提示されるプロシージャは、特定のコンピュータまたは他の装置に本質的に関係しない。様々な汎用機械は、本明細書における教示に関連して書かれたプログラムと共に用いられ得るか、または、必要とされる方法ステップを実行する、より特殊な装置を構築することが好都合であるとわかる場合がある。様々なこれらの機械のために必要とされる構造は、与えられる説明から明らかとなるであろう。
【０２４３】
本開示の要約書は、読み手が技術的開示の本質を迅速に理解できるようにするために提供されていることを強調しておく。要約書は、特許請求の範囲の範囲または意味を解釈または限定することに用いられないという理解のもとに提出されている。更に、上記した「発明を実施するための形態」においては、開示を効率化するために様々な特徴がまとめて単一の実施形態にされていることを見てとることができる。このような開示方法は、特許請求される実施形態が各請求項に明示的に記された特徴以外のものを必要とする意図を表していると解釈されるべきではない。むしろ、以下の特許請求の範囲が表しているように、本発明の主題は、開示されている単一の実施形態の全特徴よりも少ない特徴にある。このため、以下の特許請求の範囲は本明細書において「発明を実施するための形態」に組み込まれ、各請求項は独立した１つの実施形態に基づく。「第１の」、「第２の」、「第３の」等の用語は単にラベルとして用いられており、それらの対象物に数的限定を課すことを意図したものではない。
【０２４４】
上記で説明したものは、開示されているアーキテクチャの例を含む。当然ながら、コンポーネントおよび／または方法の全ての考え得る組合せを記載することは不可能であるが、当業者であれば、多くの更なる組合せおよび置き換えが可能であることを認識することができる。したがって、新規のアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内にある全ての変化、変更および変形を包含することが意図される。
【図１】
2019511775.tif 000003
【図２】
2019511775.tif 000004
【図３Ａ】
2019511775.tif 000005
【図３Ｂ】
2019511775.tif 000006
【図３Ｃ】
2019511775.tif 000007
【図３Ｄ】
2019511775.tif 000008
【図３Ｅ】
2019511775.tif 000009
【図４Ａ】
2019511775.tif 000010
【図４Ｂ】
2019511775.tif 000011
【図４Ｃ】
2019511775.tif 000012
【図５Ａ】
2019511775.tif 000013
【図５Ｂ】
2019511775.tif 000014
【図６】
2019511775.tif 000015
【図７Ａ】
2019511775.tif 000016
【図７Ｂ】
2019511775.tif 000017
【図７Ｃ】
2019511775.tif 000018
【図８Ａ】
2019511775.tif 000019
【図８Ｂ】
2019511775.tif 000020
【図８Ｃ】
2019511775.tif 000021
【図８Ｄ】
2019511775.tif 000022
【図９】
2019511775.tif 000023
【図１０】
2019511775.tif 000024
【図１１】
2019511775.tif 000025
【図１２】
2019511775.tif 000026
【図１３Ａ】
2019511775.tif 000027
【図１３Ｂ】
2019511775.tif 000028
【図１４】
2019511775.tif 000029
【図１５】
2019511775.tif 000030
【図１６】
2019511775.tif 000031
【図１７】
2019511775.tif 000032
【図１８】
2019511775.tif 000033
【手続補正書】
【提出日】平成31年2月1日(2019.2.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メッセージをクライアント・デバイスから受け取る工程と、
前記メッセージをメッセージ待ち行列に対して追加する工程と、
前記メッセージ待ち行列を監視する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
前記メッセージに関連付けられたメッセージング・ボットを決定する工程と、
前記メッセージを前記メッセージング・ボットに対して渡す工程と
を備える、コンピュータ実装方法。
【請求項２】
前記メッセージが、テキスト内容部分を備え、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出する工程と、
前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出する工程と
をさらに備える、請求項１に記載の方法。
【請求項３】
前記メッセージに対するメッセージング・ボット応答を受け取る工程と、
前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入する工程と
をさらに備える、請求項１に記載の方法。
【請求項４】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージ待ち行列内に挿入される前記メッセージング・ボット応答が、前記メッセージ・スレッドにおける表示のために印しを付けられる、請求項３に記載の方法。
【請求項５】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、前記ボット・エイリアス・テキスト断片を備える、工程と、
前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項１に記載の方法。
【請求項６】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、
前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程と
をさらに備える、請求項１に記載の方法。
【請求項７】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、
前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、
前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程と、
前記複数のブロードキャスト・ワーカが、前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程と
をさらに備える、請求項１に記載の方法。
【請求項８】
デバイス上のプロセッサ回路と、
メッセージをクライアント・デバイスから受け取り、前記メッセージをメッセージ待ち行列に対して追加するように前記プロセッサ回路上において動作するメッセージング・コンポーネントと、
前記メッセージ待ち行列を監視し、前記メッセージがメッセージング・ボット起動を示していることを検出し、前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージをボット・フレームワーク・コンポーネントに対して渡すように動作するメッセージ待ち行列監視コンポーネントと、
前記メッセージに関連付けられたメッセージング・ボットを決定し、前記メッセージを前記メッセージング・ボットに対して渡すように動作する前記ボット・フレームワーク・コンポーネントと
を備える、装置。
【請求項９】
前記メッセージが、テキスト内容部分を備え、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出し、前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出するように動作する前記メッセージ待ち行列監視コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１０】
前記メッセージに対するメッセージング・ボット応答を受け取り、前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入するように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１１】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージング・ボット応答が、前記メッセージ・スレッドにおける表示のために印しを付けられて、前記メッセージ待ち行列内に挿入される、請求項１０に記載の装置。
【請求項１２】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、ボット・エイリアス・テキスト断片を備える、工程と、前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程とを行うように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１３】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程とを行うように動作する前記ボット・フレームワーク・コンポーネント
をさらに備える、請求項８に記載の装置。
【請求項１４】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブするように動作する前記ボット・フレームワーク・コンポーネントと、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちのブロードキャスト・ワーカに対して割り当てる工程とを行うように動作するブロードキャスト・コンポーネントと、
前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程を行うように動作する前記複数のブロードキャスト・ワーカと
をさらに備える、請求項８に記載の装置。
【請求項１５】
命令を備える少なくとも１つのコンピュータ可読記憶媒体であって、前記命令が実行されたときに、システムに、
メッセージをクライアント・デバイスから受け取る工程と、
前記メッセージをメッセージ待ち行列に対して追加する工程と、
前記メッセージ待ち行列を監視する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出する工程と、
前記メッセージがメッセージング・ボット起動を示していることを検出したことに基づいて、前記メッセージをボット・フレームワーク・コンポーネントに対して渡す工程と、
前記メッセージに関連付けられたメッセージング・ボットを決定する工程と、
前記メッセージを前記メッセージング・ボットに対して渡す工程と
を行わせる、少なくとも１つのコンピュータ可読記憶媒体。
【請求項１６】
前記メッセージが、テキスト内容部分を備え、実行されたときに、システムに、
前記メッセージの前記テキスト内容部分においてボット起動シンボルを検出する工程と、
前記ボット起動シンボルを検出したことに基づいて、前記メッセージがメッセージング・ボット起動を示していることを検出する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記メッセージが、メッセージ・スレッドに関連付けられ、実行されたときに、システムに、
前記メッセージに対するメッセージング・ボット応答を受け取る工程と、
前記メッセージ・スレッドにおける表示のために印しを付けられた前記メッセージング・ボット応答を前記メッセージ待ち行列内に挿入する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・エイリアス・テキスト断片を備え、実行されたときに、システムに、
前記ボット・エイリアス・テキスト断片のエイリアス開始部分を受け取る工程と、
１以上の予想されるボット・エイリアス・テキスト断片を決定するために、前記エイリアス開始部分をボット・エイリアス・レジストリに対して照合する工程であって、前記１以上の予想されるボット・エイリアス・テキスト断片が、前記ボット・エイリアス・テキスト断片を備える、工程と、
前記１以上の予想されるボット・エイリアス・テキスト断片を前記クライアント・デバイスに対して送信する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記メッセージが、テキスト部分を備え、前記テキスト部分が、ボット・コマンド・テキスト断片を備え、実行されたときに、システムに、
前記ボット・コマンド・テキスト断片のコマンド開始部分を受け取る工程と、
前記コマンド開始部分を前記メッセージング・ボットに対して渡す工程と、
１以上の予想されるボット・コマンド・テキスト断片を前記メッセージング・ボットから受け取る工程であって、前記１以上の予想されるボット・コマンド・テキスト断片が、前記ボット・コマンド・テキスト断片を備える、工程と、
前記１以上の予想されるボット・コマンド・テキスト断片を前記クライアント・デバイスに対して送信する工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記メッセージが、メッセージ・スレッドに関連付けられ、前記メッセージが、ボット・サブスクリプション・コマンドを備え、実行されたときに、システムに、
前記ボット・サブスクリプション・コマンドに応答して、前記メッセージ・スレッドを前記メッセージング・ボットに対してサブスクライブする工程と、
ブロードキャスト・メッセージを前記メッセージング・ボットから受け取る工程と、
前記メッセージング・ボットに基づいて、前記ブロードキャスト・メッセージのための複数のサブスクライバ・スレッドを決定する工程であって、前記複数のサブスクライバ・スレッドが、前記メッセージ・スレッドを備える、工程と、
前記複数のサブスクライバ・スレッドを複数のサブスクライバ・スレッド・チャンクに分割する工程と、
前記複数のサブスクライバ・スレッド・チャンクの各々を複数のブロードキャスト・ワーカのうちの１つのブロードキャスト・ワーカに対して割り当てる工程と、
前記複数のブロードキャスト・ワーカが、前記複数のサブスクライバ・スレッド・チャンクに基づいて、前記ブロードキャスト・メッセージを複数のメッセージ待ち行列に対して追加する工程であって、前記複数のメッセージ待ち行列が、前記メッセージ待ち行列を備える、工程と
を行わせる命令をさらに備える、請求項１５に記載のコンピュータ可読記憶媒体。
【国際調査報告】
2019511775.tif 000034
2019511775.tif 000035