本発明に係るある実施形態は、入ってくるメッセージを自動的にフィルタするために適用されるフィルタリングルールの動的な生成に関する。ルールは、ユーザの振る舞いのパターンに基づいて自動的に生成され得る。例えば、クライアントデバイスを用いて、ユーザは、メッセージを特定のフォルダ又はリストへ移動したり、メッセージを後の確認や(例えば特定の時間における)行動のために後回しにしたり、メッセージを読まずに削除等するような、受信したメッセージに対する行動をとり得る。クライアントデバイスは、これらの行動を、クライアントデバイスと1つ以上のメッセージングサービスとの間の仲介人として動作する中間メッセージ管理サービスに、イベント情報としてレポートし得る。メッセージ管理サービスは、イベント情報と、行動のなされたメッセージの、メッセージの特徴とを関連付けるイベント記録を生成し得る。メッセージの数に関するイベント記録を分析することによって、メッセージ管理サービスは、(1つ以上のメッセージの特徴に基づき得る)「トリガをかける(triggering)」条件と、結果として生じるユーザの行動との間の相関を検出し得る。ユーザがメッセージ管理サービスにリンクされた複数のメッセージングアカウントを有する場合、相関は、アカウントに跨って検出され得る。十分に強い相関が検出された場合、メッセージ管理サービスは、トリガをかける条件を満たす将来のメッセージに対して自動的に行動をとるために、推奨されるルールを生成し得る。メッセージ管理サービスは、ユーザのクライアントデバイスへ推奨されるルールを提供し得る。クライアントは、推奨されるルールをユーザに提示することができ、ユーザはその推奨を受け入れ又は拒否し得る。推奨が受け入れられる場合、メッセージ管理サービスは、推奨されるルールを、ユーザに向けられる将来のメッセージに自動的に適用するための処理ルールとして成立させ得る。
図1は、本発明の実施形態に従う通信システム100のブロック図を示す。通信システム100は、ネットワーク106に接続する、メッセージングサービス102及びメッセージ管理サービス104を含み得る。ネットワーク106へ接続されるものはまた、破線矢印112、114によって示されるように、メッセージ管理サービス104を介してメッセージングサービス102にアクセスするために用いられる、様々なクライアント108、110であり得る。メッセージ管理サービス104及び/又はメッセージングサービス102へのアクセスは、例えばネットワーク106を介するなど間接的であり得る。
メッセージングサービス102は、ユーザがメッセージを送信、受信、格納及び/又はアクセスすることができるようにする、あらゆるサービスであり得る。ここで、「メッセージ」は、電子メールのメッセージ、インスタントメッセージ(例えば、様々な「チャット」サービスを用いたユーザ間で送信されるメッセージ)、SMS/MMSメッセージ(様々な携帯電話及び他の無線データネットワークによってサポートされる、ショート・メッセージング・サービス及び/又はマルチメディア・メッセージング・サービスのプロトコルに従うメッセージ)、音声メッセージ、写真/画像メッセージ、ソーシャルネットワークメッセージ等のような、送信者によって生成され、1人以上の受信者に向けられた、あらゆる電子的コミュニケーションを含み得る。メッセージングサービス102の例は、Gメール(商標)(Google社のサービス)及びYahoo!(登録商標)メール(Yahoo!社のサービス)のような電子メールサービスを含み得る。他の例は、Gメールのチャット機能又はFacebook(登録商標)チャット機能(Facebook社のサービス)、携帯データキャリアによって提供されるSMS/MMSサービス、メッセージングコンポーネントを伴ったソーシャルネットワークサービス(例えば、Facebook社によって提供されるソーシャルネットワーク)等のような、インスタントメッセージング又はチャットサービスを含み得る。ある実施形態では、ユーザはメッセージングサービス102にアカウントを確立し得、メッセージングサービス102は、ユーザのメッセージ120を格納し、ユーザのメッセージ120へのアクセスを提供し得る。メッセージングサービス102はまた、ウェブベースのクライアントインタフェース、専用のアプリケーションプログラム、アプリケーションプログラムインタフェース(API)、及び/又はメッセージ120へのユーザアクセスを容易にするためのツールを提供し得る。
メッセージ管理サービス104は、破線矢印116で示される、メッセージサービス102とクライアント108、110との間の、プロキシや仲介人として動作するサービスであり得る。メッセージ管理サービス104は、メッセージングサービス102によって格納されるメッセージ120に対する、構造化、格納、アクセス、作成、及び/又は応答のための拡張された機能を提供し得る。メッセージ管理サービス104のある例は、ドロップボックス社のメールボックスサービスであり得る。
クライアント108及び110は、メッセージ管理サービス104と相互作用するためのソフトウェアを実行することができるユーザ指向のコンピューティングデバイスであり得る。デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピューティングデバイス、パーソナルデジタルアシスタント等を含む、様々な種別のコンピューティングデバイスが使用され得る。例によれば、クライアント108は、ネットワーク106を介してメッセージ管理サービス104と通信するためにアプリケーションプログラム(アプリとしても参照される)を実行することができるスマートフォンであり得る。アプリは、メッセージ管理サービス104のプロバイダによって提供され得、メッセージ管理サービス104によってサポートされる拡張されたメッセージ管理機能へユーザがアクセスできるようにするためにカスタマイズされ得る。
クライアント110は、メッセージ管理サービス104と通信するためのアプリを実行することができるデスクトップコンピュータであり得る。このアプリは、例えば、デスクトップコンピュータのオペレーティングシステムに組み込まれたメールクライアントのアプリ、ウェブベースのメッセージングサービスと連動するウェブブラウザ、メッセージ管理サービス104によって提供されるサービス固有のアプリケーション、又は他のアプリであり得る。ある実施形態において、クライアント108と110とは、他のアプリを実行して、メッセージ管理サービス104を用いることなく、メッセージングサービス102と通信し得ることを理解すべきである。
所与のユーザは、メッセージングサービス102とメッセージ管理サービス104の両方にアカウントを有し得る。メッセージ管理サービス104にあるユーザのアカウントは、メッセージングサービス102にあるユーザのアカウントとリンクされ得、ユーザはメッセージ管理サービス104を用いて、メッセージングサービス102を介したメッセージ120の送信及び受信を管理することができるようになる。ある実施形態では、ユーザは、1つ以上のメッセージングサービス102に複数のアカウントを持つことができ、これらのアカウントのいくつか又は全てをメッセージ管理サービス104にある1つのアカウントにリンクさせ得る。メッセージ管理サービス104は、ユーザのためのメッセージのサブセットをメッセージングサービス102から検索することができ、これらのメッセージをクライアント108及び/又はクライアント110へ配信し得る。
図1に示すように、(メッセージ120のサブセットを含むことができる)メッセージ122は、ユーザに新たに届くメッセージとしてクライアント108(又はクライアント110)へ配信され得る。ユーザはメッセージ122に対して行動するためにクライアント108と相互作用し得る。例えば、クライアント108は、送信者、日付、件名、メッセージの内容の一部のプレビュー等のような各メッセージについての情報を含む(ある場合にはインボックスとして参照される)新たなメッセージのリストを提示し得る。ユーザは、メッセージを選択して開き、クライアント108がメッセージの全ての内容をユーザに提示し得る。メッセージを読んだ後、ユーザは、メッセージをフォルダ又はリストに移動し、メッセージをアーカイブし、メッセージを削除し、メッセージを後の確認や行動のために後回しにしたり、メッセージに返信又は転送する等のような行動をとり得る。ある実施形態では、ユーザはまた、メッセージを最初に開くことなく、メッセージリストから直接的にメッセージに対する行動をとり得る。ユーザがメッセージに対する行動をとる場合、クライアント108は、特定のメッセージに対してとられた行動を示すイベント情報124をメッセージ管理サービス104へ送信し得る。メッセージ管理サービス104は、これに従ってその内部状態を更新し得、及び/又はメッセージングサービス102へ適切な更新を送信し得る。
本発明のある実施形態に従って、メッセージ管理サービス104は、メッセージにフィルタリングルール126を適用し得る。各フィルタリングルール126(ここでは単に「ルール」としても参照される)は、「トリガをかける」条件を満たすメッセージに対して自動的にとるべき行動を識別し得る。トリガをかける条件は、件名、送信者、メッセージの内容、いつメッセージが送信又は受信されたか(例えば日付、曜日)、メッセージのフォーマット(例えばプレインテキスト対HTML)、メッセージの長さ、メッセージが添付を有するか等のような、任意のメッセージの特徴又はメッセージの特徴の組み合わせに基づき得る。行動は、メッセージを特定のフォルダ又はリストに移動し、メッセージを削除又はアーカイブし、メッセージを後の行動のために後回しにしたり、メッセージに返信したり、メッセージを転送する等のような、メッセージに関してユーザが行うかもしれない任意の行動を含み得る。ある例では、フィルタリングルール126を適用することは、特定のルールに応じて、結果としてメッセージがクライアント108へ後で配信される状態にしたり、クライアント108へ全く配信されないようにし得る。ルールの特定の例は以下に説明される。
ある実施形態では、フィルタリングルール126は、受信したメッセージに対してとられるユーザの行動のパターンに基づいて、メッセージ管理サービス104によって動的に生成されるルールを含み得る。例えば、メッセージ管理サービス104は、イベント記録のコレクションを格納し得、各イベント記録はメッセージの特徴についての情報(特定のメッセージの内容及び/又はメタデータ)とメッセージに対するユーザの行動とを含む。メッセージ管理サービス104は、振る舞いのパターンを検出するために、特定のユーザのために集められたイベント記録を分析し得る。例えば、ユーザは、特定の送信者からのメッセージ又は特定の受信者のグループへ送信するメッセージを夜又は週末まで一貫して後回しにしてもよい。又は、ユーザは、件名にある語を有するメッセージ又は特定の送信者からのメッセージを、最初に読むことなく一貫してアーカイブ又は削除してもよい。例えば、メッセージの特徴と特定のユーザの行動との間の相関として、パターンが検出され得る。ひとたびパターンが検出されると、メッセージ管理サービス104は、推奨されたフィルタリングルールを生成する。このフィルタリングルールは、例えば推奨されるルールが、このルールが適用され得るメッセージ122と共にクライアント108へ送信されることにより、ユーザに推奨され得る。クライアント108は、推奨されるルールをユーザに提示することができ、ユーザはその推奨を受け入れ又は拒否し得る。ユーザが推奨されるルールを受け入れる場合、メッセージ管理サービス104は、例えばこのルールをフィルタリングルール126の組に追加することによって、ルールを成立させ得る。フィルタリングルールの動的な生成及び推奨に係る特定の例は以下に説明される。
システム100が具体例であると共に変形例及び修正が可能であることが理解される。本発明の実施形態は、異なるユーザに属し、そうでなければ異なるユーザに関連付けられるクライアントデバイスを含む、任意の数のクライアントデバイスをサポートし得る。更に、ある実施形態では、メッセージ管理サービスは、複数のメッセージングサービスと相互作用し得、全く異なる種別のメッセージ(例えば電子メールとソーシャルネットワークのメッセージ)を管理し得る。以下に説明するように、メッセージ管理サービスが複数のメッセージングサービスと相互作用する場合、メッセージ管理サービスは、どのメッセージングサービスが特定のメッセージの起点であるかにかかわらず、フィルタリングルールを動的に生成し、推奨し得る。
図2は、本発明の実施形態に従うメッセージ管理サービス200のブロック図を示す。メッセージ管理サービス200は、図1のメッセージ管理サービス104を実施し得る。例えば、メッセージ管理サービス200は、(例えば図1のクライアント108又はクライアント110を実施する)クライアント202と、図1の(例えばメッセージングサービス102を実施する)様々なメッセージングサービス204a、204bとの間の仲介人として振る舞い得る。各サービス204a、204bは、異なる電子メールサービス、電子メールサービスとソーシャルネットワークサービス等のような異なるメッセージングサービスであり得る。2つのメッセージングサービス204が示される一方で、任意の数のメッセージングサービス204が1つのメッセージ管理サービス200によってサポートされ得る。
メッセージ管理サービス200は、クライアントインタフェース210、メッセージ管理モジュール212、メッセージングサービスインタフェース214、及びメッセージキャッシュ216を含み得る。クライアント伝達レイヤ218は、メッセージ及び他の命令を伝送するための伝送キューと、クライアントインタフェース202及びメッセージ管理モジュール212との間の情報を提供し得、サービス転送レイヤ220は、メッセージ及び他の命令を伝送するための伝送キューと、メッセージ管理モジュール212とメッセージングサービスインタフェース214との間の情報を提供し得る。
クライアントインタフェース210は、クライアント202の複数のインスタンス(例えば、異なるユーザに関連付けられたクライアント、及び/又は、同じユーザに関連付けられた複数のクライアント)と通信し得る。例えば、クライアントインタフェース210は、「インバウンド(inbound)」のメッセージを、メッセージングサービスインタフェース204a、204bからクライアント202へ配信し得、「アウトバウンド(outbound)」のメッセージをクライアント202から受信し得、及び/又は、メッセージを後回しにする、メッセージをリスト又はフォルダへ移動する、メッセージを既読(又は未読)としてマークする、メッセージを削除するための命令等のような、様々なメッセージ処理命令をクライアント202から受信し得る。このような命令は、以下に示すようにイベント情報又はユーザの行動を含み得る。
メッセージ管理モジュール212は、メッセージングサービス204a、204bから受信するインバウンドのメッセージだけでなく、クライアント202から受信するアウトバウンドのメッセージを含む、メッセージ管理サービス200によって受信されるメッセージに対する様々な動作を処理するように構成された機能ブロック又は機能モジュールを含み得る。例えば、メッセージ管理モジュール212は、フィルタモジュール234、イベントレコーダ236、及びパターンディテクタ238を含み得る。
フィルタモジュール234は、(例えば、図1のフィルタリングルール126を実施する)フィルタリングルールを、クライアントに配信する前にインバウンドのメッセージに適用し得る。ある実施形態では、フィルタモジュール234は、それぞれが「トリガをかける」条件と結果として生じる行動とを特定する、成立したルール240のデータストアを保持し得る。トリガをかける条件は、例えば、インバウンドのメッセージの特徴又は特徴の組み合わせに基づいて、特定され得る。例は、メッセージの件名の特定の語の出現、メッセージが特定の送信者からのものであること、どのメッセージングサービス204a、204bがメッセージを受信したか、メッセージが受信者の特定の組に向けられたものであること、受信の時間(例えば、日付、時刻、曜日)が特定のタイムフレーム内にあること、メッセージサイズがある閾値を上回る又は下回ること、メッセージの内容が特定の語又は語の組み合わせを含むこと、等を含む。フィルタモジュール234によって検出可能な任意のメッセージの特徴は、個別に、又は他のメッセージの特徴との組み合わせのいずれかで、トリガをかける条件を定義するために用いられ得る。ルールによって特定される、結果として生じる行動は、受信したメッセージに関してユーザがとり得る任意の行動を含み得る。例は、リスト又はフォルダへのメッセージの移動すること、メッセージをアーカイブすること、メッセージを削除すること、後の行動のためにメッセージを後回しにすること、メッセージに返信すること、特定の送信先(例えば、他のユーザ)へメッセージを返信すること、等を含む。ある実施形態では、成立したフィルタリングルール240は、特定のユーザに対して、任意のメッセージングサービス204a、204bから受信した全ての新たなメッセージに対して適用される。異なるフィルタリングルール240の組は、異なるユーザに対して成立し得、カスタマイズされたユーザ体験を提供する。
イベントレコーダ236は、フィルタリングルール240の動的な生成を容易にするフォーマットで、メッセージに反応するユーザ行動についての情報を収集し得る。例えば、ユーザが受信したメッセージに行動を起こした場合、クライアント202はその行動をクライアントインタフェース210にレポートし得る。イベントレコーダ236は、レポートされた行動に基づいてイベント記録を生成し得る。以下で使用されるように、イベント記録は、メッセージの特徴(又は特性)及びユーザの行動についての情報を含む、あらゆる種別の、構造化されたデータの記録であり得る。ある実施形態では、ユーザの行動についての情報は、なされた行動(例えば、移動、アーカイブ、後回し、返信など)、行動がなされる前にユーザがメッセージを読んだか、及び、クライアント202の識別(例えば、モバイル電話、デスクトップコンピュータ)、ユーザが行動を起こした際のクライアント202の位置、行動がなされたときの時間等のような、行動に関連するクライアントのコンテクスト情報を含み得る。ある実施形態では、イベントレコーダ236は、イベント記録データストア242にイベント記録を格納し得る。イベント記録データストア242は、あらゆる数のメッセージと対応するユーザの行動とに対する記録を含み得、例えば、格納されるイベント記録の数の上限、及び/又は格納されたイベント記録の寿命に基づく、定期的なパージの影響化にあり得る。
パターンディテクタ238は、メッセージの特徴の特定の組と結果として生じるユーザの行動との間の相関のようなパターンを検出するために、イベント記録データストア242内の記録を分析し得る。あらゆる種別のパターン検出ロジックが実施され得る。ある例では、パターンディテクタ238は、同一のユーザ行動となる特定の条件をメッセージが満たす連続する回数を単にカウントし得る。例えば、ユーザが、特定の送信者の行の5つのメッセージを読まずに削除した場合、このことは、ユーザが当該送信者からのメッセージを受信することに興味がないことを示すかもしれない。パターンディテクタ238は、この振る舞いの検出し、当該送信者からのメッセージを自動的に削除するルールを推奨し得る。(ルールの推奨は以下に説明される。)他の例としては、ユーザが特定の件名を有する3つのメッセージを金曜日まで後回しにした場合、このことは、ユーザがそのような全てのメッセージの後回しを望んでいることを示すかもしれない。パターンディテクタ238は、この振る舞いを検出し、当該件名を有するメッセージを自動的に後回しにするルールを推奨し得る。
ある実施形態では、パターンディテクタ238はまた、同一のユーザ行動に一貫したトリガをかける、より複雑な又は微妙なパターンを検出し得る。例えば、パターンは、件名と送信者、送信者と受信者のリスト、送信者と時刻又は曜日、送信者とメッセージの内容、メッセージの内容と時刻又は曜日、の組み合わせに基づいてよい。ある実施形態では、パターンディテクタ238は、いくつかのメッセージの特徴の組と結果として生じるユーザの行動との間の相関を検出することができる機械学習アルゴリズム(例えば、人口ニューラルネットワークなど)を実施し得る。更なるパターン検出の例は以下に説明される。
ある実施形態では、クライアントの(例えば上述したような)コンテクスト情報は、パターン検出分析におけるメッセージの特徴と組み合わせられ得る。従って、例えば、ユーザが、特定の送信者(又は送信者のグループ)からのメッセージを家やデスクトップコンピュータに戻るまで後回しにするというパターンを有することを検出することが可能であり得る。
パターンディテクタ238がパターンを検出した場合、推奨されるルールを生成し、その推奨されるルールをフィルタモジュール234に提供し得る。ある実施形態では、フィルタモジュール234は、パターンディテクタ238から受け取った推奨されたルールを自動的に実行しない。代わりに、フィルタモジュール234は、まずユーザの確認を取得し得る。例えば、推奨されたルールを受信することによってパターンディテクタ236を形成する場合、フィルタモジュール234は、当該推奨されるルールを、成立したルール240と別々に格納し得る。推奨されるルールが適用されるであろう、インバウンドのメッセージが受信された場合、フィルタモジュール234は、推奨されるルールを定義する推奨メタデータをインバウンドのメッセージに追加し、クライアント202へ配信するためのクライアントインタフェース210に送信する。クライアント202は、メタデータを抜き出して推奨されるルールをユーザに提示し、ユーザからの応答を取得して当該応答をメッセージ管理サービス200へレポートする。ユーザが推奨されるルールを受け入れる場合、フィルタモジュール234は、当該推奨されるルールを成立したルール240に追加し得る。例を以下に説明する。
ある実施形態では、クライアントデバイス202は、タッチスクリーン、カメラ又はユーザ入力を受け取るように動作可能な他のデバイスのようなユーザ入力デバイス244を含み得る。ユーザ入力は、ユーザ入力デバイス244との相互作用を通してジェスチャとして提供され得る。例えば、ユーザは(例えば指、スタイラス又は他の実施品を用いて)タッチスクリーンに接触し、タッチスクリーン上の接触点を他の位置に移動させ得る。「スワイプ」としても参照される、そのようなジェスチャはユーザ入力デバイス244によって受け取られ、そのジェスチャに関連付けられた1つ以上の行動を識別するために入力アナライザ246によって分析され得る。ある実施形態では、スワイプは、ユーザ入力デバイス244に対するジェスチャの方向とジェスチャによって横切られた長さとに対応するベクトルによって特徴付けられ得る。異なる行動は、異なる方向及び/又はユーザのスワイプの長さに関連付けられ得る。例えば、ユーザデバイスのスクリーンの第1の距離を横切る右へのスワイプは、アーカイブの行動に対応付けられてもよく、これに対し、第2の距離を横切るスワイプは削除の行動に対応付けられ得る。入力アナライザ246は、入力デバイス244との最初の接触を検出し、ジェスチャに関連付けられた長さと方向を識別し得る。ジェスチャの長さと方向とに基づき、入力アナライザ246は、なされた1つ以上の行動を、ジェスチャ定義248を用いて検索し得る。ある実施形態では、ジェスチャ定義248は、ユーザによってクライアントデバイス202を通して、あるいは、サービスプロバイダによって遠隔で追加され、そしてクライアントデバイスと同期され得る。ジェスチャ定義248はクライアントデバイスに固有のジェスチャ、ユーザ固有のジェスチャ、及び/又はアプリケーション又はサービス固有のジェスチャと対応する行動とを含み得る。ある実施形態では、ジェスチャ定義248は、ユーザによって及び/又はサービスプロバイダによって動的に更新され得る。
ある実施形態では、ジェスチャは、一連の複数のジェスチャ(ここではサブジェスチャ又は部分としても参照される)を含みうる。ここで用いられるように、一連の複数のジェスチャを含むジェスチャは組み合わせジェスチャとして参照され得る。組み合わせジェスチャのある例は、スワイプジェスチャを含む「スワイプと一時停止」のジェスチャであり、ユーザがスクリーン又は他の表面に最初に接触して所定の方向に表面に沿って移動させ、スワイプの最後に、ユーザがある期間にわたって接触を維持する一時停止ジェスチャを行う。入力アナライザ246は、スワイプと一時停止ジェスチャの「一時停止」部分の間にどれだけ長く接触が維持されるかを判定し得、「スワイプ」部分に基づき、ジェスチャ定義248を用いて1つ以上の行動を識別し得る。ある実施形態では、スワイプと一時停止のジェスチャは、スワイプ動作に応じて実行される、異なる、しかし関連する行動を実行し得る。例えば、スワイプジェスチャが行動(アーカイブ、削除、リストへの追加、後回し)に対応し、スワイプと一時停止のジェスチャは対応する行動のためのルール生成を有効にし得る。以降で更に説明されるように、スワイプと一時停止のジェスチャが検出された場合、ルール生成インタフェースがユーザに表示され得、ルールデータが修正され得る。ルールデータは、クライアントインタフェース210を介してルールマネージャ250に提供され得る。ルールマネージャ250は、ルールデータを用いて、フィルタ234によって適用されるルール240を更新し得る。これは、ユーザが既にメッセージ管理サービス200と相互作用した同じ方法で、メッセージ管理サービス200によってパターンが識別されルールが適用されるのをユーザが待つ必要が無く、ユーザが素早く、かつ直感的にルールを定義できるようにする。
代替的な、スワイプと一時停止のジェスチャと対応する行動も定義され得る。例えば、コンテンツアイテムが隠れるもののユーザのアカウントから削除されない、「隠す」行動に対応し得る。関連するスワイプと一時停止のジェスチャは、コンテンツアイテムを削除するために用いられ得る。そのようなものとして、スワイプと一時停止のジェスチャは直感的な方法を提供して、インタフェースの複雑さを最小限にしながら、ユーザが直ちに実行することができる利用可能な行動を増加させる。
実施形態は、ここでは、ジェスチャに基づく行動を実質的に平坦な表面(例えばタッチスクリーン)上で検出するユーザ入力デバイスを参照して説明されるが、代替的な実施形態も実施されてもよい。例えば、ユーザ入力デバイスは、(例えば加速度計、ジャイロスコープ、又は他の専門のハードウェアデバイスを通して)3次元空間内におけるユーザ入力デバイスの位置及び動きを分析してもよい。3次元のジェスチャが定義されて、実行される様々な行動と関連付けられてよい。ユーザ入力デバイスの動きに基づいて、ジェスチャが識別され、そして1つ以上の対応する行動が、選択されたメッセージ上及び/又はコンテンツアイテム上で実行され得る。
メッセージングサービスインタフェース214は、様々なサービスモジュール226a、226bを含み得、それぞれが、異なる1つのメッセージングサービス204a、204bと通信するように構成され得る。例えば、異なるメッセージングサービス204は、外部のクライアントによるアクセスのための異なる通信プロトコル(例えば、IMAP、POP、MAPI/Exchange、カスタムAPI等)をサポートしてよく、各サービスモジュール226は、特定のメッセージングサービス204のために適切なプロトコルを使用するように構成され得る。
ある実施形態では、メッセージングサービスインタフェース214は、メッセージ管理サービス200がメッセージングサービス204a、204bに対して透過的になるように、自身をメッセージングサービス204a、204bのアクセス機能としてメッセージングサービス204a、204bにみえるようにし得る。例えば、メッセージングサービス204aがIMAPをサポートする場合、サービスモジュール226aは、ユーザのアカウントへの永続的なIMAP接続を、メッセージングサービス204aと確立し得、これにより、メッセージングサービス204aが、ユーザのアカウントに対して受信する、任意に入ってくるメッセージ又はメッセージの更新をメッセージ管理サービス200に配信できるようにし得る。同様に、メッセージ管理サービス200は、クライアントデバイス200から受信する任意のアウトバウンドのメッセージ又はメッセージの更新を、メッセージングサービス204aへ配信し得る。IMAP以外のサービスへの永続的な接続もまた維持され得、或いは、メッセージングサービスインタフェース214が、様々なメッセージングサービス204を定期的にポーリングして新たなメッセージを取得し得る。永続的な接続は、所与のユーザが現在、クライアントインタフェース210と接続された任意のクライアント202を有するかに関わらず維持され得、メッセージ管理サービス200はメッセージングサービス204との同期を維持し得る。特定のクライアント202は、メッセージ管理サービス200をいつでも切断し得、メッセージ管理サービス200と再接続したときはいつでも、メッセージ管理サービス200と再同期し得る。
メッセージキャッシュ216は、ストレージ及びメッセージの検索を提供するメッセージ管理サービス200によって管理されるデータベース又は他のデータストアであり得る。例えば、メッセージは、メッセージ管理サービス200及び/又はメッセージングサービス204により、各メッセージに割り当てられた内部メッセージ識別子への参照を用いて格納されるとともに検索され得る。メッセージ管理サービス200は、メッセージキャッシュ216を用いて、最近受信したメッセージ又はユーザ主導の検索において見つかったメッセージのような、クライアントにとって興味のありそうなメッセージのコピーを格納し得る。
メッセージングサービス204は、メッセージ管理サービス200により、自身のメッセージストア又はリポジトリを任意の行動から独立して維持し得る。ある実施形態では、メッセージングサービス204は、(例えば、送信済みメッセージ、受信メッセージ、アーカイブしたメッセージ等の)ユーザのアカウントに現在関連付けられている全てのメッセージを含む、ユーザに対するメッセージのプライマリ(又はマスタ)ストアを維持し得、メッセージキャッシュ216は、ユーザのメッセージのサブセット(メッセージの「窓(window)」としても参照される)だけでなく、メッセージキャッシュ216に現在複製されていない、プライマリストア内の追加的なメッセージについての部分的な情報を格納し得る。クライアント202がメッセージキャッシュ216に現在格納されていないメッセージをリクエストした場合、メッセージ管理サービス200は、適切なメッセージングサービス204からメッセージを検索し、クライアント202へ検索したメッセージを配信し得る。
動作において、メッセージ管理サービス200は、メッセージングサービス204からインバウンドのメッセージを取得し、クライアント202へ当該メッセージを提供し得る。メッセージ管理サービス200はまた、クライアント202から(例えば送信されるべきメッセージ)アウトバウンドのメッセージを受信し、当該メッセージを、(複数の)受信者への配信のためにメッセージングサービス204へ提供する。メッセージ管理サービス200はまた、(以下で説明するアクションのリクエストとイベント情報とを含む)メッセージの更新リクエストを、クライアント202から受信し得、例えば、メッセージを既読又は未読としてマークするため、メッセージをフォルダに移動するため、メッセージタグを適用したり消去するため、メッセージを削除するため等の、対応する命令をメッセージングサービス204へ提供し得る。メッセージ管理モジュール212は、インバウンド及び/又はアウトバウンドのメッセージに対する様々な動作を実行し得、これらの例は以下で説明される。
メッセージ管理システム200が具体例であると共に変形例及び修正が可能であることが理解される。例えば、後のレビュー及び/又は応答のために後回しにする、メッセージにタグ付けする、メッセージを検索する等のための能力のような、他のメッセージ管理モジュール及び/又は動作が提供され得る。ある実施形態では、メッセージ管理は、ウインドウニング(50又は100、又は、最も最近のメッセージの他のある数のような、関連があり得ると見なされた特定の数のメッセージを選択し、中間的に配信する)、埋め戻し(クライアントリクエストの予想におけるメッセージでメッセージキャッシュ216を埋めること)、メッセージのフォーマット変換(例えば、メッセージングサービスによって使用されるメッセージ形式とクライアント上のディスプレイに最適化された形式との間で変換する)、メッセージフォルダ又はストリーム管理、メッセージのソート、添付の管理、メッセージングサービス204との同期(メッセージを移動又は変更するための、例えば、クライアント202から命令をリレーする)等を含み得る。
本発明のある実施形態に従って、メッセージ管理サービス200は、メッセージのユーザ処理を容易にするためにフィルタリングルールを自動的に生成し得る。図3は、本発明の実施形態に従う、フィルタリングルールの動的な生成の一側面を示す簡略化したメッセージの通過図を示す。この例では、メッセージングサービス204aは、電子メールサービスであり得る。例えば、メッセージ管理サービス200は、フィルタモジュール234とパターンディテクタ238とを含み得る。図示されていないが、メッセージ管理サービス200は、メッセージに関連する他の動作を実行するために他のモジュールを含み得ることが理解されるべきである。
イベント302において、メッセージMがメッセージ管理サービス200により受信され得る。メッセージMは、クライアント202のユーザのためにメッセージングサービス204aによって受信される任意のメッセージであり得る。上述したように、メッセージ管理サービス200は、永続的なIMAP接続等を介してメッセージMを取得し得る。メッセージMはフィルタモジュール234へ配信され得る。フィルタモジュール234は、イベント304において、成立したルールをメッセージMに適用し得る。この例では、成立したルールが、結果としてクライアント202へメッセージMを配信しないことにならないことを想定しており、従って、メッセージMは、イベント306において、クライアント202へ配信され得る。ある実施形態では、クライアント202へ配信されたメッセージMのバージョンは、メッセージ管理サービス200によって変更され、例えばクライアント202における提示のためにメッセージを再フォーマット又は最適化し得る。
クライアント202は、ユーザに受信したメッセージMを提示し、メッセージMに対するユーザの行動(イベント308)を検出し得る。クライアント202は、行動308を示すイベント情報をメッセージ管理サービス200へ送信する(イベント310)。特に、イベント情報はパターンディテクタ238へ提供され得る。例えば、上述したように、イベントレコーダ236(図3において不図示)は、イベント情報を受信して、パターンディテクタ238に提供するイベント記録を生成し得る。パターンディテクタ238は、他のイベントについての情報と組み合わせ、受信したイベント情報を入力として用いて分析を実行(イベント312)し得る。パターンディテクタ238がパターンを検出した場合、推奨されるルール314がフィルタモジュール234に提供され得る。上述したように、推奨されるルール314はトリガをかける条件を特定し得、トリガをかける条件が満たされた場合に行動がとられる。
しばらくして、イベント320において、他のメッセージ(N)がメッセージングサービス204aから受信され得る。フィルタモジュール234は、推奨されたルールを含むフィルタリングルール324を、当該メッセージに適用し得る。この例では、メッセージNは、推奨されたルール314におけるトリガをかける条件を満たすものであると想定する。従って、フィルタモジュール234は、メッセージNを、推奨されるルール314を示す推奨メタデータと共にクライアント202へ配信し得る。例えば、推奨されるルールがメッセージNに適用されることを示し、更に推奨されるルールによって定義される、特定のトリガをかける条件と行動とを示すメタデータがメッセージNに追加され得る。
クライアント202は、ユーザにメッセージNを提示し得ると共に、更にユーザに推奨されるルールを提示し得る。ユーザに推奨されるルールを提示する例を以下に示す。受け入れ328によって示されるように、ユーザが推奨を受け入れることを想定すると、クライアント202は、受け入れの表示を含むイベント情報330を、メッセージ管理サービス200に送信し得る。例えば、パターンディテクタ238は受け入れ330を受信して、推奨されるルールを成立させるようにフィルタモジュール234に指示する(指示332)。或いは、フィルタモジュール234は、パターンディテクタ238からの指示無しに、受け入れ330を受信して推奨されるルールを追加し得る。
その後、イベント340において、メッセージPが受信され得、そしてフィルタモジュール234が、指示332によって追加されたルールを今まさに含んでいるルール342を適用し得る。ルールを適用することは、トリガをかける条件が満たされた場合に、ルールによって示される行動をとることを含み得る。特定のルールに依存するが、この行動は、メッセージPを削除すること、メッセージPをフォルダ又はリストに移動すること、クライアント202への後の配信のためにメッセージPを後回しにすること等を含み得る。この例では、ブロックされた配信344として示すように、行動をとることによって、結果としてメッセージPはクライアント202へ配信されない。他の例では、メッセージPは、ルールが適用された後であっても配信され得る。以下に一例を説明する。
図3は具体例であると共に変形例及び修正が可能であることが理解される。例えば、メッセージに対するユーザの行動又はフィルタリングルールの適用は、結果として、例えばフォルダへメッセージを移動させ、メッセージを消去する等の、メッセージングサービス204aへの更新命令の通信を生じさせ得る。他のメッセージが受信され得、全てのメッセージが所与のルールのトリガがかける条件を満たすものではないことが想定される。更に、図3は全てのメッセージが同一のメッセージングサービスから受信されることを示す一方で、異なるメッセージが同一のユーザのために異なるメッセージングサービスから受信され得、そのメッセージの送信元がどのメッセージサービスであるかに関わらずメッセージの分析が実行されることが理解されるべきである。
図3への参照と共に示す振る舞いは、メッセージフィルタリングルールを、ユーザの行動に基づいて動的に生成することを可能にする。例えば、イベント302−310のシーケンスは、パターンが検出され得るイベント記録の組を構築するために、異なるメッセージに対して複数回繰り返され得る。ユーザがクライアント202を介してメッセージ管理サービス200と相互作用を続けるため、同一又は異なるルールの推奨は繰り返され得る。
パターンディテクタ238の動作の結果として、フィルタリングルールは、そのようにするための明確なユーザの命令なしに生成され得る。そうは言っても、(例えば図3のイベント326−330に示すような)新たなルールを成立させる前に、ユーザ設定を取得することは有益であり得る。自動フィルタ生成のユーザ体験は、本発明の実施形態に従う、クライアントデバイスのユーザインタフェース画面を示す図4A−図4Cを参照して、より理解され得る。
図4Aは、本発明の実施形態に従うクライアントデバイス(例えばクライアント202)に提示され得るユーザインタフェース画面400を示す。ユーザインタフェース画面400は、ユーザのインボックスに対応するメッセージリスト402を含み得る。コントロールセクション404が提供され、ユーザは、例えば以前に生成されたメッセージのリストを見たり、メッセージを検索する等のような、他の行動をとることができるようになり得る。メッセージリスト402はメッセージ412、414、416を含み得る。(この例では、メッセージのスレッド内でメッセージ416が最も新しいメッセージであり、バッジ418によって示されるように、メッセージ416はユーザがスレッド内の他のメッセージにアクセスすることができるようにしている。この例では、ユーザインタフェース画面400は、ユーザが、メッセージ管理サービス200とリンクした全てのメッセージングアカウントからのメッセージを含む単一のリスト402を見ることができる、統一したインタフェースを提供し得る。ある実施形態では、クライアントデバイスは、ユーザが全てのメッセージングサービスアカウント又は全アカウントより少ないアカウント(例えば同時に1アカウント)のメッセージを見るかどうかを選択可能にし得る。
ユーザインタフェース画面400は、タッチスクリーンデバイス上に提示され得、ユーザは、タップ又はドラッグのようなタッチジェスチャを用いて、メッセージリスト402と相互作用することができる。例えば、図4Bに示すように、ユーザはメッセージ412をある程度左へドラッグし得、ジェスチャインジケータ420は、ドラッグを示す接触ポイントが左に移動することを示す。ある実施形態では、ジェスチャ420は、メッセージ412が後の行動のために後回しされるべきであることを示すものとして解釈され得、例えば図示される遅延アイコン422を提示することにより、この解釈がユーザに伝達され得る。ジェスチャ420の実行は、メッセージをどれだけ後回しにするか(例えば、夜まで、翌朝まで、24時間、1週間、など)についての選択肢のメニュー(不図示)を提示するユーザインタフェース画面400を結果として生じさせ得る。メッセージをリストに移動する、メッセージをアーカイブ又は削除する等のような、他の行動を示すための他のジェスチャが定義され得る。特定のユーザの行動に関わらず、クライアント202はメッセージ管理サービス200へ(例えば図3のイベント情報310として)当該行動をレポートし得る。
ある実施形態では、単一のユーザジェスチャは、行動が複数のメッセージに対して実行されるべきであることを示し得る。例えば、メッセージ416は3つのメッセージを含むスレッドを表しており、メッセージ416に対する遅延ジェスチャ420を実行することが、スレッド内のこれまで受信した全てのメッセージを結果として後回しにし得る。メッセージ管理サービス200によるパターン検出の目的として、スレッド内の複数のメッセージに対して実行される行動は、複数のイベント記録を生成する、行動の複数のインスタンスとして扱われ得る。これは、ユーザが個々のメッセージよりむしろスレッドに対して行動を起こした場合に、パターンディテクタ238が即座にパターンを検出することを可能にし得る。
図4A及び図4Bのユーザインタフェースはまた、推奨されるルールをいつユーザに提示するかを決定するために用いられ得る。図示の目的のため、ユーザがメッセージ412と同じ送信者からの複数のメッセージを以前に受信し、各メッセージに対して、ユーザは図4Bに示すものと同一の遅延行動を実行したものとする。上述したように、パターンディテクタ238はこのパターンを検出してルールを推奨する。次に同一の送信者からメッセージが来た場合、メッセージ管理サービス200は、ユーザに提示するために、例えばメッセージに推奨メタデータを含めることによって、推奨されるルールをクライアント202へ提供し得る。クライアント202は、提示のための推奨されるルールを受信した場合、クライアント202は(例えば図4Aに示したように)通常通りにメッセージを表示し、ユーザは、図4Bに示したような遅延行動を実行し得る。この場合、クライアント202は、推奨メタデータに基づき、ユーザの行動が推奨されたルールに対する行動と結果として一致することを認識し得る。これにより、クライアント202は、ルールを成立させることをユーザに促すことになり得る。
図4Cは、本発明の実施形態に従う、クライアント200によって表示され得る推奨されるルールに対するプロンプト440の例を示す。この例では、プロンプト440は、(トリガをかける条件と結果として生じる行動とを含む)推奨されるルールを示す記述442を含み、仮想的なボタンの形式でオプションを提供する。「はい」ボタン444は、結果として、推奨されるルールが成立し、そのため推奨されたルールが、トリガをかける条件を満たす将来入ってくるメッセージに自動的に適用されるようにし得る。「いいえ」ボタン446は、結果として、推奨されるルールが成立しないようにし得る。後述するように、「いいえ」ボタン446は、結果として、推奨されるルールが再び成立しないようにもし得る。「後できく」ボタン448はまた、結果として、推奨されるルールが成立しないようにし、しかしこの場合には、推奨されるルールが受信されて実行されるようにトリガをかけるメッセージが次回に再び促されるようにし得る。「閉じる」ボタン450は、結果として、推奨されるルールが成立しないようにし得、ある実施形態では、ユーザが「閉じる」ボタン450を繰り返し選択すると、推奨されるルールの提示は一時的に停止され得る。他のプロンプトと応答のオプションが提供され得、ある実施形態では、ユーザは、特定のボタンをタッチするよりもジェスチャを実行することによって応答を入力し得る。
図5A−5Cは、本発明の他の実施形態に従うクライアントデバイスのためのユーザインタフェース画面を示す 図5Aは、本発明の実施形態に従うクライアントデバイス(例えばクライアント202)に提示され得るユーザインタフェース画面500を示す。ユーザインタフェース画面500は、ユーザのインボックスに対応するメッセージリスト502を含み得る。コントロールセクション504が提供され、ユーザは、例えば以前に生成されたメッセージのリストを見たり、メッセージを検索する等のような、他の行動をとることができるようになり得る。メッセージリスト502はメッセージ512、514、516を含み得る。(図4Aと同様に、メッセージ516のようないくつかのメッセージはメッセージに関するスレッドを意味し得る。)この例では、ユーザインタフェース画面500は、ユーザが、メッセージ管理サービス200とリンクした全てのメッセージングアカウントからのメッセージを含む単一のリスト502を見ることができる、統一したインタフェースを提供し得る。ある実施形態では、クライアントデバイスは、ユーザが全てのメッセージングサービスアカウント又は全アカウントより少ないアカウント(例えば同時に1アカウント)のメッセージを見るかどうかを選択可能にし得る。
図5Aでは、フィルタリングルールを成立させるオプションは、メッセージリスト502内の視覚的な兆候を含むことによって示され得る。例えば、メッセージ514内の点線下線520は、推奨されるルールがメッセージ514と共に受信されたことを示し得る。推奨されるルールにおけるトリガをかける条件は、点線下線520の位置によって示され得る。この例では、点線下線520は、件名522に下線を引いており、トリガをかける条件がメッセージの件名に対応することを示している。送信者に対応するトリガをかける条件は、例えば送信者の名前等に下線を引くことによって示され得る。ある実施形態では、推奨されるルールにおいて結果として生じる行動の性質は、線のスタイル及び/又は線の色によって示され得る。例えば、黄色の線は、結果として遅延を生じさせることを示し、緑の線はアーカイブすることを示し、赤の線は削除することを示す等である。
ユーザは、メッセージ514上またはより具体的には件名522上をタップして、ルールについてのより多くのものを調べることができる。図5Bは、本発明の実施形態に従って、メッセージ514をユーザがタップした後のユーザインタフェース画面500を示す。件名522(又は、トリガをかける条件に対応するメッセージ514の任意の他の部分)はハイライトされた状態になって、トリガをかける条件にユーザの注意を引き付け得る。ある実施形態では、ハイライトされた色は結果として生じる行動に対応し得る。加えて、プロンプト530が提示されて、推奨されるルールが受け入れられるべきかを確認するようにユーザを促し得る。図示されるように、プロンプト530はテキスト及び/又はアイコンを含んで、結果として生じる行動を示し得る。この例では、結果として生じる行動はメッセージ514をアーカイブするものである。他の例では、プロンプト530は更なる情報を示しうる。例えば、結果として生じる行動がメッセージを後回しにするものである場合、プロンプト530は、遅延期間を示し得、結果として生じる行動がメッセージをフォルダ又はリストに移動するものである場合、プロンプト530は、特定のフォルダ又はリストを特定し得る。
ある実施形態では、ユーザは、プロンプト530をタップすることにより、推奨されたルールを受け入れることができ、画面500の他の場所をタップすることにより、推奨されたルールを拒否し得る。他の応答もまた、ジェスチャーにより伝達され得る。例えば、ある実施形態では、プロンプト530にわたる右側へのスワイプジェスチャは、ルールを拒否すること(上述した図4Cの「いいえ」ボタン446と同様)に対応し得え、プロンプト530にわたる左側へのスワイプジェスチャは、決定を後回しする(図4Cの「後で」ボタン448と同様)ことに対応し得る。
図5Cは、本発明の実施形態に従う、例えばタッピングプロンプト530によって、ユーザが推奨されるルールを受け入れた後のユーザインタフェース画面500を示す。この例では、クライアントは、ユーザがあたかも手動でその行動をとるためのジェスチャを実行したかのように、行動をとっているアニメーションを行う。この例では、ルールはメッセージを自動的にアーカイブし、メッセージ514は右へスライドオフして表示され、アイコン532が空間に提示される。この例では、ユーザはスワイプジェスチャを実行する必要がなく、代わりにアニメーションがなされている行動の視覚的な確認を提供する。
上述した実施形態では、パターンディテクタ238は、メッセージの特徴の特定の組と結果として生じるユーザの行動との間の相関のようなパターンを検出するために、イベント記録データストア242内の記録を分析し得る。検出されたパターンに基づいて、ルールが自動的に生成されてユーザに推奨されてよい。例えば、ユーザが、一般的に、特定の送信者からのメッセージを、読まずに就業時間の後まで寝かせる場合、このことは、ユーザが当該送信者からのメッセージを仕事の後まで受信したくないことを示すかもしれない。パターンディテクタ238は、その送信者からのメッセージを後回しにするためのルールを生成し、例えばプロンプトをユーザに表示することによって、ユーザにそのルールを推奨し得る。そのようなものとして、ある実施形態では、ルールが生成されて推奨される前に、特定の数のイベントが発生してイベント記録データストア242に格納される必要がある。代替的に、ある実施形態では、ユーザがメッセージの詳細ビュー(例えばメッセージのコンテンツを示すビュー)を入力することにより手動でルールを定義し、ユーザが(コントロールセクション404に示されるもののような)アイコンを選択すると共に、(プロンプト440のような)ルール定義プロンプトが提示されるように、(アーカイブや削除等の)アイコンに対して長いタップを行い得る。
ジェスチャに基づくルール生成は、ルールを手動で定義するプロセスを単純化するために提供され得る。図6A−図6Bは、本発明の実施形態に従う、クライアントデバイスのユーザインタフェース画面を示す。ある実施形態では、メッセージ上で実行される特定の行動、又は行動の組、を示すためにスワイプジェスチャを行い得る。例えば、スワイプジェスチャは、ユーザが、接点602においてユーザインタフェース600に接触し、当該接点を特定の方向に他の位置へドラッグすることを含み得る。異なる行動は、異なる方向及び/又はユーザのスワイプの長さに関連付けられ得る。例えば、ユーザデバイスのスクリーンの第1の距離を横切る右へのスワイプは、アーカイブの行動に対応付けられてもよく、これに対し、第2の距離を横切るスワイプは削除の行動に対応付けられ得る。ある実施形態では、ジェスチャは、一連の複数のジェスチャを含みうる。ここで用いられるように、一連の複数のジェスチャを含むジェスチャは組み合わせジェスチャとして参照され得る。組み合わせジェスチャのある例は、スワイプジェスチャを含む「スワイプと一時停止」のジェスチャであり、ユーザがスクリーン又は他の表面に最初に接触して所定の方向に表面に沿って移動させ、スワイプの最後に、ユーザがある期間にわたって接触を維持する一時停止ジェスチャを行う。
上述したように、ジェスチャは、ジェスチャ定義248における1つ以上の複数の行動と関連付けられ得る。組み合わせジェスチャでは、ジェスチャのそれぞれの部分は、異なる行動又は行動の組に関連付けられ得る。ある実施形態では、異なるアプリケーション、ユーザ、及び/又はクライアントデバイスは、異なる行動の組に関連付けられ得る。
図6Aに示した例では、ユーザが接点602においてユーザインタフェース600に接触し、右にスワイプすることが、アーカイブの行動に対応する。接点603において、ユーザは、このジェスチャがルールとして適用されるべきであることを示すためにジェスチャを一時停止し得る。このジェスチャは、ここでは「スワイプと一時停止」のジェスチャとして参照され得る。期間は、ルール定義プロンプトを提示させるためにユーザが一時停止を維持する間に定義され得る。一時停止する間には、タイマー視覚化表示604が表示され得る。タイマー視覚化表示604は、スワイプに関連付けられる行動(この例では、アーカイブ行動に対応するチェックマーク)と、残り時間(この例では円を形成する矢印線)との両方を表示し得る。図6Bに示すように、ジェスチャが当該期間にわたって一時停止された時点で、完成した円606が表示され得る。ある実施形態では、選択されたメッセージはまた、アーカイブ行動が選択されたメッセージに対して実行されたことを示す、アーカイブのアニメーション、又は行動に適切な他の視覚化表示に置き換えられ得る。その後、指示メッセージ610を含むルール定義プロンプト608が表示されて、選択されたメッセージ及び類似のメッセージに対してルールを定義することをユーザに促す。
図6Bに示すように、ユーザは、ルールを適用する送信者612を選択するように促されてもよい。ある実施形態では、選択されたメッセージが単独の送信者に関連付けられているときには、当該送信者の詳細(例えば、名前、メールアドレス、電話番号等)が612内に自動的に組み込まれてもよい。ある実施形態では、ユーザは、選択されたメッセージと関連付けられた会話614に適用するためのルールを定義し得る。ある実施形態では、ユーザは、ルールが適用されるべき受信者616を定義し得る。ある実施形態では、選択されたメッセージが単独の受信者に関連付けられているときには、当該受信者の詳細(例えば、名前、メールアドレス、電話番号等)が612内に自動的に組み込まれてもよい。ある実施形態では、メッセージが単独の受信者に関連付けられているときには、ボックス616はプロンプト608から省略されてもよい。
ある実施形態では、クライアントデバイス202は、ユーザによって提供されたルールデータに基づいてルールを生成するために、リクエストをルールマネージャ250に送信し得る。ユーザによって定義されたルールは、その後、ルールマネージャ250によってフィルタリングルール240に追加され得る。
図6の例ではスワイプと一時停止のジェスチャが示されているが、代替的な組み合わせジェスチャもまた用いられ得る。例えば、一時停止とスワイプのジェスチャは、タッチスクリーン内でコンテンツアイテムを選択し、ある期間にわたってその接触を一時停止し、その後特定の方向にスワイプすることによって定義され得る。上述した図6の例と同様に、最初の一時停止のジェスチャは、スワイプに続いて実行される結果として生じる行動を変更し得る。
図7は、本発明の実施形態に従う代替的なルール定義プロンプトを示す。図7に示すように、異なる行動は、異なる行動に固有のルール定義プロンプトに関連付けられ得る。例えば、プロンプト700は後回しの行動に関連付けられ、プロンプト702はリストに追加する行動に関連付けられ、そして、プロンプト704は削除の行動に関連付けられ得る。
インタフェース700は、プロンプト固有のメッセージ706と、選択されたメッセージと類似のメッセージとを後回しにするルールを定義するための追加的な情報を要求するいくつかのプロンプトとを含み得る。図7Bに示すように、ユーザは、ルールを適用する送信者708を選択するように促されてもよい。上述したように、選択されたメッセージが単独の送信者に関連付けられているときには、当該送信者の詳細(例えば、名前、メールアドレス、電話番号等)が708内に自動的に組み込まれてもよい。ある実施形態では、ユーザは、選択されたメッセージと関連付けられた変換710に適用するためのルールを定義し得る。ある実施形態では、ユーザは、ルールが適用されるべき受信者712を定義し得る。ある実施形態では、選択されたメッセージが単独の受信者に関連付けられているときには、当該受信者の詳細(例えば、名前、メールアドレス、電話番号等)が712内に自動的に組み込まれてもよい。ある実施形態では、メッセージが単独の受信者に関連付けられているときには、ボックス712はインタフェース700から省略されてもよい。
ある実施形態では、インタフェース700は更に、後回しにすべきメッセージ(及びルールを適用する類似のメッセージ)に対する時間を要求するボックス714を含み得る。ボックス714が選択された場合、ユーザがメッセージを後回しする時間及び/又は日付を入力し及び/又は選択する、時間定義プロンプト(不図示)が表示されてよい。例えば、ユーザは、特定の送信者からの全てのメッセージが就業時間後まで後回しされるべきであることを定義してよい。ある実施形態では、後回しにする時間は、ジェスチャの一時停止603部分の間で定義され得る。例えば、タイマー視覚化表示606が円を完成した後に、アニメーションは、時間、日付及び時刻、又は、ジェスチャの一時停止をユーザがどれだけ継続するかに基づいて決定される他の一時的な値を表示するように変化する。ある実施形態では、ユーザがジェスチャをどれだけ一時停止したかに対応する一時的な値は、ボックス714に自動的に組み込まれ得る。上述したように、ユーザによって提供された、選択されたルールのデータは、その後ルールマネージャ250に提供され得、ルールマネージャ250は、フィルタリングルール240に追加されるべき対応するルールを生成し得る。
図7に示したように、ある実施形態では、インタフェース702は、プロンプト固有のメッセージ716と、選択されたメッセージと類似するメッセージとをリストに追加するルールを定義するための追加的な情報を要求するいくつかのプロンプトとを含み得る。プロンプト700のように、プロンプト702では、ユーザは、ルールが適用される送信者718、会話720、及び/又は受信者722を選択するように促されてもよい。プロンプト702は更に、どのメッセージが追加されるべきか(及びルールが適用される類似のメッセージ)を要求するボックス724を含み得る。ボックス714が選択された場合、ユーザが以前に定義されたリストから選択し得る、又は新たなリストを生成してもよい、リスト定義プロンプト(不図示)が表示されてよい。
プロンプト704は、プロンプト固有のメッセージ728と、選択されたメッセージと類似のメッセージとを削除するルールを定義するための追加的な情報を要求するいくつかのプロンプトとを含み得る。プロンプト700及び702のように、プロンプト704では、ユーザは、ルールが適用される送信者730、会話732、及び/又は受信者734を選択するように促されてもよい。ある実施形態では、メッセージを自動的に削除するルールを保存する前に、確認メッセージ(不図示)が表示され得る。
図8A−図8Bは、本発明の他の実施形態に従う、クライアントデバイスのユーザインタフェース画面を示す。ある実施形態では、スワイプと一時停止のジェスチャは、特定の行動に対応するスワイプジェスチャを用いる他のユーザインタフェースに適用され得る。図6A−6B及び図7に関して上述したように、スワイプと一時停止のジェスチャは、異なるがスワイプ動作と関連する行動を実行し得る。例えば、上述した例では、スワイプ動作が行動(アーカイブ、削除、リストへの追加、後回し)に対応し、スワイプと一時停止のジェスチャはスワイプ動作に対するルール生成を有効にする。図8A−8Bに示す実施形態では、スワイプと一時停止のジェスチャは、オンラインコンテンツ管理サービスに格納されるコンテンツアイテム(例えば画像、ビデオ、書面、又は他のコンテンツアイテム)を視聴するためのインタフェースに適用されてよい。オンラインコンテンツ管理サービスは、ユーザが、インターネットを用いて複数のデバイスでコンテンツにアクセスし、管理することができるようにする。典型的なオンラインコンテンツ管理サービスでは、ユーザはサービスプロバイダにアカウントを設けて、様々なコンテンツを当該アカウントに関連付ける。例えば、いくつかのオンラインコンテンツ管理サービスは、ユーザがコンテンツアイテム(テキスト書類、電子メールサービス、テキストメッセージ、他のタイプのメッセージ、写真、ビデオ及び音声ファイルのようなメディアファイル、及び/又は複数のファイルを含むフォルダを含むがこれに限らない)を格納できるようにし得る。コンテンツアイテムはサービスプロバイダによって管理されるマスタレポジトリに格納され得、様々なユーザデバイスにおけるローカルコピーにミラーリングされ又は同期され得る。
図8Aに示すように、ユーザインタフェース800は1つ以上のコンテンツアイテム802を表示し得る。図8Aに示す例では、コンテンツアイテム802は画像であり得、ユーザインタフェース800は、コンテンツアイテム802において実行されるべき少なくとも2つの行動に関連付けられた、少なくとも2つのスワイプジェスチャを可能にし得る。スワイプアップのジェスチャは、コンテンツアイテム802が共有されるようにし、スワイプダウンのジェスチャは、コンテンツアイテム802が隠されるようにし得る。スワイプと一時停止のジェスチャは、コンテンツアイテムを共有し又は隠すことに関する行動に関連付けられるように定義され得る。例えば、スワイプと一時停止のジェスチャ804は、スワイプダウンのジェスチャに関連付けられ得る。スワイプと一時停止のジェスチャ804は、(例えば画像内で識別された顔などのアイテムのコンテンツに基づいて)類似のコンテンツアイテムを隠すルールを定義するためのプロンプト(非表示)をユーザに表示し得る。或いは、スワイプと一時停止のジェスチャ804は、コンテンツアイテムがユーザデバイスに表示されないように「隠れた」フォルダにコンテンツアイテムを自動的に移動し、又は、スワイプと一時停止のジェスチャ804は、デバイス又はオンラインコンテンツ管理サービスからコンテンツアイテムを削除し得る。
図8Bに示すように、スワイプと一時停止のジェスチャ806は、スワイプアップのジェスチャに関連付けられ得る。スワイプと一時停止のジェスチャ806は、(例えば画像内で識別された顔などのアイテムのコンテンツに基づいて)類似のコンテンツアイテムを共有するルールを定義するためのプロンプト(非表示)をユーザに表示し得る。或いは、スワイプと一時停止のジェスチャ806は、コンテンツアイテムが共有フォルダの共有設定に従って共有されるように、コンテンツアイテムを特定の「共有」フォルダに自動的に移動し得る。これは、ユーザの特定の組とコンテンツアイテムを、特定の期間又は他の共有設定に従って、ユーザに追加的な共有の詳細を要求すること無く、ユーザが共有できるようにし得る。
図4A−4C、図5A−5C、図6A−6B、図7及び図8A−8Bのユーザインタフェース画面が具体例であると共に変形例及び修正が可能であることが理解される。ユーザの入力コントロール、レイアウト、アイコン等は、クライアントデバイス、サポートされる機能の組、及び/又はクライアントソフトウェアの美学的思想に応じて、変更され得る。
フィルタリングルールの動的な生成を実施するために用いられ得る特定の処理及びアルゴリズムの例をこれから説明する。
上述したように、フィルタリングルールの生成は、イベント記録の分析に基づいてなされ得る。図9は、本発明の実施形態に従う、イベント記録を生成する処理900のフローチャートを示す。処理900は、例えば、図2のメッセージ管理サービス200のイベントレコーダ236内に実装され得る。処理900は、メッセージ管理サービス200によって受信される、それぞれの新たなインバウンドのメッセージに対して実行され得る。
ブロック902で、インバウンドのメッセージが受信される。ある実施形態では、インバウンドのメッセージは、以前にはクライアント202へ配信されておらず、ユーザが以前には読んだり(例えば異なるクライアントを用いて)行動をとっていない、新たなメッセージであり得る。ブロック904において、メッセージの特徴の組がインバウンドのメッセージに対して決定され得る。メッセージの特徴は、後にパターンディテクタ238へ提供される、メッセージのあらゆる性質、属性、又はメタデータを含み得る。例は、メッセージの件名、送信者の名称又はアドレス、メッセージが受信されたメッセージングサービスの識別子、メッセージの受信者のリスト、メッセージの送信時間、(メッセージングサービス204又はメッセージ管理サービス200における)メッセージの受信時間、メッセージのサイズ、メッセージの内容のいくつか又は全ての提示、メッセージのフォーマット(例えばプレインテキスト、HTML)、添付の存在及び添付の種別、等を含み得る。
ブロック906において、メッセージが、ユーザに当該メッセージを提示し得るクライアント(例えば、図2のクライアント202)に配信され得る。ブロック908において、ユーザがメッセージに関する行動をとった場合、イベントレコーダ236はクライアントからイベント情報を受信し得る。イベント情報は、なされた行動の識別子を含み得る。ある実施形態では、イベント情報はまた、クライアントのコンテクスト情報、すなわち、クライアントデバイスの種別(例えばモバイル電話、ラップトップコンピュータ、デスクトップコンピュータ)、クライアントデバイスの識別(例えば特定のデバイス名又は他のユニークな識別子)、行動のとられた時間、行動がとられた際のクライアントデバイスの位置(例えば「家」又は「オフィス」などの定められた位置)、特定の位置の座標、又は利用可能な無線ネットワークの識別子などの他の位置を示すもの、等のようなコンテクスト情報を含み得る。
ブロック910において、イベントレコーダ236は、ブロック904において決定されたメッセージの特徴と、ブロック908において受信したイベント情報とを組み込んだイベント記録を生成し得る。処理900は、イベント記録の組を生成するために、任意の数のメッセージとユーザ応答に対して繰り返され得る。イベント記録は、例えば、図2のイベント記録データストア242内に格納され得る。ある実施形態では、イベント記録は、異なるメッセージングサービスからユーザのために受信した、メッセージに関連する記録を含み得る。
多数のイベント記録が収集された後には、これらのイベント記録はユーザの行動のパターンを検出するために分析され得る。図10は、本発明の実施形態に従う、イベント記録に基づくユーザ行動のパターンを検出する処理1000のフローチャートを示す。処理1000は、例えば、図2のメッセージ管理サービス200のパターンディテクタ238内に実装され得る。
ブロック1002において、パターンディテクタ238は、図2のイベント記録データストア242からイベント記録の組を選択し得る。選択された組は、(例えば、同一のユーザアカウントにアクセスする複数のクライアントによってレポートされたイベント、及び/又は、異なるメッセージングサービスから供給される同一のユーザアカウントのためのメッセージに関連するイベントを含む)特定のユーザアカウントのための全てのイベント記録を含み得る。ある実施形態では、ブロック1002における選択は、メッセージの特徴又は特徴の組み合わせに基づく、プレフィルタリング(prefiltering)を含み得る。例えば、件名又は送信者に関連するパターンを検出するためにパターンディテクタ238が用いられる場合、1つ又は2つのイベント記録のみが所定の件名又は送信者を有するときは、その特定の件名又は送信者に対するイベント記録は無視され得る。プレフィルタリングはまた、様々なイベント記録の更新、イベント記録の合計数等のような、他の基準を採用し得る。他の例では、プレフィルタリングは、メッセージに何をすべきかを決定する前にユーザがメッセージを読んだ場合には自動化されたフィルタリングが最適又は望ましいものでないという前提のもと、イベント記録の組を、ユーザが行動を起こす前にメッセージを読んでいない場合のイベントに限定することを含み得る。ユーザがメッセージを読んだかの決定は、クライアントによって提供されたイベント情報に基づき得る。例えば、イベント情報は、行動をとる前にユーザがメッセージリストからメッセージを開いたか(例えば、図4Aのメッセージリスト402内のメッセージに対するタッピングによる)、及び/又は、メッセージを開いた後であって行動する前にユーザがどのくらい長い時間をメッセージを探すことに費やしたかを示しうる。例えば、ユーザが、1秒又はそれ以下の時間で開かれたメッセージを見た場合、このことは、メッセージが、処理の仕方についてただちに認識可能なキューを含むことを示すかもしれず、ユーザが数秒の時間でメッセージを見た場合、キューを検出することはより困難かもしれない。
ブロック1004において、パターンディテクタ238は、特定のイベントの特徴と結果として生じるユーザの行動との間の相関を検出するために、選択したイベント記録の組を分析し得る。様々な分析技術が使用され得るとともに、分析は、メッセージの1つの特徴、及び/又は、メッセージの特徴及び/又はコンテクスト情報の個別又は組み合わせにおけるコンテクスト情報を考慮し得る。
例えば、ある実施形態では、分析はイベントのカウントに基づいてなされ得る。パターンディテクタ238は、イベント記録から、特定の送信者から受信したメッセージの数、又は件名に特定の語を伴って受信したメッセージの数のような、特定のメッセージの特徴(又は特徴の組み合わせ)を有するメッセージの数(NM)を判定し得る。パターンディテクタ238はまた、ユーザが特定の(複数の)特徴を有するメッセージに対して特定の行動をとった回数(NA)を判定し得る。例えば割合NA/NMに基づいて相関が検出され得る。特徴がユーザによる特定の行動と相関するインスタンスを特定するために、任意の数の1つの特徴及び/又は特徴の組み合わせがこの方法で分析され得る。メッセージの任意の特徴又は特性がこの分析に組み込まれ得る。
ある実施形態では、ブロック1004における分析はまた、クライアントによって提供されたコンテクスト情報に部分的に基づき得る。例えば、ユーザは(例えば特定の送信者から、又はユーザの特定のグループに向けられた)特定の特徴を有するメッセージを後回しして、特定の場所(例えば自宅)で又は特定のクライアントデバイス(例えばモバイル電話と対照的なタブレット又はラップトップ)を使用して、後回しを続ける代わりにメッセージを読むまで、後回しを維持してよい。このようなパターンは、入力変数の組(この場合、コンテクスト情報のメッセージの特徴及び/又は要素に対応する)と特定の結果(この場合、一貫してとられる特定の行動)との間の相関についての柔軟かつ一般化された検出を提供する、多変量解析技術を用いて検出され得る。人工ニューラルネットワークのような機械学習アルゴリズムが任意の程度の複雑さの分析をサポートするために実施され得る。ある例では、複雑さは、例えば一度に考慮されるメッセージの特徴及び/又はコンテクスト要素の数を制限することにより、限定され得る。
ブロック1004における分析は、(メッセージの特徴及び/又はコンテクスト情報の要素を含む)特徴の組と(例えば上で定義されたNA/NM)特定のユーザの行動との間の相関の程度を示す相関メトリクスを生成し得る。ブロック1006において、ルールを推奨するための基準として十分に強い相関を識別するために、更なる統計的処理が相関メトリクスに対して実行される。一般に、ブロック1006における処理は、偶然によって単に発生し得るものから統計的に有意な相関を識別することが可能な任意のアルゴリズムを含み得る。ある実施形態では、相関は、最近のイベント記録のいくつかの組にわたって100%であることが求められ得る。例えば、ブロック1006は、ユーザが、関連する特徴の組を有する最も直近の3つ(又はそれ以上)のメッセージの全てに関して同一の行動をとることを必要とし得る。他の例では、ブロック1006は、より大きなイベント記録の組にわたる、より弱い相関を必要とし得る。例えば、ユーザが関連する特徴の組を有する直近の20のメッセージに対して少なくとも95%の機会において同一の行動をとった場合、相関が強いとみなし得る。
ブロック1008において、パターンディテクタ238は、例えば、ブロック1006における分析を参照して、何等かの強い相関が特定されたかを判定し得る。処理1000は、イベント記録に対する更なる分析を実行するためにブロック1002に戻り得る。ある実施形態では、更なる分析が追加的なイベント記録が利用可能になるまで停止され得るか、同一の記録の組が、例えば異なる特徴の組又は異なるプレフィルタリングの基準を参照することによって異なる方法で分析され得る。ブロック1008で強い相関が検出された場合、ブロック1010においてパターンディテクタ238は推奨されるルールを生成し得る。ある実施形態では、推奨されるルールは、「{条件}を満たした場合、{行動}をする」という一般的な形式を取り得る。{条件}、以下、トリガをかける条件としても参照される、は、特定の行動と強く相関させるために、メッセージの特徴の組、及び/又は、発見されたコンテクスト要素を識別し得る。{行動}、以下、結果として生じる行動としても参照される、は、メッセージを後回しにすること或いはメッセージをアーカイブすることのような、特定の行動を識別し得る。推奨されるルールは、上述したように、フィルタモジュール234とやりとりされ得る。
処理1000は、より多くのイベントの発生により繰り返され得、この分析は、複数の異なるメッセージングサービスからユーザに対して受信したメッセージを含みうる。上述したように、ある実施形態では、イベント記録は寿命又は大量の後続のイベントによって失効し得る。従って、異なる時間においては、処理1000は異なるイベント記録の組を分析することを含み得、更に、推奨されるルールはユーザの振る舞いの変化につれて発達し又はメッセージ管理サービス200によってより良く理解され得る。様々な時間において、処理1000の実行は、結果として、ゼロ、1つ、又は1つより多くの推奨されるルールを生成し得る。
推奨されるルールを規定する前に、メッセージ管理サービス200は、クライアントへそのルールを提供し、ルールが成立されるべきであるとのユーザの確認を得る図11は、本発明の実施形態に従う、メッセージにフィルタリングルールを適用する処理1100のフローチャートを示す。プロセス1100は、例えば、図2に示すメッセージ管理サービス200のフィルタリングモジュール234において実施され得る。
ブロック1102において、フィルタリングモジュール234は、メッセージングサービス(例えば図2のメッセージングサービス204a)を送信元とするインバウンドのメッセージを受信し得る。これは、クライアントへ以前には配信されておらず、受信ユーザによって行動されておらず、又はメッセージ管理サービス200によって処理(例えば後回し)されていない新しいメッセージとなり得る。
ブロック1104において、フィルタリングモジュール234は、任意の成立したフィルタリングルール(例えば図2のルール240)を適用し得る。ある実施形態では、メッセージ管理サービス200で新たなユーザアカウントが生成された場合、成立したフィルタリングルールの組は初めに空になり得る。或いは、ルールのセットは、例えばスパムフィルタリングのルール及び/又はユーザの人口統計に基づいて選択されたルールを含みうる開始時のルールの組を予め追加し得る。ブロック1104において成立したルールを適用することは、メッセージが成立したルールに対してトリガをかける条件を満たしたかを判定し得、もしそうであれば、結果として生じる行動を自動的に実行することを含み得る。例えば、成立したルールが、メッセージを自動的に後回しにし、フォルダ又はリストへ移動し、又は削除すべきことを示す場合、その示された行動が実行され得る。フィルタリングモジュール234又はメッセージ管理サービス200の他のコンポーネントは、適切な更新した命令を生成して、メッセージを受信した送信元のメッセージサービス(例えばメッセージングサービス204a)へ送信し、及び/又は行動を実行するための自身の内部状態を更新し得る。ある実施形態では、行動がクライアントからの通信に応答してなされるよりむしろ行動がフィルタリングモジュール234によって開始されるという唯一の差を有し、クライアントから受信したイベント情報に応答して同一の行動を実行するのと同じように、ルールに応答した行動の実行が実施され得る。
ブロック1106において、フィルタリングモジュール234は、成立したルールを適用した結果に基づいて、インバウンドのメッセージが新たな受信メッセージとしてクライアントへ配信されるべきかを判定し得る。配信されるべきでない場合、ブロック1108において、配信はブロックされ得る。例えば、成立したルールを適用することによってメッセージを(インボックスの外の)他のフォルダに移動し、後回しにし、又は削除する場合、そのメッセージは、新たな受信メッセージとしてクライアントへ配信されるべきではない。配信がブロックされた場合、処理1100は終了し得る(ブロック1110)。
ブロック1106が結果としてこの時点でメッセージを配信しないことを決定したとしても、メッセージはいずれにしろ後のある時間に配信され得ることが理解されるべきである。例えば、既定されたルールが適用されたことによりメッセージが後回しになった場合、その後回しになったメッセージは、クライアントへ後に、すなわち後回しの終了条件を満たした際に配信され得る。他の例として、ルールの適用が結果としてメッセージをリスト又はフォルダへ移動するものであった場合、ユーザが次にリスト又はフォルダにアクセスした際に、メッセージは配信され得る。
ブロック1106においてメッセージが配信されるべきであると判定された場合、ブロック1112において、フィルタリングモジュール234は、推奨されるルールのいずれかをメッセージに適用すべきかを判定し得る。ある実施形態では、例えば図10の処理1000を実行した結果として、パターンディテクタ238によって推奨されるルールが提供され得る。ブロック1114において推奨されるルールが適用される場合、ブロック1116において、フィルタリングモジュール234はメッセージに推奨メタデータを追加し得る。推奨メタデータは、適用可能な推奨されるルールを記述し得る。例えば、上述したように、ルールは、トリガをかける条件が満たされる場合にとられるべき、結果として生じる行動として表現され得る。従って、推奨メタデータは、結果として生じる行動とトリガをかける条件(例えば、トリガをかける条件がみたされるかを判定するために用いられる、特定のメッセージの特徴及び/又はコンテクスト要素)とを識別し得る。ブロック1118において、メッセージはクライアントデバイスに配信され得る。図示されるように、メッセージは、推奨されるルールが適用されるかに関わらず配信され得るが、推奨メタデータは推奨されるルールが適用される場合にのみ追加される。
ある実施形態では、複数の推奨されるルールを同じメッセージに適用することができる。この場合、フィルタモジュール234は推奨されるルールの1つを選択し、推奨されるルールにのみ対する推奨メタデータを提供する。例えば、処理1000のある実装では、パターンディテクタ238が、検出した相関の強さに基づくスコアを各推奨されるルールに割り当て、フィルタモジュール234が最も高いスコアを有する推奨されるルールを選択し得る。(2つ以上の推奨されるルールによって最も高いスコアが共有されている場合、これらのルールのなかからランダムな選択がなされ得る。)他の実施形態では、フィルタモジュール234は、単一のメッセージについての複数の推奨されるルールに対して推奨メタデータを追加し得る。
ブロック1120において、処理1100はクライアントからイベント情報を受信し得る。イベント情報は、メッセージに対して実行されたユーザ行動の指標を含み得、また、ユーザが推奨されるルールにどのように対応したかについての指標をも含み得る。例えば、図4Cを参照すると、イベント情報は、ユーザが(ルールを受け入れる)「はい」ボタン444を選択したか、若しくは、「いいえ」ボタン446、「後できく」ボタン448、又は「閉じる」ボタン450のいずれか(ルールを受け入れない様々な形式に対応するものの全て)を選択したかを示し得る。ユーザがブロック1122において推奨されるルールを受け入れた場合、ブロック1124において、推奨されるルールは成立したルールの組に追加され得、処理1100は終了し得る(ブロック1110)。ユーザがブロック1122において推奨されるルールを受け入れなかった場合、ブロック1126において、処理1100は、推奨されるルールに対する拒否データを更新し得、後に処理1100が終了し得る(ブロック1110)。
ある実施形態では拒否データが使用されて、ユーザが受け入れなかった後に再び推奨されるルールを提示するか、及びいつ提示するかを決定し得る。図12は、本発明の実施形態に従う、拒否データを更新する処理1200のフローチャートを示す。プロセス1200は、例えば、メッセージ管理サービス200のフィルタモジュール234において実施され得、上述した処理1100のブロック1126において使用され得る。
ブロック1202において、推奨されるルールに対するユーザの応答が読み出される。この例では、図4Cのメニュー440が提示され、ユーザが選択したことが想定される。「はい」ボタン444が選択された場合、ルールが受け入れられ、プロセス1200は起動されない。他の場合は、図12に示す方法で処理される。
例えば、ブロック1204において、ユーザが(例えば図4Cの「いいえ」ボタン446を選択することによって)「いいえ」と応答した場合、これは、恐らくユーザが推奨されるルールの実施を少なくとも今は望んでいないことの兆候として解釈され得る。従って、推奨されるルールが再び提示されることを一次的に又は永続的に抑制することが望ましいかもしれない。ある実施形態では、カウンタ「N(No)」が各推奨されるルールに対して保持され、ユーザが「いいえ」に応答した回数をカウントする。ブロック1206において、カウンタが最大値(例えば2又は3又はある他の数)に達した場合、そのときはブロック1208において、推奨されるルールが抑制され得る。例えば、フィルタモジュール234は抑制されるルールのリストを保持し得る。パターンディテクタ238が推奨されるルールを提供する場合はいつでも、フィルタモジュール234は、推奨されるルールを抑制されるルールのリストと比較して、抑制されるルールと一致する場合には当該推奨されるルールを無視し得る。ある実施形態では、フィルタモジュール234は抑制されるルールについてのフィードバックをパターンディテクタ238に提供し得、パターンディテクタ238は以降の処理に当該フィードバックを取り込み得る。
ブロック1206においてカウンタN(No)がその最大値に達していない場合、そのときはブロック1210においてカウンタN(No)がインクリメントされ得る。推奨されるルールがあまりにすぐに再びユーザに提示される(これによりユーザをいらつかせる)ことを防ぐため、ブロック1212において、推奨されるルールに対する遅延カウンタが初期化され得る。ある実施形態では、遅延カウンタは時間に基づき得、例えば、ユーザが「いいえ」と応答した推奨されるルールは、少なくとも24時間の間には再び提示されない。ある実施形態では、遅延カウンタは、推奨されるルールが適用されたメッセージの数に基づき得、例えば、ユーザが「いいえ」と応答した推奨されるルールは、ユーザが少なくとも3つ(又はある他の数)かそれ以上のメッセージに対して行動するまで再び提示されない。いずれの場合でも、フィルタモジュール234は、遅延カウンタの有効な推奨されるルールがブロック1114において適用されないものとして扱われる場合を除き、遅延カウンタが制限に達するような時間(例えば遅延時間が満了するか関連するメッセージの数が到達する)まで、上述した処理1100に従って新たなインバウンドのメッセージに対する処理を継続し得る。1つの推奨されるルールに対して遅延カウンタが有効である間に、例えば処理1100の動作を通して他の推奨されるルールが提示され得ることが理解されるべきである。
ブロック1204においてユーザが「いいえ」と応答しなかった場合、処理1200はブロック1214に進み得る。ユーザが(例えば図4Cの「後できく」ボタン448を選択することにより)「後で」と応答した場合、そのときはブロック1216において、当該推奨されるルールに対する遅延カウンタが初期化され得る。遅延期間が異なるが、これはブロック1212を参照して説明した遅延カウンタと同様であり得る。例えば、遅延期間は、「いいえ」の応答よりも「後で」の応答に対するものの方が短くなり得る。ある実施形態では、「後で」の応答に対する遅延期間は実際的にゼロであり得る。すなわち、ルールが適用される新たなインバウンドのメッセージをメッセージ管理サービス200が受信する次の機会には、推奨されるルールが再び提示され得る。ユーザが「後で」と応答した場合、処理1200の目的には、ユーザがなお興味を有するであろうことが想定され、「いいえ」の場合とは異なり、「後で」の応答は結果的に推奨されるルールを抑制しない。
ブロック1214においてユーザが「後で」と応答しなかった場合、処理1200はブロック1218に進み得る。これは、(例えば図4Cの「閉じる」ボタン450を選択することにより)ユーザが特定の応答なしにプロンプトを閉じた場合に対応する。ここで、この応答はユーザが単に今はプロンプトを読みたくないことを示し得、また、この応答はユーザが概して推奨されるフィルタリングルールを受けとることに興味がないことを示し得るため、ユーザの意図は曖昧である。この意図は、興味がないことを示唆する「閉じる」をユーザが繰り返し選択する場合、パターンからより正確に推測され得る。従って、ある実施形態では、フィルタモジュール234は「閉じる」応答(「N(Cl)」)のグローバルカウンタを保持し得る。ブロック1220においてこのカウンタN(Cl)が最大値(例えば、3、5又はある他の値)に達した場合、そのときはブロック1222において、フィルタモジュール234が全ての推奨されるルールを抑制し得る。例えば、図11を参照すると、フィルタモジュール234は処理1100のブロック1114と1116とをスキップし得る。ブロック1220においてカウンタN(Cl)がその最大値に達していない場合、そのときはブロック1224においてカウンタN(Cl)がインクリメントされ得る。ある実施形態では、「閉じる」以外の任意のユーザの応答がカウンタN(Cl)をリセットして、「閉じる」以外の何らかではユーザが応答しない場合にのみ、ブロック1222における、推奨されるルールの全体的な抑制が起こるようにする。他の実施形態では、メッセージ管理サービス200が「閉じる」応答を無視して、そのような応答が以降の振る舞い(例えばルールが推奨されるか)に影響を与えないようにし得る。
(ブロック1208の結果として)特定の推奨されるルールが抑制される場合、又は、(ブロック1222の結果として)全ての推奨されるルールが抑制される場合、抑制が必ずしも永続的ではないがなされ得る。例えば、抑制は、メッセージ管理サービス200がフィルタリングルールの推奨を再び開始する前の、固定期間(例えば1週間又は1か月)において継続し得る。推奨されるルールが一次的に抑制される場合、パターンディテクタ238は動作を継続して、推奨されるルールが抑制されない状態になった場合に、ユーザに提示され得る現在の推奨されるルールの組をフィルタモジュール234が有するようにし得る。
上述したように、推奨されるルールはクライアントによってユーザに提示され、推奨されるルールが成立したルールになるべきかをユーザが決定できるようにする。推奨されるルールを提示するためにクライアントデバイスによって使用され得る処理の例がこれから説明される。図13は、本発明の実施形態に従う、推奨されるルールをユーザに提示する処理1300のフローチャートを示す。処理1300は、例えばクライアント202(又は、図1のクライアント108か110)において、図4A−4Cのユーザインタフェースと似たユーザインタフェースを用いて実施され得る。
処理1300は、例えばメッセージ管理サービス200が上述した処理1100のブロック1118を実行した結果として、クライアント202が新たなメッセージを受信した場合に、ブロック1302において開始され得る。ブロック1304において、クライアント202は、例えば図4Aのメッセージリスト402のようなメッセージリスト内に、ユーザへのメッセージを提示し得る。ブロック1306において、クライアント202は当該メッセージに関連するユーザ入力を受け取り得、そして、ブロック1308において、クライアント202は示された行動を決定するためにユーザの入力を解釈し得る。例えば、図4Bに示すように、ユーザ入力はメッセージを後回しにする行動を示し得る。
処理1310において、クライアント200は、(例えばメッセージ管理サービス200が上述した処理1100のブロック1116を実行した結果として)行動のなされたメッセージが推奨メタデータを有するかを判定し得る。推奨メタデータを有する場合、ブロック1312において、クライアント202は、ブロック1308において示された行動が推奨メタデータで特定される結果として生じる行動と一致するかを判定し得る。一致する場合、ブロック1314において、クライアント202は、推奨されるルールに関するプロンプトをユーザに提示し得る。このプロンプトは図4Cのプロンプトオーバレイ440と類似する。ブロック1316において、クライアント200は、(例えば、「はい」、「いいえ」、「後できく」又は「閉じる」を選択する)当該プロンプトに応答するユーザ入力を受け取り得る。ブロック1318において、クライアント202はメッセージ管理サービス200にイベントをレポートし得る。レポートは(ブロック1308において決定されたように)メッセージに対してなされた行動と、(ブロック1316において受け取った)プロンプトに対する応答とを含み得る。
推奨メタデータがブロック1310において提示されない場合、又は、ブロック1312の結果として、ユーザの行動が推奨されるルールにおける結果として生じる行動と一致しないと判定された場合、ブロック1320において、クライアント202はメッセージ管理サービス200にイベントをレポートし得る。この場合、推奨されるルールに関連するプロンプトが提示されない場合、レポートはプロンプトに対するユーザの応答を含まない。ある実施形態では、ブロック1320におけるレポートは、推奨されるルールと、当該推奨されるルールと一致しない行動とがあったか、又は、推奨されるルールがなかったかを示し得、他の実施形態では、この情報がすでにメッセージ管理サービス200において利用可能であり、クライアントはレポートする必要がない。ブロック1320におけるレポートはまた、行動を選択する前にユーザがメッセージを開いたか、開いた場合にはメッセージがどれだけ長く開かれたか、のような他の情報を含み得る。
ブロック1318又は1320においてレポートがなされた後に、処理1300はブロック1322において終了し得る。ユーザによってなされた行動はイベント記録に取り込まれるとともに、続いてパターンディテクタ238によって用いられて、将来の推奨されるルールが生成され得る。更に、イベント情報が、推奨されるルールをユーザが受け入れたことを示す場合、当該推奨されるルールは、上述したように成立したルールの組に追加され得る。
処理1300又はその一部は、新たなメッセージを受信したときに繰り返され得る。例えば、新たなメッセージが受信されたとき、ユーザに提示されるメッセージのリストが更新され得る。ユーザは、メッセージを受信する順番に対応する必要はない、任意の順番でメッセージとの相互作用を行い得、そして、ユーザがたまたまメッセージに対して行動した場合はいつでも、ブロック1306−1320が特定のメッセージに関して実行され得る。
図14は、本発明の実施形態に従う、推奨されるルールをユーザに提示する他の処理1400のフローチャートを示す。処理1400は、例えばクライアント202(又は、図1のクライアント108か110)において、図5A−5Cのユーザインタフェースと似たユーザインタフェースを用いて実施され得る。
処理1400は、例えばメッセージ管理サービス200が上述した処理1400のブロック1418を実行した結果として、クライアント202が新たなメッセージを受信した場合に、ブロック1402において開始され得る。ブロック1404において、クライアント202は、例えば図5Aのメッセージリスト502のようなメッセージリスト内に、ユーザへのメッセージを提示し得る。ブロック1406において、メッセージが(例えばメッセージ管理サービス200が上述した処理1400のブロック1416を実行した結果としての)推奨メタデータを有する場合、ブロック1408において、クライアント202は推奨されるルールの表示を含む提示を変更し得る。例えば、図5Aに示したように、下線が用いられて、トリガをかける条件(例えばトリガをかける条件に対応する部分に下線を引くことによる)、及び/又は、結果として生じる行動(例えば下線の色又は線のスタイルによる)が示され得る。
ブロック1410において、クライアント202はメッセージに関連するユーザ入力を受け取り得る。例えば、図5Aを参照すると、ユーザ入力はメッセージ又はメッセージの変更された部分をタップすることを含み得る。
ブロック1412において、クライアント202は、当該ユーザ入力が、ルールを受け入れるためのプロンプトが表示されるべきであることを示しているかを判定する。例えば、上述したように、メッセージ上のタップは、プロンプトが表示されるべきことを示すかもしれないが、一方で他の行動(例えばメッセージを不ワイプすること)は、プロンプトが表示されるべきでないことを示すかもしれない。プロンプトが表示されるべきである場合、ブロック1414において、クライアント202は、推奨されるルールに関するプロンプトをユーザに提示し得る。このプロンプトは図5Bのプロンプト530と類似する。ブロック1416において、クライアント200はプロンプトに応答するユーザ入力(例えば、推奨を受け入れるためにプロンプト530上をタップする、又は断るために画面上の他のどこかをタップする)を受け取り得る。ブロック1418において、クライアント200は、ユーザが推奨されるルールを受け入れたかを判定し得る。受け入れた場合、ブロック1420において、クライアント200はユーザインタフェースを介して、例えば図5Cに示したように行動をアニメーションさせ、結果として生じる行動を示し得る。これは、推奨されるルールが受け入れられたこと、及び、結果として生じる行動がメッセージに適用されることの確認を提供し得る。推奨されるルールが受け入れられたかに関わらず、ブロック1422において、クライアント202はメッセージ管理サービス200にイベントをレポートし得る。レポートは(ブロック1416において受け取ったように)プロンプトに対する応答、及び/又は、メッセージに対してなされる行動の指標を含み得る。
ルールのプロンプトが(例えば推奨メタデータがブロック1406において表示されないために)ブロック1412において表示されない場合、ブロック1424において追加的な処理が発生し得る。例えば、ユーザ入力がブロック1410においてメッセージに対してとるべき何らかの他の行動を示す場合、クライアント200は、その行動を含むイベント情報をメッセージ管理サービス200にレポートし得る。そのレポートは、推奨されるルールと、当該推奨されるルールと一致しない行動とがあったか、又は、推奨されるルールがなかったかを示し得、他の実施形態では、この情報がすでにメッセージ管理サービス200において利用可能であり、クライアントはレポートする必要がない。ブロック1424におけるレポートはまた、行動を選択する前にユーザがメッセージを開いたか、開いた場合にはメッセージがどれだけ長く開かれたか、のような他の情報を含み得る。
ブロック1422におけるレポート、又はブロック1424における更なる処理の後に、処理1400はブロック1426において終了し得る。ユーザによってなされた行動はイベント記録に取り込まれるとともに、続いてパターンディテクタ238によって用いられて、将来の推奨されるルールが生成され得る。更に、イベント情報が、推奨されるルールをユーザが受け入れたことを示す場合、当該推奨されるルールは、上述したように成立したルールの組に追加され得る。
処理1400又はその一部は、新たなメッセージを受信したときに繰り返され得る。例えば、新たなメッセージが受信されたとき、ユーザに提示されるメッセージのリストが更新され得る。ユーザは、メッセージを受信する順番に対応する必要はない、任意の順番でメッセージとの相互作用を行い得、そして、ユーザがたまたまメッセージに対して行動した場合はいつでも、ブロック1410−1422が特定のメッセージに関して実行され得る。
図15は、本発明の実施形態に従う、ジェスチャに基づくルールを生成する処理のフローチャート1500を示す。ブロック1502において、ユーザへの少なくとも1つのメッセージに対して実行されるべき行動に対応するジェスチャ入力が、メッセージ管理サービスにおいて検出される。上述したように、ジェスチャは、複数のサブジェスチャを含む組み合わせジェスチャであり得る。ある組み合わせジェスチャの例は、スワイプと一時停止のジェスチャであり、このスワイプと一時停止のジェスチャは、横断部分(例えば、ユーザインタフェースへの最初の接触位置であって、この接触がその後特定の方向に第2の位置へドラッグされる)と一時停止の部分(例えば、接触が特定の期間にわたって第2の位置において実質的に一時停止する)とを含む。
ブロック1504において、ジェスチャ入力は、実行される行動を識別するために分析される。上述したように、この行動は、メッセージをアーカイブすること、削除すること、後回しにすること、またはリストに追加することに関するルールを生成することを含み得る。ある実施形態では、ジェスチャは、(画像、ビデオ、書類、又は他のコンテンツアイテムなどの)他のコンテンツアイテムと共に用いられ得、(コンテンツアイテムを共有し又は隠すことのような)コンテンツアイテムに特有の行動に関連付けられ得る。組み合わせジェスチャの異なる部分は、異なる行動に関連付けられ得る。例えば、行動の第1の組は横断部分に関連付けられ、行動の第2の組は一時停止の部分に関連付けられ得る。異なる行動の組は互いに関連付けられ得る。例えば、行動の第1の組はメッセージをアーカイブし、削除し、又は後回しする命令を含み得、行動の第2の組は、後のメッセージにおいて自動的に行動を実行するルールを生成する命令を含み得る。ある実施形態では、ジェスチャに関連付けられた行動はジェスチャ定義に基づいて識別され得る。例えば、横断部分に関連付けられた長さと方向とは、ジェスチャ定義(例えばベクトル)と一致させられ得る。
ある実施形態では、組み合わせジェスチャに関連付けられた行動は、組み合わせジェスチャの一時停止の部分に関連付けられた時間に基づいて判定され得る。この時間は閾値と比較され得る。この時間が閾値より短い場合、そのときは行動が行動の第1の組から選択され、この時間が閾値より長い場合、実行されるべき行動は、行動の第2の組から選択され得る。ある実施形態では、複数の閾値が一時停止のジェスチャと関連付けられ得、一時停止の部分の長さを変更することによって複数の行動が選択されるようにすることができる。
ブロック1506において、メッセージ管理サービスは、検出したジェスチャと識別された行動とに関連する選択可能なオプションのリストを表示し得る。上述したように、プロンプトは、送信者、会話、受信者、又は、後回しにする時間又はリストの名前などの他のデータの選択を要求し得る。ブロック1508において、メッセージ管理サービスは、メッセージに関連付けられたデータの選択を受信し得る。ブロック1510において、メッセージ管理サービスは、メッセージに関連付けられたデータの選択を、ルールを定義するためにメッセージ管理サービスに送信し得る。上述したように、ルールはその後フィルタリングルール240に追加され、ブロック1510でルールを定義するために用いられたデータの選択を共有する、その後に受信するメッセージに適用され得る。
ある実施形態では、ルールが定義された時点で、ルールはその後に入ってくるメッセージに(例えばフィルタ234を通して)適用され得る。メッセージ管理サービスが後のメッセージを受信した場合、フィルタ234がその新しいルールをメッセージに対して適用し、メッセージに対して対応する行動を実行し得る(例えばメッセージを自動的にアーカイブし、削除し、移動し、及び/又は後回しにする)。このように、電子メールのルールは、パターンが識別されていない場合であっても迅速かつ直感的に定義され得る。
処理1500又はその一部は、新たなメッセージを受信したときに繰り返され得る。例えば、新たなメッセージが受信されたとき、ユーザに提示されるメッセージのリストが更新され得る。ユーザは、メッセージを受信する順番に対応する必要がない、任意の順番でメッセージとの相互作用を行い得、そして、ユーザがたまたまメッセージに対して行動した場合はいつでも、ブロック1502−1510が特定のメッセージに関して実行され得る。
図16は、本発明の実施形態に従う、ジェスチャに基づく入力に関連付けられた行動を識別する処理のフローチャート1600を示す。ステップ1602において、コンテンツアイテムの選択を、ジェスチャを用いて受け取り得る。例えば、上述したように、ユーザはコンテンツアイテムに対してスワイプ又はスワイプと一時停止を行う。ジェスチャは、選択されたコンテンツアイテムに対して実行されるべき1つ以上の行動を識別するために分析され得る。例えば、ステップ1604において、ジェスチャが一時停止の部分を含むかが判定され得る。ジェスチャは、クライアントデバイス202における入力アナライザ246によって分析され得る。ある実施形態では、入力データは、メッセージ管理サービス200によって直接受信されて分析され得る。
ステップ1606において、一時停止の部分に関連付けられた期間が判定され得る。期間は、クライアント202上の実質的に同じ位置においてどの程度接触が維持されたかに対応し得る。ステップ1608において、期間は、一時停止の部分に関連付けられた1つ以上の閾値と比較され得る。ある実施形態では、一時停止の部分に関連付けられた閾値は、ジェスチャの先行する部分に基づいて判定され得る。
ステップ1610において、期間が閾値より短い場合、処理はステップ1612に進み得、そして行動の第1の組からの行動が実行され得る。期間が閾値より長い場合、処理はステップ1614に進み得、そして行動の第2の組からの行動が実行され得る。上述したように、各行動の組からの行動は関連し得る。例えば、行動の第1の組はコンテンツアイテムをアーカイブすること、移動すること、又は削除することを含み、行動の第2の組は、後続する又は類似のコンテンツアイテムに対する行動の第1の組に基づくルールの生成を含み得る。行動の第1の組は、一時停止の部分に先行するジェスチャの部分に基づいて判定され得る。例えば、先行する横断部分(例えばスワイプ)は、横断部分によって横断する方向や距離に基づいて、様々な行動から選択され得る。
処理1600又はその一部は、新たなメッセージを受信したときに、及び/又はコンテンツアイテムがアップロードされた又は更新されたときに繰り返され得る。例えば、各コンテンツアイテムが受信されたとき、ユーザに提示されるコンテンツアイテムが更新され得る。ユーザは、コンテンツアイテムが利用可能になる順番に対応する必要がない、任意の順番でコンテンツアイテムとの相互作用を行い得、そして、ユーザがたまたまコンテンツアイテムに対して行動した場合はいつでも、ブロック1602−1614が特定のコンテンツアイテムに関して実行され得る。
以下に示される処理が具体例であると共に変形例及び修正が可能であることが理解される。時系列として示したステップは並列に実行されてもよく、ステップの順序は変更されてもよく、そして、ステップは変更され、統合され、追加され、又は省略されてもよい。処理900、1000、1100、1200、1300、1400、1500及び1600(又は同様の処理)は、ユーザの振る舞いと、推奨されるルールが成立したルールになるべきかについてのユーザの最終的な決定とに基づいて自動的に推奨されるルールと共に用いられ、動的なフィルタリングを実施し得る。例えば、処理900は、新たなメッセージが配信され、クライアントによって(又はユーザがクライアントと相互作用して)行動がなされるまで繰り返され得る。処理1000は一定のインターバルで(例えば、ある最小数の新たな行動がレポートされた後に)繰り返されて、推奨されるルールの組が更新され得る。従って、強い相関が検出された場合に、特定のルールが推奨されるルールになり得る。ユーザがルールを受け入れない場合、ルールは、強い相関が検出され続ける限り、推奨として残り得る。相関が弱くなる場合、推奨されるルールは、処理1000の動作によって推奨されるルールの組から取り消され得る。処理1100は、メッセージ管理サービス200から受信する各新たなメッセージに対して実行され得、処理1200はユーザが推奨されるルールを受け入れない場合に実行され得る。処理1300は、クライアントによって新たなメッセージが受信され、ユーザによって行動がなされるまで実行され得る。
以下に示す処理は、複数のクライアントデバイスにわたって統一的なフィルタリングの振る舞いを提供し得る。例えば、図2のイベント情報データストア242は、特定のユーザによって使用される全てのクライアントにわたるイベントを収集し得る。更に、成立したルールは同一のユーザに関連付けられた全てのクライアントにわたって適用され得るため、複数のクライアントを有するユーザは、各クライアントに対する同一のルールを再生成する時間を過ごす必要はない。
ある実施形態では、ユーザの振る舞いのパターンは、ユーザが操作している特定のクライアントと関連付けられ得る。例えば、ユーザは1日のあらゆる時間にモバイル電話(例えば図1のクライアント108)上でメッセージを再確認し、友人からのメッセージを、自宅でデスクトップコンピュータ(図1のクライアント110)を用いることができる時間、すなわちメッセージを読んで応答する時間まで後回ししたままにしてもよい。ある実施形態では、図2のパターンディテクタ238は、このパターンを検出し、ユーザがクライアント110を用いる次の時間まで、これらの送信者からのメッセージを後回しにするルールを提案し得る。
ある実施形態は、複数のメッセージングサービスのアカウントにわたる統一されたフィルタリングの振る舞いを提供し得る。例えば、上述したように、メッセージ管理サービス200は、複数のメッセージングサービス204a、204bのための仲介人として動作し得る。任意の数のメッセージングサービス204におけるユーザアカウントは、メッセージ管理サービス200における単一のユーザアカウントにリンクされ得る。このような場合、メッセージ管理サービス200は、複数のメッセージングサービスからのメッセージに関する、ユーザの振る舞いについての情報へのアクセスを有し得る。従って、メッセージ管理サービス200は、異なるメッセージングサービスから供給されたメッセージにわたるユーザの振る舞いの相関を検出し、フィルタリングルールを適切に推奨し得る。ある例では、ユーザの振る舞いはメッセージの供給元と関連付けられてもよい。例えば、ユーザは、仕事の電子メールアドレスで受信したメッセージを、個人の電子メールアドレスで受信したメッセージとは別に扱ってもよい。ある実施形態では、パターンディテクタ238は、メッセージの送信元に依存するパターンを検出し得、そして、他のフィルタリングルールはメッセージの送信元と独立であり得るが、フィルタリングルールのために定義されるトリガをかける条件が送信元を取り込み得る。
更に、ある実施形態はまた、メッセージの複数の種別にわたる統一されたフィルタリングの振る舞いを提供し得る。例えば、上述したように、メッセージ管理サービス200は複数のメッセージングサービス204a、204bに対する仲介人として動作し得、異なるメッセージングサービス204a、204bは同一の種別のメッセージ(例えば2つの異なる電子メールサービスプロバイダ)又は異なる種別のメッセージ(例えば電子メールサービスプロバイダとソーシャルネットワーキングサービスプロバイダ)を提供し得る。(異なる種別のメッセージをサポートするサービスを提供する)任意の数のメッセージングサービス204におけるユーザアカウントは、メッセージ管理サービス200における単一のユーザアカウントにリンクされ得る。このような場合、メッセージ管理サービス200は、異なる種別のメッセージに関する、ユーザの振る舞いについての情報へのアクセスを有し得る。メッセージ管理サービス200は、統一されたメッセージモデルを構成して、異なる種別のメッセージの取り扱いを容易にし得る。例えば、各メッセージは、メッセージ種別(例えば、電子メール、ソーシャルネットワークメッセージ、テキストメッセージ等)、送信者識別子(例えば電子メールアドレス、電話番号、名前等)、受信者識別子(例えば、1つ以上の電子メールアドレス、電話番号、名前等)、送信された日付及び時間、メッセージングサービスが受信した日付及び時間、件名(件名の欄を提供しないテキストメッセージのようなメッセージの種別では空欄であり得る)、及びメッセージボディのようなフィールドを有する、構造化されたデータオブジェクトとしてモデル化され得る。従って、個人間及び/又はグループの間の多種多様なコミュニケーションを含む、異なる種別のメッセージは、上述した方法で共に分析されて、現れた場合に結果として一貫したユーザの行動となる特徴の組を識別し得る。従って、メッセージ管理サービス200は、異なるメッセージの種別にわたるユーザの振る舞いの相関を検出し、フィルタリングルールを適切に推奨し得る。ある例では、ユーザの振る舞いはメッセージの種別と関連付けられてもよい。例えば、ユーザは、電子メールのメッセージを、テキストメッセージやソーシャルネットワークのメッセージとは別に扱ってもよい。ある実施形態では、パターンディテクタ238は、メッセージの種別に依存するパターンを検出し得、そして、他のフィルタリングルールはメッセージの種別と独立であり得るが、フィルタリングルールのために定義されるトリガをかける条件がメッセージの種別を取り込み得る。
上述したような処理は、ユーザの取り組みをほとんど又はまったく要することなく、フィルタリングルールが生成されるようにし得る。例えば、ユーザは、ルール定義用インタフェースにアクセスし、ルールのテンプレートを埋め、又は、ルールを定義することを目的とする明確な他の行動をとる必要はない。代わりに、ユーザが単純に適当だと思うようにメッセージに対する行動をとり、ユーザの行動において検出されたパターンに基づき、メッセージ管理サービスは、ユーザがメッセージに対してより効率的に行動できるようにし得るルールを識別し推奨し得る。推奨されるルールは、その妥当性を理解できるコンテクストにおいて(例えば、上述したように、実際にユーザが丁度メッセージに対してルールを適用したときに)ユーザに提供され得、ユーザは、現れた場合にはその推奨を単純に受け入れることによってルールを成立させることができる。更に、ユーザの承認の後にのみ推奨されるルールが成立したものになる実施形態では、ユーザは、ユーザが望み得ない、メッセージ管理サービスに独自に行動させる不愉快な体験を避けることができる。
本発明の開示に接する当業者は他の変更が可能であることを認識する。例えば、ある実施形態では、推奨されるルールは、メッセージを最初に読むことなく移動、後回し又はメッセージをアーカイブするような、ユーザの行動の特定の組に基づいて生成され得る。そのような実施形態では、メッセージに対して行動をとる前にユーザがメッセージを読んだ場合の出来事は、例えば、(例えば処理1000のブロック1002において)パターンディテクタ238のためのイベント記録を生成しないことによって、又はそのようなイベント記録を排除するためにプレフィルタリングを行うことによって、無視され得る。ユーザが行動をとる前にメッセージを読んだかどうかは、クライアント202によってヒューリスティックに判定され得、メッセージ管理サービスにイベント情報の一部としてレポートされ得る。例えば、ある実施形態では、ユーザが(メッセージを最初に開くことなく)インボックスのメッセージリストから直接的にメッセージに対して行動したか、メッセージに対して行動をとるより前に定められた期間(例えば、1秒又はそれ未満、又は2秒又はそれ未満)より短い間メッセージを開いたか、のいずれかである場合、メッセージは未読であると考えられ得る。クライアントは、ユーザが新たなメッセージを開いたときにタイマーを開始し、定められた期間より長い間メッセージを開いたままになっている場合にメッセージが既読であるとみなす。定められた期間は要望通りに選択され得、そして、ユーザが典型的なメッセージを読むためにどれくらい時間を要するかのような、ユーザの振る舞いの観察結果に基づき得る。
ある実施形態では、推奨されるルールの生成は、トリガをかける条件から起因するユーザの行動の一貫したパターンが検出され得ることによって、メッセージに対するあらゆるユーザの行動に拡張され得る。メッセージの移動、後回し、削除に関するルールについては、ルールを適用することは(例えば上述した例における)結果としてメッセージをクライアントへ配信しないことになるかもしれない。他の種別のルールについては、ルールを適用するメッセージは、ユーザにメッセージを提示することと関連して、クライアントがとるべき行動を示す行動メタデータとともにクライアントへ送信され得る。
例えば、ユーザが一貫して特定の送信者から受信したメッセージを特定の送信先に転送する場合、ルールは、その送信者からのあらゆるメッセージに対して、当該送信先に転送することをユーザに促すことが定められ得る。メッセージ管理サービス200は、当該送信先に転送することをユーザに促すことを示し、且つその送信先を識別する行動メタデータとともに、メッセージをクライアント202に送信し得る。ユーザがメッセージを開いた場合、クライアント202は、例えば、ユーザがそのメッセージを転送することを望むかどうかを尋ねるプロンプトを表示することにより、メッセージを転送するように促し得る。メッセージが転送されるべきであることをユーザが示した場合、クライアント202は、転送されるメッセージを準備して、自動的に送信するか、送信する前にユーザが転送されるメッセージを編集することを望む場合にユーザに提示するかのいずれかを行う。ある実施形態では、トリガをかける条件を満たすメッセージを常に転送するための推奨されるルールをユーザが受け入れた場合、その転送はメッセージ管理サービス200内に実装され得、メッセージとともに送信されるメタデータは、ルールの適用によってメッセージが転送された指標を含み得る。クライアントは、ユーザがメッセージを手動で転送する必要がないことを知るように、(例えばユーザがメッセージを開いた場合に)そのようにユーザに伝え得る。
他の例として、ユーザは特定の送信者(又は送信者の組)からのメッセージに、特定の特徴を有するメッセージで一貫して返信してもよい。例えば、ユーザは、後の日に実質的な応答が続き得る「確認しました」というショートメッセージで、ボスからのメッセージに即座に返信し得る。又は、ユーザは、箇条書き形式のアイテムのリストを伴う「ストアに向かっています、何か必要ですか?」という配偶者からのメッセージを繰り返し受信し得る。ある実施形態では、メッセージ管理サービス200は返信を分析して、返信メッセージ内の特定の特徴と返信されるメッセージの特徴との間の相関を検出し得る。受信したメッセージのトリガをかける特徴と、返信メッセージの特定の特徴(例えば、内容及び/又は形式)との間の相関が検出された場合、ルールは、トリガをかける特徴を有するあらゆるメッセージに対して、トリガをかける特徴と関連した特徴を有するメッセージとともに返信をユーザに促すべきということが定義され得る。メッセージ管理サービス200は、当該送信先に転送することをユーザに促すことを示し且つユーザがメッセージに返信するよう促されることを示す行動メタデータとともに、メッセージをクライアント202に送信し得る。ユーザがメッセージを開いた場合、クライアント202は、例えば、ユーザがそのメッセージに返信することを望むかどうかを尋ねるプロンプトを表示することにより、メッセージに返信するように促し得る。プロンプトは、ユーザがこのプロンプトを受け入れた場合に返信に自動的に含まれ得る任意の特徴を示しうる。ユーザがプロンプトを受け入れる場合、クライアント202は、自動的な特徴を取り入れた返信メッセージを準備して、自動的に送信するか、送信する前にユーザが返信されるメッセージを編集することを望む場合にユーザに提示するかのいずれかを行う。
トリガをかける条件と結果として生じる行動とは、要望通り豊富に又は要望通り複雑性を少なく定義され得る。ある実施形態では、トリガをかける条件はメッセージ内における1つの特徴の存在又は欠如(例えば、特定の送信者、又は件名における特定の語)に基づき得る。他の実施形態では、トリガをかける条件はメッセージの特徴の組み合わせを取り込み得る。例えば、「クーポンに関する」語の組が識別され得る。このような語は、「クーポン」又は「値引き」のような単一の語、又は、「[パーセント]節約」や「[ドルの量]引き」等を構成する複数の語を含み得る。トリガをかける条件は、特定の送信者と組み合わせた、メッセージ内の1つ以上のクーポンに関連する語の出現に基づき得、又は、特定の形式(例えばHTML)のメッセージと組み合わせた、ある最低限の数のクーポンに関連する語(例えばそのような語の3つ以上)の組み合わせに基づき得る。
同様に、結果として生じる行動の複雑さは変化し得、メッセージ管理サービス200によってサポートされる任意の動作は結果として生じる行動になり得る。例えば、あるメッセージ管理サービスは、後回し終了条件が発生するとき、すなわちメッセージがユーザに提示され得る(例えばインボックスに回復する)ときまで、メッセージを後回しにするための機能(ユーザのインボックスからメッセージを一時的に削除し得る)を提供し得る。ルールがメッセージを後回しにするために定義された場合、後回し終了条件は様々な基準に基づいて定義され得る。上述の例は、夜又は週末までメッセージを後回しにするような一時的な基準に言及するものである。メッセージ管理サービス200は、内部クロック及び/又は外部クロックを参照することによって、そのような基準が満たされたかを検出し得る。他のルールは、特定の時間よりも特定のユーザ(又はクライアント)コンテクストの検出に基づく基準を使用し得る。例えば、ルールは、ユーザ(又はクライアント)が家又はオフィスのような特定の場所に存在するまでメッセージを後回しにし得る。ある実施形態では、メッセージ管理サービスは位置に基づく条件が発生したかを判定するために、クライアントから位置情報を受信してその位置情報を使用し得る。他の例として、ルールは、ユーザが特定のクライアントデバイス(例えばモバイル電話よりもデスクトップコンピュータ)を操作するまでメッセージを後回しにし得、メッセージ管理サービスは、クライアント固有の条件が発生したかを判定するために、特定のクライアント上の活動を検出してクライアント識別情報を使用し得る。他の例として、ユーザが、例えばユーザのカレンダデータに基づいて判定され得る「暇(free)」になるまでメッセージを後回しにし得る。ある実施形態では、クライアントはカレンダデータ又はカレンダデータに基づく「暇/多忙」の指標を、データを使用してユーザが暇であるかを判定するメッセージ管理サービスに提供し得る。ルールは、ユーザが特定の他の人又はデバイスに近接した状態になるまで、メッセージを後回しにし得る。ある実施形態では、クライアントは付近で検出されたデバイス(例えば同一のWi−Fiネットワーク上の他のデバイス)をレポートし、メッセージ管理サービスは、後回し終了条件が発生したかを判定するために、そのようなレポートを使用し得る。或いは、メッセージ管理サービスは複数のクライアントデバイスと通信して各クライアントデバイスから位置のレポートを受信し、2つのクライアントデバイスの近接が、クライアントデバイスが互いに通信し又は互いに認識すること無く、位置のレポートに基づいて判定され得る。
ある実施形態では、結果として生じる行動は、部分的又は全体的なメッセージの特性に基づいて定義され得、当該結果として生じる行動は、繰り返し行う行動よりもユーザが好む行動であり得る。例えば、ユーザは、配布物や他のコンテンツがメッセージとして受信者のグループに定期的に送信され、ニュースレター又は他のある購読料で運営するサービスを購読してもよく、送信者は、配信停止の方法、例えば配信停止のリクエストのためのアドレスを提供するメッセージの最後の行、を示す指示を各メッセージ(又は配布物)に含めてよい。メッセージ管理サービス200は、ユーザが特定の購読のニュースレターメッセージを読むこと無く一貫して削除するパターンを検出し得る。パターンは、送信者、件名、受信者のリスト、書式設定、及び/又はメッセージとして送信されるニュースレターの配布物にわたって一貫し得る他の特性に基づいて、検出され得る。ある実施形態では、メッセージ管理サービス200は将来の配布物を自動的に削除するルールを推奨し得る。他の実施形態では、メッセージ管理サービス200は、配信停止の指示を提供するルールによって、削除され得るメッセージを検出し得、メッセージを単に削除するよりもニュースレターの配信を停止するようにユーザを促し得る。ユーザがプロンプトを受け入れる場合、メッセージ管理サービス200は、メッセージ内の指示に基づいて、配信を停止するリクエストを自動的に生成し得る。ある実施形態では、さらに、送信されるべきメッセージを検証したり、ウェブサイトにおいてリクエストを確認したりするなど、ユーザ相互作用が配信停止の処理に取り込まれてもよい。他の例として、ある実施形態では、メッセージ管理サービス200は、ユーザの配信停止の振る舞い(例えば、特定の特徴を有するニュースレタータイプのメッセージに応答して、ユーザが配信停止のメッセージを一貫して送信する)を検出し得、これらの特徴を有する他のニュースレタータイプのメッセージの配信停止を推奨するルールを生成し得る。ルールが適用される場合、メッセージ管理サービス200は、ユーザが配信を停止するよう促されることを示す行動メタデータとともに、メッセージをクライアント202に送信し得る。
以下に説明されるユーザインタフェースは変更もされ得る。ある実施形態では、追加的なユーザインタフェースが実施され得る。例えば、クライアントデバイスを操作するユーザは、メッセージ管理サービスからの推奨に独占的に頼る代わりに、ルールを手動で定義できてよい。ある実施形態では、(例えば図4Bに示した)メッセージを移動するためのジェスチャを行うユーザは、長期間(例えば1秒、2秒等)にわたって最後の状態でジェスチャを一時停止して、ジェスチャがルールとして適用されるべきであることを示し得る。ジェスチャを一時停止することは、結果してクライアントにダイアログボックスを表示させ、(図4C又は図5Bと同様に)ルールを成立させるべきであることの確認をとり得る。ユーザが確認した場合、クライアントは、新たなルールの記述をメッセージ管理サービスに送信して、ルールが全てのユーザのクライアントデバイスとメッセージングアカウントとにわたって適用されるようにし得る。
ある実施形態では、ユーザインタフェースは、ユーザがルールを提示し、変更し、削除するためにアクセスし得る設定ページ等を含み得る。例えば、ある設定ページは、クライアントが情報をリクエストすることによってメッセージ管理サービスから得られうる、現在成立しているルールのリストを提示し得る。このリストは、ユーザがルールを編集し又は削除し得るオプション(例えばボタン又はジェスチャ)を提供し得る。他の例として、他の設定ページは、(上述したように)メッセージ管理サービスによって生成されたものであるがまだユーザによって受け入れられたり、拒否されていない、推奨されるルールのリストを提示し得、ユーザはリストと相互作用することによってルールを受け入れたり拒否したりし得る。更なる他の例として、設定ページは、ルールの推奨される特徴を有効又は無効にするための、又は、そうでなければ推奨生成の振る舞いをカスタマイズするためのオプションを提供し得る。
ある実施形態では、システムは、ユーザへの少なくとも1つのメッセージに対して実行されるべき行動に対応するジェスチャ入力を受け取るユーザ入力手段と、実行されるべき行動を識別するためにジェスチャ入力を分析する入力分析手段と、分析に基づいて、行動に関する選択可能なオプションのリストを表示する表示手段であって、少なくとも1つのメッセージに関連付けられたデータの選択をユーザインタフェース手段を介して受け取る、表示手段と、メッセージ管理サービスと通信するクライアントインタフェース手段であって、通信が、少なくとも1つのメッセージに関連付けられたデータの選択を、データの選択に基づいてルールを定義するためにメッセージ管理サービスへ送信することを含む、クライアントインタフェース手段と、を含み得る。
ある実施形態では、入力分析手段は更に、横断部分に関連付けられた行動の第1の組を識別し、行動の第1の組に基づいて、一時停止部分に関連付けられた行動の第2の組を識別するように構成される。ある実施形態では、横断部分に関連付けられた行動の第1の組を識別することは、更に、横断部分に関連付けられた長さと方向とを判定し、長さと方向とに基づいて行動の第1の組を識別することを含む。ある実施形態では、入力分析手段は更に、一時停止部分に関連付けられた時間を判定し、一時停止部分に関連付けられた時間を閾値と比較し、時間が閾値より短い場合に行動の第1の組から実行されるべき行動を選択し、時間が閾値より長い場合に行動の第2の組から実行されるべき行動を選択するように構成される。
以下に説明される様々な操作は一般的な従来型のデザインであり得るコンピュータシステム上で実施され得る。図17は、本発明のある実施形態を実施するために用いることのできる代表的なサーバシステム1700とクライアントコンピュータシステム1714との簡略化されたブロック図を示す。様々な実施形態において、サーバシステム1700又は同様のシステムは、メッセージ管理サービス200、メッセージングサービス204、又は他のサービス若しくは以下に記載される又はその一部であるサーバを実施し得る。クライアントコンピュータシステム1714又は同様のシステムは、クライアントデバイス202又は以下で説明される他のクライアントを実施し得る。
サーバシステム1700は、2つのモジュール1702が示されるが任意の数が提供され得る、多数のモジュール1702(例えばブレードサーバ実装におけるブレード)を組み込んだモジュールデザインを有し得る。各モジュール1702は(複数の)処理ユニット1704とローカルストレージ1706とを含み得る。
(複数の)処理ユニット1704は、1つ以上のコアを有し得る単一のプロセッサ、又は複数のプロセッサを含み得る。ある実施形態では、(複数の)処理ユニット1704は、グラフィックスプロセッサ、デジタルシグナルプロセッサ等のような1つ以上の特定用途向けコプロセッサだけでなく、汎用1次プロセッサをも含み得る。ある実施形態では、いくつか又は全ての処理ユニット1704は、特定用途向け集積回路(ASICs)、フィールド・プログラマブル・ゲート・アレイ(FPGAs)などのカスタマイズされた回路を用いて実装され得る。ある実施形態では、そのような集積回路は回路自体に格納された命令を実行する。他の実施形態では、(複数の)処理ユニット1704はローカルストレージ1706に格納された命令を実行し得る。任意の組み合わせにおける任意の種別のプロセッサは(複数の)処理ユニット1704に含まれ得る。
ローカルストレージ1706は、揮発性の記録媒体(例えば従来型のDRAM、SRAM、SDRM等)及び/又は不揮発性の記録媒体(例えば磁気又は光ディスク、フラッシュメモリ等)を含み得る。ローカルストレージ1706内に組み込まれた記録媒体は、要求通りに固定、取り外し可能、又は更新可能であり得る。ローカルストレージ1706は、システムメモリ、リードオンリーメモリ(ROM)、永続的なストレージデバイスのような物理的又は論理的に分割された様々なサブユニットであり得る。システムメモリは、動的なランダムアクセスメモリのような、読み書きメモリデバイス、又は、揮発性の読み書きメモリであり得る。システムメモリは、(複数の)処理ユニット1704がランタイムにおいて必要とする、いくつかの又は全ての命令とデータとを格納し得る。ROMは、(複数の)処理ユニット1704によって必要とされる、静的なデータ及び命令を格納し得る。永続的なストレージデバイスは、モジュール1702が電源を切った状態である場合であっても命令とデータを格納し得る、不揮発性の読み書きメモリデバイスであり得る。ここで用いられる「記録媒体」の語は、データが永久に(上書き、電気的障害、停電等の影響をうける)格納され得る任意のメディアを含み、キャリア波及び、無線や有線で接続されて伝達される一時的な電気信号は含まない。
ある実施形態では、ローカルストレージ1706は、図2のメッセージ管理モジュール212、メッセージングサービスインタフェース214、及び/又はクライアントインタフェース210、又は図1のメッセージングシステム100に関連付けられた任意の他のサーバの機能などの、様々なサーバ機能を実施するオペレーティングシステム及び/又はプログラムなどの、(複数の)処理ユニット1704によって実行される1つ以上のソフトウェアプログラムを格納し得る。「ソフトウェア」は、一般に、(複数の)処理ユニット1704によって実行された場合にサーバシステム1700(又はその一部)に様々な動作を実行させる一連の命令を指し、従って、ソフトウェアプログラムの動作を実行し動作させる1つ以上の特定の機械的な実装を定義する。命令は、読み出し専用メモリに存在するファームウェア、及び/又は、(複数の)処理ユニット1704による実行のために揮発性のワーキングメモリに読み出され得る、不揮発性記録媒体に格納されるプログラムコードとして格納され得る。ソフトウェアは、単一のプログラム又は別々のプログラムの集合、又は適切に相互作用するプログラムモジュールとして実装され得る。ローカルストレージ1706(又は上述した非ローカルストレージ)から、(複数の)処理ユニット1704は、上述した様々な動作を実行するために、実行するプログラム命令と処理するデータとを検索し得る。
あるサーバシステム1700では、複数のモジュール1702が、バスを介して、又は、モジュール1702とサーバシステム1700の他のコンポーネントとの間の通信をサポートするローカル・エリア・ネットワークを形成する他の内部接続1708を介して相互に接続され得る。内部接続1708は、サーバラック、ハブ、ルータ等を含む様々な技術を用いて実装され得る。
ワイド・エリア・ネットワーク(WAN)インタフェース1710は、ローカル・エリア・ネットワーク(内部接続1708)と、インターネットの様なより大きなネットワークとの間のデータ通信能力を提供し得る。有線(例えば、イーサネット、IEEE802.3標準)及び/又は無線技術(例えば、Wi−Fi、IEEE802.11標準)を含む、従来型の又は他の通信技術が用いられ得る。
ある実施形態では、ローカルストレージ1706は、(複数の)処理ユニット1704に対するワーキングメモリを提供することが意図されており、内部接続1708のトラフィックを低減する一方で、処理されるべきプログラム及び/又はデータへの高速なアクセスを提供し得る。内部接続1708に接続し得る、1つ以上のマスストレージサブシステム1712によって、より多くの量のデータのためのストレージがローカル・エリア・ネットワーク上に提供され得る。マスストレージサブシステム1712は、磁気、光学、半導体又はその他のデータ記録媒体に基づき得る。ダイレクト・アタッチド・ストレージ、ストレージ・エリア・ネットワーク、ネットワーク・アタッチド・ストレージ等が使用され得る。任意のデータストア、又は、サービスやサーバによって生産され、消費され又は維持されるものとして以下で説明するデータの他のコレクションは、マスストレージサブシステム1712内に格納され得る。ある実施形態では、追加的なデータストレージリソースは、(潜在的にレイテンシーが増加する)WANインタフェース1710を介してアクセス可能であり得る。
サーバシステム1700は、WANインタフェース1710を介して受信したリクエストに応答して動作し得る。例えば、モジュール1702の1つは管理機能を実施し、受信したリクエストに応答して他のモジュール1702に別々のタスクをアサインし得る。従来型のワーク割り当て技術が使用され得る。リクエストが処理されると、結果はWANインタフェース1710を介してリクエスト元に返信され得る。このような動作は一般的に自動化され得る。更に、ある実施形態では、WANインタフェース1710は、複数のサーバシステム1700と互いに接続することができ、大量の動作を扱うことができるスケーラブルなシステムを提供する。サーバシステム及びサーバファーム(協調するサーバシステムの集合)を管理する従来型又は他の技術が使用され得、動的なリソースの割り当て及び再割り当てが組み込まれる。
サーバシステム1700は、インターネットなどのワイドエリアネットワークを介して、様々なユーザ所有の又はユーザが操作するデバイスと相互作用し得る。ユーザが操作するデバイスの例は、コンピューティングシステム1714として図17に示されている。クライアントコンピューティングシステム1714は、例えば、スマートフォン、他のモバイル電話、タブレットコンピュータ、ウェアラブルコンピューティングデバイス(例えばスマートウォッチ、アイグラス)、デスクトップコンピュータ、ラップトップコンピュータ等のようなコンシューマデバイスとして実施され得る。
例えば、クライアントコンピューティングシステム1714は、WANインタフェース1710を介して通信し得る。クライアントコンピューティングシステム1714は、(複数の)処理ユニット1716、ストレージデバイス1718、ネットワークインタフェース1720、ユーザ入力デバイス1722、及びユーザ出力デバイス1724のような従来型のコンピュータコンポーネントを含み得る。クライアントコンピューティングシステム1714は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、他のモバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス等のような、様々なフォームファクタで実施されたコンピューティングデバイスであり得る。
プロセッサ1716とストレージデバイス1718は、(複数の)処理ユニット1704と、上述したローカルストレージデバイス1706と同様であり得る。クライアントコンピューティングシステム1714に属すために、適切なデバイスが要求に基づいて選択され得、例えば、クライアントコンピューティングシステム1714は、処理能力が制限された「シン」クライアントとして、又は高電力のコンピューティングシステムとして実装され得る。クライアントコンピューティングシステム1714は、(複数の)処理ユニット1716によって実行されるプログラムコードを用いてセットアップされ、メッセージへアクセスすること、メッセージに対する行動を実行すること、及び他の相互作用など、メッセージ管理サービスのサーバシステム1700との様々な相互作用が可能になり得る。あるクライアントコンピューティングシステム1714はまた、メッセージ管理サービスとは独立したメッセージングサービスと相互作用を行い得る。
ネットワークインタフェース1720は、サーバシステム1700のWANインタフェース1710も接続されているワイド・エリア・ネットワーク(例えばインターネット)との接続を提供し得る。様々な実施形態では、ネットワークインタフェース1720は有線インタフェース(例えばイーサネット)及び/又は、Wi−Fi、Bluetooth又は携帯データネットワーク標準(例えば3G、4G、LTE等)のような様々なRFデータ通信標準を実施する無線インタフェースを含み得る。
ユーザ入力デバイス1722は、ユーザがクライアントコンピューティングシステム1714へ信号を提供することができる任意のデバイス(複数のデバイス)を含み得、クライアントコンピューティングシステム1714は、当該信号を、特定のユーザのリクエスト又は情報を示すものとして解釈し得る。様々な実施形態において、ユーザ入力デバイス1722は、キーボード、タッチパッド、タッチスクリーン、マウス又は他のポインティングデバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーバッド、マイクロフォン等の、いくつか又は全てを含み得る。
ユーザ出力システム1724は、クライアントコンピューティングシステム1714がユーザに情報を提供することができる任意のデバイスを含み得る。例えば、ユーザ出力デバイス1724は、クライアントコンピューティングシステム1714によって生成された又はクライアントコンピューティングシステム1214に配信された画像を表示するためのディスプレイを含み得る。ディスプレイは様々な画像生成技術、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)を含む発光ダイオード(LED)、投影システム、ブラウン管(CRT)などを、支援するエレクトロニクス(例えば、デジタルアナログ又はアナログアナログ変換、信号プロセッサなど)と共に組み込み得る。ある実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含み得る。ある実施形態では、ディスプレイに加えて若しくは代わりに、他のユーザ出力デバイス1724が提供され得る。例にはインジケータライト、スピーカ、触覚「ディスプレイ」装置、プリンタ等を含む。
ある実施形態は、マイクロプロセッサ、ストレージ、及び、コンピュータで読み出し可能な記録媒体内のコンピュータプログラムの命令を格納するメモリのような電子部品を含む。本明細書において説明された多くの特徴は、コンピュータで読み出し可能な記録媒体上にエンコードされたプログラムの命令の組として特定されるプロセスとして実施され得る。これらのプログラムの命令が1つ以上のプロセッシングユニットによって実行される場合、これらのプログラムの命令は、プログラムの命令に示されている様々な動作を(複数の)プロセシングユニットに実行させる。プログラムの命令又はコンピュータコードの例は、コンパイラによって生成されたような機械コードと、コンピュータや電子部品やインタプリタを用いるマイクロプロセッサによって実行される、より高レベルなコードを含んだファイルとを含む。適切なプログラミングを通じて、(複数の)プロセッシングユニット1704と1716とは、サーバシステム1700とクライアントコンピューティングシステム1714のための様々な機能を提供し得、様々な機能は、サーバ又はクライアントによって実行される機能として、又はメッセージ管理サービスに関連付けられた他の機能として、以下で説明される任意の機能を含む。
システム1700及びクライアントコンピューティングシステム1714が具体例であると共に変形例及び修正が可能であることが理解される。本発明の実施形態と関連して用いられるコンピューティングシステムは、特にここで説明されないときは他の機能を有し得る。更に、サーバシステム1700とクライアントコンピューティングシステム1714とは特定のブロックを参照して説明されたが、これらのブロックは説明の便宜のために定義されたものであり、コンポーネント部分の特定の物理的な配置を暗示することを意図したものではないことが理解されるべきである。例えば、異なるブロックは、同一のサーバラック内や同一のファシリティ内、又は同一のマザーボード上に配置され得るが必須ではない。更に、ブロックは物理的に別々な部品に対応する必要はない。ブロックは、例えば、プロセッサをプログラムし又は適切な制御回路を提供することによって、様々な動作を実行するように構成され得、そして、様々なブロックは、どのような初期設定が与えられるかに応じて再構成されたり再構成されなかったりし得る。本発明の実施形態は、回路とソフトウェアの任意の組み合わせを用いて実施される電子デバイスを含む、様々な装置で実現され得る。
本発明は特定の実施形態に関して説明されたが、当業者は多数の変形が可能であることを理解する。例えば、(トリガをかける条件及び/又は結果として生じる行動を含む)ルールと、推奨されるルールを生成する処理の特定の例とが説明されたが、他のルールと処理とが実施され得る。本発明の実施形態は、ここで説明された特定の例に限定されたものだけでなく、様々なコンピュータシステムと通信技術とを用いて実現され得る。
本発明の実施形態は、専用の部品及び/又はプログラム可能なプロセッサ及び/又は他のプログラム可能なデバイスの任意の組み合わせを用いて実現され得る。ここで説明された様々な処理は、同一のプロセッサ又は任意の組み合わせにおける異なるプロセッサ上で実施され得る。部品がある動作を実行するように構成されているとして説明された場合、このような構成は、例えば、その動作を実行するように電子回路を設計することにより、その動作を実行するようにプログラム可能な(マイクロプロセッサのような)電子回路をプログラムすることにより、又はこれらの任意の組み合わせにより、達成され得る。更に、上述の実施形態が特定のハードウェアとソフトウェアコンポーネントとを参照し得るが、当業者は、ハードウェア及び/又はソフトウェアコンポーネントの異なる組み合わせも用いられること、及び、ハードウェアに実装されるものとして説明された特定の動作もソフトウェアで実施され得る又はその逆もあることを理解する。
本発明の様々な特徴が組み込まれたコンピュータプログラムは、エンコードされて様々なコンピュータで読み出し可能な記録媒体に格納されてもよく、適切な媒体は磁気ディスク又はテープ、コンパクトディスク(CD)又はDVD(デジタル多用途ディスク)のような光学的記録媒体、フラッシュメモリ、及び他の不揮発性の媒体を含む。プログラムコードとともにエンコードされたコンピュータで読み書き可能な媒体は、互換性のある電子デバイスとパッケージ化され得、又は、プログラムコードは、電子デバイスとは別々に(例えば、インターネットのダウンロードを介して、又は、パッケージ化されたコンピュータで読み出し可能な記録媒体とは別なものとして)提供され得る。
従って、本発明は特定の実施形態に関して説明されたが、本発明は以下の請求項の範囲内にある全ての変形及び均等な構成を包含することが意図されていることが理解される。