(57)【特許請求の範囲】
【請求項１】
提案アイテムを提供するためのコンピュータ実装方法であって、
チャットインタフェースを第１のユーザデバイスにより表示させることであって、前記チャットインタフェースは、メッセージングアプリケーションによって生成され、前記チャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、前記１つまたは複数のメッセージは、ネットワークを介して前記チャット会話に参加している複数のユーザデバイスにより提供されるものである、前記チャットインタフェースを第１のユーザデバイスにより表示させること、
前記チャットインタフェースに関連する組み込みインタフェースを表示させることであって、前記組み込みインタフェースは、前記メッセージングアプリケーションに関連して前記第１のユーザデバイス上で少なくとも部分的に実行される第１の組み込みアプリケーションによって提供されるものである、前記チャットインタフェースに関連する組み込みインタフェースを表示させること、
前記チャット会話に参加している複数のユーザデバイスのうちの１つまたは複数において特定のイベントが発生したことを示す受信データに基づいて、示唆イベントが前記第１の組み込みアプリケーションに関連して発生したと判定することであって、前記複数のユーザデバイスのうちの１つまたは複数は、前記第１のユーザデバイスとは異なるものである、前記判定すること、
前記示唆イベントに基づいて１つまたは複数の提案応答アイテムを取得すること、
前記１つまたは複数の提案応答アイテムを前記第１のユーザデバイスによって表示させること、
前記１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、
前記ユーザ入力に応答して、前記第１の組み込みアプリケーションにコマンドを提供すること
を含み、前記コマンドは、前記選択された提案応答アイテムに関連付けられており、前記コマンドは、前記第１の組み込みアプリケーションの状態の変化を引き起こし、前記状態の変化は、前記チャット会話に参加している複数のユーザデバイスのうちの１つまたは複数の他のユーザデバイスに対し示されており、
前記第１の組み込みアプリケーションへの前記コマンドは、
前記第１の組み込みアプリケーションによって実装されるゲームにおいてアクションを実行するための第１のコマンド、
前記第１の組み込みアプリケーションによるメディアデータの再生における再生位置を変更するための第２のコマンド、または
前記第１の組み込みアプリケーションによって提供された共有オブジェクトを変更するための第３のコマンド
のうちの少なくとも１つを含む、コンピュータ実装方法。
【請求項２】
前記特定のイベントは、
前記複数のユーザデバイスのうちの１つまたは複数の、関連するチャットインタフェースによって受信されたユーザ入力、
前記複数のユーザデバイスのうちの１つまたは複数の、関連する組み込みインタフェースによって受信されたユーザ入力、または
前記複数のユーザデバイスのうちの１つまたは複数で実行されている関連する組み込みアプリケーションで発生している組み込みアプリケーションイベント
のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記特定のイベントが発生したことを示す前記受信データは、
前記複数のユーザデバイスのうちの１つまたは複数によって再生されているメディアアイテムに表示されているコンテンツ特徴のタイプ、
前記複数のユーザデバイスのうちの１つまたは複数のゲームにおける所定の目的の達成、
前記チャット会話に参加している受信側ユーザデバイスによって受信されたユーザ入力であって、前記受信側ユーザデバイスに表示された異なる組み込みインタフェースにおいて受信された前記ユーザ入力、または
前記複数のユーザデバイスのうちの特定のユーザデバイスからの前記第１の組み込みアプリケーションの開始
のうちの少なくとも１つを示す、請求項１または２に記載のコンピュータ実装方法。
【請求項４】
前記特定のイベントは、前記複数のユーザデバイスのうちの１つまたは複数のそれぞれのユーザによって前記チャット会話に入力された１つまたは複数のメッセージを含み、前記示唆イベントは、前記１つまたは複数のメッセージ内の、１つまたは複数の事前定義されたトピック、単語、またはフレーズのうちの少なくとも１つを検出することに基づいて判定される、請求項１乃至３のいずれか一項に記載のコンピュータ実装方法。
【請求項５】
前記示唆イベントに基づいて１つまたは複数の提案応答アイテムを取得することは、
前記少なくとも１つの提案応答アイテムの前記示唆イベントとの１つまたは複数の事前定義された関連付け、
特定の示唆イベントおよび前記特定の示唆イベントに応答して入力された応答でトレーニングされたモデル、または
前記第１の組み込みアプリケーションによって提供されたゲームで使用される複数のルールまたは目的のうちの１つまたは複数
のうちの少なくとも１つに基づいて、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つの提案応答アイテムを決定することを含む、請求項１乃至４のいずれか一項に記載のコンピュータ実装方法。
【請求項６】
前記チャット会話において選択されたメッセージを出力すること
をさらに含み、前記選択されたメッセージは、前記選択された提案応答アイテムに関連付けられている、請求項１乃至５のいずれか一項に記載のコンピュータ実装方法。
【請求項７】
前記１つまたは複数の提案応答アイテムは、前記第１の組み込みアプリケーションに対する１つまたは複数の提案コマンドと、前記チャットインタフェースにおいて前記チャット会話に出力されるべき１つまたは複数の提案メッセージとを含み、前記１つまたは複数の提案コマンドは、前記チャットインタフェースに表示される場合に前記１つまたは複数の提案メッセージと視覚的に区別されている、請求項１乃至６のいずれか一項に記載のコンピュータ実装方法。
【請求項８】
前記１つまたは複数の提案応答アイテムは、
前記第１の組み込みアプリケーション、
前記メッセージングアプリケーション、または
前記ネットワークを介して前記メッセージングアプリケーションと通信するリモートサーバ
のうちの少なくとも１つによって決定される、請求項１乃至７のいずれか一項に記載のコンピュータ実装方法。
【請求項９】
前記第１の組み込みアプリケーションは、前記組み込みインタフェースにおいてビデオデータの表示された再生を引き起こすメディアプレーヤアプリケーションであり、前記組み込みインタフェースは、前記ビデオデータの表示された再生を制御するユーザからの入力を受信するように構成されており、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つは、前記ビデオデータの表示された再生を調整するように動作可能な１つまたは複数の提案再生コマンドを含む、請求項１乃至８のいずれか一項に記載のコンピュータ実装方法。
【請求項１０】
前記第１の組み込みアプリケーションは、前記組み込みインタフェースにおいてゲームデータを表示させるゲームアプリケーションであり、前記組み込みインタフェースは、前記ゲームアプリケーションの１つまたは複数の状態を変化させるユーザからの入力を受信するように構成されており、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つは、前記ゲームアプリケーションの少なくとも１つの状態を修正するように動作可能な１つまたは複数の提案コマンドを含む、請求項１乃至９のいずれか一項に記載のコンピュータ実装方法。
【請求項１１】
前記第１の組み込みアプリケーションは、前記組み込みインタフェースにおいて共有ドキュメントを表示させる共有ドキュメントアプリケーションであり、前記組み込みインタフェースは、前記共有ドキュメントの１つまたは複数のアイテムを変化させるユーザからの入力を受信するように構成されており、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つは、前記共有ドキュメントを修正するように動作可能な１つまたは複数の提案コマンドを含む、請求項１乃至１０のいずれか一項に記載のコンピュータ実装方法。
【請求項１２】
システムであって、
メモリと、
前記メモリにアクセスするように構成され、かつ動作を実行するように構成された少なくとも１つのプロセッサと
を備え、前記動作は、
チャットインタフェースを第１のユーザデバイスにより表示させることであって、前記チャットインタフェースは、メッセージングアプリケーションによって生成され、前記チャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、前記１つまたは複数のメッセージは、ネットワークを介して前記チャット会話に参加している複数のユーザデバイスにより提供されるものである、前記チャットインタフェースを第１のユーザデバイスにより表示させること、
前記チャットインタフェースに関連する組み込みインタフェースを表示させることであって、前記組み込みインタフェースは、前記メッセージングアプリケーションに関連して実行される第１の組み込みアプリケーションによって提供され、前記第１の組み込みアプリケーションは、前記第１のユーザデバイス上で少なくとも部分的に実行される、前記チャットインタフェースに関連する組み込みインタフェースを表示させること、
前記複数のユーザデバイスのうちの、前記第１のユーザデバイスとは異なる第２のユーザデバイスで特定のイベントが発生したことを示す受信データに基づいて、前記第１の組み込みアプリケーションの使用に関連して示唆イベントが発生したことを判定することであって、前記特定のイベントは、前記第１の組み込みアプリケーションに対応する第２の組み込みアプリケーションで発生するものである、前記判定すること、
前記示唆イベントに応答する１つまたは複数の提案応答アイテムを取得すること、
前記１つまたは複数の提案応答アイテムを前記第１のユーザデバイスによって表示させること
を含み、前記１つまたは複数の提案応答アイテムは、それぞれ、前記メッセージングアプリケーションに、
前記第１の組み込みアプリケーションの１つまたは複数の状態を変更するための関連コマンドを提供すること、または
前記チャット会話に参加している複数のユーザデバイスによって、前記チャット会話に関連メッセージを表示させること
のうちの少なくとも１つを行わせるために、前記第１のユーザデバイスの第１のユーザによって選択可能である、システム。
【請求項１３】
前記示唆イベントが発生したことを判定する動作は、前記複数のユーザデバイスのうちの前記第２のユーザデバイスが、前記第２の組み込みアプリケーションを起動して、前記第１の組み込みアプリケーションのために提供された組み込みセッションに参加したことを判定することに基づいている、請求項１２に記載のシステム。
【請求項１４】
プロセッサによって実行されると、プロセッサに動作を実行させるソフトウェア命令を格納する非一時的コンピュータ可読媒体であって、前記動作は、
示唆イベントが、関連するユーザデバイス上で少なくとも部分的に実行される複数の対応する組み込みアプリケーションのうちの少なくとも１つの組み込みアプリケーションの使用に関連して発生したことを判定することであって、各組み込みアプリケーションは、前記関連するユーザデバイス上で実行されるメッセージングアプリケーションに関連して実行され、各メッセージングアプリケーションは、関連するチャットインタフェースを前記関連するユーザデバイスによって表示させるように構成されており、前記関連するチャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、前記関連するユーザデバイスは、ネットワークを介して前記チャット会話に参加している、前記判定すること、
前記示唆イベントに応答する１つまたは複数の提案応答アイテムを取得すること、
前記関連するユーザデバイスのうちの少なくとも１つの関連するユーザデバイスによって前記１つまたは複数の提案応答アイテムを表示させること
を含み、前記１つまたは複数の提案応答アイテムは、それぞれ、
前記複数の対応する組み込みアプリケーションの１つまたは複数の状態を変更するための関連コマンドを提供すること、または
前記チャット会話に参加している前記関連するユーザデバイスにより前記チャット会話における関連するメッセージを表示させること
のうちの少なくとも１つのために、前記少なくとも１つの関連するユーザデバイスのそれぞれのユーザからのユーザ入力によって選択可能であり、
前記示唆イベントが発生したことを判定する動作は、前記関連するユーザデバイスのうちの、前記少なくとも１つの関連するユーザデバイスとは異なるユーザデバイスにおいて特定のイベントが発生したことを示す受信データに基づいて、前記示唆イベントが前記少なくとも１つの組み込みアプリケーションの使用に関連して発生したことを判定することを含む、非一時的コンピュータ可読媒体。
【請求項１５】
前記１つまたは複数の状態は、１つまたは複数の第２の状態であり、前記示唆イベントが発生したことを判定する動作は、前記対応する組み込みアプリケーションのうちの少なくとも１つによって受信されるユーザ入力、または前記対応する組み込みアプリケーションの１つまたは複数の第１の状態を変更する前記メッセージングアプリケーションのうちの少なくとも１つによって受信されるユーザ入力のうちの少なくとも１つに基づいている、請求項１４に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルモバイルデバイスの人気および利便性、ならびにインターネット通信の広範な使用は、ユーザデバイス間の通信をユビキタスなものにした。例えば、ユーザは一般にそのデバイスを用いて、テキストメッセージ、チャットメッセージ、電子メール等として他のユーザに電子メッセージを送信する。ユーザデバイス間のチャット会話では、例えば、ユーザは、テキスト、画像、および他の種類のコンテンツデータをチャットインタフェースに投稿し、投稿されたデータは、チャット会話に参加している他のユーザデバイスに表示されるチャットインタフェースに表示される。
【０００２】
本明細書で提供される背景技術は、本開示の状況を概略的に提示することを目的とするものである。この背景技術の欄において記載される限りにおいて、現時点で明記されている本発明者らの取り組み、ならびにその他、出願時に先行技術としてみなされない記載の態様は、明示的にも黙示的にも、本開示に対する先行技術として認めたものではない。
【発明の概要】
【０００３】
本出願の実装形態は、チャット会話のための組み込みプログラムおよびインタフェースに関連する。いくつかの実装形態では、提案アイテムを提供するためのコンピュータ実装方法は、第１のユーザデバイスによりチャットインタフェースを表示させることを含み、チャットインタフェースは、メッセージングアプリケーションによって生成され、チャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されている。１つまたは複数のメッセージは、ネットワークを介してチャット会話に参加している複数のユーザデバイスによって提供される。方法は、チャットインタフェースに関連する組み込みインタフェースを表示させ、組み込みインタフェースは、メッセージングアプリケーションに関連して第１のユーザデバイス上で少なくとも部分的に実行される第１の組み込みアプリケーションによって提供されるものである。方法は、チャット会話に参加している複数のユーザデバイスのうちの１つまたは複数において特定のイベントが発生したことを示す受信データに基づいて、示唆イベント（ｓｕｇｇｅｓｔｉｏｎｅｖｅｎｔ）が関連して発生したと判定し、複数のユーザデバイスのうちの１つまたは複数は、第１のユーザデバイスとは異なるものである。方法は、示唆イベントに基づいて１つまたは複数の提案応答アイテム（ｓｕｇｇｅｓｔｅｄｒｅｓｐｏｎｓｅ ｉｔｅｍ）を取得し、１つまたは複数の提案応答アイテムを第１のユーザデバイスによって表示させる。
【０００４】
方法の様々な実装形態および例が説明される。例えば、いくつかの実装形態では、特定のイベントは、複数のユーザデバイスのうちの１つまたは複数の、関連するチャットインタフェースによって受信されたユーザ入力、複数のユーザデバイスのうちの１つまたは複数の、関連する組み込みインタフェースによって受信されたユーザ入力、および／または複数のユーザデバイスのうちの１つまたは複数で実行されている関連する組み込みアプリケーションで発生している組み込みアプリケーションイベントを含む。いくつかの実装形態では、特定のイベントが発生したことを示す受信データは、複数のユーザデバイスのうちの１つまたは複数によって再生されているメディアアイテムに表示されているコンテンツ特徴のタイプ、複数のユーザデバイスのうちの１つまたは複数のゲームにおける所定の目的の達成、チャット会話に参加している受信側ユーザデバイスによって受信されたユーザ入力であって、受信側ユーザデバイスに表示された異なる組み込みインタフェースにおいて提供されたユーザ入力、および／または複数のユーザデバイスのうちの特定のユーザデバイスからの組み込みアプリケーションの開始のうちの少なくとも１つを示す。いくつかの実装形態では、特定のイベントは、複数のユーザデバイスのうちの１つまたは複数のそれぞれのユーザによってチャット会話に入力された１つまたは複数のメッセージを含み、示唆イベントは、１つまたは複数のメッセージ内の、１つまたは複数の事前定義されたトピック、単語、および／またはフレーズのうちの少なくとも１つを検出することに基づいて決定される。
【０００５】
いくつかの実装形態では、示唆イベントに基づいて１つまたは複数の提案応答アイテムを取得することは、少なくとも１つの提案応答アイテムの示唆イベントとの１つまたは複数の事前定義された関連付け、特定の示唆イベントおよび特定の示唆イベントに応答して入力された応答でトレーニングされたモデル、および／または組み込みアプリケーションによって提供されたゲームで使用される複数のルールおよび目的のうちの１つまたは複数のうちの少なくとも１つに基づいて、１つまたは複数の提案応答アイテムのうちの少なくとも１つの提案応答アイテムを決定することを含む。いくつかの実装形態では、方法は、１つまたは複数の提案応答アイテムから選択された提案応答アイテムのユーザ選択を示すユーザ入力を受信すること、チャット会話において選択されたメッセージを出力することをさらに含み、選択されたメッセージは、選択された提案応答アイテムに関連付けられている。
【０００６】
いくつかの実装形態では、方法は、１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、ユーザ入力に応答して、選択された提案応答アイテムに関連する１つまたは複数のコマンドを提供することをさらに含み、１つまたは複数のコマンドは、第１の組み込みアプリケーションに提供される少なくとも１つの第１のコマンド、メッセージングアプリケーションに提供される少なくとも１つの第２のコマンド、および／または第１のユーザデバイス上で実行されている異なるアプリケーションからの出力情報を表示させるために第１のユーザデバイスに提供される少なくとも１つの第３のコマンドのうちの少なくとも１つを含む。
【０００７】
いくつかの実装形態では、方法は、１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、ユーザ入力に応答して、選択された提案応答アイテムに関連する１つまたは複数のコマンドを提供することをさらに含み、１つまたは複数のコマンドは、第２のコンテンツアイテムが第１のユーザデバイス上の組み込みアプリケーションの組み込みインタフェースに出力される第１のコンテンツアイテムと同じであると判定することに応答して、チャット会話に１または複数の他のユーザの第１のセットを追加するための第１のコマンドであって、第２のコンテンツアイテムは、チャット会話に参加していない１つまたは複数のユーザデバイスの第１のセットに表示される、第１のコマンド、および／または１または複数の他のユーザの第２のセットが、第１のユーザデバイス上の組み込みインタフェースに出力されている第３のコンテンツアイテムと同じ第４のコンテンツアイテムに関連する入力ユーザコメントを有すると判定することに応答してチャット会話に１または複数の他のユーザの第２のセットを追加するための第２のコマンドであって、第４のコンテンツアイテムは、チャット会話に参加していない１つまたは複数のユーザデバイスの第２のセットに表示される、第２のコマンドのうちの少なくとも１つを含む。
【０００８】
いくつかの例では、１つまたは複数の提案応答アイテムは、示唆イベントに対するユーザの反応を示す１つまたは複数のテキストメッセージを含み得る。方法は、１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、ユーザ入力に応答して、第１の組み込みアプリケーションにコマンドを提供することをさらに含むことができ、コマンドは、選択された提案応答アイテムに関連付けられている。いくつかの例では、第１の組み込みアプリケーションへのコマンドは、第１の組み込みアプリケーションによって実装されるゲームにおいてアクションを実行するための第１のコマンド、第１の組み込みアプリケーションによるメディアデータの再生における再生位置を変更するための第２のコマンド、および／または第１の組み込みアプリケーションによって提供された共有オブジェクトを変更するための第３のコマンドのうちの少なくとも１つを含む。さらなる例では、１つまたは複数の提案応答アイテムは、第１の組み込みアプリケーションに対する１つまたは複数の提案コマンドと、チャットインタフェースにおいてチャット会話に出力されるべき１つまたは複数の提案メッセージとを含み、１つまたは複数の提案コマンドは、チャットインタフェースに表示される場合に１つまたは複数の提案メッセージと視覚的に区別されている。いくつかの実装形態では、１つまたは複数の提案応答アイテムは、第１の組み込みアプリケーション、メッセージングアプリケーション、および／またはネットワークを介してメッセージングアプリケーションと通信するリモートサーバのうちの少なくとも１つによって決定される。
【０００９】
さらなる例では、第１の組み込みアプリケーションは、組み込みインタフェースにおいてビデオデータの表示された再生を引き起こすメディアプレーヤアプリケーションであり、組み込みインタフェースは、ビデオデータの表示された再生を制御するユーザからの入力を受信するように構成されており、１つまたは複数の提案応答アイテムのうちの少なくとも１つは、ビデオデータの表示された再生を調整するように動作可能な１つまたは複数の提案再生コマンドを含む。さらなる例では、第１の組み込みアプリケーションは、組み込みインタフェースにおいてゲームデータを表示させるゲームアプリケーションであり、組み込みインタフェースは、ゲームアプリケーションの１つまたは複数の状態を変化させるユーザからの入力を受信するように構成されており、１つまたは複数の提案応答アイテムのうちの少なくとも１つは、ゲームアプリケーションの少なくとも１つの状態を修正するように動作可能な１つまたは複数の提案コマンドを含む。さらなる例では、第１の組み込みアプリケーションは、組み込みインタフェースにおいて共有ドキュメントを表示させる共有ドキュメントアプリケーションであり、組み込みインタフェースは、共有ドキュメントの１つまたは複数のアイテムを変化させるユーザからの入力を受信するように構成されており、１つまたは複数の提案応答アイテムのうちの少なくとも１つは、共有ドキュメントを修正するように動作可能な１つまたは複数の提案コマンドを含む。
【００１０】
いくつかの実装形態では、組み込みインタフェースは、チャット会話に参加している複数のユーザデバイスのサブセットに出力されることが可能であり、サブセットは、ユーザデバイスを第１の組み込みアプリケーションによって開始された組み込みセッションに参加させる関連するチャットインタフェースにおいて第２のユーザ入力を受信したユーザデバイスを含む。第１の組み込みアプリケーションは、第１の組み込みアプリケーションによって生成された、および／またはネットワークを介して第１のユーザデバイスと関連してサーバから受信された出力データを表示し得る。
【００１１】
いくつかの実装形態では、システムは、メモリと、メモリにアクセスするように構成され、チャットインタフェースを第１のユーザデバイスによって表示させることを含む動作を実行するように構成された少なくとも１つのプロセッサとを含み、チャットインタフェースは、メッセージングアプリケーションによって生成される。チャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成され、１つまたは複数のメッセージは、ネットワークを介してチャット会話に参加している複数のユーザデバイスによって提供される。動作は、チャットインタフェースに関連する組み込みインタフェースを表示させることを含み、組み込みインタフェースは、メッセージングアプリケーションに関連して実行される第１の組み込みアプリケーションによって提供され、第１の組み込みアプリケーションは、第１のユーザデバイス上で少なくとも部分的に実行される。動作は、第１の組み込みアプリケーションの使用に関連して示唆イベントが発生したことを、組み込みインタフェースによって受信されたユーザ入力、および／または示唆イベントが第１の組み込みアプリケーションで発生したことを示す第１の組み込みアプリケーションからのイベント情報のうちの少なくとも１つに基づいて判定することを含む。動作は、示唆イベントに応答して１つまたは複数の提案応答アイテムを取得すること、第１のユーザデバイスによって１つまたは複数の提案応答アイテムを表示させることを含む。
【００１２】
システムの様々な実装形態および例が説明される。例えば、いくつかの実装形態では、１つまたは複数の提案応答アイテムは、それぞれ、メッセージングアプリケーションに、第１の組み込みアプリケーションの１つまたは複数の状態を変更するための関連コマンドを提供すること、および／またはチャット会話に参加している複数のユーザデバイスによって、チャット会話に関連メッセージを表示させることのために、第１のユーザデバイスの第１のユーザによって選択可能である。いくつかの実装形態では、示唆イベントが発生したことを判定する動作は、複数のユーザデバイスのうちの第２のユーザデバイスが、第１の組み込みアプリケーションに対応する第２の組み込みアプリケーションを起動して、第１の組み込みアプリケーションのために提供された組み込みセッションに参加したことを判定することに基づいている。
【００１３】
いくつかの実装形態では、非一時的コンピュータ可読媒体は、プロセッサによって実行されると、プロセッサに動作を実行させるソフトウェア命令を格納している。動作は、示唆イベントが、関連するユーザデバイス上で少なくとも部分的に実行される複数の対応する組み込みアプリケーションのうちの少なくとも１つの組み込みアプリケーションの使用に関連して発生したことを判定することを含み、各組み込みアプリケーションは、関連するユーザデバイス上で実行されるメッセージングアプリケーションに関連して実行される。各メッセージングアプリケーションは、関連するチャットインタフェースを関連するユーザデバイスによって表示させるように構成されており、関連するチャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、関連するユーザデバイスは、ネットワークを介してチャット会話に参加している。動作は、示唆イベントに応答して１つまたは複数の提案応答アイテムを取得すること、関連するユーザデバイスのうちの少なくとも１つの関連するユーザデバイスによって１つまたは複数の提案応答アイテムを表示させることを含む。
【００１４】
コンピュータ可読媒体のいくつかの実装形態では、１つまたは複数の提案応答アイテムは、それぞれ、複数の対応する組み込みアプリケーションの１つまたは複数の状態を変更するための関連コマンドを提供すること、および／またはチャット会話に参加している関連するユーザデバイスによるチャット会話における関連するメッセージを表示させることのために、少なくとも１つの関連するユーザデバイスのそれぞれのユーザからのユーザ入力によって選択可能である。いくつかの実装形態では、１つまたは複数の状態は、１つまたは複数の第２の状態であり、示唆イベントが発生したことを判定する動作は、対応する組み込みアプリケーションのうちの少なくとも１つによって受信されるユーザ入力、および／または対応する組み込みアプリケーションの１つまたは複数の第１の状態を変更するメッセージングアプリケーションのうちの少なくとも１つによって受信されるユーザ入力のうちの少なくとも１つに基づいている。
【図面の簡単な説明】
【００１５】
【図１】本明細書に記載の１つまたは複数の実装形態に使用することができる例示的なシステムおよびネットワーク環境のブロック図である。
【図２】いくつかの実装形態による、チャット会話に組み込みプログラムを提供するための例示的な方法を示す流れ図である。
【図３】いくつかの実装形態による、組み込みセッションにユーザが参加できるようにするための例示的な方法を示す流れ図である。
【図４】いくつかの実装形態による、第２のデバイスが組み込みセッションに参加したイベントを第１のデバイスが処理する例示的な方法を示す流れ図である。
【図５】いくつかの実装形態による、メッセージングアプリケーションに関連して組み込みアプリケーションを使用してメディアアイテムの出力を提供する例示的な方法を示す流れ図である。
【図６】いくつかの実装形態による、メッセージングアプリケーションに関連して組み込みアプリケーションの出力を提供する別の例示的な方法を示す流れ図である。
【図７】いくつかの実装形態による、チャット会話において組み込みアプリケーションに関連して提案応答アイテムを提供する例示的な方法を示す流れ図である。
【図８Ａ】いくつかの実装形態による、ユーザデバイスによって表示される例示的なユーザインタフェースのグラフィック表現である。
【図８Ｂ】いくつかの実装形態による、ユーザデバイスによって表示される例示的なユーザインタフェースのグラフィック表現である。
【図８Ｃ】いくつかの実装形態による、ユーザデバイスによって表示される例示的なユーザインタフェースのグラフィック表現である。
【図８Ｄ】いくつかの実装形態による、ユーザデバイスによって表示される例示的なユーザインタフェースのグラフィック表現である。
【図８Ｅ】いくつかの実装形態による、ユーザデバイスによって表示される例示的なユーザインタフェースのグラフィック表現である。
【図９Ａ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図９Ｂ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図９Ｃ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図１０Ａ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図１０Ｂ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図１０Ｃ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図１０Ｄ】いくつかの実装形態による、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。
【図１１】組み込みアプリケーションの開始とユーザの組み込みセッションへの参加とを含む例示的なシーケンスの概略図である。
【図１２】本明細書に記載の１つまたは複数の実装形態に使用することができる例示的なデバイスのブロック図である。
【発明を実施するための形態】
【００１６】
本明細書に記載の１つまたは複数の実装形態は、チャット会話のための組み込みプログラムおよびインタフェースに関する。様々な実装形態では、第１の組み込みアプリケーションは、第１のメッセージングアプリケーションによって提供され、第１のユーザデバイス上に表示される第１のチャットインタフェースにおけるユーザ入力によって開始され得る。第１のチャットインタフェースは、第１のユーザからユーザ入力を受信するように構成され、ネットワークを介してチャット会話に参加しており、かつそれぞれのチャットユーザに関連する１つまたは複数の他のユーザデバイスから受信したメッセージを表示するように構成されている。他のユーザデバイスは、組み込みアプリケーションに関連する組み込みセッションに接続することができ、他のデバイスのユーザはメンバーユーザとして指定されている。
【００１７】
例えば、いくつかの実装形態では、組み込みセッションがアクティブであることを示す通知が、チャット会話において他のチャットデバイス上に提供され得る。他のチャットデバイスのチャットユーザは、自分のデバイスを組み込みセッションに参加させてメンバーデバイスにするために、自分のユーザデバイスに入力を提供する（例えば、自分のデバイスのチャットインタフェースに表示される参加制御を選択する）ことができる。チャットユーザのチャット識別情報は、組み込みアプリケーションに提供され、組み込みアプリケーションにおいて使用され得る。
【００１８】
第１の組み込みアプリケーションは、組み込みインタフェースを、例えばチャットインタフェースの一部として、チャットインタフェース内または隣接して等、チャットインタフェースに関連して、ユーザデバイスによって表示させることができる。組み込みインタフェースは、例えば表示されたインタフェース要素、キーボード、他の入力デバイス等の選択を介して、ユーザデバイスの関連するユーザからユーザ入力を受信することができ、その入力は第１の組み込みアプリケーションに提供される。第１の組み込みアプリケーションは、例えばチャットメッセージからデータを受信し、チャットインタフェースおよび／またはチャット会話に表示されるチャットメッセージを出力するなど、第１のメッセージングアプリケーションおよびチャットインタフェースと通信することができる。第１の組み込みアプリケーションは、例えば第１のメッセージングアプリケーションを介して、組み込みセッションに参加した他のメンバーデバイスと通信することができ、他のデバイスは、それぞれの組み込みアプリケーションおよびメッセージングアプリケーションと関連付けられ得る。第１の組み込みアプリケーションは、第１のメッセージングアプリケーションおよび第１のメッセージングアプリケーションと通信する１つまたは複数のサーバと通信することができる。組み込みアプリケーションまたは他の接続されたデバイス（例えば、サーバ）で発生するイベントの表示は、チャットインタフェースに（例えば、チャットユーザに見えるようにチャット会話に）表示され、および／または組み込みインタフェースに表示され得る。
【００１９】
様々なタイプの組み込みアプリケーションを使用することができ、例えば、メディアアイテム（ビデオ、画像、オーディオセグメントなど）を再生するための組み込みメディアプレーヤアプリケーション、ゲームデータを出力するための組み込みゲームアプリケーション、コンテンツドキュメント（例えば、アイテムリスト、スプレッドシートなど）を出力するための組み込みアプリケーション、予約または旅行日程を作成し出力するための組み込みアプリケーションなどを使用することができる。いくつかの実装形態では、組み込みアプリケーションの開始がチャットインタフェースで選択されたときに、組み込みアプリケーションが第１のユーザデバイスにダウンロードされ実行され得る。いくつかの実装形態では、組み込みアプリケーションは、表示出力を組み込み方式で提供するように、例えばメッセージングアプリケーションのチャットインタフェースに関連して組み込みインタフェースの出力を表示するように構成され得る標準のスタンドアロンアプリケーション、またはそのために処理されたそれらの出力であってよい。
【００２０】
様々な他の機能が説明される。例えば、いくつかの実装形態では、提案応答アイテムは、メッセージングアプリケーションまたは組み込みアプリケーションによって生成または取得され、チャットインタフェースまたは組み込みインタフェースに表示され得る。いくつかの提案応答アイテムは、ユーザ入力によって選択されたときに、組み込みアプリケーション、メッセージングアプリケーション、または第１のユーザデバイスに、１つまたは複数の提案コマンドを提供することができる。いくつかの提案応答アイテムは、ユーザ入力によって選択されたときに、チャットインタフェース、例えばチャット会話に１つまたは複数の提案メッセージを提供することができる。提案応答アイテムは、組み込みアプリケーション、メッセージングアプリケーション、および／または他の接続されたデバイスにおいて発生する示唆イベントに基づいて決定されることができ、従って、関連する提案入力オプションをユーザに提供する。
【００２１】
様々な実装形態では、機能は、組み込みセッションにおいてそれぞれのユーザステータス（例えば、ユーザロール）を割り当てられているメンバーユーザ、例えば、メディアアイテム再生の制御ユーザ、ゲームにおけるプレイヤーロールまたはオブザーバーロールなどを含み得る。いくつかの例では、組み込みアプリケーションは、メディアアイテムの第１の再生中に組み込みインタフェースでユーザコメントを受信し、それらのユーザコメントを、第１の再生時にチャット会話に参加したチャットユーザのために、そのメディアアイテムの後の第２の再生中に組み込みインタフェースに表示することが可能である。組み込みアプリケーションの表示された出力データは、特定の組み込みセッションのメンバーデバイス間で同期させることが可能である。例えば、１つのメンバーデバイス上のユーザ入力によって調整された再生位置は、関連する組み込みインタフェースにおける再生位置を他のメンバーデバイスに調整させる。ボットはチャットインタフェースに提供され、組み込みアプリケーションとインタフェースすることができ、例えば、組み込みアプリケーションを起動してユーザ入力などによって選択されたコンテンツアイテムを処理することができる。
【００２２】
本明細書に記載の１つまたは複数の機能は、複数のユーザデバイスが参加するチャット会話のコンテキストでユーザが組み込みアプリケーションと対話することを可能にする。さらに、複数のチャットユーザが組み込みアプリケーションにおいて対話することが可能である。機能は、チャットユーザがチャットインタフェースから出て別のアプリケーションのインタフェースを表示することなく、チャットユーザがチャット会話において機能およびアプリケーションの出力を共有することを可能にする。従って、チャットメッセージは、組み込みアプリケーションからの出力の表示と同時にチャットインタフェースに入力され表示されることができ、チャットユーザがアプリケーションの同時使用中に接続されていると感じることを可能にする。このような機能により、組み込みアプリケーションを使用して組み込みセッションにおいてチャットユーザ間で、グループ化され、共有化された、表現力豊かなエクスペリエンスを実現できる。いくつかの例では、ビデオなどのメディアアイテムを再生する組み込みセッションにおいて、機能は、チャットユーザがビデオを共に視聴し、チャット会話においてビデオにコメントすることを可能にする。第１のチャットユーザが現在ビデオを視聴している場合、その会話の第２のチャットユーザは、類似の物理的環境で一緒にテレビを見ながらソファに座っているのと同様に、第１のチャットユーザとビデオを視聴するオプションを有する。この共有エクスペリエンスでは、両方のユーザが再生の制御、視聴するメディアアイテムのプレイリストの制御、ビデオにおける特徴やイベントについてのチャット、および／またはビデオフィードへのいいねの投稿を行うことが可能である。
【００２３】
組み込みアプリケーションとチャットインタフェースとの間の通信により、チャット機能とアプリケーション機能とを強力かつ効率的に統合できる。例えば、組み込みアプリケーションは、メッセージアプリケーションにイベントまたは通知を送信でき、メッセージアプリケーションは、チャットユーザのチャット会話およびチャットインタフェースにイベントまたは通知を表示でき、従って、組み込みセッションに現在参加していないチャットユーザが視認可能である。これにより、組み込みセッション内でのイベントの発生についていのユーザのエンゲージメント、保持、および認識を向上させることが可能である。同様に、チャットインタフェースおよびチャット会話に入力されたチャットメッセージは、組み込みアプリケーションに入力され、組み込みアプリケーションがチャットインタフェースおよびチャット会話からのコマンドおよびメッセージに応答することを可能にする。
【００２４】
チャットインタフェースと関連してこのような組み込みアプリケーションを使用することは、チャットユーザがチャットインタフェースおよびアプリケーションを使用するときに対話するためのユーザ入力および時間を短縮して、互いにおよび組み込みアプリケーションと対話することを可能にし、従って、さもなければメッセージングアプリケーションとは別個のアプリケーションでユーザ入力を処理、表示、および受信するために必要とされるデバイスリソースの消費を低減する。例えば、開示された特徴は、チャットインタフェースおよびアプリケーション機能を同時に使用する複数のユーザ間の通信を可能にし、処理するために必要なデバイスリソースの消費を減らす（例えば、ユーザデバイス上の異なるアプリケーションに対する異なるインタフェースの表示切り替えを減らすこと、１つのアプリケーションを別のアプリケーションまたはインタフェースにコピーおよびペーストすることを減らすこと、アプリケーションへ入力されるコマンドまたはデータの繰り返しを減らすこと等）。さらに、組み込みアプリケーションは、チャットインタフェース内の選択に基づいてシームレスにユーザデバイスにダウンロードおよびインストールされ、追加のダウンロードおよびインストールインタフェースを提示するのに必要とされるシステムリソースを削減することができる。さらに、組み込みアプリケーションは、データサイズが小さくてもよく、例えば、通信およびネットワーク機能、チャットインタフェース機能などの関連するメッセージングアプリケーションの１つまたは複数の機能を使用することができ、従ってそのような機能自体を省略することができる。これにより、特定のアプリケーション機能（例えば、メディアアイテムの再生、ゲームまたは共有リストの提供など）を、それぞれが完全な機能セットを含む独立して実行されるアプリケーションよりも少ない帯域幅および格納リソースを消費するより小さいアプリケーションで実装することができる。いくつかの実装形態では、標準のＡＰＩが、メッセージングアプリケーションと組み込みアプリケーションとの間で使用されることが可能であり、それにより、多種多様な組み込みアプリケーションが多くの異なるプロバイダによって提供されることを可能とする。
【００２５】
従って、１つまたは複数の説明された実装形態の技術的効果は、デバイスで実装された会話におけるユーザデバイス間のチャット通信が、結果を得るために費やされる計算時間およびリソースがより少ないアプリケーションからの表示された対話的特徴と共に提供されることである。例えば、説明された技術および機能の技術的効果は、説明された技術または機能のうちの１つまたは複数を提供しないシステム、例えば、アプリケーション出力を、チャットインタフェース通信に関連付けられていない別個のアプリケーションに表示する従来の技術を使用し、追加の計算リソースが、別個のアプリケーションを実行し、ユーザにアプリケーションとチャット会話とを切り替えさせ、アプリケーションへ追加の入力を提供させるために必要とされるシステムと比較して、チャット通信およびアプリケーション機能を提供するために利用されるシステム処理リソースの消費が低減されることである。別の例では、説明された技術および機能の技術的効果は、説明された技術または機能のうちの１つまたは複数を提供しないシステム、例えば、チャットインタフェースにおいてボットのみを使用して、アプリケーション機能を提供し、並びにチャットユーザと対話するシステムによって利用されるシステム処理リソースの消費が低減されることであり、これは、そのようなボットは、チャット会話に参加してメッセージを提供する複数のチャットユーザを混乱させ、システムリソースの非効率的な使用（例えば、以前の出力メッセージおよびボットによって提供された出力を表示させるための繰り返し視聴、スクロール、およびユーザからのコマンドの入力など）につながる可能性があるからである。従って、説明された技術および機能の技術的効果は、説明された技術または機能のうちの１つまたは複数を提供しないシステムと比較して、複数のユーザから入力を受信するために利用されるシステム処理リソースの消費が低減されることである。
【００２６】
いくつかの実装形態では、提案応答アイテムは、組み込みアプリケーション、メッセージングアプリケーション、または他のデバイスで発生した示唆イベントに応答して自動的に提供され得る。提案応答アイテムは、示唆イベントに対するコマンドまたはメッセージとして適切かつ関連性がある。例えば、提案メッセージアイテムは、あたかもユーザがメッセージを作成しているかのように、組み込みアプリケーションまたは他のプログラムで発生する特定のイベント（例えば、他のユーザからのユーザ入力に基づくイベント、または再生されたコンテンツデータにおけるイベント）に対する反応として適切なメッセージをチャット会話に表示させる。提案コマンドアイテムは、組み込みアプリケーションまたは他のプログラムにおけるイベントに応答して、提案関連コマンド、例えば、再生されたメディアアイテムにおける特徴の検出に応答してメディア再生を変更するコマンド、ゲームにおいて対戦相手の検出されたアクションに応答してゲームアクションを実行するコマンドなどが、組み込みアプリケーションまたは他のアプリケーション／デバイスへ送信されるようにし得る。これらの提案アイテムは、ユーザに、アプリケーションにおけるイベントに対する彼らの応答を決定する際のより柔軟なオプションを提供し、そうでなければアプリケーションにおけるイベントに適切に応答することができないユーザに対してオプションを提供することができる。例えば、メッセージ会話中の様々な時点で、ユーザは、適切なコマンドまたはメッセージでイベントに対し応答するのに十分な注意および／または集中を提供することができない可能性があり、および／またはそのような適切なコマンドまたはメッセージを作成するためにユーザデバイスに詳細なユーザ入力を提供することができない可能性がある。いくつかの例では、ユーザは活動を実行しているか、または適切な応答が不可能であるか、またはユーザが提供することがより困難である環境にいる可能性がある。
【００２７】
本明細書に記載の１つまたは複数の特徴は、組み込みアプリケーションまたはメッセージングアプリケーションにおける特定のイベントに応答して、ユーザに自動的に選択可能な提案応答アイテムを有利に提供する。提案応答アイテムは、デバイスで検出されたイベントに関連している。そのような提案アイテムの選択は、デバイス上で応答を作成するためのユーザ入力および応答時間を低減して、ユーザがイベントに対し簡単かつ迅速に応答することを可能にし、従ってそうでなければ可能性のある応答の大量のセットを表示するために必要とされるデバイスリソースの消費を減少させ、および／または、応答を作成し、検索し、編集し、または応答を完成させ、および／または電子デバイスを介して行われる会話に参加するためのユーザからの追加入力を可能にし、かつ処理するために必要とされるデバイスリソースの消費を減少させる。結果として、１つまたは複数の記載された実装形態の技術的効果は、結果を得るために費やされる計算時間およびリソースをより少なくしつつ、デバイスで実装される会話において応答の作成および送信が達成されることである。例えば、説明された技術および機能の技術的効果は、説明された技術または機能のうちの１つまたは複数を提供しないシステム、例えば、ユーザが送信しようとしている応答を特定し、選択し、編集し、または作成するのに用いられるユーザからの入力を受信するために、追加の計算リソースが必要とされる従来技術を使用するシステムと比較して、メッセージ応答およびコマンド応答を表示、作成および送信するために利用されるシステム処理リソースの消費が低減されることである。
【００２８】
記載された技術はさらなる利点を提供する。いくつかの例では、ユーザステータスまたはロールは、追加のユーザ入力を受信することなく、メッセージングアプリケーションと組み込みアプリケーションとの間で受け渡される情報に基づいて、自動的に効率的に割り当てられ得る。いくつかの例では、ユーザコマンドおよびコメントはサーバに送信されることが可能であり、サーバイベントは、ユーザがチャットインタフェースを出てユーザデバイス上の別個のアプリケーションを実行することによってサーバにアクセスする必要なく、ユーザデバイス上の組み込みアプリケーションによって受信および提示され得る。ボットは、組み込みアプリケーションとともに使用されて、例えば、ユーザが手動で検索、アプリケーションの選択、および開始を実行するためにシステムリソースを費やすことなく、組み込みアプリケーションによって再生されるべきコンテンツアイテムを検索することができる。他の例では、組み込みアプリケーションで以前に再生されたコンテンツアイテムに関連して以前にユーザによって入力されたユーザコメントが格納され得る。再生が同じチャット会話（またはチャットユーザのグループ）で行われる場合、そのような格納されたコメントは、コンテンツアイテムの後の再生に関連して表示されることが可能であり、チャットユーザが後の再生時にコメントを再入力する手間を省き、システムリソースの費用を削減できる。同期技術は、組み込みセッションのユーザデバイス上のコンテンツアイテムの再生を自動的に同期させ、複数のユーザからの入力を受け入れることを可能にする。このような技術は、ユーザが追加のシステムリソースを使用して別個のアプリケーションを実行したり、相互に手動で再生位置を指示したりすることなく、チャットユーザがチャット会話での経験を共有することを可能にする。
【００２９】
本明細書で説明される特定の実装形態が、ユーザに関する個人情報（例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの所在地および所在地における時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報）を収集または使用し得る状況において、ユーザには、情報が収集されるかどうか、個人情報が格納されるかどうか、個人情報が使用されるかどうか、およびユーザに関する情報がどのように収集、格納、および使用されるかを制御するための１つまたは複数の機会が提供される。すなわち、本明細書で説明されたシステムおよび方法は、特に、関連するユーザからの明確な許可を受けたときに、ユーザの個人情報を収集、格納および／または使用する。例えば、ユーザは、プログラムまたは機能がその特定のユーザまたはプログラムまたは機能に関連する他のユーザについてのユーザ情報を収集するかどうかについての制御を提供される。個人情報が収集される各ユーザには、そのユーザに関連した情報収集の制御を可能にする１つまたは複数のオプションが提供され、それにより、情報が収集されてよいかどうか、およびその情報のどの部分が収集されるかに関する許可または認可を与える。例えば、ユーザには、１つまたは複数のそのような制御オプションが、通信ネットワークを通じて提供されてよい。さらに、特定のデータは、個人を特定可能な情報が削除されるように、格納または使用される前に１つまたは複数の方法で処理され得る。一例として、個人を識別可能な情報が判定され得ないように、ユーザの識別情報が取り扱われ得る。別の例としては、ユーザデバイスの地理的位置は、ユーザの特定の位置が判定できないように、より大きな地域に一般化されてよい。
【００３０】
本明細書で言及される画像は、１つまたは複数のピクセル値（例えば、色値、輝度値など）を備えるピクセルを有するデジタル画像である。画像は、静止画像または単一画像、または一連の画像に含まれる画像、例えばビデオフレームのビデオシーケンス内のフレーム、または異なるタイプのシーケンス内の画像または画像のアニメーションであってよい。ビデオは複数の画像のシーケンスを含む。例えば、本明細書に記載の実装形態は、単一の画像または静止画像（例えば、写真、絵文字、または他の画像）、ビデオ、またはアニメ画像（例えば、動きを含むシネマグラフまたは他のアニメ画像、アニメーションおよびオーディオを含むステッカーなど）と共に用いられ得る。本明細書で言及するテキストは、英数字、絵文字、記号、または他の文字を含み得る。
【００３１】
図１は、本明細書で説明される組み込みアプリケーションを可能にするメッセージングサービスを提供するための例示的な環境１００のブロック図を示す。いくつかの実装形態では、自動支援エージェント、例えばボットが提供され得る。例示的な環境１００は、メッセージングサーバ１０１、１つまたは複数のクライアントデバイス１１５ａ、１１５ｎ、サーバ１３５、組み込みアプリケーションサーバ１５０、セッションサーバ１５２、コンテンツサーバ１５４、提案サーバ１５６、およびネットワーク１４０を含む。ユーザ１２５ａ〜１２５ｎは、それぞれのクライアントデバイス１１５ａ、１１５ｎに関連付けられることができる。サーバ１３５は、例えば、メッセージングサービスを提供するパーティとは異なるパーティによって制御されるサードパーティのサーバであり得る。様々な実装形態において、サーバ１３５は、以下でさらに詳細に説明するように、ボットサービスを実装することができる。いくつかの実装形態では、環境１００は、図１に示されている１つまたは複数のサーバまたはデバイスを含まないことがあり、または図１に示されない他のサーバまたはデバイスを含むことがある。図１および残りの図において、参照番号の後続の文字、例えば「１１５ａ」は、その特定の参照番号を有する要素への参照を表す。後続の文字を含まないテキスト中の参照番号、例えば「１１５」は、その参照番号を有する要素の実装形態に対する一般的な参照を表す。
【００３２】
図示された実装形態では、メッセージングサーバ１０１、クライアントデバイス１１５、サーバ１３５、およびサーバ１５０〜１５６は、ネットワーク１４０を介して通信可能に接続されている。様々な実装形態では、ネットワーク１４０は、有線または無線の従来型のものとすることができ、星型構成、トークンリング構成または他の構成を含む多数の異なる構成をとることができる。さらに、ネットワーク１４０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（例えばインターネット）、および／または複数のデバイスが通信することができる他の相互接続されたデータパスを含むことができる。いくつかの実装形態では、ネットワーク１４０は、ユーザデバイス間および／または他のデバイス間の、例えばオフライン通信（および後述の組み込みアプリケーションの使用）を可能にするピアツーピアデータ交換技術を使用するピアツーピアネットワークであり得る。ネットワーク通信は、適切な通信プロトコル（例えば、クライアント（ユーザ）デバイスおよびサーバのようなデバイス間の双方向全二重メッセージ通信を可能にするウェブソケット）の使用を含み得る。ネットワーク１４０は、様々な異なる通信プロトコルでデータを送信するために電気通信ネットワークの一部に結合されるかまたはその一部を含むこともできる。いくつかの実装形態では、ネットワーク１４０は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、電子メールなどを介することを含むデータの送受信のための、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信ネットワーク、Ｗｉ−Ｆｉ（登録商標）、またはセルラー通信ネットワークを含む。他の例では、音波が、デバイス間のデータおよび状態の交換のためにネットワーク１４０で使用され得る。図１は、クライアントデバイス１１５、メッセージングサーバ１０１、サーバ１３５、およびサーバ１５０〜１５６に結合された１つのネットワーク１４０を示しているが、実際には、１つまたは複数のネットワーク１４０が、これらのエンティティに結合し得る。
【００３３】
メッセージングサーバ１０１は、プロセッサ、メモリ、およびネットワーク通信能力を含み得る。いくつかの実装形態において、メッセージングサーバ１０１はハードウェアサーバである。いくつかの実装形態では、メッセージングサーバ１０１は、仮想化環境に組み込まれ得る。例えば、メッセージングサーバ１０１は、１つまたは複数の他の仮想マシンを含み得るハードウェアサーバ上で実行される仮想マシンであってよい。メッセージングサーバ１０１は、信号線１０２を介してネットワーク１４０に通信可能に接続されている。信号線１０２は、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどの有線接続、またはＷｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、または他の無線技術を使用することができる。いくつかの実装形態では、メッセージングサーバ１０１は、ネットワーク１４０を介して、クライアントデバイス１１５ａ〜１１５ｎ、サーバ１３５、サーバ１５０〜１５６のうちの１つまたは複数、およびボット１１３のうちの１つまたは複数との間でデータを送受信する。いくつかの実装形態において、メッセージングサーバ１０１は、クライアント機能を提供してユーザ（例えば、ユーザ１２５のいずれか）が他のユーザおよび／またはボットとメッセージを交換することを可能にするメッセージングアプリケーション１０３ａを含み得る。メッセージングアプリケーション１０３ａは、サーバアプリケーション、クライアント−サーバアプリケーションのサーバモジュール、または（例えば、１つまたは複数のクライアントデバイス１１５上の対応するクライアントメッセージングアプリケーション１０３ｂを有する）分散アプリケーションであり得る。
【００３４】
メッセージングサーバ１０１は、メッセージングサーバ１０１を介して交換されたメッセージ、例えばどのユーザがどのメッセージンググループ（例えば、チャット会話）に属しているか、およびどのコンテンツデータ（ビデオデータ、画像、グループが好きな音声データ、ゲームデータ、コンテンツドキュメントなど）がどのメッセージンググループに関連付けられているかを示すグループデータ、１つまたは複数のボットのデータおよび／または構成、コンテンツ分類器１３０によって提供される情報、および１または複数のユーザ１２５と関連付けられたユーザデータを、それぞれのユーザからそのようなデータを保存することを明示的に許された場合に格納することができるデータベース１９９を含み得る。いくつかの実施形態において、メッセージングサーバ１０１は、ボット１０７ａおよび１１１などの１つまたは複数の支援エージェントを含み得る。他の実施形態では、支援エージェントは、メッセージングサーバ１０１ではなく、クライアントデバイス１１５ａ〜１１５ｎ上に実装され得る。
【００３５】
いくつかの実装形態では、メッセージングサーバ１０１、メッセージングアプリケーション１０３、および／またはメッセージングアプリケーションと関連して実行されている組み込みアプリケーションは、１つのメッセージンググループにおいてメッセージ（例えばチャット会話）を提供でき、かつ／またはメッセージングサーバ１０１（または他のメッセージングサーバ）によって実装された１つまたは複数の他のメッセージンググループ（チャット会話）にメッセージを送信できる。
【００３６】
メッセージングアプリケーション１０３ａは、ユーザ１２５と１つまたは複数のボット１０５、１０７ａ、１０７ｂ、１０９ａ、１０９ｂ、１１１、および１１３との間のメッセージの交換を可能にするためのプロセッサによって動作可能なコードおよびルーチンであり得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）を含むハードウェアを使用して実装され得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａは、ハードウェアとソフトウェアとの組み合わせを使用して実装され得る。
【００３７】
様々な実装形態では、クライアントデバイス１１５に関連するそれぞれのユーザが、メッセージの格納について同意したときに、データベース１９９は、１つまたは複数のクライアントデバイス１１５間で交換されたメッセージを格納することができる。いくつかの実装形態では、クライアントデバイス１１５に関連するそれぞれのユーザがメッセージの格納について同意したときに、データベース１９９は、１つまたは複数のクライアントデバイス１１５と、例えば他のクライアントデバイス、メッセージングサーバ１０１、およびサーバ１３５などの異なるデバイス上に実装された１つまたは複数のボットとの間で交換されるメッセージを格納し得る。１または複数のユーザが同意しない実装形態では、それらのユーザによって送受信されたメッセージは格納されない。
【００３８】
いくつかの実装形態では、メッセージは、例えば、メッセージの送信者および受信者だけが暗号化されたメッセージを見ることができるように暗号化されてもよい。いくつかの実装形態は、ユーザから生成された暗号化データ、例えば、メッセージ、コメント、記録されたユーザアクションなどのようなユーザ生成コンテンツデータを格納することができる。ユーザ生成コンテンツデータは、（例えば、組み込みアプリケーションのローカル実行において）ユーザデバイス上で、および（例えば、共有された組み込みアプリケーションおよび組み込みセッションのために通信された情報のために）サーバシステム上でローカルに暗号化され得る。いくつかの実装形態では、メッセージが格納されている。いくつかの実装形態では、データベース１９９は、例えば、ボット１０７ａ、ボット１１１などの１つまたは複数のボットのデータおよび／または構成をさらに格納することができる。いくつかの実装形態において、ユーザ１２５がユーザデータ（ソーシャルネットワークデータ、連絡先情報、画像など）の格納に対する同意を提供する場合、データベース１９９は、そのような同意を提供した個々のユーザ１２５に関連するユーザデータを格納することも可能である。
【００３９】
いくつかの実装形態では、メッセージングサーバ１０１およびメッセージングアプリケーション１０３は、本明細書で説明されているようにチャット会話に参加している１つまたは複数のチャットデバイス（例えば、ユーザデバイス）上に実装され得る。
【００４０】
いくつかの実装形態において、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザ１２５が新たなボットを作成することを可能にするユーザインタフェースを提供し得る。これらの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザ作成のボットをメッセージングアプリケーション１０３ａ／１０３ｂのユーザ間のチャット会話に含むようにすることを可能にする機能を含み得る。
【００４１】
サーバ１５０〜１５６は、１つまたは複数のプロセッサ、メモリ、およびネットワーク通信能力を含み得る。いくつかの実装形態では、サーバはハードウェアサーバである。信号線１６０、１６２、１６４、および１６６は、それぞれサーバ１５０、１５２、１５４、および１５６をネットワーク１４０に接続し、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどのような有線接続、または、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、またはその他の無線技術などの無線接続であり得る。いくつかの実装形態では、サーバ１５０〜１５６は、ネットワーク１４０を介してメッセージングサーバ１０１およびクライアントデバイス１１５ａ〜１１５ｎのうちの１つまたは複数との間でデータを送受信する。サーバ１５０〜１５６は個別のサーバとして示されているが、サーバ１５０〜１５６のうちの１つまたは複数が、組み合わせられ、および／または環境１００の１つまたは複数の他の構成要素、例えばメッセージングサーバ１０１、クライアントデバイス１１５ａ、サーバ１３５などに含めることができる。サーバ１５０〜１５６のいずれかまたは全ては、メッセージングサーバ１０１を管理するのと同じパーティによって管理されてもよく、またはサードパーティによって管理されてもよい。いくつかの実装形態では、サーバ１０１、１３５、および１５０〜１５６は、サーバがネットワーク１４０を介して特定のデバイスと通信するときに、その特定のデバイスに対するリモートサーバと見なされ得る。同様に、いくつかの実装形態では、クライアントデバイス１１５は、特定のデバイスとネットワーク１４０を介して通信している場合、その特定のデバイスからリモートであるとみなされ得る。様々な実装形態では、サーバ１０１、１３５、および１５０〜１５６のうちの任意のものの機能は、１つまたは複数のクライアントデバイス１１５上に実装され得る。
【００４２】
組み込みアプリケーションサーバ１５０は、信号線１６０を介してネットワーク１４０に通信可能に接続されており、デバイスへのインストールのためにデバイスによって要求される本明細書に記載の組み込みアプリケーションを提供する。例えば、ユーザデバイスは、オペレーティングシステムまたはメッセージングアプリケーションのバックグラウンドプロセスとして、組み込みアプリケーションのダウンロードを要求することができ、組み込みアプリケーションサーバ１５０は、クライアントデバイス上で組み込みアプリケーションを実行するためにデータをクライアントデバイスに送信する。いくつかの実装形態では、組み込みアプリケーションサーバ１５０は、組み込みアプリケーションを全体的にまたは部分的に実行することができ、１つまたは複数のクライアントデバイスによる表示のために、組み込みアプリケーションからクライアントデバイスへ出力データを送信することができる。
【００４３】
セッションサーバ１５２は、信号線１６２を介してネットワーク１４０に通信可能に接続されており、いくつかの実装形態では、ネットワーク１４０に接続されたクライアントデバイス上で実行される複数の組み込みアプリケーション（例えば、共有された組み込みアプリケーション）を接続する組み込みセッションに参加している複数のクライアントデバイスとの間で送受信されるデータを処理および調整するために使用され得る。セッションサーバ１５２は、例えば、組み込みセッションにおける組み込みアプリケーションの状態を同期させること、セッションサーバ上で実行される対応する組み込みアプリケーション上でイベントを決定し配信すること等のうちの１つまたは複数を含む、組み込みセッションの管理のために用いられ得る。いくつかの実装形態では、セッションサーバは、組み込みセッションについての１つまたは複数のイベントを判定することができ、そのうちの１つまたは複数は、セッションサーバまたはセッションサーバと通信する他のサーバで発生し得る。例えば、イベントは、サーバによってユーザデバイスに提供されるコンテンツアイテムに関連する、サーバが受信するユーザ選択、コメント、または評価を含むことができ、それらのコンテンツアイテムは、組み込みセッションで再生されて、イベントが組み込みセッションに伝達されるようにすることができる。いくつかの実装形態では、セッションサーバ１５２は、メッセージングサーバ１０１または環境１００の他のサーバに含まれるか、それらと同じであり得る。
【００４４】
コンテンツサーバ１５４は、信号線１６４を介してネットワーク１４０に通信可能に接続されており、ネットワーク１４０に接続されている１つまたは複数のデバイスにコンテンツデータを送信するために使用され得る。例えば、コンテンツデータは、本明細書で説明されているようにクライアントデバイス上に組み込みインタフェースを表示する組み込みアプリケーションによる出力のために提供されたデータであり得る。コンテンツデータは、ビデオデータ、画像データ、オーディオデータ、ドキュメントデータ、ウェブページデータ、ゲームデータ、ボットデータまたは情報、地図データまたは他の地理的情報などを含み得る。コンテンツデータは、例えば、ビデオまたは映画、画像、ゲーム、ドキュメント、ウェブページなどの様々なコンテンツアイテム（メディアアイテム）に含まれ得る。
【００４５】
提案サーバ１５６は、信号線１６６を介してネットワーク１４０に通信可能に接続されており、クライアントデバイスでのユーザによる表示および選択のためにメッセージングアプリケーションおよび／または組み込みアプリケーションに応答して提案応答アイテムを決定および提供するために使用され得る。例えば、クライアントデバイス１１５で実行されているメッセージングアプリケーションは、記述情報を提案サーバ１５６に送信することができ、提案サーバ１５６は、記述情報に応答して、データベース、ナレッジグラフ、および／または他のデータリソースを調べて１つまたは複数の提案応答アイテム（本明細書では、「提案アイテム」、「提案入力アイテム」、または「提案入力アイテム」とも呼ばれる）を決定することができる。そのような提案アイテムは、図７を参照して説明されるように、提案コマンドおよび提案メッセージであり得る。いくつかの実装形態では、提案サーバ１５６の機能は、メッセージングアプリケーションおよび／または組み込みアプリケーション内に含めることができる。
【００４６】
いくつかの実装形態では、提案サーバ１５６および／または環境１００の他の構成要素は、機械学習を使用することができ、例えば、機械学習を利用して提案アイテムを決定する機械学習モデルを使用することができる。例えば、トレーニング段階では、提案サーバ（または他の構成要素）は、メッセージングアプリケーションのコンテキストにおける実際のまたは生成されたメッセージのトレーニングデータ（例えば、メッセージトレーニングデータ）を使用してトレーニングされることができ、その後、推論段階において、受信した新しいメッセージまたはその他のデータに対する提案アイテムを決定することができる。例えば、機械学習モデルは、合成データ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングされ得る。いくつかの実装形態では、機械学習モデルは、サンプルデータ、例えば、トレーニングのためにユーザデータを利用する許可がメッセージデータを提供するユーザから明示的に得られているサンプルメッセージデータに基づいてトレーニングされ得る。例えば、サンプルデータは、受信メッセージおよび受信メッセージに対して送信された応答を含み得る。サンプルデータに基づいて、モデルは受信されたメッセージに対するメッセージ応答を予測することができ、その後、それが提案アイテムとして提供され得る。いくつかの実装形態では、提案サーバ１５６（または他の構成要素）は、深層学習モデル、ロジスティック回帰モデル、長期短期記憶（ＬＳＴＭ）ネットワーク、教師ありモデルまたは教師なしモデルなどのうちの１つまたは複数を使用することができる。いくつかの実装形態は、画像またはビデオ中の画像特徴を検出し、その画像特徴に基づいて提案アイテム（例えばメッセージ応答）を決定することもできる。例えば、画像の特徴には、人物（人物の身元を特定することなく）、動物、オブジェクト（品物、乗り物など）、特定の記念碑、風景の特徴（葉、山、湖、空、雲、日の出または日の入り、建物、橋など）天気などを含み得る。さまざまな画像認識および検出技術（例えば、トレーニング画像に基づく機械学習、参照画像内の参照特徴との比較など）が画像の特徴を検出するために使用され得る。
【００４７】
いくつかの実装形態では、サーバ１５０〜１５６のうちの１つまたは複数が、ボットをホストする。ボットは、例えば、予約ボットが予約を行い、自動返信ボットが返信メッセージテキストを生成し、スケジューリングボットがカレンダーの予定を自動的にスケジュールするなど、提案を提供する特定の機能を実行するコンピュータプログラムであってもよい。サーバ１５０〜１５６は、メッセージングアプリケーション１０３へのその出力として、１つまたは複数のボットを提供または参照することができる。例えば、ボットのためのコードは、メッセージングアプリケーション１０３に組み込まれてもよく、またはメッセージングアプリケーション１０３は、サーバ１５０〜１５６で実装されるボットに要求を送信してもよい。いくつかの実装形態では、メッセージングアプリケーション１０３は、サーバ１５０〜１５６にボットコマンドを提供し、ボットコマンドに基づく出力（例えば、組み込みアプリケーションデータ、セッションデータ、コンテンツデータ、提案アイテムなど）を受信することによって、ユーザ１２５とサーバ１５０〜１５６との間の仲介として機能する。
【００４８】
いくつかの実装形態では、サーバ１５０〜１５６のうちの１つまたは複数（例えば、コンテンツサーバ１５４および／または提案サーバ１５６）は、電子百科事典、ナレッジグラフ、１つまたは複数のデータベース、ソーシャルネットワークアプリケーション（例えば、ソーシャルグラフ、友人用のソーシャルネットワーク、ビジネス用のソーシャルネットワークなど）、場所またはロケーションのウェブサイト（例えば、レストラン、自動車販売店など）、マッピングアプリケーション（例えば、案内を提供するウェブサイト）などを保持することができる。例えば、コンテンツサーバ１５４は、メッセージングアプリケーション１０３からの情報の要求を受信し、検索を実行し、および要求内の情報を提供することができる。いくつかの実装形態では、コンテンツサーバ１５４は、画像内の特定のタイプのコンテンツの分類子を含むことができ、特定のクラスのうちのいずれかが画像のコンテンツ（例えば、ピクセル）内で検出されたかどうかを判定することが可能である。いくつかの例では、メッセージングアプリケーション１０３は、コンテンツサーバ１５４によってアクセスされたマッピングアプリケーションからの道案内または到着予定時刻を要求することができる。
【００４９】
いくつかの実装形態では、ユーザがそのようなデータの使用に同意する場合、１つまたは複数のサーバ１５０〜１５６（例えば、コンテンツサーバ１５４）は、メッセージングアプリケーション１０３が画像内の人物を対応するソーシャルネットワークプロファイルを使用して識別するために使用できるユーザのプロファイル情報またはプロファイル画像をメッセージングアプリケーション１０３に提供し得る。別の例では、提供されたユーザデータについてユーザの同意が得られた場合、コンテンツサーバ１５４は、メッセージングアプリケーション１０によって使用されるメッセージ内で識別されたエンティティに関する情報をメッセージングアプリケーション１０３に提供することができる。例えば、コンテンツサーバ１５４は、画像内で識別されたランドマークについての情報を提供する電子百科事典、メッセージ内で識別されたエンティティを購入するための情報を提供する電子ショッピングウェブサイト、ユーザの同意を条件としてメッセージ内で識別されたユーザからの旅程を提供する電子カレンダーアプリケーション、メッセージ内のエンティティが訪れることのできる近くの場所に関する情報を提供するマッピングアプリケーション、メッセージ内で言及された料理が提供されたレストランのウェブサイトなどを含み得る。いくつかの実装形態では、コンテンツサーバ１５４は、提案サーバ１５６と通信して情報を取得することができる。コンテンツサーバ１５４は、要求された情報を提案サーバ１５６に提供することができる。
【００５０】
いくつかの実装形態では、１つまたは複数のサーバ１５０〜１５６は、例えばこれらのモジュールによって使用または維持されるデータベースを更新するために、１つまたは複数のメッセージングアプリケーション１０３から情報を受信することができる。例えば、コンテンツサーバ１５４がレストランについてのウェブサイトを保持する場合、メッセージングアプリケーション１０３は、レストランでのユーザのお気に入りの料理など、レストランについての更新された情報をコンテンツサーバ１５４に提供することができる。
【００５１】
サーバ１３５は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態において、サーバ１３５はハードウェアサーバである。サーバ１３５は、信号線１２８を介してネットワーク１４０に通信可能に結合されている。信号線１２８は、イーサネット、同軸ケーブル、光ファイバケーブルなどの有線接続、またはＷｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、または他の無線技術などの無線接続であり得る。いくつかの実装形態では、サーバ１３５は、ネットワーク１４０を介してメッセージングサーバ１０１およびクライアントデバイス１１５のうちの１つまたは複数との間でデータを送受信する。サーバ１３５は１つのサーバとして示されているが、様々な実装態様は１つまたは複数のサーバ１３５を含み得る。サーバ１３５は、サーバアプリケーションまたはサーバモジュールとして１つまたは複数のボット、例えばボット１０９ａおよびボット１１３を実装することができる。
【００５２】
様々な実装形態では、サーバ１３５は、メッセージングサーバ１０１を管理するのと同じエンティティ、例えばメッセージングサービスのプロバイダの一部とすることができる。いくつかの実装形態では、サーバ１３５は、例えば、メッセージングアプリケーション１０３ａ／１０３ｂを提供するエンティティとは異なるエンティティによって制御されるサードパーティサーバとすることができる。
【００５３】
いくつかの実装形態において、サーバ１３５はボットを提供またはホストする。ボットは、１つまたは複数のコンピュータ上で実装され、ユーザが主にテキストを通じて、例えばメッセージングアプリケーション１０３ａ／１０３ｂを介して対話する自動化されたサービスである。ボットについては後でより詳しく説明する。
【００５４】
クライアントデバイス１１５は、メモリおよびハードウェアプロセッサを含むコンピューティングデバイス、例えば、カメラ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、モバイル電子メールデバイス、携帯型ゲーム機、携帯型音楽プレーヤ、リーダーデバイス、ヘッドマウントディスプレイ、またはネットワーク１４０に無線でアクセスすることができる他の電子デバイスなどであり得る。
【００５５】
図示の実装形態では、クライアントデバイス１１５ａは信号線１０８を介してネットワーク１４０に結合され、クライアントデバイス１１５ｎは信号線１１０を介してネットワーク１４０に結合されている。信号線１０８および１１０は、例えばイーサネットなどの有線接続、またはＷｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、または他の無線技術などの無線接続とすることができる。クライアントデバイス１１５ａ、１１５ｎは、それぞれユーザ１２５ａ、１２５ｎによってアクセスされる。図１のクライアントデバイス１１５ａ、１１５ｎは例として用いられている。図１は２つのクライアントデバイス１１５ａおよび１１５ｎを示しているが、本開示は１つまたは複数のクライアントデバイス１１５を有するシステムアーキテクチャに適用される。
【００５６】
いくつかの実装形態では、クライアントデバイス１１５は、ユーザ１２５によって着用されるウェアラブルデバイスであり得る。例えば、クライアントデバイス１１５は、クリップ（例えば、リストバンド）の一部、宝飾品の一部、または眼鏡の一部として含まれるようにしてもよい。別の例では、クライアントデバイス１１５は、スマートウォッチとすることができる。様々な実装形態では、ユーザ１２５は、デバイスのディスプレイ上でメッセージングアプリケーション１０３ａ／１０３ｂからのメッセージを閲覧することができ、スピーカまたはデバイスの他の出力デバイスなどを介してメッセージにアクセスすることができる。例えば、ユーザ１２５は、スマートウォッチやスマートリストバンドのディスプレイ上でメッセージを閲覧することができる。別の例では、ユーザ１２５は、クライアントデバイス１１５に結合された、またはその一部であるヘッドホン（図示せず）、クライアントデバイス１１５のスピーカ、クライアントデバイス１１５の触覚フィードバック要素などを介してメッセージにアクセスすることができる。
【００５７】
いくつかの実装形態では、メッセージングアプリケーション１０３ｂはクライアントデバイス１１５ａに格納されている。いくつかの実装形態では、メッセージングアプリケーション１０３ｂ（例えば、シンクライアントアプリケーション、クライアントモジュールなど）は、メッセージングサーバ１０１に格納されている対応するメッセージングアプリケーション１０３ａ（例えば、サーバアプリケーション、サーバモジュールなど）を有するクライアントデバイス１１５ａに格納されているクライアントアプリケーションであり得る。例えば、メッセージングアプリケーション１０３ｂは、クライアントデバイス１１５ａ上のユーザ１２５ａによって作成されたメッセージをメッセージングサーバ１０１に格納されているメッセージングアプリケーション１０３ａに送信することができる。
【００５８】
いくつかの実装形態では、メッセージングアプリケーション１０３ａは、メッセージングサーバ１０１に格納されているスタンドアロンアプリケーションとすることができる。ユーザ１２５ａは、クライアントデバイス１１５ａ上のブラウザまたは他のソフトウェアを使用してウェブページを介してメッセージングアプリケーション１０３ａにアクセスすることができる。いくつかの実装形態では、クライアントデバイス１１５ａ上に実装されているメッセージングアプリケーション１０３ｂは、メッセージングサーバ１０１上に含まれているものと同じまたは類似のモジュールを含むことができる。いくつかの実装形態では、メッセージングアプリケーション１０３ｂは、例えば、１つまたは複数のクライアントデバイス１１５が他のクライアントデバイス１１５とのメッセージ交換を可能にする機能を含むピアツーピアまたは他の構成で、スタンドアロンクライアントアプリケーションとして実装され得る。これらの実装形態では、メッセージングサーバ１０１は、限定されたメッセージング機能（例えば、クライアント認証、バックアップなど）を含むか、またはそのような機能を含まない可能性がある。いくつかの実装形態では、メッセージングサーバ１０１は、１つまたは複数のボット、例えばボット１０７ａおよびボット１１１を実装することができる。
【００５９】
様々な実装形態では、メッセージングアプリケーション１０３は、メッセージングアプリケーション１０３に関連して、および依存して実行される１つまたは複数の組み込みアプリケーション１１７を含むことができる。組み込みアプリケーション１１７は、メッセージングアプリケーションのチャットインタフェースと対話し、それ自体の組み込みインタフェースのうちの１つまたは複数を提供することができる。組み込みアプリケーションの様々な特徴の例が本明細書に記載されている。
【００６０】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、１つまたは複数の提案アイテム、例えば、提案コマンド、メッセージ、または応答を、ユーザインタフェース、例えば、ボタン、または他のユーザインタフェース要素を介してユーザ１２５に提供することができる。提案アイテムは、ユーザが提案アイテムを、例えば、タッチスクリーン上のまたは他の入力デバイスを介して対応するユーザインタフェース要素を選択することによって選択したときに、ユーザがメッセージに素早く応答できるようにし得る。提案アイテムは、例えば、ユーザが応答を入力する必要性を低減または排除することによって、より迅速な対話を可能にし得る。提案アイテムは、例えば、クライアントデバイスがテキスト入力機能を欠いているとき（例えば、キーボードまたはマイクロフォンを含まないスマートウォッチ）に、ユーザが迅速かつ容易にメッセージに応答するか、またはコマンドを提供することを可能にし得る。いくつかの実装形態では、提案応答は、応答を生成するようにトレーニングされた予測モデル、例えば機械学習モデルを使用して生成され得る。提案アイテムは、図７に関して以下により詳細に説明される。
【００６１】
図２は、いくつかの実装形態による、チャット会話に組み込みプログラムを提供するための例示的な方法２００を示す流れ図である。いくつかの実装形態では、方法２００は、例えば図１に示されるようなメッセージングサーバ１０１などのサーバシステム上で実装され得る。いくつかの実装形態では、方法２００のいくつかまたはすべては、図１に示されるような１つまたは複数のクライアントデバイス１１５などのシステム、および／またはサーバシステムと１つまたは複数のクライアントシステムとの両方で実装され得る。記載の例では、実施するシステムは、１つまたは複数のプロセッサまたは処理回路と、データベースまたは他のアクセス可能な記憶装置などの１つまたは複数の記憶デバイスとを含む。いくつかの実装形態では、１つまたは複数のサーバおよび／またはクライアントの異なる構成要素は、方法２００の異なるブロックまたは他の部分を実行することができる。
【００６２】
ブロック２０２では、方法２００の実装においてユーザデータを使用するためにユーザ同意（例えばユーザ許可）が取得されているかどうかをチェックする。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザプリファレンス、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【００６３】
方法２００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック２０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な使用により実施され得ると判定され、方法はブロック２０８に続く。ユーザの同意が得られていない場合、ブロック２０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック２０８に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【００６４】
本明細書に記載の実装形態は、チャットインタフェースでチャット会話を提供するメッセージングアプリケーションと関連して実行される組み込みアプリケーションプログラムを提供することができる。メッセージングアプリケーションは、上述のようなメッセージングアプリケーション１０３とすることができ、全体的にまたは部分的にユーザデバイス（例えばクライアントデバイスまたは他のデバイス）上で実行することができ、または全体的にまたは部分的にサーバ（例えばメッセージングサーバ１０１）上で実行することができ、ユーザデバイスで表示するためのデータをユーザデバイスに提供する。
【００６５】
いくつかの例では、メッセージングアプリケーション１０３は、インスタントメッセージングアプリケーション、ソーシャルネットワークアプリケーション、電子メールアプリケーション、マルチメディアメッセージングアプリケーションなどであってよい。例えば、メッセージングアプリケーションがインスタントメッセージングアプリケーションである場合、メッセージは、特定のユーザ１２５ａと、参加しているデバイスの１人または複数の他のユーザ１２５との間のインスタントメッセージング通信の一部として、例えば、２人以上の参加者を有するメッセージングセッション（例えばチャット、グループ、または「チャット会話」）において受信されてもよい。チャット、またはチャット会話は、複数の参加ユーザが互いにメッセージ（例えば、様々な種類のコンテンツデータを含む）をやり取りするメッセージングセッションである。いくつかの実装形態では、ユーザは、メッセージングアプリケーションによって実装されたチャット会話にメッセージを入力することによって他のユーザにメッセージを送信することができる。いくつかの実装形態では、ユーザは、電話番号をメッセージングすること（例えば、メッセージングアプリケーション１０３が、ＳＭＳ、または電話番号を利用する別のメッセージングアプリケーションで動作する場合）により、または連絡先リストから受信者ユーザを選択すること（例えば、メッセージングアプリケーション１０３がリッチコミュニケーションサービス（ＲＣＳ）または他のチャットインタフェースで動作する場合）により、特定の他のユーザにメッセージを送信することができる。いくつかの実装形態では、メッセージングアプリケーション１０３は、参加デバイス間のリアルタイム通信、例えば、音声（音声）通話および／またはビデオ通話を提供することができ、リアルタイムオーディオデータおよび／またはビデオデータは、１つまたは複数の参加デバイスで（例えば、カメラおよびマイクを使用して）キャプチャされ、このデータは、チャット会話（例えば、電話会議）に参加している他のデバイスのチャットインタフェース（およびスピーカー）に送信され、そこで出力される。
【００６６】
メッセージングアプリケーション１０３は、チャット会話のメッセージ、例えば、ユーザデバイスのユーザによって送信されたメッセージ、およびユーザデバイスによって他のデバイスから受信されたメッセージを表示するチャットインタフェースを表示することができる。本明細書で言及されるように、チャットインタフェースは、表示されるユーザインタフェースコンポーネント（例えば、表示されるインタフェース要素を含む）を有し、ならびにユーザ入力の受信、メッセージの送受信、メッセージの表示などを実行するデータ受信および交換コンポーネントを有する。
【００６７】
本明細書に記載の実装形態では、１つまたは複数の組み込みアプリケーションが、メッセージングアプリケーションに関連して実行され得る。本明細書における組み込みアプリケーションは、メッセージング組み込みプログラムまたはチャット組み込みプログラム、例えば、実行中のメッセージングアプリケーションに関連して、またはそのコンテキスト内で実行され、メッセージングアプリケーションの実行に依存するプログラムを指す。例えば、組み込みアプリケーションは、メッセージングアプリケーションが現在デバイス上で出力（例えばチャットインタフェース）を提供している場合にそのデバイス上で実行することができるコード（例えばスクリプト）であり、メッセージングアプリケーションが終了し、デバイスで出力が提供されなくなった場合は、組み込みアプリケーションは終了する（例えば、もはやデバイス上で実行されない）。例えば、いくつかの実装形態では、組み込みアプリケーションは、組み込みインタフェースに提供される入力、またはその中の入力、例えば、組み込みインタフェースにおけるユーザインタフェース要素、テキスト、または他の表示オブジェクトの選択、入力デバイスのジェスチャ（タッチスクリーン、タッチパッドなどのタッチセンシティブ入力面上のタップ、形状、曲線、または線などのトレース）、および／またはタッチスクリーンまたは他の入力デバイスを介して組み込みインタフェースによって受信された他のユーザ入力を受信し得る。本明細書で言及されるように、組み込みインタフェースは、ユーザインタフェース構成要素（例えば、表示されたユーザインタフェース要素）、ならびにコンテンツデータ、例えば、メディアアイテムコンテンツデータ、ゲームデータ、ドキュメントデータ、ユーザコメント、メッセージを含む表示された出力データを含み得る表示された構成要素を含む。組み込みインタフェースは、例えば、ユーザにより、タッチスクリーン、キーボード、または他の入力デバイスを介して、ユーザデバイスでユーザ入力の受信を行うデータ受信コンポーネントも含む。いくつかの実装形態では、組み込みインタフェースは、チャットインタフェースと関連して表示される。例えば、組み込みインタフェースは、チャットインタフェースの一部として、例えば、チャットインタフェースの境界または表示領域内に、またはチャットインタフェースと部分的に重なって、またはチャットインタフェースに隣接して表示され得る。いくつかの実装形態では、チャットインタフェースの少なくとも一部は視認可能であり、組み込みインタフェースは、ディスプレイ上で視認可能である。
【００６８】
いくつかの実装形態では、組み込みアプリケーションは、例えばテキストコマンドまたはチャットインタフェース要素の選択として、関連するチャット会話のために関連するチャットインタフェースに提供される入力を受信し得る。いくつかの実装形態では、組み込みアプリケーションは、組み込みインタフェースにおいて出力を提供し、かつ／またはチャットインタフェースにおいて出力を提供することができ、例えば、チャットインタフェースに表示されるチャット会話に対し、テキストとして出力を提供し、または他のチャットインタフェース出力を提供する。例えば、組み込みインタフェースへの組み込みアプリケーションの出力は、組み込み出力データと呼ぶことができ、組み込みアプリケーションによって生成されたデータ、および／または関連するメッセージングアプリケーションを介して１つまたは複数の他のソース（例えば、第１のデバイス上で実行されている異なるアプリケーションプログラム、ネットワークを介して接続されている１つまたは複数のサーバ、関連するメッセージングアプリケーションのチャット会話における１つまたは複数のチャットデバイスなどを含むソース）から組み込みアプリケーションが受信したデータを含むことができる。組み込みアプリケーションから他のアプリケーションプログラムおよび／または他のデバイスへ送信されたデータは、組み込みアプリケーションからメッセージングアプリケーションに提供されることができ、メッセージングアプリケーションは、次にデータ（または処理された形態のデータ）を他のプログラムまたはデバイスに伝達する。同様に、他のプログラムまたはデバイスからユーザデバイスで受信され、そのユーザデバイスのために実行されている組み込みアプリケーションに提供されるデータは、メッセージングアプリケーションによって受信され、メッセージングアプリケーションから組み込みアプリケーションに提供され得る。
【００６９】
本明細書を通して、組み込みアプリケーションのいくつかの例が説明されている。いくつかの例示的な実装形態では、組み込みアプリケーションは、サンドボックス化された表示プロシージャ内で、例えば、チャットインタフェースの表示領域内で、またはチャットインタフェースとの他の視覚的関連付けを有する表示領域内で、アプリケーションデータおよび組み込みインタフェースを表示するために実行されるコードであり得る。例えば、いくつかの実装形態では、組み込みアプリケーションは、チャットインタフェース内に組み込みインタフェースを提供するためにウェブインタフェースビューを実装することができ、ビューはウェブページからのデータを表示でき、および／またはウェブページに関連して実行されるコードを実装できる（Ｊａｖａｓｃｒｉｐｔ（登録商標）、ＣＳＳ、ＨＴＭＬなど）。いくつかの実装形態では、組み込みアプリケーションは、サードパーティ、例えば、関連するメッセージングアプリケーションおよび／または組み込みアプリケーションと通信する他のコンポーネントを供給するパーティとは異なるパーティなどによって供給され得る。いくつかの実装形態では、バッファリング（例えば、ダブルバッファリング技法）が、１つの組み込みアプリケーションの表示から別の組み込みアプリケーションに移行するときに提供され得る。例えば、表示されていない第２の組み込みアプリケーションのための組み込みアプリケーションコードおよび／または出力データは、第１の（または他の）組み込みアプリケーションおよび組み込みインタフェースがフォアグラウンドで表示され使用されている間、デバイスのオペレーティングシステムのバックグラウンドで表示するためにメモリにダウンロード、インストール、および／またはロードされ得る。第１の表示された組み込みインタフェースは、表示されたアニメーションおよびユーザインタフェース遷移を介して第２の組み込みインタフェースと交換され得る。いくつかの例では、組み込みアプリケーションがダウンロードされているとき、コードがダウンロードされている間および／またはバックグラウンドでユーザデバイスにインストールされている間に、ローディングインジケータが表示され得る。
【００７０】
いくつかの例では、組み込みアプリケーションは、通信を可能にするための１組の所定のプロトコルおよび他のツールを提供するアプリケーションプログラムインタフェース（ＡＰＩ）を使用してメッセージングアプリケーションによって実装されるフレームワークと通信し、インタフェースすることができる。例えば、ＡＰＩは、組み込みセッションに参加しているデバイス（例えば、メンバーデバイス）からの特定のデータを通信するために使用されることができ、データは、組み込みデバイスの組み込みアプリケーションプログラム（例えば、共有された組み込みアプリケーション）を接続し同期させる。いくつかの実装形態では、メッセージングアプリケーションフレームワークは、チャット会話、デバイス、組み込みセッション、および組み込みアプリケーションの間の対話を可能にするための組み込みアプリケーション開発者機能を提供するためのＡＰＩのセットを提供することができる。
【００７１】
いくつかの例示的な実装形態では、メンバーユーザが組み込みアプリケーションを終了する場合、その組み込みアプリケーションは、そのメンバーユーザのメンバーデバイスのバックグラウンド、例えば、メッセージングアプリケーションまたはメンバーデバイスのオペレーティングシステムのバックグラウンドで、ある期間（例えば、２０秒、１分など）の間、実行し続けることができる。例えば、これは、ユーザがチャットインタフェースと対話した直後に組み込みアプリケーションの使用に戻る場合に実行され得る。いくつかの例では、ユーザは、組み込みゲームアプリケーションを開き、ゲームへの移動を入力し、組み込みゲームアプリケーションおよび組み込みインタフェースを閉じ（それらがバックグラウンドで実行されるように）、別のユーザの要求に応答してチャット会話にファイルを送信または添付し、すぐに組み込みゲームアプリケーションおよび組み込みインタフェースを開き直して、それらをフォアグラウンドに切り替えることができる。チャット会話が終了した場合、例えば、ユーザがメッセージングアプリケーションを閉じた場合、またはいくつかの実装形態では、異なるチャット会話に切り替えた場合、バックグラウンドで実行されている組み込みアプリケーションが終了され得る。同様に、メッセージングアプリケーションがユーザによって閉じられるかまたは終了された場合、メッセージングアプリケーションは、特定の期間、ユーザデバイスのバックグラウンドに送信されることができ、アクティブな組み込みアプリケーションはこの期間中に一時停止され得る。ユーザは、他のアプリケーションの使用に切り替え、メッセージングアプリケーションがフォアグラウンドで実行されるように選択されたときに組み込みアプリケーションの使用を再開することができる。従って、組み込みアプリケーションはチャットの会話のライフサイクルに結び付けられ得る。
【００７２】
様々な実装形態において、ユーザのうちの１人または複数がボットであってもよい。例えば、本明細書で言及されるチャットユーザまたはメンバーユーザは、いくつかの実装形態ではボットであり得る。そのような場合、「チャットユーザ」（ボット）に関連する「ユーザデバイス」は、ボットを提供するサーバデバイスであり得る。いくつかの例では、ボットは、アシスタントボット、ショッピングボット、サーチボットなどであり得る。いくつかの実装形態では、ボットは、ソフトウェアおよび／またはハードウェアで実装される自動化エージェントであり得る。いくつかの実装形態では、ボットは、カメラ（例えば、防犯カメラ、ウェブカメラ、監視カメラなど）、電化製品（例えば、スマート冷蔵庫、警報デバイス、産業用電化製品など）、イメージングデバイス（例えば、顕微鏡、医療用イメージングデバイスなど）を表すかまたはそれらと関連付けられてもよく、メッセージングアプリケーション１０３を介して１つまたは複数の画像を送信することが可能である。ユーザのうちの１または複数がボットである実装形態では、ボットによって生成されたメッセージを使用することについてボットの所有者またはオペレータから同意が得られる。いくつかの実装形態では、同意は、ボット、カメラ、機器などの構成パラメータとして指定され得、ボットがメッセージングアプリケーション１０３と対話するとメッセージングアプリケーション１０３に対し提供され得る。
【００７３】
ブロック２０８において、第１のメッセージングアプリケーションは、第１のユーザデバイス上に第１のチャットインタフェースを表示させる。チャットインタフェースは、第１のデバイスが参加することができる１つまたは複数のチャット会話に関連する情報を受信し、情報を出力するように構成されたユーザインタフェースである。例えば、チャットインタフェースは、第１のデバイスを使用する、あるいはさもなければ第１のデバイスと関連付けられた第１のユーザからのユーザ入力または他の入力に応答して、第１のデバイスの表示デバイス、例えば表示画面に表示され得る。いくつかの実装形態では、第１のメッセージングアプリケーションは、第１のデバイス上で実行され、一方、他の実装形態では、第１のメッセージングアプリケーションは、ネットワークを介して第１のデバイスに接続された異なるデバイス（例えば、メッセージングサーバ）上で部分的または全体的に実行されることが可能であり、第１のデバイスによって表示されるべき第１のデバイスへのデータを送信することができる。
【００７４】
第１のユーザおよび第１のデバイスは、チャットインタフェースを使用して１つまたは複数のチャット会話に参加することができる。例えば、第１のデバイスのユーザからのユーザ入力は、ユーザデバイスを使用する１または複数の他のユーザと新たなチャット会話を開始すること、および／またはネットワークを介して通信する１または複数の他のユーザおよびデバイスと既存のチャット会話に加わることができる。各チャット会話は、その特定のチャット会話に参加しているチャットユーザ（およびそれらに関連するユーザデバイス）のグループを含む。いくつかの実装形態では、ユーザは、複数の異なるチャット会話に同時に参加することができる。いくつかの実装形態では、各チャットユーザは、チャット会話中のそれぞれのチャット識別情報と関連付けられている。チャット識別情報は、チャットインタフェースにおけるユーザの視覚的表現（例えば、ユーザの頭、ユーザ名、ユーザ画像などの描写）を指すことができる。チャット識別情報は、チャットユーザを描写するのに有効なテキスト、画像、またはマルチメディアデータ（例えば、ユーザ写真、ユーザアイコン、ユーザ名、チャットユーザを表すアニメーションなど）を含む。チャット識別情報は、さらにまたは代わりに、ユーザ識別子（例えば識別（ＩＤ）データ、ＩＤ番号など）を指すこともできる。チャット識別情報は、メッセージングアプリケーションのコンテキストにおけるチャットユーザのための一意の識別子を含む。例えば、一意の識別子はユーザ名であり得る。別の例では、一意の識別子は、チャットユーザのデータベースのための識別子（例えば、ユーザ識別情報を格納するデータベーステーブルのためのプライマリキー）であり得る。チャット識別情報を組み込みアプリケーションに提供する際に、データベース識別子またはユーザ名が提供されてもよい。
【００７５】
いくつかの実装形態では、チャット会話は、ユーザのチャットグループと見なすことができ、そのユーザが現在チャット会話に参加しているかどうか、または現在ログイン中またはユーザデバイスを使用しているかどうかにかかわらず継続的に存在し得る。例えば、すべてのチャットユーザがチャット会話を終了する場合、会話識別子（ＩＤ）、ならびにチャット会話のチャット識別情報およびユーザ識別情報がメッセージングアプリケーションによって格納されることが可能であり、チャットユーザのうちの１人または複数がログインまたはチャットインタフェースを用いて会話を再開した場合、チャット会話は再開される。メッセージングアプリケーションのいくつかの実装形態は、特定のチャット会話を識別する会話ＩＤを割り当てて格納することができ、会話ＩＤに関連付けて関連する現在のチャットユーザ（および／またはチャットデバイス）の識別情報を格納することができる。いくつかの実装形態では、新しいユーザをチャット会話に追加することができ、１人または複数のユーザをチャット会話から削除することができる。
【００７６】
チャットインタフェースは、他のチャットデバイスおよびチャット会話に参加しているチャットユーザから第１のデバイスによって受信されたメッセージを含む、第１のユーザが参加している各チャット会話の情報、ならびにチャットユーザのステータス、メッセージ機能のオプション、チャット会話で発生するイベントなどに関する情報を表示することができる。チャットインタフェースは、第１のデバイスのユーザまたは第１のデバイスに関連するユーザ（例えば、第１のユーザ）がユーザ入力を提供することを可能にするインタフェース機能を含むことができ、それは、そのような機能を可能にするためのインタフェース要素を含む。例えば、ユーザは、第１のデバイス上でメッセージを作成し、そのメッセージをチャット会話に入力することができる。いくつかの例では、ユーザは、タッチスクリーン、物理的なボタンもしくはキーボード、音声入力、または他の種類の入力を介してチャットインタフェースにユーザ入力を提供することができる。
【００７７】
ブロック２１０において、第１の組み込みアプリケーションを、開始（例えば、第１のデバイス上で組み込みアプリケーションを開くかまたは実行し）およびチャットユーザとの共有のために選択する入力が、第１のデバイスによって受信される。入力は、第１のデバイスにおいてローカルに第１のユーザから受信されたユーザ入力であり得る。いくつかの例では、利用可能な組み込みアプリケーションを一覧表示するオプションのメニューまたは他のセットが、第１のデバイスによって表示（または別の方法で提示または出力）されることが可能であり、ユーザ入力は、そのオプションから第１の組み込みアプリケーションを選択できる。第１の組み込みアプリケーションは、メッセージアプリケーションで現在アクティブな特定のチャット会話に関連付けられている。例えば、いくつかの実装形態では、第１の組み込みアプリケーションを選択して開くための１つまたは複数のオプションが、特定のチャット会話を表示するチャットインタフェースに表示または有効化されることが可能であり、そのようなオプションの選択は、第１の組み込みアプリケーションが、そのチャット会話に関連して実行されるようにする。いくつかの追加の例では、ユーザ入力は、あたかも合成メッセージの一部のようにチャットインタフェースに入力された１つまたは複数のテキストコマンドを含むことができ、テキストコマンドは、開始する第１の組み込みアプリケーションを選択するコマンドとして受信される。いくつかの例では、特定の構文文字または他の事前定義されたフォーマットが前に付いたテキストは、そのようなコマンドを示すことができる。
【００７８】
いくつかの実装形態では、第１の組み込みアプリケーションを開くために選択した入力は、第１の組み込みアプリケーションが１人または複数の他のチャットユーザおよび関連するチャット会話に参加するユーザデバイスと共有されるべきことを指定することもできる。この共有選択は、第１のデバイスと、組み込みアプリケーションのローカルバージョンを実行してチャット会話に参加する１つまたは複数の他のデバイスとの間に組み込みセッションが作成されることを可能にする（下記のブロック２１４を参照）。いくつかの実装形態では、第１の組み込みアプリケーションは、他のチャットユーザと共有せずに開くように代わりに選択されることが可能であり、これにより、組み込みセッションを開始せずに、他のデバイスが第１の組み込みアプリケーションに関するデータを受信することなく第１の組み込みアプリケーションが実行される。いくつかの実装形態では、組み込みアプリケーションを開始するための選択によって、共有された組み込みセッションが自動的に（または格納されたユーザプリファレンスデータに基づいて）開始される。いくつかの実装形態では、少なくとも１人の他のチャットユーザが第１の組み込みアプリケーションに関連付けられた組み込みセッションに参加するまで、（例えば、以下のブロック２１２のように組み込みインタフェースにおいて）組み込みアプリケーションは表示を出力しない。
【００７９】
ブロック２１２において、第１の組み込みアプリケーションがネットワークを介してダウンロードされ、および／または第１のデバイス上で実行され、組み込みインタフェースがチャットインタフェースに関連して表示される。例えば、第１の組み込みアプリケーションは、ブロック２１０で受信された選択に応答してダウンロードされ得る。いくつかの実装形態では、第１の組み込みアプリケーションは、組み込みアプリケーションをホストするサーバシステム、例えば組み込みアプリケーションサーバ１５０からダウンロードされ得る。いくつかの実装形態では、第１の組み込みアプリケーションのダウンロードは、例えばメッセージングアプリケーションおよび／または第１のデバイスのオペレーティングシステムのバックグラウンドプロセスとして、第１のデバイスの動作環境のバックグラウンドで行われ得る。これにより、（メッセージングアプリケーションのチャットインタフェースなどの）プログラムおよび機能が、ダウンロード中に実行され、第１のデバイス上で出力を提供し、かつ／または第１のユーザによって使用されることが可能になる。第１の組み込みアプリケーションがダウンロードされた後（および／またはその間に）、それは第１のデバイスによって実行され得る。いくつかの実装形態では、第１の組み込みアプリケーションがダウンロードされた後、それは第１のユーザデバイスのローカル不揮発性メモリに格納されたままであってよく、その結果、第１の組み込みアプリケーションが後に開始されると、それはローカルメモリから利用可能であり、ダウンロードされない（例えば、第１の組み込みアプリケーション用のアップデートが利用可能でない限り）。いくつかの実装形態では、第１の組み込みアプリケーションの１つまたは複数の部分または構成要素は、第１のデバイスと通信する１つまたは複数の他のデバイス、例えば１つまたは複数のサーバシステムによって実行され得る。組み込みアプリケーションコードは、システムがユーザデータにアクセスするための同意を提供したユーザのデバイスに特に提供（例えば送信）され得る。いくつかの実装形態では、組み込みアプリケーションは開始時にダウンロードされるので、例えば現在の休日またはカレンダーイベント、地理的な地域などに特化した、地域および／または時間に依存する組み込みアプリケーションが、特定のダウンロードにおいて組み込みアプリケーションサーバから提供され得る。特化された組み込みアプリケーションへのアクセスは、特定の地理的地域、言語、および／またはダウンロードを受信しているユーザデバイスおよびユーザの他の特性または制限に基づいて制限され得る。
【００８０】
いくつかの実装形態では、第１の組み込みアプリケーションは、組み込みインタフェースを第１のデバイスによって表示させる。組み込みインタフェースは、ユーザ入力が、第１の組み込みアプリケーションに提供されるべき組み込みインタフェースで受信されることを可能にし、第１の組み込みアプリケーションからの出力が第１のデバイスによって表示されることを可能にする、組み込みアプリケーションへのユーザインタフェースである。いくつかの実装形態では、ネットワークを介して他のデバイスに出力されるべき第１の組み込みアプリケーションからの情報が、組み込みアプリケーションからメッセージングアプリケーションに提供されることが可能であり、メッセージングアプリケーションは、ネットワークを介して第１のデバイスから他のデバイスに情報を送信できる。
【００８１】
いくつかの例では、組み込みインタフェースは、チャットインタフェースの少なくとも一部が視認可能となるように、チャットインタフェースと関連して第１のデバイスの表示デバイスに表示されることが可能であり、例えば、チャットインタフェースの１つまたは複数のチャットメッセージ（新しく入力されたチャットなど）は、組み込みインタフェースの表示中も視認可能なままである。例えば、組み込みインタフェースは、チャットインタフェースの一部として、例えばチャットインタフェースの表示領域または境界内に、またはチャットインタフェースと部分的に重なって、またはいくつかの実装形態ではチャットインタフェースに隣接して表示され得る。例えば、組み込みインタフェースは、チャットインタフェース内に表示された組み込みビューを含み得る。いくつかの例では、組み込みビューは、第１の組み込みアプリケーションなどの実行中の組み込みアプリケーションの出力データを表示すること専用の、および／または第１の組み込みアプリケーションなどの実行中の組み込みアプリケーションへの入力を受信すること専用のチャットインタフェースの一部であり得る。いくつかの例では、組み込みビューは、長方形または他の形状のウィンドウまたは表示画面の他の部分であり得る。
【００８２】
様々な実装形態では、組み込みインタフェースは、ユーザデバイスの向きに基づいて表示されることが可能であり、例えば、ユーザデバイスのランドスケープモードへの回転は、組み込みインタフェースをフルスクリーン表示に拡大させ、例えば、より没入的なゲーム体験、編集タスクのためのより広い画面スペースを可能にする。いくつかの実装形態では、組み込みインタフェースがフルスクリーン表示を提供するフルスクリーンモードである（部分スクリーンモードではない）場合、チャットユーザによるチャット会話で入力されたチャットメッセージは、例えば、（第１のユーザがこのようにチャットメッセージを表示することを選択した場合）通知としてフルスクリーン組み込みインタフェース内に表示され得る。いくつかの実装形態では、提案応答（図７に関して説明される）も、フルスクリーン組み込みインタフェース内に表示され得る。
【００８３】
いくつかの実装形態では、組み込みインタフェースのサイズおよび／または形状は、第１のユーザデバイスの種類、および／または組み込みインタフェースにおいて第１の組み込みアプリケーションによって表示される情報の種類に基づくことができる。いくつかの例では、第１のユーザデバイスが、モバイルデバイスまたは小さい表示領域（例えば、表示画面）を有する他のデバイスであるタイプの場合、組み込みインタフェースは、表示領域の特定の割合を占有し、少なくとも１つのチャットメッセージがチャットインタフェースに表示されることを可能にするサイズであり得る。より大きな表示領域を有するタイプのデバイス（例えば、デスクトップコンピュータ、より大きなタブレットデバイスなど）では、組み込みインタフェースは、表示領域のより小さなパーセンテージを占めるように表示されることが可能であり、チャットメッセージのためのより大きな領域を可能にする。いくつかの実装形態では、表示された制御を選択するユーザ入力に応答して、組み込みインタフェースは、表示領域全体を占めるように最大化され得る。さらなる例では、組み込みアプリケーションが映画データおよび画像データ（または、例えばグラフィカル環境を用いて特定の種類のゲームを表示するゲームアプリケーション）などの特定の種類のコンテンツデータを表示するメディアプレーヤアプリケーションである場合、コンテンツデータを閲覧するために組み込みインタフェースのサイズをより大きくすることができ、一方、組み込みアプリケーションがテキストアイテムのリストなどの種類のコンテンツデータを表示したり、オーディオデータから音声を出力したりする場合、組み込みインタフェースのサイズをより小さくすることができる。いくつかの実装形態では、組み込みインタフェースは、表示画面、仮想現実表示デバイスなどによる三次元（３Ｄ）表示として表示されることが可能であり、または拡張現実表示デバイスなどに表示されることも可能である。
【００８４】
いくつかの実装形態では、組み込みセッションを開始する前、および組み込みアプリケーションを他のチャットユーザと共有する前に、設定パラメータが、第１のユーザによって組み込みアプリケーションに入力され得る。例えば、第１のユーザは、組み込みゲームアプリケーションの新しいゲームインスタンスを作成し、ゲームのパラメータを設定し、プレイヤー名、ゲームボードサイズ、プレイヤーカラー、その特定のセッションに参加することを許可されるプレイヤー数などを選択することができる。さらなる例では、ユーザは、再生するビデオのメディアアイテムメニューを検索し、選択されたオプションを共有する前に組み込みアプリケーションを使用してオンラインで旅行先、フライト、ホテルなどを選択し、他のメンバーユーザによる意見／投票を求める前にショッピングアイテム（服、家具）を事前選択することなどができる。
【００８５】
ブロック２１４において、共有された組み込みセッションが開始される。組み込みセッションは、ネットワークを介して組み込みセッションおよびチャット会話に参加している特定のチャットデバイスのグループによる共有された組み込みアプリケーションの共有使用、例えば、特定のチャットデバイス間の情報の共有された通信および共有された組み込みアプリケーションに特化された指定イベントである。いくつかの実装形態では、組み込みセッションの各チャットデバイスは、少なくとも部分的に、共有された組み込みアプリケーション（例えば、対応する組み込みアプリケーション）のインスタンスを実行する。関連するチャットデバイスのグループ、および関連するチャットデバイスを使用するチャットユーザのグループは、共有された組み込みアプリケーションとのユーザ対話および共有された組み込みアプリケーションの出力を共有する。例えば、チャットユーザのグループのユーザデバイス上で実行されている対応する組み込みアプリケーションの１つまたは複数の状態が同期される。いくつかの実装形態では、組み込みセッションは、第１の組み込みアプリケーションが関連するチャット会話、例えば、ブロック２１０において第１の組み込みアプリケーションが開かれたチャット会話からの１つまたは複数のチャットデバイスのみを含む。組み込みセッションに参加したチャットユーザは、「メンバーユーザ」であり、そのチャットデバイスは、「メンバーデバイス」であり、これは組み込みセッションに参加しているチャットデバイスのサブセットである。いくつかの実装形態では、組み込みセッションは、関連するチャット会話の識別子と関連付けられている特定の組み込みセッション識別子（ＩＤ）と関連付けられ得る。セッションＩＤは、その組み込みセッションの現在のユーザメンバーと関連付けられ得る。例えば、第１のデバイスのユーザは、組み込みセッションのメンバーをリストする組み込みセッション用のセッションユーザリストに追加されることが可能である。第１のデバイスおよび／またはセッションサーバは、そのようなセッションユーザリストを格納および更新することができる。
【００８６】
いくつかの実装形態では、組み込みセッションは、サーバ、例えば、（組み込み）セッションサーバ１５２によって管理されることが可能であり、これは、組み込みセッションに参加している１つまたは複数のメンバーデバイスからデータを受信し、メンバーデバイス上で組み込みアプリケーションの状態を同期させ、１つまたは複数のメンバーデバイスにデータを出力するサーバシステムであってよい。この例では、第１のデバイス（例えば、第１のメッセージングアプリケーション）は、ブロック２１０で入力を受信することに応答して、および／またはブロック２１２で第１の組み込みアプリケーションを実行することに応答して、セッションサーバにデータを送信することが可能であり、データは、セッションサーバに対して、第１の組み込みアプリケーションが開始されたことを示す。いくつかの実装形態では、セッションサーバは、このデータを受信することに応答して組み込みセッションを開始することができ、組み込みセッションに対して何らかの処理（例えば、オブジェクトの格納、プロセスの実行など）を実行することができる。いくつかの実装形態では、１つまたは複数のクライアントデバイス、例えば、組み込みセッションの組み込みアプリケーションを開始した第１のデバイスは、組み込みセッションを管理でき、および／またはメンバーデバイスは、サーバ処理なしで互いにメッセージを通信できる。例えば、データは、各メンバーデバイスから、組み込みセッションに影響を与える処理なしに他のメンバーデバイスにデータを中継するメッセージルータへ送信され得る。
【００８７】
ブロック２１６において、組み込みセッションがアクティブであることを示す通知情報が、チャット会話の他のデバイスに送信される。いくつかの実装形態では、通知情報は、セッションサーバからチャット会話に参加している他のデバイス（「チャットデバイス」）、例えばすべてのチャットデバイスにネットワークを介して送信され得る。いくつかの実装形態では、通知情報は、セッションサーバで（または第１のメッセージアプリケーションで）生成され、セッションサーバを介して他のチャットデバイスに送信される。通知情報は、組み込みセッションの識別およびチャット会話の識別、ならびに現在組み込みセッションのメンバーである（この例では現在第１のユーザである）セッションユーザの識別のリストを含むことができる。
【００８８】
ブロック２１８において、チャットユーザは、組み込みセッションに参加および／または組み込みセッションから退出することが可能であり、チャットデバイスは、そのような参加および退出イベントについて通知を受けることができる。例えば、第１のデバイスは、チャット会話に参加している１つまたは複数の他のユーザデバイスに参加情報を送信することができる（例えば、いくつかの実装形態ではブロック２１６の通知に含めることができ、または通知とは別に送信することができる）。参加情報は、各チャットデバイスでユーザ入力を受け入れる他のチャットデバイスにおいてインタフェース要素の表示を生じさせ得る。特定のチャットデバイス上のインタフェース要素でユーザ入力を受信することに応答して、その特定のデバイスは、組み込みセッションのメンバーデバイスとして指定される。いくつかの例示的な実装形態では、チャットユーザは、自分のユーザデバイス上に提示された表示された「参加」ボタンを選択することによって、メンバーユーザとして組み込みセッションに参加することが可能である。いくつかの実装形態では、チャットユーザは、例えば、チャットユーザのデバイスに表示されているブロック２１６の通知に応答して、組み込みセッションに参加するためのコマンドを入力することができる。組み込みセッションに参加するデバイスのいくつかの例が、図３および図４に関して以下に説明される。
【００８９】
メンバーユーザは、組み込みアプリケーションを終了または閉じることによって、および／またはメッセージングアプリケーションを終了または閉じることによって、組み込みセッションから退出することができる。いくつかの実装形態では、メッセージングアプリケーションおよび／または組み込みアプリケーションを終了または閉じても、ユーザは組み込みアプリケーションまたはセッションのメンバシップを失わない。そのような実装形態では、ユーザは依然として組み込みアプリケーションのメンバーであり、例えば、他のメンバーデバイスに表示されるチャットインタフェースまたは組み込みインタフェースにおいて、単にオフラインであると示される。そのような実装形態の例では、ユーザは、組み込みアプリケーションが関連するチャット会話から退出することによって、組み込みセッションから退出する（組み込みアプリケーションメンバーシップを中止する）ことができる。いくつかの例では、チャットデバイスは、ユーザが組み込みセッションに参加した、またはそのセッションから退出したことを示す通知、およびユーザ（またはユーザデバイス）の識別情報を送信される。通知は、チャットデバイスに送信されることが可能であり、チャットデバイスは、組み込みセッションのメンバーデバイスであってもなくてもよい。いくつかの実装形態では、組み込みセッションのメンバーユーザがセッションから退出することに応答して、メンバーユーザのデバイスだけに通知が送信される。
【００９０】
組み込みセッションに参加したメンバーデバイスの各々は、それぞれの特定のユーザデバイスに表示されたそれぞれのチャットインタフェースに関連するそれぞれの組み込みインタフェースを提供するそれぞれの組み込みアプリケーション（第１の組み込みアプリケーションおよび組み込みセッションに対応する）をダウンロードおよび／または実行する。メンバーデバイスの組み込みアプリケーションは、組み込みセッションにおいてネットワークを介して互いに通信する。
【００９１】
ブロック２２０において、第１のデバイス上で実行されている第１の組み込みアプリケーションは、入力を受信し、状態を更新し、そして出力を提供するように動作する。例えば、第１の組み込みアプリケーションによって受信された入力は、第１のデバイスのユーザから提供されたユーザ入力を含み得る。いくつかの例では、例えば組み込みインタフェース内に表示された要素を選択し、コントローラまたはジェスチャで方向データを指定し、テキストデータを指定するなどのために、表示された組み込みインタフェースでユーザ入力を受け取ることができる。さらなる例では、例えばメッセージとして入力されたテキストコマンドまたはチャットインタフェースにおけるインタフェース要素の選択などのユーザ入力が、チャットインタフェースにおいて受信され得る。チャットインタフェースで受信された入力は、メッセージングアプリケーションから組み込みアプリケーションへと処理および／または伝達され得る。いくつかの実装形態では、組み込みアプリケーションは、チャット会話情報（例えば、ユーザ名またはチャット識別情報、ユーザアイコンなど）へのアクセス、および／またはユーザプロファイル情報（ユーザ名、プロフィール写真、チャット難読化ＩＤ）へのアクセスを有することができ、これはパーソナライズされた経験を可能にする。いくつかの実装形態では、組み込みアプリケーションは、チャットストリーム（例えば、チャット会話で入力されたチャットメッセージ）にアクセスできない。他の実装形態では、組み込みアプリケーションは、チャットストリームへのフルアクセスを有することができ、および／または組み込みアプリケーションは、チャット入力へのより高いレベルのアクセスを要求することができ、および／またはチャット会話においてチャットユーザによって入力されたチャットメッセージのメッセージングアプリケーションによる要約を提供され得る。さらなる例では、組み込みアプリケーションは、チャット会話に関連するチャット会話データベース（例えば、ユーザデバイスまたはサーバに格納されている）から入力チャットメッセージを直接読み取ることができ、および／またはサーバまたはボットを介してチャットインタフェースにおけるチャットメッセージおよび他のユーザ入力を受信することができる。ユーザ入力は、タッチスクリーン入力、表示されたキーボードまたは物理的なキーボードから提供されたテキスト入力、音声入力から提供されたコマンド、または他の種類の入力であり得る。
【００９２】
さらに、第１の組み込みアプリケーションは、組み込みセッションのメンバーデバイスからネットワークを介して受信されたイベント情報を含む入力（データ）を受信することができる。例えば、イベント情報は、他のメンバーユーザによって、関連する組み込みインタフェースに提供されるユーザ入力を含むことができ、関連する組み込みインタフェースは、それらのデバイスのために実行され、かつ第１の組み込みアプリケーションに対応する組み込みアプリケーションによってそれらのデバイス上に表示されるものである。このユーザ入力および／または他のデータ（例えば、そのユーザ入力に基づく組み込みアプリケーションの更新またはその状態）は、ネットワークを介して第１のユーザデバイスに送信され得る。
【００９３】
さらに、入力は、１つまたは複数の他のメンバーデバイス（および／またはセッションサーバ）上で実行されている１つまたは複数の対応する組み込みアプリケーションで発生する１つまたは複数のイベントおよび／またはアプリケーション状態を示すイベント情報を含むことができ、このイベント情報は、ネットワークを介して第１のユーザデバイスに送信され得る。例えば、イベント情報は、特定のデバイス上で実行されている対応する組み込みアプリケーション内で発生するイベントを、その組み込みアプリケーションによって受信されたユーザ入力に基づいて記述でき、この情報は、他のメンバーデバイスに送信されて、組み込みセッションの組み込みアプリケーションを同期させる。いくつかの実装形態では、他のメンバーデバイスからのイベント情報は、サーバシステムによって第１の組み込みアプリケーション（例えば、メッセージングサーバ、セッションサーバなど）に伝達され得る。いくつかの実装形態では、入力は、情報を第１の組み込みアプリケーションに提供する第１のデバイスの第１のメッセージングアプリケーションによって受信される。
【００９４】
さらに、第１の組み込みアプリケーションは、ネットワークを介して１つまたは複数の他のデバイス（例えば、メンバーデバイス、サーバシステムなど）からコンテンツデータを受信することができる。例えば、第１の組み込みアプリケーションがビデオ再生アプリケーションである場合、それはネットワークを介してコンテンツサーバからビデオデータのストリームを受信し、そのビデオデータを組み込みインタフェースに表示することができる。第１の組み込みアプリケーションがゲームである場合、それは他のメンバーデバイスおよび／またはゲームサーバからゲームデータを受信し、組み込みインタフェースにゲームデータを表示することができる。第１の組み込みアプリケーションが共有されたコンテンツドキュメント（例えば、アイテムまたはイベントのリスト、テキストドキュメントなど）、旅行日程、または他の情報を表示する場合、それは他のメンバーデバイスおよび／またはサーバシステムからこれらのアイテムのコンテンツデータを受信し、組み込みインタフェースでコンテンツデータを表示することができる。いくつかの実装形態では、コンテンツデータは、コンテンツデータを第１の組み込みアプリケーションに提供する第１のデバイスの第１のメッセージングアプリケーションによって受信される。
【００９５】
いくつかの例では、第１の組み込みアプリケーションは、入力に基づいて更新される。例えば、第１の組み込みアプリケーションは、例えば組み込みアプリケーションの１つまたは複数の状態を変更する、第１のユーザおよび／または１つまたは複数のメンバーデバイス（および／またはサーバシステム）から受信された入力データに基づいてデータを受信できる。変化した状態のいくつかの例では、メディアアイテムの再生は、メディアアイテムにおける異なるポイント（例えば、ビデオにおける異なる時点）に更新されてもよく、ゲームは、１つまたは複数の異なるゲーム状態（例えば、ゲーム環境におけるゲームの駒またはプレイヤーキャラクタの異なる位置を示すゲームの状態、勝ち、負け、またはプレイヤーの得点の変化を示すゲームの状態など）に更新されてもよく、共有されたリストは、リスト上の１つまたは複数のアイテムを追加、削除、または変更するために更新されてもよく、劇場の座席の予約が入力されるか、時間または場所が変更されるか、または削除されてもよい。同様に、入力は、ユーザ入力に基づいてゲーム内で発生するイベント（例えば、異なるメンバーデバイスまたはサーバで実行されているゲームコードによって決定されるゲームイベント）など、組み込みセッションのイベント（例えば、メンバーデバイスの対応する組み込みアプリケーションまたは組み込みセッションにおいてデータを提供するサーバにおけるイベント）を記述するイベント情報を含むことができる。このイベント情報は、第１の組み込みアプリケーションにその状態を更新させて組み込みセッションと同期させることができ、例えば、１つまたは複数の対応する組み込みアプリケーションと同期させることができる。いくつかの実装形態では、他のメンバーデバイスの他の組み込みアプリケーションは、それぞれのメンバーデバイスで受信された入力およびイベント情報に基づいて同様に更新され得る。
【００９６】
組み込みアプリケーションによって提供された出力は、受信された入力および／または組み込みアプリケーションで発生するイベントに基づくものである。例えば、出力は、組み込みインタフェースに表示された出力データを含むことができる。例えば、組み込みインタフェースは、組み込みアプリケーションによって提供されるインタフェース要素、制御、および他の機能を表示することができる。別の例では、組み込みアプリケーションは、グラフィカルゲーム環境、三次元（３−Ｄ）環境などを提供するために、組み込みインタフェースにデータを表示させることができる（ディスプレイスクリーン上の表示、仮想現実および／または拡張現実表示デバイスなどによる表示）。いくつかの実装形態では、出力は、異なるデバイスから第１の組み込みアプリケーションおよび第１のデバイスによって受信されたデータ、例えばコンテンツサーバ１５４などのサーバまたは組み込みセッションのメンバーデバイスから受信されたコンテンツデータを含み得る。
【００９７】
いくつかの実装形態では、組み込みインタフェースによって表示される出力データは、それが表示されているデバイスの特定のユーザに対してカスタマイズされ得る。例えば、第１のユーザは、ディスプレイ上の組み込みインタフェースの位置、サイズ、形状などを示すユーザプリファレンス、および組み込みインタフェースに表示される出力データのユーザの好ましい配色または他の視覚的特徴を格納していてもよい。いくつかの例では、第１のユーザは、特定の組み込みアプリケーションに固有のユーザプリファレンス、例えば、指定の組み込みアプリケーションにおけるユーザの好ましいユーザステータスまたはロールを示すプリファレンス、特定タイプの組み込みアプリケーションに対するユーザの好ましいインタフェース要素レイアウトなどを格納していてもよい。そのようなプリファレンスは、例えば、メッセージングアプリケーションから組み込みアプリケーションに提供され、組み込みアプリケーションによって実施され得る。
【００９８】
いくつかの例では、第１の組み込みアプリケーションから提供される出力は、第１のデバイスによって表示される組み込みインタフェース（例えば、組み込みビュー）に対する視覚的更新を含むことができる。例えば、新しい時点で再生可能なメディアデータ（例えば、画像またはビデオデータ）は、その時点への更新に基づいて表示されることが可能であり、表示されたゲームに対する１つまたは複数の変更が表示されることが可能であり、コンテンツドキュメント（リスト、ドキュメント、チャートなど）に対する変更が表示されることが可能である。
【００９９】
さらなる例では、第１の組み込みアプリケーションは、チャット会話からのコンテンツデータを処理し（例えば、メッセージングアプリケーションによって提供されるチャットメッセージを解析および／または別の方法で処理し）、組み込みインタフェースに出力データを提示および／または組み込みインタフェース自体を提示することができ、これは、関連するチャット会話で言及されている１つまたは複数のトピックに文脈的に関連している。例えば、会話におけるチャットメッセージは、再生する特定のメディアアイテムの表示を含んでいてもよく、そのメディアアイテムは、組み込みアプリケーションによって自動的に選択され再生されてもよい。別の例では、チャットメッセージは、ユーザがゲーム内の特定のサイドまたはチームでプレーしたいことを示すことができ、ユーザは、組み込みアプリケーションによってそのチームに自動的に割り当てられることができる。組み込みインタフェースの複数の視覚的外観（例えば、色、視覚的スタイルなど）、および／または組み込みインタフェースに表示される異なる利用可能な選択または制御は、組み込みインタフェースの異なるバージョンにおいて提供され得る。例えば、組み込みインタフェースは、ユーザステータスまたはユーザのロール、再生されるメディアアイテムの種類（例えば、ビデオ対画像）などに基づいて、異なるメンバーデバイスに対して異なるバージョンで表示されてもよい。
【０１００】
他の例では、組み込みアプリケーションは、会話を要約し、後で表示することができる重要な情報を自動的に格納することができる。例えば、ユーザは「要約」組み込みアプリケーションを開くことができ、組み込みアプリケーションは、多くのチャットメッセージの記録を表示して読む代わりに（またはそれに加えて）、ユーザによって指定された期間および／またはユーザがオフラインであった期間にわたる会話のチャットユーザにより入力されたメッセージの要約概要を表示することができる。
【０１０１】
追加の例では、組み込みアプリケーションは、ユーザデバイス上または異なるデバイス上で実行されるフルアプリケーションの「軽量」（例えば、特徴が減らされた、または機能が減らされた）バージョンであり得る。軽量バージョンは、より少ない格納スペース、実行のためのメモリなどを必要とするフルアプリケーションの１つのバージョンであり、フルアプリケーションを起動することなく実行することができ、フルアプリケーションの特徴および／または機能のサブセット（例えば、フルセットより少ない）を有し得る。いくつかの例では、フルゲームアプリケーションは、第１のユーザの異なるデバイス（例えばデスクトップまたはラップトップコンピュータ）にインストールされることが可能であり、軽量バージョンのゲームアプリケーションは、ユーザデバイス上の組み込みアプリケーションとして実行され得る。このような軽量のゲームアプリケーションは、第１のユーザが、フルゲームアプリケーションで使用される第１のユーザまたは第１のユーザのアカウントに関連するゲーム設定またはゲームデータを変更するために組み込みインタフェースでユーザ入力を提供することを可能にする。そのような変更は、フルゲームアプリケーションで使用される第１のユーザのゲームリソースの管理、例えば、ゲームアイテムのインベントリの編成、ゲーム内でのアイテムの売買、第１ユーザのアカウントの特定のゲーム能力に対するポイントの割り当て、プリファレンスまたは表示設定の変更、簡単なゲームアクションの実行などを含み得る。軽量アプリケーションを用いてユーザによって行われた変更は、フルゲームアプリケーションに保存され、例えば、サーバのユーザアカウントに保存され、フルアプリケーションが実行されているときにフルゲームアプリケーションによってアクセスされ、例えばサーバと同期することができる。同様に、変更は、メディアアイテムプレーヤプログラム、グラフィカル編集プログラム、ワードプロセッサ、または他のアプリケーションプログラムのための軽量バージョンを用いて為され得る。いくつかの実装形態では、組み込みセッションにおける他のメンバーユーザは、軽量アプリケーションを共有して、フルアプリケーションのデータおよび設定を調整し、かつ／または例えば第１のユーザがオンラインでないときに第１のユーザのデータおよび設定を変更することができる。いくつかの例では、軽量バージョンの組み込みアプリケーションは、異なるデバイス上で実行されるアプリケーションのユーザデバイス上で共有のセカンドスクリーンエクスペリエンスを提供することができる。
【０１０２】
いくつかの実装形態では、組み込みアプリケーションは、第１のユーザデバイスまたは第１のユーザデバイスと通信している他のデバイス上で、外部アプリケーション、例えば異なる組み込みアプリケーションまたはメッセージングアプリケーションの外部の他のアプリケーションの開始および実行をトリガすることができる。例えば、外部アプリケーションは、上記と同様に、組み込みアプリケーションによって実装される軽量バージョンに対応するフルアプリケーションであり得る。いくつかの例では、組み込みアプリケーションは、タスクの処理を完了するために外部アプリケーションを開始することができる（例えば、トランザクションの結果を判定し、レンダリングされた表示ビットマップを提供するなど）。いくつかの実装形態では、組み込みアプリケーションは、チャットインタフェースおよびチャット会話に表示されるべき選択可能なデータ（例えば、単語、リンク、ボタンなど）を提供することができる。例えば、組み込みアプリケーションは、選択可能なデータをメッセージングアプリケーションに提供することができ、メッセージングアプリケーションは、選択可能なデータをチャットインタフェースおよびチャット会話に表示することができる。選択可能なコンテンツは、ユーザ入力によって選択可能であり、例えば、タッチスクリーンまたは他の入力デバイスを介してクリックされ得る。ユーザ入力によって選択されたとき、選択可能なデータは、（例えば、ユーザデバイス上で）外部アプリケーションを開始および実行するためにコマンドをデバイスのオペレーティングシステムに送信させることができ、他のアプリケーションは、選択可能なデータにおいて識別され、または選択可能なデータと関連付けられ得る（例えば、選択可能なデータの種類に関連するデフォルトアプリケーション）。
【０１０３】
さらなる例では、上述のように外部アプリケーションを起動するときに、パラメータ、構成設定、および／または引数などの関連データが外部アプリケーションに渡され、外部アプリケーションからの特定のデータを提示することができる。いくつかの例では、組み込みアプリケーションは、特定の住所に関連付けられた地図アイコンを生成することができ、そのアイコンはチャットインタフェースに表示される。アイコンがユーザ入力によって選択されると、地図アプリケーションプログラムが起動され、関連付けられた住所の選択された位置を含む地図をビューに表示する。さらなる例では、外部ショッピングアプリケーションは、組み込みアプリケーションによってチャットインタフェースに送信される商品説明の選択によって開始されることが可能であり、外部ショッピングアプリケーションのチェックアウトショッピング表示は、ショッピング表示のフィールドに自動的に記入されたユーザの情報を含むことができる。さらなる例では、ユーザは、共有された組み込み予約アプリケーションを使用してホテルの場所および部屋を選択し、チャットインタフェースまたは組み込みインタフェースにおける表示された制御（例えば「ホテル部屋予約」ボタン）を選択することにより、ユーザデバイス上の外部のフル予約アプリケーションが開かれる。フル予約アプリケーションは、組み込みアプリケーションからの予約情報で自動的に入力される予約インタフェースを表示し、ユーザは、予約インタフェース内の「支払い」ボタンを選択して、予約に対してホテルに支払いを提供することができる。
【０１０４】
いくつかの実装形態では、第１の組み込みアプリケーションは、第１のユーザデバイスにインストールされている１つまたは複数の外部アプリケーションを検出し、外部アプリケーションのうちの１つまたは複数によって第１のユーザデバイスに表示されるコンテンツデータを変更することができる。例えば、組み込みアプリケーションは、フルバージョン（外部）アプリケーション（フルアプリケーション）の軽量バージョン（例えば、軽量アプリケーション）であってよい。例えば、第１のユーザデバイス上の軽量アプリケーションが、対応するフルアプリケーションが第１のユーザデバイスにインストールされていることを検出した場合、軽量アプリケーションは、フルアプリケーション内の特別な機能（例えば追加の制御、表示データなど）を、例えばメッセージングアプリケーションを介してフルアプリケーションと通信することによって、有効にすることができる。いくつかの実装形態では、フルアプリケーションと軽量アプリケーション（組み込みアプリケーション）との間に相補的な関係が提供され得る。いくつかの例では、フルアプリケーションはバックグラウンドで（例えば、第１のユーザデバイスによって表示されずに）データを通信することができ、その結果、軽量アプリケーションは、バックグラウンドでフルアプリケーションと直接通信してデータにアクセスまたは交換することができる。この通信は、例えば軽量アプリケーションと認証サーバとの間の追加の認証を必要とせずに、軽量アプリケーションおよび／またはフルアプリケーションにおいて表示されるデータおよびオプションをトリガすることができる。例えば、フル予約アプリケーションのログインプロセスは、ユーザデバイス上のフルアプリケーション内に登録されたユーザのフルアプリケーションアカウントを使用して対応する軽量アプリケーションによってトリガされることが可能であり、ユーザが予約を実行するために軽量アプリケーション内で再認証する必要はない。
【０１０５】
いくつかの実装形態では、第１の組み込みアプリケーションからの出力は、第１のデバイスのチャットインタフェースに提供されるおよび／またはチャット会話に提供されるデータ、例えばチャット会話に参加しているチャットデバイスのチャットインタフェースに表示されるデータを含み得る。例えば、第１の組み込みアプリケーションは、チャットインタフェースにおいてデータを出力および／または他のチャットデバイスにデータを出力する第１のメッセージングアプリケーションにデータを提供することができる。いくつかの例では、組み込みアプリケーションは、イベントまたは通知を記述するデータをメッセージアプリケーションに送信することができ（および／またはメッセージアプリケーションは他のデバイスからイベントおよび通知を記述するデータを受信することができ）、メッセージアプリケーションは、イベントまたは通知を記述するデータをチャット会話に表示して、組み込みセッション内での発生やイベントに関するユーザの関与、保持、および認識を向上させることが可能である。例えば、チャットインタフェースへの出力は、テキストまたは他の種類のチャットメッセージ（または画像、ビデオ、オーディオなど）として提供され得る。チャット会話への出力は、チャット会話に参加しているすべてのユーザデバイスのチャットインタフェースに表示されるように、すべてのチャットデバイスに送信され得る。いくつかの実装形態では、チャット会話への出力は、その出力を表示するために、参加しているチャットデバイスのサブセットに送信され得る。例えば、出力は、チャット会話で提供され、メンバーユーザ、または第１のユーザによって選択または指定された特定のチャットユーザに視認可能であり得る。いくつかの実装形態では、チャットインタフェースおよびチャット会話へ出力されたそのようなデータは、メッセージングアプリケーションの外部、例えば第１のユーザデバイス上で実行されている他のアプリケーションと共有され得る。いくつかの例では、メッセージングアプリケーションの外部で共有されるそのようなデータは、ユーザによって選択されるかまたは異なるアプリケーションによって処理されると、メッセージングアプリケーションを開くか、またはユーザデバイス上でフォアグラウンドに移動させ、組み込みアプリケーションを実行させ、ユーザを組み込みセッションに参加させ得る。
【０１０６】
いくつかの例では、チャット会話に出力される通知は、セッション内の組み込みアプリケーションによって提供されるユーザアクション、コンテンツデータ、ゲーム内のイベントなどに関連する組み込みセッションで発生するイベントの説明を含むことができる。例えば、そのような通知は、「ユーザ１およびユーザ２はパーティーシーンの映画「Ａｄｖｅｎｔｕｒｅｉｎ Ｔｉｍｅ」を視聴している」（再生されているシーンによってトリガされる）、「ユーザ１はカエルゲームでリードスコアを再獲得！」（このゲームイベントによって引き起こされる）、または「ユーザ２が記念コンサートのチケットを予約しました」（組み込みアプリケーションにおいてこれらのアイテムを予約しているユーザによってトリガされる）を含み得る。いくつかの実装形態では、通知は、テキスト、画像、ビデオ、オーディオ出力、シネマグラフ、または他の種類のコンテンツデータを含み得る。いくつかの実装形態では、イベントのそのような説明は、後述するインタラクティブカード上に表示されることが可能であり、それによってチャットユーザは通知／カードに入力を提供して組み込みセッションに参加し、または組み込みアプリケーションに入力を提供することができる。さらなる例では、組み込みアプリケーションは、チャット会話におけるチャットユーザのリスト（難読化されたチャットＩＤなど）にアクセスすることができ、チャット会話への招待を発行して、非メンバーチャットユーザを組み込みセッションに参加させることができる、例えば、非メンバーチャットユーザは、招待を選択して自分のデバイスを組み込みセッションに参加させることができる。
【０１０７】
いくつかの例では、組み込みアプリケーションは、ユーザに代わって（例えば、後述のようにユーザの承認を得て）チャットメッセージをチャット会話に送信することができる。いくつかの実装形態では、そのようなメッセージの属性は、ユーザのチャット識別情報ではなく、組み込みアプリケーションとすることができ、例えば、組み込みアプリケーションは、そのチャットメッセージの発信者としてそれ自体のチャット識別情報を仮定することができる。そのようなチャットメッセージは、ミーム、テキスト、画像、ビデオ、または組み込みアプリケーションにおいてユーザによって実行された編集から生じる他のタイプのコンテンツデータ、組み込みアプリケーションにおいてユーザによって編集されたウェブコンテンツスニペットなどを含むことができる。いくつかの例では、他のチャットデバイスのチャットインタフェースに表示されるような組み込みアプリケーションの属性または名前は、ユーザ入力によって選択可能であり、選択された場合、同じ共有されたコンテンツデータを編集または他のコンテンツデータアイテムを編集するために組み込みアプリケーションが開かれる。
【０１０８】
組み込みインタフェースは、チャット会話に対する追加の機能を修正、設定、または有効化するために、表示されたオプションを提示することができる。例えば、そのような機能は、自動返信機能（ランダムな提案回答を選択すること、または第１のユーザからの以前の類似の質問への以前の回答で質問へ自動回答すること）、単語がチャット会話に送られるか、または第１のデバイス上での表示のために受信される前に特定の単語を検閲または置換することなどを含み得る。例えば、組み込みアプリケーションは、ＡＰＩを使用して、ユーザのチャット会話エクスペリエンスを変更できる。従って、いくつかの実装形態では、組み込みアプリケーションは、メッセージングアプリケーション内で変更された設定および／または提供される機能を可能にする視覚的インタフェースを提供する（例えば、チャットユーザに共有されたコンテンツデータを提供する代わりに、またはそれに加えてメッセージングアプリケーション機能を提供する）。
【０１０９】
さらなる例では、チャット会話に出力される通知（または他のデータ）は、チャットユーザによって入力されたチャットメッセージに基づくメッセージを含むことができる。例えば、第１の組み込みアプリケーションは、チャット会話においてユーザによって入力されたチャットメッセージのリストをチェックし、チャットメッセージ内のスラング対適切な語彙の使用を判定し（例えば、スラングや語彙などを用いてトレーニングされた機械学習モデルを使用して、格納された辞書を調べることによって）、チャットにおけるユーザの書き込みに対するスコアを示す通知に評価を出力することができる。組み込みアプリケーションは、例えば、チャットメッセージにおけるユーザによる特定の単語の使用頻度、または特定の単語を使用することに対するユーザへの異議を通知において決定および指示することができる（そして後の通知において、ユーザが特定の単語を使用したことを検証することができる）。いくつかの実装形態では、チャットの会話に出力された通知は、組み込みセッションにおいて発生するイベント、例えば招待、他のユーザへの挑戦（「私のスコアを打ち負かせ」、「私の絵を当ててみて」、「私は塔を建てた、破壊してみて」）、または自慢／泣き言のメッセージまたは通知（例えば、プレイヤーが他のプレイヤーのキャラクタを殺した、他のプレイヤーがペットを盗んだと不平を言うプレイヤーなど）などの表示として、組み込みセッションにおける１または複数のメンバーユーザから異なるメンバーユーザへのメッセージを含むことができる。
【０１１０】
いくつかの追加の例では、チャット会話メッセージストリームへのアクセスを有する組み込みアプリケーションは、チャット会話に関する情報、例えば会話の高レベルの要約、チャットユーザによりチャット会話で共有されたコンテンツデータの記録またはリスト、ユーザがチャット会話から収集したトピック、情報、または共有されたコンテンツデータを選択して後で保存し、ユーザのお気に入りリストに保存できるようにする、チャットインタフェースまたは組み込みインタフェースにおける制御または他のオプションの表示（ピン止めなど）を提供することができる。例えば、組み込みアプリケーション（例えば、特定の「サマライザ」タイプの組み込みアプリケーション）は、チャット会話で共有されているトピックを検出し、それらのトピックに関連するリマインダ、要約、および／またはアクションを提供することができる。いくつかの例では、ユーザ１は、ユーザ２に「土曜日のケニーの誕生日を忘れないで」と伝え、組み込みアプリケーションは、開始されると、自動的に、彼らのユーザデバイスに格納されたユーザ１およびユーザ２のカレンダーにカレンダーイベントを追加し、またはコマンドまたは通知がユーザによって選択されたときに組み込みアプリケーションにカレンダーイベントを追加させる提案コマンドまたは通知を表示する。別の例では、ユーザ３は、来週の再会ディナーのためのレストランの住所または場所を含むチャット会話にメッセージを入力し、組み込みアプリケーションは、１週間後に第１のユーザがその場所を見つけるために古いチャットメッセージをレビューおよびスクロールする必要がないように、その場所を要約としてチャットインタフェースに自動的にピン止め（持続的に表示）するか、そうでなければ格納する。例えば、要約は、チャット会話に入力された記述および識別情報（例えば、時間、場所、名前、電話番号、住所など）を含むことができ、および／またはチャット会話において他のチャットユーザから反応を受け取ったメッセージ（例えば、ユーザの承認、感嘆のメッセージなど）を含むことができる。別の例では、ユーザ１は、チャット会話において最近の社員旅行からキャプチャされた画像を共有し、組み込みアプリケーションは、自動的に（ユーザの同意を得て）その画像を（例えば、ネットワークを介してサーバに格納される）すべてのチャットユーザと共有される共有グループ写真アルバム「ベガスへの社員旅行」にアップロードする。いくつかの実装形態では、組み込みアプリケーションがチャット会話コンテンツデータに基づいてそのようなアクションを実行する機能を持たない場合、それは、その機能を持ち、そのアクションを実行する別の組み込みアプリケーション（または他のアプリケーション）の開始および実行をトリガすることができる。いくつかの実装形態では、組み込みアプリケーションの１つまたは複数のそのようなアクションは、本明細書で説明されるように、選択されたコマンドを実装するために第１のユーザによって選択され得る提案コマンドおよび／または提案メッセージとして提示され得る。
【０１１１】
いくつかの実装形態では、チャット会話への通知は、ネットワークを介してメッセージングアプリケーションおよび／または組み込みアプリケーションと通信するサーバ上で発生した１つまたは複数の特定のイベントまたは特定のタイプのイベント（例えばサーバイベント）、例えば、サーバ上で実行されているサーバアプリケーションで処理されたイベントに応答して提供され得る。サーバは、メッセージングアプリケーションがチャット会話においてサーバイベント情報を表示するように、メンバーデバイスの１つまたは複数にサーバイベント情報を送信することができる。いくつかの例では、このサーバは、他のネットワークユーザのために第２のコンテンツデータを管理することができ、ここで、第２のコンテンツデータは、サーバが第１のユーザデバイス上の組み込みアプリケーションに提供している第１のコンテンツデータ（例えば、メディアアイテムデータ、ゲームデータなど）と同じまたは関連するものである。例えば、サーバは、他の組み込みアプリケーションおよび／または他のメカニズム（例えば、ウェブサイト、ユーザデバイス上の専用閲覧アプリケーションなど）を介して（例えばチャット会話に参加していない）他のユーザデバイス上のコンテンツデータにアクセスする１または複数の他のユーザにネットワークを通じて第２のコンテンツデータを送信し得る。サーバは、第２のコンテンツデータが組み込みアプリケーションに提供された第１のコンテンツデータと同じか類似しているか（例えば、同じタイトルのメディアアイテム、ゲームなど）を検出することができる。さらに、サーバは、第１のコンテンツデータおよび第２のコンテンツデータに関連するユーザのアクションを検出することができ、それらはサーバイベントとしての資格を有し得る。例えば、サーバは、第２のコンテンツデータが他のユーザから、例えば好ましい評価の閾値数を超える、複数の好ましいユーザ評価を受け取ったことを検出することができる。これはサーバイベントとして事前定義されることが可能であり、サーバにサーバイベント情報（例えば、「この映画は１００万の支持を受けました！」）を第１の組み込みアプリケーションに送信させて組み込みインタフェースで表示し、および／またはメッセージングアプリケーションに送信させてチャットインタフェースで表示する。
【０１１２】
いくつかの実装形態では、ユーザの同意が得られた場合、組み込みアプリケーションから提供される出力は、組み込みインタフェースにおいて第１のユーザから受信したユーザ入力に基づく入力情報を含むことができ、メッセージングアプリケーションは、例えば、他のメンバーデバイスでの表示などのために、入力情報を、ネットワークを介してサーバに送信する。メッセージングアプリケーションは、さらに、または代替的に、入力情報を決定してサーバに送信することもでき（ユーザの同意が得られた場合）、入力情報は、組み込みインタフェースの外部のチャットインタフェースで受信されたユーザ入力に基づく。例えば、ユーザ入力は、チャットメッセージ、組み込みセッションで再生されているコンテンツアイテム（例えば、メディアアイテムまたはゲーム）に関連するユーザのコメントまたは評価などであり得る。いくつかの実装形態では、これらのコメントまたは評価はサーバによって受信され、サーバがデバイスに提供するコンテンツアイテムに関連付けられることが可能である。サーバは、サーバ上のコンテンツアイテムにアクセスするユーザデバイスにコメントまたは評価を提供することができる。例えば、チャット会話に参加していない他のユーザデバイスは、例えば異なる組み込みセッションまたは他のアプリケーションを介して、サーバ上のそのコンテンツアイテムにアクセスし得る。そのような他のユーザデバイスは、第１のユーザによって提供されたコメントまたは評価にアクセスすることもできる。例えば、ユーザのコメントまたは評価などのユーザ入力は、他のユーザデバイスに送信され、他のユーザデバイス上の組み込みインタフェースまたは他のアプリケーションプログラムに表示され得る。
【０１１３】
いくつかの実装形態では、ユーザの同意が得られた場合、サーバに送信された入力情報は、第１のデバイス上の組み込みアプリケーションで再生された特定のコンテンツアイテムを示す情報を含み得る。サーバは、入力情報に基づいてコンテンツアイテムのユーザ選択の格納された履歴を更新することができ、履歴は、第１のデバイスの第１のユーザに関連付けられる。格納された履歴は、サーバによって格納され、第１のユーザによって使用される他のアプリケーションにおいて閲覧されるコンテンツアイテムのユーザ選択を示すこともできる。いくつかの実装形態では、サーバは、格納された履歴を使用して、第１のユーザによってサーバ上で以前にアクセスされたコンテンツアイテムに関連するユーザの提案コンテンツアイテム（例えば、ジャンル、他のユーザによる視聴など）を判定することができる。いくつかの実装形態では、そのようなサーバ提案コンテンツアイテムは、チャットインタフェースにおいて、および／またはそのタイプのコンテンツアイテムを再生する組み込みアプリケーションによって、表示され得る。
【０１１４】
さらに、組み込みアプリケーション、ボット（以下のボットの説明を参照）、またはサーバによって生成された情報は、新しい条件がトリガされた場合に組み込みアプリケーション、ボット、またはサーバによって更新され得る。一例では、ユーザ１は、組み込みメディアプレーヤアプリケーションを使用して、チャット会話における組み込みセッションでビデオを共有する。ユーザ２は、自分のデバイスで対応する組み込みメディアプレーヤアプリケーションを開き、ビデオに対するコメントまたは評価を行う。組み込みアプリケーション、ボット、またはサーバは、共有されたビデオを更新し、チャット会話に表示されているビデオを説明する通知を更新して、新しい情報をチャットユーザに反映および伝達することができる（例えば、ビデオに＋１のユーザ支持、＋１のユーザコメントがあることを示す表示を示す）。いくつかの実装形態では、組み込みセッションに関する更新可能な「インタラクティブカード」がチャット会話で共有され、それはサーバ、ボット、または組み込みアプリケーションによって制御され得る。
【０１１５】
いくつかの実装形態では、第１の組み込みアプリケーションからの出力データが、チャット会話および／またはサーバに表示のために出力されるべき場合、チャット会話でデータが出力されることを許可するかどうかを第１のユーザが選択することを可能にするプロンプトが（ユーザ選択可能なオプションと共に）表示される。例えば、プロンプトは、ユーザによって承認された場合にチャット会話またはサーバに送信されるべきメッセージを表示することができる。いくつかの実装形態では、プロンプトは、チャット会話への特定のタイプの出力データ（例えば、事前定義されたキーワードを有する、特定の種類のイベントを示す特定の種類のメッセージ、特定の種類のアクションに対する応答である出力データ、メンバーユーザにより組み込みアプリケーションに提供されたコマンドなど）に対して表示されることが可能であり、他のタイプに対しては表示されない。このプロンプトは、特定のタイプの組み込みアプリケーションに対しては表示され得るが、他のタイプに対しては表示されない。いくつかの実装形態では、第１のユーザは、プロンプトが表示されるべき条件を決定するためにアクセスされるアクセス可能なユーザプリファレンスを格納していてもよい。例えば、ユーザプリファレンスは、プロンプトが、ゲームタイプの組み込みアプリケーションからチャット会話への出力を送信するためのユーザの同意を求めるべきであり、メディアプレーヤタイプのアプリケーションまたは他のタイプのアプリケーションに対するプロンプトを提供しないことを示し得る。
【０１１６】
出力は、ネットワークを介して、例えば関連するメッセージングアプリケーションおよび／またはサーバシステムを介して、他のメンバーデバイス上で実行されている対応する組み込みアプリケーションに送信されるデータを含むこともできる。例えば、送信されたデータは、例えば第１の組み込みアプリケーションにおける要素を選択し、または状態を変更する、第１のユーザから第１の組み込みアプリケーションによって受信されたユーザ入力（またはそれから導出されたデータ）を含むことができる。送信されたデータは、上記と同様に、第１の組み込みアプリケーションにおいて生じる１つまたは複数のイベントを示すイベント情報を含み得る（例えば、第１のユーザからのユーザ入力、コードの実行および特定の条件に基づくプログラムイベント、または第１の組み込みアプリケーションに局所的に生じる他のイベントに基づく）。データは、ネットワークを介して他のデバイスにデータ（またはデータの処理済み形式）を送信することができる第１のメッセージングアプリケーションに提供され得る。例えば、データは、データを他のメンバーデバイスに送信することができるメッセージルータ、例えば上述のセッションサーバに送信されることが可能であり、および／またはデータは、１つまたは複数のメンバーデバイスに直接送信されることが可能である。他のメンバーデバイスは、ユーザ入力および／またはイベント情報を受信し使用して、対応する組み込みアプリケーションの状態を更新し、第１の組み込みアプリケーションと同期することができる。
【０１１７】
いくつかの例では、組み込みアプリケーションからの出力は、組み込みセッションで発生した１つまたは複数の特定のイベント（またはイベントの種類）を示すイベントデータを含むことができる。イベントデータは、組み込みアプリケーションからメッセージングアプリケーションに提供されることが可能であり、メッセージングアプリケーションは、イベントデータに基づいて通知を生成し、その通知をチャットインタフェースに表示させ、ネットワークを介して送信してメンバーデバイスおよび／またはチャットデバイスのためのチャット会話（例えば、チャットインタフェース）において表示させる。例えば、イベントは、第１の組み込みアプリケーションで発生している可能性がある。様々な例では、組み込みセッションにおけるイベントは、第１のユーザからの第１のユーザ入力、および組み込みセッションの１または複数のメンバーユーザから受信された他のユーザ入力に応答して発生している可能性がある。いくつかの例では、イベントの種類は、メディアアイテムの再生位置を変更すること、または組み込みメディアプレーヤアプリケーションにおけるメディアアイテムの再生を開始または停止すること、目的を達成すること、ゲームまたはゲーム期間の特定のフェーズもしくは一部、または組み込みゲームアプリケーションによって提供されるゲームにおける他のゲームイベントを終了すること、組み込みリストアプリケーションにおけるコンテンツドキュメント（例えば、共有されたリスト内のアイテム）を修正すること、組み込み予約アプリケーションを介して座席を予約することなどであり得る。いくつかの実装形態では、組み込みセッションにおけるイベントは、組み込みセッションを管理するサーバ（例えばセッションサーバ）上で発生している可能性があり、これは、メッセージングアプリケーションにイベントデータを提供し、チャット会話で表示するための通知を生成できる。そのようなサーバ上のイベントの種類は、チャット会話の外部の他のユーザからのネットワークを介したサーバにおける入力データの受信、組み込みセッションで再生しているコンテンツアイテムに関連する新しいコンテンツアイテムの利用可能性（例えば、新しいメディアアイテムは、再生しているメディアアイテムと同じアーティスト、著者、俳優、制作会社、ジャンルなどを有していること、または、そのユーザが同意している場合、新しいコンテンツアイテムが１または複数のメンバーユーザのお気に入りリストにあることがわかっていること）、１または複数のメンバーユーザのサーバからの切断などを含み得る。
【０１１８】
いくつかの例では、組み込みアプリケーションは、制御情報を（例えばメッセージングアプリケーションを介して）第１のユーザデバイス上で実行されている（または開始されている）またはネットワークを介して第１のユーザデバイスと通信する別のデバイス上で実行されている外部アプリケーションに出力し得る。いくつかの例では、組み込みアプリケーションは、家電製品、車両機能（ドアのロック／アンロック、サーモスタットの変更など）、または他の種類のデバイスを制御するアプリケーションに制御情報を出力することができる。例えば、そのような制御情報は、組み込みインタフェースにおいて表示された制御（例えば、ボタン、ダイヤルなど）の選択に応答して、または第１のユーザによって入力されたチャットメッセージ（例えば、制御情報の出力に、ユーザの家のドアを開錠させる「玄関のドアを開けて」）に応答して自動的に、またはチャットユーザによって入力されたチャット会話におけるチャットメッセージ（例えば、組み込みアプリケーションに車のドアを開錠するための制御信号を送信させる、車に乗ることについてのメッセージ）に基づいて出力され得る。別の例では、組み込みアプリケーションは、組み込みインタフェースまたはチャット会話において第１のユーザおよび／または他のチャットユーザからの入力を受信することに応答して、コンソール／デスクトップゲームのゲーム状態に影響を及ぼすためのアプリケーションデータを送信することができる。例えば、チャットユーザは、組み込みインタフェースにおいて制御を選択してサーバにデータを送信することができ、データは、異なるゲームデバイス上のゲームアプリケーションによって読み取られて、（上述のように）ゲームリソースを変更するか、またはゲームデバイス上でゲームをスタートし、ゲーム内でゲームアクションを実行するなどができる。別の例では、組み込みアプリケーションは、チャット会話におけるチャットユーザからのチャットメッセージ（例えば、「ゲームに参加しよう」）に基づいて、チャットユーザのゲームキャラクタをゲーム内のグループに形成する情報をゲームに自動的に送信することができる。チャットデバイス上で提供されるチャット会話は、ゲームデバイス上で実行中のゲームのプレイヤー間のチャットインタフェースとして機能することができる。いくつかの実装形態では、制御情報は、後述のように、外部アプリケーションに対する提案コマンドとしてチャットインタフェースに提示されることが可能であり、それはユーザ入力による選択に応答して外部アプリケーションに送信され得る。
【０１１９】
さらなる例では、組み込みアプリケーションは、チャット会話における第１のユーザの視覚的表現を恒久的または一時的に修正するためにメッセージングアプリケーションにデータを提供することができる。例えば、ユーザのステータスまたはロールは、すべてのメッセージまたはユーザ名（例えば、「ユーザ１−プレイヤー」）または組み込みアプリケーションによって付与されたタイトル（例えば、ゲームの場合は「ユーザ１−征服者」）の隣に表示され得る。さらなる例では、フィルタが適用されて、チャットインタフェースに表示されるユーザプロファイル画像を修正し、および／または第１のユーザによって入力されたチャットメッセージを修正することができる（例えば、色、境界線、枠、ステッカーなどで強調表示される）。そのような修正は、第１のユーザが組み込みセッションに参加している間に、および／または組み込みアプリケーション内のアチーブメントに対する報酬として提供され得る。報酬は、すべてのチャットユーザによる使用のために他の組み込みアプリケーションのロックを解除することを含み得る。公開されたＡＰＩを介したメッセージングアプリケーションと組み込みアプリケーションとの間の統合により、そのような機能が可能となる。
【０１２０】
一部の組み込みアプリケーションは、組み込みアプリケーションのタイプに基づいて、および／または組み込みアプリケーションまたはチャット会話におけるイベントに応答して、チャットインタフェースにおいて、表示されたキーボードレイアウト、表示されたボタン、または他の表示された制御（またはオペレーティングシステムによって提供された制御またはユーザデバイスによって表示された他のインタフェース）を変更し得る。例えば、チャットインタフェースに表示されたキーボードのレイアウトは、特定の組み込みゲームアプリケーションに特化したゲームコントローラに合うように変更され得る。別の例では、ゲームで目的を達成すること、またはゲームで敗北することなどのイベントは、ユーザのためのゲームにおける増加または減少されたオプションに従って、１つまたは複数の表示されたボタンをチャットインタフェースに追加またはチャットインタフェースから除去させることができる。別の例では、ユーザがテキストクエリを入力してアイテム（例えば、製品）の検索を実行するときに、より多くの文字が入力されると、組み込みアプリケーションは、どの検索結果にも一致しないクエリに対する追加の推奨文字を表示から削除させるか、または一致する文字よりも低い可視性で表示される（例えば、グレーアウトされる）ようにする。
【０１２１】
追加の例では、様々な種類の組み込みアプリケーションが、メッセージングアプリケーションと関連して実行され得る。例えば、組み込みメディアプレーヤアプリケーションは、関連する組み込みインタフェースおよび／またはチャットインタフェースにおいてメンバーユーザからユーザ入力を受信することができる。入力は、ビデオ、画像、オーディオデータ、ドキュメントなどのメディアアイテムの再生機能を選択することができ、組み込みアプリケーションからの出力は、メディアアイテムの再生を提供することができる。組み込みゲームアプリケーションは、ゲーム状態を変更することができるメンバーユーザからのユーザ入力を受信することができ、アプリケーションの出力は、ゲーム環境およびゲーム状態を示す視覚的、聴覚的、および触覚的出力を含むことができる。組み込み共有ドキュメントアプリケーションは、共有されたコンテンツドキュメント（例えばリストまたは他のドキュメント）を変更することができるメンバーユーザからのユーザ入力を受信することができ、組み込みアプリケーションの出力は、更新されたコンテンツドキュメントを表示することができる。組み込み旅行日程アプリケーションは、旅行先、ルート、時間、および他の旅行関連のプリファレンスを選択することができるメンバーユーザからのユーザ入力を受信することができ、組み込みアプリケーションの出力は、利用可能な旅行ルートや、特定のルート、時間、旅行方法を、ユーザ入力を用いて選択するオプションなどの表示を含み得る。組み込み予約アプリケーションは、メンバーユーザがホテル、レストラン、映画、コンベンション、乗り物、公園、娯楽パフォーマンス、および他の将来のイベントの場所または出席を予約することを可能にする選択可能なオプションを表示することができる。例えば、そのような組み込みアプリケーションは、場所を予約する時間、場所、およびイベントを指定するメンバーユーザからのユーザ入力（例えば、ユーザによる座席、テーブル、またはグラフィカルディスプレイ内の他の場所の選択を含む）を受信することができ、組み込みアプリケーションは、提案イベントおよび日付／時刻、予約が成功または拒否されたことの表示などを出力することができる。いくつかの実装形態では、（例えば、異なる機能または目的を有する）様々な種類の組み込みアプリケーションが、単一の組み込みアプリケーションに組み合わせられ得る。
【０１２２】
ブロック２２２において、第１のメッセージングアプリケーションが第１のデバイスで終了されたかが判定される。例えば、第１のデバイスによって受信されたユーザ入力は、メッセージングアプリケーションを閉じることができる。第１の組み込みアプリケーションが終了された場合、ブロック２２４において、チャットインタフェースは、第１のデバイスのディスプレイから除去され、これは、組み込みインタフェースの除去を含む。いくつかの実装形態では、組み込みアプリケーションも第１のデバイスのメモリから削除される。加えて、第１のデバイスが組み込みセッションを終了したことを示すために、組み込みセッションを管理するデバイス、例えばセッションサーバに情報が送信され得る。いくつかの実装形態では、管理デバイス（例えば、セッションサーバ）は、セッションユーザリストを更新して第１のユーザを削除し、この更新を組み込みセッションの他のメンバーデバイスに提供する。
【０１２３】
メッセージングアプリケーションが終了されていない場合、ブロック２２６において、第１の組み込みアプリケーションが第１のデバイスにおいて閉じられたかがチェックされる。例えば、ユーザ入力は、チャットインタフェースまたは組み込みインタフェースにおいて表示された要素を選択して組み込みアプリケーションを閉じる第１のユーザから第１のデバイスにおいて受信され得る。第１の組み込みアプリケーションが閉じられている場合、ブロック２２８において、組み込みインタフェースは、第１のデバイスのディスプレイから除去される。いくつかの例では、組み込みインタフェースを除去することにより、チャットインタフェースが、以前は組み込みインタフェースによって占められていた領域を占有することが可能になる。さらに、ブロック２２４に関して説明したのと同様に、第１のデバイスが組み込みセッションを終了したことを示すために、組み込みセッションを管理するデバイス（例えばセッションサーバ）に情報が送信され得る。
【０１２４】
ブロック２３０において、いくつかの実装形態では、組み込みアプリケーションが１つまたは複数の他のメンバーデバイスによって使用中であることを示す表示が、もしそのような状態が存在する場合、チャットインタフェースに表示される。例えば、表示は、組み込みアプリケーションが第１のユーザによって終了された組み込みセッションにおいて使用され続けている間に、チャットインタフェースに表示されるアイコンまたは他の要素であってよい。いくつかの実装形態では、表示がユーザ入力によって選択されて、第１のユーザおよび第１のデバイスを組み込みアプリケーションの組み込みセッションに再参加させること、例えば、第１のデバイスのメモリに格納されたコードから組み込みアプリケーションを再実行すること、および／または組み込みアプリケーションをダウンロードして実行することができる。いくつかの実装形態は、すべてのユーザが組み込みアプリケーションを終了した場合、および／または閾値期間の後にメンバーユーザが組み込みセッションまたは組み込みアプリケーションと対話（例えば入力を提供）しなかった場合、表示された表示を除去できる。
【０１２５】
いくつかの実装形態では、複数の組み込みアプリケーションが同時に実行され得、複数の組み込みインタフェースがチャットインタフェースに関連して第１のユーザデバイスによって表示され得る（例えば、上述の組み込みインタフェースの場合と同様に）。いくつかの例では、複数の組み込みアプリケーションが、第１のユーザデバイス上で同時に実行され得る。いくつかの実装形態では、複数の組み込みアプリケーションは、互いにデータを通信することができる。例えば、１つの組み込みアプリケーションは、他の組み込みアプリケーションにコマンドを送信して、他の組み込みアプリケーションに１つまたは複数の状態を更新させ、メンバーユーザを削除または追加させることなどができる。
【０１２６】
いくつかの実装形態では、メッセージングアプリケーションは、会話「通貨」を管理することができる。これは、組み込みアプリケーションによって生成され、チャットユーザによって獲得され、組み込みアプリケーション内および／またはメッセージングアプリケーション内で他のチャットユーザと交換され得る仮想通貨であってよい。いくつかの例では、ユーザは、組み込みアプリケーションにおいて特定のタスクまたは目標を実行するとき、例えば、ゲーム内で目的を達成するとき、ビデオまたは画像を閾値時間または閾値数の編集操作で編集するとき、メディアアイテムを一定時間再生するとき、共有されたリストを編集するとき、旅行の予約を完了するときに、トークンまたは「コイン」を受け取ることができる。様々な実装形態において、通貨は、報酬、例えばチャットインタフェースの視覚的特徴を変更させる能力、新しいオプションを選択する能力、またはチャットインタフェースの他の特徴を使用する能力を得るためにユーザによって費やされ得る。さらなる例では、通貨は、チャット会話に挿入することができる視覚的テキスト文字、アイコン、または画像（例えば、「ステッカーパック」）の使用、特定の会話機能の使用（例えば、メッセージテキストのフォントの変更、チャット識別情報への色またはタイトルの追加、チャット会話における特定の画像やアバターの使用）、特定の組み込みアプリケーションの使用などを可能にする（アクセスをアンロックする）ために費やされ得る。いくつかの実装形態では、通貨は、組み込みアプリケーションにおける機能をアンロックまたは改善するために使用され得る（例えば、ゲームにおける特定のアバターまたはキャラクタの使用、金銭的割引による特定のメディアアイテムへのアクセス、組み込みインタフェースに対する異なる表示外観の使用など）。別の例では、ユーザは、特定の量の通貨を異なるチャットユーザに送ることができ、あるいは獲得した報酬またはアクセス権をある量の通貨と引き換えに異なるチャットユーザに譲渡する（またはコピーする）ことができる。いくつかの実装形態では、通貨が実際の通貨に変換されて、個人対個人の支払い（例えば、レストランで請求書を分割すること、または少額の負債を決済すること）を可能にし得る。
【０１２７】
図３は、いくつかの実装形態による、ユーザが組み込みセッションに参加することを可能にするための例示的な方法３００を示す流れ図である。いくつかの例では、方法３００は、図２のブロック２１８に含めることができる。いくつかの実装形態では、方法３００は、例えば図１に示されるようなメッセージングサーバ１０１などのサーバシステム上で実装され得る。いくつかの実装形態では、方法３００のいくつかまたはすべては、図１に示されるような１つまたは複数のクライアントデバイス１１５などのシステム、および／またはサーバシステムと１つまたは複数のクライアントシステムとの両方で実装され得る。記載の例では、実施するシステムは、１つまたは複数のプロセッサまたは処理回路と、データベースまたは他のアクセス可能な記憶装置などの１つまたは複数の記憶デバイスとを含む。いくつかの実装では、１つまたは複数のサーバおよび／またはクライアントの異なる構成要素が、方法３００の異なるブロックまたは他の部分を実行してよい。
【０１２８】
いくつかの実装形態では、方法３００は、図２の方法２００とは異なるユーザデバイス、例えば第２のユーザデバイス上で実装され得る。例えば、第２のデバイスは、ネットワークを介して図２の第１のデバイスと通信することができる。第２のデバイスは、チャット会話に参加しており、組み込みセッションは、チャット会話に参加している異なるデバイスのチャットユーザによって開始されている。図３の例では、組み込みセッションは、図２を参照して説明したように第１のデバイスの第１の組み込みアプリケーションに関連して開始されており、第２のデバイスは、第１のユーザおよび第１のデバイスが参加している同じチャット会話に参加している。
【０１２９】
ブロック３０２では、方法３００の実装においてユーザデータを使用するためにユーザ同意（例えばユーザ許可）が取得されているかどうかをチェックする。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザプリファレンス、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【０１３０】
方法３００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック３０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な利用により実装され得ると判定され、方法はブロック３０８に続く。ユーザの同意が得られていない場合、ブロック３０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック３０８に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【０１３１】
ブロック３０８において、組み込みアプリケーションのための組み込みセッションがアクティブであるという表示（例えば、通知）が、第２のデバイスの第２のメッセージングアプリケーションにおいて受信される。いくつかの例では、表示は、開始された特定の組み込みアプリケーションを示し、関連する組み込みセッションが開始されたことを示すデータであり得る。いくつかの実装形態では、表示は、組み込みセッションを開始したチャット会話からのチャットユーザの識別を含むことができる。いくつかの実装形態では、表示のデータは、例えば組み込みセッションが開始された後に、セッションサーバによって送信されていてもよい。
【０１３２】
いくつかの実装形態では、現在組み込みセッションのメンバーである（例えば組み込みセッションに参加した）チャットユーザの識別（例えばユーザＩＤ）は、受信された表示に含まれる。例えば、図１を参照して説明したセッションユーザのリストは、表示に提供され得る。あるいは、メンバーユーザの現在の数は、メンバーユーザの識別なしに示され得る。いくつかの実装形態では、受信された表示は、追加の情報を含み得る。例えば、情報は、組み込みセッションが開始されてからの経過時間、組み込みセッションにおける組み込みアプリケーションの１つまたは複数の現在の状態、および／または組み込みセッションに関連する他の情報を含むことができる。いくつかの例では、追加情報は、現在再生されている、再生されるべきキューにある、またはそうでなければ組み込みセッションのために処理されているメディアアイテムの名前、組み込みセッションで編集されている共有されたリスト（または他の共有されたドキュメントデータ）の現在のアイテム数、組み込みセッションに関するメンバーユーザの１または複数のステータス（例えば、コントローラー、プレイヤー、オブザーバーなどとしてのユーザの識別、および／または現在ドキュメントを編集しているか、または組み込みセッションで実装されたゲームに勝利しているユーザの識別）、組み込みセッションでこれまでに達成された目標のリスト（例えば、ビデオの再生の終了、ゲームの目的の完了、リストの完成など）、追加のユーザメンバーが組み込みセッションに参加するための、セッションの１または複数の現在のメンバーユーザから特定の要求を含み得る。いくつかの実装形態では、追加情報は、組み込みセッションにおいて発生するイベント、例えば招待、他のユーザへの挑戦（「私のスコアを打ち負かせ」、「私の絵を当ててみて」、「私は塔を建てた、破壊してみて」）、自慢または泣き言の通知（例えば、プレイヤーが他のプレイヤーのキャラクタを殺した、他のプレイヤーがペットを盗んだと不平を言うプレイヤーなど）などの表示として、組み込みセッションにおける１または複数のメンバーユーザから第２のユーザまたは他のメンバーユーザへのメッセージを含むことができる。いくつかの実装形態では、この情報に対する更新は、後の時点で第２のデバイスによって受信されることが可能であり、例えば、現在のメンバーユーザ数、組み込みアプリケーションの現在の状態などに対する更新がある。
【０１３３】
ブロック３１０において、第２のメッセージングアプリケーションは、第２のデバイスによる通知および参加オプションの表示（または他の種類の提示または出力）を引き起こす。通知は、ブロック３０８で受信された情報の１つまたは複数のアイテム、例えばブロック３０８に示されているアクティブな組み込みセッションに関する記述情報を含むことができる。例えば、情報のそのようなアイテムは、組み込みセッションで使用されている組み込みアプリケーションの名前または識別子、共有されているコンテンツデータ（例えば、再生されたメディアアイテム、編集されたコンテンツドキュメントなど）、組み込みセッションに参加している現在のメンバーユーザ、組み込みセッションに関するメンバーユーザの１または複数のステータス、参加している組み込みアプリケーションの現在の状態、メンバーユーザからのメッセージ、および／またはブロック３０８の表示で受信された他の情報を含み得る。さらなる例では、通知における情報は、組み込みアプリケーションのコンテンツデータまたはステータス（メディアアイテムの再生位置、ゲーム内のハイスコア、ゲーム状態情報）、またはチャット会話のコンテンツデータ（ユーザプライバシー制御によって許可されるような）を指すことができる。さらに、通知情報は、組み込みアプリケーションのダウンロードサイズおよびアプリケーションの説明、ユーザデータの使用のためにユーザ許可が要求されていることの表示、および組み込みアプリケーションがアクセスするデータのタイプ（例えばユーザデータ）、すでに組み込みセッションに参加したユーザのリストなどを含み得る。いくつかの実装形態では、表示された通知は、本明細書で説明されているような「インタラクティブカード」の形をとることができる。
【０１３４】
参加オプションは、ユーザ入力によって選択された場合に第２のユーザがアクティブな組み込みセッションに参加できるようにする選択可能なオプションである。いくつかの実装形態では、参加オプションは、チャット会話のデータが表示されているメッセージングアプリケーションのチャットインタフェースに表示されるインタフェース要素であり得る。例えば、参加オプションは、チャットインタフェースに表示される通知における選択可能な制御（例えばボタン）として表示され得る。
【０１３５】
いくつかの実装形態では、１つまたは複数の条件が満たされる場合、参加オプションが表示されるか、または強調表示されるか（例えば、明るい色で表示される、点滅することなど）、そうでなければディスプレイにおいて強調され得る。例えば、条件は、第２のユーザの格納されたユーザプリファレンスにおいて指定され得る。そのような条件は、例えば、組み込みセッションが特定のタイプであるかまたは特定の組み込みアプリケーションに関連付けられているか、１または複数の特定のユーザが現在セッションのメンバーユーザであるか、特定のユーザステータス（例えば、ユーザロール）が組み込みセッションにおいて第２のユーザに対しまだ利用可能であるか（例えば、他のメンバーユーザにはまだ割り当てられていない）、組み込みセッションが指定された期間（例えば、図２の第１のユーザによる組み込みアプリケーションの開始後の期間）を超えてアクティブではなかったか、組み込みセッションで再生されているシーケンシャルメディアアイテム（例えば、ビデオまたはオーディオデータ）の出力が総再生時間の特定のパーセンテージを超えるまでまだ進行していないか、または他の条件を含み得る。
【０１３６】
いくつかの実装形態では、参加オプションは、組み込みセッションに参加することに加えて、１つまたは複数の表示された追加のオプション（例えば、追加のオプションに対応する表示されたユーザインタフェース要素）を含み得る。例えば、追加のオプションは、第２のユーザが組み込みセッションで割り当てることができる、または割り当てられる予定の１つまたは複数の特定のユーザステータス（例えば、ユーザロール）に対するコマンドまたは要求を選択するためのオプションを含むことができる。ユーザステータスまたはロールは、事前定義されたユーザステータスまたはロールのセットから第２のユーザにより選択され得る。ユーザステータスは、組み込みセッションに参加しているユーザによって起動されることができる組み込みアプリケーションの１つまたは複数の機能を定義することができ、および／または組み込みアプリケーションおよび組み込みセッションのデータおよび／またはステータスを変更するユーザの能力を定義することができる。ユーザステータスまたはロールの例は、コントローラ（例えば、コンテンツドキュメント（例えばリスト）などのデータを修正することができる、またはメディアアイテムの再生を制御することができるユーザ）、ゲームにおけるプレイヤー（例えば、ゲームの勝者または敗者となり得る）、アプリケーションイベントのオブザーバー（例えば、メディアアイテムの表示された再生またはゲームのプレイを閲覧し、メディアアイテムの再生に影響を与えたり、ゲームアクションを入力したりはできない）、ゲームにおけるレフェリー（例えば、ゲームのルールを判定し、ゲームにおける次のラウンドのプレイを開始するなど）、アドミニストレータ（例えば、メディアアイテム再生またはゲーム組み込みアプリケーションの出力の開始および停止、ゲームにおけるプレイヤーへのリソースの割り当てまたは分割）、ゲームにおける複数のユーザのチームのリーダー、ユーザが組み込みアプリケーションの動作を変更することを可能にするユーザステータスまたはロール（例えば、ゲームのルールまたは条件の指定、メディアデータの再生または他の出力の制御）などを含み得る。いくつかのユーザステータスまたはロールは、制限または限定されることが可能であり、例えば、資格のあるユーザのみが、これらのロールに割り当てられることが可能であり（例えば、ゲームにおける最大プレイヤー数は、最大数に達した場合、追加プレイヤーのプレイヤーロールへの割り当てを制限することができる）、一方、他のステータスまたはロールは無制限であってもよい（例えば、ゲームのオブザーバー）。いくつかの実装形態では、参加オプションは、第２のユーザに関連する特定のタイプのユーザデータを使用するための組み込みアプリケーションに対するユーザからの許可の要求を含むことができる。
【０１３７】
ブロック３１２において、ユーザ入力が、第２のデバイスおよび第２のメッセージングアプリケーションによって受信され、ユーザ入力は、第２のユーザおよび第２のデバイスが組み込みセッションに参加することを指示する。例えば、ユーザ入力は、タッチスクリーンまたは他の入力デバイスを介して表示された参加オプション（ブロック３１０について説明されているように）を選択し、テキストまたはメニューコマンドを入力するなどの選択的ユーザ入力であり得る。いくつかの実装形態では、第２のユーザおよび第２のデバイスは、組み込みセッションに参加することが、そうするように指示するユーザ入力を明示的に受信することなく、可能である。例えば、１つまたは複数の条件は、第２のユーザの格納されたユーザプリファレンスにおいて指定されることが可能であり、条件のうちの１つまたは複数が満たされる場合に、組み込みセッションに自動的に参加するよう指示することができる。例えば、条件は、ブロック３１０について上述したように１つまたは複数の条件を含むことができる。
【０１３８】
いくつかの実装形態では、ユーザ入力は、第２のメッセージングアプリケーションによって受信されることが可能であり、組み込みセッションへの第２のユーザの参加に関連する追加の入力を指定する。例えば、ユーザ入力は、組み込みセッションにおける第二のユーザのステータスを選択することができる。いくつかの例では、ユーザ入力は、上述のように、第２のユーザに割り当てられる（または要求される）べき組み込みセッションにおけるユーザステータス（例えば、ロール）を選択または指定することができる。他の実装形態では、ユーザステータスまたはロールは、第２のユーザによって、第２の組み込みアプリケーションによって、または組み込みセッションに参加した後のセッションサーバによって選択され得る。いくつかの実装形態では、ユーザ入力は、ユーザが組み込みセッションを終了することを望む時間、アイコン、アバター、画像、または組み込みセッションのメンバーである間にユーザに関連付けられるべき他のデータの選択など、他の指定または選択を含み得る。いくつかの実装形態では、ユーザステータスまたは他の指定は、チャットインタフェースに表示されたメニューまたは他のオプションのリストから、ユーザ入力によって選択され得る。
【０１３９】
いくつかの実装形態では、第２のユーザおよび／または１または複数の他のチャットユーザは、アクティブな組み込みセッションに自動的に参加させられることが可能であり、またはアクティブな組み込みセッションに参加するために（例えば、ブロック３１０において）カスタマイズされたオプションを自動的に提供され得る。いくつかの例では、そのようなチャットユーザは、チャット会話における彼らの入力メッセージに基づいて、組み込みアプリケーションに興味があることが検出された可能性がある。一例では、３人のチャットユーザが、特定の地理的位置（例えばハワイ）への休暇を記述するチャットメッセージをチャット会話に入力する。チャットユーザの１人は、チャットインタフェースでコマンドを送って組み込み旅行日程アプリケーションを開始し、残りの２人のユーザは、自動的に関連する組み込みセッションに参加させられるか、チャット会話においてこれらのユーザによって入力されたメッセージを解析する（例えば、ロケーション名などを解析する）メッセージングアプリケーションまたは他のデバイスアプリケーションに基づいて、組み込みセッションが彼らの話した旅行の行先（例えば、ハワイ）に関連することを示す通知を供給され得る。
【０１４０】
ブロック３１４では、第２の組み込みアプリケーションが、ブロック３１２のアクティブな組み込みセッションに参加するためのユーザ入力に応答して、第２のデバイスに対しダウンロードおよび／または実行され、組み込みセッションには、参加するイベントが通知される。例えば、第２のデバイスは、図１について説明したのと同様に、組み込みアプリケーションをホストするサーバシステムに要求を送信し、サーバシステムから第２の組み込みアプリケーションをダウンロードすることができる。第２の組み込みアプリケーションのダウンロードは、例えば上記と同様に、第１のデバイスの動作環境のバックグラウンドで発生する可能性がある。第２の組み込みアプリケーションがダウンロードされた後（および／またはその間に）、それは第２のデバイス上で実行され得る。いくつかの実装形態では、第２の組み込みアプリケーションの１つまたは複数の部分または構成要素は、第２のデバイスと通信する１つまたは複数の他のデバイス、例えば１つまたは複数のサーバシステムによって実行され得る。いくつかの実装形態では、第２の組み込みアプリケーションは、第１の組み込みアプリケーションおよび組み込みセッションの他のメンバーデバイス上で実行される組み込みアプリケーションに対応する。例えば、第２の組み込みアプリケーションは、図１の第１の組み込みアプリケーションと同じコード（または実質的に同じコード）を含むことができる。
【０１４１】
第２のメッセージングアプリケーションは、第２のユーザが組み込みセッションに参加することを選択したことを示す通知情報を組み込みセッションに送信することができる。例えば、通知情報は、セッションサーバに送信されることが可能であり、セッションサーバは、通知情報（またはそれから導出された情報）をそれらのメンバーデバイスに送信することによって参加イベントを他のメンバーデバイス（第１のデバイスを含む）に伝達する。いくつかの実装形態では、セッションサーバは、セッションサーバによって格納されている組み込みセッションのセッションユーザリストを更新することができ、例えば、そのセッションユーザリストに第２のユーザを追加することができる。いくつかの実装形態は、通知情報を組み込みセッションの１つまたは複数の他のメンバーデバイスに直接送信することができる。いくつかの実装形態では、第２のデバイスは、組み込みセッションに参加するための要求を送信し、セッションサーバ（または組み込みデバイス）は、第２のデバイスを組み込みセッションに接続させる（および／または第２のデバイス上での第２の組み込みアプリケーションの実行を、もしまだ実行されていない場合に開始させる）応答を第２のデバイスに返送することができる。
【０１４２】
ブロック３１６において、第２のメッセージングアプリケーションは、第２のデバイス上の第２の組み込みアプリケーションにユーザ情報を提供する。いくつかの実装形態では、第２の組み込みアプリケーションは、そのようなユーザ情報を要求することができる。例えば、ユーザ情報は、メンバー更新、例えば組み込みセッションにおけるメンバーの更新を含むことができる。いくつかの例では、ユーザ情報は、組み込みセッションのメンバーユーザのユーザ識別情報を含むことができ、これは、例えば、チャット会話に参加しているユーザおよびユーザデバイスのチャット識別情報であり得る。この例では、第１のユーザのチャット識別情報、および他の任意のメンバーユーザのチャット識別が提供され得る。第２のメッセージングアプリケーションは、例えば、第２のメッセージングアプリケーションが、ブロック３０８においてユーザ識別情報を受信し、および／または第２のメッセージングアプリケーションによって実施されるチャット会話のためにメッセージングサーバから以前に受信した場合に、ユーザ識別情報を提供し得る。
【０１４３】
いくつかの実装形態では、第２のメッセージングアプリケーションが第２のユーザから同意を得た場合、特定のユーザ（例えば、第１のユーザ）のユーザ情報が、第２のメッセージングアプリケーションによって第２の組み込みアプリケーションに提供され得る。例えば、いくつかの実装形態では、そのような同意は、チャット会話について提供されたユーザ情報に含めることができる。ユーザからの同意が得られていない場合、ユーザ情報は、第２の組み込みアプリケーションに提供されない。
【０１４４】
いくつかの実装形態では、第２のメッセージングアプリケーションは、第２の組み込みアプリケーションにユーザ識別情報を提供する前に、ユーザ情報を匿名化して（例えば１つまたは複数のユーザ識別情報を匿名化または難読化して）、ユーザ情報が特定のユーザを記述しないようにし、または特定のユーザに関連付けることができない（または特定のユーザを部分的にのみ記述するか、特定のユーザに部分的にのみ関連付けられる）ようにすることが可能である。いくつかの例では、チャット識別情報がユーザ名である場合、「ダミー」の、または「一時的」な名前が、組み込みアプリケーションによる使用および組み込みセッションでの使用のために割り当てられ得る。例えば、第１のユーザのチャット識別情報は、「ユーザ１」、「友達１」、第１のユーザのイニシャル、第１のユーザのファーストネームなどの一般的な識別子または名前に変更され得る。例えば、「ＪｏｈｎＤｏｅ」のような名前は、一時的な仮名（例えば、「Ｋｅｎｎｙ」）に置き換えられ得る。匿名化されたユーザ情報は、１つまたは複数のユーザ識別情報として第２の組み込みアプリケーションに提供され得る。
【０１４５】
いくつかの実装形態では、第２のメッセージングアプリケーションは、追加のユーザ情報、例えば組み込みセッションで第２のユーザに割り当てられるべきユーザステータスまたはロールなども提供する。いくつかの実装形態またはケースでは、このステータスまたはロールは、第２のユーザによって、例えば組み込みインタフェースまたはチャットインタフェースにおいて選択された可能性がある。第２の組み込みアプリケーションは、追加された第２のユーザに基づいてその出力を更新し得る。例えば、第２のユーザのユーザ識別情報は、組み込みインタフェースに表示されているユーザリストに追加され得る。
【０１４６】
いくつかの実装形態では、ユーザのステータスまたはロールは、チャット会話において第２のユーザによって提供されたチャットメッセージに基づいてメッセージングアプリケーション（または組み込みアプリケーション）によって決定される（そして、例えば、このユーザステータスまたはロールは、第２のユーザによって選択される必要はない）。例えば、第２のユーザが、組み込みチェスゲームアプリケーションを開始することについてのチャット会話において、「私は白サイドをプレイしたい」というチャットメッセージを以前に入力した場合、メッセージングアプリケーションは、このメッセージを検出してその意味を判定し（例えば、キーワードまたはキーフレーズとの比較および／または機械学習の使用を介して）、第２のユーザが組み込みチェスゲームセッションに参加した後に、第２のユーザを自動的に白駒プレイヤーのユーザロールに割り当てることができる。メッセージングアプリケーションは、このユーザステータスを組み込みアプリケーションに提供して、ゲームにおいて白駒の第２のユーザの制御を割り当てることができる。
【０１４７】
いくつかの実装形態では、組み込みセッション内の特定のユーザロールは、組み込みセッションに追加されているメンバーユーザ（例えば、第２のユーザ）にとって利用可能ではない場合がある。例えば、ユーザ情報は、第２のユーザが組み込みゲームアプリケーションにおけるプレイヤーロールであることを選択したことを示してもよく、そのようなプレイヤーロールは、ユーザがゲームにおけるゲームステータスに影響を及ぼす（例えば、ゲームステータスに影響を与えるゲームアクションを入力する）ことを可能にする。アプリケーションにおけるプレイヤーロールの数が制限されている場合（例えば、２人のプレイヤーに制限されているチェスゲームアプリケーション）、例えば、他のメンバーのユーザが既に組み込みセッションに参加しており、利用可能なプレイヤーロールの全てを占有しているアクティブな組み込みセッションに第２のユーザが参加している場合、第２のユーザに利用可能なプレイヤーロールのスロットがない可能性がある。そのような利用不能が発生する場合、第２の組み込みアプリケーションは、第２のユーザについて異なるユーザステータス（例えば、プレイヤーロール）を決定することができ、メッセージングアプリケーションに異なるユーザステータスを通知することができる。例えば、第２のユーザは、オブザーバーのロールを割り当てられることが可能であり、この場合、第２のユーザは、組み込みアプリケーションまたはセッションの特定のステータスを変更するためのアクションを入力することができない。いくつかの例では、組み込みゲームアプリケーションのためのオブザーバープレイヤーは、それらのデバイス上にゲーム状態を表示することは許可され得るが、ユーザ入力によってゲーム状態に影響を及すことは許可されない可能性がある。メディアプレーヤまたは共有されたコンテンツドキュメントのオブザーバーロールは、メディアアイテムまたはリストを閲覧することは許可され得るが、メディア再生またはリストアイテムに影響を及ぼすことは許可されない可能性がある。
【０１４８】
いくつかの実装形態では、第２のユーザの選択されたロールが利用不可能である場合、第２のユーザは、組み込みセッションで利用可能なロールのメニューを提供されることが可能であり、第２のユーザは、利用可能なロールの１つまたは複数を選択するためのユーザ入力を提供できる。いくつかの実装形態では、ユーザロールが組み込みセッション中に利用可能になる（例えば、メンバーユーザが組み込みセッションを終了するか、またはプレイヤーからオブザーバーへの変更など、組み込みセッション内でロールを変更する）と、要求されたユーザロールを割り当てられなかったメンバーユーザは、そのような新しく利用可能なユーザロールを提供され得る。いくつかの実装形態では、特定のユーザロールは、組み込みアプリケーションによって決定されるように、組み込みセッション中に削除または変更され得る。例えば、プレイヤーロールは、ゲームが終了した後、またはゲームの特定のラウンドまたはフェーズが終了した後に、オブザーバーロールに変更され得る。ユーザロールは、組み込みセッション中にそのような変更を実行する能力または許可を有するメンバーユーザによって、組み込みセッション中に変更または再割り当てされてもよい。いくつかの実装形態では、組み込みセッション中のユーザロールのさまざまな変更の１つまたは複数は、組み込みアプリケーションによってメッセージングアプリケーションに提供されるデータにおいて示されることが可能であり、これらの変更は、チャットインタフェースのチャット会話においてメッセージングアプリケーションによって示され得る（例えば、すべてのチャットユーザ、またはメンバーユーザのみのデバイスによるテキスト説明としての出力）。
【０１４９】
いくつかの実装形態では、第２のユーザに異なる（新たに割り当てられた）ユーザステータスが割り当てられたことの表示、組み込みセッションへのユーザステータスまたはロールの削除または追加の表示、および／または組み込みセッションにおけるメンバーユーザのユーザステータスの他の変更の表示が、チャットインタフェースに出力されてチャット会話に参加しているチャットデバイスに表示されるか、あるいは組み込みセッションのメンバーユーザのメンバーデバイスに表示される。
【０１５０】
一例では、第１のユーザは、組み込みチェスゲームアプリケーションを起動し、第１のユーザおよび第２のユーザは、チャット会話に入力されたチャットメッセージを介して、第２のユーザが白駒を制御するプレイヤーとしてゲームを開始することに同意する。メッセージングアプリケーションは、チャットメッセージを解析して、第１のユーザが黒駒をプレイするためのプレイヤーロールを割り当てられていることを判定し、このユーザステータスを組み込みチェスアプリケーションに提供して第２のユーザによって制御される白駒でゲームを開始する。第３のユーザ（別のメンバーユーザ）は、その後組み込みチェスセッションに参加し、メッセージングアプリケーション（または組み込みチェスアプリケーション）は、組み込みセッションについて第３のユーザにオブザーバーのユーザロールを自動的に割り当てるが、これは、ゲームセッションのために提供されるのは２人のプレイヤーロールだけであり、それらのロールは、第１および第２のユーザによって占められているからである。
【０１５１】
いくつかの実装形態では、ユーザ同意が参加ユーザによって提供されている場合、ユーザ情報は、セッションのメンバーユーザに関する他の情報を含むことができる。例えば、メンバーユーザによって使用されるデバイスの地理的位置は、チャットユーザ（メンバーユーザを含む）がそのような地理情報（例えば、メンバーデバイスのＧＰＳまたは他の位置センサによって決定されるような地理的座標、地理的領域、または区域のラベルなど）を取得することへの同意を提供している場合、第２のメッセージングアプリケーションによって、例えばチャット会話から取得され得る。３人のチャットユーザに対して上述の組み込み旅行日程アプリケーションを使用する例では、メッセージングアプリケーションは、ユーザのチャットメッセージに基づいて、組み込みアプリケーションに対して、旅行コンテキストが「６月中旬のハワイでの休暇」であることを特定することができ、組み込みアプリケーションが、ユーザのデバイスの位置に基づいて目的地への旅行日程（例えば、旅行ルート、飛行機のフライト、予定された訪問など）を決定することができるように、３つのチャットユーザデバイスのそれぞれの地理的位置を特定することができる。いくつかの実装形態では、位置情報は、ユーザの「自宅」または「職場」などの関連するカテゴリとして位置を指定することができる。いくつかの実装形態では、ユーザ情報は、各メンバーユーザの現地時間（現地タイムゾーンに基づく）を含むことができる。例えば、現地時間は、各ユーザの旅行日程を決定するために、組み込み旅行日程アプリケーションによって同様に使用され得る。いくつかの例では、組み込みアプリケーションは、メンバーユーザの位置および／または時間情報を使用して、組み込みインタフェースに表示される出力情報、例えば旅行日程、イベントでの予約、テキスト出力の記載言語（例えば字幕、メッセージなど）、出力の地域別カスタマイズ、時間に基づく通知などを決定することができる。様々な例では、（ユーザの同意を得た）メンバーユーザの位置へのアクセスは、例えば、レストランで他のメンバーユーザを待っているメンバーユーザのグループへのメンバーユーザ位置のステータス更新として出力を提供するため、レースやフィットネスの課題におけるユーザ位置を提供するため、および／または、それらの子供ユーザの親である親ユーザによって見るための子供ユーザの位置を提供するために、組み込みアプリケーションが共有された位置を使用することを可能にする。
【０１５２】
いくつかの実装形態では、ユーザ情報は、メンバーユーザによって使用されるメンバーデバイスのうちの１つまたは複数のネットワーク上の現在のまたは利用可能なデータ帯域幅、例えば、組み込みセッションを実装するセッションサーバに対する、および／または組み込みセッションを実装する１つまたは複数のメンバーデバイスに対する、各メンバーデバイスの帯域幅、ラグ、または他のネットワーク接続特性を含むことができる。いくつかの例では、組み込みアプリケーションは、帯域幅情報を使用して、ネットワークを介して第１のユーザデバイスおよび第１の組み込みアプリケーションで受信された入力データの送信の修正を引き起こすことができる。例えば、修正された送信は、ネットワークを介して第１のユーザデバイスに送信されるべき異なる量のデータを含むことができ、第１のユーザデバイスにネットワークを介した異なるデータ転送速度をもたらし、および／または他のデバイスから第１のユーザデバイスへ送信されるデータ（例えば、コンテンツサーバからのコンテンツデータストリーム）の圧縮をもたらす。いくつかの例では、帯域幅情報が組み込みアプリケーションによって使用されて、組み込みセッションにおける特定のメンバーユーザに特定のユーザステータス（例えば、ロール）を割り当てることができる。例えば、（例えば、閾値を超える）高帯域幅は、ユーザデバイスから他のデバイスにデータを送信することを必要とするロール、例えばリアルタイムゲームにおける特定のプレイヤーユーザ、に適している可能性があり、一方、低帯域幅は、特定のゲームアプリケーションにおけるオブザーバープレイヤーにとってより適切であり得る。
【０１５３】
第２の組み込みアプリケーションに提供される他のユーザ情報は、ソーシャルネットワーク情報（例えば、ソーシャルネットワーキングサービスに投稿された投稿、評価、コメントなど）、メンバーユーザによる組み込みアプリケーションの使用履歴（例えば、以前に組み込みアプリケーションにおいて閲覧された特定のメディアアイテム、以前にメンバーユーザによってプレイされたゲーム、およびそれらのゲームにおいてメンバーユーザに割り当てられたロール、以前のゲームにおけるメンバーユーザの勝敗記録、以前の組み込みアプリケーションの使用の日時など）を含む他の情報を、もしそのようなデータのアクセスおよび使用についての同意が関連するチャットユーザにより得られた場合に、含み得る。
【０１５４】
ブロック３１８において、同期情報が、第２のデバイスで（例えばセッションサーバおよび／または第１のデバイスなどの他のメンバーデバイスから）受信されることが可能であり、第２の組み込みアプリケーションは、組み込みセッションと同期される。いくつかの実装形態では、同期情報は、組み込みセッションの表示とともにブロック３０８において受信され得る。例えば、同期情報は、組み込みセッションのメンバーデバイス上で実行されている対応する組み込みアプリケーションの１つまたは複数の状態、セッションサーバからの参照時間情報などを含むことができる。いくつかの実装形態では、同期情報は、セッションサーバ、または組み込みセッションのすべてのメンバーデバイスに同期情報を提供することができる他のデバイスから受信されて、組み込みアプリケーションを互いに同期させることができる。いくつかの例では、セッションサーバは、ユーザ入力（例えば、メディアアイテムのユーザ再生コマンド、ゲームアクション、共有コンテンツドキュメントの修正、旅程など）またはこれらのメンバーデバイスにおけるアプリケーションイベント（例えば、タイマの満了、キュー内の新たなメディアアイテムの再生開始、ゲームイベントの発生など）に基づいて、メンバーデバイスの組み込みアプリケーションの更新を受信し、同期情報を他のメンバーデバイスに送信する。いくつかの実装形態では、メンバーデバイスは、サーバなどのアクセス可能なデバイスに格納されているグローバル同期値またはタイマを互いに同期を維持するように更新することができ、その一例を、図５を参照して説明する。
【０１５５】
いくつかの例では、同期情報は、組み込みセッションで現在再生されているビデオまたはオーディオデータセグメントのタイムポイント（またはタイムポイントの変化）、組み込みセッションでプレイされているゲームの状態の変化、および組み込みセッションにおける共有コンテンツドキュメントの更新などを含み得る。別の例では、同期情報は、組み込みセッションにおける時限イベントの同期のために使用することができる他のメンバーデバイスに関するクロック情報を含むことができる。例えば、ゲームにおける敵や宝物の発生は、特定の時間にすべてのメンバーデバイスにわたって同期させることができ、あるいは特定の時間に（または特定の時間に対して）メンバーユーザ入力を登録してゲームに効果をもたらすことができる。組み込みセッションにおいて状態が発生するかまたは変化する同期された時間を登録することは、後で別のメンバーユーザによる組み込みセッションの記録されたバージョンの正確な再生を可能にし得る。メンバーデバイス間の正確なタイミングイベントは、ユーザ間の競争を可能にもする（例えば、ゲーム環境内の特定のアイテムを収集または選択するために、どのメンバーユーザがゲーム内の第１のプレイヤーであるかを決定するため）。
【０１５６】
いくつかの実装形態では、リーダーデバイスは、メンバーデバイス間で（例えば、ランダムに、またはネットワーク特性に基づいて、例えば、ユーザデバイスの同期を処理するサーバに対する最小の待ち時間を有するデバイスなどに）選択されて、組み込みセッションにおける組み込みアプリケーション間のリアルタイムイベントおよび出力の同期を可能にし得る。例えば、リーダーデバイスは、例えばそのようなタスクのためにサーバシステムを使用する代わりに、状態変化を検証しそして他のメンバーデバイスに伝達するための権限であり得る。リーダーデバイスがオフラインである場合、オンラインのメンバーデバイスが新しいリーダーデバイスを選択し、前のリーダーデバイスがオンラインに戻った場合、そのリーダーのステータスは取り消されているので、通常の（リーダーではない）デバイスと見なされる。そのようなリーダーデバイス構成は、サーバ側の同期および権限を使用せずに、ネットワークを介したマルチデバイス共有エクスペリエンスを可能にする。
【０１５７】
ブロック３２０において、第２の組み込みアプリケーションの組み込みインタフェースが、第２のデバイスによって表示されるようにされる。例えば、組み込みインタフェースは、上記と同様に、第２のメッセージングアプリケーションのチャットインタフェースと関連して表示され得る。組み込みインタフェースは、第２の組み込みアプリケーションに対するユーザインタフェースであり、第２の組み込みアプリケーションからの出力が第２のデバイスによって（例えば、組み込みインタフェースの組み込みビュー内に）表示されることを可能にし、ユーザ入力が組み込みインタフェースに入力されて第２の組み込みアプリケーションに提供されることを可能にする。
【０１５８】
組み込みインタフェースは、組み込みセッションにおけるメンバーデバイスの他の組み込みアプリケーションと同期している第２の組み込みアプリケーションからの出力を表示する。例えば、メディアアイテムが組み込みセッションで再生されている場合、他のメンバーデバイス上の対応する組み込みアプリケーションによって再生されているメディアアイテムも、メンバーデバイスと同期して、第２の組み込みアプリケーションによって再生される。従って、第２のユーザが、メディアアイテムが以前しばらく再生されていて現在その継続期間の途中である組み込みセッションに参加した場合、第２の組み込みアプリケーションは、その中間点からメディアアイテムを再生する。例えば、この同期は、メディアアイテムおよび組み込みアプリケーションの他の出力を他のメンバーユーザと共有する経験を第２のユーザに提供することができる。
【０１５９】
組み込み旅行日程アプリケーションを使用する例では、組み込みアプリケーションは、指定された日にメンバーユーザのデバイスの地理的位置から旅行目的地へ出発する飛行機のフライトについての情報を表示する組み込みインタフェースを提供することができる。いくつかの実装形態では、カスタマイズされた飛行機のフライト情報は、各メンバーユーザの組み込みインタフェースに表示されることが可能であり、各組み込みインタフェースは、組み込みインタフェースにおいて情報を閲覧しているユーザの場所の飛行機のフライト情報のみを示す。
【０１６０】
ブロック３２２において、第２のユーザが組み込みセッションに参加したという表示がネットワークを介して送信される。例えば、第２のメッセージングアプリケーションは、参加イベントの表示をセッションサーバに送信することができ、セッションサーバは、参加イベントの表示をメンバーデバイスに送信することができる（メンバーデバイスではないチャットデバイスには送信しない）。例えば、セッションサーバは、図４に関して以下に説明されるように、表示を第１のデバイスに送信することができる。いくつかの実装形態では、第２のメッセージングアプリケーションは、その表示をメンバーデバイスに直接送信することができる。
【０１６１】
組み込みセッション中、第２のデバイスは、本明細書に記載されるように、第２のユーザから、組み込みインタフェースを介した組み込みアプリケーションへの、および／またはチャットインタフェースを介したメッセージングアプリケーションへのユーザ入力を受信することができる。入力は、他のメンバーデバイスから、例えばセッションサーバを介して、および／または１つまたは複数のサーバから受信することもできる（例えば、同期およびセッションサーバから組み込みアプリケーションへの他の更新、コンテンツサーバからのコンテンツデータなど）。出力は、組み込みインタフェース、および／またはチャットインタフェースに表示され得る。
【０１６２】
第２のユーザが組み込みアプリケーションおよび組み込みセッション内でユーザステータス（例えば、ロール）を割り当てられている場合、第２のユーザは、割り当てられたユーザステータスに関連する組み込みアプリケーションの１つまたは複数の機能を起動するために組み込みアプリケーションによって有効にされ得る。例えば、組み込みゲームアプリケーションでは、プレイヤーのロールを割り当てられたユーザは、ユーザ入力を用いてゲームアクションを実行し、ゲームの状態に影響を及ぼすことを可能にされ得る。オブザーバーロールを割り当てられたユーザは、ゲームにおいてビュー機能を実行するための入力を提供することを可能にされ、例えば、ユーザ入力を用いて異なるプレイヤースコア、属性などを表示させることを可能にされ得るが、ゲーム状態には影響を与えない。アドミニストレータのロールまたはレフェリーのロールを割り当てられたユーザは、ゲームの開始、プレイヤーユーザの異なるチームへの割り当て、ゲームの裁定などを行うことを可能にされ得るが、ゲームの状態には影響を与えない。いくつかの実装形態では、メンバーユーザは、受動的オブザーバーまたは能動的オブザーバーのロールを割り当てられ得る。例えば、能動的オブザーバーステータスは、ユーザが組み込みアプリケーション内の状態（例えば、ゲーム状態、メディアアイテムの再生位置など）を修正すること、またはいくつかの種類の状態を修正すること（例えば特定の種類のゲームオブジェクトを導くこと、コメントを加えるが、崔誠一は変更しない、など）を可能にし得るが、一方、受動的オブザーバーは、そのような状態を変更することを妨げられ得る。いくつかの例では、シングルプレイヤーゲームは、第１のユーザが、ゲーム環境を移動し、障害物に直面するなどのメインキャラクタになることを可能にし得る。他のメンバーユーザは、デフォルトで受動的オブザーバーロールを割り当てられるか、あるいは、１人または複数の受動的オブザーバーユーザは、能動的オブザーバーロールに割り当てられるように選択することができ、これにより、例えば、ゲーム中の敵に第１のプレイヤーのキャラクタを攻撃またはアシストするように指示したり、第１のプレイヤーのキャラクタを直接アシストしたり、第１のプレイヤーのキャラクタをタップして減速したりするなど、ゲーム状態に影響を与えることを可能にする。
【０１６３】
追加の例では、組み込みインタフェースの特定のグラフィカルインタフェースは、メンバーデバイスのユーザに割り当てられているロールに基づいて、そのメンバーデバイスに表示されることが可能であり、一方、組み込みセッションの他のメンバーデバイスは、メンバーユーザの異なるロール（またはロールの欠如）に基づいて、他のグラフィカルインタフェースを表示し得る。例えば、異なる制御および機能が、異なるロールに対して、異なるグラフィカルインタフェースに表示され得る。いくつかの例では、特定のロールだけが組み込みアプリケーションの特定の機能にアクセスすることができる。組み込み予約アプリケーションの例では（例えば、上記と同様の）、第１のユーザは、組み込み予約アプリケーションを開始し、従って、そのユーザが予約を確定する（例えば、ホテルの部屋を予約するために予約料を支払う）ことを可能にする「予約者」ステータスを有する。第１のユーザは、目的地や旅程などの予約情報を選択し、組み込みアプリケーションは、選択された予約情報をメンバーデバイスの残り（例えば、第２のユーザデバイスを含む）と、組み込み予約アプリケーションの組み込みインタフェースに表示するために共有する。第２のユーザは、予約情報を選択または変更することによって（すべてのメンバーデバイス上で同期される）、予約するホテルの部屋を第１のユーザが選択するのを支援する。この例では、第１のユーザが組み込みアプリケーション／セッションを設定し、予約者ステータスを有するので、メンバーデバイスのうちの第１のユーザデバイスだけが、その組み込みインタフェースに「支払い」ボタンを表示する。支払いボタンがユーザ入力によって選択された場合、予約を確定するためにデータがサーバに送信される。
【０１６４】
様々な実装形態では、「インタラクティブカード」は、第２のユーザデバイスなど、チャット会話のチャットデバイスのチャットインタフェースに表示され得る。インタラクティブカードは、イベントに関する情報および制御（ユーザ入力オプション）、出力データ（例えば、コンテンツデータ）、およびチャット会話の組み込みセッションで提供されるメンバーユーザからの入力を表示する表示情報領域またはウィンドウであり得る。この情報は、テキスト、画像、ビデオ、音声出力、シネマグラフ、または他の種類のコンテンツデータ（例えば、組み込みインタフェースに表示された出力のキャプチャおよび格納された画像）を含み得る。いくつかの実装形態では、チャットデバイスが組み込みセッションのメンバーデバイスであるかどうかにかかわらず、インタラクティブカードは、チャットデバイスのチャットインタフェースに表示され得る。
【０１６５】
インタラクティブカードは、組み込みアプリケーションによって関連付け動作を実行させるためにユーザ入力によって選択され得る１つまたは複数の表示された入力制御を含むこともできる。ユーザ入力によって制御が選択されると、選択された制御および／またはインタラクティブカードの引数またはパラメータが組み込みアプリケーションに提供され、組み込みアプリケーションは関連する動作を実行する。いくつかの例では、ブロック３１０に表示されるような組み込みセッションの開始を示す通知は、選択された場合にユーザデバイスに組み込みアプリケーションを実行させ、組み込みセッションに参加させる参加オプション（非メンバーユーザ用）を含む、上述の情報を表示するインタラクティブカードであり得る。いくつかの実装形態では、上述のように、ユーザが組み込みセッションに参加することに応答して、組み込みアプリケーションにおいて１つまたは複数のアクションが実行される。別の例では、インタラクティブカードは、制御がユーザ入力によって選択されると、組み込みアプリケーションにメディアアイテムの再生を開始させ、ゲーム内アクション（例えば、異なるユーザのチャレンジを受け入る、ゲーム内アイテムをロック解除するなど）および／または他のアクションをトリガさせる、表示された制御を含み得る。組み込みアプリケーションは、関連付けアクションを実行するためのユーザからの確認のために、要求をインタラクティブカードに表示することができる。いくつかの実装形態では、インタラクティブカード内の情報およびオプションは、メンバーユーザ（および／またはチャットユーザ）から受信した現在の入力、組み込みアプリケーションによって提供される現在の出力、および組み込みアプリケーションの現在の処理／状態に基づいて継続的に更新され得る。
【０１６６】
いくつかの例では、メディアアイテムは、メディアプレーヤ組み込みアプリケーションの組み込みセッションで再生されており、インタラクティブカードは、メディアアイテムの再生に関連するチャットデバイスのチャットインタフェースに表示されている。情報およびオプションは、チャット会話のチャットユーザによるそのメディアアイテムの再生およびそのメディアアイテムについてのコメントに基づいて、継続的に更新され得る。例えば、インタラクティブカードは、再生されているか、または再生のためにキューに入っている各メディアアイテムの識別を表示することができる。インタラクティブカード内の情報およびオプションは、チャット会話のチャットユーザによるそのメディアアイテムの再生およびそのメディアアイテムについてのコメントに基づいて、継続的に更新され得る。例えば、カードは、メディアアイテムを視聴したチャットユーザの識別（または数）（それらのユーザからの同意が得られた場合）、メディアアイテムについてコメントしたチャットユーザの識別（または数）（以下のブロック５１８のように、それらのユーザからの同意が得られた場合）、メンバーデバイスのためのメディアアイテムにコメントするための表示されたオプション（例えば、ブロック５１８のような）、および、例えば、メディアアイテムを再生することのユーザに対するリマインダとして、カードをユーザデバイス上に持続的に表示させるためのオプションのうちの１つまたは複数を表示することができる。複数のインタラクティブカードを持続的にする場合、カードのカルーセル表示を示すことができ、これは、複数のカードを、例えば一度に１つずつ閲覧するためにスクロールまたは回転されることが可能である。メディアアイテムをチャット会話で再生させること、またはメディアアイテムにコメントすること（例えば、ブロック５１８におけるように）は、各チャットデバイスに格納された対応するインタラクティブカードを更新し、それはチャット会話の各チャットデバイスのチャットインタフェースに表示され得る。インタラクティブカードは、チャットユーザによるメディアアイテムに対する最新の再生およびコメントを示す。いくつかの実装形態では、ユーザ入力によるインタラクティブカードのコメントオプションの選択は、入力フィールドを表示させ、ユーザがコメントを入力して、メディアアイテムの現在および後の再生中に組み込みインタフェースに表示し（例えば、ブロック５１８におけるように）、および／またはメディアアイテムの現在および後の再生中にチャット会話のチャットインタフェースに表示することを可能にし得る。
【０１６７】
いくつかの実装形態では、他の種類の組み込みアプリケーションに関連するインタラクティブカードが、チャットインタフェースに表示され得る。例えば、組み込みゲームアプリケーションおよびセッションは、ユーザの同意が得られた場合に、ゲーム内のプレイヤーおよびオブザーバーの数、メンバーユーザの識別、プレイヤーの現在のスコア、達成されたゲーム目的、ゲームイベントまたはオブジェクトのスクリーンショットまたはその一部を示す１つまたは複数の画像、（例えば、チャットインタフェース、および／またはメンバーデバイスの組み込みインタフェースで表示されるべき）ゲームまたはゲームの特定のプレイヤーへのコメントまたは評価を入力するための表示されたオプション、例えば組み込みセッションに参加することのユーザへのリマインダとして、カードをユーザデバイスに持続的に表示させるための表示オプションなどのうちの１つまたは複数を示すインタラクティブカードを表示させることができる。同様の情報および表示されたオプションは、コンテンツドキュメント、旅行日程、予約、買い物などを提供する組み込みセッションのためのインタラクティブカードに表示され得る。
【０１６８】
いくつかの実装形態では、第２のユーザが組み込みセッションを終了することは、組み込みセッションに参加するのと同様に実装され得る。例えば、第２のメッセージングアプリケーションは、例えば第２の組み込みアプリケーションを終了することにより、またはチャット会話を終了することにより、または第２のメッセージングアプリケーションを終了することにより、第２のユーザが組み込みセッションを終了しているという表示を受信する。第２のメッセージングアプリケーションは、第２のユーザが終了していることを示す情報を他のメンバーデバイスに（例えばサーバを介して）送信し、それによって他のメンバーデバイスに対して実行されている他の（対応する）組み込みアプリケーションは、それらの状態を更新できる（例えば、それらの組み込みインタフェースからの第２のユーザのユーザ識別情報の削除、組み込みセッションの参加者としての第２のユーザの削除など）。
【０１６９】
図４は、第２のデバイスが組み込みセッションに参加したイベントを図２の第１のデバイスが処理する例示的な方法４００を示す流れ図である。この例では、方法４００は、図３を参照して説明したように、第２のユーザが組み込みセッションに参加したことに応答して第１のデバイスで実行されるブロックを示す。
【０１７０】
ブロック４０２では、方法４００の実装においてユーザデータを使用するためにユーザ同意（例えばユーザ許可）が取得されているかどうかをチェックする。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザプリファレンス、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【０１７１】
方法４００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック４０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な利用により実装され得ると判定され、方法はブロック４０８に続く。ユーザの同意が得られていない場合、ブロック４０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック４０８に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【０１７２】
ブロック４０８において、第２のユーザおよび第２のデバイスが組み込みセッションに接続した（参加した）ことを示す表示が第１のデバイスにおいてネットワークを介して受信される。例えば、表示は、例えば図３のブロック３１４のように、第２のデバイスが組み込みセッションのために対応する組み込みアプリケーションをダウンロードおよび／または実行した（またはその処理中である）こと、および／または、例えば、図３のブロック３１８のように、組み込みアプリケーションは、組み込みセッションと同期した（または同期している）ことを示し得る。例えば、表示は、図３のブロック３１４に関して説明したように、通知情報を含むことができ、またはそれから導出することができる。いくつかの実装形態では、第１のメッセージングアプリケーションは、表示を受信することができ、それは、説明されるように、いくつかの実装形態では通知情報を含むことができる。表示は、参加イベント、第２のユーザのユーザ識別情報、および第２のユーザによって選択されるかまたは第２のユーザに提供される任意の他のオプション（例えば、組み込みアプリケーションにおけるユーザステータスなど）を示す情報を含み得る。いくつかの実装形態では、第１のメッセージングアプリケーションは、例えば、第１のデバイスのチャットインタフェースに第２のユーザのユーザ識別情報を表示するために、チャット会話に対する第２のユーザのユーザ識別情報を以前に取得している。いくつかの実装形態では、表示は、サーバシステム、例えば図３のブロック３１４で第２のデバイスから通知情報を受信したセッションサーバから受信される。いくつかの実装形態では、表示は、第２のデバイスから直接、第１のデバイスで受信される（例えば、ピアツーピア構成）。
【０１７３】
ブロック４１０において、第１のメッセージングアプリケーションは、第１の組み込みアプリケーションにデータ更新を提供し、更新は、第２のユーザの組み込みセッションへの参加を示す。組み込みアプリケーションは、組み込みセッションのメンバーユーザとして第２のユーザを指定する。例えば、更新は、第２のユーザのユーザ識別情報などのユーザ情報、および第２のユーザを組み込みセッションの参加者として追加するための表示を含むことができる。いくつかの実装形態では、第１のメッセージングアプリケーションは、チャット会話における第２のユーザのユーザ識別情報および他のユーザ情報を取得している。いくつかの例では、ユーザ識別情報は、チャット会話に参加している第２のユーザのチャット識別情報であり得る。
【０１７４】
特定のユーザ（例えば、第２のユーザ）に関するユーザ情報は、第１のメッセージングアプリケーションが第２のユーザから同意を得た場合、第１のメッセージアプリケーションによって第１の組み込みアプリケーションに提供され得る。例えば、いくつかの実装形態では、そのような同意は、チャット会話について提供されたユーザ情報に含めることができる。第２のユーザからの同意が得られていない場合、ユーザ情報は、第１の組み込みアプリケーションに提供されない。いくつかの実装形態では、第１のメッセージングアプリケーション（またはサーバアプリケーション）は、情報が第２のユーザを説明しない、または第２のユーザに関連付けることができない（または、第２のユーザを部分的にのみ説明するか、部分的にのみ関連付ける）ようにユーザ情報を匿名化または部分的に匿名化することができる。例えば、第２のユーザチャット識別情報は、「ユーザ１」、「友達１」、第２のユーザのイニシャル、第２のユーザのファーストネームなどの一般的な名またはプレースホルダ名に変更され得る。さらなる例では、ユーザ識別情報は、第２のユーザ名の実名、メッセージングアプリケーションにおいて第２のユーザによって以前に登録されたユーザ名、または第２のユーザデバイスに格納され（第２のユーザからの同意が得られた場合）第２のユーザデバイスから取得された連絡先リストまたは他のデータに以前において登録されたユーザ名、組み込みアプリケーションに以前に登録されたユーザ名、プレースホルダ名などであり得る。この情報は、組み込みセッションのユーザ識別情報として、組み込みアプリケーションに提供され、および／または組み込みアプリケーションによって判定され得る。いくつかの例では、アプリケーションは、組み込みアプリケーションおよび組み込みセッションの１つまたは複数の特定のコンテキストで他のメンバーユーザに表示するためにユーザ名を選択することができ、異なるユーザ名は異なるコンテキストで表示され得る。例えば、コンテキストは、メッセージングアプリケーションおよびチャットインタフェースで使用される名前のうち、メッセージングアプリケーション内で作成された第２のユーザのメッセージに添付された名前、組み込みアプリケーションおよびそのコンテンツデータ内で使用された名前、組み込みアプリケーションによって生成されたチャットメッセージまたはシステムメッセージに添付された名前などを含み得る。
【０１７５】
いくつかの実装形態では、ユーザ情報は、第２のユーザによって選択されたまたは第２のユーザに対し提供されたユーザステータス（例えば、ロール）、第２のデバイスの地理的位置、および／または第２のユーザに関する他の情報を、もしそのような情報を使用するための第２のユーザからの同意が得られた場合に、含み得る。第１の組み込みアプリケーションは、第２のユーザの追加に基づいてその処理を更新すること、例えば、第２のユーザのユーザ識別情報を組み込みインタフェースにおいて表示すること、第２のユーザからの入力をチェックすることなどができる。いくつかの実装形態では、第１のメッセージングアプリケーションはまた、第２のユーザを組み込みセッションのメンバーユーザとして指定し、例えば、組み込みセッションのためのそれ自体のセッションユーザリストを更新して第２のユーザ識別情報を追加する。
【０１７６】
ブロック４１２において、第１の組み込みアプリケーション（および／または第１のメッセージングアプリケーション）は、第２のユーザについての１つまたは複数のユーザステータスを判定し得る。いくつかの実装形態では、ユーザステータスは、例えばブロック４１０において、第１のメッセージングアプリケーションから受信されたユーザ情報に基づいて判定され得る。例えば、ユーザ情報は、組み込みセッションにおける第２のユーザのユーザステータスを含むことができる。ユーザステータスは、第２のユーザによって選択されている可能性があり、この選択を示す情報は、第１のメッセージングアプリケーションによって第１の組み込みアプリケーションに提供されている可能性がある。例えば、ゲーム組み込みアプリケーションのための「オブザーバー」のユーザロールが、第２のユーザによって選択されている可能性があり、第１の組み込みアプリケーションは、このロールを第２のユーザに割り当てる。
【０１７７】
いくつかの実装形態では、第１の組み込みアプリケーション（および／または他のメンバーデバイス上で実行されている対応する組み込みアプリケーション）は、ユーザステータスまたはロールを生成することができる。いくつかの実装形態では、サーバ（例えばセッションサーバ）は、ユーザステータスまたはロールを生成し、決定されたユーザステータスを第１のメッセージングアプリケーションおよび第１の組み込みアプリケーションに提供することができる。いくつかの例では、ユーザステータスは、少なくとも部分的に、第１の組み込みアプリケーションおよび／または組み込みセッションの１つまたは複数の現在の状態に基づいて割り当てられ得る。例えば、１つまたは複数のロールが参加ユーザに割り当てられるのに利用可能である場合、第２のユーザ（参加ユーザ）は、利用可能なロール（例えば、ゲームにおけるプレイヤー）に自動的に割り当てられ得る。組み込みセッションが利用可能な選択されたロールを何も有しない場合、第２のユーザは別の（例えば、デフォルトの）ロールに割り当てられ得る。例えば、第２のユーザが、プレイヤーのロールを割り当てられることを選択したが、プレイヤーのロールが利用可能でない場合、第２のユーザは、オブザーバーのロールを割り当てられ得る。いくつかの実装形態では、特定の状態および／またはデータ、例えば、プライバシーおよびセキュリティ措置がそのような状態およびデータに対して実施されている場合、同じ組み込みアプリケーションを使用する以前の組み込みセッションにおいて特定のユーザに以前に割り当てられたユーザステータスおよびロールなどは、特定のユーザが参加した以前の組み込みセッションから（例えばサーバ上に）格納されることが可能である。そのような実装形態では、第２のユーザの組み込みアプリケーションの使用履歴は、ユーザデータのそのような使用についての第２のユーザの同意が得られている場合、第２のユーザについてのユーザステータスまたはロールを判定する際に使用され得る。例えば、第２のユーザが、この組み込みアプリケーションを使用して、閾値数の以前の組み込みセッションにおいてレフェリーのロールであった場合には、そのロールは第２のユーザに自動的に割り当てられ得る。いくつかの実装形態では、第２のデバイスは、（例えば、メンバーデバイスおよび／またはセッションサーバにより）プロンプトを送信されて、第２のユーザが、組み込みセッションにおいて第２のユーザに自動的に割り当てられている特定のユーザステータスまたはロールを受け入れるか、または拒否することを可能とし得る。
【０１７８】
いくつかの実装形態では、他のユーザステータスおよびロールは、組み込みセッションにおけるユーザに対して決定され得る。例えば、ユーザが組み込みセッションを開始する場合（例えば、第１のユーザ）、ユーザは、「コントローラ」または「リーダー」ロールを割り当てられることが可能であり、コントローラは、組み込みセッションで処理されたデータの修正、例えば、メディアアイテムの再生ポイントの変更、共有されたコンテンツドキュメントのデータの変更などができる唯一のユーザである。いくつかの例では、第２のユーザは、組み込みセッションと同様に、以前のゲームにおける第２のユーザの履歴に基づいて、組み込みアプリケーションのゲームにおけるプレイヤーとしてのハンディキャップまたはアドヴァンテージを割り当てられることができる。
【０１７９】
いくつかの実装形態では、ユーザステータスは、組み込みセッションが開始されたチャット会話において提供されたメッセージおよび他のユーザ入力に基づいて判定され得る。例えば、メッセージングアプリケーションは、第２のユーザのテキストメッセージ（または第２のユーザの音声入力から導出されたテキストメッセージ）を解析して、事前定義された単語またはフレーズのマッチングを行い、および／または他の言語処理技術を使用し、チャット会話に対するユーザ入力のセマンティックな意味を判定することができる。例えば、第２のユーザは、前にチャット会話に「遊ぼう！」または「私は２人を見ます」と入力していてもよく、これは、第２のユーザが、開始された組み込みアプリケーションゲームで、それぞれプレイヤーのロールまたはオブザーバーのロールになる予定であることを示す。第２のユーザは、「ビデオで場所を見せましょう」と入力していてもよく、これは、第２のユーザが、組み込みセッションにおいて再生されたビデオの再生位置を制御するコントローラーロールに割り当てられるべきであることを示す。
【０１８０】
いくつかの実装形態では、組み込みセッションにおいて特定のステータスまたはロールを割り当てられたメンバーユーザは、変更されたステータスまたはロールを有することができ、および／またはメンバーユーザであり続けながら自分のステータスまたはロールを異なるステータスまたはロールに変更することを選択できる。例えば、組み込みセッションでプレイヤーのロールを割り当てられたユーザは、特定の条件に基づいて自動的にオブザーバーユーザになる場合があり、例えば、ユーザのプレイヤーキャラクタはゲームにおいて排除され、ゲーム環境内において観察および移動しかできないが、環境内のオブジェクトを変更するようには動作しない「ゴースト」になり、または、例えば、２人用ゲームでは、プレイヤーは、閾値期間より長くオフラインであり、プレイヤーステータスを失う一方、オンラインのオブザーバーユーザは、組み込みアプリケーションによって自動的にプレイヤーロールに割り当てられる。別の例では、プレイヤーのユーザがそのターン中にのみアクティブであるターンベースのゲームでは、プレイヤーは、自分のターンが現在アクティブではないときに自動的にオブザーバープレイヤーになり得る。さらなる例では、組み込みセッション中に、事前定義された追加のユーザステータスまたはロールが、組み込みセッションにおいて持続的または一時的に利用可能になり、および／または既存のユーザステータスまたはロールが、組み込みセッションにおいて持続的または一時的に利用不可能になり得る。例えば、そのようなユーザステータスまたはロールの変化は、現在組み込みセッションにいるメンバーユーザの数の変化、セッションがアクティブであった時間の長さ、電話に応答するなどのような外部のタスクを行っていることを示すメンバーユーザ、組み込みアプリケーションにおいて発生した特定のイベント（ゲームイベント、共有リストの完了など）などに基づいて発生し得る。
【０１８１】
いくつかのさらなる例示的な実装形態では、ロビーは、組み込みアプリケーションおよび組み込みインタフェース、例えば、まだ割り当てられたロールを持たないメンバーユーザをリストする表示領域に提供され得る。例えば、そのようなユーザは、ゲームにおけるユーザステータスまたはロールが割り当てられるのを待つことができ、例えば、ゲームが終了するのを待つ、プレイヤーユーザが非プレイヤーロールに変わるのを待つなどができる。いくつかの例では、メンバーユーザのサブセットは、組み込みセッション内のサブセッションに関連付けられることが可能であり、ユーザのサブセットは、サブセッション内の組み込みアプリケーションを介して対話し、他のメンバーユーザは、対話する能力が異なるか、または能力を有しない。例えば、組み込みセッションは、複数のサブセッションを含むことができ、各サブセッションはメンバーユーザの異なるサブセットに関連付けられている。いくつかの例では、各サブセッションは、組み込みセッション全体で実行されるトーナメント構造内の特定のゲームであってよく、各ゲームは同時に実行され、各ゲームの勝者は新しいゲームで互いに遊ぶ。いくつかの例では、ロビー内の２人以上のユーザが互いに関連付けられ、および／または組み込みセッションで開始されるサブセッション（例えば個々のゲーム）における特定のロールを割り当てられ得る。組み込みセッションに参加するユーザが特定のゲームにおける既存のチームに割り当てられ、各チームが複数のプレイヤーを有するチームベースの実装も提供され得る。いくつかの例では、組み込みセッションは、並行して実行される複数のゲーム、２人のプレイヤーおよびＮ人のオブザーバーを有する単一のゲーム、２つのチームおよび１チームあたりＮ人のプレイヤーを有する単一のゲームなどを提供できる。いくつかの実装形態では、複数のそのようなサブセッションは、別個の同時組み込みセッションとして実装されることが可能であり、各組み込みセッションは、単一の組み込みアプリケーションによって提供される。
【０１８２】
ブロック４１４において、第１の組み込みアプリケーションは、第２のユーザの追加に基づいて組み込みインタフェースにおけるその出力を更新する。例えば、第２のユーザの識別子は、第２のユーザのステータス（ユーザロールなど）と同様に、組み込みインタフェースに表示され得る。
【０１８３】
ブロック４１６において、第１の組み込みアプリケーションは、判定されたユーザステータス情報を第１のメッセージングアプリケーションに提供する。例えば、第１の組み込みアプリケーションがユーザロールおよび／または他のユーザステータス情報を判定した場合、これは第１のメッセージングアプリケーションに提供される。いくつかの実装形態では、第１のメッセージングアプリケーションは、ユーザのセッションリストを更新すること、チャットインタフェースにユーザステータス情報を出力することなどができる。
【０１８４】
いくつかの実装形態では、第２のユーザが組み込みセッションを終了することは、組み込みセッションに参加するのと同様に実装され得る。例えば、第１のデバイスは、例えば第２の組み込みアプリケーションを終了することにより、またはチャット会話を終了することにより、または第２のメッセージングアプリケーションを終了することにより、第２のユーザが組み込みセッションを終了しているという表示を、ネットワークを介して受信し得る。第１のメッセージングアプリケーションは、第２のユーザが終了していることを示す情報を第１の組み込みアプリケーションに送信し、それによって第１の組み込みアプリケーションは、その状態を更新できる（例えば、組み込みインタフェースから第２のユーザのユーザ識別情報を削除し、第２のユーザからの入力をもはや予期しない）。
【０１８５】
いくつかの実装形態では、ユーザデバイスは、組み込みアプリケーションの状態をキャッシュして、ユーザデバイス（および／またはメッセージングアプリケーション）が他のユーザデバイスおよびサーバデバイスからネットワークを介して見えなくなるオフラインモードを有効化することができる。ユーザデバイス（および／またはメッセージングアプリケーション）がオンラインに戻ったときに、組み込みアプリケーションのキャッシュされた状態が使用されて、組み込みアプリケーションを他のメンバーデバイスおよび対応する組み込みアプリケーションと同期させ、マージ／競合解決を提供することができる。いくつかの例では、ユーザデバイスがネットワーク接続を失う前に、組み込みアプリケーションはまず、ユーザデバイス上のストレージに任意の状態変化を書き込むことができる。ユーザデバイスがオンラインの間、ローカル状態は、サーバ上に格納されたサーバグローバル状態と頻繁に同期され、グローバル状態は、同じチャット会話においてメンバーデバイス上で実行されている組み込みアプリケーションのインスタンスによって共有される。ネットワーク接続が失われると、ローカル状態は、ユーザデバイス上の組み込みアプリケーションからアクセスされ書き込むことが可能であるが、クライアントからサーバへの同期は起こり得ない。ネットワーク接続がユーザデバイスに復元されると、ローカル状態は、グローバル状態と同期化され（例えば、サーバ側の変更のプルとクライアント側の変更のプッシュ）、必要に応じて競合解決を使用してマージが行われる（例えば、ｌａｓｔ−ｗｒｉｔｅ−ｗｉｎｓ戦略または他のマージ戦略）。これは限られたオフラインサポートを提供し、例えば、それはセルタワースイッチまたは環境の変化（地下に行くなどのような）の間のモバイルデバイスの間で一般的である短期間のネットワーク切断に対する保護を提供する。ユーザがより長い期間オフラインである場合、ユーザデバイス上のローカル状態がサーバのグローバル状態から著しく乖離する可能性がある。
【０１８６】
図５は、メッセージングアプリケーションに関連して組み込みアプリケーションを使用してメディアアイテムの出力を提供する例示的な方法例５００を示す流れ図である。いくつかの例では、方法５００は、組み込みアプリケーションがチャット会話から開始され、データがチャットユーザを含む組み込みセッションで処理される図２の１つまたは複数のブロックと同様に実施され得る。
【０１８７】
ブロック５０２では、方法５００の実装においてユーザデータを使用するためにユーザ同意（例えばユーザ許可）が取得されているかどうかをチェックする。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザプリファレンス、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【０１８８】
方法５００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック５０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な利用により実装され得ると判定され、方法はブロック５０８に続く。ユーザの同意が得られていない場合、ブロック５０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック５０８に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【０１８９】
ブロック５０８において、チャットユーザによるメディアアイテムの選択が取得され、選択はユーザデバイスによるメディアアイテムの再生（例えば、出力）を指示する。チャットユーザは、ネットワークによってユーザデバイスに接続され、かつ相互に接続されたデバイスを使用して、１人または複数の他のチャットユーザとチャット会話に参加しており、チャット会話は、上述の第１および第２のユーザ、ならびに第１および第２のデバイスと同様に、デバイスによってチャットインタフェースに表示される。メディアアイテムは、様々な方法のいずれかで選択され得る。例えば、メディアアイテムの識別子は、テキスト、音声入力、表示されている要素または表示されているメニューからのアイテムの選択などを介して入力され得る。いくつかの実装形態では、メディアアイテムは、例えばテキストコマンド、チャットインタフェースに表示されたインタフェース要素などを介して、チャットインタフェース内から選択される。いくつかの実装形態では、ユーザ入力は、共有オプション（例えば、インタフェース要素、テキストコマンドまたはパラメータなど）を選択または入力することによってメディアアイテムをチャット会話と共有することを明示的に示すこともできる。メディアアイテムを共有することは、チャット会話の他のチャットユーザに組み込みセッションを提供することによって、メディアアイテムを他のデバイス上で再生可能にすることを含み得る。いくつかの実装形態は、メディアアイテムが出力のために選択されたときにチャット会話における組み込みセッションにおいてメディアアイテムを自動的に提供することができる。いくつかの実装形態では、メディアアイテムは、ブロック５１０に記載されているように、組み込みメディアプレーヤアプリケーションが開始された後に、組み込みインタフェース内で選択され得る。いくつかの実装形態では、ボットを使用してメディアアイテムを選択することができ、そのいくつかの例を以下に説明する。方法はブロック５１０に続く。
【０１９０】
ブロック５１０において、メディアアイテムの選択に応答して、組み込みメディアプレーヤアプリケーションが実行される（例えば、開始される）。組み込みメディアプレーヤアプリケーションは、選択されたメディアアイテムを出力するように構成されている。いくつかの例では、組み込みメディアプレーヤアプリケーションは、上記と同様にサーバからユーザデバイスにダウンロードされ、少なくとも部分的にユーザデバイス上で実行される。いくつかの実装形態では、組み込みメディアプレーヤアプリケーションは、ユーザデバイスと通信しているデバイス、例えばサーバ上で部分的または全体的に実行され、ユーザデバイス上に表示するためのデータ（例えば、組み込みインタフェースを記述するデータ）を提供できる。組み込みメディアプレーヤアプリケーションは、チャットインタフェース内の１つまたは複数のチャットメッセージが組み込みインタフェースの表示中に表示されることができるように、（例えば、上述と同様に）チャットインタフェースに関連してユーザデバイス上の関連する組み込みインタフェースを表示させる。いくつかの実装形態では、組み込まれるメディアプレーヤアプリケーションは、再生されるべきメディアアイテムを指定することなく組み込みアプリケーションが実行されることを指示するユーザ入力に応答して開始され得る。例えば、メディアアイテムは、例えば、ユーザ入力が組み込みインタフェースで利用可能なメディアアイテムの表示されたメニューをブラウズした後などに、組み込みインタフェースに提供されるユーザ入力によって選択され得る。方法はブロック５１２に続く。
【０１９１】
ブロック５１２において、他のチャットユーザは、組み込みメディアプレーヤアプリケーションの開始に関連して開始される組み込みセッションに参加する、またはそこから退出することが可能であり、組み込みセッションはメディアアイテムの再生を含むことができる。例えば、図２〜図４に関して上述したのと同様に、通知が、チャット会話に参加しているチャットデバイスに送信され、１または複数のチャットユーザがメンバーユーザとして組み込みセッションに参加することができる。方法はブロック５１４に続く。
【０１９２】
ブロック５１４において、選択されたメディアアイテムの再生は、組み込みメディアプレーヤアプリケーションによってユーザデバイスのディスプレイ上に提供された組み込みインタフェースにおいて実行される。例えば、ブロック５１０においてメディアアイテムを選択した後、再生は、メディアアイテムの一連のコンテンツデータ、例えばビデオデータセグメントの第１のフレームおよび／またはオーディオセグメントの第１の部分のスタートにおいて開始される。いくつかの例では、再生は、組み込みインタフェースにおいてビデオデータのフレームを表示すること、および／または対応するオーディオデータをユーザデバイスのスピーカからのオーディオとして出力することを含み得る。いくつかの例では、再生は、ビデオおよび／またはオーディオのためにトラックを再生することを含むことができ、再生位置は、そのトラックの現在の時点で現在表示または出力されているデータを参照することができる。いくつかのさらなる例では、例えば、仮想現実環境または他の表示された３Ｄ環境を表示する際に、再生は、ある時点に加えてまたはその代わりに、３Ｄ環境における表示された視点（または他の参照ビュー）の方向および／または向きを参照する再生位置を有し得る。場合によっては、メディアアイテムコンテンツデータは、ユーザデバイスのローカルストレージ、例えば、ユーザデバイスに含まれるメモリおよび他のストレージから取得され得る。場合によっては、メディアアイテムコンテンツデータは、ネットワークを介して、例えば、コンテンツサーバ１５４などの別のデバイス、異なるメンバーデバイスなどからのデータのストリームとして受信され得る。いくつかの実装形態では、ビデオメディアアイテムの再生は、ミュートされたオーディオおよびスピーチのキャプションの表示をデフォルトにすることができ（例えば、キャプションデータが受信されたビデオデータに含まれている場合）、ユーザは、ビデオデータに対してオーディオ出力を有効化するように選択可能である。
【０１９３】
メディアアイテムの再生は、組み込みセッションの他のメンバーデバイス上で行われる。いくつかの実装形態では、サーバ（例えば、セッションサーバまたはコンテンツサーバ）は、組み込みセッションにおけるメディアアイテムの再生を管理することができる。いくつかの実装形態では、コンテンツサーバは、組み込みセッションを管理し、コンテンツデータの個々のストリームを各メンバーデバイスに送信するセッションサーバまたは他のサーバにコンテンツデータをストリーミングすることができる。例えば、セッションサーバは、メンバーデバイスから受信した任意のコマンドをコンテンツサーバに送信することができ、またはコマンドをコンテンツサーバの特定のコマンドに処理することができる。いくつかの実装形態では、コンテンツサーバは、組み込みセッションの各メンバーデバイスにコンテンツデータを独立してストリーミングすることができ、メンバーデバイスの１つまたは複数からのユーザ入力に基づいてコマンドを受信し得る。コマンドに基づいて（例えば、方法５００の後のブロックで）再生に対して行われた変更は、メンバーデバイスへのすべてのストリームにおいて提供され得る。
【０１９４】
再生はメンバーデバイス間で同期される。いくつかの実装形態では、同期は１つまたは複数のサーバによって管理され得る。例えば、メディアアイテムをデータのストリームとして各メンバーデバイスに提供するコンテンツサーバは、各メンバーデバイス上での再生が同期されるように、同期データ、例えば基準位置を用いて各データストリームを同期させることができる。いくつかの実装形態では、セッションサーバは、メディアアイテムデータシーケンス内の基準フレームまたは時間位置などの基準位置（または他の同期データ）を格納することができ、これはメンバーデバイスによってアクセスされ得、および／またはセッションサーバによってメンバーデバイスに送信され得る。例えば、メディアデータの再生は、基準位置に等しい各メンバーデバイス上のフレーム（または時点）に設定され得る。いくつかの実装形態では、同期は、メンバーデバイスのうちの１つまたは複数によって管理され得る。例えば、メンバーデバイスのうちの１つ（例えば、ユーザデバイス）は、ユーザデバイス上で再生されているメディアデータ内の現在位置を示す同期データ（例えば、基準位置）を他のメンバーデバイスに送信する基準デバイスであり得る。他のメンバーデバイスは、それらのデバイス上のメディアアイテムの再生を調整して、基準デバイスの基準位置と同期させることができる。
【０１９５】
いくつかの例では、すべてのメンバーデバイス（例えば、セッションサーバ、コンテンツサーバ、またはメンバーデバイスのうちの１つ）にアクセス可能なデバイスのデータベース上で格納およびアクセスされ得る共有された再生タイマを使用することが可能である。例えば、単一の基準値は、全てのメンバーデバイスが同期すべきである信頼できる再生位置（例えば、グローバル再生位置）として機能することができる。いくつかの実装形態では、グローバル再生位置とメンバーデバイス上の再生位置との間の許容誤差（例えば、閾値時間量）、例えばプラスまたはマイナス５秒が許容され得る。メンバーデバイスの再生位置が、許容量よりも大きい時間にある場合、その再生位置はグローバル再生位置に更新される。
【０１９６】
いくつかの実装形態では、複数のまたはすべてのメンバーデバイスは、平均化方式で共有されたタイマ（グローバル再生位置）を更新することができる。例えば、再生中、各メンバーデバイスは毎秒（または他の時間単位）サーバと同期しようと試み、これは「同期点」である。各同期点において、各メンバーデバイスは、グローバル再生位置を増加させることを試みる。いくつかの例では、増加量は以下の式：
ｇ’＝ｇ＋（［デバイスの現在の再生位置］−［デバイスの前の再生位置］）／［メンバーデバイスの総数］
を使用して決定することができ、ここで、ｇはグローバル再生位置、ｇ’は増加したグローバル再生位置である。
【０１９７】
例えば、デバイスの前の再生位置は前の同期点にあり、メンバーデバイスの総数は、組み込みメディアセッション内のメンバーデバイスの数である（例えば、すべてのメンバーデバイスがグローバル再生位置を更新できる場合）。従って、各デバイスは、メンバーデバイスの数で割った、その最後の同期点以降のそのデバイスの再生位置の増加に基づく分数量だけ、グローバル再生位置を更新する。増加した再生位置ｇ’と［デバイスの現在の再生位置］との間の差が許容値より大きい場合、デバイスは、再生位置をｇに維持または変更する（ｇ’をコミットしない）。そうでなければ、デバイスはｇ’をデータベースにコミットする。方法はブロック５１６に続く。
【０１９８】
ブロック５１６において、ユーザ入力は、組み込みインタフェースにおいてメンバーユーザから受信される。例えば、ユーザ入力は、ブロック５０８において組み込みセッションを開始したメンバーデバイスのユーザから受信され、あるいはユーザ入力は、異なるメンバーデバイスの異なるメンバーユーザから受信され得る。ユーザ入力、例えばボタン、アイコン、スライダ制御などのような表示されたインタフェース要素の選択は、組み込みインタフェースにおいて受信され得る。いくつかの場合において、ユーザ入力は、チャットインタフェースにおいて受信され得るか、または部分的に受信され得る。例えば、ユーザ入力は、表示されたメディアアイテム上にユーザコメントを直接入力するためのオプションを選択することができ、次いでさらなるユーザ入力は、例えばテキスト、絵文字、評価記号などとして、チャットインタフェースにユーザコメントを入力することができる。方法はブロック５１８に続く。
【０１９９】
ブロック５１８において、受信されたユーザ入力が再生されているメディアアイテムに関連するユーザコメントであるかどうかがチェックされる。例えば、そのような関連するユーザコメントは、メディアアイテムの表示中にユーザコメントが表示されるように、組み込みインタフェースに入力される。例えば、ユーザコメントは、入力後の所定の時間の再生中に表示され得る。いくつかの例では、ユーザコメントは、ビデオデータのディスプレイ上に重ね合わせられることが可能であり、またはそうでなければ組み込みインタフェース内に表示されることが可能である。いくつかの実装形態では、ユーザのコメントの内容は、上述のようにチャットインタフェースに入力され、次いで組み込みインタフェースに表示され得る。例えば、ユーザ入力は、組み込みインタフェースにおいてオプションを選択してコメントを入力することができ、その後、コメントはチャットインタフェースを介して入力される。いくつかの実装形態では、ユーザ入力は、表示ウィンドウ内の位置またはメディアアイテムのビューなど、組み込みインタフェースの表示された領域内にユーザコメントを表示する特定の位置を選択または指すこともできる。例えば、位置は、ビデオ、画像、または他のメディアアイテムの表示ビュー内のコメントの位置の座標として指定され得る。さらなる例では、ユーザは、ユーザの感情または気分に関連するチャットインタフェースまたは組み込みインタフェースに表示された複数の制御（例えば、顔文字ボタン）のうちの１つまたは複数をトグル（例えばタップ）または連続的に選択することができる。この選択により、ユーザが制御を選択している間、またはユーザが再び制御をトグルする（例えば、タップ）まで、関連する画像またはアイコン（例えば、顔文字）が埋め込みインタフェースに（後述のように）表示され、メディアアイテムの再生に応答してその時点のユーザの感情を表す。
【０２００】
ユーザ入力がユーザコメントである場合、ブロック５２０において、ユーザコメントは、コメントが入力および／または表示されたときに表示されていたメディアアイテムの関連する部分の識別と関連付けて格納される。いくつかの実装形態では、関連する部分の識別は、メディアアイテムの識別（例えば、メディアアイテムのタイトル、識別値など）を含む。例えば、メディアアイテムの関連する部分の識別は、ユーザコメントのメディアアイテムコンテキストを示すことができる。いくつかの例では、５分のビデオセグメントの再生開始後１分の時間にユーザのコメントが入力された場合、メディアアイテムの関連する部分は、ビデオセグメントのその１分の時点のメディアアイテムのコンテンツデータである（例えば、１分の時点の前および／または後の閾値量のデータ）。いくつかの例では、この部分は、例えば、その部分の開始位置またはその部分の中点を示す時点によって識別され得る。いくつかの実装形態では、識別はその部分の期間を含むことができる。いくつかの実装形態では、コメントを提供したユーザの識別（例えば、組み込みセッションに表示されているようなユーザの識別、またはチャット会話のチャット識別情報）が格納され得る。いくつかの実装形態では、メディアアイテムの表示された領域に対するユーザコメントの位置の表示は、ユーザコメントと関連付けて格納され得る。例えば、表示された組み込みインタフェースウィンドウの領域、または組み込みインタフェース内のメディア表示ウィンドウの領域を参照する座標は、ユーザコメントがユーザによって配置された場所を示すことができる。方法はブロック５２２に続く。
【０２０１】
ブロック５２２において、関連するチャット会話の識別は、ユーザコメントに関連付けて格納される。これにより、例えば、ユーザコメント（およびチャット会話に関連する組み込みアプリケーションのために入力および保存された他のユーザコメント）を読み出し、同じチャット会話のユーザのための（例えば、ユーザのコメントが入力されたときにチャット会話に参加したチャットユーザの同じグループからのメンバーユーザのための）メディアアイテムの後の再生中に表示することができる。異なる第２のチャット会話に関連する組み込みインタフェースでのメディアアイテムの将来の再生のために、ユーザのコメントは読み出されず、表示されないだろう。例えば、その第２のチャット会話は、メディアアイテムの再生中に表示するための関連するユーザコメントのそれ自体のセットを有することができ、それらは第２のチャット会話に関連する組み込みメディアプレーヤアプリケーションに入力されたものである。いくつかの実装形態では、他のチャット会話における、または他のユーザによるメディアアイテムの後の組み込み再生のために、ユーザコメントは読み出されず、表示されない。
【０２０２】
ブロック５２４において、ユーザコメントは、ユーザコメントが受信されたメンバーデバイスの組み込みインタフェースに表示され、ユーザコメントは、現在の再生の間に（例えば、ユーザデバイス上のメッセージングアプリケーションを介して）他のメンバーデバイスに送信され、ユーザコメントが他のメンバーデバイスの組み込みインタフェースに表示されるようにする。いくつかの例では、ユーザコメントは、組み込みインタフェースでの表示から削除される前のメディアアイテムの再生中に所定の期間、表示される。期間は、ユーザプリファレンス、組み込みセッションの設定などに基づいて決定され得る。いくつかの実装形態では、ユーザコメントは、ユーザによる関連する制御の選択、例えば、上述のように表示された制御のトグルまたは継続的な押下に応答して表示され、ユーザが制御の選択をやめるか、または再び制御をトグルすると、ユーザコメントは表示から削除される。次いで、方法はブロック５１２に進み、ブロック５１４において、ユーザが組み込みセッションに参加するかまたはそれから退出してメディアアイテムの再生を実行することを可能にすることができる。
【０２０３】
ブロック５１８において判定されるように、ユーザ入力がユーザコメントではない場合、方法はブロック５２６に進み、ユーザ入力がメディアアイテムにおけるシークポイントの選択であるかどうかがチェックされる。いくつかの例では、ユーザは、メディアアイテムの再生長さ全体を表す組み込みインタフェースに表示されたグラフィカルプログレスバーまたはタイムライン上のシークポイントを選択することができる。他の実装形態では、シークポイントは、他の方法で、例えばタイムラインに沿った特定の時間を指定する入力を受信すること、再生をタイムラインに沿って前後に動かす早送りまたは巻き戻し制御の選択を受信することなどによって選択され得る。
【０２０４】
ユーザ入力がシークポイントの選択である場合、ブロック５２８において、メディアアイテムの再生位置はシークポイントに更新される。例えば、シークポイントが再生位置をその元の位置から移動させるいくつかの場合においては、メディアアイテムの再生は、その元の位置から中断され、更新されたシークポイントで継続することができる。方法はブロック５３０に続く。
【０２０５】
ブロック５３０において、シークポイント情報は、デバイスの再生を同期させるために送信される。例えば、調整されたシークポイントの時間値または他の値などのシークポイントを記述する情報は、他のメンバーデバイスに（例えば、メッセージングアプリケーションを介して）送信されて、それらのデバイス上でのメディアアイテムの再生を、ユーザから更新されたシークポイントを受信したメンバーデバイス上での再生と同期させることができる。上述のような共有されたタイマおよび／またはグローバル再生位置を使用するいくつかの実装形態では、メンバーデバイスは、グローバル再生位置（ｇ）の値を、シークポイントにおける再生位置の新しい値で上書きする。次いで、方法はブロック５１２に進み、ブロック５１４において、ユーザが組み込みセッションに参加するかまたはそれから退出してメディアアイテムの再生を実行することを可能にすることができる。
【０２０６】
ユーザ入力が、ブロック５２６で判定されたように、シークポイントを選択しない場合、方法はブロック５３２に続き、適用可能であれば、１つまたは複数のデバイスまたはアプリケーション機能は、受信されたユーザ入力に基づいて実行され得る。方法は、場合によってはブロック５１２に進むことができる。いくつかの実装形態では、方法は、メディアアイテムの後の再生に応答してブロック５３４に続く。
【０２０７】
ブロック５３４において、メディアアイテムおよびチャット会話に関連して格納された関連するユーザコメントは、同じ（例えば進行中の）チャット会話におけるメディアアイテムの後の再生中に表示される。関連するユーザコメントは、後の再生中に組み込みインタフェースに表示され得る。例えば、いくつかの実装形態では、ブロック５１８から５２４においてメディアアイテムが、メディアアイテムに関連して格納された１つまたは複数のユーザコメントを受信した場合、関連するユーザコメントは、チャットユーザによるメディアアイテム関連する部分の後の再生と共に表示され得る。いくつかの例では、メディアアイテムが、（例えば、コメントが最初に入力されたときと同じ会話ＩＤを有する、または同じ参加チャットユーザを有する、または元のチャットユーザのサブセットを有する）チャット会話の組み込みインタフェースで再生され、１つまたは複数のユーザコメントに関連するメディアアイテムの一部が表示される場合、関連するユーザコメントが記憶装置から読み出され、また、関連するメディアアイテム部分と共に組み込みインタフェースに表示される。いくつかの例では、ユーザコメントのインタフェース位置が格納されている場合、関連するユーザコメントは、それらが入力された組み込みインタフェース内の同じ位置、例えば再生ウィンドウ内の同じ座標に表示され得る。いくつかの例では、所定の期間またはある量のメディアアイテムデータが再生された後、関連するユーザコメントが、組み込みインタフェースから削除され得る。いくつかの実装形態では、ユーザのコメントはまた、あるいは代替的に、後の再生中にチャットインタフェースのチャット会話に、例えばチャットメッセージとして表示され得る。いくつかの実装形態では、ユーザコメントは、再生中にメディアアイテムの表示の下または横にリストとして表示されるか、または組み込みインタフェース内の再生インタフェース上の制御を介してアクセス可能である（例えば、コメントビューと再生ビューとの切り替え）。
【０２０８】
さらなる例では、上述のように、ユーザが制御を継続的に選択またはトグルしている間に、ユーザコメントがメディアアイテムの再生期間に関連して格納されていることがあり、これらのユーザコメントは、メディアアイテム再生の対応する部分（例えば、絵文字、画像などを介して）の間のユーザの感情または思考を表し得る。そのメディアアイテムを以前に閲覧した複数のユーザからの入力から格納されたそのような複数のユーザコメントを用いて、これはメディアアイテムを同時に視聴してコメントしていたメンバーユーザの思考および感情状態の同期を可能にする。メディアアイテムの対応する部分に対するユーザコメントは、タイムバー上のマーカーまたはアイコンとして、またはメディアアイテムの表示上のオーバーレイ（例えば、ビデオフレーム上に表示される）として表示されることが可能であり、ユーザコメントは、関連するマーカーまたはアイコンの選択により完全に表示され得る。そのようなユーザコメントは、同じチャット会話内の同じまたは異なるユーザによるメディアアイテムのリプレイ（後の再生）中のユーザの思考および感情の状態の変化を登録することができる。
【０２０９】
いくつかの実装形態では、保存機能が、後の再生のためにユーザが再生中のメディアアイテムを保存することを可能にするために提供され得る。これは、チャット会話ではあまり見られないことがある比較的長い期間を有するメディアアイテム（例えば、映画またはＴＶ番組）にとって有用であり得る。いくつかの例では、ユーザは、提供されたユーザ入力を介して、例えばユーザデバイスおよび／またはサーバ（例えばセッションサーバまたはメッセージングサーバ）に格納された未再生メディアアイテムの関連するリポジトリにアクセスすることが可能であり、ユーザは、所望の時間に、一度に全部連続してなど、メディアアイテムを再生することが可能となる。例えば、保存されたメディアアイテムは、他のチャットユーザによって以前に再生されたことがあり、ユーザはそれらの組み込みセッションに参加していなかった。
【０２１０】
いくつかの例では、組み込みセッション（例えば、異なるチャットユーザによって開始された）で再生された各メディアアイテムは、チャットインタフェースおよび／または組み込みインタフェースの表示されたオプション（例えば、ＵＩ要素）に関連付けられて、後の再生のためにメディアアイテムを保存することができる。例えば、このオプションは、図２〜図３を参照して説明したように、組み込みセッションがアクティブであること（および参加オプションも含むことができること）を示す、ユーザデバイスによって受信された通知に関連して表示され得る。このオプションはまた、あるいは代替的に、組み込みインタフェース内に、例えば、組み込みアプリケーションで再生されている、および再生されるべきメディアアイテムの識別の表示されたリストの隣に、またはそれに関連して表示され得る。ユーザ入力によるオプションの選択により、そのメディアアイテムは、選択しているユーザに関連するキューに格納される。いくつかの例では、メディアアイテムは、ユーザと特定のボットが参加する異なるチャット会話に格納され得る。いくつかの実装形態では、ユーザは、チャット会話中に組み込みセッションにおいて他のチャットユーザによって開始されたすべてのメディアアイテムを自動的に保存することを要求することができる。キューに格納された任意のメディアアイテムは、メディアアイテムの再生のために開始される組み込みメディアプレーヤアプリケーションのための組み込みセッションにおいて後に選択され再生されることが可能である。いくつかの実装形態では、組み込みインタフェースおよび／またはチャットインタフェースは、後の再生中にユーザからコメントを受信することができ、コメントは、組み込みインタフェースに表示され、かつ／またはメディアアイテムが最初に再生されたチャット会話に送信および提供される。いくつかの例では、キューからのメディアアイテムが後の再生のために選択されると、コメント制御が表示されて、選択されたメディアアイテムに対するコメントがユーザによって入力されることを可能にする。いくつかの実装形態では、コメント制御の選択は、元のチャット会話を表示し、チャット会話におけるメッセージとしてメディアアイテムリンクを挿入し、チャット会話においてユーザがコメントメッセージを作成することを可能にすることができる。いくつかの実装形態では、保存または再生されたメディアアイテムへのリンクは、チャット会話における選択可能なメッセージ（例えば、再生ボタン付きのビデオの画像、またはテキストメッセージ）として表示されることが可能であり、チャットユーザによるメッセージの選択により、メディアプレーヤ組み込みアプリケーションを起動させ、選択されたメディアアイテムを再生させる。いくつかの実装形態は、他の種類の組み込みアプリケーションで出力される他の種類のコンテンツデータ、例えば、経時的に表示されるゲームデータ（例えば、ゲームの特定のプレイを記録するため）、ドキュメントデータ、旅行日程表などに対し、類似の保存機能を提供できる。
【０２１１】
上記の機能を使用することができる様々な例示的な実装形態では、メディアアイテムの選択は、複数の参加者を含む第１のチャット会話で受信される。例えば、チャット会話は、ネットワークによって接続された複数のユーザデバイス上で実施され得る。メディアアイテムは、ネットワークによってユーザデバイスの１つまたは複数に接続されたユーザデバイスおよび／またはサーバによって提供され得る。メディアアイテムの再生は、そのメディアアイテムが参加者のユーザデバイスによって表示されるように、第１のチャット会話において開始される。コメントが、第１の参加者から受信され、そのコメントはメディアアイテムに関連付けられており、メディアアイテムの特定の部分に関連付けられている。コメントが格納され、コメントを格納した後に、そのメディアアイテムの特定の部分を表示している第２の参加者のユーザデバイスが検出される。第２の参加者のユーザデバイスが特定の部分を表示していることの検出に応答して、そのコメントが、第２の参加者のユーザデバイスによって表示されるようにされる。
【０２１２】
これらの実装のための機能は、第２の参加者が、コメントが受け取られたときに第１の参加者が参加していた第１のチャット会話の参加者であると判定することに応答して、第２の参加者のユーザデバイスによってコメントを表示することをさらに含み得る。コメントを格納することは、コメントに関連する識別情報を格納することを含むことができ、識別情報は、第１のチャット会話の識別を含む。いくつかの例では、識別情報は、メディアアイテムの識別、およびメディアアイテムの特定の部分の識別も含むことができる。コメントは、評価および／またはユーザコメントを含み得る。いくつかの例では、第１のチャット会話におけるメディアアイテムの再生は、例えば、ネットワークを介してユーザデバイスによってアクセス可能な参照番号を提供することによって、参加者のユーザデバイス間で同期され、ユーザデバイスの各々は、一定の時間間隔で参照番号と同期を試みる。
【０２１３】
さらなる例では、再生を開始することは、ユーザデバイスのうちの第１のユーザデバイス上で実行され得、メディアアイテムの再生が第１のユーザデバイスによって開始されたという通知が、１つまたは複数の他のユーザデバイスに提供され得る。他のユーザデバイスは、再生に参加するためのデータ（および／または要求）を送信し、他のユーザデバイスは、第１のクライアントデバイスを含む組み込みセッションに追加される。ユーザデバイスの追加に応答して、メディアアイテムの再生は、他のユーザデバイス上において、第１のクライアントデバイス上の現在の再生位置に同期される。別の例では、メディアアイテムの再生を開始することは、メッセージングアプリケーションによって提供されるチャット会話に関連してユーザデバイスの各々の上に表示された組み込みインタフェースにメディアアイテムのデータを表示することを含む。組み込みインタフェースは、メッセージングアプリケーションと関連して実行される組み込みアプリケーションによって提供される。
【０２１４】
いくつかの例示的な実装形態では、メディアアイテムの選択は、チャット会話の参加者のうちの第１の参加者から第１のクライアントデバイス上で受信される。第１のコマンドは、メディアアイテムの再生を開始するために参加者に関連する１つまたは複数のクライアントデバイスに送信される。第２の参加者から第２のクライアントデバイス上のメディアアイテムにおけるシークポイントを示すユーザ入力が受信される。ユーザ入力に応答して、第２のコマンドが、複数の参加者に関連する１つまたは複数のクライアントデバイスに送信され、メディアアイテムの再生をシークポイントに更新する。
【０２１５】
例えば、メディアアイテムは、第１のメディアアイテムであり得る。第２のメディアアイテムを選択する第２の参加者から入力が受信され、第２のメディアアイテムが、第１のメディアアイテムおよび第２のメディアアイテムの再生の順序を示すプレイリストキューに追加されることが可能である。メディアアイテムの再生の同期は、第１のクライアントデバイスおよび１つまたは複数のクライアントデバイスに対して実行することができ、これは、再生の位置を示すグローバル値を更新することを含む。いくつかの実装形態では、メディアアイテムの再生が開始されたという通知が、複数の参加者に関連する１つまたは複数のクライアントデバイスに提供され、１つまたは複数のクライアントデバイスが再生に参加する予定であるという表示が受信され、１つまたは複数のクライアントデバイスが、第１のクライアントデバイスを含む組み込みセッションに追加され、１つまたは複数のクライアントデバイスをセッションに追加することに応答して、メディアアイテムの再生が、１つまたは複数のクライアントデバイス上において、第１のクライアントデバイス上の現在の再生位置に同期される。いくつかの例では、第１のチャット会話においてメディアアイテムの再生を開始することは、メッセージングアプリケーションによって提供されるチャット会話に関連してユーザデバイスの各々の上に表示された組み込みインタフェースにメディアアイテムのデータを表示することを含む。
【０２１６】
図６は、メッセージングアプリケーションに関連して組み込みアプリケーションの出力を提供するための別の例示的な方法６００を示す流れ図である。いくつかの例では、方法６００は、組み込みアプリケーションがチャット会話から開始され、データがチャットユーザを含む組み込みセッションで処理される図２の１つまたは複数のブロックと同様に実施され得る。
【０２１７】
ブロック６０２では、方法６００の実装においてユーザデータを使用するためにユーザ同意（例えばユーザ許可）が取得されているかどうかをチェックする。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザプリファレンス、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【０２１８】
方法６００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック６０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な利用により実装され得ると判定され、方法はブロック６０８に続く。ユーザの同意が得られていない場合、ブロック６０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック６０８に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【０２１９】
ブロック６０８において、組み込みアプリケーションが開始され実行されて、チャット会話を提供するメッセージングアプリケーションに関連して、ユーザデバイス上の組み込みインタフェースに表示出力を提供し、ユーザデバイスは、図２〜図４に関して上述したのと同様に、組み込みゲームアプリケーションに関連する組み込みセッションに参加している、チャット会話に参加する複数のメンバーデバイスのうちの１つである。方法はブロック６１０に続く。
【０２２０】
ブロック６１０において、ユーザデバイス上で実行されている組み込みアプリケーションへのローカル入力が受信されたかどうかが判定される。例えば、ローカル入力は、組み込みアプリケーションが実行されるユーザデバイスのユーザから受信されたユーザ入力を含み得る。ローカル入力が受信されている場合、方法はブロック６１２に進み、ここで組み込みアプリケーションの１つまたは複数の状態が、ローカル入力に基づいて更新される。例えば、ローカル入力は、１つまたは複数のアプリケーション状態を変更させる、組み込みアプリケーションへの１つまたは複数のコマンドを含み得る。この例では、アプリケーション状態は、組み込みセッションのメンバーデバイスのすべての組み込みアプリケーションにおいて更新される状態を含み得る。例えば、ゲームアプリケーションでは、更新は、ゲーム状態、例えば、１つまたは複数の表示されたゲームオブジェクトの位置の変化、スコアの変化などに対するものであり得る。メディアプレーヤアプリケーションでは、更新は、再生されているメディアアイテムの再生特性、例えば再生位置の変更、停止、一時停止、巻き戻し、早送りなどに対するものであり得る。場合によっては、ユーザデバイスで更新された状態は、他のメンバーデバイスでは更新されないことがあり、例えば、組み込みインタフェースに表示されるような環境のビューの変化（例えばゲーム環境）は、もし各メンバーデバイスのビューが、特定の組み込みアプリケーションにおいてそのデバイスのユーザによって独立して制御される場合には、他のメンバーデバイスでは更新されないことがある。方法はブロック６１４に続く。
【０２２１】
ブロック６１４において、更新された状態がメンバーデバイス間で更新されたタイプである場合、更新された状態は、組み込みセッションの他のメンバーデバイスに送信される。例えば、組み込みアプリケーションは、更新された状態を記述するデータをメッセージングアプリケーションに提供することができ、メッセージングアプリケーションは、そのデータを組み込みセッションの他のメンバーデバイスに送信することができる。方法はブロック６１６に続く。
【０２２２】
ローカル入力がブロック６１０で受信されなかった場合、またはブロック６１４の後、方法はブロック６１６に進み、入力がネットワーク（例えば、リモート入力）を介して組み込みセッションの他のメンバーデバイスのうちの１つまたは複数から受信されたかどうかが判定される。そのような入力が受信されている場合、方法はブロック６１８に続き、アプリケーション状態が、その入力に基づいて更新される。例えば、入力は、異なるメンバーデバイス上の対応する組み込みアプリケーションの更新されたアプリケーション状態を示してもよく、ユーザデバイス上の組み込みデバイスのアプリケーション状態は、他のメンバーデバイスと同期するように更新される。方法はブロック６２０に続く。
【０２２３】
ブロック６１６で入力が受信されなかった場合、またはブロック６１８の後、方法はブロック６２０に進み、１つまたは複数のメッセージ条件が、アプリケーション環境で提供された１つまたは複数の非ユーザアプリケーションオブジェクトに対し、組み込みアプリケーションまたはメッセージングアプリケーションで発生したかどうかが判定される。例えば、アプリケーション環境は、ゲーム環境であってよく、１つまたは複数の非ユーザアプリケーションオブジェクトは、例えば、組み込みセッションにおいてどのプレイヤーユーザによっても制御されていないゲーム環境内のキャラクタまたはエンティティ、例えば、ゲームのプレイヤーユーザがゲーム環境において対話することができるノンプレイヤーゲームエンティティを表し得る。別の例では、アプリケーションオブジェクト（ゲームオブジェクト）は、シミュレートされた対戦相手またはチームメンバーのような、ゲームのプレイヤーユーザと一緒にプレイする、または対戦するノンプレイヤーゲームキャラクタを含むことができる。別の例では、アプリケーション環境は、メディアアイテムを表示するメディアプレーヤ環境であってよく、非ユーザアプリケーションオブジェクトは、表示されたコンテンツデータにおけるキャラクタ（例えば、映画または画像内のキャラクタ）であり得る。いくつかの例では、アプリケーションオブジェクトは、ボットによって採用され、キャラクタとして表示される仮定のキャラクタまたはペルソナであり得る。
【０２２４】
非ユーザアプリケーションオブジェクトは、メッセージを出力でき得る。例えば、アプリケーションオブジェクトがキャラクタである場合、メッセージは、組み込みアプリケーションおよびセッションにおけるキャラクタの行動またはロールに応じたものであり得る。いくつかの実装形態では、異なる種類のメッセージを出力することができる複数の異なるアプリケーションオブジェクトが、組み込みセッションに実装され得る。
【０２２５】
１つまたは複数のメッセージ条件が事前定義および格納され、組み込みアプリケーションの実行中に確認され得る。メッセージ条件が発生した場合、メッセージ条件は、関連するアプリケーションオブジェクトにチャットメッセージを出力させることができる。例えば、特定のアプリケーションオブジェクトは、１つまたは複数のメッセージ条件に関連付けられることが可能であり、その結果、１つまたは複数のメッセージ条件が発生した場合（あるいは、代わりに１つまたは複数のメッセージ条件のいずれか１つが発生した場合）、関連するアプリケーションオブジェクトは、現在のアプリケーション状態、現在のメンバーユーザなどに基づいて決定されたチャット会話に対して事前定義されたメッセージまたはメッセージを出力するように指定される。１つまたは複数の関連する非ユーザアプリケーションオブジェクトによるメッセージの出力をトリガするために、さまざまなメッセージ条件および／または種類のメッセージ条件が定義され得る。メッセージ条件は、例えば、アプリケーションオブジェクト（例えば、アプリケーションオブジェクトと衝突するプレイヤー制御オブジェクト、アプリケーションキャラクタに宛てられた要求を入力するユーザなど）に影響を及ぼすアプリケーション環境で発生するイベントを含み得る。メッセージ条件は、例えば、組み込みセッションに参加または組み込みセッションを終了する１または複数のメンバーユーザを含み得る。メッセージ条件は、例えば、アプリケーション環境における特定のキャラクタに対する、または特定のキャラクタを支援するユーザアクションを含み得る。
【０２２６】
いくつかの実装形態では、メッセージ条件は、チャット会話におけるメンバーユーザによる特定のチャットメッセージまたは特定の種類のチャットメッセージの入力を含み得る。例えば、入力チャットメッセージは、アプリケーションオブジェクトを参照してもよい。いくつかの例では、ゲームセッションにおけるプレイヤーユーザが、「左側の敵を追いかけよう」などのメッセージをチャット会話に入力すると、このメッセージは、メッセージングアプリケーション（または組み込みアプリケーション、他のアプリケーション、またはサーバ）によって解析および分析され、特定のゲームオブジェクトを参照すると判定され得る。これは、プレイヤーメッセージがゲームオブジェクトを参照した場合にトリガされる、そのゲームオブジェクトに関連するメッセージ条件を満たし得る。メッセージ条件が発生していない場合、方法はブロック６０８に進むことができる。
【０２２７】
ブロック６２０で判定されたようにメッセージ条件が発生した場合、方法はブロック６２２に進み、メッセージ条件に関連するアプリケーションオブジェクトのオブジェクト識別情報が、組み込みアプリケーションからメッセージングアプリケーションに提供される。例えば、オブジェクト識別情報は、組み込みアプリケーションおよびセッションによって表示されるようなアプリケーションオブジェクトの名前を提供するラベルであってよく、またはアプリケーションオブジェクトの他のタイプの識別子であってよい。さらに、いくつかの実装形態では、ブロック６２０において、アプリケーションオブジェクトおよびメッセージ条件に関連するメッセージデータが、組み込みアプリケーションからメッセージングアプリケーションに提供され得る。メッセージデータは、テキストまたは他の形態のメッセージ（例えば、画像、記号、音声メッセージなど）であってよく、またはメッセージの表示（例えば、特定のメッセージまたは種類のメッセージを示すフラグまたは値）であってよい。いくつかの実装形態では、組み込みアプリケーションは、発生したことが検出されたメッセージ条件を組み込みアプリケーションに提供することができる。方法はブロック６２４に続く。
【０２２８】
ブロック６２４において、メッセージングアプリケーションは、チャット識別情報を各アプリケーションオブジェクトに割り当てる。いくつかの例では、チャット識別情報は、組み込みゲームアプリケーションによって提供されるチャット名であり、またはアプリケーションオブジェクトは、組み込みアプリケーションから受信されたデータに基づいてメッセージングアプリケーションによってチャット名を割り当てられることができる。いくつかの実装形態では、メッセージングアプリケーションは、組み込みアプリケーションによって提供されたメッセージデータに基づいて、アプリケーションオブジェクトに関するメッセージを判定することができる。例えば、メッセージングアプリケーションは、ルックアップテーブルまたは他のデータ構造における特定のテキストメッセージに対応する組み込みアプリケーションから値を受信することができる。いくつかの実装形態では、メッセージングアプリケーションは、組み込みアプリケーションで発生したことが検出された１つまたは複数のメッセージ条件を受信し、メッセージ条件に基づいて関連するメッセージを判定することができる。いくつかの例では、メッセージングアプリケーションは、アプリケーションオブジェクトに対するメッセージを判定し、判定されたメッセージをメッセージングアプリケーションに送信することができるサーバに、発生しているメッセージ条件を記述するデータを送信することができる。方法はブロック６２６に続く。
【０２２９】
ブロック６２６において、アプリケーションオブジェクトについて判定された各チャット識別情報に関連するメッセージが、チャット会話のチャットインタフェースに出力される。各チャット識別情報は、チャット会話におけるメッセージをチャットユーザ（例えば、いくつかの実装形態では、メンバーユーザのみ）に提供する関連アプリケーションオブジェクトを表す。これにより、組み込みセッションのメンバーデバイスは、チャットインタフェースにメッセージを表示し、メンバーユーザはメッセージを閲覧することができる。いくつかの実装形態では、メッセージングアプリケーションは、他のメンバーデバイスのチャットインタフェースではなく、１つまたは複数の特定のメンバーデバイスのチャットインタフェースでメッセージを出力することができる（例えば、１つまたは複数の特定のメンバーデバイスのチャットインタフェースに出力されるダイレクトメッセージ）。例えば、特定のアプリケーションオブジェクトが、アプリケーション環境におけるそれらのユーザと対話していることによって（例えば、ユーザ制御アプリケーションオブジェクトを介して、またはメンバーユーザからの直接入力によって）、メンバーユーザのサブセットにメッセージを提供することになっている場合、メッセージは、そのユーザのサブセットのメンバーデバイスに送信されて、それらによって表示されることができる。
【０２３０】
出力メッセージは、さまざまな形式をとることができ、メッセージ条件およびそのアプリケーションオブジェクトに関連する保存されたメッセージのセットに基づくことができる。例えば、メッセージ条件が、組み込みゲームセッションに参加している１または複数のメンバーユーザによって満たされ、関連するゲームオブジェクトが、プレイヤー−エネミーゲームオブジェクト（例えば、キャラクタ）である場合、そのゲームオブジェクトに対する出力メッセージは、「さらなる被害者！」であり得る。同様のメッセージ条件は、「ようこそ、ユーザ」のようなメッセージを提供することができる、プレイヤーに優しいゲームオブジェクト（例えば、キャラクタ）に関連付けられ得る。別の例では、組み込みセッションに参加する新しいユーザによってメッセージ条件が満たされることに応答して、関連するアプリケーションオブジェクト（例えば、キャラクタ）は、新しいプレイヤーのチャットインタフェースにのみ表示される、アプリケーションユーザに対するヒントや秘訣（例えば、ゲームの遊び方）を含む１つまたは複数のメッセージを送信することによって新しいユーザに支援を提供できる。別の例では、メッセージ条件が、アプリケーションオブジェクトに対して発生する組み込みアプリケーションにおけるイベントによって満たされる場合、関連するメッセージは、アプリケーションオブジェクトのステータスの説明を含み得る（例えば、「皆からの助けが必要です」または「気を付けて、私はもっと強い」と言うゲームキャラクタ）。別の例では、メッセージ条件が、非ユーザアプリケーションキャラクタに対するユーザアクションによって満たされる場合、非ユーザキャラクタは、嘲り（例えば、ゲームにおいて、「あなたの努力は無駄だ」）などのメッセージを提供することができる。別の例では、メッセージ条件が、非ユーザアプリケーションオブジェクト（例えば、キャラクタ）を支援するユーザアクションによって満たされる場合、アプリケーションオブジェクトは、支援ユーザに感謝するメッセージ（例えば、「あなたの助けが大いに必要だった」）を提供することができる。別の例では、メッセージ条件が、チャット会話においてメンバーユーザからの特定のユーザチャットメッセージの入力によって満たされることが可能であり、そのチャットメッセージは、ゲームオブジェクトを参照する（例えば、「左側の敵を追いかけよう」）。メッセージ条件が満たされることに応答して、ゲームオブジェクトを表すチャット識別情報によって出力される関連するメッセージは、「あなたは私が好敵手であると思うだろう」などのテキストを含み得る。いくつかの実装形態では、そのようなメッセージは、画像、絵文字、または他の種類のデータを含むことができる。
【０２３１】
組み込みアプリケーションに関連して提案アイテムを提供する例
図７は、チャット会話において組み込みアプリケーションに関連して提案応答アイテムを提供するための例示的な方法７００を示す流れ図である。
【０２３２】
提案応答アイテム（本明細書では「提案アイテム」とも呼ばれる）は、様々なコンテキストにおいてユーザによる選択のためにチャットインタフェースおよび／または組み込みインタフェースにおいて生成され提供され得る。提案応答アイテムは、ユーザ、および画像を送信および／または受信した１人または複数の他のユーザからの同意により、自動的に生成され、ユーザに提供され得る。
【０２３３】
提案応答アイテムは、関連する結果をセットのデータに提供できる１つまたは複数の技術に基づいて判定され得る。いくつかの実装形態では、提案応答アイテムは、後述するように、（例えば、ルックアップテーブルまたはデータベースに）格納された、特定の示唆イベントおよび／または発生した示唆イベントのタイプとの、提案応答アイテムの事前定義された関連付けに基づいて判定され得る。提案応答アイテムは、テキスト、画像、アニメ画像（例えば、シネマグラフ）、音声セグメント、ビデオ、他の種類のドキュメント（例えば、スプレッドシート、表など）などを含む、異なるコンテンツデータタイプのうちの１つまたは複数であるか、またはそれを含み得る。提案応答アイテムは、インタラクティブカードを含むこともでき、またはインタラクティブカードとして表示されることも可能である。いくつかの実装形態では、提案応答アイテムは、以下で説明されるように、１つまたは複数のアクションを実行するかまたは出力を提供する添付された（例えば、軽量の）組み込みアプリケーションを含み得る。複数のタイプおよびこれらのタイプおよび機能の提案応答がメニュー内に提示され得る（例えば、ドロップダウンメニュー、カルーセル選択メニューなど）。
【０２３４】
いくつかの例では、提案応答アイテムは、１つまたは複数の機械学習技術を使用して判定され得る。いくつかの例では、メッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３とのユーザの対話を向上させることが可能な、例えばディープラーニングモデルなどの機械学習または機械学習アプリケーションとの対話を実施することができる。提案サーバ１５６は、例えば、機械学習を利用して、メッセージングアプリケーションに提案を提供することができる。いくつかの実装形態では、機械学習は、環境１００の１つまたは複数の他の構成要素上で、例えば提案サーバ１５６を使用せずに実施され得る。
【０２３５】
機械学習モデルは、提案応答アイテムが生成されるべき示唆イベントの受信に先立って、トレーニングデータに基づいて作成されることが可能であり、示唆イベントの表示を受信すると、提案応答アイテムが、既存のモデルを使用して生成され得る。機械学習モデルは、合成データまたはテストデータ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングされ得る。合成データは、組み込みアプリケーションや組み込みセッションで発生するシミュレートされたイベント、および人間のユーザが参加していない応答コマンドおよびメッセージに基づくものであり得る。いくつかの実装形態では、機械学習モデルは、サンプルデータまたはトレーニングデータ、例えば組み込みアプリケーションおよびセッションイベントに応答してユーザによって実際に提供され、トレーニング目的でそのようなデータを提供することに同意するコマンドおよびメッセージを使用してトレーニングされ得る。トレーニングデータは、ユーザ識別子やその他のユーザ関連情報を削除するために使用前に処理される。いくつかの実装形態では、機械学習モデルは、トレーニングのためにユーザデータを利用する許可がユーザから明示的に得られているサンプルデータに基づいてトレーニングされ得る。機械学習モデルがトレーニングされた後、新たに発生するデータのセットがモデルに入力されてもよく、モデルはサンプルデータを用いたそのトレーニングに基づいて提案アイテムを提供することができる。サンプルデータに基づいて、機械学習モデルは、組み込みセッションにおいて発生するイベントに対するメッセージおよびコマンドを予測することができ、それらは次に提案応答アイテムとして提供され得る。ユーザ対話は、例えば、コマンドを決定し、またはアプリケーションイベントに対するメッセージを作成するためのユーザの負担を軽減することによって、発生するイベントおよびユーザのコンテキストに基づいてカスタマイズされた応答アイテムの選択肢を提供することによって、強化される。機械学習アプリケーションおよび機械学習機能のいくつかの例を、図１２を参照して以下に説明する。
【０２３６】
いくつかの例では、ユーザが同意を提供するとき、提案応答アイテムは、ユーザの以前の活動、例えば会話で提供された以前のメッセージ、異なる会話におけるメッセージ、組み込みアプリケーションまたは異なる組み込みアプリケーションプログラムにユーザにより提供された以前のコマンドなどに基づいてカスタマイズされ得る。例えば、そのような活動は、ユーザに対する適切な提案アイテム、例えば、ユーザの対話スタイルに基づく遊び心のあるメッセージ、フォーマルなメッセージなどを判定するために用いられ得る。別の例では、ユーザが、１つまたは複数のユーザ優先言語および／またはロケールを指定すると、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザの優先言語で提案アイテムを生成することができる。様々な例では、提案アイテムは、テキストメッセージ、画像、マルチメディア、符号化されたコマンドなどであり得る。
【０２３７】
いくつかの実装形態では、機械学習は、環境１００の１つまたは複数の構成要素、例えば提案サーバ１５６、メッセージングサーバ１０１、クライアントデバイス１１５、メッセージングサーバ１０１およびクライアントデバイス１１５の一方または両方など上で実施され得る。いくつかの実装形態では、単純な機械学習モデルがクライアントデバイス１１５上で実施され（例えば、クライアントデバイスのメモリ、ストレージ、および処理制約内でモデルの動作を可能にするため）、複雑な機械学習モデルがメッセージングサーバ１０１、提案サーバ１５６、および／または異なるサーバ上で実施され得る。ユーザが機械学習技術の使用に同意を提供しない場合、そのような技術は実施されない。いくつかの実装形態において、ユーザは、クライアントデバイス１１５上でのみ実施される機械学習のために同意を選択的に提供し得る。これらの実装形態では、機械学習モデルに対する更新または機械学習モデルによって使用されるユーザ情報は、ローカルに格納または使用され、かつメッセージングサーバ１０１、サーバ１３５および１５０〜１５６、または他のクライアントデバイス１１５などの他のデバイスとは共有されないように、機械学習モデルがクライアントデバイス１１５上で実施され得る。
【０２３８】
例えば、機械学習技術に基づく提案を受け取ることに同意するユーザに対し、提案は、メッセージングアプリケーション１０３によって提供され得る。例えば、提案は、コンテンツ（例えば、映画、本など）、スケジュール（例えば、ユーザのカレンダー上の利用可能時間）、イベント／開催地（例えば、レストラン、コンサートなど）等の提案を含み得る。いくつかの実装形態において、彼らのデバイスを介してチャット会話に参加しているユーザが会話データの使用に同意を提供する場合、提案は、会話の内容に基づいた、他のチャットユーザにより入力されたメッセージへの提案メッセージ応答を含み得る。例えば、会話コンテンツに基づいて提案に同意した２人のユーザのうちの第１のユーザが、「何か食べたい？イタリア料理はどう？」とメッセージを送信すると、第２のユーザに対して「＠アシスタント  ランチ、イタリア料理、２人用テーブル」という応答が提案され得る。この例では、提案応答は（記号＠およびボットハンドルであるアシスタントによって識別された）ボットを含む。第２のユーザがこの応答を選択すると、アシスタントボットがチャット会話に追加され、メッセージがボットに送信される。その後、ボットからの応答が会話に表示され、２人のユーザのどちらかがさらなるメッセージをボットに送信し得る。この例では、アシスタントボットは、チャット会話のコンテンツへのアクセスが提供されておらず、提案アイテムはメッセージングアプリケーションによって生成される。
【０２３９】
特定の実装形態では、提案アイテムのコンテンツは、ボットが既にチャット会話中に存在するか、またはチャット会話に組み込まれることが可能かに基づいてカスタマイズされ得る。例えば、トラベルボットをメッセージングアプリケーションに組み込むことができると判定された場合、フランスへの航空チケットの料金に関する質問に対する提案メッセージ応答は、「トラベルボットに聞いてみましょう！」であり得る。
【０２４０】
異なる実装形態では、提案、例えば本明細書で説明される提案メッセージは、テキスト（例えば、「素晴らしい！」）、絵文字（例えば、笑顔、眠そうな顔など）、画像（例えば、ユーザの写真ライブラリからの写真）、テンプレートのフィールドにユーザデータが挿入されたテンプレートに基づいて生成されたテキスト（例えば、「彼女の番号は＜電話番号＞」、ここで、ユーザがユーザデータへのアクセスを提供するならば、フィールド「電話番号」は、ユーザデータに基づいて記入されている）、リンク（例えば、ユニフォームリソースロケータ）、メッセージステッカーなどのうちの１つまたは複数を含み得る。いくつかの実装形態において、提案メッセージは、例えば、色、フォント、レイアウトなどを使用して、フォーマット化および／またはスタイル化され得る。例えば、映画の推薦を含む提案メッセージは、映画についての記述テキスト、映画からの画像、およびチケットを購入するためのリンクを含み得る。異なる実装形態において、提案メッセージは、例えば、テキストボックス、インタラクティブカードなどの異なるタイプのユーザインタフェース要素として提示され得る。
【０２４１】
様々な実装形態では、ユーザは、提案アイテムを受信するかどうか、どのような種類の提案アイテムを受信するか、提案アイテムの頻度などの制御を提供されている。例えば、ユーザは、複数の提案アイテムを一括して受信することを拒否することができ、あるいは特定の種類の提案アイテムを選択することができ、または１日の特定の時間帯にのみ提案アイテムを受信することができる。別の例では、ユーザは、パーソナライズされた提案アイテムを受信することを選択し得る。この例では、機械学習を使用して、ユーザのデータの使用および機械学習技術の使用に関するユーザプリファレンスに基づいて提案アイテムを提供することができる。
【０２４２】
ブロック７０２では、方法７００の実装においてユーザデータを使用するためにユーザ同意（例えばユーザ許可）が取得されているかどうかをチェックする。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザプリファレンス、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【０２４３】
方法７００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック７０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な利用により実装され得ると判定され、方法はブロック７０８に続く。ユーザの同意が得られていない場合、ブロック７０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック７０８に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【０２４４】
ブロック７０８において、（第１の）組み込みアプリケーションが、（第１の）チャット会話を提供する（第１の）メッセージングアプリケーションに関連して第１のユーザデバイスに対して実行され、第１のユーザデバイスは、チャット会話に参加し、図２〜図４に関して上述したのと同様に、チャット会話に関連して作成された組み込みセッションに参加した複数のユーザデバイスのうちの１つである。ユーザデバイスは、上述したように対応する組み込みアプリケーションを実行するメンバーデバイスである。
【０２４５】
ブロック７１０において、示唆イベント、例えば、図７に関して説明したように１つまたは複数の提案応答アイテムを生成させることができるイベントが発生したかどうかが判定される。いくつかの実装形態では、示唆イベントは、組み込みアプリケーションに関連して発生するイベントを含み得る。そのような示唆イベントは、組み込みセッションの組み込みアプリケーション、メッセージングアプリケーション、組み込みセッションで使用されるサーバ、および／または組み込みセッションと通信する異なるアプリケーションもしくはデバイス、メンバーデバイス、またはチャットデバイスで発生し得る。示唆イベントは、デバイスにおけるユーザ入力の受信、プログラムにおける状態の変化、デバイス間のデータ通信、ネットワークを介したユーザデバイスの組み込みセッションまたはデバイスとの接続、デバイスにおけるデータの受信または送信（例えば、プログラム間、ネットワーク上など）、メディアデータまたは他のデータにおけるコンテンツ特徴の検出、チャットメッセージにおける特定のトピックの検出、（例えば、履歴データに示されるような）過去の時間に発生したそれらのイベントのうちの１つまたは複数を含み得る。例えば、いくつかの実装形態では、示唆イベントは、チャット会話に参加または退出するチャットユーザ、チャットユーザによりチャット会話に入力されたチャットメッセージ内の特定の検出されたコンテンツなど、メッセージングアプリケーション（例えばチャット会話）での発生についてチェックされ得る。他の例は本明細書に記載されている。示唆イベントは、チャット会話またはチャットインタフェースにおけるメンバーデバイス（またはチャットデバイス）上に提示することができ、かつ以下で説明するようにデバイスのユーザによる使用のために選択可能な、１つまたは複数の提案応答アイテムの生成をトリガする。
【０２４６】
様々な実装形態では、組み込みアプリケーションおよび／またはメッセージングアプリケーションは、イベントが示唆イベントとして適格かどうかを判定することができる。いくつかの実装形態では、示唆イベントは、提案応答アイテムをユーザに対して生成させる示唆イベントとして指定された、組み込みアプリケーション、メッセージングアプリケーション、および／または他のアプリケーションおよびデバイスにおける複数の事前定義された種類のイベントのうちの任意のものであり得る。
【０２４７】
いくつかの実装形態では、示唆イベントは、チャット会話に参加しているチャットデバイスの１つまたは複数で発生する１つまたは複数の特定のイベントに基づいて判定され得る。例えば、そのような特定のイベントは、チャットインタフェースによって、および／または第１のユーザデバイスおよび／または他のメンバーデバイスもしくはチャットデバイスの組み込みインタフェースによって受信されたユーザ入力を含み得る。いくつかの例では、そのような特定のイベントは、関連するチャットユーザおよび／またはメンバーユーザから、１つまたは複数のメンバーデバイスによって受信されたユーザ入力に基づいて、組み込みアプリケーションで実施されるチャットユーザアクションおよび／またはメンバーユーザアクションであり得る。第１のユーザデバイス（例えば、第１のメッセージングアプリケーション）は、例えば、ネットワークを介して特定のイベントを示す、および／または識別するデータを受信することによって、他のデバイス（例えば、メンバーデバイス、チャットデバイス、および／または他のデバイス）で特定のイベントが発生したという表示を受信できる。
【０２４８】
例えば、示唆イベントは、メンバーデバイスまたはチャットデバイスでのユーザ入力に基づいて、ユーザが組み込みセッションに参加または退出すること、またはユーザ入力に基づいて組み込みセッションの１つまたは複数の状態に影響を与える（例えば、組み込みセッションのためにメンバーデバイス上で実行されている対応する組み込みアプリケーションの１つまたは複数の状態に影響を与える）異なるアクションであってよい。示唆イベントは、チャットインタフェースにおいてユーザによって選択されている組み込みアプリケーション、および／またはメンバーユーザによって開始されている組み込みアプリケーションであってよい。示唆イベントは、組み込みアプリケーションにおいてメンバーユーザによって実行されるアクション（例えば、メディアアイテムの再生開始、ゲームアクションの実行、組み込みアプリケーションに提供され組み込みインタフェースに表示される表示共有オブジェクト、例えば、ドキュメントオブジェクト、ゲームオブジェクトなどの追加または修正）であってよい。示唆イベントは、（例えば、図５を参照して説明したように）メンバーユーザによってメディアアイテムに以前に追加された特定のユーザコメントの（例えば、組み込みインタフェースにおける）現在の表示であってよい。示唆イベントは、ローカル（第１のユーザデバイス）またはリモート（他のメンバー／チャットデバイス）のユーザ入力に基づく共有コンテンツドキュメントにおけるアイテムまたは要素の変更、あるいは組み込みセッションの組み込みアプリケーションで編集中の他の共有データであってよい。示唆イベントは、組み込み旅行日程アプリケーションにおけるメンバーユーザによる特定の旅行日程の選択または確認であってよい。
【０２４９】
いくつかの実装形態では、示唆イベントは、１つまたは複数のメンバーデバイスで、例えば、組み込みセッションの１つまたは複数の組み込みアプリケーション内で発生する組み込みアプリケーションイベントである１つまたは複数の特定のイベントに基づいて判定され得る。いくつかの実装形態では、いくつかの種類の組み込みアプリケーションイベントは、ユーザ入力に基づいており、いくつかの種類の組み込みアプリケーションイベントは、ユーザ入力に基づいていない。いくつかの例では、示唆イベントは、組み込みアプリケーションで再生されている特定のコンテンツデータ（例えば、メディアアイテムデータ）などの組み込みアプリケーションイベントに基づくことができる。例えば、特定のコンテンツデータは、１つまたは複数の画像認識および／または音声／オーディオ認識技術を使用して、再生されたメディアアイテムの映像コンテンツ（例えば、画像またはビデオ）、または音声コンテンツ（例えば、データの音声セグメント）において検出される１つまたは複数のコンテンツ特徴（またはコンテンツ特徴の種類）であり得る。例えば、コンテンツの特徴は、視覚的なコンテンツの特徴（例えば、ユーザの同意が得られた場合の顔、風景の特徴、記念碑、オブジェクトなど）およびオーディオコンテンツの特徴（例えば、音声、特定の効果音など）を含み得る。コンテンツ機能は、例えば、ビデオ、画像、オーディオセグメント、ゲームなどのコンテンツアイテムを有するメタデータとして提供される地理的位置を含み得る。示唆イベントは、組み込みゲームアプリケーションで特定の目的やスコアを達成したこと（または達成できなかったこと）、またはゲームにおいて１位のプレイヤーと次の位のプレイヤーとの間のスコア差が事前定義された閾値を超えることを達成したことを含み得る。示唆イベントは、プレイヤーが組み込みゲームアプリケーション（例えば、ゲーム状態を進めるためにプレイヤーアクションを待っているゲームアプリケーション、ゲームアクションを実行した別のメンバーユーザによってトリガされるゲームアプリケーション、または時間、ゲーム内のノンプレイヤーイベントなどによってトリガされるゲームアプリケーション）において特定のアクションを行ったり、移動したりする機会であり得る。
【０２５０】
いくつかの実装形態では、示唆イベントは、特定のタイプの組み込みアプリケーションイベントであり得る。例えば、ユーザメンバーイベントは、（例えば、チャットデバイスで組み込みアプリケーションを開始することによって）新しい組み込みセッションを開始するチャットユーザ、アクティブな組み込みセッションに参加するチャットユーザ、アクティブな組み込みセッションを終了するメンバーユーザ、または組み込みセッションを退出した、または組み込みセッションを終了した組み込みセッションの最後のメンバーユーザを含み得る。指定された組み込みアプリケーションイベントは、開始イベントまたは終了イベント、例えば、メンバーユーザがゲームに勝つこと（ゲームを完了させる）、コンテンツドキュメントを作成または削除すること、メディアプレーヤアプリケーション内で新しいビデオを開始または終了することなどを含み得る。同期イベントは、メンバーデバイス上の組み込みアプリケーションを同期させるためにメンバーデバイスにデータが提供されるイベントを含むことができる（例えば、入力ユーザアクションがゲーム状態を変更すること、メディアプレーヤアプリケーションで再生されるメディアアイテムの再生位置の状態が変更されること、共有リスト上のアイテムが変更されることなど）。示唆イベントは、そのような定義された種類の組み込みアプリケーションイベントのうちの１つまたは複数の発生であると定義され得る。
【０２５１】
いくつかの実装形態では、イベント情報は、アプリケーション間、および／またはチャットデバイス間で送信され、特定のイベント（および／または示唆イベント）が発生したことを示すことができる。例えば、イベント情報は、組み込みアプリケーションで発生した特定のイベントの発生時に組み込みアプリケーションからそれに関連するメッセージングアプリケーションに渡され得る。いくつかの実装形態または場合では、特定のイベントは、組み込みアプリケーションで発生しており、イベント情報は、特定のイベントの発生を示すことができ、かつ／または特定のイベントまたはイベントのタイプを識別することができる。例えば、イベント情報は、特定のイベントのタイプ（例えば、特定のゲームでゲームアクションが実行されたこと、メディアアイテムの再生が一時停止された、または異なる再生位置に変更されたことなど）、特定のイベントに関連するデータ（例えば、イベントの発生時刻、イベントとして検出された再生メディアアイテムに表示されている特徴の種類など）、特定のイベントの状況（例えば、どのメンバーユーザがイベントを引き起こしたか、または、イベントにより影響を受けるロール、ステータス、または得点を有するか、など）を示し得る。そのような特定のイベントは、本明細書に記載のイベントのうちの任意のもの、例えば組み込みアプリケーションイベント、メッセージングアプリケーションイベント、サーバイベントなどを含むことができる。
【０２５２】
いくつかの実装形態では、イベント情報は、ネットワークを介してあるデバイスから別のデバイスに、例えば、メンバーデバイス（またはチャットデバイス）からサーバデバイスに、サーバデバイスから１つまたは複数のメンバーデバイス（またはチャットデバイス）に、送信され得る。例えば、組み込みアプリケーションで発生するイベントを示す組み込みイベント情報は、組み込みアプリケーションからのものであり得、サーバで発生するイベントを示すサーバイベント情報は、サーバからのものであり得る。いくつかの例では、メンバーデバイス上のメッセージングアプリケーションは、特定のイベントが異なるデバイス上で発生したことを示すイベント情報を異なるデバイスから受信することができる。いくつかの実装形態または場合では、メッセージングアプリケーションは、受信されたイベント情報によって示されるイベントが、示唆イベントであるかどうかを判定することができる。いくつかの実装形態または場合では、メッセージングアプリケーションは、そのメッセージングアプリケーションに関連して実行されている組み込みアプリケーションにイベント情報を渡すことができ、組み込みアプリケーションは、イベント情報によって示されるイベントが示唆イベントであるかどうかを判定する（およびメッセージングアプリケーションに示唆イベントの結果を返送することができる）。
【０２５３】
いくつかの実装形態では、メッセージングアプリケーションによって受信されたイベント情報は、特定のイベントが提案イベントであることを示すことができる。例えば、イベント情報のソースは、特定のイベントが示唆イベントとして適格であると判定した可能性がある。いくつかの実装形態では、イベント情報は、特定のイベントを示すことができ、メッセージングアプリケーションは、特定のイベントが示唆イベントとして適格であるかどうかを判定し得る。いくつかの実装形態では、メッセージングアプリケーションは、そのようなイベント情報を使用して、提案アイテムを取得し、例えば、１つまたは複数の提案アイテム自体を決定する、および／またはイベント情報（またはイベント情報から導出される要求）を異なるプログラムまたはデバイスに送信して、提案アイテムを決定することができ、これは、メッセージングアプリケーションに返送され得る。
【０２５４】
いくつかの実装形態では、示唆イベントは、メッセージングアプリケーションにおける特定のイベントであってよく、またはメッセージングアプリケーションに提供されてもよい。例えば、ユーザがチャットの会話に入る（例えば、ログオンする、オンラインになる）、またはチャットを終了することは、示唆イベントであり得る。チャット会話においてメンバーユーザによって入力された１つまたは複数の特定のチャットメッセージ（またはチャットメッセージの特定のセットもしくはシーケンス）は、示唆イベントと見なされ得る。例えば、チャットメッセージが解析され、１つまたは複数の所定のトピック、単語またはキーワード、および／またはフレーズ（例えば、「食べに出かけよう」、「ユーザ４を招待しよう」、「映画Ａを見よう」、特定の名前、住所、場所など）が検出されて示唆イベントを判定することが可能である。いくつかの実装形態では、機械学習モデルは、合成または実際のトレーニングデータを用いてトレーニング段階でトレーニングされ得、方法７００で使用される推論段階では、示唆イベントが発生したかどうかを予測するためにチャットメッセージのセットを処理するために使用され得る。例えば、モデルは、チャットメッセージのセットの内容に基づいて、特定のユーザアクション（例えば、コマンドまたはさらなるメッセージ）がユーザによって開始または提供される可能性があるかどうかを予測することができ、そのようなコマンドが発生の閾値確率内にある場合、チャットメッセージのセットの入力（例えば、そのセットの最後のチャットメッセージの入力）は、示唆イベントと見なされ得る。
【０２５５】
いくつかの実装形態では、示唆イベントは、第１のデバイス上で実行されている組み込みアプリケーションの１つまたは複数の状態を変更する（例えば、他のメンバーデバイスで実行されている対応する組み込みアプリケーションの１つまたは複数の状態の変更を引き起こす）メッセージングアプリケーションにおける特定のイベント、またはメッセージングアプリケーションへ提供される特定のイベントであり得る。例えば、チャットインタフェースを介してメッセージングアプリケーションに提供されるユーザ入力は、組み込みアプリケーションに直接命令することができる（例えば、チャットインタフェースにおいてチャットメッセージとして入力されたテキストコマンドに基づいた、再生メディアアイテムの再生状態の変更、ゲームアクションの実行など）。いくつかの実装形態では、組み込みアプリケーションへの直接のコマンドではないチャットインタフェースにおける入力は、組み込みアプリケーションの１つまたは複数の状態を変更し得る。例えば、組み込みアプリケーションのためのオプションの選択は、組み込みインタフェースの外部のチャットインタフェースに表示されるメニューまたはインタフェース要素を介して実行され得る。さらなる例では、チャットインタフェースに入力されたチャットメッセージは、実行中の組み込みアプリケーションによって解析され、本明細書で説明される例のように、データを判定または処理し、特定の出力データを表示し、および／またはストレージ、異なるデバイス、ネットワークサイトなどからデータを読み出すために、組み込みアプリケーションにその状態の１つまたは複数を変更させることができる。
【０２５６】
いくつかの実装形態では、示唆イベントは、第１のチャット会話を提供するメッセージングアプリケーションによって提供される異なるチャット会話内で発生する特定のイベントであり得る。例えば、特定のイベントは、異なるチャット会話で入力されたユーザメッセージ、事前定義された単語またはフレーズに一致するそのユーザメッセージの特定の内容（または機械学習技術に基づく他の一致）、ユーザが異なるチャット会話に参加または終了することなどであり得る。いくつかの例では、異なるチャット会話のチャットユーザは、第１のチャット会話に参加することへの興味を示すメッセージを入力することができ、このメッセージは、示唆イベントとして検出されて、提案コマンド（例えば、異なるチャット会話のユーザを第１のチャット会話および／または組み込みセッションに追加するコマンド）、または提案メッセージ（例えば、他のユーザに挨拶し、別のチャット会話のユーザを第１のチャット会話に招待する別のチャット会話に出力されるべきメッセージ）を生成することができる。
【０２５７】
いくつかの実装形態では、示唆イベントは、ユーザに対して１つまたは複数の提案応答アイテムを生成するようにシステムに指示するユーザアクション（例えば入力コマンド）である特定のイベントであってよい。例えば、ユーザは、１つまたは複数の一般的な提案メッセージまたは提案コマンドを生成するためのコマンドである組み込みインタフェースまたはチャットインタフェースにおけるインタフェース要素を選択することができる。いくつかの例では、そのような提案メッセージは、組み込みアプリケーションについてのコメント、または１または複数のメンバーユーザについてのコメントを含むことができ、または、そのような提案コマンドは、組み込みセッションを終了するコマンド、ゲームを終了するコマンドなどを含むことができる。
【０２５８】
いくつかの実装形態では、示唆イベントは、メッセージングアプリケーションおよび組み込みアプリケーションとは異なる、ユーザデバイス上で実行されている異なるアプリケーションから受信されたデータに基づくことができ、データは、特定のイベントが異なるアプリケーションで発生したことを示す。例えば、テレビ会議アプリケーションは、テレビ会議が終了したこと、特定のユーザがテレビ会議に参加または退席したことなどを示す表示（例えばデータ）をメッセージングアプリケーションに送信することができる。いくつかの実装形態では、示唆イベントは、ネットワークを介してユーザデバイスと通信している、例えば、組み込みセッションで使用されるデータを提供しているサーバまたは他のデバイス上で（例えば、サーバまたは他のデバイス上で実行されるアプリケーションにおいて）発生した特定のイベントであり得る。例えば、特定のイベントは、チャット会話に参加していない他のユーザデバイスからサーバが取得したユーザ入力（例えば、格納されたメディアアイテムに対するコメントまたは評価）、例えば、サーバが組み込みセッションに提供している第１のコンテンツデータと同じ第２のコンテンツデータに対するユーザ要求、他のユーザデバイスに送信されている第２のコンテンツデータに対するユーザのコメントまたは評価などを含み得る。
【０２５９】
示唆イベントは、サーバ上で発生する特定のイベント、例えば、サーバによって実行され、ネットワークを介してメンバーデバイスにストリーミングされるゲーム内のゲームイベント（ゲーム状態の変化など）、サーバからメンバーデバイスにストリーミングされているメディアアイテムに表示されている特定のタイプのコンテンツ特徴を含み得る。メッセージングアプリケーションは、発生した特定のサーバイベントを示すまたは説明するサーバイベント情報をサーバから受信することができ、これはメッセージングアプリケーションまたは組み込みアプリケーションに対する示唆イベントとしての資格を得ることができる。
【０２６０】
ユーザの同意が得られた場合、示唆イベントは、以前に発生した特定のイベントを含むことができる。例えば、本明細書に記載の特定のイベントのうちの１つまたは複数の発生は、ユーザの同意を得て、１つまたは複数のデバイスに格納されているデータに示されるか、または記述され得（例えば、デバイスコミュニケーションの説明、チャットメッセージの内容など）、デバイスはこのデータにおけるそのような以前の特定のイベントを検索することができる。
【０２６１】
ブロック７１２において、検出された示唆イベントが、組み込みアプリケーションのための１つまたは複数の提案コマンドに関連する（および／またはタイプを有する）イベントであるかどうかが判定される。例えば、いくつかのタイプの示唆イベントは、組み込みアプリケーションのための提案コマンドである提案応答アイテムの生成を引き起こし得る。
【０２６２】
組み込みアプリケーションのための提案コマンドは、例えば、組み込みアプリケーションの１つまたは複数の状態を修正するためのコマンドであり得る。例えば、提案コマンドは、再生位置を設定するか、または組み込みアプリケーションで再生されているメディアアイテムの現在の再生位置を新しい再生位置に変更するための提案再生コマンドであり得る。さらなる例では、提案コマンドは、組み込みゲームアプリケーションにおけるゲーム状態を修正するためのコマンド、例えば、ゲームの駒またはキャラクタの移動、ゲーム表示視点の変更、ゲームオブジェクトの選択などの特定のゲームアクションを実行するコマンドであり得る。提案コマンドは、組み込みアプリケーションに提供されている共有コンテンツドキュメント（例えば、共有リスト）の特定のアイテムまたは要素を追加、修正または削除するためのものであり得る。提案コマンドを提供することができる示唆イベントタイプは、例えば、組み込みセッションへの、または組み込みセッションからの１または複数のメンバーユーザの参加または退出、ゲーム組み込みアプリケーションにおいてプレイヤーによって行われたアクション、ゲームがプレイヤーからのアクションまたは動きを待っているゲーム状態、ゲーム内のプレイヤーまたはプレイヤーのオブジェクトが別のプレイヤーまたはプレイヤーオブジェクトにより対話しているイベント（例えば、オブジェクト間の攻撃または競合、あるプレイヤーから別のプレイヤーへの支援などのためオファーまたはリクエストなど）、メディアアイテムの視覚的または音声的コンテンツの検出された変化（例えば、オブジェクトの動きが少ないシーンから、閾値移動速度を超える動きのオブジェクトを有するシーンへの変化、会話シーンからアクションシーンへの変化、小音量または一定音から、閾値を超える大音量または閾値周波数を超える早い振幅変化の音への音声出力の変化など）、異なるメンバーユーザによる共有コンテンツドキュメントに対し実行される変更（例えば、追加の変更をユーザに促すための、または実行された変更を元に戻すための提案）、再生されたメディアアイテムの再生位置の変更などを含み得る。
【０２６３】
検出された示唆イベントが、組み込みアプリケーションのための１つまたは複数の提案コマンドを提供するタイプのものである場合、方法はブロック７１４に進み、１つまたは複数の提案コマンドが取得され、それは、少なくとも部分的に示唆イベントに基づいている。いくつかの実装形態では、提案コマンドは、示唆イベントに加えてまたはその代わりに他の要因、例えば組み込みアプリケーションおよび／またはメッセージングアプリケーションの１つまたは複数の現在の状態（例えば、メディアアイテムの再生の現在の時間位置、現在のゲームスコア、メンバーユーザおよび／またはチャットユーザの現在の数または識別、時刻など）に基づき得る。いくつかの例では、１つまたは複数の提案応答アイテムは、示唆イベントに基づいて組み込みアプリケーションおよび／またはチャットアプリケーションによって判定され得る。いくつかの実装形態では、提案応答アイテムを無効にする、例えば生成されないようにする、および／または表示されないようにするオプション（例えば、表示されたインタフェース要素）がユーザに提供され得る。
【０２６４】
いくつかの実装形態では、提案コマンドは、提案コマンドと特定の示唆イベントおよび／または示唆イベントのタイプとの格納された事前定義された関連付けに基づいて判定され得る。例えば、関連するコマンドが検出された示唆イベントに基づいて読み出されるように、１つまたは複数の特定のタイプの示唆イベントが、例えばルックアップテーブルまたはデータベース内の１つまたは複数の特定のコマンドに関連付けられ得る。
【０２６５】
いくつかの実装形態では、組み込みアプリケーションは、提案応答アイテムを判定するために（例えば、組み込みアプリケーションにおける結果を判定する際に使用されるルール、他のルールセット、決定木（ｄｅｃｉｓｉｏｎｔｒｅｅ）などに基づいて）推薦エンジンを実装し得る。一例では、提案応答アイテムは、決定木（または他の決定構成）に基づいて判定され得、ツリーのノードにおける１つまたは複数の条件の状態が、ツリーを通る経路を決定して、最終結果として提案アイテムを判定し、条件は、示唆イベントおよびその他の条件を含み得る。別の例では、組み込みアプリケーションが、ルールベースのゲーム（例えば、チェス、ポーカーなど）であるとき、提案応答アイテムは、ゲームのルールおよび／または目的に基づいて決定されてもよい。例えば、提案応答アイテムは、ゲーム内の動き（例えば、チェス盤の位置ｇ７へのビショップの動きを示すＢｇ７）であり得る。例えば、ルールセットまたは決定木は、勝ちの所定の確率に基づいて動きを決定してもよい。別の例では、ユーザがユーザデータの分析を許可する場合、提案応答アイテムは、ユーザの以前に受け入れられた提案に基づくことができる（例えば、ユーザは通常ポーンを位置ｄ４に移動することを示す動きｄ４でチェスゲームを開始する）。
【０２６６】
いくつかの実装形態では、ユーザがユーザプロファイルデータの使用を許可する場合、提案応答アイテムは、ユーザプロファイルデータ、例えば、ユーザ入力によって直接指定される、および／または以前のユーザアクションに基づいて推論されたユーザプリファレンスまたはデフォルトなどに基づいて決定され得る。例えば、組み込みアプリケーションがショッピングアプリケーション（例えば旅行アプリ、電子商取引アプリなど）であり、示唆イベントが、ユーザが「購入」ユーザインタフェースにナビゲートしたことである場合、提案応答アイテムは、ユーザのプロファイルに基づいて、「クレジットカードで支払う」、「銀行口座で支払う」、「現金で支払う」などを含み得る。同様に、ユーザの同意が得られた場合、ユーザの連絡先情報（例えば、住所、電話番号、電子メールなど）などの他のユーザプロファイルデータが、提案応答アイテムに含まれてもよい。いくつかの実装形態では、例えば、組み込みアプリケーションが「クイズ」アプリケーションである場合、組み込みアプリケーションは、クイズの質問に答えるための複数の選択肢として提案応答アイテムを提供することができる。
【０２６７】
いくつかの実装形態では、提案コマンドは、本明細書で説明されているように、組み込みアプリケーションおよび／または機械学習技術のためのトレーニングされたモデルを使用して判定され得る。例えば、提案コマンドは、機械学習モデルの推論段階の結果であり得、モデルは、特定の示唆イベントおよび示唆イベントのタイプ、ならびにトレーニングデータとしてそれらの示唆イベントに応答してユーザによって入力された特定のコマンドで以前にトレーニングされており、その結果、モデルが、新たに発生した示唆イベントに基づいて、推論段階で可能性のある、または関連する提案コマンドを生成できる。いくつかの実装形態では、提案応答アイテムは、特定の組み込みアプリケーションのための応答アイテムを提供するようにトレーニングされた機械学習アプリケーションによって判定され得る。いくつかの例では、提案応答のために使用される機械学習モデルは、特定の組み込みアプリケーションで実行され得る様々なゲームアクションを認識するようにトレーニングされ得、機械学習モデルは、例えば、「タワーを建てる」、「ポーンをスペースＤ１に移動する」、「このビデオを次に再生する」などの、組み込みアプリケーションにおける応答アクションをトリガする組み込みアプリケーションにおける提案コマンドを提供する。
【０２６８】
様々な実装形態では、示唆イベントが分析されて、１つまたは複数の提案コマンド（または他の応答アイテム）を判定することができる。いくつかの実装形態では、示唆イベントの分析は、示唆イベントについてのルールセットまたは決定木を調べることを含み得る。いくつかの実装形態では、示唆イベントの分析は、示唆イベントのコンテキストを決定するために、組み込みアプリケーションの状態（例えば、ゲームの進行レベル、ゲーム中の支援に関するユーザ設定など）を判定することを含み得る。
【０２６９】
いくつかの例示的な実装形態では、組み込みアプリケーションは、メディアアイテムを再生しており、提案コマンドは、メディアアイテムの再生を修正するために提供され得る。例えば、示唆イベントが、チャットユーザが、メディアアイテムを閲覧するために組み込みセッションに参加することである場合、提案コマンドは、メディアアイテムの始めから再生をリスタートする（例えば、セグメントの最初からビデオまたはオーディオセグメントを開始する）ことであってよく、これにより、新しいメンバーユーザは最初からメディアアイテムを閲覧することができる。いくつかの実装形態では、そのような「リスタート」提案コマンドは、メディアアイテムが、その開始後からの閾値期間である現在の再生ポイントにあることに応答して生成されることが可能であり、その結果、リスタート提案コマンドは、再生位置が、閾値期間よりも長い期間再生されている場合には（例えば、既存のメンバーユーザは、長期間再生されているメディアアイテムをリスタートすることを望まないかもしれないので）生成されない。別の例では、示唆イベントが、メディアアイテムで発生したことが検出された特定の検出されたタイプのシーンまたはシーケンス（例えば、検出されたアクションシーンまたはシーケンス）である場合、提案コマンドは、再生位置を特定時間量だけ巻き戻して、検出されたシーンまたはシーケンスをそのシーンの先頭からリプレイすることを含み得る。別の例示的な提案コマンドは、組み込みアプリケーションにプロンプトまたは入力フィールドを表示させて、ユーザが、再生されたメディアアイテムの表示されたシーンに表示される（例えば重ね合わされる）ユーザコメントを入力できるようにする（例えば、図５を参照して説明されるように）。別の例では、示唆イベントが、他のメンバーユーザによるメディアアイテムの再生位置の変更である場合、提案コマンドは、再生位置の変更を取り消すか、または変更前に保持していた位置に戻すことであり得る。別の例では、示唆イベントが、再生位置の変更である場合、提案コマンドは、（一方向またはいずれかの方向に）最も近いシーン遷移、チャプタ分割、セグメント分割、またはメディアファイルにおける他のマークされた境界への再生位置の１つまたは複数のさらなる変更を含み得る（例えば、「最も近い前の章の先頭に合わせる？」および「最も近い後の章の先頭に合わせる？」などのコマンド）。別の例では、示唆イベントが、メディアアイテムによって出力されるオーディオボリュームの（例えば、閾値量だけ、または閾値レベルを超えるボリュームレベルへの）変化である場合、提案されるコマンドは、音量を上げるまたは下げることであり得る。
【０２７０】
いくつかの例示的な実装形態では、組み込みアプリケーションは、ゲームを提供しており、提案コマンドはそのゲームに向けられ得る。例えば、示唆イベントが、ゲームの第２のプレイヤーによるゲームアクションである場合、第１のプレイヤーに対する提案コマンドは、例えば、ゲームの戦略やアクションを評価できるゲームアルゴリズムによって判定されるような、ゲームアクションに応答したゲームへの１つまたは複数の可能なアクションの入力を引き起こし得る。いくつかの例では、示唆イベントが、対戦相手のプレイヤーによるゲームの駒の移動である場合、提案コマンドは、（例えば、非同期またはターンベースのゲームにおける）ゲーム内のユーザの駒の様々な可能な応答する移動を含むことができる。別の例では、示唆イベントが、敵のゲームの駒によるユーザのゲームテリトリーの侵略である場合、提案コマンドは、侵略者を迎撃するための駒の移動、侵略されたロケーションにおけるプレイヤーの駒による侵略されたロケーションの防御などのコマンドを含み得る。別の例では、示唆イベントが、別のプレイヤーのゲームへの参加である場合、提案コマンドは、新しいプレイヤーにゲームのユーザのチームに参加するように要求すること、および別のプレイヤーに新しいプレイヤーと対するチームを形成することを要求することを含み得る。別の例では、示唆イベントが、メンバーユーザがゲームを終了すること（またはゲーム内でのオブザーバーロールへのプレイヤーロールの変更）である場合、提案コマンドは、交代のプレイヤーがゲームに参加するまでゲームを一時停止するように要求することであり得る。別の例では、示唆イベントが、ユーザのスコア（または他のゲーム目的）が（例えば、後続またはリードする）他のプレイヤーのスコアまたは目的と閾値量だけ異なることである場合、提案コマンドは、他のプレイヤーにヒントを送信すること、またはユーザにヒントを提供するように他のプレイヤーに要求すること、ゲーム内でのハンディキャップやブーストを与えるように他のプレイヤーに要求すること、ゲームをリスタートすることなどを含み得る。
【０２７１】
いくつかの例示的な実装形態では、組み込みアプリケーションは、共有オブジェクト、例えばゲーム内のゲームオブジェクト、アイテムのリストまたは他のドキュメントなどの共有コンテンツドキュメントなどを提供している。提案コマンドは、共有オブジェクトを変更する、または共有オブジェクトに影響を与える、例えば共有オブジェクトを編集、削除するなど、その特性（例えば、タイプ、色、サイズまたは寸法など）の１つまたは複数を変更するコマンドであり得る。例えば、示唆イベントが、組み込みアプリケーションでの共有リストの開始である場合、提案コマンドは、リスト上のアイテムを追加、削除、または変更することであり得る。別の例では、示唆イベントが、異なるメンバーユーザによる共有リストへのアイテムの追加である場合、提案コマンドは、組み込みインタフェース内の追加されたアイテムを強調表示するかそうでなければグラフィカルに示すことであり得る。いくつかの実装形態では、強調表示コマンドは、組み込みインタフェースまたはチャットインタフェースで出力されることが可能な提案テキスト、例えば、「このアイテムが必要ですか？」または「これを削除することをお勧めします」（例えば、後述の提案メッセージ）を伴うことができる。別の例では、示唆イベントが、アイテムの削除である場合、提案されるコマンドは、例えば「なぜそれを削除したのですか」などのテキストを組み込みインタフェース（またはチャットインタフェース）に出力することを含み得る。別の例では、ユーザによる特定のアイテムの強調表示の示唆イベントに応答して、提案されるコマンドは、リスト内の提案されるアイテムを１つ、２つ、またはそれ以上の場所で上下に、先頭または末尾に移動することを含み得る。
【０２７２】
多くの種類の組み込みアプリケーションに適用できる追加の例では、示唆イベントが、メンバーユーザが組み込みセッションに参加することである場合、提案されるコマンドは、新しいメンバーユーザが、そのような制御の割り当てを可能にする組み込みアプリケーション内のユーザステータス（例えば、ユーザロール）を割り当てられている場合、組み込みアプリケーションの特定の機能に対する制御を新しいメンバーユーザに割り当てることを指示できる。例えば、提案コマンドは、新しいユーザに、組み込みアプリケーションで再生されるメディアアイテムの再生位置を変更すること、共有リスト上のアイテムを変更することなどを可能にするステータスを許可することであり得る。いくつかの実装形態では、提案コマンドは、例えば、チャットの会話において、指定されたユーザからのメッセージにおいて暴言または不適切な言葉が、メッセージングアプリケーション（または他のプログラムまたはデバイス）によって検出された場合、指定されたユーザからそのような制御能力を削除することであり得る（命令するユーザがそうすることができる場合）。
【０２７３】
ユーザの同意が得られた場合、提案されるコマンドは、同じまたは類似の種類の組み込みアプリケーションにおいて、および／または同じまたは類似の種類の出力データ（例えば、メディアアイテム、ゲームなど）に対して、ユーザによって実行された以前のアクションおよび／またはメッセージの履歴に、さらにまたは代替的に基づくことができる。例えば、ユーザが以前にビデオ内の特定のシーンまたはタイプのシーンの再生を巻き戻しまたはスキップしたことがある場合、現在再生中のメディアアイテムの再生位置を、同じように巻き戻しまたは移動させる提案コマンドが生成され得る。
【０２７４】
提案されるコマンドは、メッセージングアプリケーションのチャットインタフェースに表示されるような、（第１の）チャット会話におけるメンバーユーザ入力に、さらにまたは代替的に基づくことができる。様々な実装形態では、このユーザ入力は、検出された示唆イベントの一部と見なすことができ、または検出された示唆イベントの外部（例えば、補足）であると見なすことができる。例えば、提案コマンドが生成されて、メディアプレーヤ、ゲーム、コンテンツドキュメント、または他の機能を実装する組み込みアプリケーションを含む組み込みセッションを、そのようなアクティビティに言及するチャットメッセージ（例えば、「ＦｕｎｎｙＭｏｖｉｅ ２を見よう」、「チェスをしよう」、「買い物リストが必要」など）に基づいて、開始することができる。別の例では、そのメンバーユーザが、チャット会話において所望のユーザロールを示すメッセージ（例えば、プレイヤーロールを示す「私が再生する」、オブザーバーロールを示す「私は視聴したいだけ」）を送信した場合、提案コマンドが生成されて、組み込みセッションにおける特定のメンバーユーザにユーザステータスまたはロールを割り当てることができる。別の例では、１または複数のメンバーユーザが、チャット会話において「このシーンをスキップしよう」または「カーチェイスを見よう」などのメッセージを入力した場合、再生されたメディアアイテムの再生位置を現在のシーンを越えて、または特定の後のシーンに移動する提案コマンドが生成され得る。
【０２７５】
いくつかの実装形態では、そのようなユーザデータを使用することへの同意がそのようなユーザデータに関連するまたは関連付けられたユーザから得られた場合、ユーザデータが使用されて、提案コマンドおよび／または提案メッセージが決定され得る。例えば、メンバーユーザまたはチャットユーザ（またはそれらのデバイス）の現在の地理的位置は、メッセージングアプリケーションによって取得され、および／または提案応答アイテムを決定する際に使用するために組み込みアプリケーションに提供され得る。例えば、提案コマンドは、例えば現在のユーザ位置に基づいて旅程を提供するように組み込み旅行旅程アプリケーションに指示するために、（ユーザの同意を得て）ユーザの現在の地理的位置を参照することができる。ユーザの同意が得られた場合は、他のタイプのユーザデータによって提案アイテムが生成され得る。さらなる例では、デバイス上にインストールされているアプリケーションのリスト（例えば、メッセージングアプリケーションの外部のアプリケーション）などのユーザデータを使用して、提案アイテムを生成することができる。例えば、チャット会話において他のチャットユーザによる使用のために１つまたは複数のアプリケーションを推奨する提案メッセージが生成され得る。
【０２７６】
さらなる例では、ユーザデバイスによって受信されたＳＭＳメッセージおよび電話コールなどのユーザデータを使用して、メッセージを転送またはメッセージに注釈を付けるための提案コマンドを生成することができる。例えば、メッセージングアプリケーションは、ＳＭＳメッセージが受信されたことをインターセプトし、転送機能または注釈機能、例えばそのＳＭＳメッセージをチャット会話と共有するための提案コマンドおよび／または提案メッセージ、他のメッセージ（チャットメッセージ、ｅメールメッセージなど）に対するＳＭＳ画像に注釈を付けるための提案コマンドを生成して、それを他のユーザに送信することなどができる。別の例では、メッセージングアプリケーションは、ユーザがチャット会話にアクティブにメッセージを入力している間に電話がかかってきたことを検出する可能性があり、組み込みアプリケーションは、チャット会話に提案メッセージを生成することができる（例えば、「電話に出ます、戻ってきます」）。フィットネストラッカー情報などのユーザデータを使用して、チャット会話における他のチャットユーザにフィットネスエクササイズに挑戦するよう提案メッセージを提供することができる。ユーザデバイス上の現在のシステムオーディオ音量／ミュート状態などのユーザデータを使用して、メディアアイテムの再生前または再生中にメディア再生音量／オンオフ状態を自動的に調整する提案コマンドを提供することができる。閲覧履歴などのユーザデータを使用して、例えばブラウザ組み込みアプリケーションにおいて、ユーザに買い物の提案を表示するための提案コマンドを生成することができる。特定のシステムまたはネットワークサイトへのユーザアカウント情報（例えば、ログイン／パスワード）などのユーザデータを使用して、組み込みアプリケーションにおいてそれらのシステムにアクセスする提案コマンドを提供することができる。連絡先リストに最近追加された（例えば、現在時刻から閾値時間内に追加された）ユーザなどのユーザデータを使用して、これらのユーザのうちの１人または複数をチャット会話に追加するための提案コマンド、またはユーザが参加している特定の組み込みセッションに参加するように、これらのユーザのうちの１人または複数を招待するための提案コマンドを提供することができる。
【０２７７】
いくつかの実装形態では、提案コマンドは、組み込みアプリケーションに、第１のユーザデバイス上、またはネットワークを介して第１のユーザデバイスと通信する異なるデバイス上で実行される外部アプリケーションを制御させるための、組み込みアプリケーションに対するものであってよい。そのような制御のいくつかの例が本明細書に記載されている。
【０２７８】
いくつかの示唆イベントタイプは、ブロック７１４〜７１８からの提案コマンドおよびブロック７２２〜７２４からの提案メッセージの両方の生成を引き起こすことができる。いくつかの実装形態では、提案コマンドを提供する提案コマンドアイテムは、チャットインタフェースで出力されるべき提案メッセージを提供する提案メッセージアイテムと視覚的に区別され得る。例えば、ユーザが異なるタイプの提案応答アイテムを区別するのを助けるために、これらのタイプの提案応答アイテムに対して異なる色または強調表示が使用され得る。
【０２７９】
いくつかの実装形態では、複数の提案コマンドが生成されて、１つまたは複数の所定の基準に基づいてランク付けされ得る。例えば、提案コマンドのランキングスコアは、例えば、機械学習モデル、および以前の示唆イベントに応答して提供された以前のコマンドの合成または実際のデータに基づくそのトレーニングによって示されるように、検出された示唆イベントに応答して提案コマンドがどの程度選択されるかに基づき得る。いくつかの実装形態では、提案応答は、提案応答がユーザによって選択される可能性がどれほど高いかを示す信頼度またはランク付けとともに提供され得る。例えば、そのようなユーザからの同意が得られている場合、そのような信頼度は、同じまたは類似の示唆イベントに対して提供された提案応答のユーザ（または複数のユーザ）による以前の選択に基づくことができる。機械学習モデルが使用されるいくつかの実装形態では、提案される応答は、モデルのトレーニングに基づいて判定されたときにどの応答が最も選択される可能性が高いかを示すランキングを有することができる。特定数のトップランクの提案コマンドが、ユーザデバイス上で出力のために選択され得る。いくつかの実装形態では、提案される応答は、それらのランク付けまたは信頼度の順序で表示され得る。一例では、高い信頼度を有する（例えば、閾値評価を超える、または閾値数の上位評価内である）提案応答は、関連する組み込みアプリケーションにおけるアクションをトリガするコマンドまたはメッセージとしてユーザ入力によって選択され得る。いくつかの実装形態では、信頼性の高い提案応答が生成された後で、ユーザ入力によって選択される前に、関連する組み込みアプリケーションが、ユーザデバイスにプリロードされ（例えば、バックグラウンドでダウンロードされ、ローカルストレージに格納される）、そのコードが開始され得る。これは、信頼性の高い提案応答がユーザ入力によって選択された後に、ユーザデバイス上の組み込みアプリケーションからの出力の即時表示を可能にする。組み込みアプリケーションのそのような事前ローディングは、より低い信頼性（例えば、閾値未満）の提案応答に対しては、それらが選択される可能性は低いので、省略され得る。
【０２８０】
上述のように、複数の組み込みアプリケーションが、第１のユーザデバイスに対して同時に実行され得るいくつかの実装形態では、１つまたは複数の提案コマンドは、複数のまたは異なる実行中の組み込みアプリケーションに対して提供されるコマンドであり得る。
【０２８１】
いくつかの実装形態では、提案コマンドのうちの１つまたは複数は、メッセージングアプリケーションに対するコマンドであり得る。例えば、提案されるコマンドは、１または複数の特定のチャットユーザを組み込みセッションに追加するためのメッセージングアプリケーションに対するコマンドを含むことができ、特定のチャットユーザは、提案コマンドにおいて指定されている。例えば、そのような提案コマンドは、メンバーセッションの第１のユーザおよび／または他のメンバーユーザによって入力されている１つまたは複数のチャットメッセージ（例えば、「ケニーに参加したいかどうか尋ねてみましょう」など）、またはメンバーユーザではないチャットユーザによって入力された１つまたは複数のチャットメッセージ（例えば、「たぶんその映画に参加する」など）に基づいてメッセージングアプリケーション（または組み込みアプリケーション）によって発生したことが検出された示唆イベントに基づいて生成され得る。提案コマンドは、メンバーユーザ、および／またはメンバーユーザではないチャットユーザに対して提示され得る。いくつかの実装形態では、そのような示唆イベントを判定するために、特定のチャットユーザ名、メンバーユーザ名、コンテンツデータの名前、組み込みセッションに関する一般的な言葉（例えば、「映画」、「ゲーム」など）および他の言葉は、事前定義されたキーワードおよびキーフレーズ、および／または機械学習技術によるチャットメッセージの解析および分析と組み合わせて、チャットメッセージ内で検出され得る。いくつかの実装形態では、示唆イベントは、さらにまたは代替的に、組み込みセッション（第１の組み込みセッション）で提供されたコンテンツアイテム（例えば、再生されたメディアアイテム、ゲーム、コンテンツドキュメントなど）が、第１の組み込みセッションにおけるコンテンツデータの表示と同時に、第２の組み込みセッションにおいて他のチャットユーザに提供されているコンテンツアイテムと同じであることの、メッセージングアプリケーションによる検出であり得る。これにより、メッセージングアプリケーションに、第２の組み込みセッションのメンバーユーザを第１の組み込みセッションに追加するための提案コマンドを生成させることができる。組み込みセッション外のチャットユーザによってコンテンツアイテムに関連付けられたユーザコメントも、以下で説明されるのと同様に示唆イベントの基礎となり得る。
【０２８２】
いくつかの実装形態では、メッセージングアプリケーションへの提案コマンドは、ブロック７０８のチャット会話（例えば、第１のチャット会話）にユーザを追加するためのコマンド、または第１のチャット会話およびブロック７０８の組み込みセッション（例えば、第１の組み込みセッション）にユーザを追加するためのコマンドを含み得る。例えば、提案コマンドは、現在第１のチャット会話に参加していない外部ユーザを追加するように指示できる。このようなコマンドが実行されると、外部ユーザのデバイスはチャット会話に参加させられる。いくつかの例では、外部ユーザは、第１のメッセージングアプリケーションによって提供されるか、または第１のメッセージングアプリケーションと通信する異なるメッセージングアプリケーションによって提供される異なるチャット会話に参加している可能性がある。場合によっては、第１の組み込みセッションの１または複数のメンバーユーザは、第１の組み込みセッションおよび第１のチャット会話への参加と同時に、異なるチャット会話に参加している可能性があり、そのようなメンバーユーザは、異なるチャット会話から１または複数の外部ユーザを追加するための提案コマンドを（例えば、ブロック７１６および７１８において）提供され得る。例えば、そのような提案コマンドは、（上記と同様に）第１のチャット会話の１または複数のチャットユーザによって、および／または異なるチャット会話の１または複数の外部ユーザによって入力されている１つまたは複数のチャットメッセージに基づいてメッセージングアプリケーション（または組み込みアプリケーション）によって発生したことが検出された示唆イベントに基づいて生成され得る。
【０２８３】
いくつかの実装形態では、示唆イベントは、さらにまたは代替的に、組み込みセッションで提供されたコンテンツアイテム（例えば、再生されたメディアアイテム、ゲーム、コンテンツドキュメントなど）が、外部ユーザに同時に提供されている外部コンテンツアイテムと同じであることの、メッセージアプリケーションによる検出であり得る。これは、メッセージングアプリケーションに、外部ユーザを第１のチャット会話に追加するよう提案させる。いくつかの実装形態では、提案されるコマンドは、外部ユーザを第１の組み込みセッションに追加することであり得る。いくつかの例では、示唆イベントは、組み込みアプリケーションによって出力されたコンテンツアイテムの現在の再生位置が、外部ユーザに出力される外部コンテンツアイテムの現在の再生位置の（時間、データなどの）閾値量以内である場合にトリガされ得る。いくつかの実装形態では、示唆イベントは、さらにまたは代替的に、１つまたは複数のユーザコメントが、外部ユーザに出力されている外部コンテンツアイテムに関連する１または複数の外部ユーザによって入力されており、かつ外部コンテンツアイテムが、組み込みアプリケーションによって出力されているコンテンツアイテムと同じであることの、メッセージングアプリケーションによる検出でもあり得る。いくつかの例では、示唆イベントは、外部ユーザによる特定のタイプのユーザコメントの検出、例えば、コンテンツデータに対するユーザによる承認評価、第１の組み込みセッションのメンバーユーザのうちの１または複数への参照などであり得る。そのようなユーザコメントは、メッセージングアプリケーションに、そのような外部ユーザを（メンバーユーザとして）第１の組み込みセッションに追加、および／または（チャットユーザとして）第１のチャット会話に追加するための提案コマンドを生成させることができる。
【０２８４】
いくつかの実装形態では、関連するユーザからのユーザ同意が得られた場合、ユーザデータを使用して、１または複数のユーザ（例えば、チャットユーザまたは外部ユーザ）を上述のように組み込みセッションまたはチャット会話に追加するためのメッセージングアプリケーション（または他のアプリケーション）への提案コマンドの生成を引き起こす示唆イベントを判定することができる。例えば、ユーザデータ（例えば、アクセス可能なデータベースデータまたは連絡先リストデータ）は、１または複数のメンバーユーザ（またはチャットユーザ）との１つまたは複数の特定の社会的関係を有する特定のユーザを示すことができ、そのような特定のユーザは、これらのユーザを組み込みセッションまたはチャット会話に追加するための提案コマンドに含めるために選択され得る。例えば、そのような特定の社会的関係は、メンバー／チャットユーザの連絡先リストにあるユーザ、メンバー／チャットユーザによって作成されたユーザグループに属するユーザ（例えば、ソーシャルネットワーキングユーザグループ）、メンバー／チャットユーザから特定の程度以内離れているユーザなどを含み得る。
【０２８５】
いくつかの実装形態では、提案コマンドのうちの１つまたは複数は、メッセージングアプリケーションの外部の１つまたは複数のタスクを実行するための、第１のユーザデバイスに対するコマンドであり得る。例えば、タスクは、第１のユーザデバイス上のメッセージングアプリケーションの外部のアプリケーションを開いて実行すること、および／または第１のユーザデバイスと通信している遠隔デバイス上で実行される外部アプリケーションを制御することを含み得る。例えば、そのようなアプリケーションは、ウェブブラウザアプリケーション、通信アプリケーション、カレンダーアプリケーション、ワードプロセッサアプリケーション、特定のインターネットサービスにアクセスするための特定のアプリケーションなどを含むことができる。外部アプリケーションが第１のユーザデバイス上で実行されている場合、それは第１のユーザデバイス上に表示出力を提供することができる。表示出力は、例えば、第１のユーザデバイスと通信しているサーバデバイスから受信された情報を含むことができる。いくつかの例では、提案コマンドは、ウェブブラウザアプリケーションを開き、第１のユーザデバイス上にウェブブラウザアプリケーションのユーザインタフェースを表示し、特定のリンクでウェブページにアクセスするようにウェブブラウザアプリケーションに指示し、ウェブブラウザのユーザインタフェースの特定のリンクにあるウェブページのコンテンツを表示するためのコマンドを含み得る。適切な通信プロトコルの使用が含まれ得る（例えば、ウェブソケット）。特定のリンクは、示唆イベントに基づいて判定されたリンクであってよい。別の例では、開かれたアプリケーションは、購入するアイテムまたはサービスを示すサーバから受信されたデータを出力し、アイテムまたはサービスを購入するためのユーザ入力を受け入れる１つまたは複数の制御を提供するショッピングアプリケーションであってもよく、アイテムまたはサービスは、示唆イベントに関連している。
【０２８６】
いくつかの例では、コマンドは、第１のユーザデバイス上の組み込みインタフェースに表示されるコンテンツアイテムに含まれる１つまたは複数のコンテンツ特徴に関する情報を表示するように第１のユーザデバイス上で開く、または開始するようにアプリケーションに指示することができる。例えば、アプリケーションを開くまたは実行するための提案コマンドは、組み込みセッションの出力データ、および／または（上記と同様に）第１のチャット会話の１または複数のチャットユーザによって入力されている１つまたは複数のチャットメッセージに基づいてメッセージングアプリケーション（または組み込みアプリケーション）によって発生したことが検出された示唆イベントに基づいて生成され得る。いくつかの例では、ユーザの同意が得られた場合、視覚的特徴（例えば、画像認識技術を用いた顔、動物、風景特徴、オブジェクトなど）、音声特徴（音声認識技術を用いた音声、音の種類など）、またはトピック（例えば、プレゼンテーションの主題、画像またはビデオ内のシーンの地理的位置など）を含むコンテンツ特徴が、組み込みアプリケーションの出力データにおいてシステムによって検出されることが可能であり、類似のコンテンツ特徴が、ネットワーク経由でアクセス可能なサイトおよびデータベース上で検索され得る。例えば、メンバーユーザからのチャットメッセージが、「彼女が着ているコートが好き」というメッセージを含んでいて、組み込みアプリケーションが、コートを着た人物を描いたビデオまたは画像の出力データを表示している場合、組み込みアプリケーション出力に表示されている視覚的特徴に関連するチャットメッセージのこの組み合わせは、示唆イベントであり得る。これは、メッセージングアプリケーションまたは組み込みアプリケーションに、例えば、１つまたは複数の画像認識技術から判定された画像検索またはテキストラベルを使用することによって、ネットワークを介してアクセス可能なウェブページまたはショッピングサイトで類似のコートアイテムを検索させる。一致するアイテムを有する１つまたは複数のネットワークサイトは、１つまたは複数の提案コマンドに含めることができる。例えば、提案コマンドは、１または複数のメンバーユーザに対して生成され得、提案コマンドは、（選択された場合には）一致したコートアイテムのうちの１つを表示するブラウザアプリケーションを開くように第１のユーザデバイスに指示する。いくつかの例では、提案コマンドは、それが命令するアクションのテキスト説明、例えば「コートを示すウェブサイトを表示する」として表示され得る。
【０２８７】
他の例では、組み込みアプリケーションが講義を行っている人物を表示したときに示唆イベントが検出され得、その人物の識別情報が（例えば、出力データのメタデータにおいて、話者の字幕を検出することなどによって）判定されることが可能であり、話者に関連するアイテムが、ネットワークを介してアクセス可能なコンテンツアイテムにおいて検索され発見される。一例では、話者によって書かれた本が、ウェブサイトで発見される。提案コマンドは、１または複数のメンバーユーザに対して生成され得、提案コマンドは、（選択された場合には）ユーザによりその本を購入するための選択可能なオプション（例えば、表示された要素）と共に本の説明を表示するショッピングアプリケーションを開くように第１のユーザデバイスに指示する。
【０２８８】
さらなる例では、提案コマンドは、１つまたは複数の画像、ビデオ、オーディオデータセグメント、または他の種類のコンテンツデータに基づいて決定され得る。例えば、複数の画像（例えば、メディアアイテムの表現、購入するアイテムなど）が、組み込みアプリケーションに表示されることが可能であり、提案コマンドは、画像の１つまたは複数を選択するためのものであり得、提案コマンドは、ユーザによって選択された以前の画像に基づいて判定される。別の例では、提案コマンドは、衣料品の複数の色のリストからその衣料品の特定の色を選択するためのものであってよく、提案は、以前のユーザ選択に基づく（例えば、ユーザは以前に特定の色を他の色よりも頻繁に選択した）。
【０２８９】
さらなる例では、示唆イベントは、ユーザがチャット会話に参加することであってよく、参加ユーザのチャットインタフェースにおける提案コマンドの生成をトリガして、（チャットユーザの同意を得て）参加ユーザがチャット会話に参加したときより前にチャットユーザによって組み込みセッションにおいて行われたアクションおよび／またはコンテンツ出力の履歴をチャットインタフェースまたは組み込みインタフェースに格納および表示する「発見（ｄｉｓｃｏｖｅｒｙ）組み込みアプリケーション」を起動することができる。例えば、履歴は、（どの組み込みセッションが現在進行中か、進行中の共有リストなどを含む）チャット会話で以前に使用されたことがある他の組み込みアプリケーションの識別を含むことができる。いくつかの実装形態では、組み込みアプリケーションは、関連する他の組み込みアプリケーションを開始するこれらの他の組み込みアプリケーションの各々についての起動／参加制御を表示でき、参加ユーザが前の組み込みセッションを再開し、もし進行中であるならば前の組み込みセッションに参加／継続することを可能にする。これにより、新規ユーザがチャット会話に参加する前にチャット会話中のユーザのグループが行っていた活動を、新規ユーザが発見し、キャッチアップすることが可能になる。
【０２９０】
さらなる例では、示唆イベントは、チャット会話がアクティブである間にメッセージングアプリケーションにデータを送信する（例えば、第１のユーザデバイスまたはリモートデバイス上で実行される）外部アプリケーションであってよく（例えば、データは、通信アプリケーション、カレンダーアプリケーションなどにおけるイベントの発生の表示であり得る）、提案アイテムがチャットインタフェースに表示されて、データに基づいて提案コマンドまたは提案メッセージ（下記参照）を提供する（例えば、ユーザによる後の検討のためのストレージにイベントを示すデータを保存するための提案コマンド、および／またはチャット会話で出力されるように選択することができる、テキスト形式でイベントを記述する提案メッセージ）。示唆イベントは、ユーザがチャット会話についてのグループ情報（例えば、チャットインタフェースに表示される視覚的背景（壁紙）、チャット会話の名前またはグループ名、グループアイコンなど）を変更することであってよく、これは例えば、他のチャットメンバーと共有編集インタフェースで画像を編集することによって、新しい壁紙を作成することができる制御をチャットユーザに提供する画像編集組み込みアプリケーションを開始する提案コマンドをトリガし得る。
【０２９１】
いくつかの実装形態では、提案されるコマンドの代わりに、またはそれに加えて、ブロック７１４において推薦が生成され得る。例えば、そのような推薦は、ユーザに提案される特定の動作を記述することができるが、その推薦がユーザによって選択された場合にその動作が実行されるようにするコマンドを開始しない。従って、ユーザが推薦に従うことを選択した場合、ユーザは手動で推薦されたアクションを実行する。
【０２９２】
いくつかの実装形態では、図７の例のように、提案されるコマンドは、組み込みアプリケーションによって判定され、組み込みアプリケーションによって、例えば組み込みインタフェース内に表示され、および／またはチャットアプリケーションに表示されるようにメッセージングアプリケーションに提供され得る。いくつかの実装形態では、システムの他の構成要素が提案コマンドを判定し得る。例えば、メッセージングアプリケーションは、例えばチャットインタフェースにおけるイベントに基づいて、および／または組み込みアプリケーションからのイベント情報に基づいて、提案コマンドを判定することができる。いくつかの実装形態では、サーバ（例えば、メッセージングサーバ、提案サーバなど）は、イベント情報を提供されて、提案コマンドを判定することができる。例えば、メッセージングアプリケーションは、示唆イベントを示す記述情報をサーバに送信することができ、サーバは、メッセージングアプリケーションに返送される１つまたは複数の提案コマンドを判定することができる。
【０２９３】
いくつかの実装形態では、例えば、組み込みアプリケーションが提案機能を含まない場合、メッセージングアプリケーションが提案応答アイテムを提供し得る。例えば、組み込みアプリケーションが、画像ビューアアプリケーションである場合、メッセージングアプリケーションは、画質を良くするため、画像をダウンロードするため、画像の画像検索を実行するためなどの提案コマンドを提供し得る。いくつかの実装形態では、提案されるコマンドは、組み込みアプリケーションおよびチャットアプリケーションの両方によって提供され得る。方法はブロック７１６に続く。
【０２９４】
ブロック７１６において、ブロック７１４で判定された１つまたは複数の提案コマンドが、第１のユーザデバイス上で（組み込みアプリケーションが提案コマンドを生成した場合）組み込みアプリケーションからメッセージングアプリケーションに提供される。いくつかの実装形態では、組み込みアプリケーションは、メッセージングアプリケーションに提案コマンドを送信する代わりに、またはそれに加えて、メッセージングアプリケーションが１つまたは複数の提案コマンドを判定できるデータをメッセージングアプリケーションに送信することができる。例えば、組み込みアプリケーションは、示唆イベントを記述するデータ（例えば、組み込みアプリケーションにおけるユーザアクションの表示、ゲームスコア、ゲームの目的を達成することの成功または失敗の表示など）を送信することができ、および／または示唆イベントにコンテキストを提供するデータ（例えば、ビデオデータ、オーディオデータ、ゲームの状態、共有リストの一部など）を送信することができる。いくつかの実装形態では、メッセージングアプリケーションは、このデータから提案コマンドを決定することができ、および／またはデータを提案エンジン、例えば提案サーバ１５６に送信して、このデータに基づいて提案コマンドを決定し、メッセージングアプリケーションに返送することができる。方法はブロック７１８に続く。
【０２９５】
ブロック７１８において、メッセージングアプリケーションは、選択のためにチャットインタフェースに提案コマンドを出力し（および／または組み込みアプリケーションは、組み込みインタフェースに提案コマンドを出力し）、第１のデバイスは提案コマンドを表示する。いくつかの実装形態では、提案コマンドは、提案コマンドが指示するアクションの説明として各々表示され得る（例えば、「このシーンをスキップする」、「ポーンを３前方に移動する」、「このムービーセッションにユーザ４を追加する」、「コートを購入するオプションを表示する」など）。例えば、提案コマンドは、ボットからの選択可能なメッセージなどとして、チャットインタフェース内のリストに表示され得る。個々の提案コマンドは、例えばタッチスクリーン入力または他のユーザ入力を介してユーザによって選択可能であり得る。いくつかの実装形態では、提案コマンドは、チャットインタフェース内のインタフェース要素として、例えばドロップダウンメニュー内のボタンなどとして表示され得る。いくつかの実装形態は、追加のチャットメッセージがチャットインタフェースに表示されるときに、コマンドが表示画面からスクロールして消えないように、提案コマンドをチャットインタフェースの持続領域に表示することができる。いくつかの実装形態では、提案コマンドは、チャット会話の他のチャットユーザおよび組み込みセッションのメンバーユーザには表示されず、例えば、コマンドは第１のデバイスの第１のユーザに固有のものである。いくつかの実装形態では、提案コマンドのうちの１つまたは複数は、チャット会話において、すべてのチャットデバイスまたはメンバーデバイス、または提案コマンドに関連すると判明したチャットデバイスまたはメンバーデバイスのサブセットに表示され得る。いくつかの実装形態では、１人のユーザが提案コマンドを選択すると、そのコマンドはすべてのチャットデバイスのチャットインタフェースの提案リストから削除される。
【０２９６】
いくつかの実装形態では、提案コマンドは、メッセージングアプリケーションによってチャットインタフェースから自動的に削除される前に限られた表示時間を有し得る。例えば、事前定義された時間制限を使用することができ、それにより提案コマンドは時間制限が満了した後に削除される。いくつかの実装形態では、提案コマンドは、１つまたは複数の条件が満たされていることに基づいて削除され得る。例えば、示唆イベントまたはアプリケーション状態によって特定の提案コマンドが決定および表示され、その示唆イベントまたはアプリケーション状態がもはや関連性がなく、保留中ではなく、または有効ではない場合、それらの特定の提案コマンドは、チャットインタフェースから削除され得る。いくつかの例では、提案コマンドが他のプレイヤーのアクションに応答してゲーム内のアクションを提示し、ユーザが異なる行動を実行する場合、それらの提案コマンドはもはや関連性がなく、削除され得る。別の例では、再生されたメディアアイテム内のイベントがもはや表示されていない場合、例えば所定の時間が経過した後に、そのイベントに反応する提案コマンドが削除され得る。いくつかの例では、組み込みアプリケーションは、メッセージアプリケーションに新しいイベントおよび状態、および／または示唆イベントがもはや有効でないまたは保留中でないときを通知することができ、その結果、メッセージングアプリケーションは、提案コマンドをいつ表示から削除するかを判定することができる。方法は、後述するブロック７２０に続く。
【０２９７】
示唆イベントのタイプが、ブロック７１２において、またはブロック７１８の後に決定されたような提案コマンドを提供しない場合、方法はブロック７２０に進み、検出された示唆イベントが、チャットの会話に対する１つまたは複数の提案メッセージに関連するイベントである（例えばイベントタイプを有する）かどうかが判定される。例えば、いくつかのタイプの示唆イベントは、チャット会話で出力されるべき提案メッセージを含む提案応答アイテムを提供することができる。提案メッセージは、例えば、選択したユーザがチャット会話メッセージとしてメッセージを入力したかのようにチャットインタフェースに表示されるテキストメッセージとすることができる。いくつかの実装形態では、提案メッセージを提供することができる示唆イベントのタイプは、上述のような提案コマンドを提供することができるタイプの示唆イベントのうちの１つまたは複数を含むことができる。いくつかの例では、提案メッセージを提供することができる示唆イベントのタイプは、提案コマンドについて上で説明されたイベント例を含むことができる。いくつかの実装形態では、いくつかのタイプの示唆イベントは、１つまたは複数の提案メッセージを提供し、１つまたは複数の提案コマンドを提供しないものとして指定され得、またその逆も同様である。
【０２９８】
検出された示唆イベントが、チャット会話のための１つまたは複数の提案メッセージを提供するタイプのものである場合、方法はブロック７２２に進み、１つまたは複数の提案メッセージが、示唆イベントおよび／または他の条件に基づいて取得される。例えば、提案コマンドについて説明されたのと同様に（例えば、ブロック７１４）、メッセージングアプリケーションは、１つまたは複数の提案メッセージを決定することができ、および／または１つまたは複数の提案メッセージを決定してメッセージングアプリケーションなどへ返送する提案サーバへ記述データを送信することができる。いくつかの実装形態では、組み込みアプリケーションは、１つまたは複数の提案メッセージを判定することができる。
【０２９９】
いくつかの実装形態では、提案メッセージは、提案メッセージと特定の示唆イベントおよび／または示唆イベントのタイプとの格納された事前定義済みの関連付けに基づいて決定され、推薦エンジンを使用して決定され、トレーニングされたモデルおよび機械学習技術を使用して決定され、および／または、例えば、ブロック７１４について記載されるように、提案コマンドについて本明細書に記載されているものと同様に、他の技術および特徴を使用して決定され得る。
【０３００】
いくつかの例では、提案メッセージは、提案メッセージを引き起こした示唆イベントの説明、または示唆イベントを引き起こしたアクションの説明であり得る。例えば、第１のユーザが、示唆イベント（例えば、ゲームにおけるゲームアクション、メディアプレーヤアプリケーションにおける再生位置の設定など）として検出されるアクションを組み込みアプリケーションにおいて実行する場合、組み込みアプリケーションは、アクションを説明する提案メッセージを提供する（または提案メッセージを提供するメッセージングアプリケーションにイベントの表示を提供する）ことができる。例えば、提案メッセージは、「ユーザ１が現在のシーンを過ぎてスキップした」または「ユーザ１がナイトを移動させた」のように、ユーザによって実行されたアクションを説明することができる。提案メッセージが第１のユーザによって選択された場合（例えば、以下のブロック７３０において）、提案メッセージは、例えばユーザのアクションを組み込みセッションおよび／またはチャット会話と共有するためにチャット会話に出力される。
【０３０１】
いくつかの実装形態では、示唆イベントが、組み込みアプリケーションおよび／または組み込みセッションに関する１つまたは複数のメッセージ提案を生成するようにシステムに指示するユーザアクションである場合、組み込みアプリケーションおよび／または組み込みセッションを記述する様々な提案メッセージが、例えば、特定のユーザアクションまたは特定のタイプの示唆イベントのコンテキスト外で生成され得る。例えば、提案メッセージは、組み込みアプリケーションに関する一般的なコメント、例えば「このゲームは素晴らしい！」または「この映画をチェックしてください」等を含むことができる。そのような一般的なメッセージは、他のタイプの示唆イベントに応答しても生成され得る。
【０３０２】
いくつかの例では、提案メッセージは、示唆イベントに対するユーザの反応を示しまたは記述し得る。いくつかの実装形態では、そのような提案メッセージは、ユーザによって選択されたときに、チャット会話においてチャットメッセージとして表示され得る。そのような提案メッセージは、例えばテキストメッセージであってよい。いくつかの例では、ユーザの反応を記述する提案メッセージは、示唆イベントの根拠として発生する特定のトピック、単語、またはフレーズに関連する、または示唆イベントを検出するために使用される特定のアクションに関連する格納された事前定義済みのメッセージとして決定され得る。いくつかの実装形態では、合成または実際のトレーニングデータ、例えば、検出された示唆イベント（例えば、以前の示唆イベントとして検出された同じ種類のユーザアクション、チャット入力、イベントなど）と同じである所定または前の示唆イベントに応答してユーザによって提供された所定の合成メッセージまたは前の実際のメッセージに基づいてトレーニングされた機械学習モデルが使用され得る。
【０３０３】
組み込みアプリケーションがメディアアイテムを再生しているいくつかの例示的な実装形態では、提案メッセージは、示唆イベントに基づいて判定され得る。例えば、示唆イベントが、メディアアイテムを閲覧するためにユーザ２というチャットユーザが組み込みセッションに参加することである場合、提案メッセージは、「ようこそ、ユーザ２！」であり得る。別の例では、示唆イベントが、再生されたメディアアイテムにおいて検出された特定の検出されたタイプの視覚的または音声的特徴またはタイプのシーンまたはシーケンス（例えば、検出されたアクションシーンまたはシーケンス）である場合、提案メッセージは、検出されたタイプの特徴またはシーンに関連する感嘆符または観察、例えば、「Ｗｏｗｔｈａｔ ｗａｓ ｇｒｅａｔ！」または「Ｃｕｔｅｂａｂｙ」を含み得る。例えば、そのようなメッセージ提案は、メッセージとコンテンツ特徴およびシーンとの間の事前定義された関連付けに基づいて、および／または以前のコンテンツ特徴およびこれらの特徴に対する以前のユーザコメントまたは応答を含む合成データまたは実際のデータを使用してトレーニングされた機械学習モデルを用いて判定され得る。別の例では、示唆イベントが、他のメンバーユーザによって引き起こされるメディアアイテムの再生位置または出力特性（例えば、音量または視覚的明るさまたはコントラスト）の変化である場合、提案メッセージは、その変化に対する、「いいね、それにうんざりしていた」、「待って、それを見たかった！」などの反応であり得る。別の例では、サーバイベントは、上述のようにメッセージングアプリケーションによってサーバから受信された可能性がある。一例では、組み込みセッションにおける再生されるメディアアイテムは、第１のメンバーユーザであるユーザ１によって作成されたビデオであり、メディアアイテムは、サーバからユーザによって視聴することが可能であり、サーバイベントは、ユーザによるメディアアイテムに対する閾値数の承認が、サーバにより受信されたことを示す。第１のメンバーユーザ以外のメンバーユーザに対する提案メッセージは、「おめでとう、ユーザ１」、または第１のメンバーユーザに対する同様の称賛であり得る。
【０３０４】
組み込みアプリケーションがゲームを提供するいくつかの例示的な実装形態では、提案メッセージは、ゲームイベントに関連した示唆イベントに基づいて判定され得る。例えば、示唆イベントがゲームの別のプレイヤーによるゲームアクションである場合、提案メッセージは、ゲームアクションに対する１つまたは複数の可能性のあるまたは事前定義された反応メッセージ、例えば「素晴らしい動き！」または（例えば、複数の回答の選択肢を提供するクイズゲームの中の選択に対する）「素晴らしい答え！」であり得る。別の例では、示唆イベントが敵のゲームの駒によるユーザのゲームテリトリーの侵略である場合、提案メッセージは、「ちょっと、私の後に来ないでください」または「その動きを後悔するよ！」などの反応を含むことができる。別の例では、示唆イベントが、ユーザのスコアが（例えば、後続または先行する）他のプレイヤーのスコアまたは目的と閾値量以上異なることである場合、提案メッセージは、例えば、「みんなが私に追いつくことは決してないだろう」などのプレイヤーによる自慢または嘆きを含み得る。別の例では、示唆イベントが、他のプレイヤーのゲームへの参加である場合、提案メッセージは、新しいプレイヤーにゲーム内のユーザのチームに参加するようにというメッセージ要求、および／または別のプレイヤーに新しいプレイヤーに対するチームを形成するようにというメッセージ要求の送信を含むことができる。別の例では、示唆イベントが、メンバーユーザがゲームを終了すること（またはゲーム内でプレイヤーのロールからオブザーバーのロールに変更されたこと）である場合、提案されるメッセージは、「プレイしてくれてありがとう」であり得る。そのような提案メッセージは、上記と同様に判定され得る。
【０３０５】
組み込みアプリケーションがアイテムの共有コンテンツドキュメント（例えば共有リスト）を提供しているいくつかの例示的な実装形態では、提案コマンドは、リストまたはドキュメントに関連した示唆イベントに基づいて決定され得る。例えば、示唆イベントが、異なるメンバーユーザによる食品リストへのアイテムの追加（例えば、「ステーキ」）である場合、提案されるメッセージは、例えば、「ステーキが必要ですか」または「ステーキを取り除くことをお勧めします」などの、そのアイテムについて問い合わせるメッセージ、またはリストからそのアイテムを削除することを要求するメッセージを含み得る。いくつかの実装形態では、提案メッセージは、上記のようにアイテムを強調表示するための強調表示コマンドと関連付けられ得る。別の例では、示唆イベントがアイテムの削除である場合、提案メッセージは、チャットインタフェースにテキスト、例えば、「なぜそのアイテムを削除したのですか？」を出力することを含み得る。そのような提案メッセージは、上記と同様に決定され得る。
【０３０６】
組み込みアプリケーションが旅行日程を提供するいくつかの例示的な実装形態では、示唆イベントは、選択のための複数の旅行日程の出力である場合、提案メッセージは、旅程の説明、どの旅程を選択すべきかについてのコメントまたは提案を求める他のチャットユーザに対する要求を含み得る。
【０３０７】
多くの種類の組み込みアプリケーションに適用できる他の例では、示唆イベントが、メンバーユーザが組み込みセッションに参加することである場合、提案されるメッセージは、新しいメンバーユーザに、組み込みアプリケーションの機能を制御することを望むかどうかを尋ねるためのものであり得る（例えば、第１のユーザが、そのような制御の割り当てを可能にする組み込みアプリケーションにおいてユーザステータスまたはユーザロールを割り当てられている場合）。いくつかの実装形態では、メッセージ通信アプリケーション（または他のプログラムもしくはデバイス）がチャット会話において指定されたユーザからのメッセージ中にそのような言語を検出した場合、提案メッセージは、メンバーユーザに暴言または不適切な言葉の使用をやめるように求めることができる。
【０３０８】
さらなる例では、示唆イベントは、ユーザがチャット会話に参加している間にユーザデバイスが電話を受けることであってよく、提案メッセージは、チャット会話に表示するための「ちょっと待って、私の上司から電話を取らせて」であり得る。示唆イベントは、ユーザがチャット会話に参加している間にユーザデバイスがショートメッセージサービス（ＳＭＳ）メッセージを受信することであってよく、提案メッセージは、チャット会話に表示するためのＳＭＳメッセージの内容を含み得る。示唆イベントは、ユーザデバイスがオフラインになることであってよく、提案メッセージは、「すみません、私の電話はしばらく接続を失いました」を含み得る。示唆イベントは、組み込みセッションにおけるビデオの表示中に、ユーザデバイスがオンライン／オフラインステータスを、例えば、閾値期間内に閾値回数だけ交互に切り替わることであってよく、提案メッセージは、「ごめんなさい、接続が非常に不安定なので、そのビデオは後で見ます」を含み得る。示唆イベントは、チャットユーザがチャット会話を終了することであってよく（例えば、サーバイベントとして検出される）、これは、他の（残りの）すべてのチャットユーザに対して提案メッセージの生成をトリガし得、提案メッセージは、ユーザが終了しているチャットの会話（例えば、「映画を止めますか」など）に関連する。
【０３０９】
ユーザの同意が得られた場合、提案されるメッセージは、同じまたは類似の種類の組み込みアプリケーションを含む組み込みセッションにおいて、および／または同じまたは類似の種類のコンテンツアイテム（例えば、メディアアイテム、ゲームなど）に対して、ユーザにより実行された以前のメッセージおよび／またはアクションの履歴に、さらにまたは代替的に基づくことができる。例えば、ユーザが「それを元に戻してください」というメッセージを送信することによってビデオ内の特定のシーンまたはタイプのシーンの再生位置の変化に以前に反応したことがある場合、同様の提案メッセージが、同様の示唆イベントの発生に応答して生成され得、提案メッセージは同様の反応を提供する。
【０３１０】
提案されるメッセージは、メッセージングアプリケーションのチャットインタフェースに表示されるような、チャット会話におけるメンバーユーザ入力に、さらにまたは代替的に基づくことができる。例えば、ゲーム中に、メンバーユーザがチャットの会話に「この目的を達成するのを助けてください」というメッセージを入力した場合、「もちろん、そうします」または「今は助けられません」という提案メッセージが生成され得る。別の例では、組み込みインタフェース内のメディアアイテムの再生中に、メンバーユーザが「いつから始めればよいですか？」と入力した場合、異なる章の先頭（例えば、「２８：３０へ行って−ＴｈｅＶｉｓｉｔ」）などの様々な時間を示す提案メッセージが生成されることができ、または提案メッセージは、ユーザの同意を得てユーザ優先順位履歴にアクセスできる場合、ユーザの既知のお気に入りシーンの時間または位置を示すことができる。
【０３１１】
いくつかの提案メッセージは、ブロック７１４で決定された１つまたは複数の提案コマンドと関連付けられ得る。提案コマンドがユーザによって選択された場合、そのコマンドに関連する提案メッセージは、コマンドが組み込みアプリケーションに提供されている間にチャットインタフェースに出力され得る。いくつかの実装形態では、そのような提案メッセージは、関連する提案コマンドに関わっていてもよく、例えば提供されたコマンドを強調または説明することができる。例えば、提案コマンドが、ゲームにおける別のプレイヤーの前のアクションに応答するアクションをとるために選択された場合、「これでも食らえ！」および「まだ負けていない」などの、その提案コマンドを強調するためにそれに付随し得る１つまたは複数の関連する提案メッセージが決定され得る。別の例では、提案コマンドが、メディアアイテムの再生位置を新しいシーンに変更するために選択された場合、関連する提案メッセージは、その再生の変化を説明し得る（例えば、「そのシーンをスキップします」または「あのシーンに飽きました」）。いくつかの実装形態は、提案メッセージの選択に応答して、１つまたは複数の提案コマンドを同様に表示することができる。別の例では、チャット会話においてチャットユーザ間に話し合いまたは議論がある場合、チャットユーザの１または複数は、例えば他のタイプのコンテンツデータを使用して話し合いの視覚化を生成するための組み込みアプリケーションに対する提案コマンドを提示され得る。例えば、組み込みアプリケーションは、ユーザプロフィール写真を使用して、話し合いの視覚的表現を有するシネマグラフまたは他のアニメデータを生成することができる。ユーザがアニメデータを編集することを可能にする編集オプションが、（例えば、提案コマンドを選択したユーザに）提示され得る。組み込みアプリケーションは、ユーザによって選択された場合に、アニメデータをチャットメッセージとしてチャット会話に表示させる提案メッセージを生成することができる。
【０３１２】
いくつかの示唆イベントタイプは、ブロック７１４〜７１８からの提案コマンドおよびブロック７２２〜７２４からの提案メッセージの両方の生成を引き起こすことができる。いくつかの実装形態では、組み込みアプリケーションのための提案コマンドは、チャットインタフェースに表示された場合に提案メッセージと視覚的に区別することができる。いくつかの例では、提案コマンドは、共通の第１の視覚的特徴と共に表示することができ、提案メッセージは、第１の視覚的特徴とは異なる共通の第２の視覚的特徴と共に表示することができる。例えば、特定の色、書体、強調表示（例えば、太字のテキスト）または他の視覚的特徴が、提案コマンドに適用され得、異なる色、書体、強調表示、または他の視覚的特徴が、提案メッセージに適用され得る。
【０３１３】
いくつかの実装形態では、複数の提案メッセージが生成されて、上記の提案コマンドと同様に、１つまたは複数の所定の基準に基づいてランク付けされ得る。特定数のトップランクの提案メッセージが、ユーザデバイス上での出力のために選択され得る。方法はブロック７２４に続く。
【０３１４】
ブロック７２４において、ブロック７２２で取得された１つまたは複数の提案メッセージは、チャットインタフェースおよび／または組み込みインタフェースにおけるメッセージングアプリケーションによって出力される。例えば、提案メッセージは、提案コマンドについて上述したのと同様に、チャットインタフェースにおいてリストに表示され、ユーザによって選択可能であり得る。いくつかの実装形態は、追加のチャットメッセージがチャットインタフェースに表示されるときに、提案メッセージが表示からスクロールして消えないように、提案メッセージをチャットインタフェースの持続領域に表示することができる。
【０３１５】
いくつかの実装形態では、提案メッセージは、提案コマンドについて上で説明されたのと同様に、メッセージングアプリケーションによってチャットインタフェースから自動的に削除される前に限られた表示時間を有し得る。例えば、提案メッセージは、期限が切れた後に、および／または満たされている１つまたは複数の条件に基づいて削除され得る。例えば、示唆イベントまたはアプリケーション状態によって特定の提案メッセージが決定および表示され、その示唆イベントまたはアプリケーション状態がもはや関連性がなく、保留中ではなく、または有効ではない場合、それらの特定の提案メッセージは、チャットインタフェースから削除され得る。いくつかの例では、提案メッセージが、組み込みアプリケーションにおける異なるユーザによって実行された特定のアクションに応答しており、その異なるユーザが異なるアクションを実行した場合、それらの提案メッセージはもはや関連性がなく、削除され得る。いくつかの例では、組み込みアプリケーションは、メッセージアプリケーションに新しいイベントおよび状態、および／または示唆イベントがもはや有効でないまたは保留中でないときを通知することができ、その結果、メッセージングアプリケーションは、提案メッセージをいつ表示から削除するかを判定することができる。方法は、後述するブロック７２６に続く。
【０３１６】
示唆イベントのタイプが、ブロック７２０で、またはブロック７２４の後に決定されたような提案メッセージを提供しない場合、方法はブロック７２６に進み、１つまたは複数の提案コマンドアイテムの選択が、チャットインタフェースで受信されたかどうかが判定される。例えば、選択は、チャットインタフェースにおいてユーザによって提供されたユーザ入力に基づいて受信されて、表示された提案コマンドアイテムを選択することができる。いくつかの実装形態では、組み込みインタフェースは、ブロック７１８に関して上で説明されたように、組み込みインタフェースにおいて提案アイテムを表示することができ、それらが選択のためのユーザ入力に応答する。
【０３１７】
いくつかの実装形態では、複数の提案コマンドアイテムが、ユーザ入力によって選択され得る。いくつかの例では、上述のように、提案コマンドアイテムについての選択が受信され得、それによって、提案コマンドアイテムに関連する提案メッセージアイテムのリストが表示される。その後、ユーザは、関連する提案メッセージアイテムのうちの１つ（または複数）を選択することができる。いくつかの実装形態では、提案メッセージアイテムについての選択が受信され得、それによって、提案メッセージアイテムに関連する提案コマンドアイテムのリストが表示される。その後、ユーザは、関連する提案コマンドアイテムのうちの１つ（または複数）を選択することができる。
【０３１８】
ブロック７２６で判定されたように１つまたは複数の提案コマンドアイテムの選択が受信された場合、方法はブロック７２８に進み、メッセージングアプリケーションは、選択されたコマンドアイテムに関連する１つまたは複数の選択されたコマンドを組み込みアプリケーションに提供する。場合によっては、選択されたコマンドアイテムに関連する１つまたは複数の選択されたコマンドが、組み込みアプリケーションに提供されるコマンドの代わりに、またはそれに加えて、上述のように、メッセージングアプリケーションおよび／または第１のユーザデバイスに提供される。いくつかの実装形態では、複数のコマンドが、単一の選択された提案コマンドアイテムに関連している。組み込みアプリケーション、メッセージアプリケーション、および／または第１のユーザデバイスは、提供されたコマンドを実行する。例えば、コマンドは、組み込みアプリケーションの状態の変化（例えば、メディアアイテムの再生位置の変化、ユーザ制御ゲーム駒の位置またはステータスの変化、共有ドキュメントの変化など）を引き起こし得る。いくつかの実装形態では、本明細書で説明されるように、状態の変化は、組み込みセッションにおける組み込みアプリケーション状態の同期を可能にするためにネットワークを介して１つまたは複数のサーバおよび／または他のメンバーデバイスに送信または指示される。方法はブロック７３０に続く。
【０３１９】
１つまたは複数の提案コマンドアイテムの選択が、ブロック７２６で、またはブロック７２８の後に判定されたように受信されない場合、方法はブロック７３０に続き、１つまたは複数の提案メッセージアイテムの選択が、チャットインタフェースで受信されたかどうかが判定される。例えば、選択は、チャットインタフェースにおいてユーザによって提供されたユーザ入力に基づいて受信されて、表示された提案メッセージアイテムを選択することができる。いくつかの実装形態では、複数の提案メッセージアイテムが、ユーザ入力によって選択され得る。いくつかの実装形態は、上記のように１つまたは複数の提案コマンドアイテムに関連して１つまたは複数の提案メッセージアイテムを選択することができる。
【０３２０】
１つまたは複数の提案メッセージアイテムの選択が、ブロック７３０で判定されたように受信された場合、方法はブロック７３２に続き、メッセージングアプリケーションは、選択されたメッセージアイテムに対応する選択されたメッセージをチャットインタフェースのチャット会話に出力する。いくつかの実装形態では、複数のメッセージが、単一のメッセージアイテムに対応し得る。いくつかの例では、選択されたメッセージは、メッセージアイテムのユーザ選択を受信する（第１の）デバイスのチャットインタフェースに表示され、選択されたメッセージは、ネットワークを介してチャット会話に参加しているチャットデバイスに送信され、それらのデバイスのチャットインタフェースに表示され得る。いくつかの実装形態では、選択されたメッセージは、関連するチャットインタフェースに表示するためにチャットデバイスの特定のサブセット、例えば、第１のデバイスと同じ組み込みセッション内のメンバーデバイス、ユーザ選択またはプリファレンスに基づく特定のチャットユーザのデバイス、組み込みセッションにおける特定のユーザステータスまたはロールのデバイス、組み込みセッションのゲーム内の同じチームまたは反対側のチームのデバイスなどに送信され得る。
【０３２１】
いくつかの実装形態では、チャット会話において出力される提案メッセージの数は、例えば、チャットインタフェースを混雑させる多くのチャットメッセージの影響を減らすために、制限され得る。例えば、メッセージングアプリケーションは、特定の期間内にチャット会話に出力することができる選択された提案メッセージの最大数を課すことができ、または特定のメンバーユーザまたはすべてのチャットユーザからの連続する選択された提案メッセージの出力間の時間に最小量を課すことができる。従って、選択された提案メッセージが出力に適格でない場合、そのメッセージは、ブロック７３２においてチャット会話に出力されない。
【０３２２】
１つまたは複数の提案メッセージアイテムの選択が、ブロック７３０において、またはブロック７３２の後に判定されたように、受信されない場合、方法は、組み込みアプリケーションの実行を続けるためにブロック７０８に進むことができる。
【０３２３】
いくつかの実装形態では、特定の組み込みアプリケーションが開かれて（例えば、コーナーにおいて最小化されて）、チャット会話におけるチャットメッセージを継続的に解析および／または別の方法で処理し、チャットメッセージに基づいて提案コマンドおよび／またはメッセージを提供することができる。例えば、組み込みアプリケーションは、チャット会話の内容に基づいて、トピック、ビデオ、画像、シネマグラフ、オーディオデータセグメントなどである提案メッセージを提示することができる。これは、チャット会話に関連するコンテンツをユーザが投稿するのを助けることができる。これらの実装形態のいくつかにおいて、示唆イベントは、チャット会話においてチャットユーザによって入力されている現在のチャットメッセージに基づいて継続的に検出され得、新たな提案コマンドおよび／またはメッセージは、チャットインタフェースおよび／または組み込みインタフェースにおけるユーザ選択のために継続的に提供され得る。
【０３２４】
いくつかの実装形態では、提案される応答は、示唆イベントに基づいて判定され、複数のメンバーユーザ（および／またはチャットユーザ）に提示され、例えば、各メンバーデバイスまたはチャットデバイス（または選択されたメンバーデバイスまたはチャットデバイス）に表示されることが可能である。いくつかの例では、提案される応答は、複数のメンバーデバイスの各々に提供された同じ提案コマンドおよび／または提案メッセージであってよく、または異なる提案応答が、２つ以上のメンバーデバイスの各々に提供され得る。いくつかの例では、ユーザ１、２、および３のメンバーデバイスは、チャット会話のユーザ４からチャットメッセージを受信し、ユーザ１、２、および３の各メンバーデバイス（または複数のメンバーデバイス）は、異なるセットの提案応答を提示することができる（例えば、各セットは、他のセットのうちの１つまたは複数とは異なる少なくとも１つの応答を有する）。提案される応答の各セットは、そのセットを提示しているメンバーデバイスのコンテキストに基づいていてよく、例えば、チャット会話において関連するユーザによって入力された関連チャットメッセージ、関連するユーザのチャットメッセージの履歴、および／または本明細書に記載の他のファクターに基づいていてよい。いくつかの例では、提案される応答のセットは、関連するユーザが使用してきた１つまたは複数の特定の組み込みアプリケーションに基づくことができる。例えば、ユーザ４が、「今夜のパーティーのために飲み物を買う必要がある」というチャットメッセージを入力した場合、およびユーザ２が、共有リスト組み込みアプリケーションの頻繁なユーザである場合、ユーザ２のユーザデバイスは、（選択された場合）そのアプリケーションの買い物リストに「飲み物を買う」というアイテムを追加する提案コマンドを提供する。その提案コマンドを選択すると、共有リスト組み込みアプリケーションが開き、アイテム「飲み物を買う」を自動的に共有リスト組み込みアプリケーションの共有リストとすることができる。しかしながら、ユーザ３は、共有リスト組み込みアプリケーションの頻繁なユーザではなく（例えば、特定の時間内に閾値回数を超えてそのアプリケーションを使用したことがない）、ユーザ３のユーザデバイスは、この例ではその提案コマンドを表示しない。ユーザ３のユーザデバイス（例えば、メッセージングアプリケーション）は、ユーザ３によって頻繁に使用される異なる組み込みアプリケーション、例えば飲み物を購入する企業の地理的位置を表示する地図アプリケーションのための異なる提案コマンドを表示することができる。別の例では、ユーザ３のデバイスは、以前の機会にチャット会話に（あるいは任意のチャット会話において）表示された同様のチャットメッセージ（例えば、同じ単語、同じセマンティック意味などのうちの１つまたは複数を有するチャットメッセージ）に応答して、ユーザ３によって以前に入力または選択された前のメッセージと同じ提案メッセージを提供することができる。
【０３２５】
いくつかの実装形態では、組み込みインタフェースにおいて提供される１つまたは複数の特定のコンテンツアイテムに関連する関連提案応答が判定され得る。例えば、メンバーユーザが、共有リスト組み込みアプリケーションを使用して（または以前に使用して）、旅行の準備のための第１のリストと、パーティーを計画するための第２のリストとを生成する場合、提案される応答は、例えば、チャットメッセージの内容および／または１つまたは複数の他の示唆イベントに基づく他のリストではなく、これらのリストのうちの１つを参照することができる。いくつかの例では、「今夜のために飲み物を買うことを忘れないでください」などのチャットメッセージに応答して、機械学習モデルおよび／またはナレッジグラフは、「今夜」および「飲み物を買う」が、チャットメンバーが計画している「パーティー」を指すと判定することができ、（選択されたときに）パーティーの計画のための対応する第２のリストに「飲み物を買う」というアイテムを追加する提案応答を提供する。「私たちの旅行のための飛行機のチケットを予約しましたか」などのチャットメッセージに応答して、機械学習およびナレッジグラフは、「飛行機のチケット」および「旅行」が、旅行を指すと判定することができ、（選択されたときに）旅行準備のための対応する第１のリストに「飛行機のチケットを予約」というアイテムを追加する提案応答を提供する。
【０３２６】
いくつかの実装形態では、提案される応答は、選択されると、複数の関連する組み込みアプリケーションの識別の表示をトリガし、例えば、ユーザが、実行されるべき所望の組み込みアプリケーションを選択すること、または提案応答に基づいてデータを受信することを可能にして、曖昧さを低減することができる。いくつかの実装形態では、提案される応答は、ユーザによって選択されたときに、どの組み込みアプリケーションが提案応答の選択によってトリガされるべきかに関する要求を表示させることができる。場合によっては、選択された提案応答に適した複数の可能な組み込みアプリケーションが表示され得、ユーザ入力は、実行する組み込みアプリケーションを示すことができる。例えば、選択された提案応答がアイテムを共有リストに追加し、２つの異なる利用可能な組み込みアプリケーションがそのようなリストを提供する場合、これらの２つの組み込みアプリケーションの識別が表示されて、ユーザは使用する組み込みアプリケーションの１つを選択し得る。
【０３２７】
いくつかの実装形態では、提案される応答は、組み込みインタフェース内に表示されることが可能であり、組み込みインタフェースに表示されている間に、ユーザ入力から選択を受信することができる（例えば、タッチスクリーン上のタッチ入力を通じて、または組み込みインタフェースに配置されたユーザ制御カーソルを介して）。例えば、提案される応答は、組み込みアプリケーションにおける示唆イベントの発生に応答して表示され得る。いくつかの例では、ゲーム中の示唆イベントは、ユーザプレイヤーが、対戦相手プレイヤーのアバターまたはゲームの駒を打ち負かすかまたは削除させることであってよく、提案メッセージの第１のセットが、勝利プレイヤーのメンバーデバイスに表示され（例えば、移動を自慢するメッセージ）、提案メッセージの第２のセットが、敗者プレイヤーのメンバーデバイスに表示され得る（例えば、負けについて泣き言を言うメッセージ）。ユーザ入力によって選択されたとき、そのような提案メッセージは、所望のコンテンツを示すチャットメッセージをチャット会話に提供させる。別の例では、示唆イベントは、第２のユーザがゲームに参加したという第１のユーザのデバイスの組み込みアプリケーションおよび組み込みインタフェースにおける通知であり、提案応答は、選択されると、第２のプレイヤーのユーザデバイス（「行こう、ユーザ２」、「このゲームであなたを倒すつもりだ」など）、および／またはすべてのメンバーデバイス（またはすべてのチャットデバイス）に嘲りまたは挑戦を出力させる。
【０３２８】
いくつかの実装形態では、組み込みアプリケーション（例えば、スクリプト）は、例えば、提案応答に含まれている提案応答のデータまたはユーザ選択可能リンク（または他の表示された選択可能制御）に直接符号化されることによって、提案応答に添付（関連付け）され得る。例えば、数百キロバイトの小さな組み込みアプリケーションが、そのように添付され得る。提案応答がユーザによって選択されると、添付された組み込みアプリケーションは、例えば、ネットワークを介してソース（例えば、組み込みアプリケーションサーバ１５０）から組み込みアプリケーションをダウンロードする代わりに、（復号化後に）開くようにトリガされる。場合によっては、この機能は、組み込みアプリケーションデータの追加ダウンロード時間を排除または短縮し、組み込みインタフェースの即時実行および表示を提供することができる。いくつかの実装形態では、添付された組み込みアプリケーションは、軽量バージョンとすることができ、ダウンロードが行われた後にデバイス上のその軽量バージョンを置き換えることができる組み込みアプリケーションのより完全なバージョンのデバイスのバックグラウンドにおけるダウンロードをトリガすることに加えて実行される。
【０３２９】
いくつかの実装形態では、添付された組み込みアプリケーションは、デバイスのオペレーティングシステム（または他のソフトウェア環境）のバックグラウンドで（例えば、「ヘッドレスモード」で）実行することができ、これは、組み込みインタフェースまたは他の出力を組み込みアプリケーションによって表示させない。例えば、添付された組み込みアプリケーションは、チャットインタフェースに表示される提案応答を生成することができる。添付された組み込みアプリケーションは、例えば、チャット会話のメッセージおよび／またはユーザによって選択された関連する提案応答に基づいて、チャット会話中にオンザフライで作成され得るインスタント拡張および機能をメッセージングアプリケーションに提供することができる。メッセージングアプリケーションは、例えばそれ自身の関連する組み込みインタフェースを表示する組み込みアプリケーションの対応するバージョンをダウンロードして実行する必要なしに、添付された組み込みアプリケーションのＡＰＩおよび機能を使用することができる。
【０３３０】
いくつかの実装形態では、添付された組み込みアプリケーションは、例えばチャット会話との進行中の関連付けにおいて、それが実行されるチャット会話に関連付けられ、または添付され得る。例えば、添付された組み込みアプリケーションは、チャット会話に対する拡張として機能することができ、例えば、組み込みアプリケーションは、チャッ型会話が開かれている間、および／またはデバイス上に表示されている間に、バックグラウンドで実行される。そのような添付された組み込みアプリケーションは、チャット会話に入力されるチャットメッセージを処理し、チャットメッセージに応答してアクション、例えば、ある種のチャットメッセージへの自動返信を提供すること、チャットメッセージを異なる言語に自動翻訳すること、メッセージングアプリケーションが開かれている間（ユーザの同意を得て）常時位置共有（ユーザデバイスの現在の地理的位置を示す）を提供すること、表示されたグラフィカルインタフェース要素をチャットインタフェースに追加することなどを実行することができる。いくつかの例では、チャット会話のチャットメッセージは、例えばメッセージングアプリケーションの拡張として添付された組み込み翻訳アプリケーションを有することによって、異なる言語のメッセージに自動翻訳され、表示され得る。拡張組み込みアプリケーションは、カメラアプリケーションまたは画像ピッカーアプリケーションを補強して、画像のようなメディアアイテムを、例えば、チャット会話においてまたは異なる組み込みアプリケーションを介してそのようなメディアアイテムが他のデバイスと共有される前に、修正することができる。さらなる例では、拡張組み込みアプリケーションは、チャット会話またはチャット会話中の特定のユーザを匿名化し（例えば、チャットユーザの表示されたユーザ識別子を変更し）、会話内のチャットメッセージの表示を並べ替え（例えば、テーマ、オリジナルのチャットメッセージに対する連続的な返信を含むスレッドなどによりメッセージをグループ化する）、ユーザ入力にアクセス可能なチャットインタフェースの機能（例えば、チャットメッセージまたはチャット会話に投稿されたメディアアイテムをピン留めしてチャットインタフェースの表示領域に持続的に表示させる表示制御、または、例えば共有データベースに格納されているメディアメッセージにコメントを添付する制御）を有効化することができる。
【０３３１】
いくつかの実装形態では、添付された組み込みアプリケーションは、チャット会話のための１回限りの（ｏｎｅ−ｔｉｍｅ）実行を提供し、例えば、チャット会話へ入力された画像、またはチャットメッセージの１回限りの翻訳を修正して再共有する。いくつかの実装形態では、そのような組み込みアプリケーション拡張および／または１回限りのスクリプトは、サーバからダウンロードすることができ、またはユーザ選択可能チャットメッセージまたは提案応答（リンク）に（例えば、ウェブアドレス（例えば、ユニフォームリソースロケータ（ＵＲＬ））のパラメータとして提供される符号化されたスクリプトとして）直接添付することができる。
【０３３２】
同様に、添付された組み込みアプリケーション（例えば、数百ＫＢのメモリを使用する小サイズアプリケーション）は、チャットメッセージにおける選択可能なリンクのデータ、またはチャットインタフェースまたはチャット会話に表示されるインタラクティブカードのためのデータ内に符号化されることが可能であり、そのチャットメッセージリンクまたはインタラクティブカード内の制御の選択時に実行され得る。
【０３３３】
いくつかの実装形態では、提案応答は、例えば、上述のように、メッセージングアプリケーションおよびチャット会話の外部の外部デバイスまたはプログラムで発生する示唆イベントに基づいて生成され得、提案応答は、外部デバイスまたはプログラムに出力されるコマンドおよび／またはメッセージを提供し得る。例えば、組み込みアプリケーションは、オンラインゲーム（例えばサーバ上で実行されるゲーム）と通信することができ、組み込みアプリケーションに入力されるコマンドは、ゲームの状態に影響を与えることができ、例えばゲームサーバに伝達され得る。組み込みアプリケーションに入力を提供する第１のユーザによって応答することができるイベントがゲーム内で発生した場合、提案される応答は、オンラインゲームにおいて応答的なユーザアクションを引き起こすであろう組み込みアプリケーションへの入力を提供するアクションを含み得る。
【０３３４】
いくつかの実装形態では、提案される応答は、適切なユーザの同意がそうするために得られた場合、示唆イベントおよび／または過去に発生した特定のイベントに基づいて、生成され得る。以前のイベントは、例えば、格納された履歴データに示されるかまたは記述され得る。いくつかの例では、２人のユーザ間の以前のチャット会話で入力された以前のチャットメッセージのログを使用して、同じ２人のユーザを含む現在のチャット会話に対して新しく生成された提案応答として含められるべきメッセージを判定することができる。提案される応答は、ゲーム内のユーザにより達成された以前の目的またはスコアなどの、組み込みゲームアプリケーションにおける特定のユーザのパフォーマンスを記述する以前の履歴に基づき得る。例えば、「あなたは以前よりも上手くやっています！」という提案メッセージが、その組み込みゲームアプリケーションにおける前のゲームでのユーザ２の前のスコアと比較してより高いゲーム中のユーザ２の現在のスコアに基づいて、ユーザ１に表示され得る。ユーザの同意が得られた場合は、組み込みアプリケーションにおいてユーザ間の記録された以前の対話も、提案応答を生成するために使用され得る。例えば、ゲームアプリケーションにおける以前のユーザ対話が、以前のゲームで成功した新たな提案ゲームアクションを生成するために、および／または提案メッセージ（例えば、「今回私はあなたより上手くやっています」）を生成するために使用され得、あるいは、共有ドキュメントアプリケーションに対する以前のユーザ投稿が、同じ投稿を新たな共有ドキュメントに追加するための提案コマンドを生成するために使用され得る。別の例では、格納された履歴データに記載されているように、組み込みリストアプリケーションにおいて第１の共有リストへのユーザによるリストアイテムの追加が以前に行われたと判定された場合、提案コマンドが、そのユーザに対して、例えば、第１のリストと同じまたは類似のラベルまたはタイトルを持つ、新しく作成された第２の共有リストに関して生成され得る。例えば、提案されるコマンドは、選択されると、第２のリストに同じリストアイテムを追加し、第２のリストは、第１のリストと同じラベル（例えば、「買い物リスト」）を有すると判定されている。
【０３３５】
いくつかの実装形態では、表示される提案応答の数は、例えば、複数の提案応答を、表示される単一の提案応答に統合することによって制限され得る。例えば、単一の提案応答は、選択されると、１つまたは複数のアプリケーション（組み込みアプリケーション、メッセージングアプリケーション、サーバなど）への複数のアクションまたは入力を引き起こし得る。いくつかの例では、示唆イベントは、チャット会話における別のチャットユーザによるチャットメッセージ「金曜日のティミーの誕生日を忘れないでください」の入力である。このチャットメッセージに対し判定される提案応答は、提案メッセージ「心配しないでください」（チャットメッセージ）、第１のユーザのカレンダーに「ティミーの誕生日」を追加する提案コマンド、ティミーの誕生日にアクティベートされる第１のデバイス上のアラームまたはリマインダを設定する提案コマンド、およびリスト組み込みアプリケーションの買い物リストに「ティミーの誕生日プレゼントを買う」というアイテムを追加するための提案コマンドを含み得る。これら３つの提案コマンドは、組み込みアプリケーションおよび／またはボットにおいてアクションをトリガする。しかしながら、３つの提案コマンドは、多くの画面領域を占有する可能性があるので、表示される統合提案コマンド、例えば「ティミーの誕生日のためのリマインダの設定」に組み合わせることができる。ユーザ入力によって選択されると、この統合された提案コマンドによって、３つの個別の提案コマンドを含む選択メニューが表示される。これらの個々の提案コマンドのいずれかまたはすべてが、ユーザ入力によって選択され得る。
【０３３６】
いくつかの実装形態では、第１のチャット会話について決定された提案応答アイテムは、ユーザ入力によって選択されると、例えばメッセージングアプリケーション（または異なるアプリケーション）によって実施されている別の第２のチャット会話にコマンドまたはメッセージを提供し得る。ユーザが、複数のチャット会話に並行して参加していてもよく、１つのチャット会話で選択された提案応答が、別のチャット会話でアクションを引き起こし得る。例えば、ユーザ１とユーザ２との間の第１のチャット会話では、ユーザ１は、チャットメッセージ「ユーザ２、ティミーの誕生日のプレゼントを忘れないでください」を入力する。このメッセージは、提案応答（コマンド）をユーザ２のデバイス上で生成させる示唆イベントであり得る。この提案応答がユーザ入力によって選択されると、アイテム「ティミーのプレゼントを購入する」が、ユーザ２が参加している第２のチャット会話において組み込みアプリケーションで作成された誕生日リストに追加される。別の例では、ユーザ１およびユーザ２は、第１のチャット会話において、ユーザ１が第２のグループ会話でプレイしているゲームについてのチャットメッセージを入力しており、ユーザ１によって選択されると特定のチャットメッセージ（または他の表示されたプロンプト）を第１のチャット会話において出力させる提案応答が生成される。例えば、特定のチャットメッセージは、第１のチャット会話でゲームに参加するようにユーザ２を招待することができ、または表示された参加制御を含むインタラクティブカードをユーザ２のデバイス上に表示させることができる。
【０３３７】
いくつかの実装形態では、提案される応答は、第１のデバイスによって少なくとも１回実行された組み込みアプリケーションに基づいてカスタマイズされ得る。いくつかの実装形態では、提案される応答は、チャット会話において第１のデバイスによって少なくとも１回実行された組み込みアプリケーションに基づいて、同じチャット会話に対してカスタマイズされ得る。いくつかの実装形態では、提案される応答は、１または複数のメンバーユーザのデバイスによって、またはいくつかの実装形態では１または複数のチャットユーザのデバイスによって、少なくとも１回実行された組み込みアプリケーションに基づいてカスタマイズされ得る。例えば、組み込みアプリケーションへのコマンドまたはメッセージは、その組み込みアプリケーションがそのデバイスによって以前に実行されたことがある場合に、（示唆イベントに応答して）デバイス上に提案応答として提供され得る。いくつかの例では、第１のデバイスが共有リスト組み込みアプリケーションを以前に実行したことがある場合、チャットユーザが、イベント計画または推薦に関連する特定のアイテム（例えば、単語、画像、または他のコンテンツデータ）を含むチャット会話におけるチャットメッセージを入力すると、これらの特定のアイテムを共有リスト組み込みアプリケーションの既存のリストまたは新しいリストに追加するためのコマンドである提案応答が、第１のデバイス上で生成され得る。いくつかの例では、以前に共有リスト組み込みアプリケーションを実行していなかったメンバーデバイスは、共有リスト組み込みアプリケーションに関連する提案応答を表示しないであろう。いくつかの実装形態では、任意のメンバーデバイス（またはチャットデバイス）が以前に組み込みアプリケーションを実行したことがある場合、提案コマンドまたはメッセージは、１つの、いくつかの、またはすべてのメンバーデバイス（またはチャットデバイス）上で提供され得る。
【０３３８】
いくつかの実装形態では、提案応答アイテムを提供するデバイスにアクセス可能な１つまたは複数のボットからの情報の呼び出しまたは要求に基づいて、１つまたは複数の提案応答アイテムが生成され得る。例えば、適切な提案アイテムが再生されたメディアアイテムのコンテンツに関連する特定の情報であると提案アイテム生成コンポーネント（例えば、提案サーバまたはシステムの他の構成要素）が判定した場合、その情報を取得できるボットが判定されることが可能であり、ボットへのコマンドおよび／または要求が、提案アイテムとして生成され得る。
【０３３９】
いくつかの実装形態では、選択された提案応答アイテムがボットへのコマンドまたは要求である場合、ボットがチャット会話に追加され、要求された情報を取得してチャットインタフェースに表示し、ユーザはさらなるメッセージをボットに送信することができる。
【０３４０】
上記の機能を使用する様々な例示的な実装形態では、チャットインタフェースは、上記のようなメッセージングアプリケーションによって生成されるように、第１のユーザデバイスによって表示され得る。チャットインタフェースは、ネットワークを介してチャット会話に参加しているユーザデバイスによって提供されたメッセージを表示するように構成されたチャット会話において提供された１つまたは複数のメッセージを表示するように構成されている。組み込みインタフェースは、第１の組み込みアプリケーションによって提供され、チャットインタフェースに表示される。示唆イベントは、例えば、チャット会話に参加している複数のユーザデバイスのうちの１つまたは複数において特定のイベントが発生したことを示す受信データに基づいて、第１の組み込みアプリケーション（またはメッセージングアプリケーション）に関連して発生したと判定され、複数のユーザデバイスのうちの１つまたは複数は、第１のユーザデバイスとは異なるものである。第１のユーザデバイス（例えば、メッセージングアプリケーション）は、１つまたは複数の提案応答アイテムを示唆イベントに基づいて取得し、提案応答アイテムは、第１のユーザデバイスによって表示される。
【０３４１】
例えば、特定のイベントは、複数のユーザデバイスのうちの１つまたは複数の、関連するチャットインタフェースによって受信されたユーザ入力、複数のユーザデバイスのうちの１つまたは複数の、関連する組み込みインタフェースによって受信されたユーザ入力、複数のユーザデバイスのうちの１つまたは複数で実行されている関連する組み込みアプリケーションで発生している組み込みアプリケーションイベントなどを含み得る。受信されたデータは、第１の組み込みアプリケーションによって再生されているメディアアイテムに表示されるコンテンツ特徴のタイプ、第１の組み込みアプリケーションのゲームにおける所定の目的の達成、チャット会話に参加している受信側ユーザデバイスによって受信されたユーザ入力、複数のユーザデバイスのうちの特定のユーザデバイスからの組み込みアプリケーションの起動などを含み得る。受信されたデータは、チャットメッセージを含むことができる。示唆イベントは、例えばチャットインタフェースおよび／または組み込みインタフェースで受信されたユーザ入力、および／または特定のイベントが第１の組み込みアプリケーションで発生した（および／または別のチャットデバイス上で実行されている対応する組み込みアプリケーションで発生した）ことを示す第１の組み込みアプリケーションからのイベント情報に基づくことができる。１つまたは複数の提案応答アイテムは、組み込みアプリケーション、メッセージングアプリケーション、および／またはネットワークを介してメッセージングアプリケーションと通信するリモートサーバによって判定され得る。いくつかの例では、組み込みインタフェースは、チャット会話に参加しているユーザデバイスのサブセット上に出力されることが可能であり、ユーザデバイスは、第１の組み込みアプリケーションを含む組み込みセッションに参加するためのユーザ選択を受信した。第１の組み込みアプリケーションは、第１の組み込みアプリケーションによって生成された、および／またはネットワークを介してサーバから受信された組み込み出力データを表示し得る。
【０３４２】
そのような実装形態のための機能は、提案応答アイテムから選択された提案応答アイテムを選択するユーザ入力を受信すること、第１のユーザデバイスのチャットインタフェースのチャット会話において選択された提案応答アイテムに関連するチャットメッセージを出力することを含むことができ、その結果、チャットメッセージは、チャット会話に参加しているユーザデバイスのうちの１つまたは複数の他のユーザデバイスによって表示される。例えば、提案応答アイテムは、示唆イベントに対するユーザの反応を示す１つまたは複数のチャットメッセージを含むことができ、および／または組み込みアプリケーションおよび／またはメッセージングアプリケーションに提供される１つまたは複数のコマンドを含むことができる。いくつかの例では、組み込みアプリケーションへのコマンドは、組み込みアプリケーションによって実装されるゲームにおいてアクションを実行するためのコマンド、組み込みアプリケーションによるメディアデータの再生における再生位置を変更するためのコマンド、および／または組み込みアプリケーションによって提供された共有オブジェクトを変更するためのコマンドを含み得る。いくつかの例では、提案コマンドを提供する提案応答アイテムは、チャットインタフェースに表示されたときに提案メッセージを提供する提案応答アイテムと視覚的に区別されている。
【０３４３】
さらなる例では、第１の組み込みアプリケーションは、チャット会話に参加しているユーザデバイスのサブセットによって表示される組み込みインタフェースにおいてビデオデータ（または他のコンテンツデータ）を表示させるメディアプレーヤアプリケーションであってよく、組み込みインタフェースは、ビデオデータの再生を制御するユーザ入力を受信するように構成されており、提案応答アイテムは、ビデオデータの再生を調整するように動作可能な１つまたは複数の提案された再生コマンドを含み得る。別の例では、第１の組み込みアプリケーションは、チャット会話に参加しているユーザデバイスのサブセットによって表示される組み込みインタフェースにおいてゲームデータを表示させるゲームアプリケーションであってよく、組み込みインタフェースは、ゲームアプリケーションの１つまたは複数の状態を変化させるユーザ入力を受信するように構成されており、提案応答アイテムは、ゲームアプリケーションの少なくとも１つの状態を修正するように動作可能な１つまたは複数の提案コマンドを含み得る。別の例では、第１の組み込みアプリケーションは、チャット会話に参加しているユーザデバイスのサブセットによって表示される組み込みインタフェースにおいて共有コンテンツドキュメント（例えば、アイテムのリスト）を表示させる共有ドキュメントアプリケーションであってよく、組み込みインタフェースは、共有ドキュメントにおける１つまたは複数のアイテムを変更するユーザ入力を受信するように構成されており、提案応答アイテムは、共有ドキュメントを修正するように動作可能な１つまたは複数の提案コマンドを含む。
【０３４４】
さらなる例では、サーバデバイスは、既存の組み込みセッションに関連する組み込みアプリケーションを開始したチャットデバイスからネットワークを介して参加表示（または要求）を受信することができる。参加表示は、サーバデバイスによって、組み込みセッション中の他のチャットデバイス（メンバーデバイス）へネットワークを介して送信され、参加デバイスを組み込みセッションのメンバーデバイスと同期させる。
【０３４５】
本明細書に記載の方法、ブロック、および動作は、図示または説明したものとは異なる順序で実行することができ、および／または適切な場合には他のブロックまたは動作と（部分的または完全に）同時に実行することができる。いくつかのブロックまたは動作は、データのある部分に対して実行され、後で、例えば、データの別の部分に対して、再度実行されることができる。説明されたブロックおよび動作のすべてが様々な実装形態において実行される必要があるわけではない。いくつかの実装形態では、ブロックおよび動作は、異なる順序で、および／または方法の中で異なる時間に、複数回実行することができる。
【０３４６】
いくつかの実装形態では、いくつかの、またはすべての方法は、１つまたは複数のクライアントデバイスなどのシステム上に実装することができる。いくつかの実装形態では、本明細書で説明されている１つまたは複数の方法は、例えば、サーバシステム上、および／またはサーバシステムおよびクライアントシステムの両方の上に実装することができる。いくつかの実装形態では、１つまたは複数のサーバおよび／またはクライアントの異なる構成要素は、異なるブロック、動作、または方法の他の部分を実行することができる。
【０３４７】
様々な実装形態では、メッセージングアプリケーション、メッセージングアプリケーションに関連して実行されている組み込みアプリケーション、および／またはメッセージングアプリケーションと通信するサーバは、説明された方法の１つまたは複数のブロックを実行することができる。
【０３４８】
図８Ａ〜図８Ｅは、ユーザデバイス、例えばクライアントデバイスによって表示される例示的なユーザインタフェースのグラフィック表現である。これらの例では、メッセージングアプリケーションは、ユーザ間のチャット会話に使用され、組み込みメディアプレーヤアプリケーションは、メッセージングアプリケーションに関連して使用される。
【０３４９】
図８Ａにおいて、第１のメッセージングアプリケーションの第１のチャットインタフェース８００の一例が、第１のユーザ（例えば、「ＳａｒａｈＣ」）によって操作される第１のユーザデバイスに表示されている。この例では、第１のユーザおよび第１のデバイスの参加、ならびに１または複数の他のユーザおよびユーザデバイスの参加を含む、チャット会話「ＨａｎｇｉｎＯｕｔ」が開始されている。チャットユーザからチャット会話へのチャットメッセージは、それぞれのユーザデバイスで入力され、適用可能であれば第１のユーザデバイスに送信され、メッセージングアプリケーションによってチャットインタフェースに表示されることができる。例えば、第１のユーザからのチャットメッセージは、（例えば、物理的なキーボード、表示されたタッチスクリーンキーボード、音声入力などのような入力デバイスを介して）チャットインタフェース８００の入力フィールド８０２に入力され得る。チャットメッセージは、チャットインタフェース８００のメッセージ表示領域８０４に表示され得る。
【０３５０】
この例では、第１のユーザは、入力フィールド８０２にコマンドを入力しており、受信されたコマンドは、入力された後にチャットインタフェースにメッセージ８０６として表示される。このコマンドは、チャット会話に関連して表示されるべき組み込みインタフェースを指定する。この例では、組み込みインタフェースは、第１のデバイス上で実行されているビデオプレーヤ「ｖｉｄｐｌａｙ」である組み込みアプリケーションによって提供されている。このコマンドは、ビデオプレーヤアプリケーションで再生するメディアアイテム、ビデオセグメント「ＭｕｓｉｃＶｉｄＡ」も指定する。このコマンドは、ビデオの再生をチャットセッションにおいて組み込みセッションとして共有するための「共有」パラメータも有する。いくつかの実装形態では、メディアプレーヤアプリケーションは、チャット会話に関連する組み込みセッションにおいてその出力を共有することなく、組み込みインタフェースを表示するように選択され得る。いくつかの実装形態では、示されるコマンドを入力する代わりに、第１のユーザは、メディアアイテムを表示するメニューを閲覧して所望のメディアアイテムを選択することによって、または異なる方法でメディアアイテムを選択することによってメディアアイテムを再生することを選択できる。いくつかの実装形態では、第１のユーザは、メディアアイテムを選択せずに組み込みアプリケーションを実行し、その後、例えば組み込みインタフェースにおける組み込みアプリケーションのメニューを使用してメディアアイテムを選択することができる。
【０３５１】
コマンド８０６に応答して、応答メッセージ８０８は、例えば、あたかもボットまたはメッセージングアプリケーションがチャットユーザであるかのように、ボットまたはメッセージングアプリケーションによってチャットインタフェースに表示され得る。応答メッセージ８０８は、選択された組み込みビデオプレーヤアプリケーションが実行されていることを示す。いくつかの場合または実装形態では、組み込みアプリケーション（および／またはメディアアイテム）の選択により、組み込みアプリケーションがバックグラウンドで、例えば組み込みアプリケーションサーバから第１のデバイスに接続されたネットワークを介して第１のデバイスにダウンロードされる。
【０３５２】
組み込みアプリケーションは、第１のデバイス上で実行され、組み込みインタフェース８１０を表示する。この例では、組み込みインタフェース８１０は、チャットインタフェース８００内、例えばチャットインタフェースのメッセージ表示領域８０４内に表示される。いくつかの実装形態では、組み込みインタフェース８１０が、例えば、ネットワークを介して接続されたリモートセッションサーバまたは他のデバイス上で少なくとも部分的に実行されている組み込みアプリケーションから、ネットワークを介して第１のデバイスによって受信されたデータに基づいて表示される。この例では、メッセージ表示領域８０４が少なくとも部分的に表示されるように組み込みインタフェース８１０が表示され、例えば、メッセージ表示領域８０４において１つまたは複数のチャットメッセージを組み込みインタフェース８１０と同時に表示することを可能にする。
【０３５３】
組み込みインタフェース８１０は、メディアアイテム（例えば、ビデオデータ、画像データなど）のコンテンツデータを表示するための表示領域８１２と、第１のユーザがタイムラインに沿ってメディアアイテムの再生位置を変更するためのユーザ入力（例えば、制御を左または右に動かす）を提供できるようにするシーク制御８１４と、ユーザ入力が第１のデバイスの全画面（または他の表示領域）に組み込みインタフェース８１０を拡大することを可能にするフルスクリーン制御８１６とを含む。ユーザ識別子８１８は、チャットのどのユーザがインタフェース８１０に関連する組み込みセッションを開始したかを示すために表示され得る。ユーザ識別子８１８は、識別画像として示されているが、それに加えてまたはその代わりにテキスト（例えば名前）などであってもよい。リスト８２０は、表示領域８１２で現在再生中のメディアアイテムと、そのメディアアイテムが完了した後に再生するためにキューに入れられている他のメディアアイテムとを示すことができる。クローズ制御８２２は、ユーザ入力が組み込みインタフェース８１０を閉じて、例えば第１のデバイス上でそれがもはや実行されないように、組み込みアプリケーションを閉じることを可能にする。
【０３５４】
いくつかの実装形態では、１つまたは複数の組み込みアプリケーションインジケータ８２４が、チャットインタフェースに表示されて、どの組み込みセッションが現在アクティブであるかを示すことができる。いくつかの実装形態は、チャットインタフェースにインジケータを表示して、第１のユーザがその組み込みセッションのメンバーユーザであった最後の時点以来の組み込みセッションに対する更新（例えば、対応する組み込みインタフェースへのユーザ入力）を示すこともできる。例えば、そのようなインジケータは、組み込みアプリケーションインジケータ８２４に関連して（例えば、隣接または重なり合うように）表示されたインジケータ８２６であり得る。
【０３５５】
図８Ｂにおいて、第２のメッセージングアプリケーションの第２のチャットインタフェース８４０の一例が、第２のユーザ（例えば、「ＥｍｉｌｙＤ」）によって操作される第２のユーザデバイスに表示されている。この例では、第２のユーザは、図８Ａについて説明したように、第１のユーザと第１のデバイスとを含むチャット会話「ＨａｎｇｉｎＯｕｔ」の参加者である。チャットメッセージは、例えば、入力フィールド８４２および入力デバイス（例えば、スクリーンキーボードなど）を介して、チャットインタフェース８４０において第２のユーザによって入力され得る。この例では、第２のユーザは、チャットインタフェース８４０の表示領域８４８に表示されているチャット会話にメッセージ８４４を入力している。メッセージ８４４に応答して、第１のユーザは、チャットインタフェース８４０の表示領域８４８に表示されるように、チャット会話にメッセージ８４６を入力している。
【０３５６】
さらに、組み込みセッション通知８５０が、チャットインタフェース８４０に表示される。通知８５０は、組み込みセッションがアクティブであることを示し、これは、この例では、図８Ａの第１のユーザによって実行された組み込みビデオプレーヤアプリケーションを利用する。第２のデバイスがセッションサーバまたはチャットデバイスから組み込みセッションが開始されてアクティブであるという情報を受信した後に、通知８５０が、チャットインタフェース８４０に表示され得る。この例では、通知８５０は、チャットインタフェース８４０の表示領域８４８の下に表示されているか、または他の実装形態ではチャットインタフェース８４０の他の領域（またはチャットインタフェース８４０の外側）に表示され得る。
【０３５７】
この例では、通知８５０は、関連する共有組み込みセッションを開始するために図８Ａの第１のユーザによって実行された組み込みビデオプレーヤアプリケーションの記号表示８５２（例えば、アイコンまたはシンボル）を含む。通知８５０は、組み込みセッションで再生されているメディアアイテムの名前８５４も含む。通知８５０は、組み込みセッションに参加した、例えば現在組み込みセッションのメンバーユーザであるチャットユーザのリスト８５６も含む。通知８５０は、選択された場合に第２のユーザおよび第２のデバイスを組み込みセッションに参加させるためのユーザ入力を受け入れる参加制御８５８も含む。通知８５０は、通知８５０をチャットインタフェース８４０から削除させるためのユーザ入力を受け入れるクローズ制御８６０も含む。
【０３５８】
図８Ｃにおいて、図８Ｂのチャットインタフェース８４０が、図８Ｂの通知８５０に示されている組み込みセッションに参加することを第２のユーザが選択した後の例示的な更新と共に示されている。例えば、第２のユーザは、図８Ｂの参加制御８５８を選択したかもしれない。図８Ｃにおいて、組み込みインタフェース８７０が、チャットインタフェース８４０に表示されている。例えば、組み込みインタフェース８７０は、（場合によっては）ダウンロードされ、第２のユーザが組み込みセッションに参加したことに応答して第２のデバイスによって実行された第２の組み込みアプリケーションによって提供され得る。他の実装形態では、組み込みセッション８７０は、ネットワークを介して、例えばセッションサーバまたは他のデバイス上で少なくとも部分的に実行されている組み込みアプリケーションから受信されたデータに基づいて表示される。第２の組み込みアプリケーションは、図８Ａの第１のデバイス上に組み込みインタフェース８７０を提供するビデオプレーヤアプリケーションに対応する。この例では、メッセージ表示領域８４８が少なくとも部分的に表示されるように組み込みインタフェース８７０が表示され、例えば、メッセージ表示領域８４８において１つまたは複数のチャットメッセージを組み込みインタフェース８７０の表示中に表示することを可能にする。
【０３５９】
第２のユーザおよび第２のデバイスが組み込みセッションに参加した後、組み込みインタフェース８７０に表示されたメディアアイテムの再生位置は、例えば、図８Ａの第１のデバイスの組み込みインタフェース８１０に示されるように、組み込みセッションの現在の再生位置と同期される。従って、第２のユーザは、メディアアイテムの開始後の再生位置で再生中のメディアアイテムの視聴を開始し、組み込みセッションの他のメンバーユーザと視聴経験を共有する。組み込みインタフェース８７０は、組み込みインタフェース８１０と同様の特徴、例えば表示領域８７２、第２のユーザがタイムラインに沿ってメディアアイテムの再生位置を変更するためのユーザ入力を提供することを可能にするシーク制御８７４、フルスクリーン制御８７６、インタフェース８７０に関連する組み込みセッションを開始したユーザを示すユーザ識別子８７８、およびクローズ制御８８２を含む。リスト８８０は、表示領域８７２において現在再生中のメディアアイテム８８４と、メディアアイテム８８４を再生するように指示したユーザの識別子とを示す。この例では、リスト８８０は、メディアアイテム８８４が再生を完了した後に再生するためにキューに入れられている第２のメディアアイテム８８６も含み、メディアアイテム８８６を再生するように指示したユーザの識別子を含む。
【０３６０】
この例では、第２のユーザは、組み込みセッションにおける再生機能に対する制御を許可されており、第２のユーザは、シーク制御８７４を操作してメディアアイテムの現在の再生位置を、例えば現在の位置の前後の位置に変更することができる。そのような変更は、メディアアイテムの視聴がメンバーデバイス間で同期されるように、組み込みセッションのメンバーデバイスによって表示されるすべての組み込みインタフェースに課される。他の場合または実装形態では、第２のユーザは（例えば、組み込みセッションをアクティブにした第１のユーザから）許可または特権を与えられていないことがあり、メディアアイテムの再生位置を調整することができない。
【０３６１】
図８Ｄにおいて、図８Ｃのチャットインタフェース８４０は、第２のユーザがチャットインタフェースのチャット会話において新しいメッセージを入力することを選択した後の例示的な更新と共に示されている。例えば、第２のユーザは、組み込みインタフェース８７０においてメディアアイテムの再生中にチャットインタフェース８４０の入力フィールド８４２を選択した可能性がある。いくつかの実装形態では、これにより、表示キーボード８９０がチャットインタフェース８４０内またはその近くに（例えば、メッセージ表示領域８４８の少なくとも一部が依然として表示されるように）表示されるようにすることができ、テキスト８９２のような新たなメッセージを入力するのに用いられ得る。テキスト８９２は、テキスト８９２が入力されたときにチャットメッセージ８９４として表示されることが可能である（例えば、キーボード８９０のリターン制御を介して）。いくつかの実装形態は、最後のチャットメッセージ８４６に対する応答としてメッセージ提案８９６を提供することができ、それらのうちの任意のものが、ユーザ入力によって選択されて、選択されたメッセージ提案８９６を有するチャットメッセージが、メッセージ表示領域８４８において、チャット会話に提供され得る。
【０３６２】
いくつかの実装形態では、組み込みインタフェース８７０は、キーボード８９０とチャット会話のチャットメッセージの両方のための表示スペースを可能にするようにサイズ変更され得る。この例では、組み込みインタフェース８７０は、示されるようにサイズが縮小されている。チャットメッセージ８４６および新しいチャットメッセージ８９４は、組み込みインタフェース８７０と一緒に表示することができる。
【０３６３】
図８Ｅにおいて、チャットインタフェース８４０が、図８Ｃと同様に示されており、例示的なユーザコメントが、組み込みインタフェース８７０に表示され、再生中のメディアアイテムに関連付けられている。組み込みインタフェース８７０に表示されたメディアアイテムの現在の再生位置において、ユーザコメント８９７が表示される。様々な実装形態において、表示されたユーザコメント８９７は、コメントと、そのコメントを入力したユーザの識別とを含むことができる。
【０３６４】
いくつかの実装形態または場合では、ユーザコメント８９７の情報は、組み込みセッションでメディアアイテムを現在視聴しているメンバーユーザによって入力される。例えば、ユーザコメント８９７は、所定の時間の間、ユーザによって指示された組み込みインタフェースの表示領域内の位置に表示され、その後ディスプレイから削除され得る。場合によっては、ユーザコメント８９７は、チャットユーザが（例えば、進行中のチャットグループであり得る）チャット会話に参加している間の以前の機会に同じメディアアイテムを閲覧していた間に、チャットユーザによって以前に入力された可能性がある。例えば、メディアアイテムは、チャットユーザによってチャット会話における前の組み込みセッションで再生されていてもよく、チャットユーザは表示領域内の特定の再生位置および位置でユーザコメントを入力する。ユーザコメントは、チャット会話、メディアアイテム、および再生位置に関連して格納された。メディアアイテムが現在の組み込みセッションに表示されるとき、ユーザコメント８９７は、再生位置が、ユーザコメントが以前に入力されたのと同じ位置にある（またはその近く、例えば、閾値時間内にある）場合に表示される。
【０３６５】
いくつかの実装形態では、１つまたは複数の提案応答アイテム８９８は、チャットインタフェース８４０および／または組み込みインタフェース８７０に表示され得る。この例では、提案応答アイテム８９８は、組み込みインタフェースにおけるユーザコメント８９７の表示である検出された示唆イベントに応答して表示される。この例では、提案コマンドは、（例えば、機械学習モデルまたは他の技術によって生成されるように）組み込みアプリケーションによって決定され、チャットインタフェース８４０に表示するためにメッセージングアプリケーションに提供されている。提案コマンドは、実行されると、組み込みアプリケーションに、再生中のビデオについて格納されている次のユーザコメントまでメディアアイテムのビデオ再生をスキップさせるであろう。ユーザが提案されたコマンドを選択した場合、コマンドは、組み込みアプリケーションに送信され、組み込みインタフェース８７０での再生は、次のユーザコメントの再生位置に変更される。提案メッセージは、システム（例えば、サンプルユーザメッセージを同様のコメントに提供するトレーニングデータに基づく機械学習モデル）によって判定されるように、この例ではユーザコメント８９７に応答して判定されている。他の提案メッセージは、組み込みセッションにおける任意のメンバーユーザのアクション、チャットインタフェースにおける１つまたは複数のチャットメッセージなどに応答して判定され得る。ユーザが提案されたメッセージを選択する場合、そのメッセージは、チャットインタフェース８４０において、例えばメッセージ表示領域８４８においてチャットメッセージとして表示される。いくつかの実装形態では、選択された提案メッセージは、ユーザコメント８９７と同様のユーザコメントとしてメディアアイテムに追加され得る。例えば、選択されたメッセージは、デフォルト位置として既存のユーザコメント８９７に隣接する（例えば、下にある）組み込みインタフェース８７０および／または表示領域８７２内に配置され得る。いくつかの実装形態では、提案コマンドおよび／または提案メッセージなどの提案応答アイテムは、例えば図８Ｄに示されたメッセージ提案８９６と同様に、表示されるキーボードまたは他の入力制御に関連して表示され得る。
【０３６６】
図９Ａ〜図９Ｃは、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。これらの例では、メッセージングアプリケーションはユーザ間の会話に使用され、組み込みゲームアプリケーションは、メッセージングアプリケーションに関連して使用される。
【０３６７】
図９Ａにおいて、第１のメッセージングアプリケーションの第１のチャットインタフェース９００の一例が、第１のユーザ（例えば、「ＳａｒａｈＣ」）によって操作される第１のユーザデバイスに表示されている。この例では、図８Ａについて説明したのと同様に、第１のユーザおよび第１のデバイスの参加を含むチャット会話「ＨａｎｇｉｎＯｕｔ」が開始されている。第１のユーザからのチャットメッセージは、（例えば、入力デバイスまたは上記のキーボード８９０と同様のキーボードを使用して）チャットインタフェース９００の入力フィールド９０２に入力されることが可能であり、チャットメッセージは、チャットインタフェース９００のメッセージ表示領域９０４に表示され得る。
【０３６８】
この例では、第１のユーザは、以前に入力フィールド９０２にコマンドを入力し、受信されたコマンドは、入力後にチャットインタフェースにおいてメッセージ９０６として表示される。このコマンドは、チャット会話に関連して表示されるべき組み込みインタフェースを指定する。この例では、組み込みインタフェースは、いくつかの実装形態では第１のデバイス上で実行することができるゲーム「Ｔｏａｄｓ」である組み込みアプリケーションによって提供される。このコマンドは、ゲームをチャットセッションにおいて組み込みセッションとして共有するための「共有」パラメータも有する。いくつかの実装形態では、ゲームアプリケーションは、チャット会話に関連する組み込みセッションにおいてその出力を共有することなく、組み込みインタフェースを表示するように選択され得る。他の実装形態では、第１のユーザは、メニュー、リストなどから組み込みゲームアプリケーションを選択することによって、組み込みゲームアプリケーションを開始することを選択することができる。
【０３６９】
コマンド９０６に応答して、応答メッセージ９０８は、例えば、あたかもボットまたはメッセージングアプリケーションがチャットユーザであるかのように、ボットまたはメッセージングアプリケーションによってチャットインタフェースに表示され得る。応答メッセージ９０８は、選択された組み込みゲームアプリケーションが実行されていることを示す。いくつかの場合または実装形態では、組み込みゲームアプリケーションの選択により、組み込みゲームアプリケーションがバックグラウンドで、例えば組み込みアプリケーションサーバから第１のデバイスに接続されたネットワークを介して第１のデバイスにダウンロードされる。
【０３７０】
組み込みアプリケーション（またはその一部）が第１のデバイスに格納された後、組み込みアプリケーションは、組み込みインタフェース９１０を実行して表示する。この例では、メッセージ表示領域９０４の一部が表示されたままになるように、組み込みインタフェース９１０が、チャットインタフェース９００内、例えばチャットインタフェースのメッセージ表示領域９０４内に表示される。いくつかの実装形態では、組み込みインタフェース９１０が、例えば、ネットワークを介して接続されたリモートセッションサーバまたは他のデバイス上で実行されている組み込みアプリケーションから、ネットワークを介して第１のデバイスによって受信されたデータに基づいて表示される。
【０３７１】
組み込みインタフェース９１０は、ゲームの出力を表示するための表示領域９１２を含む。この例では、表示領域９１２は、ユーザ入力、例えばゲーム内のコマンドまたはアクションとしての表示領域内の位置の選択を受け入れることができる。フルスクリーン制御９１４は、ユーザ入力が組み込みインタフェース９１０を第１のデバイスのスクリーン全体（または他の表示領域）に拡大することを可能にする。ユーザ識別子９１６は、チャットインタフェースの第１のユーザをゲームのプレイヤーとして示すために表示され得る。いくつかの実装形態では、ゲームスコア９１８が、ユーザ識別子９１６の隣に（またはそうでなければそれに関連付けて）表示されて、識別されたユーザの現在のスコアを示すことができる。クローズ制御９２０は、ユーザ入力が組み込みインタフェース９１０を閉じて、例えば第１のデバイス上でそれがもはや実行されないように、組み込みゲームアプリケーションを閉じることを可能にする。
【０３７２】
いくつかの実装形態では、１つまたは複数の組み込みアプリケーションインジケータ９２４が、チャットインタフェースに表示されて、上で説明したのと同様に、どの組み込みセッションが現在アクティブであるかを示すことができる。
【０３７３】
図９Ｂにおいて、第２のメッセージングアプリケーションの第２のチャットインタフェース９４０の一例が、第２のユーザ（例えば、「ＥｍｉｌｙＤ」）によって操作される第２のユーザデバイスに表示されている。この例では、第２のユーザは、図９Ａについて説明したように、第１のユーザと第１のデバイスとを含むチャット会話「ＨａｎｇｉｎＯｕｔ」の参加者である。チャットメッセージは、例えば、入力フィールド９４２を介して、チャットインタフェース９４０において第２のユーザによって入力され得る。この例では、第２のユーザは、チャットインタフェース９４０のメッセージ表示領域９４８に表示されているチャット会話にメッセージ９４４を入力している。それに応答して、第１のユーザは、チャットインタフェース９４０の表示領域９４８に表示されるように、チャット会話にメッセージ９４６を入力している。
【０３７４】
組み込みセッション通知９５０が、チャットインタフェース９４０に表示される。通知９５０は、組み込みセッションが開始されたこと、および／またはアクティブであることを示し、これは、この例では、図９Ａの第１のユーザによって実行された組み込みゲームアプリケーションを利用する。第２のデバイスがセッションサーバまたはチャットデバイスから組み込みセッションが開始されてアクティブであるという情報を受信した後に、通知９５０が、チャットインタフェース９４０に表示され得る。通知９５０は、チャットインタフェース９４０の表示領域９４８または他の領域に、あるいは様々な実装形態においてチャットインタフェース９４０の外側に表示され得る。
【０３７５】
この例では、通知９５０は、関連する共有組み込みセッションを開始するために図９Ａの第１のユーザによって実行された組み込みゲームアプリケーションの記号表示９５２（例えば、アイコンまたはシンボル）を含む。通知９５０は、組み込みセッションに参加した（例えば、現在そのメンバーユーザである）チャットユーザのリスト９５６も含む。通知９５０は、選択された場合に第２のユーザおよび第２のデバイスを組み込みセッションに参加させるためのユーザ入力を受け入れる参加制御９５８も含む。通知９５０は、通知９５０をチャットインタフェース９４０から削除させるためのユーザ入力を受け入れるクローズ制御９６０も含む。
【０３７６】
図９Ｃにおいて、図９Ｂのチャットインタフェース９４０が、例えば図９Ｂの参加制御９５８を選択することによって、図９Ｂの通知９５０に示されている組み込みセッションに参加することを第２のユーザが選択した後の例示的な更新と共に示されている。図９Ｃにおいて、メッセージ表示領域９４８の一部（および１つまたは複数のチャットメッセージ）が表示されたままであるように、組み込みインタフェース９７０が、チャットインタフェース９４０に表示されている。例えば、組み込みインタフェース９７０は、（場合によっては）ダウンロードされ、第２のユーザが組み込みセッションに参加したことに応答して第２のデバイスによって実行された組み込みゲームアプリケーションによって提供され得る。他の実装形態では、組み込みセッション９７０は、例えばセッションサーバまたは他のデバイス上で実行されている組み込みアプリケーションからネットワークを介して受信されたデータに基づいて表示される。組み込みゲームアプリケーションは、図９Ａの第１のデバイス上に組み込みインタフェース９１０を提供する組み込みゲームアプリケーションに対応する。
【０３７７】
第２のユーザおよび第２のデバイスが組み込みセッションに参加した後、組み込みインタフェース９７０のゲーム状態は、対応する組み込みゲームアプリケーション上で実行されているような組み込みセッションの現在のゲーム状態と同期される。いくつかの実装形態では、セッションサーバまたは他のサーバは、メンバーデバイスからゲーム状態を継続的に受信し、メンバーデバイスに同期の更新を送信することによって、ゲーム中にメンバーデバイス上のゲーム状態を同期させることができる。いくつかの実装形態は、メンバーデバイス間にピアツーピア同期を提供することができる。
【０３７８】
組み込みインタフェース９７０は、図９Ａの組み込みインタフェース９１０と同様の特徴を含み、ゲームの出力を表示するための表示領域９７２を含み、ユーザ入力を受け入れることができる、フルスクリーン制御９７４は、ユーザ入力が組み込みインタフェース９７０を第１のデバイスのスクリーン全体（または他の表示領域）に拡大することを可能にする。クローズ制御９７６は、ユーザ入力が組み込みインタフェース９７０を閉じて、例えば第２のデバイス上でそれがもはや実行されないように、組み込みゲームアプリケーションを閉じることを可能にする。ユーザ識別子９７８は、チャットインタフェース９４０の第２のユーザをゲームのプレイヤーとして示すために表示され得る。いくつかの実装形態では、ゲームスコア９８０は、ユーザ識別子９７８の隣に表示されて、ユーザの現在のスコアを示すことができる。この例では、他のユーザ識別子９８２および関連するゲームスコア９８４が表示されて、組み込みゲームセッションに参加している他のプレイヤーユーザ、および共有されたゲームにおける彼らの現在のスコアを示す。いくつかの実装形態では、ゲームにおいてオブザーバーのロールまたはレフェリーのロールを有するメンバーユーザが、表示され、かつプレイヤーのロールを有するユーザと表示において視覚的に区別され得る。
【０３７９】
いくつかの実装形態では、組み込みセッションで提供されるゲームは、ゲーム状態を変更するためにプレイヤーユーザがいつでもゲームにユーザ入力（例えば、ゲームアクション）を提供することができるリアルタイムゲームであってよく、組み込みゲームアプリケーションは、例えば、それ自体のイベントに基づいて、および／またはユーザ入力に応答して、リアルタイムで連続的に出力を提供し得る。いくつかの実装形態は、非同期またはターンベースの組み込みゲームアプリケーションを提供することができ、例えば、ゲームは、１人のプレイヤー（または複数のプレイヤー）からの入力を待ってゲーム状態および／または出力を変更し、ゲームは次の入力を同じまたは異なるプレイヤーから待つなどする。ゲーム出力は、オブザーバーユーザの組み込みインタフェースに表示され、オブザーバーユーザがゲームに提供することができる入力は、より制限されており、例えば、ゲーム状態に影響を及ぼさない。
【０３８０】
ゲームからの出力は、組み込みインタフェース９７０に表示され得、および／またはチャットインタフェース９４０のメッセージ表示領域９４８に表示されるメッセージとして表示され得る。例えば、ゲームオブジェクトからのメッセージは、図６に関して上述したようにメッセージ表示領域９４８においてチャットメッセージとして表示され得る。
【０３８１】
いくつかの実装形態では、１つまたは複数の組み込みアプリケーションインジケータ９８６が、チャットインタフェースに表示されて、上で説明したのと同様に、どの組み込みセッションが現在アクティブであるかを示すことができる。
【０３８２】
図１０Ａ〜図１０Ｄは、ユーザデバイスによって表示される追加の例示的なユーザインタフェースのグラフィック表現である。これらの例では、メッセージングアプリケーションは、ユーザ間のチャット会話に使用され、組み込みアプリケーションは、アイテムの共有リストの形式で共有コンテンツドキュメントを提供するために使用される。
【０３８３】
図１０Ａにおいて、メッセージングアプリケーションのチャットインタフェース１０００の一例が、第１のユーザ（例えば、「ＥｍｉｌｙＤ」）によって操作される第１のユーザデバイスに表示されている。この例では、図８Ａおよび図９Ａについて説明したのと同様に、第１のユーザおよび第１のデバイスの参加を含むチャット会話「ＨａｎｇｉｎＯｕｔ」が開始されている。第１のユーザからのチャットメッセージは、チャットインタフェース１０００の入力フィールド１００２に入力されることが可能であり、チャットメッセージは、チャットインタフェース１０００のメッセージ表示領域１００４に表示され得る。
【０３８４】
この例では、第１のユーザとは異なる３人のチャットユーザから入力され、表示領域１００４に表示されるメッセージ１００６によって示されるように、複数のチャットユーザが、チャット会話にメッセージを入力している。チャットメッセージ１００８は、第１のユーザによって入力され、表示領域１００４においてチャットインタフェースに表示されている。この例では、他のユーザからのチャットメッセージは、グラフィカルユーザ識別子によって識別され、第１のユーザによって入力されたチャットメッセージは、表示画面上に右揃えで表示されている。
【０３８５】
組み込みセッション通知１０２０が、チャットインタフェース１０００に表示され得る。通知１０２０は、図８および図９に関して上述した通知８５８および９５８と同様に、組み込みセッションがアクティブであることを示す。この例では、通知１０２０は、ユーザ「Ｐａｍｅｌａ」が、実行する組み込みリストアプリケーションを選択し、組み込みリストアプリケーションによって提供されたリストを共有することを選択することによって、組み込みセッションを開始した後に表示される。第１のデバイスがセッションサーバまたはチャットデバイスから組み込みセッションが開始されてアクティブであるという情報を受信した後に、通知１０２０が、チャットインタフェース１０００に表示され得る。通知１０２０は、チャットインタフェース１０００の表示領域１００４または他の領域に、あるいは様々な実装形態においてチャットインタフェース１０００の外側に表示され得る。
【０３８６】
この例では、通知１０２０は、組み込みセッションで使用される組み込みリストアプリケーションを識別する記号表示１０２４（例えば、アイコンまたはシンボル）を含む。通知１０２０は、組み込みセッションで提供されたリストに現在あるユーザ応答アイテムの量１０２６も含む。通知１０２０は、組み込みセッションに参加した（例えば、現在そのメンバーユーザである）チャットユーザのリスト１０２８も含む。通知１０２０は、選択された場合に第１のユーザが組み込みセッションに参加することを可能にする参加制御１０３０と、選択された場合に通知１０２０をチャットインタフェース１０００から削除させるクローズ制御１０３２とをも含む。
【０３８７】
図１０Ａの例などのいくつかの実装形態では、ユーザが組み込みセッションを開始したことを示すために、通知１０２２が、チャットインタフェース、例えば表示領域１００４に表示され得る。通知１０２２は、この例ではリスト内のアイテムの数など、メンバーユーザによって提供または選択された組み込みセッションにおいて提供されたデータの記述を含み得る。
【０３８８】
図１０Ｂにおいて、図１０Ａのチャットインタフェース１０００が、図１０Ａの通知１０２０に示されている組み込みセッションに参加することを第１のユーザが選択した後の例示的な更新と共に示されている。例えば、第１のユーザは、図１０Ａの参加制御１０３０を選択したかもしれない。図１０Ｂにおいて、メッセージ表示領域１００４の一部（および１つまたは複数のチャットメッセージ）が表示されたままであるように、組み込みインタフェース１０４０が、チャットインタフェース１０００に表示されている。例えば、組み込みインタフェース１０４０は、上記と同様に、（場合によっては）ダウンロードされ、第１のユーザが組み込みセッションに参加したことに応答して第１のデバイスによって実行された組み込みアプリケーションによって提供され得る。他の実装形態では、組み込みセッション１０４０は、例えばセッションサーバまたは他のデバイス上で実行されている組み込みアプリケーションからネットワークを介して受信されたデータに基づいて表示される。組み込みアプリケーションは、図１０Ａの通知１０２０に示される組み込みセッションを作成するためにユーザＰａｍｅｌａによって開始された同じリストアプリケーションである。
【０３８９】
この例では、組み込みインタフェース１０４０は、ここではデフォルトでチャット会話名に基づく共有リストの名前１０４２を含む。組み込みインタフェース１０４０は、アイテム１０４４をリストに表示し、アイテム１０４４は、メンバーユーザの入力によって選択されて、アイテムが完了したかまたはもはや関連性がなくなったことを示すことができる。追加制御１０４６は、ユーザ入力が新しいアイテムをリストに追加し、テキストを入力してその新しいアイテムに名前を付けることを可能にする。完了したアイテム１０４８は、完了または達成されたと見なされるようにユーザ入力によって選択されたという視覚的表示と共に表示され得る。クローズ制御１０５０も提供され得る。特定のアイテムをリストに提供したメンバーユーザの表示またはリストなどの他の特徴は、さまざまな実装形態で表示され得る。
【０３９０】
組み込みインタフェース１０４０に表示されるアイテムのリストは、各メンバーデバイスがリスト内の同じアイテムおよびアイテムのステータスを表示するように、すべてのメンバーデバイスの組み込みインタフェースと同期される。いくつかの実装形態では、１人または複数のメンバーユーザは、例えば組み込みセッションを開始したメンバーユーザによって、オブザーバーステータスを割り当てられ得、オブザーバーユーザはリストを変更できない。
【０３９１】
図１０Ｃにおいて、図１０Ｂのチャットインタフェース１０００は、第１のユーザがチャットインタフェースのチャット会話において新しいメッセージを入力することを選択した後の例示的な更新と共に示されている。例えば、第１のユーザは、チャットインタフェース１０００の入力フィールド１００２を選択したかもしれない。いくつかの実装形態では、これによって、表示キーボード１０６０がチャットインタフェース１０００内またはその隣に表示され、これを使用して新しいメッセージを入力することができる。いくつかの実装形態は、１つまたは複数のチャットメッセージ、例えば最後のチャットメッセージ１０６４などに応答するまたはそれに関連する選択可能要素としてメッセージ提案１０６２を提供することができる。図８Ｄと同様に、いくつかの実装形態は、図１０Ｃの例に示すように組み込みインタフェース１０４０のサイズを変更して（例えば、組み込みインタフェースのサイズを縮小して）、チャットインタフェース１０００の表示領域１００４において、キーボード１０６０およびチャット会話のチャットメッセージの両方のための表示スペースを可能にすることができ、その結果、キーボード１０６０、組み込みインタフェース１０４０、および表示領域１００４の一部が同時に表示される。
【０３９２】
図１０Ｄにおいて、図１０Ｂのチャットインタフェース１０００は、第１のユーザが組み込みインタフェースおよび組み込みアプリケーションへの入力を提供することを選択した後の例示的な更新と共に示されている。例えば、第１のユーザは、図１０Ｂの組み込みインタフェース１０４０の追加制御１０４６を、例えばタッチスクリーン入力または別のポインティング入力デバイスからの入力を使用して選択した可能性があり、またはキーボードからのテキスト入力を受け付けることができる組み込みインタフェースにおける異なるオプションを選択した可能性がある。他の場合では、ユーザは、組み込みインタフェースにおいて制御を選択したかもしれない。いくつかの実装形態では、組み込みインタフェースへのこのユーザ入力は、表示キーボード１０７０をチャットインタフェース１０００内またはその近傍に表示させることができ、キーボード１０７０は、テキスト（文字、絵文字、記号などを含む）を入力するために用いられ得る。例えば、第１のユーザは、キーボード１０７０を使用して、リストに追加されたアイテムについてのテキスト名またはフレーズを入力することができる。
【０３９３】
いくつかの実装形態は、例えば、組み込みインタフェースにおけるユーザ入力によって選択されたインタフェース要素に基づいて、および／または組み込みアプリケーションのイベントに基づいて、組み込みインタフェースに対する提案された入力として、１つまたは複数の提案１０７２を提供し得る。この例では、提案１０７２は、追加制御１０４６の選択に基づいて判定された。例えば、組み込みアプリケーション（および／またはリストアイテムを送信された後のメッセージングアプリケーションまたは提案サーバ）は、既存のリストアイテムを調べて、既存のアイテムに関連する新しい提案リストアイテムを決定することができる。例えば、格納されたナレッジベースまたはデータベース（例えば、関連コンセプトの階層的グラフ）を調べて、リスト内の単語に関連する単語を見つけることができる。
【０３９４】
いくつかの実装形態では、図１０Ｄに示されるように、キーボード１０７０が表示されて、組み込みインタフェース１０４０への入力を可能にしている間、組み込みインタフェース１０４０は、示されるようにその通常のサイズに維持され得る（または図１０Ｃの小さいサイズの組み込みインタフェース１０４０よりも大きいサイズで表示され得る）。チャットメッセージを表示する表示領域１００４は、示されるように、キーボード１０７０が表示されて組み込みインタフェース１０４０への入力を可能にしている間、チャットインタフェース１０００から削除され得る。
【０３９５】
いくつかの実装形態は、組み込みインタフェースへの入力のためにキーボード１０７０と同様のキーボードを表示することができ、および／または他のタイプの組み込みアプリケーション、例えば、他の実装形態について本明細書で説明されているような、メディアプレーヤ、ゲーム、ドキュメント処理アプリケーションなどのために提案１０７２と同様の組み込みインタフェースに入力されるべき提案を表示することができる。
【０３９６】
ボット実装の例
ボットは、１つまたは複数のコンピュータ上で実装され、ユーザが主にテキストを通じて、例えばメッセージングアプリケーション１０３ａ／１０３ｂを介して対話する自動化されたサービスである。ボットは、ボットが様々なメッセージングアプリケーションのユーザと対話できるように、ボットプロバイダによって実装され得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダは、１つまたは複数のボットを提供することもある。いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダによって提供されるボットは、ボットが他のメッセージングアプリケーションに含まれることができるように、例えば他のプロバイダによって提供されるように構成され得る。いくつかの実装形態では、１つまたは複数のボットは、組み込みアプリケーションによって提供され、生成され、および／またはそれに含められることができる。
【０３９７】
ボットは他のモードに比べていくつかの利点を提供することが可能である。例えば、ボットは、クライアントデバイスにアプリケーションをインストールしたり、ウェブサイトにアクセスしたりすることなく、ユーザが新しいサービス（例えば、タクシー予約サービス、レストラン予約サービスなど）を試すことを許可することができる。さらに、ユーザは、テキストを介してボットと対話することができ、これは、ウェブサイト、ソフトウェアアプリケーション、例えば、対話式音声応答（ＩＶＲ）サービスに対する電話通話、またはサービスとやり取りする他の方法の使用を学習するのと比較して、最小限の学習しか必要とせず、または全く学習を必要としない。メッセージングサービスまたはアプリケーションにボットを組み込むことで、ユーザは、メッセージングサービス内で旅行の計画、買い物、イベントのスケジュール、情報の取得などのさまざまなタスクを他のユーザと協力することも可能となり、タスクを実行するためのさまざまなアプリケーション（例えば、タクシー予約アプリケーション、レストラン予約アプリケーション、カレンダーアプリケーションなど）間またはＷｅｂサイト間での切り替えのような面倒な操作を排除することができる。
【０３９８】
ボットは、メッセージングアプリケーション１０３ａ／１０３ｂを介して１または複数のユーザ（例えば、ユーザ１２５ａ−ｎのいずれか）と対話して情報を提供するか、またはメッセージングアプリケーション１０３内で特定の動作を実行するように構成されたコンピュータプログラムまたはアプリケーション（例えば、ソフトウェアアプリケーション）として実装されてもよい。一例として、情報検索ボットは、インターネット上の情報を検索し、メッセージングアプリ内で最も関連性の高い検索結果を提示することができる。別の例として、トラベルボットは、例えば、メッセージングアプリ内で旅行およびホテルのチケットの購入を可能にし、メッセージングアプリ内でホテルを予約し、メッセージングアプリ内でレンタカーを予約することなどによって、メッセージングアプリケーション１０３を介して旅行手配をする能力を有し得る。別の例として、タクシーボットは、別個のタクシー予約アプリを起動することも呼び出すこともせずに、例えば、（ユーザ１２５が位置情報へのアクセスを許可する場合にクライアントデバイス１１５からタクシーボットによって取得される）ユーザの位置にタクシーを呼び出す能力を有し得る。別の例として、コーチ／チューターボットは、ユーザを個人指導して、例えば、試験に出題される可能性のある問題を質問し、ユーザの回答が正しいか、または誤りであるかどうかについてのフィードバックを提供することによって、メッセージングアプリケーション内でいくつかの科目の内容についてユーザを指導し得る。別の例として、ゲームボットは、メッセージングアプリ内においてユーザとは反対サイドまたは同じサイドでゲームをプレイすることができる。別の例として、商用ボットは、例えば、業者のカタログから製品情報を取得してメッセージングアプリケーションを介して購入を可能にすることによって、特定の業者からのサービスを提供し得る。別の例として、インタフェースボットは、メッセージングアプリのユーザが遠隔デバイスまたは車両とチャットし、そこから情報を検索し、および／または遠隔デバイスまたは車両に命令を提供できるように遠隔デバイスまたは車両とインタフェースしてもよい。
【０３９９】
ボットの能力は、ユーザの意図を理解し、それを実行することを含み得る。ユーザの意図は、ユーザの会話およびその文脈を分析し理解することによって理解され得る。ボットは、会話の変化するコンテキスト、または時間の経過とともに進化する会話に基づくユーザの変化する感情および／または意図を理解することもできる。例えば、ユーザＡがコーヒーミーティングを提案しているが、ユーザＢがコーヒーを好きではないと言った場合、ボットは、ユーザＢに対してコーヒーについて否定的な感情スコアを割り当て、かつミーティングに関してコーヒーショップを提案しないことが可能である。
【０４００】
メッセージングアプリケーション１０３ａ／１０３ｂのユーザと通信することができるボットを実施することによって、多くの利点が提供され得る。従来、ユーザは、ソフトウェアアプリケーションまたはウェブサイトを利用して、請求書の支払い、料理の注文、チケットの予約などの活動を行い得る。そのような実施に関する問題は、複数の活動を実行するために、ユーザが複数のソフトウェアアプリケーションやウェブサイトをインストールまたは使用することを要求されることである。例えば、ユーザは、（例えば、公益事業会社からの）公共料金の請求書に対する支払いをするため、映画のチケットを購入するため（例えば、チケットサービスプロバイダからのチケット予約アプリケーション）、（例えばそれぞれのレストランから）レストランの予約をするために、異なるソフトウェアアプリケーションをインストールしなければならない場合があり、または各活動のためにそれぞれのウェブサイトを訪問する必要があり得る。そのような実施に関する別の問題は、ユーザが複雑なユーザインタフェース、例えばウィンドウ、ボタン、チェックボックス、ダイアログボックスなどのような複数のユーザインタフェース要素を使用して実装されたユーザインタフェースなどを学習しなくてはならないことである。
【０４０１】
従って、１つまたは複数の説明した実装形態の利点は、単一のアプリケーションが、別個のウェブサイトにアクセスすること、またはソフトウェアアプリケーションをインストールおよび実行する必要なく、任意の数のパーティとの対話を含む活動をユーザが実行できることであり、このことは、クライアントデバイス上のメモリ、ストレージ、および処理リソースの消費を低減するという技術的効果がある。説明された実装形態の利点は、会話型インタフェースにより、ユーザが、例えば複雑なユーザインタフェースを学習する必要なしに、そのような活動を完了することをより簡単かつ迅速とすることであり、これは計算リソースの消費を低減するという技術的効果を有する。説明した実装形態の別の利点は、ボットを実施することにより、様々な参加エンティティがより低コストでユーザ対話を提供することが可能になり、１つまたは複数の通信サーバを使用して実施される料金不要の電話番号サービス、１つまたは複数のウェブサーバ上でホストされるウェブサイト、電子メールサーバ上でホストされる顧客サポート電子メールなどのユーザ対話を可能にするために配備される計算リソースの必要性を低減するという技術的効果がある。記載した特徴の別の技術的効果は、通信ネットワークを介してユーザタスクを完了するために用いられるシステム処理リソースおよび送信リソースの消費という問題を軽減するということである。
【０４０２】
本明細書における特定の例は、ボットと１または複数のユーザとの間の対話を説明しているが、ボットとユーザ１２５との間の１対１の対話、ボットと２以上のユーザとの間の（例えば、グループメッセージングの会話における）１対多の対話、複数のボットとユーザとの間の多対１の対話、および複数のボットと複数のユーザとの間の多対多の対話などの様々なタイプの対話が可能である。さらに、いくつかの実装形態では、ボットは、メッセージングアプリケーション１０３を介して、ボット間の直接通信を介して、または組み合わせにより、他のボット（例えば、ボット１０７ａ／１０７ｂ、１０９ａ／１０９ｂ、１１１、１１３など）と対話するようにも構成され得る。例えば、レストラン予約ボットは、テーブルを予約するために特定のレストランのボットと対話することができる。
【０４０３】
特定の実施形態では、ボットは、チャットインタフェースのような、会話型インタフェースを使用して自然言語を使用してユーザと会話形式で対話することができる。いくつかの実施形態では、ボットは、例えばレストランの住所の要求に応じて、「レストランＲの位置はＬである」などのテンプレートを使用するなど、テンプレートベースのフォーマットを使用して、ユーザと対話するための文章を作成することができる。場合によっては、例えばボットがユーザと対話するために自然言語を使用するかどうか、ボットがテンプレートベースの対話を使用するかどうかなど、ユーザが、ボット対話フォーマットを選択できるようにすることが可能であり得る。
【０４０４】
ボットが自然言語を使用して会話的に対話する場合、ボットの対話の内容および／またはスタイルは、自然言語処理を使用して判定される会話の内容、会話中のユーザの識別情報、１つまたは複数の会話コンテキスト（例えば、ユーザの対話に関する履歴情報、ソーシャルグラフに基づく会話内のユーザ間の関係）、外部条件（例えば、天気、交通）、ユーザのスケジュール、ユーザに関連する関連コンテキストなどのうちの一つまたは複数に基づいて動的に変化し得る。このような場合、ボットの対話の内容とスタイルは、会話に参加しているユーザが同意した要素のみに基づいて異なる。
【０４０５】
一例として、会話のユーザがフォーマルな言葉を使用していると判定された場合（例えば、俗語や絵文字がない、または最小限の俗語または絵文字）、ボットもフォーマルな言葉を使用してその会話内で対話することができ、逆もまた同様である。別の例として、会話中のユーザが（現在および／または過去の会話に基づいて）絵文字のヘビーユーザであると判定された場合、ボットは、１つまたは複数の絵文字を使用してそのユーザと対話することもできる。別の例として、会話中の２人のユーザがソーシャルグラフ内で遠い関係であると判定された場合（例えば、彼らの間に２人以上の中間ノードを有する、例えば、彼らが友達の友達の友達であることを示す）、ボットはその会話でよりフォーマルな言葉を使用し得る。会話に参加しているユーザが、ユーザのソーシャルグラフ、スケジュール、場所、またはユーザに関連するその他のコンテキストなどの要素をボットが利用することに同意していない場合、ボットの対話の内容およびスタイルは、このような要素を利用する必要がないデフォルトスタイル、例えばニュートラルスタイルであり得る。
【０４０６】
さらに、いくつかの実装形態において、１つまたは複数のボットが、ユーザとの前後の会話に参加する機能を含み得る。例えば、「＠ムービーボット（ｍｏｖｉｅｂｏｔ）、映画を推薦してもらえますか？」と入力することによりユーザが映画についての情報を要求する場合、ボット「ムービーボット」は、「あなたはコメディが良いですか？」と応答し得る。次に、ユーザは、例えば「いいえ」と応答する場合があり、これに対し、ボットは、「了解しました。「宇宙と星」というタイトルのＳＦ映画は素晴らしい評価を得ています。チケットを予約しましょうか？」と応答し得る。続いて、ユーザは、「はい、午後６時以降に行くことができます。スティーブが参加できるかどうか確認してください。」と指示し得る。ユーザの連絡先に関する情報にボットがアクセスすることに対する同意、およびボットからのメッセージの受信することに対する友人スティーブの同意があると、ボットはユーザの友人のスティーブにメッセージを送信し、適切な時間に映画のチケットを予約するさらなるアクションを実行し得る。
【０４０７】
特定の実施形態では、チャット会話に参加するユーザは、例えば、ボット名またはボットハンドル（例えば、タクシー、＠タクシーボット（ｔａｘｉｂｏｔ）、＠ムービーズ（ｍｏｖｉｅｓ）など）をタイプすること、音声コマンド（例えば、「銀行ボットを呼び出して」など）を使用すること、ユーザインタフェース要素（例えば、ボタンまたはボット名またはボットハンドルでラベル付けされた他の要素）をアクティブ化することなどによって、特定のボットまたは特定のタスクを実行するボットを呼び出すことが可能であり得る。ボットが呼び出されると、ユーザ１２５は、他のユーザ１２５にメッセージを送信するのと同様の方法で、メッセージングアプリケーション１０３ａ／１０３ｂを介してボットにメッセージを送信することができる。例えば、タクシーを配車するために、ユーザは、「＠タクシーボットタクシーを呼んで」とタイプし得、ホテル予約をするために、ユーザは「＠ホテルボット近くの中華料理のレストランで４人分のテーブルを予約して」とタイプし得る。
【０４０８】
特定の実施形態では、ボットは、具体的に呼び出されることなく、チャット会話内で情報またはアクションを自動的に提案することができる。即ち、ユーザはボットを特に起動する必要がないことがあり得る。これらの実施形態において、ボットは、チャット会話の継続的な、または別個の時点での分析および理解に依存し得る。チャット会話の分析は、特定のユーザのニーズを理解し、かつボットによって支援が提案されるべき時期を特定するために使用され得る。一例として、ユーザが情報を必要とすると判定した場合（例えば、ユーザが別のユーザに質問をすることに基づいて、複数のユーザがある情報を有してないことを示していることに基づいて）、ボットは、ある情報を検索し、回答を提案し得る。別の例として、複数のユーザが中華料理を食べることに興味を表明したと判定された場合、ボットは自動的にユーザの近くにある一連の中華レストランを提案してもよく、これは、レストランの場所、評価、ウェブサイトへのリンクなどの任意の情報の提案を含む。
【０４０９】
特定の実施形態では、ボットを自動的に呼び出したり、またはユーザがボットを明示的に呼び出すのを待ったりするのではなく、自動的な提案がメッセージング会話中の一または複数のユーザに対し行われて、１つまたは複数のボットを呼び出すことができる。これらの実施形態では、チャット会話は、継続的にまたは別々の時点で分析されてもよく、会話の分析は、特定のユーザのニーズを理解し、かつ会話内でボットが提案すべき時期を識別するために使用され得る。
【０４１０】
ボットが具体的に呼び出されることなく、チャット会話内において情報またはアクションを自動的に提案することができる実施形態では、例えば、チャット会話に参加している１または複数のユーザが、ユーザの会話の分析をボットが実施することについて同意しない場合、そのような機能は無効にされる。さらに、そのような機能は、ユーザ入力に基づいて一時的に無効にされ得る。例えば、チャット会話がプライベートであることをユーザが示したとき、会話コンテキストの分析は、ユーザがボットをアクティブにするための入力を提供するまで一時停止される。さらに、分析機能が無効化されているという表示を、例えばユーザインタフェース要素を用いて、チャット会話の参加者に提供することができる。
【０４１１】
様々な実装形態において、ボットは、様々な構成で実装され得る。例えば、図１に示すように、ボット１０５は、クライアントデバイス１１５ａ上で実施される。この例では、ボットは、クライアントデバイス１１５ａに対してローカルなソフトウェアアプリケーション内のモジュールであり得る。例えば、ユーザがタクシー配車アプリケーションをクライアントデバイス１１５ａ上にインストールした場合、ボット機能は、タクシー配車アプリケーションにおけるモジュールとして組み込まれ得る。この例では、ユーザは、例えば、「＠タクシーボット  タクシーを呼んで」というメッセージを送信することによってタクシーボットを呼び出し得る。メッセージングアプリケーション１０３ｂは、タクシー配車アプリケーションにおけるボットモジュールを自動的に起動させることができる。このようにして、ユーザがメッセージングアプリケーション１０３を介してボットと会話することができるように、ボットは、クライアントデバイス上でローカルに実施され得る。
【０４１２】
図１に示す別の例では、ボット１０７ａがクライアントデバイス１１５ａで実施されるように示され、ボット１０７ｂがメッセージングサーバ１０１上で実施されるように示されている。この例では、ボットは、例えば、ボット機能の一部がボット１０７ａ（サーバモジュール）およびボット１０７ｂ（クライアントモジュール）の各々によって提供される、クライアント−サーバコンピュータプログラムとして実装され得る。例えば、ボットが、ハンドル＠カレンダーを有するスケジューリングボットである場合、ユーザ１２５ａは、「＠カレンダー夕方に洗濯物を受け取ることをリマインドして」とタイプすることにより、リマインダをスケジューリングすることができ、これはボット１０７ｂ（クライアントモジュール）によって処理され得る。この例を続けると、ユーザ１２５ａがボットに「ジムが４時に会えるか確認して」と伝えると、ボット１０７ａ（サーバモジュール）は、ユーザのジム（または、ジムのスケジューリングボット）とコンタクトをとってメッセージを交換して、ユーザ１２５ａに応答を提供し得る。
【０４１３】
別の例では、ボット１０９ａ（サーバモジュール）がサーバ１３５上で実施され、ボット１０９ｂ（クライアントモジュール）がクライアントデバイス１１５上で実施される。この例では、ボット機能は、クライアントデバイス１１５、およびメッセージングサーバ１０１とは異なるサーバ１３５上に実装されたモジュールによって提供される。いくつかの実装形態において、ボットは、例えば、複数のクライアントデバイスおよびサーバ（例えば、クライアントデバイス１１５、サーバ１３５、メッセージングサーバ１０１など）にわたって分散されたモジュールを有する分散アプリケーションとして実施されてもよい。いくつかの実装形態では、ボットは、サーバアプリケーションとして実装されることができ、それは、例えば、メッセージングサーバ１０１上に実装されるボット１１１、およびサーバ１３５上に実装されるボット１１３である。
【０４１４】
クライアントのみ、サーバのみ、クライアント−サーバ、分散などのような異なる実装形態は、異なる利点を提供し得る。例えば、クライアントのみの実装形態では、例えば、ネットワークアクセスなしで、ボット機能をローカルに提供することができ、このことは、例えば、ユーザがネットワークのカバレッジエリア外にある場合、またはネットワーク帯域幅が狭いか、または制限されている任意のエリア内にある場合など、特定の状況で有利となり得る。サーバのみ、クライアント−サーバ、または分散構成などの１つまたは複数のサーバを含む実装形態は、クライアントデバイス上でローカルに提供することができない特定の機能、例えば金融取引、チケット予約などを可能にし得る。
【０４１５】
図１では、ボットをメッセージングアプリケーション１０３とは異なるものとして示しているが、いくつかの実装形態では、１つまたは複数のボットは、メッセージングアプリケーション１０３の一部として実装され得る。ボットがメッセージングアプリケーション１０３の一部として実装される実装形態では、ボットを実行する前にユーザの許可が取得される。例えば、ボットがメッセージングアプリケーション１０３ａ／１０３ｂの一部として実施される場合、メッセージングアプリケーション１０３ａ／１０３ｂは、特定の活動を実行することができるボット、例えば、受信メッセージと発信メッセージを翻訳する翻訳ボット、イベントをユーザのカレンダーにスケジューリングするスケジューリングボットなどを提供し得る。この例では、翻訳ボットは、ユーザの特定の許可がある場合にのみ有効化される。ユーザが同意しない場合、メッセージングアプリケーション１０３ａ／１０３ｂ内のボットは実装されない（例えば、無効化、削除など）。ユーザが同意する場合、ボットまたはメッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３ａ／１０３ｂを介してユーザ間で交換されるメッセージを限定的に使用して、特定の機能、例えば、翻訳、スケジューリングなどを提供することができる。
【０４１６】
いくつかの実装形態において、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダおよびユーザ１２５とは異なるサードパーティが、特定の目的のためにメッセージングアプリケーション１０３ａ／１０３ｂによりユーザ１２５と通信することができるボットを提供し得る。例えば、タクシーサービスプロバイダはタクシーボットを提供し、発券サービスはイベントチケットを予約できるボットを提供し、銀行ボットは金融取引を実行する機能を提供することができる。
【０４１７】
メッセージングアプリケーション１０３を介してボットを実施する際、ボットは、特定のユーザ許可があった場合にのみユーザと通信することを許可される。例えば、ユーザがボットを起動する場合、ボットは、例えばボットを起動するユーザのアクションに基づいて返信することができる。別の例では、ユーザは、ユーザとコンタクトし得る特定のボットまたはボットのタイプを示し得る。例えば、ユーザは、トラベルボットが自分と通信することを許可するが、ショッピングボットに対しては認証を与えないようにしてもよい。この例では、メッセージングアプリケーション１０３ａ／１０３ｂは、トラベルボットがユーザとメッセージを交換することを許可するが、ショッピングボットからのメッセージをフィルタリングまたは拒否し得る。
【０４１８】
さらに、いくつかの機能（例えば、タクシーの呼び出し、フライト予約の作成、友人への連絡など）を提供するために、ボットが場所、支払情報、連絡先リストなどのユーザデータにアクセスすることをユーザが許可するようボットが要求し得る。そのような場合、ユーザには、ボットへアクセスを許可または拒否するオプションが提示される。ユーザがアクセスを拒否した場合、ボットは、例えば「申し訳ありませんが、タクシーを予約できません」というメッセージで応答し得る。さらに、ユーザは、限定されたやり方で情報へのアクセスを提供することができ、例えば、ユーザは、ボットの特定の起動時にのみタクシーボットが現在位置にアクセスすることを許可し、他の場合は許可しないことができる。異なる実装形態では、ユーザは、ボットがアクセスできる情報のタイプ、数量、および粒度を制御することができ、いつでもそのような許可を変更する能力を（例えば、ユーザインタフェースにより）備える。いくつかの実装形態では、ボットがそのようなデータにアクセスすることができるようになる前に、例えば、個人を識別可能な情報を削除するなど、情報を特定のデータ要素に制限するためにユーザデータが処理され得る。さらに、ユーザは、メッセージングアプリケーション１０３ａ／１０３ｂおよび１つまたは複数のボットによるユーザデータの使用を制御することができる。例えば、ユーザは、金融取引を行う能力を提供するボットが、取引完了前にユーザ認証を必要とすることを指定することができ、例えば、ボットは、「映画「宇宙と星」のチケットは各１２ドルです。このまま予約しますか？」というメッセージ、または「このシャツの最安値は送料込みで１２５ドルです。あなたの下４桁１２３４のクレジットカードに請求しますか？」というメッセージを送信し得る。
【０４１９】
いくつかの実装形態では、上記のシステムによって生成された１つまたは複数の提案応答アイテムは、ボットを起動または命令、例えば、ボットに情報を要求するために使用されるメッセージであり得る。例えば、システムは、受信された画像が、ボットによって提供される情報および／または１つまたは複数の機能によって支援されることになるコンテンツを含むかどうかを判定することができる。いくつかの例では、会話中の第１のユーザは、「ｇｕｅｓｓｗｈｅｒｅ？（どこだと思う？）」というテキストメッセージを第２のユーザに送信することができる。次に、第１のユーザは画像を第２のユーザのデバイスに送信する。システムは、提案応答が画像コンテンツに関連する情報を見つけるための要求であり得ることを、単語「ｇｕｅｓｓ（だと思う）」を含むフレーズが示していると判定することができる。（「ｗｈｅｒｅ（どこ）」、「ｗｈａｔ（何）」などの他の単語もそのような要求を示し得る。）応答として、システムは、関連情報を提供することができる適切なボットへの要求またはコマンドである提案応答を生成することができる。例えば、提案応答は、画像内に描かれた場所の名前を提供するためのマッピングボットへの要求であり得る（例えば、ボットがウェブ検索、地図および地図帳、受信された画像の地理的位置メタデータ等を使用してそのような情報を判定し得る場合）。いくつかの実装形態では、トレーニングメッセージデータが、（例えば、もしユーザの同意が得られているならば、１つまたは複数の画像検出または認識技術を使用して）画像内で検出された特定の種類の画像コンテンツについて適切な種類のボットを判定するために使用されることができ（ユーザの同意が得られている場合）、および／またはルールベースの文法が、画像コンテンツの種類および／または画像コンテンツで検出された概念に基づいて、提案応答においてどの種類のボットを呼び出すべきかを判定することが可能である。
【０４２０】
いくつかの実装形態では、ボット関連の提案アイテムが可能な応答としてユーザに対し表示され、ユーザがその提案を選択する場合、ボットがチャット会話およびメッセージングインタフェースに追加され、例えばボット名で表されることが可能である。ボットは、会話において要求された情報を判定し、例えば、チャットインタフェースにおいて第１のユーザおよび第２のユーザの両方へのメッセージとして、その要求された情報を出力することができる。
【０４２１】
別の例では、第１のユーザは、第２のユーザにとって外国語であるテキストを描く画像をチャット会話または組み込みアプリケーションに入力する。システムは、適切な提案アイテムが、画像内のテキストを翻訳すること、およびチャットインタフェースまたは組み込みインタフェースにおいて翻訳されたテキストを出力するための言語ボットへの要求であると判定することができる。
【０４２２】
別の例では、第１のユーザは、食品を描写する画像をチャット会話に入力する。システムは、適切な提案応答が、１つまたは複数のアクセス可能なデータソース（例えばインターネット上）をチェックして、典型的にまたは具体的にその食品に含まれる成分および／またはカロリーを判定し、その情報をメッセージ会話インタフェースに出力するためのボットへの要求であると判定することができる。
【０４２３】
本明細書に記載の実装形態は、一般にメッセージングアプリケーションに関する。特定の実装形態は、１つまたは複数のチャット会話の画像コンテンツおよび／またはユーザ情報を（例えば、ユーザの介入なしに）自動的に分析して、メッセージングアプリケーション内でユーザに対し提案アイテムを自動的に提供し得る。いくつかの例では、自動的に提案されたアイテムは、組み込みアプリケーションまたはメッセージングアプリケーションにおいて応答するためにユーザによって選択されてもよく、および／またはユーザに代わって１つまたは複数の適切な応答として自動的に提供されてもよい。他の特定の例では、提案は、特定の非メッセージング機能をメッセージングアプリケーションに自動的に組み込むことができる。
【０４２４】
提案アイテムは、チャット会話で受信される任意の種類のメディアコンテンツに基づいて提供されてもよい。例えば、そのようなメディアコンテンツは、（例えば、チャットアプリケーションにおける）ステッカー、アニメ画像（例えば、シネマグラフ、ＧＩＦ画像など）、およびビデオを含み得る。さらに、様々な種類のアイテムが提案され得る。例えば、提案メッセージは、画像、ステッカー、アニメ画像（例えば、シネマグラフ、ＧＩＦ画像など）およびビデオのうちの１つまたは複数を含み得る。これらの提案を提供するために、受信されたアイテム（例えば、テキスト、画像、ビデオ、ステッカー、アニメ画像など）における識別された概念と、異なるタイプの応答における概念との比較を行い、適切な応答を選択することができる。ユーザが同意を提供する異なる実装形態では、提案されるアイテムの種類は、コンテキストに基づいて選択または優先順位付けされてもよく、例えば、ステッカーは、ゲームにおける特定のアクションのための提案アイテムとして提供されてもよく、第２のビデオは、再生中のビデオのための提案アイテムとして提供されてもよい。
【０４２５】
ある実装形態は、人間のユーザおよび／またはチャットボットとのメッセージングを可能にする。ある実装形態では、自動的に提案されたアイテムは、チャットボットがチャット会話に参加しているか否かに基づいてカスタマイズされてもよい。いくつかの例では、チャットボットがメッセージング会話中に存在しない場合、第１セットの自動提案アイテムが提供され得、チャットボットがチャット会話中に存在する場合、第２セットの自動提案アイテムが提供され得、第１セットおよび第２セットの提案アイテムは、少なくとも部分的に異なる。例えば、これらの実装形態は、チャットボットの従う会話ルールを採用し、そのルールに基づいてアイテムをユーザに提案することができる。これにより、チャットボットにより容易に理解される言語および形式でチャットボットと通信する際にユーザが抱える課題を軽減できる。
【０４２６】
いくつかの実装形態は、ユーザの場所に関連する地域、市場、および国のうちの少なくとも１つにおける他のメッセージに基づいて１つまたは複数のトレンディング応答（例えば、多くの異なるユーザによって送信される人気のメッセージコンテンツを含むメッセージ）を判定することを含み得る。１つまたは複数の判定された提案アイテムは、１つまたは複数のトレンディング応答を含み得る。いくつかの実装形態では、ユーザコンテキスト、例えば地理的位置、休日、またはイベントなどが、提示のために提案アイテムのうちの１つまたは複数を生成および判定するために用いられ得る。
【０４２７】
いくつかの実装形態では、１つまたは複数の提案応答アイテムを判定することは、機械学習を使用してユーザのためのパーソナライズされたモデルを開発することに基づいてもよい。提案アイテムを判定することは、ユーザのプリファレンスおよび／または通信中のユーザの前の動作に基づくことができる（そのような動作およびデータの使用についてのユーザの同意が得られた場合）。例えば、ユーザプリファレンスは、含めることができる特定の単語を示すホワイトリスト、および／またはメッセージの提案に含めることができない特定の単語を示すブラックリストを含むことができる。ユーザの同意が得られた場合、提案されるアイテムは、前の機会にユーザによって提供された句読点の使用、絵文字の使用、または他のコンテンツのうちの１つまたは複数に基づいて生成または修正され得る。
【０４２８】
提案アイテムを提供するために使用される機械学習モデルは、クライアントデバイス１１５および／またはサーバ、例えばメッセージングサーバ１０１および／またはサーバ１５０〜１５６によって実装され得る。いくつかの実装形態では、チャット会話の参加者のクライアントデバイスだけが会話コンテンツにアクセスできるように、チャット会話を暗号化することができる。これらの実装形態では、それぞれのクライアントデバイスによって実装されたモデルが、提案応答アイテムを提供するために使用されることが可能であり、サーバによって実装されたモデルは使用されない。例えば、ユーザがサーバによって実装されるモデルの使用について同意を与えない場合、クライアントデバイスによって実装されるモデルが使用されてもよい。いくつかの実装形態では、クライアント実装モデルは、サーバ実装モデルに基づくかまたはそれから導出され得る。いくつかの実装形態では、例えば、クライアントデバイスがクライアントモデルを実装する能力を欠いている場合、サーバモデルが使用され得、クライアントモデルは使用されない可能性がある。いくつかの実装形態では、クライアントモデルおよびサーバモデルの組み合わせが使用され得る。
【０４２９】
この文書に記載されている例は英語で示されている概念を利用しているが、提案は、任意の言語、例えばクライアントデバイス１１５に対して構成された言語、ロケール、または他の地理的情報、ユーザプリファレンスに基づいて選択された言語などで提供され得る。ユーザがチャット会話のコンテキストの分析について同意を提供するいくつかの実装形態では、ユーザを含む（例えば、最近のメッセージにおける）様々な会話で使用された言語が検出されることが可能であり、メッセージの提案がその言語で提供され得る。
【０４３０】
ボットおよび組み込みアプリケーションのさらなる例
いくつかの実装形態では、上述のボットは、ユーザデバイス上で実施された１つまたは複数のチャット会話における組み込みアプリケーションの使用と併せてユーザによって使用され得る。
【０４３１】
いくつかのボット実装形態では、他の人間のユーザがチャット会話に参加することなく、ユーザはボットとチャット会話に参加することができる。例えば、アシスタントボットは、ユーザデバイス上で実行されるローカルプログラムによって提供されてもよく、またはサーバ（例えば、サーバアプリケーションプログラム）によって提供されてもよい。いくつかの例では、ユーザが第１のチャット会話においてボットコマンドを入力すること（例えば、コマンドチャットメッセージ）、チャットインタフェースにおいてボットアクティベーション制御を選択することなどに応答して、ユーザおよび１つまたは複数のボットを含む新しいボットチャット会話が開かれ得る。ボットチャット会話では、ユーザは、ボットによって処理され得るメッセージとして情報（例えば、質問、コマンド、ステートメント）を入力することができ、ボットは、それらのメッセージに基づいてコマンドまたはデータを組み込みアプリケーションに送信することができる。例えば、ボットは、特定の組み込みセッションへの参加、メディアアイテムの再生、ゲームのプレイ、共有リストの作成などのために、ユーザからボットへのチャットインタフェースにおけるコマンドに基づいてチャットインタフェースに関連する適切な組み込みアプリケーションを開始することができる。いくつかの実装形態では、ボットは、例えば、チャットインタフェースにおけるユーザ入力からボットに提供されたコマンドに基づいて、例えば、提案応答アイテムが関連性を有する組み込みアプリケーションおよび組み込みセッションの実行と同時に、本明細書に記載の提案応答アイテムを決定し、提示することができる。いくつかの実装形態では、ボットは、本明細書で説明するように、組み込みアプリケーションで発生するイベントに関連する情報を受信し、組み込みセッションにおけるイベントを記述するインタラクティブカードを生成して表示させることができる。
【０４３２】
いくつかの例では、メディアプレーヤ機能を有するボットとのチャット会話において、ユーザは、チャットインタフェースまたは会話に質問を入力することができ、ボットは、ボットチャット会話に関連して、または異なるチャット会話（例えば、他の人間のチャットユーザを含むチャット会話）に関連して表示される組み込みインタフェースにおいて特定のメディアアイテムを再生するメディアプレーヤ組み込みアプリケーションを開始できる。例えば、異なるチャット会話に関連して再生される場合、ボットチャット会話は、ディスプレイから隠されることが可能であり、異なるチャット会話が、チャットインタフェースに関連して表示される組み込みインタフェースと共に、チャットインタフェースに表示され得る。
【０４３３】
例えば、本明細書の実装形態に記載されるように、組み込みアプリケーションがメディアアイテムを再生することができる例では、メディアプレーヤボットは、ユーザによるチャット会話において呼び出され得る。例えば、ボットは、チャットメッセージと同様にチャットインタフェースにコマンドを入力し、コマンドシンタックス（例えば、コマンドの前の記号）を含めることにより、または異なるタイプの選択を入力すること（例えば、表示されたインタフェース要素を選択すること）により、呼び出され得る。メディアプレーヤボットは、組み込みアプリケーションによって再生されるかまたは再生可能なメディアアイテムに関するユーザからのクエリをサポートすることができる。
【０４３４】
いくつかの実装形態では、メディアプレーヤボットを使用して、ユーザおよび／または他のチャットユーザによってアクセス可能なストレージに保存されている、および／またはチャット会話で投稿されたコンテンツアイテムへのリンクを有する、格納されたメディアアイテムまたは他のタイプのコンテンツアイテムを検索することができる。いくつかの例では、ボットに対するクエリは、チャットメッセージとしてチャットインタフェースに入力され得る。例えば、検索クエリは、「＠メディアプレイ  猫  ビデオ」として提供されて、メディアプレーヤボットに、格納されたメディアアイテムのコレクションにおいて猫のビデオを検索させることができる。メディアアイテムの特定のタイトルも、問い合わせることができる。いくつかの実装形態では、会話型検索が提供され得る。例えば、検索クエリは、「ゲームショーの最新のエピソードを表示して」、「最も人気のあるゲームショーのビデオを再生して」、「おすすめの５本のビデオを表示して」、「毎日、新しい猫のビデオを送って」などとして入力され得る。いくつかの実装形態では、推薦されるメディアアイテムは、（ユーザの同意を得て）以前のユーザの視聴およびプリファレンスを追跡し、ユーザのためにメディアアイテムをランク付けしたコンテンツサーバによって提供され得る。
【０４３５】
いくつかの実装形態は、組み込みアプリケーションで使用されるべき他のデータアイテムまたはコンテンツアイテムの検索に使用される検索クエリを形成するユーザ入力を受信するための１つまたは複数のボットを提供することができる。例えば、そのようなアイテムは、共有リストに追加されるべきアイテム、旅行日程表で使用されるべき特定のタイムゾーンの時間、予約のためのレストランの名前などを含み得る。ボットは、データベース、サーバ、またはユーザデバイス上およびネットワーク経由でアクセス可能な他のリソース上でそのようなアイテムを検索できる。検索クエリに応答してボットによって見つけられたアイテムは、ユーザによる選択のためにチャットインタフェースに提示されることができ、またはボットによって関連する組み込みアプリケーションに自動的に提供されることができる（および、いくつかの実装形態において、組み込みアプリケーションがまだ実行されていない場合、ボットは、組み込みアプリケーションを開始することができる）。組み込みアプリケーションに提供されたアイテムは、必要に応じて組み込みインタフェースに表示され得る。
【０４３６】
いくつかの実装形態では、上述のように、組み込みセッションにおけるメディアアイテムの再生は、特定のユーザの後のために保存されて、そのユーザが後で、例えば新しい組み込みセッションにおいて、そのメディアアイテムを再生できるようにする。いくつかの実装形態では、そのような保存されたメディアアイテムは、チャットユーザから同意が得られた場合、ゲームまたは他のユーザの記録（例えば、キャプチャされたビデオデータ、スクリーンキャプチャ画像など）、およびチャットユーザとの１つまたは複数の組み込みセッションで発生したアプリケーションアクティビティ／イベントを含み得る。
【０４３７】
いくつかの実装形態では、メディアアイテムは、専用の別個のチャット会話においてユーザのために保存され得る。例えば、ユーザは、チャット会話において、特定のメディアアイテムを保存するためのユーザ入力を提供することができる。それに応答して、ユーザに関連付けられている第２のチャット会話が識別され、ボットがメディアアイテムに関連付けられる。メディアアイテムは、第２のチャット会話に挿入され、以前に保存されたメディアアイテムも、第２のチャット会話にリストされる。メッセージングアプリケーションは、例えば選択されたメディアアイテムを再生するために、メディアアイテムに関連するユーザからの入力を受信し得る。それに応答して、第１のチャット会話は、組み込みアプリケーションを使用して、選択されたメディアアイテムを再生することによって更新される。
【０４３８】
いくつかの追加の例では、保存制御が、メディアプレーヤ組み込みセッションがアクティブであることを示す通知において、またはチャット会話内に表示されたメディアアイテムリンクに関連して、提供され得る。例えば、ユーザが、メディアプレーヤ組み込みセッションがアクティブであるという通知を受信した場合（またはチャットインタフェースにおいてメディアアイテムへのリンクを見た場合）、ユーザは保存制御を選択し得る。この選択は、ユーザおよびボットだけが参加している第２のチャット会話（例えば、メディア選択チャット会話）を表示させることができる。組み込みセッションにおけるメディアアイテムへのリンクは、メディア選択チャット会話において表示され得る。さらに、以前の組み込みセッションから保存された任意のメディアアイテムは、以前のメッセージとしてメディア選択チャット会話に含めることができる。従って、ユーザは、メディア選択チャット会話を開いて、ユーザに関連する保存されたメディアアイテムを選択して再生することができる。いくつかの実装形態では、例えば単一のコレクションからのメディアアイテムの視聴および再生を可能にするために、ユーザのメディアアイテムをメディア選択チャット会話に自動的に挿入するためのオプションが提供され得る。
【０４３９】
いくつかの実装形態では、システム（例えばボット）は、組み込みセッションで共有されていたメディアアイテムと同様であると判定された追加のメディアアイテムについてチャットインタフェースにおいて選択を提供する。例えば、追加のメディアアイテムは、同じジャンルを有することができ、同じアーティストによって作成され、または同じアーティストを特集することができる。
【０４４０】
いくつかの実装形態では、選択された場合、組み込みインタフェースで再生されているメディアアイテムを、異なるチャット会話と共有されるようにするか、または選択された共有アクションに対して作成された新しいチャット会話と共有する共有オプションが提供され得る。例えば、共有オプションを表示させるために、ユーザは、共有オプションを表示させるために閾値時間にわたってメディアアイテムを再生している組み込みインタフェースに触れることができ、または特定の表示されたインタフェース要素を選択することができる。
【０４４１】
いくつかの実装形態では、ユーザは、メディアアイテムを再生している組み込みセッションに関連するチャット会話にコメントを入力することを可能にするためにコメント制御を選択することができる。いくつかの実装形態では、メディアアイテムを再生するためのリンクが、チャット会話に投稿され、その後にユーザによって入力されたユーザコメントが続く。別のチャット会話（例えば、上述のメディア選択チャット会話）で視聴された保存済みメディアアイテムを視聴している間にコメント制御が選択された場合、選択されたコメント制御は、元のチャット会話を開いて表示させることができ、メディアアイテムが組み込みセッションにおいて再生されていた元のチャット会話において人がコメントすることを可能にする。
【０４４２】
いくつかの実装形態では、本明細書で説明されているような提案応答が、ボットと共に使用され得る。例えば、提案応答の選択は、組み込みアプリケーション、メッセージングアプリケーション、または他のプログラムもしくはデバイスにおいて１つまたは複数のアクションを実行するためにその提案応答に関連するボットをトリガし得る。いくつかの例では、ボットは、組み込みアプリケーションを開かずに組み込みアプリケーションコンテンツに対してアクションを実行することができる。例えば、組み込みアプリケーションは、ユーザがチャットインタフェースにおいて組み込みアプリケーションにコマンドを提供することを可能にし（例えば、ボットにコマンドを提供することによって）、ユーザが組み込みインタフェースを介して視覚的に組み込みアプリケーションと対話することを可能にする。組み込みアプリケーションがサーバコンポーネント（例えば、ゲーム状態がサーバによって管理されるゲーム）を有するかまたはそれと通信するいくつかの例では、チャットメッセージを介してボットに命令し、組み込みアプリケーションおよび組み込みインタフェースにおいてアクションを実行することは、他のメンバーデバイスによって表示される組み込みインタフェースにおいてもアクションを実行させる。別の例では、共有リスト組み込みアプリケーションは、リストデータをサーバに格納させる。第１のユーザは、共有リスト組み込みアプリケーションを開いて、リストにアイテムを追加するか、リストからアイテムを削除する。他のユーザのデバイスは、チャットインタフェースを使用して組み込みアプリケーションへのボットコマンドを介してリストにアイテムを追加するための提案応答を表示し得る。例えば、提案される応答は、「パーティーのために飲み物を買うことを忘れないでください」などのチャットメッセージに応答することができ（例えば、「今夜のパーティー」リストに「飲み物を買う」を加える提案応答）、または「今夜のパーティーのためにソーダを買ったばかりです」などのチャットメッセージに応答することができる（例えば、「今夜のパーティー」リストから「ソーダを買う」を削除する提案コマンド）。いくつかの実装形態では、これらの例示的な提案応答は、関連するユーザによって選択されると、ボットを呼び出して、コマンドを組み込みアプリケーションに送信することができ、例えばコマンドを組み込みインタフェースに提供しない。いくつかの実装形態では、組み込みインタフェースに加えて（チャットインタフェースを介して）ボットインタフェースを提供することの利点は、ビジュアルインタフェースをデバイス上に表示する必要がないため、デバイス処理、メモリ、およびスクリーンスペースリソースを節約し、組み込みアプリケーションによって管理されているコンテンツデータとの迅速なユーザ対話を可能にすることである。
【０４４３】
図１１は、いくつかの実装形態による、組み込みアプリケーションの開始およびユーザの組み込みセッションへの参加を含む例示的なシーケンスの概略図である。この例では、第１のユーザ１１０２（「ユーザ１」）は、第１のチャットインタフェースを表示するメッセージングアプリケーション１１０４を実行する第１のユーザデバイスを操作している。第２のユーザ１１０６（「ユーザ２」）は、第２のチャットインタフェースを表示する第２のメッセージングアプリケーション１１０８を実行する第２のユーザデバイスを操作している。ユーザ１１０２および１１０６（およびそれらのデバイス）が参加しているチャット会話が、メッセージングアプリケーション１１０４および１１０８の間でネットワークを介して提供され、ユーザは、参加しているユーザデバイスによって表示されるべきそれぞれのチャットインタフェースにメッセージを入力している。
【０４４４】
１１１０において、ユーザ１１０２は、ユーザ入力をメッセージングアプリケーション１１０４に提供することによって、組み込みアプリケーション１１１４を開くことを選択する。１１１４において、第１のメッセージングアプリケーション１１０４は、選択された組み込みアプリケーション１１１２を起動する。いくつかの実装形態では、第１の組み込みアプリケーション１１１２は、サーバ、例えば組み込みアプリケーションサーバ１５０（図示せず）からダウンロードされる。１１１６において、開始された第１の組み込みアプリケーション１１１２は、組み込みインタフェースを第１のユーザデバイスによって、例えば第１のチャットインタフェース内に、またはそれに隣接して、またはそうでなければ関連して表示させ、これは、第１のユーザ１１０２によって閲覧される。
【０４４５】
組み込みアプリケーションを起動することに加えて、１１１８において、第１のメッセージングアプリケーションは、第１の組み込みアプリケーション１１１２の開始に基づいて開始イベント（または第１のユーザの参加イベント）を示す情報を、ネットワークを介して送信する。この例では、１１１８におけるイベントが、メッセージルータ１１２０に送信される。メッセージルータ１１２０は、様々な例では、セッションサーバ１５２（例えば、メッセージングサーバ１０１に含まれる）または他のサーバであり得る。いくつかの実装形態では、組み込みセッションは、開始イベントに応答してメッセージルータにおいて作成されることが可能であり、または第１のユーザデバイスによって作成されることなどが可能である。メッセージルータ１１２０は、第２のユーザデバイス上で動作している第２のメッセージングアプリケーション１１０８に、１１１８において参加イベントを送信する。１１２２において、第２のメッセージングアプリケーション１１０８は、例えば、第２のチャットインタフェースにおいて、第２のユーザによって閲覧されるべき通知を第２のユーザデバイスによって表示させ、これは、第１のユーザ１１０２が組み込みセッションを開始したことを示す。この例では、通知は、第２のユーザが組み込みセッションに参加することを選択するために表示された参加オプション（例えば、インタフェース要素）を含む。
【０４４６】
１１２４において、第２のユーザ１１０６は、表示された参加オプションを選択して、組み込みセッションに参加し、この選択は、第２のメッセージングアプリケーション１１０８に提供される。参加選択に応答して、１１２６において、第２のメッセージングアプリケーション１１０８は、第２のユーザデバイス上で第２の組み込みアプリケーション１１２８を開始させる（例えば、いくつかの実装形態ではダウンロードされる）。１１３０において、第２の組み込みアプリケーションは、第２のユーザデバイス上に第２の組み込みインタフェースを表示させる。第２の組み込みアプリケーションを開始することに加えて、１１３２において、第２のメッセージングアプリケーション１１０８は、１１２４での参加選択に応答して、第２のユーザの参加イベントを示す情報を、ネットワークを介して組み込みセッションに送信する。この例では、参加イベント１１３２は、メッセージルータ１１２０に送信される。
【０４４７】
参加イベント１１３２は、メッセージルータ１１２０によってネットワークを介して第１のユーザデバイス上の第１のメッセージングアプリケーション１１０４に送信される。それに応答して、１１２２において、第１のメッセージングアプリケーション１１０４は、第２のユーザが組み込みセッションに参加するためにメンバーの更新を第１の組み込みアプリケーション１１１２に送信する。例えば、メンバー更新は、本明細書で説明されるように、第２のユーザが参加したことを示すデータ、第２のユーザのチャット識別情報、第２のユーザの選択されたユーザステータスなどを含むことができる。メンバーの更新に応答して、第１の組み込みアプリケーション１１１２は、第１のユーザ１１０２によって閲覧されるように、１１３６において、第１の組み込みインタフェースの表示を更新する。例えば、第２のユーザのチャット識別情報（または他のユーザ識別情報）が、組み込みインタフェースに表示され得る。
【０４４８】
システム、方法、および格納されたソフトウェア命令を有する非一時的コンピュータ可読媒体の様々な例示的実装形態では、組み込みアプリケーションが、メッセージングアプリケーションに関連して提供される。第１の組み込みアプリケーションは、第１のユーザデバイス上で少なくとも部分的に実行される第１のメッセージングアプリケーションによって表示される第１のチャットインタフェースと関連して開始され得る。第１のチャットインタフェースは、第１のユーザから第１のユーザ入力を受信し、ネットワークを介してチャット会話に参加している１つまたは複数の他のユーザデバイスから発せられたメッセージを表示するように構成されている。１つまたは複数の他のユーザデバイスは、１つまたは複数のチャットユーザと関連付けられており、チャットユーザはそれぞれのチャット識別情報と関連付けられている。他のユーザデバイスのうちの１つまたは複数の特定のユーザデバイスが第１の組み込みアプリケーションに関連する組み込みセッションに接続したことを示す表示が、ネットワークを介して受信される。その表示に応答して、１つまたは複数のチャット識別情報が、第１のメッセージングアプリケーションから第１の組み込みアプリケーションへ提供され、それらは特定のユーザデバイスの１または複数の特定のチャットユーザに関連している。特定のチャットユーザは、組み込みセッションの１または複数のメンバーユーザとして指定され、第１の組み込みアプリケーションは、組み込みセッションの特定のユーザデバイスのうちの少なくとも１つのから受信されたデータに基づいて更新される。
【０４４９】
さらなる例では、第１の組み込みアプリケーションは、第１のチャットインタフェースの一部として表示される組み込みインタフェースへの第１のユーザからの第１のユーザ入力を受信し、第１のユーザ入力は、組み込みインタフェースにおけるインタフェース要素の選択を含む。第１の組み込みアプリケーションは、第１のユーザ入力に応答して更新される。いくつかの例では、組み込みセッションの特定のユーザデバイスの各々は、それぞれの特定のユーザデバイス上で表示されるそれぞれのチャットインタフェースに関連するそれぞれの組み込みインタフェースを提供するそれぞれの組み込みアプリケーションを実行し、第１の組み込みアプリケーションは、組み込みセッションの特定のユーザデバイスのうちの少なくとも１つから受信されるデータに基づいて更新される。データは、組み込みセッションの１または複数のメンバーユーザのうちの少なくとも１人からそれぞれの組み込みインタフェースのうちの少なくとも１つによって受信された他のユーザ入力を含むことができる。出力データは、第１の組み込みアプリケーションから取得されて第１のチャットインタフェースに表示されるようにすることができ、出力データを受信することに応答して、プロンプトが第１のユーザデバイスによって表示され、プロンプトは、チャットインタフェースにおいて出力データの表示に同意するためのユーザ選択可能な制御を含む。１つまたは複数のチャット識別情報を第１の組み込みアプリケーションに提供する前に、チャット識別情報の１つまたは複数が匿名化されて、匿名化されたチャット識別情報を作成することができ、その結果、匿名化されたチャット識別情報が、第１の組み込みアプリケーションに提供される。
【０４５０】
さらなる例では、情報が、チャット会話に参加している他のユーザデバイスに送信され、それによって他のユーザデバイスによるインタフェース要素の表示が引き起こされ、このインタフェース要素は、他のユーザデバイスの各々における選択的なユーザ入力を受け入れることができ、特定のユーザデバイス上でのインタフェース要素において選択的なユーザ入力を受信することに応答して、特定のユーザデバイスを組み込みセッションのメンバーデバイスとして指定する。１つまたは複数の特定のユーザデバイスの１つまたは複数の特性が決定され、第１の組み込みアプリケーションに提供されることが可能であり、特性は、特定のユーザデバイスのうちの少なくとも１つの地理的位置、特定のユーザデバイスのうちの少なくとも１つの現地時間、および／または特定のユーザデバイスのうちの少なくとも１つについてのネットワーク上の利用可能なデータ帯域幅を含み、特性は、第１の組み込みアプリケーションによって使用されて、特定のユーザデバイスによって表示されるべき出力情報を決定し、および／またはネットワークを介した１つまたは複数の他のデバイスから第１のユーザデバイスへの入力データの送信の修正を引き起こす。表示（ｉｎｄｉｃａｔｉｏｎ）は、組み込みセッションを管理するサーバから受信することができ、第１の組み込みアプリケーションへの更新は、サーバから受信することができ、更新は、特定のチャットユーザからの他のユーザ入力に基づいており、他のユーザ入力は、サーバへ提供される。
【０４５１】
さらなる例では、１つまたは複数の他のユーザデバイスのそれぞれのチャットインタフェースに表示されるべき通知が出力され、その通知は、特定のユーザデバイスが組み込みセッションのメンバーデバイスであることを示す。いくつかの実装形態では、通知は、組み込みセッションで発生する１つまたは複数の特定のタイプのイベントに応答してチャット会話へ出力され、イベントは、第１の組み込みアプリケーションで発生するイベントを含み、メディアアイテムの再生の開始、メディアアイテムの再生の停止、第１のユーザ入力および／または他のユーザ入力に基づくメディアアイテムの再生の変更、組み込みセッションのゲームにおいて発生するゲームイベント、第１のユーザ入力および／または他のユーザ入力に基づくゲームへの更新、および／または第１のユーザ入力および／または他のユーザ入力に基づく共有コンテンツドキュメントへの更新を含む。いくつかの実装形態では、サーバ上で１つまたは複数のイベントが発生したことを示すサーバイベント情報を受信し、そのサーバイベント情報を第１の組み込みアプリケーションに提供して第１のユーザデバイス上で表示することに応答して、通知がチャット会話に出力される。
【０４５２】
さらなる例では、組み込みセッションにおける示唆イベントは、第１のチャットインタフェースにおいて第１のユーザから受信された第２のユーザ入力、第１の組み込みアプリケーションからの組み込みイベント情報、および／またはネットワークに接続されたサーバからのサーバイベント情報を受信すること、示唆イベントに基づく１つまたは複数の提案応答アイテムを取得すること、および第１のユーザデバイスによって１つまたは複数の提案応答アイテムを表示させることに基づいて判定される。例えば、選択された提案応答アイテムを示す第３のユーザ入力が受信されて、第１のユーザデバイス上およびチャット会話に参加している他のユーザデバイスにおいて表示される第１のチャットインタフェースにおいて選択された提案応答アイテムに関連するチャットメッセージの出力を生じさせる。別の例では、第３のユーザ入力は、選択された提案応答アイテムを選択し、選択された提案応答アイテムに関連する１つまたは複数のコマンドを提供する。様々な例では、コマンドは、第１の組み込みアプリケーションに提供される少なくとも１つの第１のコマンド、第１のメッセージングアプリケーションに提供される少なくとも１つの第２のコマンド、および／または第１のユーザデバイス上で実行されている異なるアプリケーションからの出力情報を表示させるための、第１のユーザデバイスに提供される少なくとも１つの第３のコマンドを含み得る。出力情報は、第１のユーザデバイスと通信しているサーバデバイスから受信された情報を含むことができる。さらなる例では、コマンドは、第２のコンテンツアイテムが、第１のユーザデバイス上の組み込みアプリケーションの組み込みインタフェースに出力されている第１のコンテンツアイテムと同じであると判定することに応答して、組み込みセッションに１または複数の他のユーザの第１のセットを追加するための第１のコマンドを含むことができ、第２のコンテンツアイテムは、チャット会話に参加していない１つまたは複数のユーザデバイスの第１のセット上に表示されている。コマンドは、１または複数の他のユーザの第２のセットが、第１のユーザデバイス上の組み込みインタフェースに出力されている第３のコンテンツアイテムと同じ第４のコンテンツアイテムに関連する入力ユーザコメントを有すると判定することに応答して、組み込みセッションに１または複数の他のユーザの第２のセットを追加するための第２のコマンドを含むことができ、第４のコンテンツアイテムは、チャット会話に参加していない１つまたは複数のユーザデバイスの第２のセット上に表示されている。
【０４５３】
さらなる例では、コンテンツデータは、サーバデバイスで実行されているサーバアプリケーションからネットワークを介してメッセージングアプリケーションで受信され、組み込みアプリケーションに提供されて、出力情報が、第１のユーザデバイスおよび１つまたは複数の特定のユーザデバイス上に表示される組み込みインタフェースにおいて組み込みセッションのための組み込みアプリケーションによって表示されるようにすることができる。サーバアプリケーションで発生した示唆イベントを示すイベント情報がネットワークを介して受信され、示唆イベントは、１または複数のチャットユーザとは異なる１または複数のネットワークユーザによる、サーバアプリケーションによって受信された入力に基づいている。示唆イベントに応答する１つまたは複数の提案応答アイテムが取得され、提案応答アイテムは、第１のユーザデバイス上の第１のチャットインタフェースに表示される。提案される応答アイテムは、ユーザ入力により選択可能であり、メッセージをチャットインタフェースに表示させ、および／またはコマンドを組み込みアプリケーションおよびメッセージングアプリケーションのうちの１つへ送信させる。
【０４５４】
さらなる例では、１または複数の特定のチャットユーザが、組み込みセッションの１または複数のメンバーユーザとして指定される前に、組み込みセッションについて１つまたは複数の関連するユーザロールを選択する選択入力が、特定のチャットユーザから受信される。関連するユーザロールは、複数の所定のユーザロールから選択される。選択入力の受信に応答して、１または複数の特定のチャットユーザの各々は、組み込みセッションにおいて、特定のチャットユーザによって選択されたそれぞれの関連するユーザロールを割り当てられることが可能にされる。各特定のチャットユーザは、特定のチャットユーザによって選択されたそれぞれの関連するユーザロールに関連する組み込みアプリケーションの１つまたは複数の機能を起動することが可能にされる。関連するユーザロールおよび特定のチャットユーザの表示は、表示されるべき他のユーザデバイスに第１のメッセージングアプリケーションによって出力される。
【０４５５】
さらなる例では、第１のユーザデバイスは、少なくとも部分的に第１のユーザデバイス上で実行される第１のメッセージングアプリケーションによって少なくとも部分的に提供されるチャット会話に参加し、第１のチャットインタフェースは、第１のユーザから第１のユーザ入力を受信し、ネットワークを介してチャット会話に参加している１つまたは複数の他のチャットデバイスの１または複数の他のチャットユーザから発せられたメッセージを表示するように構成されている。各チャットユーザは、第１のチャットインタフェースに表示されているチャット識別情報に関連付けられている。第１のチャットインタフェースへの第２のユーザ入力が、第１のユーザから受信され、第２のユーザ入力に応答して、第１の組み込みアプリケーションが、第１のチャットインタフェースと関連して開始される。第１の組み込みアプリケーションは、第１のチャットインタフェースの少なくとも一部が見えるように、第１のユーザデバイスによって表示される組み込みインタフェースに出力情報を提供する。第１のユーザに関連するチャット識別情報は、第１のメッセージングアプリケーションから第１の組み込みアプリケーションに提供され、第１のユーザは、第１の組み込みアプリケーションに関連する組み込みセッションのメンバーユーザとして指定されており、第１の組み込みアプリケーションは、第１のユーザから受信された、組み込みインタフェースへの第３のユーザ入力に基づいて更新される。いくつかの例では、他のチャットユーザは、第１のユーザデバイスと、ネットワークによって第１のユーザデバイスに接続されているサーバデバイスとのうちの少なくとも１つの上で実行されているボットを含む。第１のチャットインタフェースにおいて第１のユーザから受信された第４のユーザ入力に基づいて、ボットは、組み込みインタフェースにおいてコンテンツデータを表示させる。
【０４５６】
さらなる例では、第１のユーザデバイス上の第１のメッセージングアプリケーションに関連して実行される第１の組み込みアプリケーションによって、第１のチャットインタフェースに関連して表示される第１の組み込みインタフェースへの第１のユーザ入力が、第１のユーザから受信される。第１のユーザ入力は、第１の組み込みアプリケーションによって受信され、第１のチャットインタフェースは、第１のユーザデバイス上で少なくとも部分的に実行される第１のメッセージングアプリケーションによって表示され、第１のチャットインタフェースは、第１のユーザから第２のユーザ入力を受信し、ネットワークを介してチャット会話に参加している１つまたは複数の他のユーザデバイスから受信したメッセージを表示するように構成されている。他のユーザデバイスの各々は、それぞれのチャットユーザと関連付けられ、各チャットユーザは、第１のチャットインタフェースに表示されたチャット識別情報と関連付けられている。他のユーザ入力は、１つまたは複数の他のユーザデバイスのうちの１つまたは複数のメンバーデバイスの１つまたは複数のメンバーユーザから受信され、メンバーデバイスは、第１の組み込みアプリケーションに関連する組み込みセッションに含まれている。組み込みアプリケーションの１つまたは複数の状態は、第１のユーザ入力および他のユーザ入力に基づいて更新され、更新は、メンバーユーザの各々にそれぞれのユーザステータスを割り当てることを含む。メンバーユーザのそれぞれのユーザステータスを示す情報は、チャット会話に参加している他のユーザデバイスによって表示されるために第１のメッセージングアプリケーションに提供される。
【０４５７】
図１２は、本明細書に記載の１つまたは複数の機能を実装するために使用することができる例示的なデバイス１２００のブロック図である。一例では、デバイス１２００は、クライアントデバイス、例えば図１に示されるクライアントデバイス１１５のうちの任意のものを実装するために使用され得る。あるいは、デバイス１２００は、サーバデバイス、例えばメッセージングサーバ１０１および／または図１の他のサーバを実装することができる。デバイス１２００は、上述したような任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。
【０４５８】
本明細書に記載の１つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行することができるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス（携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス（腕時計、アームバンド、宝飾品、帽子、バーチャルリアリティゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネなど）、ラップトップコンピュータなど）上で実行されるモバイルアプリケーション（「ａｐｐ」）において実行することができる。一例では、クライアント／サーバアーキテクチャを使用することができ、例えば、（クライアントデバイスとしての）モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、出力のための（例えば、表示のための）最終出力データをサーバから受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ（および／または他のアプリ）内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと１つまたは複数のサーバデバイスとの間で分割することができる。
【０４５９】
いくつかの実装形態では、デバイス１２００は、プロセッサ１２０２、メモリ１２０４、および入力／出力（Ｉ／Ｏ）インタフェース１２０６を含む。プロセッサ１２０２は、プログラムコードを実行し、デバイス１２００の基本動作を制御するための１つまたは複数のプロセッサおよび／または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび／またはソフトウェアシステム、機構、またはコンポーネントを含む。プロセッサは、汎用中央処理ユニット（ＣＰＵ）、複数の処理ユニット、機能を達成するための専用回路、または他のシステムを有するシステムを含み得る。処理は特定の地理的位置に限定される必要はなく、または時間的な制限がある必要もない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などでその機能を実行し得る。処理の一部は、異なる時間および異なる場所で、異なる（または同じ）処理システムによって実行され得る。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【０４６０】
メモリ１２０４は、通常、プロセッサ１２０２によるアクセスのためにデバイス１２００に設けられ、プロセッサにより実行される命令を格納するのに適したランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリなどの任意の適切なプロセッサ読み取り可能記憶媒体とすることができ、プロセッサ１２０２とは別個に配置され、および／またはそれと一体化され得る。メモリ１２０４は、オペレーティングシステム１２０８、メッセージングアプリケーション１２１０、およびデータ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどの他のアプリケーション（またはエンジン）１２１２を含む、プロセッサ１２０２によってサーバデバイス１２００上で動作するソフトウェアを格納することができる。いくつかの実装形態では、メッセージングアプリケーション１２１０は、プロセッサ１２０２が本明細書に記載の機能、例えば、図２〜図７の方法のうちのいくつかまたは全てを実施することを可能とする命令を含み得る。例えば、メッセージングアプリケーション１２１０は、本明細書で説明されているように他のアプリケーションおよびデバイスと通信することができる。いくつかの実装形態では、メッセージングアプリケーション１２１０は、本明細書で説明されるような機能を提供することができ、かつメッセージングアプリケーション１２１０と通信して、他のアプリケーション１２１２およびネットワークを介して接続されるデバイスから情報を送受信できる１つまたは複数の組み込みアプリケーション１２１６を含むか、またはそれと関連付けられることが可能である。いくつかの実装形態では、メッセージングアプリケーション１２１０は、チャットインタフェースおよび／または他のユーザインタフェースを管理するユーザ対話モジュール１２１８などの１つまたは複数のモジュールを含むことができ、および／またはこれらのモジュールは、デバイス１２００と通信する他のアプリケーションまたはデバイスにおいて実装され得る。ユーザ対話モジュール１２１８および／または他のアプリケーション１２１２の１つまたは複数は、例えば、選択可能なオプションまたは制御および選択されたオプションに基づくデータを表示するためのユーザ入力に応答する表示されたユーザインタフェースを提供することができる。
【０４６１】
他のアプリケーション１２１２は、例えば、画像編集アプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーションなどを含むことができる。本明細書に開示される１つまたは複数の方法は、例えば、任意のタイプのコンピューティングデバイス上で動作するスタンドアロンコンピュータプログラムとして、ウェブページを有するウェブアプリケーションとして、モバイルコンピューティングデバイス上で動作するモバイルアプリケーション（「アプリ」）として、いくつかの環境およびプラットフォームにおいて実行することができる。
【０４６２】
様々な実装形態では、他のアプリケーション１２１２は、本明細書で説明されている様々な実装形態で使用され得る機械学習アプリケーション１２３０を含み得る。例えば、機械学習アプリケーション１２３０は、ベイズ分類器、サポートベクターマシン、ニューラルネットワーク、または他の学習技術を利用することができる。いくつかの実装形態では、機械学習アプリケーション１２３０は、トレーニングされたモデル、推論エンジン、およびデータを含み得る。いくつかの実装形態では、データは、トレーニングデータ、例えばトレーニングされたモデルを生成するために使用されるデータを含み得る。例えば、トレーニングデータは、テキスト、画像、オーディオ、ビデオなどのような任意の種類のデータを含み得る。トレーニングデータは、任意のソース、例えば、トレーニングのために特別にマークされたデータリポジトリ、機械学習のためのトレーニングデータとして使用するために許可が与えられているデータなどから取得することができる。１または複数のユーザが、トレーニングされたモデルをトレーニングするためにそれぞれのユーザデータの使用を許可する実装形態では、トレーニングデータは、そのようなユーザデータを含むことができる。ユーザがそれぞれのユーザデータの使用を許可する実装形態では、データは、画像（例えば、写真または他のユーザ生成画像）、通信（例えば、電子メール、テキストメッセージなどのチャットデータ、音声、ビデオなど）、ドキュメント（例えば、スプレッドシート、テキストドキュメント、プレゼンテーションなど）などの許可されたデータを含み得る。
【０４６３】
いくつかの実装形態では、データは、地図データ、画像データ（例えば、衛星画像、上空画像など）、ゲームデータなどの収集されたデータを含み得る。いくつかの実装形態では、トレーニングデータは、例えばシミュレートされた会話から生成されたデータ、コンピュータ生成画像など、訓練されているコンテキストにおけるユーザ入力または活動に基づいていないデータのような、トレーニングの目的で生成された合成データを含み得る。いくつかの実装形態では、機械学習アプリケーション１２３０は、データを除外する。例えば、これらの実装形態では、トレーニングされたモデルは、例えば異なるデバイス上で生成され、機械学習アプリケーション１２３０の一部として提供され得る。様々な実装形態では、トレーニングされたモデルは、モデル構造または形態、ならびに関連する重みを含むデータファイルとして提供され得る。推論エンジンは、トレーニングされたモデルのデータファイルを読み取り、トレーニングされたモデルで指定されたモデル構造または形態に基づく、ノードの接続性、層、および重みを用いてニューラルネットワークを実装することができる。
【０４６４】
機械学習アプリケーションは、トレーニングされたモデルも含む。いくつかの実装形態では、トレーニングされたモデルは、１つまたは複数のモデル形態または構造を含み得る。例えば、モデル形態または構造は、線形ネットワーク、複数の層（例えば、入力層と出力層との間の「隠れ層」、各層は線形ネットワークである）を実装するディープニューラルネットワーク、畳み込みニューラルネットワーク（例えば、入力データを複数の部分またはタイルに分割または区分けし、１つまたは複数のニューラルネットワーク層を用いて各タイルを別個に処理し、各タイルの処理からの結果を集約するネットワーク）、ｓｅｑｕｅｎｃｅ−ｔｏ−ｓｅｑｕｅｎｃｅニューラルネットワーク（例えば、文（チャットメッセージなど）の中の単語、ビデオのフレームなどの入力シーケンシャルデータを取り、結果シーケンスを出力として生成するネットワーク）のような、任意のタイプのニューラルネットワークを含み得る。モデル形態または構造は、様々なノード間の接続性およびノードの層への編成を指定することができる。例えば、第１層（例えば入力層）のノードは、入力データまたはアプリケーションデータとしてデータを受け取ることができる。そのようなデータは、例えば、トレーニングされたモデルが画像分析のために使用される場合、例えば、ノードごとに１つまたは複数のピクセルを含むことができる。後続の中間層は、モデル形態または構造で指定された接続性に従って、前の層のノードの入力出力を受け取ることができる。これらの層は、隠れ層とも呼ばれる。最終層（例えば、出力層）は、機械学習アプリケーション１２３０の出力を生成する。例えば、出力は、特定のトレーニングされたモデルに応じて、画像に対するラベルのセット、画像を他の画像と比較することを可能にする画像の表現（例えば、画像に対する特徴ベクトル）、入力文に応答した出力文、入力データのための１つまたは複数のカテゴリなどであり得る。いくつかの実装形態では、モデル形態または構造は、各層のノードの数および／またはタイプも指定する。
【０４６５】
異なる実装形態では、トレーニングされたモデルは、モデル構造または形態ごとに層に配置された複数のノードを含むことができる。いくつかの実装形態では、ノードは、メモリなしの計算ノード、例えば、１単位の入力を処理して１単位の出力を生成するように構成されたものであり得る。ノードによって実行される計算は、例えば、複数のノード入力の各々に重みを乗算すること、重み付き和を取得すること、および重み付き和をバイアスまたは切片値で調整してノード出力を生成することを含み得る。いくつかの実装形態では、ノードによって実行される計算は、調整された重み付き和にステップ／活性化関数を適用することを含み得る。いくつかの実装形態では、ステップ／活性化関数は、非線形関数であり得る。様々な実装形態では、そのような計算は、行列乗算などの演算を含み得る。いくつかの実装形態では、複数のノードによる計算は、例えばマルチコアプロセッサの複数のプロセッサコアを使用して、ＧＰＵの個々の処理ユニットを使用して、または専用のニューラル回路を使用して、並列して実行され得る。いくつかの実装形態では、ノードは、メモリを含むことができ、例えば、後続の入力を処理する際に１つまたは複数の以前の入力を格納して使用することが可能であり得る。例えば、メモリを有するノードは、長期短期記憶（ＬＳＴＭ）ノードを含み得る。ＬＳＴＭノードは、ノードが有限状態機械（ＦＳＭ）のように動作することを可能にする「状態」を維持するためにメモリを使用することができる。そのようなノードを有するモデルは、連続データ、例えば文章または段落内の単語、ビデオ内のフレーム、スピーチまたは他のオーディオなどを処理するのに有用であり得る。
【０４６６】
いくつかの実装形態では、トレーニングされたモデルは、個々のノードに対する埋め込みまたは重みを含み得る。例えば、モデルは、モデルの形態または構造によって指定されるような層に編成された複数のノードとして開始されてもよい。初期化時に、モデル形態ごとに接続されているノード、例えばニューラルネットワークの連続する層におけるノード、の各ペアの間の接続に、それぞれの重みが適用され得る。例えば、それぞれの重みは、ランダムに割り当てられてもよく、またはデフォルト値に初期化されてもよい。次いで、モデルが、例えば上記したデータを使用してトレーニングされ、結果を生成することができる。
【０４６７】
例えば、トレーニングは、教師あり学習技術を適用することを含み得る。教師あり学習では、トレーニングデータは、複数の入力（例えば、一組の画像）および各入力に対する対応する予想される出力（例えば、各画像に対する１つまたは複数のラベル）を含み得る。モデルの出力と、期待される出力との比較に基づいて、重みの値が、例えば同様の入力が与えられたときにモデルが期待される出力を生成する確率を高めるように、自動的に調整される。
【０４６８】
いくつかの実装形態では、トレーニングは、教師なし学習技術を適用することを含み得る。教師なし学習では、入力データのみが提供され、モデルは、データを区別するように、例えば、入力データを複数のグループにクラスタ化するようにトレーニングされることが可能であり、各グループは、何らかの点で類似した入力データを含む。例えば、モデルが、抽象画像（例えば、合成画像、人間が描いた画像など）を自然画像（例えば、写真）から区別するように、画像を区別するようにトレーニングされ得る。
【０４６９】
別の例では、教師なし学習を使用してトレーニングされたモデルは、入力文における単語の使用に基づいて単語をクラスタ化することができる。いくつかの実装形態では、教師なし学習を使用して、例えば機械学習アプリケーション１２３０によって使用され得る知識表現を生成することができる。様々な実装形態では、トレーニングされたモデルは、モデル構造に対応する重みまたは埋め込みの集合を含む。データが省略される実装形態では、機械学習アプリケーション１２３０は、例えば、機械学習アプリケーション１２３０の開発者、またはサードパーティなどによる事前のトレーニングに基づくトレーニングされたモデルを含み得る。いくつかの実装形態では、トレーニングされたモデルは、例えば重みを提供するサーバからダウンロードされた、固定された重みのセットを含み得る。
【０４７０】
機械学習アプリケーション１２３０は、推論エンジンも含み得る。推論エンジンは、トレーニングされたモデルをアプリケーションデータなどのデータに適用して推論を提供するように構成されている。いくつかの実装形態では、推論エンジンは、プロセッサ１２０２によって実行されるべきソフトウェアコードを含み得る。いくつかの実装形態では、推論エンジンは、プロセッサ１２０２がトレーニングされたモデルを適用することを可能にする回路構成（例えば、プログラマブルプロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）など）を指定することができる。いくつかの実装形態では、推論エンジンは、ソフトウェア命令、ハードウェア命令、またはそれらの組み合わせを含み得る。いくつかの実装形態では、推論エンジンは、例えばトレーニングされたモデルをアプリケーションデータに適用して推論を生成するために、オペレーティングシステム１２０８および／または他のアプリケーション１２１２によって使用されて、推論エンジンを呼び出すことができるアプリケーションプログラミングインタフェース（ＡＰＩ）を提供し得る。
【０４７１】
機械学習アプリケーション１２３０は、複数の技術的利点を提供することができる。例えば、トレーニングされたモデルが、教師なし学習に基づいて生成される場合、トレーニングされたモデルが、推論エンジンによって適用されて、入力データ、例えばアプリケーションデータから知識表現（例えば、数値表現）を生成することができる。例えば、画像分析のためにトレーニングされたモデルは、入力画像（例えば１０ＭＢ）よりも小さいデータサイズ（例えば１ＫＢ）を有する画像の表現を生成し得る。いくつかの実装形態では、そのような表現は、出力（例えば、ラベル、分類、画像を説明する文章など）を生成するための処理コスト（例えば、計算コスト、メモリ使用量など）を削減するのに役立ち得る。いくつかの実装形態では、そのような表現は、推論エンジンの出力から出力を生成する異なる機械学習アプリケーションへの入力として提供され得る。いくつかの実装形態では、機械学習アプリケーション１２３０によって生成された知識表現は、例えばネットワークを介して、さらなる処理を実行する異なるデバイスに提供され得る。そのような実装形態では、画像ではなく知識表現を提供することが、技術的利益を提供することができ、例えば、より低いコストでより速いデータ伝送を可能にすることができる。別の例では、ドキュメントをクラスタ化するためにトレーニングされたモデルは、入力ドキュメントからドキュメントクラスタを生成することができる。ドキュメントクラスタは、元のドキュメントにアクセスする必要なしに、さらなる処理（例えば、ドキュメントがトピックに関連しているかどうかの判定、そのドキュメントの分類カテゴリの判定など）に適し、従って計算コストを節約することができる。
【０４７２】
いくつかの実装形態では、機械学習アプリケーション１２３０は、オフライン方式で実装され得る。これらの実装形態では、トレーニングされたモデルは、第一段階で生成され、機械学習アプリケーション１２３０の一部として提供され得る。いくつかの実装形態では、機械学習アプリケーション１２３０は、オンライン方式で実装され得る。例えば、そのような実装形態では、機械学習アプリケーション１２３０を呼び出すアプリケーション（例えば、オペレーティングシステム１２０８、他のアプリケーション１２１２の１つまたは複数）は、機械学習アプリケーション１２３０によって生成された推論を利用することができ、例えば、その推論をユーザに提供し、システムログ（例えば、ユーザによって許可された場合、推論に基づいてユーザによって取られたアクション、またはさらなる処理のための入力として利用された場合、さらなる処理の結果）を生成することができる。システムログは、定期的に、例えば、毎時、毎月、毎四半期などに生成されてもよく、ユーザの許可を得て、トレーニングされたモデルを更新するために、例えばトレーニングされたモデルの埋め込みを更新するために使用され得る。
【０４７３】
いくつかの実装形態では、機械学習アプリケーション１２３０は、機械学習アプリケーション１２３０が実行されるデバイス１２００の特定の構成に適応することができる方法で実装され得る。例えば、機械学習アプリケーション１２３０は、利用可能な計算資源、例えばプロセッサ１２０２を利用する計算グラフを決定することができる。例えば、機械学習アプリケーション１２３０が複数のデバイス上の分散型アプリケーションとして実施される場合、機械学習アプリケーション１２３０は、計算を最適化する方法で個々のデバイス上で実行されるべき計算を決定することができる。別の例では、機械学習アプリケーション１２３０は、プロセッサ１２０２が特定の数（例えば、１０００）のＧＰＵコアを有するＧＰＵを含み、それに応じて推論エンジンを（例えば、１０００個の個々のプロセスまたはスレッドとして）実装することを決定し得る。
【０４７４】
いくつかの実装形態では、機械学習アプリケーション１２３０は、トレーニングされたモデルのアンサンブルを実施し得る。例えば、トレーニングされたモデルは、それぞれ同じ入力データに適用可能な複数のトレーニングされたモデルを含み得る。これらの実装形態では、機械学習アプリケーション１２３０は、例えば、利用可能な計算リソース、以前の推論での成功率などに基づいて、特定のトレーニングされたモデルを選択することができる。いくつかの実装形態では、機械学習アプリケーション１２３０は、複数のトレーニングされたモデルが適用されるように推論エンジンを実行することができる。これらの実装形態では、機械学習アプリケーション１２３０は、個々のモデルの適用からの出力を、例えば、各トレーニング済みモデルの適用からの個々の出力を採点する投票技術を使用して、または１つまたは複数の特定の出力を選択することによって、組み合わせることができる。さらに、これらの実装形態では、機械学習アプリケーションは、個々のトレーニングされたモデルを適用するための時間閾値（例えば、０．５ｍｓ）を適用し、その時間閾値内で利用可能な個々の出力のみを利用することができる。時間閾値内に受信されない出力は利用されず、例えば破棄され得る。例えば、そのようなアプローチは、例えばオペレーティングシステム１２０８、または１つまたは複数のアプリケーション１２１２によって、機械学習アプリケーション１２３０を呼び出す間に指定された時間制限がある場合に適切であり得る。
【０４７５】
異なる実装形態では、機械学習アプリケーション１２３０は、異なるタイプの出力を生成することができる。例えば、機械学習アプリケーション１２３０は、表現またはクラスタ（例えば、入力データの数値表現）、ラベル（例えば、画像、ドキュメントなどを含む入力データに対する）、フレーズまたは文章（例えば、入力文に対する応答としての使用に適している画像またはビデオの説明など）、画像（例えば、入力に応答して機械学習アプリケーション１２３０によって生成される）、オーディオまたはビデオ（例えば、入力ビデオに応答して、機械学習アプリケーション１２３０は、特定の効果が適用された出力ビデオ、例えば、トレーニングされたモデルがコミックブックまたは特定のアーティストなどからのトレーニングデータを使用してトレーニングされる場合、コミックブックまたは特定のアーティストのスタイルでレンダリングされた出力ビデオを生成し得る）を提供することができる。いくつかの実装形態では、機械学習アプリケーション１２３０は、呼び出し側アプリケーション、例えば、オペレーティングシステム１２０８または１つまたは複数のアプリケーション１２１２によって指定されたフォーマットに基づいて出力を生成することができる。いくつかの実装形態では、呼び出し側アプリケーションは、別の機械学習アプリケーションであり得る。例えば、そのような構成は、敵対的生成ネットワークで使用され得、呼び出し側機械学習アプリケーションが、機械学習アプリケーション１２３０からの出力を使用してトレーニングされ、その逆も同様である。
【０４７６】
あるいは、メモリ１２０４内のソフトウェアのいずれも、他の任意の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ１２０４（および／または他の接続された単数または複数の記憶デバイス）は、１つまたは複数のメッセージ、１つまたは複数の分類法、電子百科事典、辞書、シソーラス、メッセージデータ、文法、ユーザプリファレンス、および／または本明細書で説明された機能で使用される他の命令およびデータを格納することができる。メモリ１２０４および他の任意の種類の記憶デバイス（磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体）は、「記憶装置」または「記憶デバイス」と見なすことができる。
【０４７７】
Ｉ／Ｏインタフェース１２０６は、サーバデバイス１２００を他のシステムおよびデバイスとインタフェースすることを可能にするための機能を提供することができる。インタフェースされたデバイスは、デバイス１２００の一部として含めることができ、または分離してデバイス１２００と通信することができる。例えば、ネットワーク通信デバイス、記憶デバイス（例えば、メモリおよび／またはデータベース１０６）、および入力／出力デバイスは、Ｉ／Ｏインタフェース１２０６を介して通信することができる。いくつかの実装形態では、Ｉ／Ｏインタフェースは、入力デバイス（キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど）および／または出力デバイス（表示デバイス、スピーカーデバイス、プリンター、モーターなど）のようなインタフェースデバイスに接続することができる。
【０４７８】
Ｉ／Ｏインタフェース１２０６に接続することができるインタフェースデバイスのいくつかの例は、コンテンツ、例えば、本明細書で説明されるような出力アプリケーションの画像、ビデオ、および／またはユーザインタフェースを表示するために使用できる１つまたは複数の表示デバイス１２２０を含み得る。表示デバイス１２２０は、ローカル接続（例えば、表示バス）および／またはネットワーク接続を介してデバイス１２００に接続されることができ、任意の適切な表示デバイスとすることができる。表示デバイス１２２０は、ＬＣＤ、ＬＥＤ、またはプラズマディスプレイスクリーン、ＣＲＴ、テレビ、モニタ、タッチスクリーン、３Ｄディスプレイスクリーン、または他の視覚的表示デバイスのような任意の適切な表示デバイスを含むことができる。例えば、表示デバイス１２２０は、モバイルデバイスに提供されるフラットディスプレイスクリーン、ゴーグルデバイスに提供される複数の表示スクリーン、またはコンピュータデバイス用のモニタスクリーンであり得る。
【０４７９】
Ｉ／Ｏインタフェース１２０６は、他の入力および出力デバイスとインタフェースすることができる。いくつかの例は、画像をキャプチャすることができる１つまたは複数のカメラを含む。いくつかの実装形態は、（例えば、キャプチャされた画像、音声コマンドなどの一部として）音声をキャプチャするためのマイクロフォン、音声を出力するためのオーディオスピーカデバイス、または他の入出力デバイスを提供することができる。
【０４８０】
説明を簡単にするために、図１２は、プロセッサ１２０２、メモリ１２０４、Ｉ／Ｏインタフェース１２０６、およびソフトウェアブロック１２０８、１２１０、および１２１２の各々について１つのブロックを示している。これらのブロックは、１つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、Ｉ／Ｏインタフェース、アプリケーション、および／またはソフトウェアモジュールを表すことができる。他の実装形態では、デバイス１２００は、示された構成要素の全てを有しない場合があり、かつ／または本明細書に示されたものの代わりにまたはそれに加えて他のタイプの要素を含む他の要素を有し得る。いくつかの構成要素は、本明細書のいくつかの実装形態で説明されるように、ブロックおよび動作を実行するものとして説明されているが、環境１００、デバイス１２００、同様のシステム、またはそのようなシステムに関連する任意の適切な１つまたは複数のプロセッサの任意の適切なコンポーネントまたはコンポーネントの組合せが、説明されているブロックおよび動作を実行し得る。
【０４８１】
本明細書に記載の方法は、コンピュータプログラム命令またはコードによって実装することができ、それらはコンピュータ上で実行することができる。例えば、コードは、１つまたは複数のデジタルプロセッサ（例えば、マイクロプロセッサまたは他の処理回路）によって実装することができ、半導体または固体メモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、リジッドメモリを含む、磁気、光学、電磁気、または半導体の記憶媒体のような、非一時的コンピュータ可読媒体（例えば、記憶媒体）を含むコンピュータプログラム製品に格納することができる。プログラム命令は、例えば、サーバ（例えば、分散システムおよび／またはクラウドコンピューティングシステム）から配信されるサービスとしてのソフトウェア（ＳａａＳ）の形で、電子信号に含まれ、電子信号として提供されることもできる。代替的に、１つまたは複数の方法は、ハードウェア（論理ゲートなど）、またはハードウェアとソフトウェアの組み合わせで、実施することができる。ハードウェアの例は、プログラマブルプロセッサ（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス）、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路（ＡＳＩＣ）などであり得る。１つまたは複数の方法は、システム上で実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと共に実行されているアプリケーションまたはソフトウェアとして実行することができる。
【０４８２】
説明は、特定の実装形態に関して記載されているが、これらの特定の実装形態は単なる例示であり、限定的なものではない。例に示されている概念は、他の例および実装形態にも適用することができる。
【０４８３】
本明細書で説明する特定の実装形態が、ユーザに関する個人情報（例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの位置および時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報）を収集または使用し得る状況では、個人情報が収集されるかどうか、個人情報が保存されるかどうか、個人情報が使用されるかどうか、およびどのようにユーザに関する情報が収集され、保存され、使用されるかを制御する一または複数の機会がユーザに提供される。すなわち、本明細書で論じられるシステムおよび方法は、関連するユーザからそのようにするための明示的な許可を受け取ることに明確に基づいて、ユーザの個人情報を収集し、格納し、および／または使用する。さらに、特定のデータは、個人を特定可能な情報が削除されるように、格納または使用される前に１つまたは複数の方法で処理され得る。一例として、個人を識別可能な情報が判定され得ないように、ユーザの識別情報が取り扱われ得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定されることができないように、より大きな領域に一般化され得る。
【０４８４】
本開示に記載されている機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組み合わせに統合または分割することができることに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技術が使用され得る。手続き型またはオブジェクト指向などの異なるプログラミング技術が使用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行し得る。ステップ、動作、または計算は特定の順序で提示され得るが、異なる特定の実装形態においてはその順序は変更されてもよい。いくつかの実装形態では、本明細書において連続的なものとして示されている複数のステップまたは動作が同時に実行され得る。
【０４８５】
以下にいくつかの例を説明する。
例１：提案アイテムを提供するためのコンピュータ実装方法であって、チャットインタフェースを第１のユーザデバイスにより表示させることであって、前記チャットインタフェースは、メッセージングアプリケーションによって生成され、前記チャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、前記１つまたは複数のメッセージは、ネットワークを介して前記チャット会話に参加している複数のユーザデバイスにより提供されるものである、前記チャットインタフェースを第１のユーザデバイスにより表示させること、前記チャットインタフェースに関連する組み込みインタフェースを表示させることであって、前記組み込みインタフェースは、前記メッセージングアプリケーションに関連して前記第１のユーザデバイス上で少なくとも部分的に実行される第１の組み込みアプリケーションによって提供されるものである、前記チャットインタフェースに関連する組み込みインタフェースを表示させること、前記チャット会話に参加している複数のユーザデバイスのうちの１つまたは複数において特定のイベントが発生したことを示す受信データに基づいて、示唆イベントが前記第１の組み込みアプリケーションに関連して発生したと判定することであって、前記複数のユーザデバイスのうちの１つまたは複数は、前記第１のユーザデバイスとは異なるものである、前記判定すること、前記示唆イベントに基づいて１つまたは複数の提案応答アイテムを取得すること、前記１つまたは複数の提案応答アイテムを前記第１のユーザデバイスによって表示させることを含む、コンピュータ実装方法。
【０４８６】
例２：前記特定のイベントは、前記複数のユーザデバイスのうちの１つまたは複数の、関連するチャットインタフェースによって受信されたユーザ入力、前記複数のユーザデバイスのうちの１つまたは複数の、関連する組み込みインタフェースによって受信されたユーザ入力、および／または前記複数のユーザデバイスのうちの１つまたは複数で実行されている関連する組み込みアプリケーションで発生している組み込みアプリケーションイベントのうちの少なくとも１つを含む、例１に記載のコンピュータ実装方法。
【０４８７】
例３：前記特定のイベントが発生したことを示す前記受信データは、前記複数のユーザデバイスのうちの１つまたは複数によって再生されているメディアアイテムに表示されているコンテンツ特徴のタイプ、前記複数のユーザデバイスのうちの１つまたは複数のゲームにおける所定の目的の達成、前記チャット会話に参加している受信側ユーザデバイスによって受信されたユーザ入力であって、前記受信側ユーザデバイスに表示された異なる組み込みインタフェースにおいて受信された前記ユーザ入力、および／または前記複数のユーザデバイスのうちの特定のユーザデバイスからの前記組み込みアプリケーションの開始のうちの少なくとも１つを示す、例１または２に記載のコンピュータ実装方法。
【０４８８】
例４：前記特定のイベントは、前記複数のユーザデバイスのうちの１つまたは複数のそれぞれのユーザによって前記チャット会話に入力された１つまたは複数のメッセージを含み、前記示唆イベントは、前記１つまたは複数のメッセージ内の、１つまたは複数の事前定義されたトピック、単語、および／またはフレーズのうちの少なくとも１つを検出することに基づいて決定される、例１〜４の少なくとも１つに記載のコンピュータ実装方法。
【０４８９】
例５：前記示唆イベントは、デバイスにおけるユーザ入力の受信、プログラムにおける状態の変化、デバイス間のデータ通信、ネットワークを介したユーザデバイスの組み込みセッションまたはデバイスとの接続、プログラム間の、またはネットワークを介したユーザデバイスの１つにおけるデータの受信または送信、メディアデータまたは他のデータにおけるコンテンツ特徴の検出、チャットメッセージにおける特定のトピックの検出、および／または履歴データに示されるような過去の時間に発生した１つまたは複数のこれらのイベントのうちの少なくとも１つを含む、例１〜４のうちの少なくとも１つに記載のコンピュータ実装方法。
【０４９０】
例６：前記示唆イベントに基づいて１つまたは複数の提案応答アイテムを取得することは、前記少なくとも１つの提案応答アイテムの前記示唆イベントとの１つまたは複数の事前定義された関連付け、特定の示唆イベントおよび前記特定の示唆イベントに応答して入力された応答でトレーニングされたモデル、および／または前記組み込みアプリケーションによって提供されたゲームで使用される複数のルールおよび／または目的のうちの１つまたは複数のうちの少なくとも１つに基づいて、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つの提案応答アイテムを決定することを含む、例１〜５の少なくとも１つに記載のコンピュータ実装方法。
【０４９１】
例７：前記１つまたは複数の提案応答アイテムから選択された提案応答アイテムのユーザ選択を示すユーザ入力を受信すること、前記チャット会話において選択されたメッセージを出力することをさらに含み、前記選択されたメッセージは、前記選択された提案応答アイテムに関連付けられている、例１〜６の少なくとも１つに記載のコンピュータ実装方法。
【０４９２】
例８：前記１つまたは複数の提案応答アイテムは、前記示唆イベントに対するユーザの反応を示す１つまたは複数のテキストメッセージを含む、例１〜７の少なくとも１つに記載のコンピュータ実装方法。
【０４９３】
例９：前記１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、前記ユーザ入力に応答して、前記第１の組み込みアプリケーションにコマンドを提供することをさらに含み、前記コマンドは、前記選択された提案応答アイテムに関連付けられており、前記コマンドは、前記第１の組み込みアプリケーションの状態の変化を引き起こし、前記状態の変化は、前記チャット会話に参加している複数のユーザデバイスのうちの１つまたは複数の他のユーザデバイスに対し示されている、例１〜８の少なくとも１つに記載のコンピュータ実装方法。
【０４９４】
例１０：前記第１の組み込みアプリケーションへの前記コマンドは、前記第１の組み込みアプリケーションによって実装されるゲームにおいてアクションを実行するための第１のコマンド、前記第１の組み込みアプリケーションによるメディアデータの再生における再生位置を変更するための第２のコマンド、および／または前記第１の組み込みアプリケーションによって提供された共有オブジェクトを変更するための第３のコマンドのうちの少なくとも１つを含む、例９に記載のコンピュータ実装方法。
【０４９５】
例１１：前記１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、前記ユーザ入力に応答して、前記選択された提案応答アイテムに関連する１つまたは複数のコマンドを提供することをさらに含み、前記１つまたは複数のコマンドは、前記第１の組み込みアプリケーションに提供される少なくとも１つの第１のコマンド、前記メッセージングアプリケーションに提供される少なくとも１つの第２のコマンド、および／または前記第１のユーザデバイス上で実行されている異なるアプリケーションからの出力情報を表示させるために前記第１のユーザデバイスに提供される少なくとも１つの第３のコマンドのうちの少なくとも１つを含む、例１〜１０の少なくとも１つに記載のコンピュータ実装方法。
【０４９６】
例１２：前記１つまたは複数の提案応答アイテムから選択された提案応答アイテムの選択を示すユーザ入力を受信すること、前記ユーザ入力に応答して、前記選択された提案応答アイテムに関連する１つまたは複数のコマンドを提供することをさらに含み、前記１つまたは複数のコマンドは、第２のコンテンツアイテムが前記第１のユーザデバイス上の組み込みアプリケーションの組み込みインタフェースに出力される第１のコンテンツアイテムと同じであると判定することに応答して、前記チャット会話に１または複数の他のユーザの第１のセットを追加するための第１のコマンドであって、前記第２のコンテンツアイテムは、前記チャット会話に参加していない１つまたは複数のユーザデバイスの第１のセットに表示される、前記第１のコマンド、および／または１または複数の他のユーザの第２のセットが、前記第１のユーザデバイス上の前記組み込みインタフェースに出力されている第３のコンテンツアイテムと同じ第４のコンテンツアイテムに関連する入力ユーザコメントを有すると判定することに応答して前記チャット会話に１または複数の他のユーザの第２のセットを追加するための第２のコマンドであって、前記第４のコンテンツアイテムは、前記チャット会話に参加していない１つまたは複数のユーザデバイスの第２のセットに表示される、前記第２のコマンドのうちの少なくとも１つを含む、例１〜１１の少なくとも１つに記載のコンピュータ実装方法。
【０４９７】
例１３：前記１つまたは複数の提案応答アイテムは、前記第１の組み込みアプリケーションに対する１つまたは複数の提案コマンドと、前記チャットインタフェースにおいて前記チャット会話に出力されるべき１つまたは複数の提案メッセージとを含み、前記１つまたは複数の提案コマンドは、前記チャットインタフェースに表示される場合に前記１つまたは複数の提案メッセージと視覚的に区別されている、例１〜１２の少なくとも１つに記載のコンピュータ実装方法。
【０４９８】
例１４：前記１つまたは複数の提案応答アイテムは、前記第１の組み込みアプリケーション、前記メッセージングアプリケーション、および／または前記ネットワークを介して前記メッセージングアプリケーションと通信するリモートサーバのうちの少なくとも１つによって決定される、例１〜１３の少なくとも１つに記載のコンピュータ実装方法。
【０４９９】
例１５：前記第１の組み込みアプリケーションは、前記組み込みインタフェースにおいてビデオデータの表示された再生を引き起こすメディアプレーヤアプリケーションであり、前記組み込みインタフェースは、前記ビデオデータの表示された再生を制御するユーザからの入力を受信するように構成されており、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つは、前記ビデオデータの表示された再生を調整するように動作可能な１つまたは複数の提案再生コマンドを含む、例１〜１４の少なくとも１つに記載のコンピュータ実装方法。
【０５００】
例１６：前記第１の組み込みアプリケーションは、前記組み込みインタフェースにおいてゲームデータを表示させるゲームアプリケーションであり、前記組み込みインタフェースは、前記ゲームアプリケーションの１つまたは複数の状態を変化させるユーザからの入力を受信するように構成されており、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つは、前記ゲームアプリケーションの少なくとも１つの状態を修正するように動作可能な１つまたは複数の提案コマンドを含む、例１〜１５の少なくとも１つに記載のコンピュータ実装方法。
【０５０１】
例１７：前記第１の組み込みアプリケーションは、前記組み込みインタフェースにおいて共有ドキュメントを表示させる共有ドキュメントアプリケーションであり、前記組み込みインタフェースは、前記共有ドキュメントの１つまたは複数のアイテムを変化させるユーザからの入力を受信するように構成されており、前記１つまたは複数の提案応答アイテムのうちの少なくとも１つは、前記共有ドキュメントを修正するように動作可能な１つまたは複数の提案コマンドを含む、例１〜１６の少なくとも１つに記載のコンピュータ実装方法。
【０５０２】
例１８：前記組み込みインタフェースは、前記チャット会話に参加している複数のユーザデバイスのサブセットに出力されており、前記サブセットは、前記ユーザデバイスを前記第１の組み込みアプリケーションによって開始された組み込みセッションに参加させる関連するチャットインタフェースにおいて第２のユーザ入力を受信したユーザデバイスを含む、例１〜１７の少なくとも１つに記載のコンピュータ実装方法。
【０５０３】
例１９：前記第１の組み込みアプリケーションは、前記第１の組み込みアプリケーションによって生成された出力データ、および／または前記ネットワークを介して前記第１のユーザデバイスと関連してサーバから受信された出力データのうちの少なくとも１つを表示する、例１〜１８の少なくとも１つに記載のコンピュータ実装方法。
【０５０４】
例２０：システムであって、メモリと、前記メモリにアクセスするように構成され、かつ動作を実行するように構成された少なくとも１つのプロセッサとを備え、前記動作は、チャットインタフェースを第１のユーザデバイスにより表示させることであって、前記チャットインタフェースは、メッセージングアプリケーションによって生成され、前記チャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、前記１つまたは複数のメッセージは、ネットワークを介して前記チャット会話に参加している複数のユーザデバイスにより提供されるものである、前記チャットインタフェースを第１のユーザデバイスにより表示させること、前記チャットインタフェースに関連する組み込みインタフェースを表示させることであって、前記組み込みインタフェースは、前記メッセージングアプリケーションに関連して実行される第１の組み込みアプリケーションによって提供され、前記第１の組み込みアプリケーションは、前記第１のユーザデバイス上で少なくとも部分的に実行される、前記チャットインタフェースに関連する組み込みインタフェースを表示させること、前記第１の組み込みアプリケーションの使用に関連して示唆イベントが発生したことを、前記組み込みインタフェースによって受信されたユーザ入力、および／または前記示唆イベントが前記第１の組み込みアプリケーションで発生したことを示す前記第１の組み込みアプリケーションからのイベント情報のうちの少なくとも１つに基づいて判定すること、前記示唆イベントに応答する１つまたは複数の提案応答アイテムを取得すること、前記１つまたは複数の提案応答アイテムを前記第１のユーザデバイスによって表示させることを含む、システム。
【０５０５】
例２１：前記１つまたは複数の提案応答アイテムは、それぞれ、前記メッセージングアプリケーションに、前記第１の組み込みアプリケーションの１つまたは複数の状態を変更するための関連コマンドを提供すること、および／または前記チャット会話に参加している複数のユーザデバイスによって、前記チャット会話に関連メッセージを表示させることのうちの少なくとも１つを行わせるために、前記第１のユーザデバイスの第１のユーザによって選択可能である、例２０に記載のシステム。
【０５０６】
例２２：前記示唆イベントが発生したことを判定する動作は、前記複数のユーザデバイスのうちの第２のユーザデバイスが、前記第１の組み込みアプリケーションに対応する第２の組み込みアプリケーションを起動して、前記第１の組み込みアプリケーションのために提供された組み込みセッションに参加したことを判定することに基づいている、例２０または２１に記載のシステム。
【０５０７】
例２３：プロセッサによって実行されると、プロセッサに動作を実行させるソフトウェア命令を格納する非一時的コンピュータ可読媒体であって、前記動作は、示唆イベントが、関連するユーザデバイス上で少なくとも部分的に実行される複数の対応する組み込みアプリケーションのうちの少なくとも１つの組み込みアプリケーションの使用に関連して発生したことを判定することであって、各組み込みアプリケーションは、前記関連するユーザデバイス上で実行されるメッセージングアプリケーションに関連して実行され、各メッセージングアプリケーションは、関連するチャットインタフェースを前記関連するユーザデバイスによって表示させるように構成されており、前記関連するチャットインタフェースは、チャット会話において１つまたは複数のメッセージを表示するように構成されており、前記関連するユーザデバイスは、ネットワークを介して前記チャット会話に参加している、前記判定すること、前記示唆イベントに応答する１つまたは複数の提案応答アイテムを取得すること、前記関連するユーザデバイスのうちの少なくとも１つの関連するユーザデバイスによって前記１つまたは複数の提案応答アイテムを表示させることを含む、非一時的コンピュータ可読媒体。
【０５０８】
例２４：前記１つまたは複数の提案応答アイテムは、それぞれ、前記複数の対応する組み込みアプリケーションの１つまたは複数の状態を変更するための関連コマンドを提供すること、および／または前記チャット会話に参加している前記関連するユーザデバイスにより前記チャット会話における関連するメッセージを表示させることのうちの少なくとも１つのために、前記少なくとも１つの関連するユーザデバイスのそれぞれのユーザからのユーザ入力によって選択可能である、例２３に記載の非一時的コンピュータ可読媒体。
【０５０９】
例２５：前記１つまたは複数の状態は、１つまたは複数の第２の状態であり、前記示唆イベントが発生したことを判定する動作は、前記対応する組み込みアプリケーションのうちの少なくとも１つによって受信されるユーザ入力、および／または前記対応する組み込みアプリケーションの１つまたは複数の第１の状態を変更する前記メッセージングアプリケーションのうちの少なくとも１つによって受信されるユーザ入力のうちの少なくとも１つに基づいている、例２３または２４に記載の非一時的コンピュータ可読媒体。
【図１】
0006718028.tif 000002
【図２】
0006718028.tif 000003
【図３】
0006718028.tif 000004
【図４】
0006718028.tif 000005
【図５】
0006718028.tif 000006
【図６】
0006718028.tif 000007
【図７】
0006718028.tif 000008
【図８Ａ】
0006718028.tif 000009
【図８Ｂ】
0006718028.tif 000010
【図８Ｃ】
0006718028.tif 000011
【図８Ｄ】
0006718028.tif 000012
【図８Ｅ】
0006718028.tif 000013
【図９Ａ】
0006718028.tif 000014
【図９Ｂ】
0006718028.tif 000015
【図９Ｃ】
0006718028.tif 000016
【図１０Ａ】
0006718028.tif 000017
【図１０Ｂ】
0006718028.tif 000018
【図１０Ｃ】
0006718028.tif 000019
【図１０Ｄ】
0006718028.tif 000020
【図１１】
0006718028.tif 000021
【図１２】
0006718028.tif 000022