用于在聊天对话中与嵌入式应用一起使用的建议项目的制作方法

文档序号:19734779发布日期:2020-01-18 04:20阅读:487来源:国知局
用于在聊天对话中与嵌入式应用一起使用的建议项目的制作方法

相关申请的交叉引用

本申请要求2017年6月15日提交的题为“用于在聊天对话中与嵌入式应用一起使用的建议项目”的美国专利申请no.15/624,638的优先权,其全部内容通过引用合并于此。

技术背景

数字移动设备的普及和便利以及网络通信的广泛使用已经使得用户设备之间的通信变得无处不在。例如,用户通常使用他们的设备将电子消息作为文本消息、聊天消息、电子邮件等发送给其他用户。例如,在用户设备之间的聊天对话中,用户将文本、图像和其他类型的内容数据发布到聊天界面,并且发布的数据被显示在参与聊天对话的其他用户设备上显示的聊天界面中。

这里提供的背景描述是为了总体上呈现本公开的背景。在本

背景技术:
部分中描述其范围的当前被指名的发明人的工作,以及在提交时可能不具备现有技术资格的描述的方面,既不明确也不隐含地被视为针对本公开的现有技术。



技术实现要素:

本申请的实施例涉及用于聊天对话的嵌入式程序和界面。在一些实施例中,用于提供建议项目的计算机实施的方法包括使得聊天界面由第一用户设备显示,其中聊天界面由消息应用生成,并且其中聊天界面被配置为显示聊天对话中的一个或多个消息。一个或多个消息由正在通过网络参与聊天对话的多个用户设备提供。方法使得嵌入式界面与聊天界面相关联地被显示,其中嵌入式界面由第一嵌入式应用提供,第一嵌入式应用与消息应用相关联地至少部分地在第一用户设备上运行。方法基于接收的数据确定建议事件已经相关联地发生,接收的数据指示在参与聊天对话的多个用户设备中的一个或多个用户设备中发生了特定事件,其中多个用户设备中的一个或多个用户设备与第一用户设备不同。方法基于建议事件获得一个或多个建议响应项目,并且使得一个或多个建议响应项目由第一用户设备显示。

描述了方法的各种实施例和示例。例如,在一些实施例中,特定事件包括由多个用户设备中的一个或多个用户设备的关联的聊天界面接收的用户输入、由多个用户设备中的一个或多个用户设备的关联的嵌入式界面接收的用户输入、和/或在多个用户设备中的一个或多个用户设备上运行的关联的嵌入式应用中发生的嵌入式应用事件。在一些实施例中,指示特定事件已发生的接收数据指示以下中的至少一个:在由多个用户设备中的一个或多个用户设备播放的媒体项目中显示的内容特征的类型,在多个用户设备中的一个或多个用户设备的游戏中实现预定义的目标,参与聊天对话的接收用户设备接收的用户输入,其中,用户输入在接收的用户设备上显示的不同的嵌入界面中提供,和/或从多个用户设备中的特定用户设备启动嵌入式应用。在一些实施例中,特定事件包括由多个用户设备中的一个或多个用户设备的相应用户输入到聊天对话的一个或多个消息,其中基于在一个或多个消息中检测到一个或多个预定义的主题、单词和/或短语中的至少一个来确定建议事件。

在一些实施例中,基于建议事件获得一个或多个建议响应项目包括基于以下中的至少一个来确定一个或多个建议响应项目中的至少一个建议响应项目:至少一个建议响应项目与建议事件的一个或多个预定义的关联;利用特定建议事件和响应于特定建议事件的响应输入来训练的模型;和在由嵌入式应用提供的游戏中使用的多个规则和目标中的一个或多个规则和目标。在一些实施例中,方法进一步包括:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的用户选择的用户输入;和在聊天对话中输出选择的消息,选择的消息与选择的建议响应项目相关联。

在一些实施例中,方法进一步包括:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的选择的用户输入;和响应于用户输入,提供与选择的建议响应项目相关联的一个或多个命令,其中一个或多个命令包括以下中的至少一个:被提供给第一嵌入式应用的至少一个第一命令;被提供给消息应用的至少一个第二命令;和/或被提供给第一用户设备以使得显示来自在第一用户设备上运行的不同应用的输出信息的至少一个第三命令,其中输出信息包括从与第一用户设备通信的服务器设备接收的信息。

在一些实施例中,方法进一步包括:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的选择的用户输入;和响应于用户输入,提供与选择的建议响应项目相关联的一个或多个命令,其中一个或多个命令包括以下中的至少一个:第一命令,第一命令响应于确定第二内容项目与在第一用户设备上的嵌入式应用的嵌入式界面中输出的第一内容项目相同,将一个或多个其他用户的第一集合添加到聊天对话,其中第二内容项目被显示在未参与聊天对话的一个或多个用户设备的第一集合上;和/或第二命令,第二命令响应于确定一个或多个其他用户的第二集合已输入与第四内容项目相关联的用户评论,将一个或多个其他用户的第二集合添加到聊天对话,第四内容项目与在第一用户设备上的嵌入式界面中输出的第三内容项目相同,其中第四内容项目被显示在未参与聊天对话的一个或多个用户设备的第二集合上。

在一些示例中,一个或多个建议响应项目可以包括指示用户对建议事件的反应的一个或多个文本消息。该方法可以进一步包括指示从一个或多个建议响应项目中对选择的建议响应项目的选择的用户输入,并且响应于用户输入,向第一嵌入式应用提供命令,其中命令与选择的建议响应项目相关联。在一些示例中,对第一嵌入式应用的命令包括以下中的至少一个:在由第一嵌入式应用实施的游戏中执行动作的第一命令,在由第一嵌入式应用回放媒体数据时改变回放位置的第二命令,和/或改变由第一嵌入式应用提供的共享对象的第三命令。在其他示例中,一个或多个建议响应项目包括对第一嵌入式应用的一个或多个建议命令以及要被输出到聊天界面中的聊天对话的一个或多个建议消息,其中当被显示在聊天界面中时,一个或多个建议命令在视觉上与一个或多个建议消息区分开。在一些实施例中,一个或多个建议响应项目由第一嵌入式应用、消息应用和/或通过网络与消息应用通信的远程服务器中的至少一个确定。

在进一步的示例中,第一嵌入式应用是使得在嵌入式界面中显示视频数据的回放的媒体播放器应用,其中嵌入式界面被配置为从控制显示的视频数据的回放的用户接收输入,并且其中一个或多个建议响应项目中的至少一个建议响应项目包括可操作以调整显示的视频数据的回放的一个或多个建议回放命令。在进一步的示例中,第一嵌入式应用是使得在嵌入式界面中显示游戏数据的游戏应用,其中嵌入式界面被配置为从改变游戏应用的一个或多个状态的用户接收输入,并且其中一个或多个建议响应项目中的至少一个建议响应项目包括可操作为修改游戏应用的至少一个状态的一个或多个建议命令。在进一步的示例中,第一嵌入式应用是使得在嵌入式界面中显示共享文档的共享文档应用,其中嵌入式界面被配置为从改变共享文档的一个或多个项目的用户接收输入,并且其中一个或多个建议响应项目中的至少一个建议响应项目包括可操作为修改共享文档的一个或多个建议命令。

在一些实施例中,嵌入式界面可以被输出在参与聊天对话的多个用户设备的子集上,其中子集包括已经接收到在相关联的聊天界面中的第二用户输入的用户设备,第二用户输入使得用户设备加入由第一嵌入式应用启动的嵌入式会话。第一嵌入式应用可以显示由第一嵌入式应用生成的、和/或从通过网络与第一用户设备连接的服务器接收的输出数据。

在一些实施例中,一种系统包括存储器和至少一个处理器,至少一个处理器被配置为访问存储器并被配置为执行包括以下的操作:使得聊天界面由第一用户设备显示,其中聊天界面由消息应用生成。聊天界面被配置为显示聊天对话中的一个或多个消息,其中一个或多个消息由通过网络参与聊天对话的多个用户设备提供。操作包括使得嵌入式界面与聊天界面相关联地被显示,其中嵌入式界面由与消息应用相关联地运行的第一嵌入式应用提供,并且第一嵌入式应用至少部分地在第一用户设备上运行。操作包括基于以下中的至少一个来确定建议事件已经与第一嵌入式应用的使用相关联地发生:由嵌入式界面接收的用户输入、和/或来自第一嵌入式应用的指示建议事件已经在第一嵌入式应用中发生的事件信息。操作包括获得响应于建议事件的一个或多个建议响应项目,和使得一个或多个建议响应项目由第一用户设备显示。

描述了系统的各种实施例和示例。例如,在一些实施例中,一个或多个建议响应项目各自都可由第一用户设备的第一用户选择,以使消息应用提供相关联的命令以改变第一嵌入式应用的一个或多个状态,和/或使得由参与聊天对话的多个用户设备在聊天对话中显示相关联的消息。在一些实施例中,确定建议事件已经发生的操作是基于确定多个用户设备中的第二用户设备已经启动了与第一嵌入式应用相对应的第二嵌入式应用以加入为第一嵌入式应用提供的嵌入式会话。

在一些实施例中,一种非暂时性计算机可读介质,在非暂时性计算机可读介质上存储有软件指令,当软件指令由处理器运行时,软件指令使得处理器执行操作。操作包括确定建议事件已经与至少部分地在相关联的用户设备上运行的多个相对应的嵌入式应用中的至少一个嵌入式应用的使用相关联地发生,其中每个嵌入式应用与运行在关联用户设备上的消息应用相关联地运行。每个消息应用被配置为使关联的聊天界面由关联的用户设备显示,其中关联的聊天界面被配置为在聊天对话中显示一个或多个消息,并且关联的用户设备通过网络参与聊天对话。操作包括获得响应于建议事件的一个或多个建议响应项目;和使得由相关联的用户设备中的至少一个相关联的用户设备显示一个或多个建议响应项目。

在计算机可读介质的一些实施例中,一个或多个建议响应项目每个都可以通过来自至少一个相关联的用户设备的对应用户的用户输入选择,以提供相关联的命令以改变多个相应嵌入式应用的一个或多个状态,和/或使得由参与聊天对话的相关联的用户设备在聊天对话中显示相关联的消息。在一些实施例中,一个或多个状态是一个或多个第二状态,并且确定建议事件已经发生的操作基于以下中的至少一个:由相应嵌入式应用中的至少一个接收到的用户输入,和/或由消息应用中的至少一个接收的、改变相应嵌入式应用的一个或多个第一状态的用户输入。

附图说明

图1是可用于这里描述的一个或多个实施例的示例系统和网络环境的框图;

图2是示出了根据本申请的一些实施例,用于提供嵌入在聊天对话中的应用的示例方法的流程图;

图3是示出了根据本申请的一些实施例,使用户能够加入嵌入式会话的示例方法的流程图;

图4是示出了根据本申请的一些实施例,第一设备处理第二设备已加入嵌入式会话的事件的示例方法的流程图;

图5是示出了根据本申请的一些实施例,使用与消息应用相关联的嵌入式应用来提供媒体项目的输出的示例方法的流程图;

图6是示出了根据本申请的一些实施例,用于提供与消息应用相关联的嵌入式应用的输出的另一示例方法的流程图;

图7是示出根据本申请的一些实施例,用于在聊天对话中提供与嵌入式应用相关联的建议响应项的示例方法的流程图;

图8a-8e是根据本申请的一些实施例,由用户设备显示的示例用户界面的图形表示;

图9a-9c是根据本申请的一些实施例,由用户设备显示的额外的示例用户界面的图形表示;

图10a-10d是根据本申请的一些实施例,由用户设备显示的额外的示例用户界面的图形表示;

图11是包括启动嵌入式应用和用户加入嵌入式会话的示例序列的示意图;和

图12是可以用于这里描述的一个或多个实施例的示例设备的框图。

具体实施方式

这里描述的一个或多个实施例涉及用于聊天对话的嵌入式程序和界面。在各种实施例中,第一嵌入式应用可以由第一消息应用提供的第一聊天界面中的用户输入启动并显示在第一用户设备上。第一聊天界面被配置为从第一用户处接收用户输入,并且显示从通过网络参与聊天对话并且与相应聊天用户相关联的一个或多个其他用户设备接收的消息。其他用户设备可以连接到与嵌入式应用相关联的嵌入式会话,其中其他设备的用户被指定为成员用户。

例如,在一些实施例中,可以在聊天对话中的其他聊天设备上提供通知,指示嵌入式会话是激活的。其他聊天设备的聊天用户可以向他们的用户设备提供输入(例如,选择在他们的设备的聊天界面中显示的加入控件)以使他们的设备加入嵌入式会话并成为成员设备。可以将聊天用户的聊天标识提供给嵌入式应用并在嵌入式应用中使用。

第一嵌入式应用可以使得嵌入式界面由与聊天界面相关联的用户设备显示,例如,作为聊天界面的一部分显示在聊天界面内或附近,等等。嵌入式界面可以从与用户设备相关联的用户接收用户输入,例如,通过选择所显示的界面元素、键盘、其他输入设备等,并将输入提供给第一嵌入式应用。第一嵌入式应用还可以与第一消息应用和聊天界面进行通信,例如,从聊天消息接收数据并输出在聊天界面和/或聊天对话中显示的聊天消息。第一嵌入式应用可以与已加入嵌入式会话的其他成员设备通信,例如,通过第一消息应用,其中其他设备可以与相应的嵌入式应用和消息应用相关联。第一嵌入式应用可以与第一消息应用和与第一消息应用通信的一个或多个服务器进行通信。在嵌入式应用或其他连接的设备(例如,服务器)中事件发生的指示可以在聊天界面中显示(例如,在聊天对话中显示使得它们对聊天用户可见)和/或在嵌入式界面中显示。

可以使用各种类型的嵌入式应用,例如,播放媒体项目(视频、图像、音频片段等)的嵌入式媒体播放器应用、用以输出游戏数据的嵌入式游戏应用、用以输出内容文档(例如项目列表、电子表格等)的嵌入式应用、用于创建和输出预订或旅行路线的嵌入式应用等。在一些实施例中,当在聊天界面中选择启动嵌入式应用时,可以在第一用户设备上下载和运行嵌入式应用。在一些实施例中,嵌入式应用可以是标准的、独立的应用,其可被配置或者或者它们的输出被处理,以便以嵌入式方式提供所显示的输出,例如,在与消息应用的聊天界面相关联的嵌入式界面中显示输出。

描述了各个其他特征。例如,在一些实施例中,建议响应项目可以由消息应用或嵌入式应用生成或获取,并显示在聊天界面或嵌入式界面中。当通过用户输入进行选择时,一些建议响应项目可以向嵌入式应用、消息应用或第一用户设备提供一个或多个建议命令。当通过用户输入进行选择时,一些建议响应项目可以向聊天界面提供一个或多个建议消息,例如,向聊天对话提供一个或多个建议消息。可以基于在嵌入式应用、消息应用和/或其他连接的设备中发生的建议事件来确定建议响应项目,从而为用户提供相关的建议输入选项。

在各种实施例中,特征可以包括在嵌入式会话中被分配相应的用户状态(例如,用户角色)的成员用户,例如,媒体项目回放的控制用户、游戏中的玩家角色或观察者角色等。在一些示例中,嵌入式应用可以在媒体项目的第一回放期间在嵌入式界面中接收用户评论,并且可以在该媒体项目的稍后的第二回放期间在嵌入式界面中,为第一回放时参与聊天对话的聊天用户显示那些用户评论。嵌入式应用所显示的输出数据可以在特定的嵌入式会话的成员设备之间同步。例如,通过一个成员设备上的用户输入调整的回放位置,使得其他成员设备调整相关联的嵌入式界面中的回放位置。可以在聊天界面中提供机器人程序(bots)并且该机器人程序可以与嵌入式应用接合,例如,启动嵌入式应用以处理由用户输入选择的内容项等。

这里描述的一个或多个特征使用户能够在有多个用户设备参与的聊天对话的环境中与嵌入式应用进行交互。此外,多个聊天用户可以在嵌入式应用中进行交互。特征允许聊天用户在聊天对话中共享应用的功能和输出,而聊天用户不必退出聊天界面以显示单独应用的界面。因此,可以在聊天界面中输入和显示聊天消息,同时显示来自嵌入式应用的输出,这允许聊天用户感觉连接在应用的同时使用中。这些特征允许在使用嵌入式应用的嵌入式会话会话中的聊天用户之间的分组的、共享的表达的体验。在一些示例中,在播放视频等媒体项目的嵌入式会话会话中,特征使聊天用户能够一起观看视频并在聊天对话中评论视频。如果第一聊天用户当前正在观看视频,则该对话中的第二聊天用户具有与第一聊天用户一起观看视频的选项,类似于在相似的物理环境中一起坐在沙发上看电视。在这种共享体验中,两个用户都可以控制回放,控制要观看的媒体项目的播放列表,交谈视频中的特征和事件,和/或将喜爱发布到视频源中。

嵌入式应用和聊天界面之间的通信允许引人注目且有效地集成聊天和应用功能。例如,嵌入式应用可以向消息应用发送事件或通知,并且消息应用可以在聊天用户的聊天对话和聊天界面中显示事件或通知,从而对当前未参与嵌入式会话的聊天用户可见。这可以提高用户对嵌入式会话的发生和嵌入式会话中的事件的参与度、保留率和意识。类似地,输入到聊天界面和聊天对话中的聊天消息可以被输入到嵌入式应用,从而允许嵌入式应用响应来自聊天界面和聊天对话的命令和消息。

使用这种与聊天界面相关联的嵌入式应用,当使用聊天界面和应用时,允许聊天用户彼此之间进行交互,并且允许聊天用户以减少的用户输入和减少的交互时间与嵌入式应用交互,因而减少设备资源的消耗,否则将需要设备资源处理、显示和接收在与消息应用分开的应用中的用户输入。例如,所公开的特征减少了同时使用聊天界面和应用功能实现和处理多个用户之间的通信所需的设备资源的消耗(例如,减少了用户设备上的不同应用的不同界面的切换显示,减少了将一个应用中显示的数据复制和粘贴到另一个应用或界面,减少了重复输入到应用的命令或数据等)。此外,可以基于聊天界面内的选择无缝地在用户设备上下载和安装嵌入式应用,减少了呈现额外下载和安装界面所需的系统资源。另外,嵌入式应用可以为小数据尺寸,例如,可以使用相关联的消息应用的一个或多个功能,例如通信和网络功能、聊天界面功能等,因此可以省略这些功能本身。这允许特定应用功能(例如,播放媒体项目、提供游戏或共享列表等)在比每个包括完整功能集的独立运行的应用消耗更少带宽和存储资源的更小的应用中实施。在一些实施例中,可以在消息应用和嵌入式应用之间使用标准api,允许由许多不同的提供者提供各种各样的嵌入式应用。

因此,一个或多个所描述的实施例的技术效果是以较少的为获取结果而花费的计算时间和资源,提供在设备实现的对话中的用户设备之间的聊天通信连同来自应用的显示和交互的特征。例如,所描述的技术和特征的技术效果是功能是与不提供一个或多个所描述的技术和特征的系统相比,减少了用于提供聊天通信和应用功能的系统处理资源的消耗,不提供一个或多个所描述的技术和特征的系统例如使用在与聊天界面通信不关联的单独的应用中显示应用输出的现有技术的系统,在其中需要额外的计算资源来运行单独的应用并使得用户在应用和聊天对话之间切换,向应用提供额外的输入等。在另一示例中,所描述的技术和特征的技术效果是减少了由不提供一个或多个所描述的技术或特征的系统所使用的系统处理资源的消耗,例如,在聊天界面中仅使用机器人程序以提供应用功能和与聊天用户的交互的系统,因为这样的机器人程序可能在聊天界面中呈现使得参与并在聊天对话中提供消息的多个聊天用户困惑的输出,导致系统资源的低效使用(例如,重复的观看、滚动、和来自用户的显示先前输出的消息的命令的输入和机器人程序提供的输出等)。因此,与不提供一个或多个所描述的技术或特征的系统相比,所描述的技术和特征的技术效果是减少了用于从多个用户接收输入的系统处理资源的消耗。

在一些实施例中,响应于在嵌入式应用、消息应用或其他设备中发生的建议事件,可以自动提供建议响应项目。建议响应项目作为命令或消息是适当的并且与建议事件相关。例如,建议消息项目可以使得在聊天对话中显示适当的消息作为对嵌入式应用或其他程序中发生的特定事件的响应(例如,基于来自其他用户的用户输入的事件,或者所播放的内容数据中的事件),就好像用户正在创建消息。建议命令项目可以使建议的相关命令响应于嵌入式应用或其他程序中的事件而被发送到嵌入式应用或其他应用/设备,例如,响应于检测到播放的媒体项目中的特征而改变媒体回放的命令,响应于游戏中检测到的对手的动作而执行游戏动作的命令等。这些建议项目为用户在确定他们对应用中的事件的响应时提供了更灵活的选项,并且可以为无法充分响应应用中的事件的用户提供选项。例如,在消息对话期间的各个时间,用户可能无法提供足够的关注度和/或注意力以用相关命令或消息响应事件,和/或可能无法向用户设备提供详细的用户输入以创建这样的相关命令或消息。在一些示例中,用户可能正在进行活动或处于用户不可能或者更难以提供适当响应的环境中。

响应于嵌入式应用或消息应用中的特定事件,这里描述的一个或多个特征有利地为用户提供可自动选择的建议响应项目消息。建议响应项目与设备上检测到的事件相关。选择这样的建议项目允许用户以减少的用户输入和减少的时间简单快速地响应事件以在设备上撰写响应,从而减少了显示大量可能响应所需的设备资源的消耗和/或减少了实现和处理来自用户的额外的输入以撰写响应、搜索、编辑或完成响应和/或以其他方式参与通过电子设备保持的对话所需的设备资源的消耗。因此,一个或多个所描述的实施例的技术效果是以较少的为获取结果而花费的计算时间和资源,实现在设备实施的对话中的响应的创建和传输。例如,与不提供一种或多种所述技术和特征的系统相比,例如,在其中需要额外的计算资源接收来自用户的用于指定、选择、编辑或创建用户要传输的响应的输入的使用现有技术的系统,所描述的技术和特征的技术效果是减少了用于显示、创建和发送消息响应和命令响应的系统处理资源的消耗。

所描述的技术提供了额外的优点。在一些示例中,可以基于在消息应用和嵌入式应用之间传递的信息来有效地自动分配用户状态或角色,而无需接收额外的用户输入。在一些示例中,用户命令和评论可以被发送到服务器,并且服务器事件可以由用户设备上的嵌入式应用接收和呈现,而用户不必通过退出聊天界面和运行用户设备上的单独的应用来访问服务器。机器人程序可以与嵌入式应用结合使用,例如,搜索嵌入式应用要播放的内容项目,而无需用户花费系统资源来执行手动搜索、选择和启动应用。在其他示例中,可以存储先前由用户输入的与在嵌入式应用中先前播放的内容项目相关联的用户评论。如果回放发生在相同的聊天对话(或聊天用户组)中,则可以与稍后的内容项目的回放关联地显示该存储的评论,从而使聊天用户在稍后的回放期间免于重新输入评论并减少了系统资源的花费。同步技术允许嵌入式会话的用户设备上的内容项目的回放自动地同步,并且能够接受来自多个用户的输入。这些技术允许聊天用户在聊天对话中共享体验,而无需用户使用额外的系统资源来运行单独的应用或彼此手动指示回放位置。

在这里讨论的某些实施例可以收集或使用关于用户的个人信息的情况下(例如,用户数据、关于用户的社交网络的信息、用户位置和用户在该位置的时间、用户的生物信息、用户的活动和人口统计信息),向用户提供一个或多个机会来控制是否收集信息、是否存储个人信息、是否使用个人信息、以及如何收集、存储和使用关于用户的信息。也就是说,特别是在接收到来自相关用户的明确授权时,这里讨论的系统和方法收集、存储和/或使用用户的个人信息。例如,向用户提供对程序或特征是否收集关于与该程序或特征相关的该特定用户或其他用户的用户信息的控制。其个人信息要被收集的每个用户被呈现一个或多个选项以允许控制与该用户相关的信息收集,以提供关于是否收集信息以及关于信息的哪些部分要被收集的许可或授权。例如,可以通过通信网络向用户提供一个或多个这样的控制选项。另外,某些数据可以在存储或使用之前以一种或多种方式处理,以便移除个人可识别信息。作为一个示例,可以处理用户的标识,以便不能确定个人可识别信息。作为另一示例,用户的地理位置可以被泛化到更大的地区,以便不能确定用户的特定位置。

这里提到的图像是具有带有一个或多个像素值(例如,颜色值、亮度值等)的像素的数字图像。图像可以是静止图像或单个图像,或者可以是包括在一系列图像中的图像,例如视频帧的视频序列中的帧,或者不同类型的图像序列或图像动画中的图像。视频包括多个图像的序列。例如,这里描述的实施例可以与单个图像或静态图像(例如,照片、表情符号或其他图像)、视频或动画图像(例如,电影图或包括运动的其他动画图像、包括动画和音频的贴纸(sticker)等)一起使用。这里所提到的文本可以包括字母数字字符、表情符号、符号或其他字符。

图1示出了用于提供实现如这里所述的嵌入式应用的消息服务的示例环境100的框图。在一些实施例中,可以提供例如机器人程序的自动辅助代理。示例性环境100包括消息服务器101、一个或多个客户端设备115a、115n、服务器135、嵌入式应用服务器150、会话服务器152、内容服务器154、建议服务器156和网络140。用户125a-125n可以与各个客户端设备115a、115n相关联。服务器135可以是第三方服务器,例如,由与提供消息服务的一方不同的一方所控制。在各种实施例中,服务器135可以实现如下面进一步详细描述的机器人程序服务。在一些实施例中,环境100可以不包括图1中所示的一个或多个服务器或设备,或者可以包括图1中未示出的其他服务器或设备。在图1和其余图中,参考数字后面的字母,例如“115a”,表示对具有该特定参考数字的元件的引用。文本中没有后续字母的参考数字,例如“115”,表示对带有该参考数字的元件的实施的一般引用。

在所示实施例中,消息服务器101、客户端设备115、服务器135和服务器150-156通过网络140通信地耦合。在各种实施例中,网络140可以是传统类型的、有线或无线的,并且可以有许多不同的配置,包括星形配置、令牌环配置或其他配置。此外,网络140可以包括局域网(localareanetwork,lan)、广域网(wideareanetwork,wan)(例如,因特网)、和/或多个设备可以通过其进行通信的其他互连数据路径。在一些实施例中,网络140可以是用户设备之间和/或其他设备之间的对等网络,例如,使用对等数据交换技术实现离线通信(以及如下所述的嵌入式应用的使用)。网络通信可以包括使用适当的通信协议(例如,允许例如客户端(用户)设备和服务器的设备之间的双向、全双工消息的通信的websocket)。网络140还可以耦合到或包括用于以各种不同的通信协议发送数据的电信网络的一部分。在一些实施例中,网络140包括用于发送和接收经由短消息服务(shortmessagingservice,sms)、多媒体消息服务(multimediamessagingservice,mms)、超文本传输协议(hypertexttransferprotocol,http)、直接数据连接、电子邮件等的数据的蓝牙通信网络、或蜂窝通信网络。在其他示例中,声波可以在网络140中用于设备之间的数据和状态交换。尽管图1示出了耦合到客户端设备115、消息服务器101、服务器135和服务器150-156的一个网络140,但实际上,一个或多个网络140可以耦合到这些实体。

消息服务器101可以包括处理器、内存和网络通信能力。在一些实施例中,消息服务器101是硬件服务器。在一些实施例中,消息服务器101可以植入虚拟化环境中,例如,消息服务器101可以是在可以包括一个或多个其他虚拟机的硬件服务器上运行的虚拟机。消息服务器101通过信号线102通信地耦合到网络140。信号线102可以是有线连接,例如以太网、同轴电缆、光纤电缆等,或者无线连接,例如wi-fi、蓝牙或其他无线技术。在一些实施例中,消息服务器101通过网络140向客户端设备115a-115n中的一个或多个、服务器135、服务器150-156中的一个或多个以及机器人程序113发送数据并且从客户端设备115a-115n中的一个或多个、服务器135、服务器150-156中的一个或多个以及机器人程序113接收数据。在一些实施例中,消息服务器101可以包括消息应用103a,其提供客户端功能以使用户(例如,用户125的任一个)能够与其他用户和/或与机器人程序交换消息。消息应用103a可以是服务器应用、客户端-服务器应用的服务器模块或分布式应用(例如,在一个或多个客户端设备115上具有相应的客户端消息应用103b)。

消息服务器101还可以包括数据库199,其可以存储经由消息服务器101交换的消息、例如指示哪些用户在哪些消息组(例如,聊天对话)以及哪些内容数据(视频数据、图像、具有组喜好的音频数据、游戏数据、内容文档等)与哪些消息组相关联的组数据、一个或多个机器人程序的数据和/或配置、由内容分类器130提供的信息以及与一个或多个用户125相关联的用户数据、来自相应用户的存储这些数据的所有明确许可。在一些实施例中,消息服务器101可以包括一个或多个辅助代理,例如机器人程序107a和111。在其他实施例中,辅助代理可以在客户端设备115a-n上实施而不在消息服务器101上实施。

在一些实施例中,消息服务器101、消息应用103和/或与消息应用相关联地运行的嵌入式应用可以在一个消息组(例如,聊天对话)中提供消息,和/或可以向由消息服务器101(或其他消息服务器)实施的一个或多个其他的消息组(聊天对话)发送消息。

消息应用103a可以是可由处理器操作以实现用户125与一个或多个机器人程序105、107a、107b、109a、109b、111和113之间的消息交换的代码和例程。在一些实施例中,消息应用103a可以使用包括现场可编程门阵列(field-programmablegatearray,fpga)或专用集成电路(application-specificintegratedcircuit,asic)的硬件来实现。在一些实施例中,可以使用硬件和软件的组合来实现消息应用103a。

在各种实施例中,当与客户端设备115相关联的相应用户提供对消息存储的同意时,数据库199可以存储在一个或多个客户端设备115之间交换的消息。在一些实施例中,当与客户端设备115相关联的相应用户提供对存储消息的同意时,数据库199可以存储在一个或多个客户端设备115和一个或多个机器人程序之间交换的消息,该一个或多个机器人程序实施在不同设备上,例如,其他客户端设备、消息服务器101和服务器135等。在一个或多个用户不提供许可的实施例中,则不存储由这些用户接收和发送的消息。

在一些实施例中,可以加密消息,例如,使得仅消息的发送者和接收者可以查看加密的消息。一些实施例可以存储从用户生成的加密数据,例如,诸如消息、评论、记录的用户动作等的用户生成的内容数据。用户生成的内容数据可以在用户设备(例如,在嵌入式应用的本地运行中)和服务器系统(例如,对于为共享的嵌入式应用和嵌入式会话传送的消息)上本地加密。在一些实施例中,存储消息。在一些实施例中,数据库199可以进一步存储一个或多个机器人程序(例如机器人程序107a、机器人程序111等)的数据和/或配置。在一些实施例中,当用户125提供用于存储用户数据(例如社交网络数据、联系信息、图像等)的同意时,数据库199还可以存储与提供该同意的相应用户125相关联的用户数据。

在一些实施例中,消息服务器101和消息应用103可以在如这里所述的参与聊天对话的一个或多个聊天设备(例如,用户设备)上实施。

在一些实施例中,消息应用103a/103b可以提供使用户125能够创建新机器人程序的用户界面。在这些实施例中,消息应用103a/103b可以包括使用户创建的机器人程序能够被包括在消息应用103a/103b的用户之间的聊天对话中的功能。

服务器150-156可以包括一个或多个处理器、内存和网络通信能力。在一些实施例中,服务器是硬件服务器。信号线160、162、164和166分别将服务器150、152、154和156连接到网络140,并且可以是有线连接,例如以太网、同轴电缆、光纤电缆等,或者是无线连接,例如wi-fi、蓝牙或其他无线技术。在一些实施例中,服务器150-156经由网络140向消息服务器101和客户端设备115a-115n中的一个或多个发送数据和从消息服务器101和客户端设备115a-115n中的一个或多个接收数据。尽管服务器150-156被示为单独的服务器,但是服务器150-156中的一个或多个可以被组合和/或包括在环境100的一个或多个其他组件中,例如,消息服务器101、客户端设备115a、服务器135等。服务器150-156中的任何一个或全部可以由管理消息服务器101的同一方管理,或者可以由第三方管理。在一些实施例中,当服务器通过网络140与特定设备通信时,服务器101、135和150-156可以被认为是相对于该特定设备的远程服务器。类似地,在一些实施例中,如果通过网络140与特定设备通信,则可以认为客户端设备115远离该特定设备。在各种实施例中,服务器101、135和150-156中的任何一个的功能可以在一个或多个客户端设备115上实施。

嵌入式应用服务器150经由信号线160通信地耦合到网络140,并且服务于如这里所述的嵌入式应用,嵌入式应用由设备请求安装在设备上。例如,用户设备可以请求下载嵌入式应用作为操作系统或消息应用的后台处理,并且嵌入式应用服务器150将数据发送到客户端设备,以在客户端设备上运行嵌入式应用。在一些实施例中,嵌入式应用服务器150可以全部或部分地运行嵌入式应用,并且可以将来自嵌入式应用的输出数据发送到客户端设备用于一个或多个客户端设备显示。

会话服务器152经由信号线162通信地耦合到网络140,并且在一些实施例中可以用于处理和协调发送到/来自参与嵌入式会话的多个客户端设备的数据,该嵌入式会话连接运行在连接到网络140的客户端设备上的多个嵌入式应用(例如,共享嵌入式应用)。例如,会话服务器152可用于管理嵌入式会话,例如,包括以下中的一个或多个:在嵌入式会话中同步嵌入式应用的状态,确定和分发在会话服务器上运行的相应嵌入式应用上的事件等。在一些实施例中,会话服务器可以确定嵌入式会话的一个或多个事件,其中的一个或多个事件可以发生在会话服务器上或发生在与会话服务器通信的其他服务器上。例如,事件可以包括服务器接收与服务器向用户设备服务的内容项目相关联的用户选择、评论或评级,并且这些内容项目可以在嵌入式会话中播放,使得事件可以被传达给嵌入式会话。在一些实施例中,会话服务器152可以包括在消息服务器101或环境100的其他服务器中或与消息服务器101或环境100的其他服务器相同。

内容服务器154经由信号线164通信地耦合到网络140,并且可以用于将内容数据发送到连接到网络140的一个或多个设备。例如,内容数据可以是被提供用于由嵌入式应用输出的数据,该嵌入式应用在这里所描述的客户端设备上显示嵌入式界面。内容数据可以包括视频数据、图像数据、音频数据、文档数据、网页数据、游戏数据、机器人程序数据或信息、地图数据或其他地理信息等。内容数据可以包括在不同的内容项目(媒体项目)中,例如、视频或电影、图像、游戏、文档、网页等。

建议服务器156经由信号线166通信地耦合到网络140,并且可以用于确定和提供建议响应项目以回复消息应用和/或嵌入式应用,以供显示和用户在客户端设备处的选择。例如,在客户端设备115处运行的消息应用可以向建议服务器156发送描述性信息,并且响应于描述性信息,建议服务器156可以查询数据库、知识图和/或其他数据资源以确定一个或多个建议响应项目(这里也称为“建议项目”、“建议输入项目”或“建议输入项目”)。如参考图7所述,这些建议项目可以是建议命令和建议消息。在一些实施例中,建议服务器156的功能可以包括在消息应用和/或嵌入式应用中。

在一些实施例中,建议服务器156和/或环境100的其他组件可以使用机器学习,例如,使用利用机器学习来确定建议项目的机器学习模型。例如,在训练阶段,可以使用消息应用上下文(context)中的实际或生成的消息的训练数据(例如,消息训练数据)来训练建议服务器(或其他组件),然后在推理阶段可以确定对其接收到的新消息或其他数据的建议项目。例如,可以使用合成数据来训练机器学习模型,合成数据是例如由计算机自动生成而不使用用户信息的数据。在一些实施例中,可以基于样本数据(例如,样本消息数据)来训练机器学习模型,对于该样本数据,已经从提供消息数据的用户明确地获取了使用用户数据进行训练的许可。例如,样本数据可以包括接收的消息和发送的对接收消息的响应。基于样本数据,模型可以预测对所接收消息的消息响应,然后可以将其作为建议项目提供。在一些实施例中,建议服务器156(或其他组件)可以使用深度学习模型、逻辑回归模型、长期短期记忆(longshorttermmemory,lstm)网络、监督或无监督模型等中的一个或多个。一些实施例也可以检测图像或视频中的图像特征,并基于图像特征确定建议项目(例如,消息响应)。例如,图像特征可以包括人(不用确定人的标识)、动物、物体(例如,物品,车辆等)、特定的纪念碑、景观特征(例如,树叶、山脉、湖泊、天空、云、日出或日落、建筑、桥梁等)、天气等。可以使用各种图像识别和检测技术(例如,基于训练图像的机器学习,与参考图像中的参考特征的比较等)来检测图像特征。

在一些实施例中,服务器150-156中的一个或多个托管机器人程序。机器人程序可以是执行特定功能以提供建议的计算机程序,例如,预订机器人程序进行预订,自动回复机器人程序生成回复消息文本,安排机器人程序自动安排日历约定等。服务器150-156可以提供或者将一个或多个机器人程序作为其输出引用到消息应用103。例如,机器人程序的代码可以合并到消息应用103中,或者消息应用103可以将请求发送到在服务器150-156处实施的机器人程序。在一些实施例中,通过向服务器150-156提供机器人程序命令和基于机器人程序命令接收输出(例如,嵌入式应用数据、会话数据、内容数据、建议项目等),消息应用103可用作用户125和服务器150-156之间的中介。

在一些实施例中,服务器150-156中的一个或多个(例如,内容服务器154和/或建议服务器156)可以维护电子百科全书、知识图、一个或多个数据库、社交网络应用(例如,、社交图、交友社交网络、商业社交网络等),地点或位置(例如,餐馆、汽车经销商等)的网站、地图应用(例如,用于提供方向的网站)等。例如,内容服务器154可以从消息应用103接收对信息的请求,执行搜索,并在请求中提供信息。在一些实施例中,内容服务器154可以包括图像中特定类型的内容的分类器,并且可以确定是否在图像的内容(例如,像素)中检测到了任何特定的类别。在一些示例中,消息应用103可以从内容服务器154访问的地图应用请求驾驶方向或估计到达时间。

在一些实施例中,如果用户同意使用这样的数据,则一个或多个服务器150-156(例如,内容服务器154)可以向消息应用103提供用户的档案信息或档案图像,消息应用103可以使用该档案信息或档案图像来识别图像中具有相应社交网络档案的人。在另一示例中,如果已经获取了针对所提供的用户数据的用户同意,则内容服务器154可以向消息应用103提供与在由消息应用10使用的消息中识别的实体有关的信息。例如,内容服务器154可以包括或访问提供关于在图像中识别的地标的信息的电子百科全书,提供用于购买在消息中识别的实体的信息的电子购物网站,在用户同意的情况下提供来自消息中识别的用户的行程的电子日历应用,提供关于可访问消息中的实体的附近位置信息的地图应用,提供消息中提到的菜肴的餐馆的网站等。在一些实施例中,内容服务器154可以与建议服务器156通信以获取信息。内容服务器154可以向建议服务器156提供所请求的信息。

在一些实施例中,一个或多个服务器150-156可以从一个或多个消息应用103接收信息,例如,以更新由这些模块使用或维护的数据库。例如,在内容服务器154维护关于餐馆的网站的情况下,消息应用103可以向内容服务器154提供关于餐馆的更新信息,例如用户在餐馆的最喜欢的菜肴。

服务器135可以包括处理器、内存和网络通信能力。在一些实施例中,服务器135是硬件服务器。服务器135通过信号线128通信地耦合到网络140。信号线128可以是有线连接,例如以太网、同轴电缆、光纤电缆等,或无线连接,如wi-fi、蓝牙或其他无线技术。在一些实施例中,服务器135经由网络140向消息服务器101和客户端设备115中的一个或多个发送数据并从消息服务器101和客户端设备115中的一个或多个接收数据。尽管服务器135被示为一个服务器,但是各种实施例可以包括一个或多个服务器135。服务器135可以将一个或多个机器人程序(例如机器人程序109a和机器人程序113)实施为服务器应用或服务器模块。

在各种实施例中,服务器135可以是管理消息服务器101的相同实体的一部分,例如,消息服务的提供者。在一些实施例中,服务器135可以是第三方服务器,例如,可以由与提供消息应用103a/103b的实体不同的实体控制。

在一些实施例中,服务器135提供或托管机器人程序。机器人程序是在一个或多个计算机上实施的自动服务,用户主要通过文本,例如,经由消息应用103a/103b,进行交互。以下更详细的对机器人程序进行描述。

客户端设备115可以是包括内存和硬件处理器的计算设备,例如,相机、笔记本电脑、平板电脑、移动电话、可穿戴设备、移动电子邮件设备、便携式游戏播放器、便携式音乐播放器、读取器设备、头戴式显示器或能够无线访问网络140的其他电子设备。

在所示实施例中,客户端设备115a经由信号线108耦合到网络140,并且客户端设备115n经由信号线110耦合到网络140。信号线108和110可以是有线连接,例如以太网,或无线连接,例如wi-fi、蓝牙或其他无线技术。客户端设备115a、115n分别由用户125a、125n访问。作为示例,使用图1中的客户端设备115a、115n。虽然图1示出了两个客户端设备115a和115n,但是本公开也适用于具有一个或多个客户端设备115的系统架构。

在一些实施例中,客户端设备115可以是由用户125穿戴的可穿戴设备。例如,客户端设备115可以被包括作为夹子(例如,手环)的一部分、珠宝的一部分、或者一副眼镜的一部分。在另一示例中,客户端设备115可以是智能手表。在各种实施例中,用户125可以在设备的显示器上查看来自消息应用103a/103b的消息,可以经由设备的扬声器或其他输出设备等来访问消息。例如,用户125可以在智能手表或智能手环的显示器上查看消息。在另一示例中,用户125可以经由耦合到客户端设备115或客户端设备115的一部分的耳机(未示出)、客户端设备115的扬声器、客户端设备115的触觉反馈元件等来访问消息。

在一些实施例中,消息应用103b存储在客户端设备115a上。在一些实施例中,消息应用103b(例如,瘦客户端应用、客户端模块等)可以是存储在客户端设备115a上的客户端应用,其具有存储在消息服务器101上的相应的消息应用103a(例如,服务器应用、服务器模块等)。例如,消息应用103b可以将由用户125a在客户端设备115a上创建的消息传输到存储在消息服务器101上的消息应用103a。

在一些实施例中,消息应用103a可以是存储在消息服务器101上的独立应用。用户125a可以使用客户端设备115a上的浏览器或其他软件经由网页访问消息应用103a。在一些实施例中,在客户端设备115a上实施的消息应用103b可以包括与消息服务器101上包括的模块相同或相似的模块。在一些实施例中,消息应用103b可以例如在例如其中一个或多个客户端设备115包括实现与其他客户端设备115交换消息的功能的对等或其他配置中被实施为独立的客户端应用。在这些实施例中,消息服务器101可以包括有限的或不包括消息功能(例如,客户端认证、备份等)。在一些实施例中,消息服务器101可以实施一个或多个机器人程序,例如,机器人程序107a和机器人程序111。

在各种实施例中,消息应用103可以包括与消息应用103相关联并依赖于消息应用103运行的一个或多个嵌入式应用117。嵌入式应用117可以与消息应用的聊天界面交互并提供一个或多个自身的嵌入式界面。这里描述了嵌入式应用的各种特征的示例。

在一些实施例中,消息应用103a/103b可以经由用户界面(例如,作为按钮或其他用户界面元素)向用户125提供一个或多个建议项目,例如建议命令、消息或响应。当用户例如通过在触摸屏上或通过其他输入设备选择相应的用户界面元素而选择了建议项目时,建议项目可以使用户能够快速响应消息。例如通过减少或消除用户键入响应的需要,建议项目可以实现更快的交互。例如当客户端设备缺少文本输入功能时(例如,不包括键盘或麦克风的智能手表),建议项目可以使用户能够快速且容易地响应消息或提供命令。在一些实施例中,可以使用例如被训练来生成响应的机器学习模型的预测模型来生成建议响应。下面参考图7更详细地描述建议项目。

图2是示出根据一些实施例的用于提供嵌入在聊天对话中的程序的示例方法200的流程图。在一些实施例中,例如,方法200可在例如服务器系统(例如,图1所示的消息服务器101)上实施。在一些实施例中,方法200中的一些或全部可以在例如如图1所示的一个或多个客户端设备115的系统上实施,和/或在服务器系统和一个或多个客户端系统两者上实施。在所描述的示例中,实施系统包括一个或多个处理器或处理电路,以及一个或多个存储设备,例如数据库或其他可访问存储。在一些实施例中,一个或多个服务器和/或客户端的不同组件可以执行方法200的不同块或其他部分。

在框202中,检查是否已获取在方法200的实施中使用用户数据的用户同意(例如,用户许可)。例如,用户数据可包括用户例如使用消息应用103发送或接收的消息、用户偏好、用户生物特征信息、用户特征(标识、姓名、年龄、性别、职业等)、关于用户的社交网络和联系人的信息、社交和其他类型的动作和活动、内容、评级和用户创建或提交的意见、用户的当前位置、历史用户数据、用户生成、接收和/或访问的图像、用户观看或共享的视频等。在一些实施例中,这里所描述的方法的一个或多个框可以使用这样的用户数据。

如果已经从其用户数据可以在方法200中使用的相关的用户获取了用户同意,则在框204中,确定这里的方法的框可以在可能使用用户数据的情况下实施,如同针对那些框描述的那样,并且该方法继续到框208。如果尚未获取用户同意,则在框206中确定将在不使用用户数据的情况下实施框,并且该方法继续到框208。在一些实施例中,如果尚未获取用户许可,则在不使用用户数据的情况下和利用合成数据和/或通用或公共可访问和可公开使用的数据来实施框。

这里描述的实施例可以提供嵌入式应用程序,该嵌入式应用程序与提供聊天界面中的聊天对话的消息应用相关联地运行。消息应用可以是如上所述的消息应用103,并且可以全部或部分地在用户设备(例如,客户端设备或其他设备)上运行,或者可以完全或部分地在服务器(例如,消息服务器101)上运行,并向用户设备提供数据以在用户设备上显示。

在一些示例中,消息应用103可以是即时消息应用、社交网络应用、电子邮件应用、多媒体消息应用等。例如,如果消息应用是即时消息应用,则可以接收消息作为特定用户125a与参与设备的一个或多个其他用户125之间的即时消息通信的一部分,例如,在具有两个或更多参与者的消息会话中(例如,聊天、组或聊天对话)等。聊天或者聊天对话是在其中多个参与用户彼此传送消息(例如,包括各种类型的内容数据)的消息会话。在一些实施例中,用户可以通过将消息输入到由消息应用实施的聊天对话中来向其他用户发送消息。在一些实施例中,用户可以通过发送电话号码(例如,当消息应用103通过sms、或者利用电话号码的另一消息应用工作时)或者从联系人列表中选择接收用户(例如,当消息应用103通过富通信服务(richcommunicationsservices,rcs)或另一聊天界面工作时)来向特定的其他用户发送消息。在一些实施例中,消息应用103可以提供参与设备之间的实时通信,例如,音频(语音)呼叫和/或视频呼叫,其中在一个或多个参与设备处(例如,使用相机和麦克风)捕获实时音频数据和/或视频数据,并且该数据被发送到并输出在参与聊天对话(例如,电话会议)的其他设备的聊天界面(和扬声器)上。

消息应用103可以显示聊天界面,该聊天界面显示聊天对话的消息,例如,用户设备的用户发送的消息,以及用户设备从其他设备接收的消息。如这里所提到的,聊天界面具有显示的用户界面组件(例如,包括所显示的界面元素),并且具有执行用户输入的接收、发送和接收消息、显示消息等的数据接收和交换组件。

在这里描述的实施例中,可以与消息应用相关联地运行一个或多个嵌入式应用。这里的嵌入式应用是指消息嵌入式或聊天嵌入式程序,例如,与正在运行的消息应用相关联地运行或在正在运行的消息应用的上下文中运行、并且依赖于消息应用的运行的程序。例如,如果消息应用正在设备上提供输出(例如,聊天界面),则嵌入式应用是能够在设备上运行的代码(例如,脚本),并且如果消息应用退出并且不再在设备上提供输出,则嵌入式应用退出(例如,不再在设备上运行)。例如,在一些实施例中,嵌入式应用可以接收提供给嵌入式界面或在嵌入式界面中的输入,例如,用户界面元素、文本或嵌入式界面中的其他显示对象的选择、输入设备的手势(诸如在触摸屏、触摸板等的触敏输入表面上的轻击、形状、曲线或线条等的描绘)、和/或由嵌入式界面经由触摸屏或其他输入设备接收的其他用户输入。如这里所提到的,嵌入式界面包括所显示的组件,其可以包括用户界面组件(例如,显示的用户界面元素)以及包括内容数据的显示的输出数据,例如媒体项目内容数据、游戏数据、文档数据、用户评论、消息等。嵌入式界面还包括数据接收组件,其执行在用户设备处例如经由触摸屏、键盘或用户的其他输入设备的用户输入的接收。在一些实施例中,嵌入式界面与聊天界面相关联地显示。例如,嵌入式界面可以显示为聊天界面的一部分,例如,在聊天界面的边界或显示区域内、部分地覆盖聊天界面、或者与聊天界面相邻。在一些实施例中,聊天界面的至少一部分是可见的,并且嵌入式界面在显示器上是可见的。

在一些实施例中,嵌入式应用可以接收在关联的聊天对话中的关联的聊天界面中提供的例如作为文本命令或聊天界面元素的选择的输入。在一些实施例中,嵌入式应用在嵌入式界面中提供输出,和/或可以在聊天界面中提供输出,例如,将作为文本的输出提供给显示在聊天界面中的聊天对话或提供其他聊天界面输出。例如,嵌入式应用向嵌入式界面的输出可以称为嵌入式输出数据,并且可以包括由嵌入式应用生成的数据和/或嵌入式应用经由关联的消息应用从一个或多个其他源(例如,源包括在第一设备上运行的不同应用程序、通过网络连接的一个或多个服务器、在关联的消息应用的聊天对话中的一个或多个聊天设备等)接收的数据。从嵌入式应用发送到其他应用程序和/或其他设备的数据可以从嵌入式应用被提供给消息应用,然后消息应用将数据(或处理后的数据形式)传递到其他程序或设备。类似地,在用户设备处从其他程序或设备接收的要提供给针对该用户设备运行的嵌入式应用的数据可以由消息应用接收,并且从消息应用被提供给嵌入式应用。

在整个说明书中描述了嵌入式应用的一些示例。在一些示例实施例中,嵌入式应用可以是在沙盒显示过程内运行的代码,以例如在聊天界面的显示区域内或与聊天界面具有其他视觉关联地显示应用数据和嵌入式界面。例如,在一些实施例中,嵌入式应用可以实施web界面视图以在聊天界面内提供嵌入式界面,其中视图可以显示来自网页的数据和/或实施与网页连接(javascript、css、html等)运行的代码。在一些实施例中,嵌入式应用可以由第三方提供,例如,与提供关联的消息应用和/或与嵌入式应用通信的其他组件的一方不同的一方。在一些实施例中,当从一个嵌入式应用的显示切换到不同的嵌入式应用时,可以提供缓冲(例如,双缓冲技术)。例如,当在前台显示和使用第一嵌入式(或其他)应用和嵌入式界面时,可以将未显示的第二嵌入式应用的嵌入式应用代码和/或输出数据下载、安装和/或加载到内存中,用于在设备的操作系统的后台显示。显示的第一嵌入式界面可以通过显示的动画和用户界面切换与第二嵌入式界面交换。在一些示例中,当正在下载嵌入式应用时,可以在代码在后台下载和/或安装在用户设备上时显示加载指示符。

在一些示例中,嵌入式应用可以使用应用程序接口(applicationprograminterface,api)与由消息应用实施的框架进行通信和接合,该应用程序接口提供一组预定义协议和能够实现通信的其他工具。例如,api可以用于传送来自参与嵌入式会话的设备(例如,成员设备)的特定数据,其中该数据连接并同步嵌入式设备的嵌入式应用程序(例如,共享的嵌入式应用)。在一些实施例中,消息应用框架可以提供一组api以向嵌入式应用开发人员提供能够实现聊天对话、设备、嵌入式会话和嵌入式应用之间的交互的能力。

在一些示例实施例中,如果成员用户退出嵌入式应用,则在一段时间(例如,20秒、1分钟等)内,该嵌入式应用可以在该成员用户的成员设备的后台(例如,在成员设备的消息应用或操作系统的后台)保持运行。例如,这可以在用户与聊天界面交互后不久切换回使用嵌入式应用的情形下执行。在一些示例中,用户可以打开嵌入式游戏应用,向游戏输入移动,关闭嵌入式游戏应用和嵌入式界面(使得它们在后台运行),响应于另一个用户的请求将文件发送或附加到聊天对话中,并立即重新打开嵌入式游戏应用和嵌入式界面,以将它们切换到前台。如果聊天对话结束,例如,如果用户关闭消息应用,或者在一些实施例中,用户切换到不同的聊天对话,则可以终止后台运行的嵌入式应用。类似地,如果用户关闭或退出消息应用,则可以将消息应用发送到用户设备的后台达特定时间段,并且可以在此期间暂停激活的嵌入式应用。用户可以切换到使用另一个应用,然后当消息应用被选择在前台运行时恢复使用嵌入式应用。因此,嵌入式应用可以被绑定到聊天对话的使用周期。

在各种实施例中,一个或多个用户可以是机器人程序。例如,在一些实施例中,这里提到的聊天用户或成员用户可以是机器人程序。在这种情形下,与“聊天用户”(机器人程序)相关联的“用户设备”可以是提供机器人程序的服务器设备。在一些示例中,机器人程序可以是辅助机器人程序、购物机器人程序、搜索机器人程序等。在一些实施例中,机器人可以是以软件和/或硬件实施的自动代理。在一些实施例中,机器人可以代表或者关联摄像机(例如,安全摄像机、网络摄像机、监视摄像机等)、电器(例如,智能冰箱、警报设备、工业设备等)、成像设备(例如,显微镜、医学成像设备等),并通过消息应用103发送一个或多个图像。在包括一个或多个作为机器人程序的的用户的实施例中,从机器人程序的所有者或操作者获取使用机器人程序生成的消息的同意。在一些实施例中,同意可以被指定为机器人程序、相机、电器等的配置参数,并且在机器人程序与消息应用103交互时被提供给消息应用103。

在框208中,使第一消息应用在第一用户设备上显示第一聊天界面。聊天界面是用户界面,被配置为接收信息和输出与第一设备可以参与的一个或多个聊天对话相关的信息。例如,响应于来自使用或以其他方式关联第一设备或其他输入的第一用户的用户输入,聊天界面可以显示在第一设备的显示设备上,例如显示屏。在一些实施例中,第一消息应用在第一设备上运行,而在其他实施例中,第一消息应用可以在经由网络连接到第一设备的不同设备(例如,消息服务器)上部分或全部地运行,并且可以将数据发送到第一设备以由第一设备显示。

第一用户和第一设备可以使用聊天界面加入一个或多个聊天对话。例如,来自第一设备的用户的用户输入可以使用用户设备启动与一个或多个其他用户的新聊天对话,和/或加入与一个或多个其他用户和设备的通过网络通信的现有聊天对话。每个聊天对话包括参与该特定聊天对话的一组聊天用户(及其关联的用户设备)。在一些实施例中,用户可以同时参与多个不同的聊天对话。在一些实施例中,每个聊天用户与聊天对话中的相应聊天标识相关联。聊天标识可以指的是聊天界面中用户的视觉表示(例如,用户头部的描绘、用户名、用户图片等)。聊天标识包括有效描绘聊天用户的文本、图像或多媒体数据(例如,用户照片、用户图标、用户名、描绘聊天用户的动画等)。聊天标识还可以或替代地指的是用户标识符(例如,标识(id)数据,id号码等)。聊天标识包括聊天用户在消息应用的上下文中的唯一标识符。例如,唯一标识符可以是用户名。在另一示例中,唯一标识符可以是聊天用户的数据库的标识符(例如,存储用户标识的数据库表的主关键字)。在向嵌入式应用提供聊天标识时,可以提供数据库标识符或用户名。

在一些实施例中,聊天对话可以被认为是用户的聊天组,并且可以具有持续存在性,无论其用户当前是否正在参与聊天对话,或者当前是否已登录或使用用户设备。例如,如果所有聊天用户退出聊天对话,则消息应用可以存储聊天对话的对话标识符(id)以及聊天标识和用户标识,并且当一个或多个聊天用户登录或使用聊天界面恢复对话时,可以恢复聊天对话。消息应用的一些实施例可以分配和存储标识特定聊天对话的对话id,并且与对话id相关联地存储关联的当前聊天用户(和/或聊天设备)的标识。在一些实施例中,可以将新用户添加到聊天对话,并且可以从聊天对话中移除一个或多个用户。

聊天界面可以显示第一用户参与的每个聊天对话的信息,包括第一设备从其他聊天设备和参与聊天对话的聊天用户接收的消息,以及与聊天用户状态相关的信息,消息功能的选项,聊天对话中发生的事件等。聊天界面可以包括允许第一设备的或与第一设备相关联的用户(例如,第一用户)提供用户输入的界面特征,包括实现这样的特征的界面元素。例如,用户可以在第一设备上撰写消息并将消息输入到聊天对话中。在一些示例中,用户可以经由触摸屏、物理按钮或键盘、语音输入或其他类型的输入向聊天界面提供用户输入。

在框210中,由第一设备接收输入,该第一设备选择第一嵌入式应用以启动(例如,在第一设备上打开或执行嵌入式应用)并与聊天用户共享。输入可以是在第一设备本地从第一用户接收的用户输入。在一些示例中,可以由第一设备显示(或以其他方式呈现或输出)列出可用嵌入式应用的菜单或其他选项集,并且用户输入可以从选项中选择第一嵌入式应用。第一嵌入式应用与当前在消息应用中激活的特定聊天对话相关联。例如,在一些实施例中,可以在显示特定聊天对话的聊天界面中显示或以其他方式实现选择和打开第一嵌入式应用的一个或多个选项,并且这样的选项的选择使得第一嵌入式应用与该聊天对话相关联地运行。在一些额外的示例中,用户输入可以包括在聊天界面中输入的一个或多个文本命令,就像撰写的消息的一部分一样,其中文本命令作为选择第一嵌入式应用启动的命令被接收。在一些示例中,以特定语法字符或其他预定义格式开头的文本可以指示这样的命令。

在一些实施例中,选择第一嵌入式应用打开的输入还可以指定第一嵌入式应用将与参与相关联的聊天对话的一个或多个其他聊天用户和用户设备共享。该共享选择允许在第一设备和运行嵌入式应用的本地版本并参与聊天对话的一个或多个其他设备之间创建嵌入式会话(见下面的框214)。在一些实施例中,可以替代地选择第一嵌入式应用打开而不与其他聊天用户共享,这将导致第一嵌入式应用被运行,而不启动嵌入式会话并且没有其他设备接收与第一嵌入式应用相关的数据。在一些实施例中,启动嵌入式应用的选择导致共享嵌入式会话自动(或基于存储的用户偏好数据)启动。在一些实施例中,嵌入式应用(例如,在如下面的框212中的嵌入式界面中)不输出显示,直到至少一个其他聊天用户已加入与第一嵌入式应用相关联的嵌入式会话。

在框212中,第一嵌入式应用通过网络下载和/或在第一设备上运行,并且与聊天界面相关联地显示嵌入式界面。例如,可以响应于在框210中接收的选择来下载第一嵌入式应用。在一些实施例中,可以从托管嵌入式应用的服务器系统(例如,嵌入式应用服务器150)下载第一嵌入式应用。在一些实施例中,第一嵌入式应用的下载可以例如作为第一设备的消息应用和/或操作系统的后台处理,在第一设备的操作环境的后台发生。这允许程序和特征(例如消息应用的聊天界面)在下载期间在第一设备上运行、提供输出,和/或由第一用户使用。在下载第一嵌入式应用之后(和/或期间),其可以由第一个设备运行。在一些实施例中,在已经下载第一嵌入式应用之后,其可以保持存储在第一用户设备的本地非易失性存储器中,使得在第一嵌入式应用的后续启动时,可从本地存储器获取而不是下载(例如,除非第一嵌入式应用有可用的更新)。在一些实施例中,第一嵌入式应用的一个或多个部分或组件可以由与第一设备通信的一个或多个其他设备(例如,一个或多个服务器系统)来运行。可以将嵌入式应用代码专门提供(例如,传输)给已经同意系统访问用户数据的用户的那些设备。在一些实施例中,因为在启动时下载嵌入式应用,所以可以在特定下载中从嵌入式应用服务器提供区域和/或时间敏感的嵌入式应用,例如,专门用于当前假期或日历事件、地理区域等。可以基于用户设备和接收下载的用户的特定地理区域、语言和/或其他特征或限制来限制对专门的嵌入式应用的访问。

在一些实施例中,第一嵌入式应用使得嵌入式界面由第一设备显示。嵌入式界面是嵌入式应用的用户界面,其允许在嵌入式界面中要接收的用户输入被提供给第一嵌入式应用,并允许来自第一嵌入式应用的输出由第一设备显示。在一些实施例中,可以从嵌入式应用向消息应用提供来自第一嵌入式应用的且将通过网络输出到其他设备的信息,并且消息应用可以通过网络将信息从第一设备发送到其他设备。

在一些示例中,嵌入式界面可以与第一设备的显示设备上的聊天界面相关联地显示,使得聊天界面的至少一部分是可见的,例如,聊天界面中的一个或多个聊天消息(例如新输入的聊天消息)在嵌入式界面的显示期间保持可见。在一些实施例中,例如,嵌入式界面可以显示为聊天界面的一部分(例如,在聊天界面的显示区域或边界内),部分地覆盖聊天界面,或者与聊天界面相邻。例如,嵌入式界面可以包括在聊天界面内显示的嵌入式视图。在一些示例中,嵌入式视图可以是聊天界面的一部分,其专用于显示运行的嵌入式应用(例如第一嵌入式应用)的输出数据和/或专用于接收对运行的嵌入式应用(例如第一嵌入式应用)的输入。在一些示例中,嵌入式视图可以是矩形或其他形状的窗口或显示屏的其他部分。

在各种实施例中,可以基于用户设备的方位来显示嵌入式界面,例如,用户设备旋转至横向模式使得嵌入式界面扩展到全屏显示,例如,以允许更具沉浸感的游戏体验、更多的屏幕空间用于编辑任务等。在一些实施例中,如果嵌入式界面处于提供全屏显示的全屏模式(而不是部分屏幕模式),则在聊天对话中由聊天用户输入的聊天消息可以例如作为通知显示在全屏的嵌入式界面内(如果第一用户已经选择以这种方式显示这样的聊天消息)。在一些实施例中,(关于图7描述的)建议响应也可以显示在全屏的嵌入式界面内。

在一些实施例中,嵌入式界面的大小和/或形状可以基于第一用户设备的类型、和/或由第一嵌入式应用在嵌入式界面中显示的信息的类型。在一些示例中,如果第一用户设备是移动设备或具有小显示区域(例如,显示屏)的其他设备的类型,则可以使嵌入式界面的大小占据显示区域的特定百分比,并且允许至少一条聊天消息显示在聊天界面中。对于具有较大显示区域的设备类型(例如,台式计算机、较大的平板设备等),可以显示嵌入式界面以占据显示区域的更小的百分比,从而允许更大的区域用于聊天消息。在一些实施例中,响应于用户输入选择显示的控件,嵌入式界面可以被最大化以占据整个显示区域。在额外的示例中,如果嵌入式应用是显示例如电影数据和图像数据的特定类型的内容数据的媒体播放器应用,(或例如具有图形环境的显示特定类型的游戏的游戏应用),则可以将嵌入式界面的大小设置得更大以查看内容数据,而如果嵌入式应用显示例如文本项目列表或来自音频数据的输出音频的内容数据类型,则可以将嵌入式界面的大小设置得可以更小。在一些实施例中,嵌入式界面可以通过显示屏、虚拟现实显示设备等显示为三维(3d)显示,或者可以显示在增强现实显示设备等之中。

在一些实施例中,可以在启动嵌入式会话之前以及在与其他聊天用户共享嵌入式应用之前,由第一用户将设置参数输入到嵌入式应用。例如,第一用户可以创建嵌入式游戏应用的新游戏实例,并设置游戏参数、选择玩家名称、游戏板大小、玩家颜色、允许加入该特定对话的玩家数量等。在进一步的示例中,用户可以在共享所选择的选项之前使用嵌入式应用在线搜索媒体项目菜单中的视频用以播放、选择旅行目的地、航班、旅馆等,在征求其他会员用户等的意见/投票之前预先选择购物项目(衣服,家具)。

在框214中,启动共享嵌入式会话。嵌入式会话是指定事件,其专用于通过网络参与嵌入式会话和聊天对话的一组特定聊天设备共享使用嵌入式应用,例如,特定聊天设备和共享嵌入式应用之间的信息的共享通信。在一些实施例中,嵌入式会话的每个聊天设备至少部分地运行共享的嵌入式应用的实例(例如,对应的嵌入式应用程序)。关联的聊天设备组和使用关联的聊天设备的聊天用户组共享与嵌入式应用的用户交互和嵌入式应用的输出。例如,在聊天用户组的用户设备上运行的相应嵌入式应用的一个或多个状态是同步的。在一些实施例中,嵌入式会话仅包括来自第一嵌入式应用与其相关联的聊天对话的一个或多个聊天设备,例如,在框210中打开第一嵌入式应用的聊天对话。已加入嵌入式会话的聊天用户是“成员用户”,并且他们的聊天设备是“成员设备”,其是参与嵌入式会话的聊天设备的子集。在一些实施例中,嵌入式会话可以与特定嵌入式会话标识符(id)相关联,该特定嵌入式会话标识符与关联的聊天对话的标识符相关联。会话id可以与该嵌入式会话的当前用户成员相关联。例如,可以将第一设备的用户添加到嵌入式会话的会话用户列表中,该列表列出了嵌入式会话的成员。第一设备和/或会话服务器可以存储和更新这样的会话用户列表。

在一些实施例中,嵌入式会话可以由例如(嵌入式)会话服务器152的服务器管理,其可以是从参与嵌入式会话的一个或多个成员设备接收数据、同步成员设备上的嵌入式应用的状态、并将数据输出到一个或多个成员设备的服务器系统。在该示例中,响应于在框210中接收输入和/或响应于在框212中运行第一嵌入式应用,第一设备(例如,第一消息应用)可以将数据发送到会话服务器,其中该数据向会话服务器指示第一嵌入式应用已启动。在一些实施例中,会话服务器可以响应于接收这种数据而启动嵌入式会话,并且可以运行能够执行嵌入式对话的一些处理(例如,存储对象、执行处理等)的应用。在一些实施例中,一个或多个客户端设备(例如,启动嵌入式会话的嵌入式应用的第一设备)可以管理嵌入式会话,和/或成员设备可以在彼此之间传送消息而无需服务器处理。例如,可以将数据从每个成员设备发送到消息路由器,该消息路由器将数据转发到其他成员设备而无需影响嵌入式会话的处理。

在框216中,将指示嵌入式会话激活的通知信息传输到聊天对话的其他设备。在一些实施例中,通知信息可以通过网络从会话服务器传送到参与聊天对话的其他设备(“聊天设备”),例如,发送到所有聊天设备。在一些实施例中,通知信息在会话服务器(或在第一消息应用)处生成,并经由会话服务器发送到其他聊天设备。通知信息可以包括嵌入式会话的标识和聊天对话的标识,以及作为嵌入式会话的当前成员(在该示例中当前是第一用户)的会话用户的标识的列表。

在框218中,使聊天用户能够加入和/或离开嵌入式会话,并且可以通知聊天设备这种加入和离开事件。例如,第一设备可以将加入信息传输到参与聊天对话的一个或多个其他用户设备(例如,在一些实施例中,可以包括在框216的通知中,或者可以与通知分开传输)。加入信息可以使得在其他聊天设备处显示界面元素,该界面元素可接受每个聊天设备处的用户输入。响应于在特定聊天设备上的界面元素处接收用户输入,特定设备被指定为嵌入式会话的成员设备。在一些示例实施例中,通过选择在聊天用户的用户设备上呈现的显示的“加入”按钮,聊天用户能够加入嵌入式会话作为成员用户。在一些实施例中,例如,响应于在聊天用户的设备上显示的框216的通知,聊天用户可以输入命令以加入嵌入式会话。下面参考图3和图4描述加入嵌入式会话的设备的一些示例。

成员用户可以通过退出或关闭嵌入式应用和/或通过退出或关闭消息应用来离开嵌入式会话。在一些实施例中,退出或关闭消息应用和/或嵌入式应用不会引发用户失去在嵌入式应用或嵌入式会话中的成员资格。在这样的实施例中,用户仍然是嵌入式应用的成员,并且例如在其他成员设备上显示的聊天界面或嵌入式界面中被简单地指示为离线。在这种实施例的示例中,用户可以通过离开与嵌入应用关联的聊天对话而离开嵌入会话(中断嵌入式应用成员资格)。在一些示例中,向聊天设备发送指示用户已加入或离开嵌入式会话的通知以及用户(或用户设备)的标识。可以将通知发送到可以是或者可以不是嵌入式会话的成员设备的聊天设备。在一些实施例中,响应于嵌入式会话的成员用户离开会话,仅向成员用户的设备发送通知。

已加入嵌入式会话的每个成员设备下载和/或运行相应的嵌入式应用(对应于第一嵌入式应用和嵌入式会话),其提供与在相应特定用户设备上显示的相应聊天界面相关联的相应嵌入式界面。成员设备的嵌入式应用通过网络在嵌入式会话中相互通信。

在框220中,在第一设备上运行的第一嵌入式应用操作以接收输入、更新状态和提供输出。例如,由第一嵌入式应用接收的输入可以包括从第一设备的用户提供的用户输入。在一些示例中,可以在显示的嵌入式界面中接收用户输入,例如,以选择显示在嵌入式界面内的元素、用控制器或手势指定方向数据、指定文本数据等。在额外的示例中,可以在聊天界面中接收用户输入,例如,作为消息输入的文本命令或在聊天界面中对界面元素的选择。在聊天界面中接收的输入可以被处理和/或从消息应用被传递到嵌入式应用。在一些实施例中,嵌入式应用可以访问聊天对话信息(例如,用户名或聊天标识、用户图标等)和/或访问用户档案信息(用户名、档案图片、聊天模糊id),这可以允许个性化体验。在一些实施例中,嵌入式应用不能访问聊天流(例如,在聊天对话中输入的聊天消息)。在其他实施例中,嵌入式应用可以完全访问聊天流,和/或嵌入式应用可以请求对聊天输入的更高级访问权限(被用户允许),和/或可以通过消息应用被提供聊天用户在聊天对话中输入的聊天消息的摘要。在额外的示例中,嵌入式应用可以直接从(例如,存储在用户设备或服务器上的)与聊天对话相关联的聊天对话数据库中读取输入的聊天消息,和/或可以通过服务器或机器人程序接收聊天界面中的聊天消息和其他用户输入。用户输入可以是触摸屏输入、从显示的键盘或物理键盘提供的文本输入、从语音输入提供的命令、或其他类型的输入。

此外,第一嵌入式应用可以接收输入(数据),包括通过网络从嵌入式会话的成员设备接收的事件信息。例如,事件信息可以包括由其他成员用户通过运行在他们的设备上的并且与第一嵌入式应用相对应的嵌入式应用向显示在他们的设备上的关联的嵌入式界面提供的用户输入。该用户输入和/或其他数据(例如,基于该用户输入的嵌入式应用的更新或状态)可以通过网络发送到第一用户设备。

另外,输入可以包括指示在一个或多个其他成员设备(和/或会话服务器)上运行的一个或多个对应的嵌入式应用中发生的一个或多个事件和/或应用状态的事件信息,并且该事件信息可以通过网络发送到第一用户设备。例如,事件信息可以描述基于由该嵌入式应用接收的用户输入而在特定设备上运行的相应嵌入式应用内发生的事件,并且该信息被发送到其他成员设备,以同步嵌入式会话的嵌入式应用。在一些实施例中,来自其他成员设备的事件信息可以由服务器系统(例如,消息服务器、会话服务器等)传递到第一嵌入式应用。在一些实施例中,输入由第一设备的第一消息应用接收,第一消息应用向第一嵌入式应用提供信息。

此外,第一嵌入式应用可以通过网络从一个或多个其他设备(例如,成员设备、服务器系统等)接收内容数据。例如,如果第一嵌入式应用是视频播放应用,则它可以通过网络从内容服务器接收视频数据流,并在嵌入式界面中显示视频数据。如果第一嵌入式应用是游戏,则它可以从其他成员设备和/或游戏服务器接收游戏数据,并在嵌入式界面中显示游戏数据。如果第一嵌入式应用显示共享内容文档(例如,项目或事件列表、文本文档等)、旅行行程或其他信息,则它可以从其他成员设备和/或服务器系统接收这些项目的内容数据,并在嵌入式界面中显示内容数据。在一些实施例中,内容数据由第一设备的第一消息应用接收,第一消息应用将内容数据提供给第一嵌入式应用。

在一些示例中,基于输入更新第一嵌入式应用。例如,第一嵌入式应用可以基于从例如改变嵌入式应用的一个或多个状态的第一用户和/或一个或多个成员设备(和/或服务器系统)接收的输入数据来接收数据。在改变状态的一些示例中,媒体项目的回放可以被更新到媒体项目中的不同点(例如,视频中的不同时间点),游戏可以被更新为一个或多个不同的游戏状态(例如,指示游戏环境中游戏块(gamepiece)或玩家角色的不同位置的游戏状态,指示获胜、失败或玩家的得分变化的游戏状态等),共享列表可以被更新为添加、移除或更改列表上的一个或多个项目,剧院座位的预订可以被输入、改变时间或地点、或移除等。类似地,输入可以包括描述嵌入式会话的事件的事件信息(例如,在成员设备的相应的嵌入式应用中或提供嵌入式会话中的数据的服务器中的事件),例如基于用户输入在游戏中发生的事件(例如,由在不同成员设备或服务器上运行的游戏代码确定的游戏事件)。该事件信息可以使第一嵌入式应用更新其状态,以与嵌入式会话同步,例如,与一个或多个相应的嵌入式应用同步。在一些实施例中,可以基于在各个成员设备处接收的输入和事件信息,类似地更新其他成员设备的其他嵌入式应用。

由嵌入式应用提供的输出是基于接收的输入和/或在嵌入式应用中发生的事件。例如,输出可以包括嵌入式界面中显示的输出数据。例如,嵌入式界面可以显示由嵌入式应用提供的界面元素、控件和其他特征。在另一个示例中,嵌入式应用可以使数据显示在嵌入式界面中以提供图形游戏环境、三维(3-d)环境等(例如在显示屏上的显示、通过虚拟现实和/或增强现实显示设备的显示等)。在一些实施例中,输出可以包括由第一嵌入式应用和第一设备从不同设备接收的数据,例如,从诸如内容服务器154的服务器或从嵌入会话的成员设备接收的内容数据。

在一些实施例中,可以为显示输出数据的设备的特定用户定制由嵌入式界面显示的输出数据。例如,第一用户可以已经存储了指示显示器上的嵌入式界面的位置、大小、形状等的用户偏好,以及用户偏好的颜色机制或嵌入式界面中显示的输出数据的其他视觉特征。在一些示例中,第一用户可以已经存储了特定于特定嵌入式应用的用户偏好,例如,指示指定的嵌入式应用中的用户偏好的用户状态或角色的偏好,用于特定类型的嵌入式应用的用户偏好的界面元素布局等。例如,这种偏好可以从消息应用提供给嵌入式应用并由嵌入式应用实施。

在一些示例中,从第一嵌入式应用提供的输出可以包括对由第一设备显示的嵌入式界面(例如,嵌入式视图)的视觉更新。例如,可以基于对时间点的更新来显示在新时间点上可播放的媒体数据(例如,图像或视频数据),可以显示对所显示的游戏的一个或多个改变,可以显示对内容文档(列表、文件、图表等)的改变等。

在进一步的示例中,第一嵌入式应用可以处理来自聊天对话的内容数据(例如,解析和/或以其他方式处理由消息应用提供的聊天消息)以在嵌入式界面中呈现输出数据,和/或嵌入式界面本身,其与关联的聊天对话中提到的一个或多个主题在语境上相关。例如,对话中的聊天消息可能已经包括要播放的特定媒体项目的指示,并且该媒体项目可以由嵌入式应用自动选择和播放。在另一示例中,聊天消息可以指示用户期望在游戏中的特定侧或队进行游戏,并且用户可以被嵌入式应用自动分配到该队。嵌入式界面的多个视觉外观(例如,颜色、视觉样式等),和/或显示在嵌入式界面中的不同的可用选择或控件可以在嵌入式界面的不同版本中提供。例如,可以基于用户状态或用户的角色、所播放的媒体项目的类型(例如,视频与图像)等,针对不同的成员设备以不同的版本显示嵌入式界面。

在额外的示例中,嵌入式应用可以汇总对话并自动存储可以在稍后显示的重要信息。例如,用户可以打开“概述”嵌入式应用,并且该嵌入式应用可以显示用户所指定的一段时间内和/或该用户离线的一段时间内的对话的聊天用户所输入的消息的概述,而不是(或还有)显示许多要阅读的聊天消息的记录。

在额外的示例中,嵌入式应用可以是在用户设备上或在不同设备上运行的完整应用的“轻量级”(例如,特征减少的或的功能减少)版本。轻量级版本是完整应用的版本,其需要较少的存储空间、运行内存等,可以在不发起完整应用的情况下运行,并且可以具有完整应用的特征和/或功能的子集(例如,少于完整集合)。在一些示例中,完整游戏应用可以安装在第一用户的不同设备(例如,台式计算机或笔记本电脑)上,并且游戏应用的轻量级版本可以作为嵌入式应用运行在用户设备上。这种轻量级游戏应用可以允许第一用户在嵌入式界面中提供用户输入,以改变与第一用户或完整游戏应用中使用的第一用户的帐户相关的游戏设置或游戏数据。这样的改变可以包括管理第一用户在完整游戏应用中使用的游戏资源,例如,组织游戏项目的详细目录、在游戏内购买或销售项目、为第一用户的账户的特定游戏能力分配得分、改变偏好或显示设置、执行简单的游戏动作等。用户使用轻量级应用做出的改变被保存到完整的游戏应用中,例如,保存在服务器处的用户帐户中,并在运行完整的应用时由完整的游戏应用访问,并且可以例如与服务器同步。类似地,可以使用用于媒体项目播放器程序、图形编辑程序、文字处理器或其他应用程序的轻量级版本进行改变。在一些实施例中,例如,当第一用户不在线时,嵌入式会话中的其他成员用户可以共享轻量级应用,以调整其完整应用的数据和设置和/或改变第一用户的数据和设置。在一些示例中,轻量级版本的嵌入式应用可以在用户设备上提供运行在不同设备上的应用的共享的第二屏幕体验。

在一些实施例中,嵌入式应用可以触发外部应用的启动和运行,该外部应用例如是在第一用户设备或与第一用户设备通信的其他设备上的不同嵌入式应用或消息应用外部的其他应用。例如,外部应用可以是类似于以上所描述的与由嵌入式应用实施的轻量级版本相对应的完整应用。在一些示例中,嵌入式应用可以启动外部应用以完成任务的处理(例如,确定交易的结果、提供渲染的显示位图等)。在一些实施例中,嵌入式应用可以提供要在聊天界面和聊天对话中显示的可选数据(例如,词语、链接、按钮等)。例如,嵌入式应用可以向消息应用提供可选数据,并且消息应用可以在聊天界面和聊天对话中显示可选数据。可选内容可通过用户输入选择,例如,可通过触摸屏或其他输入设备点击。当通过用户输入进行选择时,可选数据可以使命令被发送到设备的操作系统以(例如,在用户设备上)启动和运行外部应用,其中可以在可选数据中识别其他应用或其他应用可以与可选数据相关联(例如,与可选数据的类型相关联的默认应用)。

在进一步的示例中,当启动如上所述的外部应用时,诸如参数、配置设置和/或自变量的关联数据可以被传递到外部应用,以从外部应用呈现特定数据。在一些示例中,嵌入式应用可以生成与特定地址相关联的地图图标,并且该图标显示在聊天界面中。当通过用户输入选择图标时,地图应用程序被启动,并在视图中显示包括选择的关联地址的位置的地图。在额外的示例中,可以通过选择由嵌入式应用发送到聊天界面的项目描述来启动外部购物应用,并且外部购物应用的结算购物显示可以包括自动填充到购物显示的字段中的用户的信息。在进一步的示例中,用户使用共享的嵌入式预订应用来选择酒店位置和房间,并且在聊天界面或嵌入式界面中选择显示的控件(例如,“预订酒店房间”按钮)在用户设备上打开外部完整预订应用。完整预订应用显示自动填充有来自嵌入式应用的预订信息的预订界面,并且用户可以在预订界面中选择“付款”按钮,以针对该预订向酒店提供付款。

在一些实施例中,第一嵌入式应用可以检测安装在第一用户设备上的一个或多个外部应用,并修改由一个或多个外部应用在第一用户设备上显示的内容数据。例如,嵌入式应用可以是完整版(外部)应用(完整应用)的轻量级版本(例如,轻量级应用)。例如,如果第一用户设备上的轻量级应用检测到在第一用户设备上安装了相应的完整应用,则轻量级应用可以通过例如经由消息应用与完整应用通信,而实现完整应用中的特殊功能(例如,额外的控制、显示数据等)。在一些实施例中,可以在完整应用和轻量级应用(嵌入式应用)之间提供互补关系。在一些示例中,完整应用可以在后台传送数据(例如,不由第一用户设备显示),使得轻量级应用可以在后台直接与完整应用通信以访问或交换数据。该通信可以触发轻量级应用和/或完整应用中的显示的数据和选项,例如,不需要轻量级应用和认证服务器之间的额外的认证。例如,完整预订应用上的登录处理可以由相应的轻量级应用使用用户在用户设备上的完整应用内注册的完整应用帐户而触发,并且不需要用户在轻量级应用中重新认证以执行预订。

在一些实施例中,来自第一嵌入式应用的输出可以包括提供给第一设备的聊天界面和/或提供给聊天对话的数据,例如,在参与聊天对话的聊天设备的聊天界面上显示的数据。例如,第一嵌入式应用可以向第一消息应用提供数据,第一消息应用在聊天界面中输出数据和/或向其他聊天设备输出数据。在一些示例中,嵌入式应用可以向消息应用发送描述事件或通知的数据(和/或消息应用可以接收来自其他设备的描述事件和通知的数据),并且消息应用可以在聊天对话中显示描述事件或通知的数据,以提高用户对嵌入式会话中的发生和事件的参与度、保留率、以及意识。例如,向聊天界面的输出可以被设置为文本或其他类型的聊天消息(或图像、视频、音频等)。向聊天对话的输出可以被传输到所有聊天设备,使得其被显示在参与聊天对话的所有用户设备的聊天界面中。在一些实施例中,向聊天对话的输出可以被传输到参与聊天设备的子集以显示输出。例如,输出可以在聊天对话中提供,并且对于成员用户或由第一用户选择或指定的特定聊天用户可见。在一些实施例中,这种输出到聊天界面和聊天对话的数据可以被共享到消息应用外部,例如,共享到在第一用户设备上运行的其他应用。在一些示例中,当被用户选择或被不同的应用处理时,被共享到消息应用外部的这种数据可以使得消息应用在用户设备上打开或移动到前台,并且可以使嵌入式应用运行以及用户加入嵌入式会话。

在一些示例中,输出到聊天对话的通知可以包括在嵌入式会话中发生的与用户动作、内容数据、游戏中的事件等相关的事件的描述,其由会话中的嵌入式应用提供。例如,这样的通知可以包括“用户1和用户2正在观看派对场景电影时间冒险”(由正在播放的场景触发)、“用户1在蟾蜍游戏中重新取得领先分数!”(由该游戏事件触发)、或“用户2刚刚预订了jubilee的音乐会门票!”(由用户在嵌入式应用中预订这些项目而触发)。在一些实施例中,通知可以包括文本、图像、视频、音频输出、电影图或其他类型的内容数据。在一些实施例中,事件的这些描述可以显示在如下所述的交互式卡(interactivecards)上,其可以允许聊天用户向通知/卡提供输入以加入嵌入式会话或向嵌入式应用提供输入。在另外的示例中,嵌入式应用可以访问聊天对话中的聊天用户(例如,模糊聊天id)列表,并且可以向聊天对话发布邀请,以使非成员聊天用户加入嵌入式会话,例如,其中非成员聊天用户可以选择邀请以使他们的设备加入嵌入式会话。

在一些示例中,(例如,在用户的赞同下,如下所述)嵌入式应用可以代表用户向聊天对话发送聊天消息。在一些实施例中,这样的消息可以归属于嵌入式应用而不是用户的聊天标识,例如,嵌入式应用可以将其自己的聊天标识假设作为其聊天消息的发起者。这样的聊天消息可以包括由用户在嵌入式应用中执行编辑而产生的表情包、文本、图像、视频或其他类型的内容数据,由用户在嵌入式应用中编辑的网页内容片段等。在一些示例中,在其他聊天设备的聊天界面中显示的嵌入式应用的属性或名称可以通过用户输入来选择,并且如果被选择,则使得嵌入式应用打开以编辑相同的共享内容数据或编辑另一个内容数据项目。

嵌入式界面可以呈现显示的选项以修改、设置或实现聊天对话的额外功能。例如,这些特征可以包括自动回复特征(选择随机的建议回复或用来自第一用户对先前类似问题的先前回答来自动回答问题),在词语被发送到聊天对话或者被接收用于在第一设备上显示等之前,审查或替换特定词语。例如,嵌入式应用可以使用api来修改用户的聊天对话体验。因此,在一些实施例中,嵌入式应用提供可视界面,该可视界面实现消息应用内的修改的设置和/或提供的特征(例如,提供消息应用特征而不是-或者还有-为聊天用户提供共享内容数据)。

在额外的示例中,输出到聊天对话的通知(或其他数据)可以包括基于聊天用户输入的聊天消息的消息。例如,第一嵌入式应用可以检查用户在聊天对话中输入的聊天消息的列表,确定聊天消息中的俚语与适当词汇的使用(例如,通过使用以俚语和词汇等训练的机器学习模型来查阅存储的字典等),并在通知中输出指示用户在聊天中的书写的分数的评级。嵌入式应用可以确定和在通知中指示,例如,用户在聊天消息中使用特定词语的频率,或者对用户使用特定词语的挑战(并且可以在稍后的通知中证实用户使用了特定词语)。在一些实施例中,输出到聊天对话的通知可以包括从嵌入式会话中的一个或多个成员用户到不同成员用户的消息,其作为嵌入式会话中发生的事件的指示,例如,邀请、对其他用户的挑战(“击败我的分数”、“猜我的画”、“我建造了一座塔,试图摧毁它”)、或者吹嘘/抱怨消息或通知(例如,一名玩家杀死了另一名玩家的角色,一名玩家抱怨另一名玩家偷走了他们的宠物等)。

在一些额外的示例中,可访问聊天对话消息流的嵌入式应用可以提供与聊天对话相关的信息,例如,对话的高级概述、由聊天用户在聊天对话中共享的记录或内容数据的列表、在聊天界面或嵌入式界面中的显示(例如,固定)控件或其他选项,该显示(例如,固定)控件或其他选项允许用户从聊天对话中选择收集的主题、信息或共享内容数据以便为以后保存、保存在用户的收藏夹列表上等。例如,嵌入式应用(例如,特定的“概述器”类型的嵌入式应用)可以检测在聊天对话中共享的主题并提供与那些主题相关的提示、概述和/或动作。在一些示例中,用户1告诉用户2,“不要忘记周六kenny的生日”,并且嵌入式应用在启动时自动将日历事件添加到用户1和用户2的存储在他们的用户设备上的日历中,或者显示建议命令或通知,该命令或通知使得嵌入式应用在用户选择该命令或通知时添加日历事件。在另一示例中,用户3在聊天对话中输入包括用于下周的聚会晚餐的餐馆的地址或位置的消息,并且嵌入式应用在聊天界面中自动固定(持久显示)或以其他方式将该位置存储为概述,以便第一个用户不必在一周之后查看和滚动旧的聊天消息以找到该位置。例如,概述可以包括输入到聊天对话中的描述性的和识别性的信息(例如,时间、位置、姓名、电话号码、地址等),和/或可以包括在聊天对话中从其他聊天用户接收到反应的消息(例如,用户赞同、感叹消息等)。在另一个示例中,用户1在聊天对话中共享从最近公司旅行中捕获的图像,并且嵌入式应用自动(在用户同意的情况下)将图像上传到(例如,通过网络存储在服务器上的)与所有聊天用户共享的共享组相册“拉斯维加斯公司旅行”。在一些实施例中,如果嵌入式应用不具有基于聊天对话内容数据运行这样的动作的能力,则它可以触发具有该能力并且运行动作的不同嵌入式应用(或其他应用)的启动和运行。在一些实施例中,嵌入式应用的一个或多个这样的动作可以被呈现为建议命令和/或建议消息,其可以由第一用户选择以实施所选择的命令,如这里所述。

在一些的实施例中,可以响应于在通过网络与消息应用和/或嵌入式应用通信的服务器上已经发生的一个或多个特定事件或特定类型的事件(例如,服务器事件),例如在服务器上运行的服务器应用中处理的事件,来提供向聊天对话的通知。服务器可以将服务器事件信息发送到一个或多个成员设备,使得消息应用在聊天对话中显示服务器事件信息。在一些示例中,该服务器可以管理其他网络用户的第二内容数据,其中第二内容数据与服务器向第一用户设备上的嵌入式应用提供的第一内容数据(例如,媒体项目数据、游戏数据等)相同或相关。例如,服务器可以通过网络将第二内容数据发送给在其他用户设备(例如,未参与聊天对话的用户设备)上经由其他嵌入式应用和/或其他机制(例如,网站、用户设备上的专用观看应用等)访问内容数据的一个或多个其他用户。服务器可以检测第二内容数据是否与提供给嵌入式应用的第一内容数据相同或相似(例如,媒体项目、游戏等的相同标题)。此外,服务器可以检测与第一内容数据和第二内容数据相关联的用户动作,其可以具备作为服务器事件的资格。例如,服务器可以检测到第二内容数据已经从其他用户接收到多个有利的用户评级,例如,超过阈值数量的有利评级。这可以被预定义为服务器事件,其使得服务器将服务器事件信息(例如,“该电影已经接收到100万个赞同!”)发送到第一嵌入式应用,以显示在嵌入式界面中,和/或发送到消息应用以显示在聊天界面中。

在一些实施例中,如果已经获取用户同意,则从嵌入式应用提供的输出可以包括基于在嵌入式界面中从第一用户处接收的用户输入的输入信息,其中消息应用通过网络将输入信息发送到服务器,例如,用于在其他用户设备等处显示。消息应用还可以或可选地确定和发送输入信息到服务器(如果已经获取用户同意),其中输入信息基于在嵌入式界面外的聊天界面中接收的用户输入。例如,用户输入可以是与在嵌入式会话中播放的内容项目(例如,媒体项目或游戏)相关联的聊天消息、用户评论或评级等。在一些实施例中,这些评论或评级可以由服务器接收并与服务器提供给设备的内容项目相关联。服务器可以向访问服务器上的内容项目的用户设备提供评论或评级。例如,未参与聊天对话的其他用户设备可以例如,经由不同的嵌入式会话或其他应用,来访问服务器上的该内容项目。这样的其他用户设备也可以访问第一用户提供的评论或评级。例如,诸如用户评论或评级的用户输入可以被发送到其他用户设备并显示在其他用户设备上的嵌入式界面或其他应用程序中。

在一些实施例中,如果已经获取了用户同意,则发送到服务器的输入信息可以包括指示已经在第一设备上的嵌入式应用中播放的特定内容项目的信息。服务器可以基于输入信息更新存储的用户对内容项目的选择的历史,其中历史与第一设备的第一用户相关联。存储的历史还可以指示用户对服务器存储的以及在第一用户使用的其他应用中观看的内容项目的选择。在一些实施例中,服务器可以使用所存储的历史来确定给用户的建议内容项目,其(例如,在类型、其他用户的查看等方面)与先前在服务器上被第一用户访问的内容项目相关。在一些实施例中,这样的服务器建议内容项目可以显示在聊天界面中和/或由播放该类型的内容项目的嵌入式应用显示。

此外,如果新条件被触发,则嵌入式应用、机器人程序(参见下面对机器人程序的描述)或服务器生成的信息可以由嵌入式应用、机器人程序或服务器进行更新。在示例中,用户1使用嵌入式媒体播放器应用在聊天对话中共享嵌入式会话中的视频。用户2在他或她的设备上打开相应的嵌入式媒体播放器应用,并对视频进行评论或评估评级。嵌入式应用、机器人程序或服务器可以更新共享的视频,并更新在聊天对话中显示的描述视频的通知,以向聊天用户反映和传播新信息(例如,显示视频现在具有+1个用户赞同、+1个用户评论的指示)。在一些实施例中,关于嵌入式会话的可更新的“交互式卡”在聊天对话中共享,其可以由服务器、机器人程序或嵌入式应用控制。

在一些实施例中,当将来自第一嵌入式应用的输出数据输出到聊天对话和/或服务器以进行显示时,(例如,利用用户可选择的选项)显示提示,以允许第一用户选择是否允许在聊天对话中输出数据。例如,如果用户赞同,则提示可以显示要发送到聊天对话或服务器的消息。在一些实施例中,可以针对特定类型的输出数据(例如,具有预定义关键字的、指示特定类型的事件的特定类型的消息、作为对特定类型的动作或由成员用户向嵌入式应用提供的命令的响应的输出数据等)向聊天对话显示提示而不针对其他类型显示提示。可以为特定类型的嵌入式应用显示提示,并且不为其他类型显示提示。在一些实施例中,第一用户可以具有存储的可访问的用户偏好,该用户偏好被访问以确定要显示提示的条件。例如,用户偏好可以指示该提示应该要求用户同意,以将来自游戏类型的嵌入式应用的输出发送到聊天对话,并且不为媒体播放器类型的应用或其他类型的应用提供提示。

输出还可以包括通过网络(例如,通过相关联的消息应用和/或服务器系统)传输到在其他成员设备上运行的相应嵌入式应用的数据。例如,传输的数据可以包括由第一嵌入式应用从第一用户接收的用户输入(或从其导出的数据),例如,在第一嵌入式应用中选择元素或改变状态。类似于以上所述,所传输的数据可以包括指示在第一嵌入式应用中发生的一个或多个事件的事件信息(例如,基于来自第一用户的用户输入、基于代码和特定条件运行的程序事件、或者第一嵌入式应用本地发生的其他事件)。数据可以提供给第一消息应用,第一消息应用可以通过网络将数据(或处理后的数据形式)传输到其他设备。例如,数据可以被发送到可以将数据发送到其他成员设备的消息路由器(例如,如上所述的会话服务器),和/或数据可以直接被发送到一个或多个成员设备。其他成员设备可以接收和使用用户输入和/或事件信息来更新相应嵌入式应用的状态,从而与第一嵌入式应用同步。

在一些示例中,来自嵌入式应用的输出可以包括指示嵌入式会话中已经发生的一个或多个特定事件(或事件类型)的事件数据。事件数据可以从嵌入式应用被提供给消息应用,消息应用可以基于事件数据而生成通知,并使得通知被显示在聊天界面中并通过网络被发送,以显示在成员设备和/或聊天设备的聊天对话(例如,聊天界面)中。例如,事件可能已经在第一嵌入式应用中发生。在各种示例中,嵌入式会话中的事件可能已经响应于来自第一用户的第一用户输入和从嵌入式会话的一个或多个成员用户接收的其他用户输入而发生。在一些示例中,事件类型可以是改变媒体项目的回放位置、或者在嵌入式媒体播放器应用中启动或停止媒体项目的回放;实现目标、结束游戏或游戏持续时间的特定阶段或部分、或嵌入式游戏应用提供的游戏中的其他游戏事件;修改嵌入式列表应用中的内容文档(例如,共享列表中的项目);通过嵌入式预订应用预订座位等。在一些实施例中,嵌入式会话中的事件可能已经发生在管理嵌入式会话的服务器(例如,会话服务器)上,该服务器将事件数据提供给消息应用,该消息应用可以生成用于在聊天对话中显示的通知。这种服务器上的事件类型可以包括在服务器处通过网络从聊天对话外部的其他用户接收输入数据,与嵌入式会话中播放的内容项目相关的新内容项目的可用性(例如,新媒体项目具有与播放的媒体项目相同的艺术家、作者、演员、制作公司、流派等,或者如果一个或多个成员用户已经提供同意,则新内容项目已知为在一个或多个成员用户的收藏列表上),一个或多个成员用户从服务器断开连接等。

在一些示例中,嵌入式应用可以将控制信息(例如,经由消息应用)输出到在第一用户设备上运行(或启动)或在通过网络与第一用户设备通信的不同设备上运行的外部应用。在一些示例中,嵌入式应用可以将控制信息输出到控制家用电器、车辆功能(关锁/解锁车门、更换恒温器等)或其他类型的设备的应用。例如,可以响应于嵌入式界面中显示的控件(例如,按钮、控制盘等)的选择,或者自动响应于第一用户输入的聊天消息(例如,“打开我的前门”,导致输出控制信息以解锁用户住房的门”)或者基于聊天对话中聊天用户输入的聊天消息(例如,讨论进入汽车的消息,使得嵌入式应用发送控制信号以解锁该汽车的车门),来输出这样的控制信息。在另一示例中,响应于在嵌入式界面或聊天对话中接收来自第一用户和/或其他聊天用户的输入,嵌入式应用可以发送应用数据以影响控制台/桌面游戏的游戏状态。例如,聊天用户可以选择嵌入式界面中的控件以将数据发送到服务器,在服务器中,数据由不同游戏设备上的游戏应用读取以改变游戏资源(如上所述)、或者在游戏设备上开始游戏、在游戏中执行游戏动作等。在另一个例子中,嵌入式应用可以自动向游戏发送信息,该信息使得聊天用户的游戏角色基于来自聊天对话中的聊天用户的聊天消息(例如,“让我们加入游戏”)而形成游戏中的组。在聊天设备上提供的聊天对话可以充当在游戏设备上运行的游戏的玩家之间的聊天界面。在一些实施例中,控制信息可以作为外部应用的建议命令在聊天界面中呈现,如下所述,其可以响应于用户输入的选择而被发送到外部应用。

在另外的示例中,嵌入式应用可以向消息应用提供数据以永久地或临时地修改第一用户在聊天对话中的视觉表示。例如,用户状态或角色可以显示在每个消息或用户名旁边(例如,“用户1-玩家”)或由嵌入式应用赋予的标题旁边(例如,游戏的“用户1-征服者”)。在额外的示例中,可以应用过滤器来修改出现在聊天界面中的用户档案图像和/或修改由第一用户输入的聊天消息(例如,用颜色、边界、框架、贴纸等突出显示)。这种修改可以在第一用户参与嵌入式会话时被提供,和/或作为对嵌入式应用中的成就的奖励被提供。奖励包括解锁其他嵌入式应用,供所有聊天用户使用。消息应用和嵌入式应用之间通过公开的api的结合可以允许这样的功能。

一些嵌入式应用可以基于嵌入式应用的类型和/或响应嵌入式应用或聊天对话中的事件来改变聊天界面中显示的键盘布局、显示的按钮或其他显示的控件(或由操作系统或由用户设备显示的其他界面提供的控件)。例如,可以改变在聊天界面中显示的键盘布局以匹配专用于特定嵌入式游戏应用的游戏控制器。在另一示例中,诸如在游戏中实现目标或在游戏中被击败的事件可以使得一个或多个显示的按钮根据游戏中的增加或减少的用户选项被添加到聊天界面或从聊天界面移除。在另一示例中,当用户输入文本查询以执行对项目(例如,产品)的搜索时,随着更多字符的输入,嵌入式应用可以使得从显示中移除与任何搜索结果不匹配的用于查询的额外的建议字符,或以低于匹配字符的可见度显示(例如,变灰)。

在额外的示例中,各种类型的嵌入式应用可以与消息应用相关联地运行。例如,嵌入式媒体播放器应用可以在关联的嵌入式界面和/或聊天界面中从成员用接收用户输入。输入可以选择诸如视频、图像、音频数据、文档等媒体项目的回放功能,并且从嵌入式应用的输出可以提供媒体项目的回放。嵌入式游戏应用可以从成员用户接收可以改变游戏状态的用户输入,并且应用的输出可以包括指示游戏环境和游戏状态的视觉、听觉和触觉输出。嵌入式共享文档应用可以从成员用户接收可以改变共享内容文档(例如,列表或其他文档)的用户输入,并且嵌入式应用的输出可以显示更新的内容文档。嵌入式旅行行程应用可以接收来自成员用户的用户输入,其可以选择旅行目的地、路线、时间和其他与旅行相关的偏好,并且嵌入式应用的输出可以包括显示可用的旅行路线、选择特定路线、时间的选项和用户输入的旅行方法等。嵌入式预订应用可以显示可选择的选项,其允许成员用户预订酒店、餐馆、电影、会议、骑行、公园、娱乐表演和其他未来事件的位置或席位。例如,这样的嵌入式应用可以从成员用户接收指定预订位置的时间、位置和事件的用户输入(例如,包括用户对图形显示中的座位、桌子或其他位置的选择),并且嵌入式应用可以输出建议事件和日期/时间、成功进行预订或拒绝预订的指示等。在一些实施例中,各种类型的嵌入式应用(例如,具有不同的功能或目的)可以组合成单个嵌入式应用。

在框222中,确定第一消息应用是否已在第一设备处退出。例如,第一设备接收的用户输入可以关闭消息应用。如果已退出第一嵌入式应用,则在框224中,从第一设备的显示器移除聊天界面,包括移除嵌入式界面。在一些实施例中,还从第一设备的内存中移除嵌入式应用。另外,可以将信息发送到管理嵌入式会话的设备,例如会话服务器,以指示第一设备已退出嵌入式会话。在一些实施例中,管理设备(例如,会话服务器)更新会话用户列表,以移除第一用户并将该更新提供给嵌入式会话的其他成员设备。

如果尚未退出消息应用,则在框226中检查第一嵌入式应用是否已在第一设备处关闭。例如,可以在第一设备处从第一用户接收用户输入,其选择聊天界面或嵌入式界面中的显示的元素以关闭嵌入式应用。如果已关闭第一嵌入式应用,则在框228中,从第一设备的显示器中移除嵌入式界面。在一些示例中,嵌入式界面的移除允许聊天界面占据先前由嵌入式界面占据的区域。另外,可以将信息发送到管理嵌入式会话的设备(例如,会话服务器)以指示第一设备已退出嵌入式会话,类似于针对框224所描述的。

在框230中,在一些实施例中,如果存在这样的条件,则在聊天界面中显示指示嵌入式应用正被一个或多个其他成员设备使用的指示。例如,在嵌入式应用继续用于第一用户退出的嵌入式会话中时,该指示可以是聊天界面中显示的图标或其他元素。在一些实施例中,可以通过用户输入来选择指示,以使第一用户和第一设备重新加入嵌入式应用的嵌入式会话,例如,从存储在第一设备的内存中的代码重新运行嵌入式应用,和/或下载并运行嵌入式应用。如果所有用户都已经退出嵌入式应用,和/或如果在阈值时间段之后没有成员用户与嵌入式会话或嵌入式应用进行交互(例如,提供输入),则一些实施例可以移除所显示的指示。

在一些实施例中,多个嵌入式应用可以同时运行,并且第一用户设备可以与聊天界面相关联地显示多个嵌入式界面(例如,类似于如上所述的嵌入式界面)。在一些示例中,多个嵌入式应用可以在第一用户设备上同时运行。在一些实施例中,多个嵌入式应用可以彼此传送数据。例如,一个嵌入式应用可以向另一个嵌入式应用发送命令,以使另一个嵌入式应用更新一个或多个状态、移除或添加成员用户等。

在一些实施例中,消息应用可以管理对话“货币”。这可以是虚拟货币,其可以由嵌入式应用生成,由聊天用户赚取,并且在嵌入式应用内和/或消息应用内与其他聊天用户交换。在一些示例中,用户可以在执行嵌入式应用中的特定任务或目标时(例如,完成游戏中的目标、编辑视频或图像达阈值时间量或阈值数量的编辑操作、播放媒体项目达到阈值时间量、编辑共享列表、完成旅行预订等)接收代币或“硬币”。在各种实施例中,用户可以花费该货币来获取奖励,例如,改变聊天界面的视觉特征、选择新选项、或使用聊天界面的其他特征的能力。在额外的示例中,可以花费该货币以使得能够使用(例如,解锁访问)可被插入到聊天对话中的视觉文本字符、图标或图像(例如,“贴纸包”),能够使用特定对话特征(例如,更改消息文本字体、为聊天标识添加颜色或标题、在聊天对话中使用特定图像或化身等),能够使用特定的嵌入式应用等。在一些实施例中,货币可用于解锁或改进嵌入式应用中的特征(例如,在游戏中使用特定的化身或角色,以货币的折扣访问特定媒体项目,对嵌入式界面的不同的显示外观的使用等)。在另一个例子中,用户可以将特定数量的货币发送给不同的聊天用户,或者可以将获取的奖励或访问权限转移(或复制)给不同的聊天用户以换取许多货币。在一些实施例中,货币可以被转换为真实货币,允许个人对个人的支付(例如,在餐馆拆分账单,或小额债务结算)。

图3示出了根据一些实施例的使用户能够加入嵌入式会话的示例方法300的流程图。在一些示例中,方法300可以包括在图2的框218中。在一些实施例中,方法300可以例如在服务器系统(例如,如图1所示的消息服务器101)上实施。在一些实施例中,方法300中的一些或全部可以在诸如图1中所示的一个或多个客户端设备115的系统上实施,和/或在服务器系统和一个或多个客户端系统两者上实施。在所描述的示例中,实施系统包括一个或多个处理器或处理电路,以及诸如数据库或其他可访问存储器的一个或多个存储设备。在一些实施例中,一个或多个服务器和/或客户端的不同组件可以执行方法300的不同的框或其他部分。

在一些实施例中,方法300可以在与图2的方法200不同的用户设备(例如,第二用户设备)上实施。例如,第二设备可以通过网络与图2的第一设备通信。第二设备正在参与聊天对话,并且嵌入式会话已由参与聊天对话的不同设备的聊天用户启动。在图3的示例中,如同参考图2描述的,嵌入式会话与第一设备的第一嵌入式应用相关联地被启动,并且第二设备参与第一用户和第一设备正在参与的同一聊天对话。

在框302中,检查是否已获取用户同意(例如,用户许可)以在方法300的实施中使用用户数据。例如,用户数据可包括用户例如使用消息应用103发送或接收的消息、用户偏好、用户生物特征信息、用户特征(标识、姓名、年龄、性别、职业等)、关于用户的社交网络和联系人的信息、社交和其他类型的动作和活动、用户创建或提交的内容、评级和意见、用户的当前位置、历史用户数据、用户生成、接收和/或访问的图像、用户观看或共享的视频等。在一些实施例中,这里所描述的方法的一个或多个框可以使用这样的用户数据。

如果已从相关用户获取了可在方法300中使用用户数据的用户同意,则在框304中,确定这里的方法的框可以在能够使用用户数据的情况下实施,如针对这些框所描述的那样,并且该方法继续到框308。如果没有获取用户同意,则在框306中确定在不使用用户数据的情况下实施该框,并且该方法继续到框308。在一些实施例中,如果没有获取用户同意,则在不使用用户数据和利用合成数据和/或通用或可公共访问和可公开使用的数据的情况下实施该框。

在框308中,在第二设备的第二消息应用处接收嵌入式应用的嵌入式会话是激活的指示(例如,通知)。在一些示例中,该指示可以是指示特定的嵌入式应用已被启动以及指示相关联的嵌入式会话已被启动的数据。在一些实施例中,指示可以包括来自发起嵌入式会话的聊天对话的聊天用户的标识。在一些实施例中,例如,在嵌入式会话被启动之后,指示的数据可能已经由会话服务器发送。

在一些实施例中,作为嵌入式会话的当前成员的(例如,已加入嵌入式会话的)聊天用户的标识(例如,用户id)被包括在所接收的指示中。例如,可以在指示中提供参考图1描述的会话用户的列表。或者,可以指示成员用户的当前数量而无需指示成员用户的标识。在一些实施例中,所接收的指示可以包括额外的信息。例如,该信息可以包括自嵌入式会话被启动以来的时间量,嵌入式应用在嵌入式会话中的一个或多个当前状态,和/或与嵌入式会话相关的其他信息。在一些示例中,额外的信息可以包括当前正在播放的、要播放的队列中的、或者针对嵌入式会话以其他方式被处理的媒体项目的名称,在嵌入式会话中被编辑的共享列表(或其他共享文档数据)的当前项目的数量,一个或多个成员用户的关于嵌入式会话的状态(例如,将用户识别为控制者、玩家、观察者等,和/或识别当前正在编辑文档或赢得在嵌入式会话中实施的游戏的用户等),到目前为止在嵌入式会话中实现的对象列表(例如,完成播放视频、完成的游戏目标、列表被最终确定等),来自会话的一个或多个当前成员用户对额外的用户成员加入嵌入式会话的特定请求等。在一些实施例中,额外的信息可以包括从嵌入式会话中的一个或多个成员用户到第二用户或其他成员用户的作为嵌入式会话中发生的事件的指示的消息,例如,邀请、对其他用户的挑战(“击败我的分数”、“猜测我的绘图”、“我建造了一座塔试图摧毁它”)、吹嘘或抱怨的通知(例如,玩家杀死了其他玩家的角色、玩家抱怨其他玩家偷走了他们的宠物等)。在一些实施例中,第二设备可以在稍后的时间接收对该信息的更新,例如,对成员用户的当前数量、对嵌入式应用的当前状态的更新等。

在框310中,第二消息应用使得第二设备显示(或其他类型的呈现或输出)通知和加入选项。通知可以包括在框308中接收的一个或多个信息项目,例如,关于在框308中指示的激活的嵌入式会话的描述性信息。例如,这样的信息项目可以包括嵌入式应用在嵌入式会话中使用的名称或标识符、共享的内容数据(例如,播放的媒体项目、编辑的内容文档等)、已加入嵌入式会话的当前成员用户、一个或多个成员用户关于嵌入式会话的状态、参与嵌入式应用的当前状态、来自成员用户的消息、和/或在框308的指示中接收的其他信息。在额外的示例中,通知中的信息可以指嵌入式应用的内容数据或状态(媒体项目的回放位置、游戏中的高分、游戏状态信息)或聊天对话的内容数据(如用户隐私控制所允许的)。此外,通知信息可以包括嵌入式应用下载大小和应用描述、用户许可被请求用于使用用户数据和嵌入式应用将访问的数据类型(例如,用户数据)的指示、已经加入嵌入式会话的用户列表等。在一些实施例中,所显示的通知可以采取如本文所述的“交互式卡”的形式。

加入选项是可选择的选项,其如果通过用户输入被选择,则允许第二用户加入激活的嵌入式会话。在一些实施例中,加入选项可以是在消息应用的聊天界面中显示的界面元素,在消息应用的聊天界面中正在显示聊天对话的数据。例如,加入选项可以显示为聊天界面中显示的通知中的可选控件(例如,按钮)。

在一些实施例中,如果满足一个或多个条件,则加入选项可以被显示、或者可以被突出显示(例如,以亮色、闪烁等显示)或以其他方式在显示器中被强调。例如,可以在存储的第二用户的用户偏好中指定条件。这样的条件可以包括,例如,嵌入式会话是指定类型或者与指定的嵌入式应用相关联,一个或多个指定用户是会话的当前成员用户,指定的用户状态(例如,用户角色)在嵌入式会话中对第二用户仍然可用(例如,尚未分配给其他成员用户),超过指定的时间段(例如,在图2中的第一用户启动嵌入式应用之后的时间段)尚未激活嵌入式会话,在嵌入会话中播放的顺序媒体项目的输出(例如,视频或音频数据)尚未进展到总播放时间的指定百分比或其他条件。

在一些实施例中,除了加入嵌入式会话之外,加入选项还可以包括一个或多个显示的额外选项(例如,显示的对应于额外选项的用户界面元素)。例如,额外选项可以包括选择对嵌入会话中第二用户可以被或将要被分配的一个或多个特定用户状态(例如,用户角色)的命令或请求的选项。用户状态或角色可以由第二用户从一组预定义的用户状态或角色中选择。用户状态可以定义能够由参与嵌入式会话的用户激活的嵌入式应用的一个或多个功能,和/或可以定义用户修改嵌入式应用和嵌入式会话的数据和/或状态的能力。用户状态或角色的示例可以包括控制者(例如,能够修改诸如内容文档(例如,列表)的数据、或者控制媒体项目的回放的用户)、游戏中的玩家(例如,能够是游戏中的赢家或输家)、应用事件的观察者(例如,查看显示的媒体项目的回放或游戏的玩耍并且不能影响媒体项目回放或输入游戏动作)、游戏中的裁判(例如,裁定游戏规则、在游戏中启动下一回合玩耍等)、管理员(例如,启动和停止诸如媒体项目回放或游戏的嵌入式应用的输出或处理、为游戏中的玩家分配或划分资源等)、游戏中多个用户的团队的领导者、允许用户修改嵌入式应用的操作(例如,指定游戏的规则或条件、控制媒体数据的回放或其他输出等)的用户状态或角色等。一些用户状态或角色可以被约束或限制,例如,只有有资格的用户才能被分配这些角色(例如,如果已经达到最大数量,则游戏中玩家的最大数量可以限制额外的用户被分配玩家角色),而其他状态或角色可以是无限制的(例如,游戏的观察者)。在一些实施例中,加入选项可以包括对来自用户的许可的请求,用于嵌入式应用,以使用与第二用户相关联的特定类型的用户数据。

在框312中,由第二设备和第二消息应用接收用户输入,用户输入指令第二用户和第二设备加入嵌入式会话。例如,用户输入可以是经由触摸屏或其他输入设备选择显示的加入选项(如框310所述)的选择性用户输入,用户输入可以输入文本或菜单命令等。在一些实施例中,第二用户和第二用户设备可以加入嵌入式会话,而无需明确地接收指令这样做的用户输入。例如,可以在存储的第二用户的用户偏好中指定一个或多个条件,如果满足一个或多个条件,则一个或多个条件可以指令自动加入嵌入式会话。例如,条件可以包括如上针对框310所述的一个或多个条件。

在一些实施例中,第二消息应用可以接收用户输入,其指定与第二用户加入嵌入式会话相关的额外的输入。例如,用户输入可以选择第二用户在嵌入式会话中的状态。在一些示例中,如上所述,用户输入可以选择或指定嵌入式会话中的用户状态(例如,角色)以分配给第二用户(或由第二用户请求)。在其他实施例中,用户状态或角色可以由第二用户通过第二嵌入式应用或在加入嵌入式会话之后通过会话服务器进行选择。在一些实施例中,用户输入可以包括其他的指定或选择,诸如用户希望退出嵌入式会话的时间,图标、化身、图像的选择,或者与作为嵌入会话的成员的用户相关联的其他数据等。在一些实施例中,可以通过用户输入从聊天界面中显示的菜单或其他选项列表中选择用户状态或其他指定。

在一些实施例中,第二用户和/或一个或多个其他聊天用户可以自动加入到激活的嵌入式会话,或者可以被自动提供定制的选项(例如,在框310中)以加入激活的嵌入式会话。在一些示例中,这样的聊天用户可以基于他们在聊天对话中的输入消息而被检测到这对嵌入式应用感兴趣。在示例中,三个聊天用户向聊天对话输入聊天消息,该聊天对话描述了到特定地理位置(例如,夏威夷)的假期。其中一个聊天用户在聊天界面中发布了命令,以启动嵌入式旅行行程应用,并且其他两个用户自动加入相关联的嵌入式会话,或者基于消息应用或解析这些用户在聊天对话中的消息输入(例如,解析位置名称等)的其他设备,被提供指示嵌入式会话与他们讨论的旅行目的地(例如,夏威夷)相关的通知。

在框314中,响应于加入框312的加入激活的嵌入式会话的用户输入,为第二设备下载和/或运行第二嵌入式应用,并且嵌入式会话被通知加入事件。例如,类似于图1所描述的,第二设备可以向托管嵌入式应用的服务器系统发送请求,并且下载能够从托管嵌入式应用的服务器系统下载的第二嵌入式应用。第二嵌入式应用的下载可以在第一设备的操作环境的后台中发生,例如,类似于如上所述。在下载第二嵌入式应用之后(和/或期间),其可以在第二设备上运行。在一些实施例中,第二嵌入式应用的一个或多个部分或组件可以由与第二设备通信的一个或多个其他设备(例如,一个或多个服务器系统)运行。在一些实施例中,第二嵌入式应用与第一嵌入式应用以及在嵌入式会话的其他成员设备上运行的嵌入式应用相对应。例如,第二嵌入式应用可以包括与图1的第一嵌入式应用相同的代码(或基本相同的代码)。

第二消息应用可以向嵌入式会话发送指示第二用户已选择加入嵌入式会话的通知信息。例如,可以将通知信息发送到会话服务器,会话服务器通过将通知信息(或从其导出的信息)发送到那些成员设备来将加入事件传递给其他成员设备(包括第一设备)。在一些实施例中,会话服务器可以更新由会话服务器存储的嵌入式会话的会话用户列表,例如,将第二用户添加到其会话用户列表。一些实施例可以直接将通知信息发送到嵌入式会话的一个或多个其他成员设备。在一些实施例中,第二设备发送加入嵌入式会话的请求,并且会话服务器(或嵌入式设备)可以向第二设备发回响应,该响应使得第二设备连接到嵌入式会话(和/或如果第二嵌入式应用尚未运行,则启动第二嵌入式应用在第二设备上的运行)。

在框316中,第二消息应用向第二设备上的第二嵌入式应用提供用户信息。在一些实施例中,第二嵌入式应用可以请求这样的用户信息。例如,用户信息可以包括成员更新,例如嵌入式会话中的成员的更新。在一些示例中,用户信息可以包括嵌入式会话的成员用户的用户标识,其例如可以是参与聊天对话的用户和用户设备的聊天标识。在该示例中,可以提供第一用户的聊天标识,以及任何其他成员用户的聊天标识。第二消息应用可以提供用户标识,例如,第二消息应用在框308中接收的用户标识和/或先前已从用于由第二消息应用实施的聊天对话的消息服务器接收用户标识。

在一些实施例中,如果第二消息应用已经获取第二用户的同意,则第二消息应用可以向第二嵌入式应用提供特定用户(例如,第一用户)的用户信息。例如,在一些实施例中,这样的同意可以包括在为聊天对话提供的用户信息中。如果未获取用户的同意,则不向第二嵌入式应用提供用户信息。

在一些实施例中,在向第二嵌入式应用提供用户标识之前,第二消息应用可以匿名化用户信息(例如,匿名化或模糊一个或多个用户标识),使得用户信息不描述特定用户,也不能与特定用户相关联(或者仅部分地描述特定用户或部分地与特定用户相关联)。在一些示例中,如果聊天标识是用户名,则可以分配“虚拟”或“临时”名称以供嵌入式应用和在嵌入式会话中使用。例如,可以将第一用户的聊天标识改变为通用标识符或诸如“用户1”、“朋友1”、第一用户的首字母、第一用户的名(firstname)的名称等。例如,诸如“johndoe”的名字可以别替换为临时化名(例如“kenny”)。匿名用户信息可以作为一个或多个用户标识被提供给第二嵌入式应用。

在一些实施例中,第二消息应用还提供额外的用户信息,例如,要在嵌入式会话中分配给第二用户的用户状态或角色。在一些实施例或情形中,该状态或角色可能已由第二用户例如在嵌入式界面或聊天界面中选择。第二嵌入式应用可以基于添加的第二用户来更新其输出。例如,可以将第二用户的用户标识添加到在嵌入式界面中显示的用户列表中。

在一些实施例中,用户状态或角色由消息应用(或嵌入式应用)基于第二用户在聊天对话中提供的聊天消息来确定(并且例如,不需要由第二用户选择该用户状态或角色)。例如,如果第二用户先前在启动嵌入式国际象棋游戏应用的聊天对话中输入了称“我想扮演白方”的聊天消息,则消息应用可以检测到该消息,(例如,通过与关键词或关键短语比较和/或使用机器学习技术)确定其含义并且在第二用户加入嵌入式国际象棋游戏会话之后,自动将第二用户分配给白棋玩家的用户角色。消息应用可以向嵌入式应用提供该用户状态,以在游戏中分配第二用户控制白棋。

在一些实施例中,嵌入式会话中的特定用户角色可能对被添加到嵌入式会话的成员用户(例如,第二用户)不可用。例如,用户信息可以指示第二用户已经选择成为嵌入式游戏应用中的玩家角色,其中这样的玩家角色允许用户影响游戏中的游戏状态(例如,输入游戏动作以影响游戏状态)。如果应用中的玩家角色的数量是有限的(例如,国际象棋游戏应用限于两个玩家),例如如果第二个用户正在加入一个激活的嵌入式会话,在该嵌入式会话中其他成员用户之前已加入该嵌入式会话并占用了所有可用的玩家角色,则可能没有对第二个用户可用的玩家角色位置。如果发生这种不可用的情况,则第二嵌入式应用可以为第二用户确定不同的用户状态(例如,玩家角色),并且可以向消息应用通知该不同的用户状态。例如,可以为第二用户分配观察者角色,其中第二用户不能输入动作以改变嵌入式应用或会话的特定状态。在一些示例中,可以允许嵌入式游戏应用的观察者玩家在其设备上显示游戏状态,但不利用用户输入来影响游戏状态。可以允许媒体播放器或共享内容文档的观察者角色查看媒体项目或列表,但不影响媒体回放或列表项目。

在一些实施例中,如果第二用户的所选角色不可用,则可以向第二用户提供嵌入式会话中的可用角色菜单,并且第二用户可以提供用户输入以选择一个或多个可用的角色。在一些实施例中,如果用户角色在嵌入式会话期间变得可用(例如,成员用户退出嵌入式会话或改变嵌入式会话内的角色,诸如从玩家改变为观察者),则未被分配请求的用户角色的成员用户可以被提供这样的新可用的用户角色。在一些实施例中,可以在嵌入式应用所确定的嵌入式会话期间移除或改变特定用户角色。例如,在游戏终结之后或在游戏的特定回合或阶段结束之后,玩家角色可以改变为观察者角色。在嵌入式会话期间,具有在嵌入式会话中执行这样的改变的能力或授权的成员用户也可以改变或重新分配用户角色。在一些实施例中,嵌入式会话期间的用户角色的各种变化中的一个或多个可以在由嵌入式应用提供给消息应用的数据中被指示,并且这些变化可以由消息应用在聊天界面的聊天对话中指示(例如,作为文本描述由所有聊天用户或仅由成员用户的设备输出)。

在一些实施例中,指示第二用户已被分配了不同的(新分配的)用户状态的指示,向嵌入式会话移除或添加用户状态或角色的指示,和/或嵌入式会话中成员用户的用户状态的任何其他变化的指示被输出到显示在参与聊天对话的聊天设备上,或者显示在嵌入会话的成员用户的成员设备上的聊天界面。

在一个示例中,第一用户启动嵌入式国际象棋游戏应用,并且第一和第二用户经由在聊天对话中输入的聊天消息同意第二用户将作为控制白棋的玩家开始游戏。消息应用解析聊天消息以确定第一用户被分配了执黑棋的玩家角色,并且将该用户状态提供给嵌入式国际象棋游戏应用,以与由第二用户控制的白棋开始游戏。然后,第三用户(另一个成员用户)加入嵌入式国际象棋会话,并且消息应用(或嵌入式国际象棋应用)自动将观察者的用户角色分配给嵌入式会话中的第三用户,因为仅为游戏会话提供了两个玩家角色,并且这些角色被第一用户和第二用户占用。

在一些实施例中,如果参与用户已经提供了用户同意,则用户信息可以包括与会话的成员用户相关的其他信息。例如,如果聊天用户(包括成员用户)已经提供了对获取这样的地理信息(例如,由gps或成员设备的其他位置传感器确定的地理坐标、地理区域或地区的标签等)的同意,则可以通过第二消息应用例如从聊天对话获取成员用户使用的设备的地理位置。在使用上述针对三个聊天用户描述的嵌入式旅行行程应用的示例中,基于用户的聊天消息,消息应用可以向嵌入式应用指定旅行上下文是“6月中旬在夏威夷度假”,并指定三个聊天用户设备的相应地理位置,以便嵌入式应用可以基于用户的设备位置确定到目的地位置的旅行行程(例如,旅行路线、飞机航班、安排的访问等)。在一些实施例中,位置信息可以将位置指定为相关类别,诸如用户的“家”或“工作”。在一些实施例中,用户信息可以包括每个成员用户的本地时间(基于本地时区)。例如,嵌入式旅行行程应用可以类似地使用本地时间来确定每个用户的旅行行程。在一些示例中,嵌入式应用可以使用成员用户的位置和/或时间信息来确定在嵌入式界面中显示的输出信息,例如,旅行行程、事件预订、文本输出的书面语言(例如,副标题、消息等)、输出的区域定制、基于时间的通知等。在各种示例中,访问成员用户的位置(经用户同意)可以使嵌入式应用能够使用共享位置来向正在餐馆等待其他成员用户的一组成员用户提供例如作为成员用户位置的状态更新的输出,在比赛和健身挑战中提供用户位置,和/或提供儿童用户的位置以供那些孩子们的父母用户查看。

在一些实施例中,用户信息可以包括成员用户使用的成员设备中的一个或多个成员设备的当前或网络上可用的数据带宽,例如,带宽、滞后或者每个成员设备到实施嵌入式会话的会话服务器和/或实施嵌入式会话的一个或多个成员设备的其他网络连接特性。在一些示例中,嵌入式应用可以使用带宽信息来使得修改通过网络在第一用户设备和第一嵌入式应用接收到的输入数据的传输。例如,修改的传输可以包括要通过网络传输到第一用户设备的不同数据量,从而导致通过网络到第一用户设备的不同的数据传输速率,和/或使得压缩从其他设备向第一用户设备的传输的数据(例如,来自内容服务器的内容数据流)。在一些示例中,嵌入式应用可以使用带宽信息来将特定用户状态(例如,角色)分配给嵌入式会话中的特定成员用户。例如,高带宽(例如,超过阈值)可能适合于需要将数据从用户设备发送到其他设备(例如,实时游戏中的特定玩家用户)的角色,而在特定的游戏应用中,较低带宽可能更适合于观察者玩家。

如果已经获取了相关联的聊天用户对访问和使用这样的数据的同意,则提供给第二嵌入式应用的其他用户信息可以包括其他信息,其包括社交网络信息(例如,被发布到社交网络服务的帖子、评级、评论等)、成员用户使用嵌入式应用的历史(例如,先前在嵌入式应用中查看的特定媒体项目、先前由成员用户玩过的游戏以及在那些游戏中分配给成员用户的角色、成员用户在先前游戏中的赢/输记录、先前嵌入式应用使用的日期和时间等)。

在框318中,可以在第二设备处(例如,从会话服务器和/或诸如第一设备的其他成员设备)接收同步信息,并且第二嵌入式应用与嵌入式会话同步。在一些实施例中,在框308中,同步信息可以与嵌入式会话的指示一起被接收。例如,同步信息可以包括在嵌入式会话的成员设备上运行的相应嵌入式应用的一个或多个状态、来自会话服务器的参考时间信息等。在一些实施例中,可以从会话服务器或者能够向嵌入式会话的所有成员设备提供同步信息以使嵌入式应用能够彼此同步的其他设备接收同步信息。在一些示例中,会话服务器基于用户输入(例如,媒体项目的用户回放命令、游戏动作、共享内容文档的修改、行程等)或那些成员设备处的应用事件(例如,计时器超期、开始播放队列中新的媒体项目、游戏事件发生等),来接收成员设备的嵌入式应用的更新,并将同步信息发送给其他成员设备。在一些实施例中,成员设备可以更新存储在诸如服务器的可访问设备上的全局同步值或计时器,以保持彼此的同步,其示例参考图5进行描述。

在一些示例中,同步信息可以包括当前正在嵌入式会话中播放的视频或音频数据片段的时间点(或时间点的变化)、在嵌入式会话中玩的游戏的状态的变化、对嵌入式会话中的共享内容文档的更新等。在另一示例中,同步信息可以包括可用于嵌入式会话中的定时事件的同步的其他成员设备的时钟信息。例如,游戏中的敌人或宝物的产生可以在特定时间在所有成员设备间同步,或者在(或相对于)特定时间登记成员用户输入以在游戏中产生影响。在嵌入式会话中登记状态发生或改变的同步时间可允许稍后由不同成员用户准确地重放嵌入式会话的记录版本。成员设备之间的精确计时事件还允许用户之间的竞争(例如,以确定哪个成员用户是游戏中的第一玩家,以收集或选择游戏环境中的特定项目)。

在一些实施例中,可以在成员设备中选择领导者设备(例如,随机地、或者基于网络特性,例如,对处理用户设备的同步的服务器具有最低延迟的设备等),以允许嵌入式会话中的嵌入式应用之间的实时事件和输出的同步。例如,领导者设备可以是用于验证和传播状态变化到其他成员设备的当权者,例如,代替使用用于此类任务的服务器系统。如果领导者设备离线,则在线成员设备选择新的领导者设备,并且当先前的领导者设备重新在线时,由于其领导者状态被撤销,因此将其视为常规(非领导者)设备。这种领导者设备的配置可以允许通过网络的多设备共享体验,而无需使用服务器侧的同步和权限。

在框320中,使第二嵌入式应用的嵌入式界面被第二设备显示。例如,类似于如上所述,可以与第二消息应用的聊天界面相关联地显示嵌入式界面。嵌入式界面是第二嵌入式应用的用户界面,并且允许来自第二嵌入式应用的输出被第二设备显示(例如,在嵌入式界面的嵌入式视图中),并允许用户输入在嵌入式界面中被输入,从而被提供给第二嵌入式应用。

嵌入式界面显示来自第二嵌入式应用的输出,该第二嵌入式应用与嵌入式会话中的成员设备的其他嵌入式应用同步。例如,如果正在嵌入式会话中播放媒体项目,则由其他成员设备上的相应嵌入式应用播放的媒体项目也由第二嵌入式应用播放,与成员设备同步。因此,如果第二用户已加入在其中媒体项目先前已经被播放了一段时间并且当前正处于其持续时间的中途的嵌入式会话,则第二嵌入式应用播放从中途点开始的媒体项目。例如,该同步可以向第二用户提供与其他成员用户共享媒体项目和嵌入式应用的其他输出的体验。

在使用嵌入式旅行行程应用的示例中,嵌入式应用可以提供嵌入式界面,该嵌入式界面显示关于从成员用户的设备的地理位置出发到旅行目的地的指定日期的飞机航班的信息。在一些实施例中,可以在嵌入式界面中为每个成员用户显示定制的飞机航班信息,其中每个嵌入式界面仅显示在嵌入式界面中查看信息的用户的位置处的飞机航班信息。

在框322中,通过网络发送第二用户已加入嵌入式会话的指示。例如,第二消息应用可以向会话服务器发送加入事件的指示,并且会话服务器可以将加入事件的指示发送给成员设备(而不发送给不是成员设备的聊天设备)。例如,会话服务器可以将指示发送到第一设备,如下面参考图4所描述的。在一些实施例中,第二消息应用可以将指示直接发送到成员设备。

在嵌入式会话期间,如这里所述,第二设备可以经由嵌入式界面接收从第二用户到嵌入式应用的用户输入,和/或经由聊天界面接收从第二用户到消息应用的用户输入。还可以例如经由会话服务器、和/或从一个或多个服务器从其他成员设备接收输入(例如,来自会话服务器的对嵌入式应用的同步和其他更新、来自内容服务器的内容数据等)。输出可以显示在嵌入式界面和/或聊天界面中。

如果已经在嵌入式应用和嵌入式会话内为第二用户分配了用户状态(例如,角色),则嵌入式应用可以使第二用户能够激活嵌入式应用的与所分配的用户状态相关联的一个或多个功能。例如,在嵌入式游戏应用中,可以使被分配了玩家角色的用户能够利用用户输入来执行游戏动作以影响游戏的状态。可以使被分配了观察者角色的用户能够提供输入以执行游戏中的查看功能,例如,使得利用用户输入来显示不同的玩家分数、属性等,但不影响游戏状态。可以使被分配了管理员角色或裁判角色的用户能够启动游戏、将玩家用户分配给不同的团队、判断游戏等,但不影响游戏状态。在一些实施例中,可以为成员用户分配被动观察者或主动观察者的角色。例如,主动观察者状态可以允许用户修改嵌入式应用中的状态(例如,游戏状态、媒体项目的回放位置等),或者修改一些类型的状态(例如,引导某些类型的游戏对象、添加评论但不改变回放位置等),而被动观察者被阻止修改任何这样的状态。在一些示例中,单玩家游戏可以允许第一用户成为在游戏环境中移动、面对障碍物等的主角。可以默认为其他成员用户分配被动观察者角色,或者一个或多个被动观察者用户可以选择被分配主动观察者角色,从而允许他们影响游戏状态,例如,指令游戏中的敌人攻击或帮助第一玩家的角色、直接帮助第一玩家的角色、点击第一玩家的角色来减慢速度等。

在额外的示例中,嵌入式界面的特定图形界面可以基于已经分配给该成员设备的用户的角色而显示在成员设备上,而嵌入式会话的其他成员设备可以基于其成员用户的不同角色(或缺少角色)而显示其他图形界面。例如,可以在不同的图形界面中为不同的角色显示不同的控件和功能。在一些示例中,仅特定角色可以访问嵌入式应用的某些特征。在嵌入式预订应用的示例中(例如,类似于如上所述),第一用户启动嵌入式预订应用,并因此具有允许该用户完成预订的“预订者”状态(例如,为预订酒店房间支付预订费)。第一用户选择诸如目的地和行程的预订信息,并且嵌入式应用与其余成员设备(例如,包括第二用户的设备)共享所选择的预订信息,用于在其嵌入式预订应用的嵌入式界面中显示。第二用户通过选择或改变预订信息(其在所有成员设备上同步)来帮助第一用户选择酒店房间来预订。在此示例中,只有成员设备的第一用户设备在其嵌入式界面中显示“付费”按钮,因为第一用户设置了嵌入式应用/嵌入式会话并具有预订状态。当通过用户输入选择付费按钮时,使得数据被发送到服务器以完成预订。

在各种实施例中,“交互式卡”可以显示在聊天对话的聊天设备的聊天界面中,诸如第二用户设备。交互式卡可以是显示的信息区域或窗口,其显示与事件相关的信息和控件(用户输入选项)、输出数据(例如,内容数据)、以及在聊天对话的嵌入式会话中提供的来自成员用户的输入。该信息可以包括文本、图像,视频、音频输出、电影图或其他类型的内容数据(例如,在嵌入式界面中显示的输出的捕获和存储图像)。在一些实施例中,无论聊天设备是否是嵌入式会话的成员设备,交互卡都可以显示在聊天设备的聊天界面中。

交互式卡还可以包括一个或多个显示的输入控件,其可以通过用户输入来选择,以使得关联动作由嵌入式应用执行。当通过用户输入选择控件时,将所选控件和/或交互卡的参量或参数提供给嵌入式应用,并且嵌入式应用执行相关动作。在一些示例中,如框310中所显示的指示嵌入式会话的启动的通知可以是显示上述信息的交互式卡,其包括加入选项(对于非成员用户),如果选择该加入选项,则使得用户设备运行嵌入式应用并加入嵌入式会话。在一些实施例中,如上所述,响应于用户加入嵌入式会话,在嵌入式应用中运行一个或多个动作。在另一示例中,交互式卡可以包括显示的控件,当通过用户输入选择该控件时,使得嵌入式应用开始播放媒体项目、触发游戏内动作(例如,接受不同用户的挑战、解锁游戏内项目等)和/或其他动作。嵌入式应用可以在交互式卡中显示对来自用户的确认执行关联动作的请求。在一些实施例中,可以基于从成员用户(和/或聊天用户)接收的当前输入、由嵌入式应用提供的当前输出、以及嵌入式应用的当前处理/状态,不断更新交互式卡中的信息和选项。

在一些示例中,媒体项目正在媒体播放器嵌入式应用的嵌入式会话中播放,并且交互式卡显示在与媒体项目的播放有关的聊天设备的聊天界面中。可以基于聊天对话的聊天用户对该媒体项目的回放和评论来不断更新信息和选项。例如,交互式卡可以显示正在播放的或排队回放的每个媒体项目的标识。可以基于聊天对话的聊天用户对该媒体项目的回放和评论来不断更新交互卡中的信息和选项。例如,该卡可以显示以下一个或多个特征:已观看媒体项目的聊天用户的标识(或编号)(如果已从这些用户获取同意),已对媒体项目进行评论的聊天用户的标识(或编号)(如下面的方框518中那样,如果已从这些用户获取同意),用于对成员设备的媒体项目进行评论的显示选项(例如,如框518中那样),以及使卡例如作为对用户播放媒体项目的提醒永久显示在用户设备上的显示选项。如果多个交互式卡是永久的,则可以显示卡的轮播显示,其可以被滚动或旋转以查看多张卡片,例如,一次一个。使得在聊天对话中播放媒体项目或者对媒体项目进行评论(例如,如框518中那样),更新了存储在每个聊天设备上的相应交互式卡,其可以显示在聊天对话的每个聊天设备的聊天界面中。交互式卡指示聊天用户对媒体项目的最新播放和评论。在一些实施例中,通过用户输入选择交互式卡的评论选项可以使得输入字段被显示,从而允许用户输入要在媒体项目的当前和稍后的回放期间在嵌入式界面中显示的评论(例如,如在框518中那样),和/或在媒体项目的当前和稍后的回放期间在聊天对话的聊天界面中显示的评论。

在一些实施例中,可以在聊天界面中显示与其他类型的嵌入式应用相关的交互式卡。例如,如果已经获取用户同意,则嵌入式游戏应用和会话可以使得指示以下中的一个或多个的交互式卡被显示:游戏中的玩家和观察者的数量、成员用户的标识、玩家的当前分数、实现的游戏对象、示出游戏事件或对象的屏幕截图或其部分的一个或多个图像、输入对游戏或游戏的特定玩家的评论或评级的显示选项(例如,以在聊天界面和/或在成员设备的嵌入式界面中显示)、使卡例如作为对用户加入嵌入式会话的提醒持久地显示在用户设备上的显示选项等。类似信息和显示选项可以在交互式卡中显示,用于提供内容文档、旅行行程、预订、购物等的嵌入式会话。

在一些实施例中,可以类似于加入嵌入式会话来实施第二用户退出嵌入式会话。例如,第二消息应用接收第二用户例如通过退出第二嵌入式应用、通过退出聊天对话、或通过退出第二消息应用而正在退出嵌入式会话的指示。第二消息应用(例如,经由服务器)向其他成员设备发送信息,其指示第二用户正在退出,使得为其他成员设备运行的其他(对应的)嵌入式应用可以更新其状态(例如,从其嵌入式界面移除第二用户的用户标识,在嵌入式会话中移除作为参与者的第二用户,等等)。

图4是示出示例方法400的流程图,其中图2的第一设备处理第二设备已加入嵌入会话的事件。在该示例中,方法400示出了如参考图3所述的在第一设备处响应于第二用户加入嵌入会话而执行的框。

在框402中,检查是否已获取对在方法400的实施中使用用户数据的用户同意(例如,用户许可)。例如,用户数据可包括用户例如使用消息应用103发送或接收的消息、用户偏好、用户生物特征信息、用户特征(标识、姓名、年龄、性别、职业等),关于用户的社交网络和联系人的信息、社交和其他类型的动作和活动、内容、评级、用户创建或提交的评论、用户的当前位置、历史用户数据、用户生成、接收和/或访问的图像、用户观看或共享的视频等。在一些实施例中,这里所描述的方法的一个或多个框可以使用这样的用户数据。

如果已从可在方法400中使用其用户数据的相关用户获取了用户同意,则在框404中,确定可以在可能使用如针对那些框描述的用户数据的情况下实施这里的方法的框,并且该方法继续到框408。如果没有获取用户同意,则在框406中确定将在不使用用户数据的情况下实施该框,并且该方法继续到框408。在一些实施例中,如果没有获取用户同意,则在不使用用户数据和利用合成数据和/或通用或可公开访问和可公开使用的数据的情况下实施该框。

在框408中,在第一设备处通过网络接收指示,其指示第二用户和第二设备已连接到(加入)嵌入式会话。例如,该指示可以指示第二设备已经下载和/或运行了用于嵌入式会话的相应的嵌入式应用(或者正在处理),例如,如图3的框314中那样,和/或指示嵌入式应用已与嵌入式会话同步(或正在同步),例如,如图3的方框318中那样。例如,该指示可以包括或者导出自如图3的框314所描述的通知信息。在一些实施例中,第一消息应用可以接收指示,在一些实施例中,该指示可以包括通知信息,如所描述的那样。该指示可以包括指示加入事件、第二用户的用户标识、以及由第二用户选择或提供给第二用户的任何其他选项(例如,嵌入式应用中的用户状态等)的信息。在一些实施例中,第一消息应用先前获取了第二用户的用于聊天对话的用户标识信息,例如,以在第一设备的聊天界面中显示第二用户的用户标识。在一些实施例中,从服务器系统接收该指示,例如,在图3的框314中从第二设备接收通知信息的会话服务器。在一些实施例中,在第一设备处直接从第二设备接收指示(例如,对等配置)。

在框410中,第一消息应用向第一嵌入式应用提供数据更新,其中更新指示第二用户加入嵌入式会话。嵌入式应用将第二用户指定为嵌入式会话的成员用户。例如,更新可以包括用户信息(例如第二用户的用户标识),以及将第二用户添加为嵌入式会话中的参与者的指示。在一些实施例中,第一消息应用已获取第二用户的用户标识和聊天对话中的其他用户信息。在一些示例中,用户标识可以是参与聊天对话的第二用户的聊天标识。

如果第一消息应用已经从第二用户获取了这样做的同意,则第一消息应用可以向第一嵌入式应用提供特定用户(例如,第二用户)的用户信息。例如,在一些实施例中,这种同意可以被包括在为聊天对话提供的用户信息中。如果未从第二用户获取同意,则不向第一嵌入式应用提供用户信息。在一些实施例中,第一消息应用(或服务器应用)可以匿名化或部分匿名化用户信息,使得该信息不描述第二用户,也不能与第二用户相关联(或者仅部分地描述或仅部分地与第二用户相关联)。例如,第二用户聊天标识可以被改为通用名称或占位符名称,诸如“用户1”、“朋友1”、第二用户的首字母、第二用户的名等。在额外的示例中,用户标识可以是第二用户名的真实姓名,第二用户先前在消息应用中注册的用户名、先前在联系人列表中注册的用户名或存储在第二用户设备上并从第二用户设备获取的其他数据(如果已经从第二用户获取了同意)、先前在嵌入式应用中注册的用户名、占位符名称等。该信息可以作为用于嵌入式会话的用户标识被提供给嵌入式应用和/或由嵌入式应用确定。在一些示例中,应用可以选择用户名以在嵌入式应用和嵌入式会话的一个或多个特定上下文中向其他成员用户显示,其中可以在不同的上下文中显示不同的用户名。例如,上下文可以包括在消息应用和聊天界面中使用的名称、附加到在消息应用中撰写的第二用户的消息的名称、在嵌入应用及其内容数据中使用的名称、可附加到聊天消息或由嵌入式应用生成的系统消息的名称等。

在一些实施例中,如果已经从第二用户获取使用此类信息的同意,则用户信息可以包括由第二用户选择或提供给第二用户的用户状态(例如,角色)、第二设备的地理位置、和/或与第二用户相关的其他信息。第一嵌入式应用可以基于第二用户的添加来更新其处理,例如,在嵌入式界面中显示第二用户的用户标识、检查来自第二用户的输入等。在一些实施例中,第一消息应用还将第二用户指定为嵌入式会话的成员用户,例如,更新其自己的嵌入式会话的会话用户列表以添加第二用户标识。

在框412中,第一嵌入式应用(和/或第一消息应用)可以确定第二用户的一个或多个用户状态。在一些实施例中,例如,在框410中,可以基于从第一消息应用接收的用户信息来确定用户状态。例如,用户信息可以包括第二用户在嵌入式会话中的用户状态。用户状态可能已由第二用户选择,并且指示该选择的信息可能已由第一消息应用提供给第一嵌入式应用。例如,第二用户可能已经选择了游戏嵌入式应用的“观察者”的用户角色,并且第一嵌入式应用将该角色分配给第二用户。

在一些实施例中,第一嵌入式应用(和/或在其他成员设备上运行的相应的嵌入式应用)可以生成用户状态或角色。在一些实施例中,服务器(例如,会话服务器)可以生成用户状态或角色,并将确定的用户状态提供给第一消息应用和第一嵌入式应用。在一些示例中,可以至少部分地基于第一嵌入式应用和/或嵌入式会话的一个或多个当前状态来分配用户状态。例如,如果一个或多个角色可用于分配给加入用户,则可以将第二用户(加入用户)自动分配给可用角色(例如,游戏中的玩家)。如果嵌入式会话没有任何可用的选择角色,则可以将第二用户分配给另一个(例如,默认)角色。例如,如果第二用户选择了被分配玩家角色但没有可用的玩家角色,则第二用户可被分配观察者角色。在一些实施例中,例如,如果对这些状态和数据执行隐私和安全措施,则可以存储(例如,在服务器上)来自特定用户已参与的先前嵌入式会话的特定状态和/或数据,诸如使用相同的嵌入式应用在先前嵌入式会话中分配给特定用户的用户状态和角色。在这样的实施例中,如果已经为这种用户数据的使用获取了第二用户同意,则可以使用第二用户的嵌入式应用的使用历史来确定第二用户的用户状态或角色。例如,如果第二用户在阈值数量的使用该嵌入式应用的先前嵌入式会话中是裁判角色,则该角色可以被自动分配给第二用户。在一些实施例中,可以(例如,通过成员设备和/或会话服务器)向第二设备发送提示,以允许第二用户接受或拒绝已经在嵌入式会话中自动分配给第二用户的特定用户状态或角色。

在一些实施例中,可以为嵌入式会话中的用户确定其他用户状态和角色。例如,如果用户启动嵌入式会话(例如,第一用户),则可以为用户分配“控制者”或“领导者”角色,其中控制者是能够修改嵌入式会话中处理的数据(例如,改变媒体项目中的回放点、改变共享内容文档中的数据等)的唯一用户。在一些示例中,类似于嵌入会话,基于第二用户在先前游戏中的历史,第二用户作为嵌入式应用的游戏中的玩家可以被分配障碍或有利条件。

在一些实施例中,可以基于在从其启动嵌入会话的聊天对话中提供的消息和其他用户输入来确定用户状态。例如,消息应用可以解析第二用户的文本消息(或从第二用户语音输入导出的文本消息),以匹配预定义的单词或短语,和/或使用其他语言处理技术来确定对聊天对话的用户输入的语义含义。例如,第二用户可能先前已经在聊天对话中输入“让我们玩!”或者“我会观看你们两个”,指示第二用户分别想要在启动的嵌入式应用游戏中扮演玩家角色或观察者角色。第二用户可以输入“我将在视频中给你看该位置”,指示第二用户应该被分配控制者角色,该角色可以控制在嵌入式会话中播放的视频中的回放位置。

在一些实施例中,在嵌入式会话中被分配了特定状态或角色的成员用户可以具有被改变的状态或角色,和/或可以选择将他或她的状态或角色改变为不同的状态或者角色,同时继续作为成员用户。例如,在嵌入式会话中被分配了玩家角色的用户可以基于某些条件自动成为观察者用户,该某些条件例如是,用户的玩家角色在游戏中已经被消除,变成只能在游戏环境中观察和移动但不能进行动作来改变环境中的对象的“幽灵”,或者,例如在2玩家游戏中,玩家离线的时间长于阈值时间段并且失去玩家状态,而在线观察者用户被嵌入式应用自动分配玩家角色。在另一个示例中,在玩家用户仅在他们的回合期间是活跃的基于回合的游戏中,当他们的回合当前不活跃时,玩家可以自动成为观察者玩家。在其他示例中,预定义的额外的用户状态或角色可以在嵌入式会话中变得永久或临时可用,和/或现有用户状态或角色可以在嵌入式会话期间在嵌入式会话中变得永久或暂时不可用。例如,这样的用户状态或角色变化可以基于以下而发生:当前在嵌入式会话中的成员用户的数量的变化、会话已活跃的时间长度、成员用户指示他或她正在做诸如应答电话的外部任务、嵌入式应用中发生的特定事件(游戏事件、共享列表的完成等)等。

在一些额外的示例实施例中,可以在嵌入式应用和嵌入式界面中提供大厅(lobby),例如,列出尚未具有分配角色的成员用户的显示区域。例如,这样的用户可以在游戏中等待被分配用户状态或角色,例如,等待游戏结束、等待玩家用户改变为非玩家角色等。在一些示例中,成员用户的子集可以与嵌入式会话内的子会话相关联,其中用户的子集在子会话内经由嵌入式应用进行交互,并且其他成员用户具有不同的交互能力或不具有交互能力。例如,嵌入式会话可以包括多个子会话,每个子会话与成员用户的不同子集相关联。在一些示例中,每个子会话可以是在整个嵌入式会话中运行的锦标赛结构内的特定游戏,其中每个游戏同时运行并且每个游戏的获胜者在新游戏中彼此玩。在一些示例中,大厅中的两个或更多个用户可以彼此相关联和/或在嵌入式会话中启动的子会话(例如,个人游戏)中被分配特定角色。还可以提供基于团队的实施例,其中加入嵌入式会话的用户被分配给特定游戏中的现有团队,并且每个团队具有多个玩家。在一些示例中,嵌入式会话可以提供并行运行的多个游戏,单个游戏具有两个玩家和n个观察者,单个游戏具有两个团队且每个团队具有n个玩家,等。在一些实施例中,多个这样的子会话可以实施为分开的并发嵌入式会话,每个嵌入式会话由单个嵌入式应用提供。

在框414中,第一嵌入式应用基于第二用户的添加来更新其在嵌入式界面中的输出。例如,可以在嵌入式界面中显示第二用户标识符,以及第二用户状态(用户角色等)。

在框416中,第一嵌入式应用向第一消息应用提供确定的用户状态信息。例如,如果第一嵌入式应用确定了用户角色和/或其他用户状态信息,则将其提供给第一消息应用。在一些实施例中,第一消息应用可以更新用户的会话列表,在聊天界面中输出用户状态信息等。

在一些实施例中,第二用户退出嵌入式会话可以类似于加入嵌入式会话来实施。例如,第一设备可以通过网络接收第二用户正在退出嵌入式会话(例如,通过退出第二嵌入式应用、通过退出聊天对话、或通过退出第二消息应用)的指示。第一消息应用向第一嵌入式应用发送指示第二用户正在退出的信息,使得第一嵌入式应用可以更新其状态(例如,从嵌入式界面移除第二用户的用户标识,并且不再期待来自第二用户的输入)。

在一些实施例中,用户设备可以缓存嵌入式应用的状态以启用离线模式,其中用户设备(和/或消息应用)不再通过网络对其他用户设备和服务器设备可见。当用户设备(和/或消息应用)回到在线时,嵌入式应用的缓存状态可用于使嵌入式应用与其他成员设备和相应的嵌入式应用同步,并提供合并/冲突解决。在一些示例中,在用户设备丢失网络连接之前,嵌入式应用可以首先将任何状态变化写入用户设备上的存储。当用户设备在线时,本地状态始终与存储在服务器上的服务器全局状态同步,其中全局状态由在同一聊天对话中的成员设备上运行的嵌入式应用的实例共享。在丢失网络连接时,本地状态可以被用户设备上的嵌入式应用访问和写入,但是不会发生客户端到服务器的同步。一旦网络连接被恢复到用户设备,本地状态就与全局状态同步(例如,拉动服务器侧的变化并推动客户端侧的变化)并且发生合并,如果需要则使用冲突解决方案(例如,使用最后写入为准(last-write-wins)策略或其他合并策略)。这提供了有限的离线支持,例如,它提供针对在蜂窝塔切换或环境变化(诸如进入地下等)期间移动设备之间常见的短期网络断开的保护。如果用户离线更长时间,则用户设备上的本地状态可以显著偏离服务器全局状态。

图5是示出了使用与消息应用相关联的嵌入式应用来提供媒体项目的输出的示例方法500的流程图。在一些示例中,方法500可以与图2的一个或多个框类似地实施,其中从聊天对话启动嵌入式应用,并且数据在涉及聊天用户的嵌入式会话中被处理。

在框502中,检查是否已获取用户同意(例如,用户许可)以在方法500的实施中使用用户数据。例如,用户数据可包括用户例如使用消息应用103发送或接收的消息、用户偏好、用户生物特征信息、用户特征(标识、姓名、年龄、性别、职业等)、关于用户的社交网络和联系人的信息、社交和其他类型的动作和活动、内容、评级、用户创建或提交的意见、用户的当前位置、历史用户数据、用户生成、接收和/或访问的图像、用户观看或共享的视频等。在一些实施例中,这里所描述的方法的一个或多个框可以使用这样的用户数据。

如果已从可在方法500中使用其用户数据的相关用户获取用户同意,则在框504中,确定这里的方法的框可以在可能使用如针对那些框描述的用户数据的情况下实施,并且该方法继续到框508。如果没有获取用户同意,则在框506中确定将在不使用用户数据的情况下实施该框,并且该方法继续到框508。在一些实施例中,如果没有获取用户同意,则在不使用用户数据和利用合成数据和/或通用或可公开访问和可公开使用的数据的情况下实施该框。

在框508中,获取聊天用户对媒体项目的选择,该选择指令通过用户设备的媒体项目的回放(例如,输出)。聊天用户使用通过网络连接到用户设备并彼此连接的设备,参与与一个或多个其他聊天用户的聊天对话,其中聊天对话由与上述第一用户和第二用户以及第一设备和第二设备类似的设备显示在聊天界面中。可以以各种方式中的任何一种来选择媒体项目。例如,可以通过文本、语音输入、显示元素的选择或来自显示菜单的项目等来输入媒体项目的标识符。在一些实施例中,从聊天界面内选择媒体项目,例如,通过文本命令、聊天界面中显示的界面元素等。在一些实施例中,用户输入还可以通过选择或输入共享选项(例如,界面元素、文本命令或参数等),明确指示与聊天对话共享媒体项目。共享媒体项目可以包括通过向聊天对话的其他聊天用户提供嵌入式会话来使媒体项目可用于在其他设备上回放。当选择媒体项目输出时,一些实施例可以在聊天对话中的嵌入式会话中自动提供媒体项目。在一些实施例中,如框510所述,在启动嵌入式媒体播放器应用之后,可以在嵌入式界面内选择媒体项目。在一些实施例中,可以使用机器人程序来选择媒体项目,其一些示例在以下描述。方法继续到框510。

在框510中,响应于媒体项目的选择,运行(例如,启动)嵌入式媒体播放器应用。嵌入式媒体播放器应用被配置为输出所选择的媒体项目。在一些示例中,嵌入式媒体播放器应用类似于如上所述从服务器下载到用户设备,并且至少部分地运行在用户设备上。在一些实施例中,嵌入式媒体播放器应用可以部分地或整体地与例如服务器的用户设备通信的设备上运行,并提供用于在用户设备上显示的数据(例如,描述嵌入式界面的数据)。嵌入式媒体播放器应用使得在用户设备上与聊天界面相关联地显示相关联的嵌入式界面(例如,类似于如上所述),使得在嵌入式界面的显示期间可以显示聊天界面中的一个或多个聊天消息。在一些实施例中,可以响应于指令运行嵌入式应用而不指定要播放的媒体项目的用户输入来启动嵌入式媒体播放器应用。例如,然后可以通过提供给嵌入式界面的用户输入来选择媒体项目,例如,在用户输入浏览嵌入式界面中的可用媒体项目的显示菜单之后等。该方法继续到框512。

在框512中,使得其他聊天用户能够加入或离开嵌入式会话,该嵌入式会话与嵌入式媒体播放器应用的开始相关联地启动,其中嵌入式会话可以包括媒体项目的回放。例如,可以将通知发送到参与聊天对话的聊天设备,并且一个或多个聊天用户可以作为成员用户加入嵌入式会话,类似于上面针对图2-图4所描述的。该方法继续到框514。

在框514中,在嵌入式界面中执行所选媒体项目的回放,该嵌入式界面由嵌入式媒体播放器应用提供在用户设备的显示器上。例如,在框510中选择媒体项目之后,在媒体项目的内容数据序列的开始处(例如,视频数据片段的第一帧和/或音频片段的第一部分)启动回放。在一些示例中,回放可以包括在嵌入式界面中显示视频数据帧和/或将相应的音频数据作为来自用户设备的扬声器的音频输出。在一些示例中,回放可以包括播放视频和/或音频的轨道,并且回放位置可以参考当前在该轨道中的当前时间点显示或输出的数据。在一些进一步的示例中,例如,在显示虚拟现实环境或其他显示的3d环境中,回放可以具有回放位置,该回放位置参考3d环境中显示的视图点(或其他参考视图)的方向和/或方位,作为时间点的补充或替代。在一些情况下,可以从用户设备的本地存储(例如用户设备中包括的内存和其他存储)获取媒体项目内容数据。在一些情况下,媒体项目内容数据可以通过网络接收,例如,作为来自诸如内容服务器154的另一设备的、不同成员设备等的数据流。在一些实施例中,视频媒体项目的回放可以默认为静音音频并显示说话的字幕(例如,字幕数据包括在接收的视频数据中),其中用户可以选择实现视频数据的音频输出。

媒体项目的回放发生在嵌入式会话的其他成员设备上。在一些实施例中,服务器(例如,会话服务器或内容服务器)可以管理嵌入式会话中的媒体项目的回放。在一些实施例中,内容服务器可以使内容数据流到会话服务器或其他服务器,其管理嵌入式会话并将单独的内容数据流发送到每个成员设备。例如,会话服务器可以将从成员设备处接收的任何命令发送到内容服务器,或者可以将命令处理成用于内容服务器的特定命令。在一些实施例中,内容服务器可以使内容数据独立地流到嵌入式会话的每个成员设备,并且可以基于来自一个或多个成员设备的用户输入来接收命令。可以在到成员设备的所有流中提供基于命令对回放所做的改变(例如,在方法500的后续框中)。

在成员设备之间同步回放。在一些实施例中,同步可以由一个或多个服务器管理。例如,将媒体项目作为数据流提供给每个成员设备的内容服务器可以使用同步数据(例如,参考位置)来同步每个数据流,使得每个成员设备上的回放被同步。在一些实施例中,会话服务器可以存储参考位置(或其他同步数据),诸如媒体项目数据序列内的参考帧或时间位置,其可以由成员设备访问和/或由会话服务器发送到成员设备。例如,可以将每个成员设备上的媒体数据的回放设置为等于参考位置的帧(或时间点)。在一些实施例中,同步可以由一个或多个成员设备管理。例如,其中一个成员设备(例如,用户设备)可以是向其他成员设备发送同步数据(例如,参考位置)的参考设备,其指示在用户设备上播放的媒体数据中的当前位置。其他成员设备可以调整这些设备上的媒体项目的回放以与参考设备的参考位置同步。

在一些示例中,可以使用共享回放计时器,其可以在所有成员设备可访问的设备(例如,会话服务器、内容服务器或成员设备之一)的数据库上被存储和访问。例如,单个参考值可以充当所有成员设备都应该同步至其的权威回放位置(例如,全局回放位置)。在一些实施例中,可以允许全局回放位置和成员设备上的回放位置之间的容差(例如,阈值时间量),例如,加或减5秒。如果成员设备的播放位置处于大于容差量的时间处,则该播放位置被更新为全局播放位置。

在一些实施例中,多个或所有成员设备可以以平均方式更新共享计时器(全局回放位置)。例如,在回放期间,每个成员设备尝试与服务器每秒(或其他时间单位)同步,其是“同步点”。在每个同步点,每个成员设备尝试增加全局回放位置。在一些示例中,可以使用以下公式确定增加量:

其中g是全局回放位置,并且g'是增加的全局回放位置。例如,设备先前回放位置在先前同步点,并且成员设备的总数量是嵌入式媒体会话中的成员设备的数量(例如,如果所有成员设备都能够更新全局回放位置)。因此,每个设备将全局回放位置更新一个小数量,该小数量基于该设备自其上一个同步点的回放位置的增加除以成员设备的数量。如果增加的回放位置g'和[设备当前回放位置]之间的差值大于容差值,则设备将回放位置保持或改变为g(并且不提交g')。否则,设备将g'提交到数据库。该方法继续到框516。

在框516中,从嵌入式界面中的成员用户接收用户输入。例如,可以在框508中从启动嵌入式会话的成员设备的用户接收用户输入,或者可以从不同成员设备的不同成员用户接收用户输入。可以在嵌入式界面中接收用户输入,例如,选择所显示的界面元素,诸如按钮、图标、滑块控件等。在一些情形下,可以在聊天界面中接收或部分接收用户输入。例如,用户输入可以选择选项以直接将用户评论输入到显示的媒体项目上,然后进一步的用户输入可以例如作为文本、表情符号、评级符号等在聊天界面中输入用户评论。该方法继续到框518。

在框518中,检查所接收的用户输入是否是与播放的媒体项目相关联的用户评论。例如,在嵌入式界面中输入这样的相关联的用户评论,使得在显示媒体项目期间显示用户评论。例如,可以在回放期间显示用户评论达到被输入之后的预定义的时间量。在一些示例中,用户评论可以叠加在视频数据的显示上,或者以其他方式显示在嵌入式界面中。在一些实施例中,如上所述,用户评论的内容可以在聊天界面中被输入,然后被显示在嵌入式界面中。例如,用户输入可以选择嵌入式界面中的选项来输入评论,然后评论通过聊天界面被输入。在一些实施例中,用户输入还可以在嵌入式界面的显示区域中选择或指向显示用户评论的特定位置,诸如显示窗口中或媒体项目的视图中的位置。例如,可以将位置指定为视频、图像或其他媒体项目的显示视图中的评论的位置的坐标。在进一步的示例中,用户可以切换(例如,点击)或连续地选择在聊天界面或嵌入式界面中显示的与用户的情感或情绪相关联的多个控件(例如,表情符号按钮)中的一个或多个。当用户选择控件或直到用户再次切换(例如,点击)该控件时,该选择使得相关联的图像或图标(例如,表情符号)显示在嵌入式界面中(如下所述),该相关联的图像或图标(例如,表情符号)表示响应于媒体项目的回放,用户在那时的情感。

如果用户输入是用户评论,则在框520中,与在输入和/或显示评论时显示的媒体项目的关联部分的标识相关联地存储用户评论。在一些实施例中,关联部分的标识包括媒体项目的标识(例如,媒体项目的标题、标识值等)。例如,媒体项目的关联部分的标识可以指示用户评论的媒体项目的上下文。在一些示例中,如果在开始回放5分钟视频片段之后的1分钟时输入用户评论,则媒体项目的关联部分是视频片段的1分钟时间点的媒体项目的内容数据(例如,在1分钟时间点之前和/或之后的阈值数据量)。在一些示例中,该部分可以通过时间点来识别,该时间点例如指示该部分在哪里开始或指示该部分的中间点。在一些实施例中,标识可以包括该部分的持续时间。在一些实施例中,可以存储提供评论的用户的标识(例如,在嵌入式会话中显示的用户的标识、或聊天对话中的聊天标识)。在一些实施例中,可以与用户评论相关联地存储用户评论相对于媒体项目的显示区域的位置的指示。例如,引用所显示的嵌入式界面窗口的区域的坐标,或嵌入式界面中的媒体显示窗口的区域,可以指示用户定位用户评论的位置。该方法继续到框522。

在框522中,与用户评论相关联地存储相关联的聊天对话的标识。例如,这允许在稍后为同一聊天对话的用户(例如,来自在输入用户评论时参与聊天对话的同一组聊天用户的成员用户)回放媒体项目期间检索和显示用户评论(以及为与聊天对话相关联的嵌入式应用输入和存储的其他用户评论)。对于在与不同的、第二聊天对话相关联的嵌入式界面中的媒体项目的未来的回放,用户评论将不被检索且将不被显示。例如,该第二聊天对话可以具有在回放媒体项目期间显示的其自己的一组相关联的用户评论,其被输入到与第二聊天对话相关联的嵌入式媒体播放器应用。在一些实施例中,对于稍后在其他聊天对话中的或通过其他用户的媒体项目的嵌入式回放,不检索和显示用户评论。

在框524中,在接收到用户评论的成员设备的嵌入式界面中显示用户评论,并且在当前回放期间将用户评论(例如,经由用户设备上的消息应用)发送到其他成员设备,使得用户评论显示在其他成员设备的嵌入式界面中。在一些示例中,在从嵌入式界面的显示中移除之前,在媒体项目的回放期间显示用户评论达预定时间段。可以基于用户偏好、嵌入式会话的设置等来确定该时间段。在一些实施例中,响应于用户对相关控件的选择(例如,切换或连续按压如上所述的显示控件),显示用户评论,并且当用户停止选择控件或再次切换控件时,用户评论从显示中被移除。该方法可以继续到框512,以使用户能够加入或离开嵌入式会话并执行框514中的媒体项目的回放。

如果在框518中确定用户输入不是用户评论,则该方法继续到框526,在其中检查用户输入是否是对媒体项目中的搜索点的选择。在一些示例中,用户可以在嵌入式界面中显示的表示媒体项目的整个播放长度的图形进度条或时间线上选择搜索点。在其他实施例中,可以以其他方式选择搜索点,例如,通过接收沿着时间线指定特定时间的输入,通过接收选择沿着时间线向前或向后移动回放的快进或倒回控件的选择,等。

如果用户输入是对搜索点的选择,则在框528中,将媒体项目的回放位置更新为搜索点。例如,在搜索点已经从回放位置以前的位置移动回放位置的一些情形下,媒体项目的回放可以从其以前的位置中断并在更新的搜索点处继续。该方法继续到框530。

在框530中,搜索点信息被发送以同步设备的回放。例如,可以将诸如调整的搜索点的时间值或其他值等的描述搜索点的信息(例如,通过消息应用)发送到其他成员设备,以将那些设备上的媒体项目的回放与从用户接收到更新的搜索点的成员设备上的回放同步。在如上所述使用共享定时器和/或全局回放位置的一些实施例中,成员设备利用回放位置在搜索点处的新值来重写全局回放位置(g)的值。然后该方法可以继续到框512,以使用户能够加入或离开嵌入式会话,并执行框514中媒体项目的回放。

如果在框526中确定用户输入没有选择搜索点,则该方法继续到框532,在其中如果适用,可以基于所接收的用户输入执行一个或多个设备或应用功能。在一些情形下,该方法可以继续到框512。在一些实施例中,响应于稍后的媒体项目的回放,该方法继续到框534。

在框534中,在相同(例如,正在进行)的聊天对话中的媒体项目的稍后回放期间,显示与媒体项目和聊天对话相关联地存储的相关联的用户评论。在稍后的回放期间,相关联的用户评论可以显示在嵌入式界面中。例如,在一些实施例中,如果媒体项目接收到在框518到524中与媒体项目相关联地存储的一个或多个用户评论,则可以连同通过聊天用户的媒体项目的相关联部分的稍后回放来显示相关联的用户评论。在一些示例中,如果在聊天对话(例如,具有相同的对话id、或者具有与最初输入评论时相同的参与的聊天用户、或者具有最初聊天用户的子集)中的嵌入式界面中播放媒体项目,并且显示与一个或多个用户评论相关联的媒体项目的一部分,则从存储中检索相关联的用户评论并且将用户评论与相关联的媒体项目部分一起显示在嵌入式界面中。在一些示例中,如果已经存储了用户评论的界面位置,则相关联的用户评论可以显示在它们被输入的嵌入式界面中的相同位置处,例如,显示在回放窗口中的相同坐标处。在一些示例中,在播放了预定持续时间或数量的媒体项目数据之后,可以从嵌入式界面中移除相关联的用户评论。在一些实施例中,用户评论也可以或替代地在稍后回放期间例如作为聊天消息显示在聊天界面的聊天对话中。在一些实施例中,用户评论可以在回放期间显示为媒体项目的显示的下方或旁边的列表,或者可以通过嵌入式界面中的回放界面上的控件来访问(例如,在评论视图和回放视图之间切换)。

在进一步的示例中,如上所述,当用户连续选择或切换控件时,可能已经与媒体项目的回放时段相关联地存储用户评论,并且这些用户评论可以(例如,通过表情符号、图像等)表示用户在媒体项目的相应部分的回放期间的情绪和想法。利用从来自先前查看媒体项目的多个用户的输入存储的多个这样的用户评论,这允许同时观看和评论媒体项目的成员用户的想法和情绪状态的同步。用户对媒体项目的相应部分的评论可以显示为时间条上的标记或图标,或者显示为(例如,通过视频帧显示的)媒体项目的显示上的叠加,其中在选择相关联的标记或图标时,可以完整显示用户评论。这样的用户评论可以在同一聊天对话内的相同或不同用户重播(稍后回放)媒体项目期间登记用户的想法和情绪状态变化。

在一些实施例中,可以提供保存特征以允许用户保存播放的媒体项目以供稍后回放。这对于通常不会在聊天对话中被观看的具有相对长持续时间的媒体项目(例如,电影或电视节目)是有用的。在一些示例中,可以通过提供的用户输入允许用户访问相关联的未播放的媒体项目的存储库,例如,存储在用户设备和/或服务器(例如,会话服务器或消息服务器)上的存储库,这允许用户在所需时间播放媒体项目、一次性连续播放全部等等。例如,所保存的媒体项目可能先前已被其他聊天用户播放,并且该用户未参与那些嵌入式会话。

在一些示例中,在嵌入式会话中播放的每个媒体项目(例如,由不同的聊天用户启动的)可以与聊天界面和/或嵌入式界面中的显示选项(例如,ui元素)相关联以保存媒体项目供稍后回放。例如,该选项可以与用户设备接收的通知相关联地显示,该通知指示嵌入式会话是活跃的(并且还可以包括加入选项),如参考图2-3所述。该选项还可以或替代地显示在嵌入式界面内,例如,与在嵌入式应用中播放和将要播放的媒体项目的标识的显示列表相邻或以其他方式相关联。通过用户输入选择选项使得媒体项目存储到与选择用户相关联的队列中。在一些示例中,媒体项目可以存储在用户和特定机器人程序参与的不同聊天对话中。在一些实施例中,用户可以请求自动保存由聊天对话中的嵌入式会话中的其他聊天用户启动的所有媒体项目。存储在队列中的任何媒体项目可以稍后被选择并在嵌入式媒体播放器应用的嵌入式会话中播放,该嵌入式媒体播放器应用被启动以播放媒体项目。在一些实施例中,嵌入式界面和/或聊天界面可以在稍后回放期间从用户接收评论,其中评论显示在嵌入式界面中和/或发送并提供给最初播放媒体项目的聊天对话。在一些示例中,当从队列选择媒体项目用于稍后回放时,显示评论控件以使得能够由用户输入对所选媒体项目的评论。在一些实施例中,评论控件的选择可以显示最初的聊天对话,在聊天对话中作为消息插入媒体项目链接,并使用户能够在聊天对话中撰写评论消息。在一些实施例中,到保存或播放的媒体项目的链接可以显示为聊天对话中的可选择的消息(例如,具有播放按钮的视频的图像、或文本消息),从而通过聊天用户对消息的选择使得媒体播放器嵌入式应用被启动并且所选择的媒体项目被播放。一些实施例可以为在其他类型的嵌入式应用中输出的其他类型的内容数据提供类似的保存特征,例如,随时间显示(例如,以记录游戏的特定播放)的游戏数据、文档数据、旅行行程等。

在可以使用上述特征的各种示例实施例中,在包括多个参与者的第一聊天对话中接收对媒体项目的选择。例如,聊天对话可以在通过网络连接的多个用户设备上实施。媒体项目可以由用户设备和/或通过网络连接到一个或多个用户设备的服务器提供。在第一聊天对话中启动媒体项目的回放,使得媒体项目由参与者的用户设备显示。从第一参与者接收评论,该评论与媒体项目相关联并且与媒体项目的特定部分相关联。存储评论,并在存储评论后,检测到第二参与者的用户设备显示媒体项目的特定部分。响应于检测到第二参与者的用户设备正在显示特定部分,使得评论由第二参与者的用户设备显示。

用于这些实施例的特征还额外包括响应于确定第二参与者是在接收到评论时第一参与者正在参与的第一聊天对话的参与者,由第二参与者的用户设备显示评论。存储评论可以包括存储与评论相关联的标识信息,其中标识信息包括第一聊天对话的标识。在一些示例中,标识信息还可以包括媒体项目的标识,以及媒体项目的特定部分的标识。评论可以包括评级和/或用户评论。在一些示例中,例如,通过提供用户设备可通过网络访问的参考号,在参与者的用户设备之间同步第一聊天对话中的媒体项目的回放,其中每个用户设备尝试以规则的时间间隔与参考号同步。

在进一步的示例中,可以在用户设备的第一用户设备上执行启动回放,并且可以向一个或多个其他用户设备提供已经由第一用户设备启动媒体项目的回放的通知。其他用户设备发送数据(和/或请求)以加入回放,并且其他用户设备被添加到包括第一客户端设备的嵌入式会话。响应于添加用户设备,媒体项目的回放在其他用户设备上被同步到第一客户端设备上的当前回放位置。在另一示例中,启动媒体项目的回放包括在每个用户设备上显示的嵌入式界面中与由消息应用提供的聊天对话相关联地显示媒体项目的数据。该嵌入式界面由与消息应用相关联地运行的嵌入式应用所提供。

在一些示例实施例中,在第一客户端设备上从聊天对话中的参与者中的第一参与者接收对媒体项目的选择。第一命令被发送到与参与者相关联的一个或多个客户端设备,以启动媒体项目的回放。接收用户输入,其指示来自第二参与者的第二客户端设备上的媒体项目中的搜索点。响应于用户输入,将第二命令发送到与多个参与者相关联的一个或多个客户端设备,以将媒体项目的回放更新到搜索点。

例如,媒体项目可以是第一媒体项目。可以从第二参与者接收选择第二媒体项目的输入,并且可以将第二媒体项目添加到播放列表队列,该播放列表队列指示第一媒体项目和第二媒体项目的回放顺序。可以为第一客户端设备和一个或多个客户端设备执行媒体项目的回放的同步,包括更新指示回放位置的全局值。在一些实施例中,向与多个参与者相关联的一个或多个客户端设备提供已经启动媒体项目的回放的通知,接收一个或多个客户端设备要加入回放的指示,一个或多个客户端设备被添加到包括第一客户端设备的嵌入式会话中的指示,以及响应于将一个或多个客户端设备添加到会话、在一个或多个客户端设备上将媒体项目的回放同步到第一客户端设备上的当前回放位置的指示。在一些示例中,在第一聊天对话中启动媒体项目的回放包括在每个用户设备上显示的嵌入式界面中与由消息应用提供的聊天对话相关联地显示媒体项目的数据。

图6是示出了与消息应用相关联地提供嵌入式应用的输出的另一示例方法600的流程图。在一些示例中,方法600可以与图2的一个或多个框类似地被实施,其中从聊天对话启动嵌入式应用,并且在涉及聊天用户的嵌入式会话中处理数据。

在框602中,检查是否已获取用户同意(例如,用户许可)以在方法600的实施中使用用户数据。例如,用户数据可包括用户例如使用消息应用103发送或接收的消息、用户偏好、用户生物特征信息、用户特征(标识、姓名、年龄、性别、职业等)、关于用户的社交网络和联系人的信息、社交和其他类型的动作和活动、内容、评级、用户创建或提交的意见、用户的当前位置、历史用户数据、用户生成、接收和/或访问的图像、用户观看或共享的视频等。在一些实施例中,这里所描述的方法的一个或多个框可以使用这样的用户数据。

如果已从可在方法600中使用其用户数据的相关用户获取用户同意,则在框604中,确定这里的方法的框可以在可能使用用户数据的情况下实施,并且该方法继续到框608。如果没有获取用户同意,则在框606中确定将在不使用用户数据的情况下实施该框,并且该方法继续到框608。在一些实施例中,如果没有获取用户同意,则在不使用用户数据和利用合成数据和/或通用或可公开访问和可公开使用的数据的情况下实施该框。

在框608中,已经启动并运行嵌入式应用以在与提供聊天对话的消息应用相关联的用户设备上的嵌入式界面中提供显示输出,其中用户设备是参与聊天对话的已加入与嵌入式游戏应用相关联的嵌入式会话的多个成员设备之一,类似于上面针对图2-4所述。该方法继续到框610。

在框610中,确定本地输入是否已被接收到在用户设备上运行的嵌入式应用。例如,本地输入可以包括从嵌入式应用在其上运行的用户设备的用户接收的用户输入。如果已经接收到本地输入,则该方法继续到框612,其中基于本地输入更新嵌入式应用的一个或多个状态。例如,本地输入可以包括对嵌入式应用的一个或多个命令,这些命令使得一个或多个应用状态被改变。在该示例中,应用状态可以包括在嵌入式会话的成员设备的所有嵌入式应用中更新的状态。例如,在游戏应用中,更新可以是游戏状态,例如,一个或多个显示的游戏对象的位置变化、分数的变化等。在媒体播放器应用中,更新可以是播放媒体项目的回放特性,例如,改变回放位置、停止、暂停、倒回、快进等。在一些情形下,在用户设备处更新的状态可以不在其他成员设备处更新,例如,如果每个成员设备上的视图由该设备的用户在该特定嵌入式应用中独立控制,则在嵌入式界面中显示的环境视图(例如,游戏环境)的改变可以不在其他成员设备处更新。该方法继续到框614。

在框614中,如果更新状态是在成员设备之间更新的类型,则将更新状态发送到嵌入式会话的其他成员设备。例如,嵌入式应用可以向消息应用提供描述更新状态的数据,并且消息应用可以将数据传输到嵌入式会话的其他成员设备。该方法继续到框616。

如果在框610中未接收到本地输入,或在框614之后,该方法继续到框616,其中确定是否已经通过网络从嵌入式会话的一个或多个其他成员设备接收到输入(例如,远程输入)。如果已经接收到这样的输入,则该方法继续到框618,其中基于输入来更新应用状态。例如,输入可以指示不同成员设备上的相应的嵌入式应用的更新的应用状态,并且更新用户设备上的嵌入式设备的应用状态以与其他成员设备同步。该方法继续到框620。

如果在框616中未接收到输入,或在框618之后,该方法继续到框620,其中确定在嵌入式应用或消息应用中是否已发生一个或多个消息条件以用于应用环境中提供的一个或多个非用户应用对象。例如,应用环境可以是游戏环境,并且一个或多个非用户应用对象可以表示,例如游戏环境中不受嵌入式会话中的任何玩家用户控制的角色或实体,例如,游戏的玩家用户可以在游戏环境中与之交互的非玩家游戏实体。在另一示例中,应用对象(游戏对象)可以包括与游戏的玩家用户一起玩或对抗游戏的玩家用户的非玩家游戏角色,诸如模拟对手或团队成员。在另一示例中,应用环境可以是显示媒体项目的媒体播放器环境,并且非用户应用对象可以是显示的内容数据中的角色(例如,电影或图像中的角色)。在一些示例中,应用对象可以是由机器人程序采用并被显示为角色的假定角色或人物。

可以使非用户应用对象能够输出消息。例如,如果应用对象是角色,则消息可以与该角色在嵌入式应用和会话中的动作或作用一致。在一些实施例中,可以在可以输出不同类型的消息的嵌入式会话中实施多个不同的应用对象。

可以预定义和存储一个或多个消息条件,并且可以在嵌入式应用运行期间检查一个或多个消息条件。如果出现消息条件,则消息条件可以使得相关联的应用对象输出聊天消息。例如,特定应用对象可以与一个或多个消息条件相关联,如此,如果一个或多个消息条件发生(或者,如果一个或多个消息条件中的任何一个发生),则关联的应用对象被指定为向聊天对话输出基于当前应用状态、当前成员用户等确定的预定义的消息或消息。可以定义各种消息条件和/或消息条件类型,以触发由一个或多个相关联的非用户应用对象输出消息。消息条件可以包括,例如,在应用环境中发生的影响应用对象的事件(例如,玩家控制的对象与应用对象冲突,用户输入给应用角色的请求等)。消息条件可以包括,例如,一个或多个成员用户加入或退出嵌入式会话。消息条件可以包括,例如,对抗或帮助应用环境中的特定角色的用户动作。

在一些实施例中,消息条件可以包括通过成员用户在聊天对话中输入特定聊天消息或特定类型的聊天消息。例如,输入的聊天消息可以参考应用对象。在一些示例中,如果游戏会话中的玩家用户在聊天对话中输入消息,诸如“让我们跟随左边的那个敌人”,则该消息可以被消息应用(或嵌入式应用、其他应用,或服务器)解析和分析,并被确定为参考特定的游戏对象。这可以满足与当玩家消息参考游戏对象时触发的游戏对象相关联的消息条件。如果没有发生消息条件,则该方法可以继续到框608。

如果在框620中确定已经发生了消息条件,则该方法继续到框622,其中从嵌入式应用向消息应用提供与消息条件相关联的应用对象的对象标识。例如,对象标识可以是提供由嵌入式应用和会话显示的应用对象的名称的标签,或者可以是应用对象的其他类型的标识符。另外,在一些实施例中,在框620中,可以从嵌入式应用向消息应用提供与应用对象和消息条件相关联的消息数据。消息数据可以是文本或其他形式的消息(例如,图像、符号、音频消息等)或可以是消息的指示(例如,指示特定消息或消息类型的标志或值)。在一些实施例中,嵌入式应用可以向嵌入式应用提供被检测到已发生的消息条件。该方法继续到框624。

在框624中,消息应用向每个应用对象分配聊天标识。在一些示例中,聊天标识是由嵌入式游戏应用提供的聊天名称,或者,消息应用可以基于从嵌入式应用接收到的数据为应用对象分配聊天名称。在一些实施例中,消息应用可以基于由嵌入式应用提供的消息数据来确定用于应用对象的消息。例如,消息应用可以从嵌入式应用接收与查找表或其他数据结构中的特定文本消息相对应的值。在一些实施例中,消息应用可以接收被检测到已经在嵌入式应用中发生的一个或多个消息条件,并基于消息条件确定相关联的消息。在一些示例中,消息应用可以将描述发生的消息条件的数据发送到服务器,该服务器可以确定用于应用对象的消息并将确定的消息发送到消息应用。该方法继续到框626。

在框626中,在聊天对话中的聊天界面中输出与为应用对象确定的每个聊天标识相关联的消息。每个聊天标识表示相关联的应用对象,其在聊天对话中向聊天用户(例如,在一些实施例中仅成员用户)提供消息。这允许嵌入式会话的成员设备在其聊天界面中显示消息,并允许成员用户查看消息。在一些实施例中,消息应用可以在一个或多个特定成员设备的聊天界面中输出消息,而不是在其他成员设备的聊天界面中输出消息,例如,在一个或多个特定成员设备的聊天界面中直接输出的消息。例如,如果特定应用对象是由于与应用环境中的用户进行交互(例如,通过用户控制的应用对象或通过来自成员用户的直接输入)而向成员用户的子集提供消息,则该消息可以被发送到该用户子集的成员设备并由用户子集的成员设备显示。

输出消息可以采用各种形式,并且可以基于消息条件和与该应用对象相关联的一组存储消息。例如,如果加入嵌入式游戏会话的一个或多个成员用户满足消息条件并且相关联的游戏对象是玩家-敌人游戏对象(例如,角色),则用于该游戏对象的输出消息可以是“另一个受害者!”。类似的消息条件可以与对玩家友好的游戏对象(例如,角色)相关联,其可以提供诸如“欢迎,用户”之类的消息。在另一示例中,响应于加入嵌入式会话的新用户满足消息条件,相关联的应用对象(例如,角色)可以通过发送仅在新玩家的聊天界面中显示的包括用于应用用户的提示或贴士(例如,如何玩游戏)的一个或多个消息来向新用户提供帮助。在另一示例中,如果消息条件通过嵌入式应用中的事件发生在应用对象上而被满足,则相关联的消息可以包括应用对象的状态的描述(例如,说“我需要你们所有人的帮助”或“小心,我更强大”的游戏角色)。在另一示例中,如果消息条件通过对抗非用户应用角色的用户动作而被满足,则非用户角色可以提供诸如嘲讽的消息(例如,在游戏中,“你的努力是无用的”)。在另一个示例中,如果消息条件通过帮助非用户应用对象(例如,角色)的用户动作而被满足,则应用对象可以提供感谢帮助用户的消息(例如,“非常需要您的帮助”)。在另一示例中,消息条件可以通过在聊天对话中来自成员用户的特定用户聊天消息的输入而被满足,其中聊天消息参考游戏对象(例如,“让我们跟随左边的那个敌人”)。响应于满足消息条件,由表示游戏对象的聊天标识输出的相关消息可以包括诸如“你会发现我是一个有价值的对手”的文本。在一些实施例中,这样的消息可包括图像、表情符号或其他类型的数据。

提供与嵌入式应用相关联的建议项目的示例

图7是示出用于在聊天对话中提供与嵌入式应用相关联的建议响应项目的示例方法700的流程图。

可以在聊天界面和/或嵌入式界面中生成并提供建议响应项目(在这里也称为“建议项目”),用于用户在各种上下文中选择。经用户和发送和/或接收图像的一个或多个其他用户的同意,可以生成建议响应项目并将其自动提供给用户。

可以基于可向一组数据提供相关结果的一种或多种技术来确定建议响应项目。在一些实施例中,可以基于(例如,在查找表或数据库中)存储的、预定义的建议响应项目与已经发生的特定建议事件和/或特定类型的建议事件的关联来确定建议响应项目,如下所述。建议响应项目可以是或包括一个或多个不同的内容数据类型,包括文本、图像、动画图像(例如,电影图)、音频片段、视频、其他类型的文档(例如,电子表格、表等)等。建议响应项目也可以包括或被呈现为交互式卡。在一些实施例中,建议响应项目可以包括执行一个或多个动作或提供输出的附加的(例如,轻量级的)嵌入式应用,如下所述。可以在菜单(例如,下拉菜单、轮播选择菜单等)中呈现这些类型和特征中的多种类型和建议响应。

在一些示例中,可以使用一种或各种机器学习技术来确定建议响应项目。在一些示例中,消息应用103a/103b可以实施机器学习或与机器学习应用(例如,深度学习模型)接合,其可以增强与消息应用103的用户交互。例如,建议服务器156可以利用机器学习为消息应用提供建议。在一些实施例中,机器学习可以在环境100的一个或多个其他组件上实施,并且例如,不使用建议服务器156。

在接收要为其生成建议响应项目的建议事件之前,可以基于训练数据创建机器学习模型,使得在接收建议事件的指示时,可以使用现有的模型来生成建议响应项目。可以使用合成数据或测试数据(例如,由计算机自动生成的数据)而不使用用户信息来训练机器学习模型。合成数据可以基于嵌入式应用和嵌入式会话中发生的模拟事件以及响应命令和消息,其中没有人类用户作为参与者。在一些实施例中,可以使用样本数据或训练数据来训练机器学习模型,样本数据或训练数据例如是响应于嵌入式应用和会话事件通过同意为训练目的提供此类数据的用户实际提供的命令和消息。在使用之前处理训练数据以移除用户标识符和其他用户相关的信息。在一些实施例中,可以基于样本数据来训练机器学习模型,对于该样本数据,已经从用户处明确地获取了利用用户数据进行训练的许可。在训练机器学习模型之后,可以将新发生的数据集输入到模型中,并且模型可以基于其对样本数据的训练来提供建议项目。基于样本数据,机器学习模型可以预测对嵌入式会话中发生事件的消息和命令,然后其可以被提供为建议响应项目。例如,通过减少用户确定对应用事件的命令或撰写消息的负担、通过提供基于发生的事件和用户的上下文定制的响应项目的选择,用户交互被增强。下面参考图12描述机器学习应用和机器学习特征的一些示例。

在一些示例中,当用户提供同意时,可以基于用户的先前的活动来定制建议响应项目,该先前的活动例如是在对话中提供的较早消息、在不同对话中的消息、由用户向嵌入式应用或不同的嵌入式应用程序提供的较早命令等。例如,可以基于用户的交互风格,使用这样的活动来为用户确定适当的建议项目,例如,有趣的消息或命令、正式消息等。在另一示例中,当用户指定一个或多个用户偏好的语言和/或地区时,消息应用103a/103b可以以用户的偏好语言生成建议项目。在各种示例中,建议项目可以是文本消息、图像、多媒体、编码命令等。

在一些实施例中,机器学习可以在环境100的一个或多个组件上实施,例如,建议服务器156、消息服务器101、客户端设备115、消息服务器101和客户端设备115中的一个或两者等。在一些实施例中,可以在客户端设备115上实施简单的机器学习模型(例如,以允许在内存、存储中操作模型,和处理客户端设备的约束),并且可以在消息服务器101、建议服务器156和/或不同的服务器上实施复杂的机器学习模型。如果用户未同意使用机器学习技术,则不实施这些技术。在一些实施例中,用户可以选择性地提供同意用于仅在客户端设备115上实施机器学习。在这些实施例中,机器学习可以在客户端设备115上实施,使得机器学习模型的更新或机器学习模型使用的用户信息在本地存储或使用,并且不被共享给其他设备,诸如消息服务器101、服务器135和服务器150-156、或其他客户端设备115。

对于提供同意接收建议的用户,例如,基于机器学习技术,可以由消息应用103提供建议。例如,建议可以包括内容的建议(例如,电影、书籍等)、日程的建议(例如,用户日历上的可用时间)、事件/场地的建议(例如,餐馆、音乐会等)等。在一些实施例中,如果通过其设备参与聊天对话的用户同意使用对话数据,则建议可以包括基于对话内容的对其他聊天用户输入的消息的建议消息响应。例如,如果两个用户中的第一用户同意基于对话内容的建议,则会发送消息“你想吃点东西吗?意大利的怎么样?”可能会向第二用户建议响应,例如“@助理午餐,意大利,2人桌”。在此示例中,建议响应包括机器人程序(由符号@和机器人程序处理助手标识)。如果第二用户选择此响应,则将助理机器人程序添加到聊天对话中,并将消息发送到机器人程序。然后可以在对话中显示来自机器人程序的响应,并且两个用户中的任何一个可以向机器人程序发送进一步的消息。在该示例中,不向助理机器人程序提供对聊天对话的内容的访问,并且由消息应用生成建议项目。

在某些实施例中,可以基于机器人程序是否已经存在于聊天对话中或者是否能够被合并到聊天对话中来定制建议项目的内容。例如,如果确定旅行机器人程序可以合并到消息应用中,则对关于往法国的机票费用的问题的建议消息响应可以是“让我们问旅行机器人程序!”

在不同的实施例中,建议(例如,如这里所述的建议消息)可包括以下中的一个或多个:文本(例如,“极好!”)、表情符号(例如,笑脸、困倦脸等)、图像(例如,来自用户照片库的照片)、基于模板生成的有用户数据插入模板的字段中(例如,“她的号码是<电话号码>”,其中基于用户数据填写字段“电话号码”,如果用户提供对用户数据的访问)的文本、链接(例如,统一资源定位符)、消息贴纸等。在一些实施例中,建议消息可以被格式化和/或设计,例如,使用颜色、字体、布局等。例如,包括电影推荐的建议消息可以包括关于电影的描述性文本、来自电影的图像以及购买门票的链接。在不同的实施例中,建议消息可以被呈现为不同类型的用户界面元素,例如文本框、交互式卡等。

在各种实施例中,向用户提供对他们是否接收建议项目、他们接收什么类型的建议项目、建议项目的频率等的控制。例如,用户可以完全地拒绝接收建议项目,或者可以选择特定类型的建议项目,或仅在一天中的某些时段接收建议项目。在另一示例中,用户可以选择接收个性化建议项目。在该示例中,基于用户关于其数据的使用和机器学习技术的使用的偏好,机器学习可以被用于提供建议项目。

在框702中,检查是否已获取用户同意(例如,用户许可)以在方法700的实施中使用用户数据。例如,用户数据可包括用户例如使用消息应用103发送或接收的消息、用户偏好、用户生物特征信息、用户特征(标识、姓名、年龄、性别、职业等)、关于用户的社交网络和联系人的信息、社交和其他类型的动作和活动、内容、评级、用户创建或提交的意见、用户的当前位置、历史用户数据、用户生成、接收和/或访问的图像、用户观看或共享的视频等。在一些实施例中,这里所描述的方法的一个或多个框可以使用这样的用户数据。

如果已从可在方法700中使用其用户数据的相关用户获取用户同意,则在框704中,确定这里的方法的框可以在可能使用用户数据的情况下实施,并且该方法继续到框708。如果没有获取用户同意,则在框706中确定将在不使用用户数据的情况下实施该框,并且该方法继续到框708。在一些实施例中,如果没有获取用户同意,则在不使用用户数据和利用合成数据和/或通用或可公开访问和可公开使用的数据的情况下实施该框。

在框708中,针对与提供(第一)聊天对话的(第一)消息应用相关联的第一用户设备运行(第一)嵌入式应用,其中第一用户设备是参与聊天对话且已经加入了与聊天对话相关联地创建的嵌入式会话的多个用户设备之一,类似于上面针对图2-4所描述的。用户设备是运行如上所述的相应的嵌入式应用的成员设备。

在框710中,确定是否已经发生建议事件,例如,如图7所描述的可以使得一个或多个建议响应项目被生成的事件。在一些实施例中,建议事件可以包括发生的与嵌入式应用相关联的事件。这样的建议事件可以发生在嵌入式会话的嵌入式应用中、消息应用中、嵌入式会话中使用的服务器中、和/或与嵌入式会话通信的不同应用中、成员设备或聊天设备中。建议事件可以包括在设备处用户输入的接收、程序中的状态变化、设备之间的数据通信、用户设备通过网络与嵌入式会话或设备的连接、在设备处数据的接收或传输(例如,在程序之间,通过网络等),在媒体数据或其他数据中的内容特征的检测、聊天消息中的特定主题的检测、在先前时间发生的这些事件中的一个或多个(例如,在历史数据中指示)等。例如,在一些实施例中,可以检查建议事件在消息应用(例如,聊天对话)中的发生,诸如聊天用户进入或离开聊天对话、在由用户输入到聊天对话的聊天消息中的特定检测内容,等。这里描述了其他示例。建议事件触发生成可以在聊天对话或聊天界面中的成员设备(或聊天设备)上呈现并且可选择供设备的用户使用的一个或多个建议响应项目,如下所述。

在各种实施例中,嵌入式应用和/或消息应用可以确定事件是否有资格作为建议事件。在一些实施例中,建议事件可以是嵌入式应用、消息应用和/或其他应用和设备中的多个预定义类型的事件中的任何一个,其已被指定为使得为用户生成建议响应项目的建议事件。

在一些实施例中,可以基于在参与聊天对话的一个或多个聊天设备处发生的一个或多个特定事件来确定建议事件。例如,这样的特定事件可以包括由第一用户设备的聊天界面和/或嵌入式界面和/或其他成员设备或聊天设备接收的用户输入。在一些示例中,这样的特定事件可以是基于通过一个或多个成员设备从相关联的聊天用户和/或成员用户处接收的用户输入,而在嵌入式应用中执行的聊天用户动作和/或成员用户动作。例如,通过网络接收指示和/或识别特定事件的数据,第一用户设备(例如,第一消息应用)可以接收在其他设备(例如,成员设备、聊天设备和/或其他设备)处发生特定事件的指示。

例如,建议事件可以是用户基于成员设备或聊天设备处的用户输入来加入或离开嵌入式会话,或者基于用户输入和影响嵌入式会话的一个或多个状态(例如,影响在嵌入式会话的成员设备上运行的相应嵌入式应用的一个或多个状态)的不同动作。建议事件可以是用户在聊天界面中选择的嵌入式应用和/或由成员用户启动的嵌入式应用。建议事件可以是由成员用户在嵌入式应用中执行的动作(例如,开始媒体项目的回放、执行游戏动作、添加或修改嵌入式应用中提供的并显示在嵌入式界面中的显示的、共享对象,例如,文档对象、游戏对象等)。建议事件可以是先前由成员用户添加到媒体项目的特定用户评论(例如,如参考图5所描述的)的当前显示(例如,在嵌入式界面中)。建议事件可以是基于本地(第一用户设备)或远程(其他成员/聊天设备)用户输入改变共享内容文档中的项目或元素,或在嵌入式会话的嵌入式应用中编辑其他共享数据。建议事件可以是成员用户在嵌入式旅行行程应用中对特定旅行行程的选择或确认。

在一些实施例中,可以基于一个或多个特定事件来确定建议事件,该特定事件是在一个或多个成员设备处(例如,在嵌入式会话的一个或多个嵌入式应用之内)发生的嵌入式应用事件。在一些实施例中,一些类型的嵌入式应用事件是基于用户输入,并且一些类型的嵌入式应用事件不基于用户输入。在一些示例中,建议事件可以基于嵌入式应用事件,诸如在嵌入式应用中播放特定内容数据(例如,媒体项目数据)。例如,特定内容数据可以是在播放的媒体项目的视觉内容(例如,图像或视频)、或音频内容(例如,数据的音频片段)中使用一种或多种图像识别和/或语音/音频识别技术检测到的一个或多个内容特征(或内容特征的类型)。例如,内容特征可以包括视觉内容特征(例如,如果已经获取用户同意,则是面部、景观特征、纪念碑、对象等)和音频内容特征(例如,声音、特定音效等)。内容特征可以包括地理位置,例如,作为元数据与诸如视频、图像、音频片段、游戏等的内容项目一起被提供,。建议事件可以是在嵌入式游戏应用中达到(或未达到)特定目标或分数,或在游戏中第一名玩家和下一名玩家之间达到大于预定阈值的分数差。建议事件可以是玩家在嵌入式游戏应用中进行特定动作或移动的机会(例如,等待玩家动作以推进游戏状态、由已执行游戏动作的不同成员用户触发、或由时间、游戏中的非玩家事件等触发的游戏应用)。

在一些实施例中,建议事件可以是特定类型的嵌入式应用事件。例如,用户成员事件可以包括聊天用户(例如,通过在聊天设备处启动嵌入式应用)开始新的嵌入式会话,聊天用户加入活跃的嵌入式会话,成员用户退出活跃的嵌入式会话,或者嵌入式会话的最后一个成员用户退出嵌入式会话和/或以其他方式结束嵌入式会话。某些指定的嵌入式应用事件可以包括开始或结束事件(例如,成员用户赢得游戏(使得游戏完成))、创建或删除内容文档、新视频在媒体播放器应用中开始或结束等。同步事件可以包括向成员设备提供数据以同步成员设备上的嵌入式应用的事件(例如,输入用户动作改变游戏状态,改变媒体播放器应用中播放的媒体项目的回放位置的状态,改变共享列表上的项目等)。建议事件可以被定义为一个或多个这种定义的类型的嵌入式应用事件的发生。

在一些实施例中,可以在应用之间和/或在聊天设备之间发送事件信息,以指示特定事件(和/或建议事件)已经发生。例如,在嵌入式应用中已发生的特定事件发生时,事件信息可以从嵌入式应用传递到与其相关联的消息应用。在一些实施例或情形下,特定事件已在嵌入式应用中发生,并且事件信息可指示特定事件的发生和/或可识别特定事件或事件的类型。例如,事件信息可以指示特定事件的类型(例如,已经在特定游戏中执行了游戏动作、媒体项目的回放已被暂停或改变到不同的回放位置等)、与特定事件相关联的数据(例如,事件发生的时间、被检测为事件的播放的媒体项目中显示的特征的类型等)、特定事件的情况(例如,哪些成员用户导致了该事件或者具有受该事件影响的角色、状态或分数等)。此类特定事件可包括这里描述的任何事件,例如,嵌入式应用事件、消息应用事件、服务器事件等。

在一些实施例中,事件信息可以通过网络从一个设备被发送到另一个设备,例如,从成员设备(或聊天设备)发送到服务器设备,从服务器设备发送到一个或多个成员设备(或者聊天设备)等。例如,嵌入式事件信息可以来自指示嵌入式应用中发生的事件的嵌入式应用,服务器事件信息可以来自指示服务器处发生的事件的服务器等。在一些示例中,成员设备上的消息应用可以从不同的设备接收指示在不同设备上发生特定事件的事件信息。在一些实施例或情形下,消息应用可以确定由所接收的事件信息指示的事件是否是建议事件。在一些实施或情形下,消息应用可以将事件信息传递给与该消息应用相关联地运行的嵌入式应用,其中嵌入式应用确定由事件信息指示的事件是否是建议事件(并且可以将任何产生的建议事件传送回消息应用)。

在一些实施例中,由消息应用接收的事件信息可以指示特定事件是建议事件。例如,事件信息的来源可能已经确定特定事件有资格作为建议事件。在一些实施例中,事件信息可以指示特定事件,并且消息应用可以确定特定事件是否有资格作为建议事件。在一些实施例中,消息应用可以使用这样的事件信息来获取建议项目,例如,自己确定一个或多个建议项目和/或将事件信息(或从事件信息导出的请求)发送到不同的程序或设备,以确定可以发送回消息应用的建议项目。

在一些实施例中,建议事件可以是消息应用中的或者提供给消息应用的特定事件。例如,用户进入(例如,登录、上线)或退出聊天对话可以是建议事件。成员用户在聊天对话中输入的一个或多个特定聊天消息(或特定的一组或聊天消息序列)可以被认为是建议事件。例如,可以解析聊天消息,并且可以检测一个或多个预定主题、单词或关键词和/或短语以确定建议事件(例如,“出去吃饭”、“让我们邀请用户4”、“让我们观看电影a”、特定的名称、地址、位置等)。在一些实施例中,机器学习模型可以在训练阶段中用合成或实际训练数据训练,并且在方法700中使用的推理阶段中,可以用于处理一组聊天消息以预测建议事件是否已经发生。例如,模型可以基于一组聊天消息的内容来预测用户是否可能启动或提供任何特定的用户动作(例如,命令或进一步的消息),并且如果这些命令在发生概率的阈值内,则该组聊天消息的输入(例如,该组的最后一条聊天消息的输入)可以被认为是建议事件。

在一些实施例中,建议事件可以是消息应用中或提供给消息应用的特定事件,其改变在第一设备上运行的嵌入式应用的一个或多个状态(例如,其反过来导致在其他成员设备上运行的相应嵌入式应用的一个或多个状态的改变)。例如,通过聊天界面提供给消息应用的用户输入可以将命令指向嵌入式应用(例如,基于在聊天界面中作为聊天消息输入的文本命令,改变播放的媒体项目的播放状态、执行游戏动作等)。在一些实施例中,聊天界面中不是对嵌入式应用的直接命令的输入可以改变嵌入式应用的一个或多个状态。例如,可以通过在嵌入式界面外部的聊天界面中显示的菜单或界面元素来执行对嵌入式应用选项的选择。在另外的示例中,在聊天界面中输入的聊天消息可以由运行的嵌入式应用解析,并且可以使得嵌入式应用改变其状态中的一个或多个以确定或处理数据、显示特定输出数据和/或从存储、不同设备、网络站点中检索数据等,如同这里描述的示例。

在一些实施例中,建议事件可以是在由提供第一聊天对话的消息应用提供的不同聊天对话内发生的特定事件。例如,特定事件可以是在不同聊天对话中输入的用户消息、该用户消息的特定内容匹配预定义的单词或短语(或基于机器学习技术的其他匹配)、用户加入或退出不同的聊天对话等。在一些示例中,不同聊天对话的聊天用户可以输入指示对加入第一聊天对话感兴趣的消息,并且该消息可以被检测为建议事件以生成建议命令(例如,将不同聊天对话的用户添加到第一聊天对话和/或嵌入会话的命令)或建议消息(例如,在不同聊天对话中输出的、欢迎其他用户、邀请不同聊天对话的用户到第一聊天对话等的消息)。

在一些实施例中,建议事件可以是特定事件,其是指令系统为用户生成一个或多个建议响应项目的用户动作(例如,输入命令)。例如,用户可以选择嵌入式界面或聊天界面中的界面元素,该界面元素是生成一个或多个一般建议消息或建议命令的命令。在一些示例中,这样的建议消息可以包括关于嵌入式应用的评论或关于一个或多个成员用户的评论,或者这样的建议命令可以包括退出嵌入式会话、放弃游戏等的命令。

在一些实施例中,建议事件可以基于从在用户设备上运行的不同于消息应用和嵌入式应用的不同应用接收的数据,其中数据指示在不同应用中发生了特定事件。例如,视频会议应用可以向消息应用发送指示视频会议已经结束、特定用户已经加入或退出视频会议等的指示(例如,数据)。在一些实施例中,建议事件可以是已经在服务器或其他设备上(例如,在服务器或其他设备上运行的应用中)发生的特定事件,其他设备通过网络与用户设备通信的并且例如正在提供在嵌入式会话中使用的数据,。例如,特定事件可以包括服务器从不参与聊天对话的其他用户设备获得的用户输入(例如,存储的媒体项目的评论或评级),例如,用户对与服务器正向嵌入式会话提供的第一内容数据相同的第二内容数据的请求,对正在发送给其他用户设备的第二内容数据的用户评论或评级等。

建议事件可以包括在服务器上发生的特定事件,例如,由服务器运行并通过网络流到成员设备的游戏中的游戏事件(诸如游戏状态的改变等)、显示在从服务器等流到成员设备的媒体项目中的特定类型的内容特征。消息应用可以从服务器接收指示或描述已经发生的特定服务器事件的服务器事件信息,这可以有资格作为消息应用或嵌入式应用的建议事件。

如果已经获取用户同意,则建议事件可以包括在先前时间发生的特定事件。例如,在用户同意的情况下,可以在存储在一个或多个设备上的数据中指示或描述这里描述的一个或多个特定事件的发生(例如,设备通信的描述、聊天消息的内容等),并且设备可以在该数据中搜索这种先前的特定事件。

在框712中,确定检测到的建议事件是否为与嵌入式应用的一个或多个建议命令相关联的事件(和/或具有与嵌入式应用的一个或多个建议命令相关联的类型的事件)。例如,一些类型的建议事件可以使得生成建议响应项目,这些建议响应项目是针对嵌入式应用的建议命令。

用于嵌入式应用的建议命令可以是例如修改嵌入式应用的一个或多个状态的命令。例如,建议命令可以是建议回放命令,用于设置回放位置或将当前回放位置改变为正在嵌入式应用中播放的媒体项目的新回放位置。在进一步的示例中,建议命令可以是修改嵌入式游戏应用中的游戏状态的命令,例如,执行特定的游戏动作,诸如移动游戏块或角色、改变游戏显示视点、选择游戏对象等。建议命令可以是添加、修改或移除嵌入式应用中提供的共享内容文档(例如,共享列表)的特定项目或元素。能够提供建议命令的建议事件类型可以包括,例如,一个或多个成员用户加入或退出嵌入式会话、玩家在游戏嵌入式应用中做的动作、游戏正在等待玩家的动作或移动的游戏状态、游戏中的玩家或玩家的对象正与不同的玩家或玩家的对象进行交互的事件(例如,对象之间的攻击或冲突、从一个玩家到另一个玩家的帮助的提供或请求等)、检测到的媒体项目的视觉或音频内容的改变(例如,从具有低速移动物体的场景到具有超过阈值移动速度的移动物体的场景的变化、从谈话场景到动作场景的变化、从较低音量或恒定声音到超过阈值的较高音量或者超过阈值频率的幅度快速改变的声音的音频输出的变化等),由不同的成员用户对共享内容文档执行的变化(例如,提示用户额外的变化或改变回所执行的改变的建议)、播放的媒体项目的回放位置的变化等。

如果检测到的建议事件是为嵌入式应用提供一个或多个建议命令的类型,则该方法继续到框714,其中,获得一个或多个建议命令,并且一个或多个建议命令至少部分地基于建议事件。在一些实施例中,建议命令可以基于除了建议事件之外的或替代建议事件的其他因素,例如,嵌入式应用和/或消息应用的一个或多个当前状态(例如,媒体项目的回放的当前时间位置、当前游戏得分、成员用户和/或聊天用户的当前数量或标识、一天中的时间等)。在一些示例中,一个或多个建议响应项目可以由嵌入式应用和/或聊天应用基于建议事件来确定。在一些实施例中,可以向用户提供使得建议响应项目被禁用(例如,不被生成和/或不被显示)的选项(例如,显示的界面元素)。

在一些实施例中,可以基于存储的、预定义的建议命令与特定建议事件和/或特定类型的建议事件类型的关联来确定建议命令。例如,在查找表中或数据库中,例如一个或多个特定类型的建议事件可以与一个或多个特定命令相关联,从而基于检测到的建议事件来检索相关联的命令。

在一些实施例中,嵌入式应用可以实施推荐引擎(例如,基于用于确定嵌入式应用中的结果的规则、其他规则集、决策树等)来确定建议响应项目。在一个示例中,可以基于决策树(或其他决策构造)来确定建议响应项目,其中树的节点处的一个或多个条件的状态确定通过树的路径以将建议项目确定为最终结果,其中条件可以包括建议事件和其他条件。在另一示例中,当嵌入式应用是基于规则的游戏(例如,国际象棋、扑克等)时,可以基于游戏的规则和/或目标来确定建议响应项目。例如,建议响应项目可以是游戏中的移动(例如,bg7,其指示象移动到棋盘位置g7)。例如,规则集或决策树可以基于预定义的获胜概率来确定移动。在另一示例中,当用户允许分析用户数据时,建议响应项目可以基于用户的先前接受的建议(例如,用户通常用移动d4来打开国际象棋游戏,其指示将卒移动到位置d4)。

在一些实施例中,当用户允许使用用户简档数据时,可以基于用户简档数据来确定建议响应项目,用户简档数据例如是用户偏好或由用户输入直接指定的和/或基于先前用户动作推断的默认值。例如,如果嵌入式应用是购物应用(例如,旅行应用、电子商务应用等),并且建议事件是用户已导航到“购买”用户界面,则基于用户的简档,建议响应项目可以包括“使用信用卡支付”、“使用银行帐户支付”、“使用现金支付”等。类似地,如果已经获得用户同意,则诸如用户的联系信息(例如,地址、电话号码、电子邮件等)的其他用户简档数据可以包括在建议响应项目中。在一些实施例中,例如,当嵌入式应用是“测验”应用时,嵌入式应用可以提供建议响应项目作为回答测验问题的多个选择。

在一些实施例中,可以使用用于如这里所述的嵌入式应用和/或机器学习技术的训练模型来确定建议命令。例如,建议命令可以是机器学习模型的推理阶段的结果,其中先前已经用作为训练数据的特定的建议事件和特定类型的建议事件以及用户响应于那些建议事件所输入的特定命令训练了模型,使得模型可以基于新发生的建议事件在推理阶段产生可能的或相关的建议命令。在一些实施例中,建议响应项目可以由机器学习应用确定,该机器学习应用被训练为提供用于特定嵌入式应用的响应项目。在一些示例中,可以训练用于建议响应的机器学习模型,以识别可以在特定嵌入式应用中执行的各种游戏动作,其中机器学习模型可以在嵌入式应用中提供在该嵌入式应用中触发响应动作的建议命令,例如“构建塔”、“将卒移动到空间d1”、“接下来播放此视频”等。

在各种实施例中,可以分析建议事件以确定一个或多个建议命令(或其他响应项目)。在一些实施例中,对建议事件的分析可以包括查找建议事件的规则集或决策树。在一些实施例中,对建议事件的分析可以包括确定嵌入式应用的状态(例如,游戏中的进展水平、在游戏期间与帮助相关的用户设置等)以确定建议事件的上下文。

在一些示例实施例中,嵌入式应用正在播放媒体项目,并且可以提供建议命令以修改媒体项目的播放。例如,如果建议事件是加入嵌入式会话的聊天用户查看媒体项目,则建议命令可以是从媒体项目的开始处重新开始回放(例如,从片段的开头开始视频或音频片段),其可以允许新成员用户从开头查看媒体项目。在一些实施例中,响应于媒体项目处于作为在开始之后的阈值时间段的当前回放点,可以生成这样的“重新开始”建议命令,使得如果播放位置已经播放达超过阈值时间段的时间段(例如,因为现有成员用户可能不希望重新开始已经播放了很长时间的媒体项目),则不生成这样的“重新开始”建议命令。在另一示例中,如果建议事件是已经检测到的已经在媒体项目中发生的特定类型的场景或序列(例如,检测到的动作场景或序列),则建议命令可以包括将回放位置倒回特定时间量以从该场景的开始重放检测到的场景或序列。另一个示例建议命令可以使得嵌入式应用显示提示或输入字段以允许用户输入用户评论,然后在播放的媒体项目的显示场景上显示(例如,叠加)该用户评论(如参考图5所描述的)。在另一示例中,如果建议事件是通过另一成员用户改变媒体项目的回放位置,则建议命令可以是将回放位置的改变撤消或恢复到改变之前保持的位置。在另一示例中,如果建议事件是回放位置的改变,则建议命令可以包括回放位置向最近的(在一个方向或任一方向上的)场景转换、章节划分、片段划分、或媒体文件中的其他标记划分的一个或多个进一步的改变(例如,诸如“调整到最近的前一章节标题?”和“调整到最近的后一章节标题?”的命令)。在另一个示例中,如果建议事件是媒体项目输出的音频音量的改变(例如,改变阈值量,或改变为高于阈值水平的音量水平),则建议命令可以是升高或降低音量。

在一些示意性实施例中,嵌入式应用提供游戏,并且建议命令可以指向游戏。例如,如果建议事件是游戏的第二玩家的游戏动作,则针对第一玩家的建议命令可以响应于游戏动作使得向游戏输入一个或多个可能的动作,例如,如可以评估游戏策略和动作的游戏算法确定的那样。在一些示例中,如果建议事件是对手玩家对游戏棋子的移动,则建议命令可以包括用户的棋子在游戏中的各种可能的响应移动(例如,在异步或回合制游戏中)。在另一示例中,如果建议事件是敌方游戏棋子侵入用户的游戏区域,建议命令可以包括用于移动棋子以拦截入侵者、在入侵位置处利用玩家的棋子来保护入侵位置等的命令。在另一个示例中,如果建议事件是另一个玩家加入游戏,则建议命令可以包括请求新的玩家在游戏中加入用户的团队,并请求不同的玩家组成一个团队来对抗新玩家。在另一个示例中,如果建议事件是成员用户退出游戏(或者将玩家角色改变为游戏中的观察者角色),则建议命令可以是请求暂停游戏直到替换玩家加入游戏。在另一示例中,如果建议事件是用户的得分(或其他游戏目标)以阈值量不同于(例如,落后或领先)其他玩家的得分或目标,则建议命令可以包括向其他玩家发送提示或请求其他玩家向用户提供提示、要求其他玩家在游戏中妨碍或支援自己、重新开始游戏等。

在一些示例实施例中,嵌入式应用提供共享对象,例如游戏中的游戏对象、诸如列表或其他项目文档的共享内容文档等。建议命令可以是改变或影响共享对象的命令,例如,编辑、、移除共享对象等、改变其一个或多个特性(例如,类型、颜色、大小或尺寸等)。例如,如果建议事件是在嵌入式应用中启动共享列表,则建议命令可以是添加、删除或改变列表上的项目。在另一示例中,如果建议事件是由不同的成员用户向共享列表添加项目,则建议命令可以是突出显示或以其他方式形象地指示嵌入式界面中添加的项目。在一些实施例中,突出显示的命令可以伴随可在嵌入式界面或聊天界面中输出的建议文本,例如,“我们是否需要此项目?”或“我建议移除这个”(例如,如下所述的建议消息)。在另一个示例中,如果建议事件是移除项目,则建议命令可以包括在嵌入式界面(或聊天界面)中输出文本,例如,“为什么要移除它?”在另一示例中,响应于用户突出显示特定项目的建议事件,建议命令可以包括将列表内的建议项目移动一个、两个或更多个位置、向上或向下、移动至开始或结束等。

在可以应用于许多类型的嵌入式应用的额外示例中,如果建议事件是成员用户加入嵌入式会话,如果已经在允许这种控制分配的嵌入式应用中为新成员用户分配了用户状态(例如,用户角色),则建议命令可以指令对嵌入式应用的指定功能的控制被分配给新成员用户。例如,建议命令可以是允许新用户能够改变在嵌入式应用中播放的媒体项目的回放位置、改变共享列表上的项目等的状态。在一些实施例中,建议命令可以是从指定用户移除此类控制能力(如果命令用户能够这样做),例如,如果消息应用(或其他程序或设备)在来自聊天对话中的指定用户的消息中检测到滥用或不适当的语言。

如果已经获取用户同意,则建议命令也可以或者替代地基于用户在相同或相似类型的嵌入式应用中和/或针对相同或相似类型的输出数据(例如,媒体项目、游戏等)执行的先前动作和/或消息的历史。例如,如果用户先前已经倒回或跳过视频中特定场景或特定类型的场景的回放,则可以生成建议命令,该建议命令使得当前播放的媒体项目的回放位置以相同的方式被倒回或移动。

建议命令还可以或替代地基于(第一)聊天对话中的成员用户输入,正如在消息应用的聊天界面中所显示的。在各种实施例中,该用户输入可以被认为是检测到的建议事件的一部分,或者可以被认为在检测到的建议事件之外(例如,对于建议事件的补充)。例如,可以基于提及这样的活动的聊天消息(例如,“让我们观看搞笑电影2”、“让我们玩国际象棋”、或“我们需要购物列表”等)来生成建议命令,以启动涉及实施媒体播放器、游戏、内容文档或其他功能的嵌入式应用的嵌入式会话。在另一个示例中,如果该成员用户已在聊天对话中发送了指示所需用户角色的消息(例如,“我将进行游戏”指示玩家角色,或者“我只想观看”指示观察者角色),则可以生成建议命令以将用户状态或角色分配给嵌入式会话中的特定成员用户。在另一示例中,如果一个或多个成员用户在聊天对话中输入了诸如“让我们跳过这个场景”或“让我们一起观看汽车追逐”的消息,则可以生成建议命令,该建议命令将播放的媒体项目的回放位置移动越过当前场景或移动到特定的后续场景。

在一些实施例中,如果已经从与这样的用户数据相关或相关联的用户处获取了使用这种用户数据的同意,则可以使用用户数据来确定建议命令和/或建议消息。例如,成员用户或聊天用户(或他们的设备)的当前地理位置可以由消息应用获取和/或提供给嵌入式应用以用于确定建议响应项目。例如,建议命令可以参考用户的当前地理位置(经用户同意),例如,以指令嵌入式旅行行程应用基于当前用户位置来提供行程。如果已获取用户同意,则其他类型的用户数据可使得生成建议项目。在额外的示例中,诸如安装在设备上的应用(例如,消息应用外部的应用)的列表的用户数据可用于生成建议项目。例如,可以生成建议消息,其推荐一个或多个应用用于聊天对话中的其他聊天用户使用。

在额外的示例中,用户设备接收的诸如sms消息和电话呼叫的用户数据可用于生成建议命令以转发或注释消息。例如,消息应用拦截已经接收到的sms消息并且可以生成转发或注释能力,例如,用于与聊天对话共享该sms消息的建议命令和/或建议消息、用于向另一个消息(例如,聊天消息、电子邮件消息等)注释sms图像并将其发送给另一个用户的建议命令等。在另一个示例中,当用户正在活跃地在聊天对话中输入消息时,消息应用可以检测到正在接收电话呼叫,并且嵌入式应用可以生成建议消息(例如,“我正在接听电话,会回来的”)到聊天对话。诸如健身跟踪器信息的用户数据可用于提供建议消息,该建议消息挑战聊天对话中的其他聊天用户进行健身练习。诸如用户设备上的当前系统音频音量/静音状态的用户数据可用于提供在媒体项目的回放之前或期间自动调整媒体回放音量/开关状态的建议命令。诸如浏览历史的用户数据可用于生成建议命令,以例如在浏览器嵌入式应用中为用户显示购物建议。诸如特定系统或网络站点的用户帐户信息(例如,登录/密码)的用户数据可用于提供在嵌入式应用中访问那些系统的建议命令。诸如最近添加到联系人列表的用户的用户数据(例如,在距当前时间的阈值时间内添加的用户数据)可用于提供建议命令,以将这些用户中的一个或多个添加到聊天对话,或提供建议命令以邀请这些用户中的一个或多个加入用户正在参与的特定嵌入式会话。

在一些实施例中,建议命令可以是嵌入式应用,以使得嵌入式应用控制在第一用户设备上或在通过网络与第一用户设备通信的不同设备上运行的外部应用。这里描述了这种控制的一些示例。

一些建议事件类型可以导致从框714-718生成建议命令和从框722-724生成建议消息。在一些实施例中,可以在视觉上将提供建议命令的建议命令项目与提供要在聊天界面中输出的建议消息的建议消息项目区分开。例如,不同的颜色或突出显示可以用于这些类型的建议响应项目,以帮助用户区分不同类型的建议响应项目。

在一些实施例中,可以生成多个建议命令,并且可以基于一个或多个预定义的标准对多个建议命令进行排名。例如,建议命令的排名分数可以基于响应于检测到的建议事件而选择建议命令的可能性,例如,如机器学习模型和其训练所指示的那样,其训练是基于响应于先前建议事件而提供的先前命令的合成或实际数据。在一些实施例中,可以提供具有置信度评级或排名的建议响应,其指示用户将选择该建议响应的可能性。例如,如果已获取此类用户的同意,则这种置信度评级可以基于用户(或多个用户)对相同或类似建议事件提供的建议响应的先前选择。在使用机器学习模型的一些实施例中,建议响应可以具有指示哪些响应最可能被选择的排名,如基于模型的训练所确定的那样。可以选择特定数量的排名靠前的建议命令以在用户设备上输出。在一些实施例中,可以以他们的排名或置信度评级的顺序显示建议响应。在示例中,可以通过用户输入来选择具有高置信度评级(例如,超过阈值评级、或者在阈值数量的最高评级内)的建议响应作为在相关联的嵌入式应用中触发动作的命令或消息。在一些实施例中,在生成高置信度建议响应之后并且在通过用户输入选择之前,可以将相关联的嵌入式应用预加载(例如,在后台下载并存储在本地存储中)到用户设备并启动其代码。这允许在用户输入选择高置信度建议响应之后立即在用户设备上显示来自嵌入式应用的输出。对于较低置信度(例如,低于阈值)的建议响应,可以省略这种嵌入式应用的预加载,因为它们不太可能被选择。

在一些实施例中,多个嵌入式应用可以如上所述同时为第一用户设备运行,一个或多个建议命令可以是提供给多个或不同的运行的嵌入式应用。

在一些实施例中,建议命令中的一个或多个可以是对消息应用的命令。例如,建议命令可以包括对消息应用的命令,用于将一个或多个特定聊天用户添加到嵌入式会话,其中在建议命令中指定特定的聊天用户。例如,可以基于由消息应用(或嵌入式应用)基于由第一用户和/或成员会话的其他成员用户输入的一个或多个聊天消息(例如,“让我们问kenny他是否想加入”等)或者由非成员用户的聊天用户输入的一个或多个聊天消息(例如,“也许我们应该加入该电影”)而检测到的已经发生的建议事件来生成这样的建议命令。建议命令可以呈现给成员用户,和/或不是成员用户的聊天用户。在一些实施例中,为了确定这样的建议事件,特定的聊天用户名、成员用户名、内容数据的名称、与嵌入会话相关的一般词语(例如,“电影”、“游戏”等)和其他词语可以在聊天消息中结合预定义的关键词和关键短语来检测,和/或通过机器学习技术解析和分析聊天消息来检测。在一些实施例中,建议事件还可以或替代地是消息应用检测到嵌入式会话(第一嵌入式会话)中提供的内容项目(例如,播放的媒体项目、游戏、内容文档等)和与在第一嵌入式会话中内容数据的显示同时地被提供给第二嵌入式会话中的其他聊天用户的内容项目相同。这可以使得消息应用生成建议命令,以将第二嵌入式会话的成员用户添加到第一嵌入式会话。嵌入式会话之外的聊天用户的与内容项目相关联的用户评论也可以是建议事件的基础,类似于下面描述的。

在一些实施例中,对消息应用的建议命令可以包括将用户添加到框708的聊天对话(例如,第一聊天对话)、或者将用户添加到框708的第一聊天对话和嵌入式会话的命令。例如,建议命令可以指令添加当前未参与第一聊天对话的外部用户。这样的命令在运行时使得外部用户的设备加入聊天对话。在一些示例中,外部用户可以参与由第一消息应用提供的或由与第一消息应用通信的不同消息应用提供的不同聊天对话。在一些情形下,第一嵌入式会话的一个或多个成员用户可以在参与第一嵌入式会话和第一聊天对话的同时参与不同的聊天对话,并且可以向这样的成员用户提供建议命令(例如,在框716和718中),以从不同的聊天对话中添加一个或多个外部用户。例如,可以基于由消息应用(或嵌入式应用)基于由第一聊天对话的一个或多个聊天用户(类似于如上所述)和/或由不同聊天对话的一个或多个外部用户输入的一个或多个聊天消息检测到已经发生的建议事件,来生成这样的建议命令。

在一些实施例中,建议事件还可以或替代地是消息应用检测到嵌入式会话中提供的内容项目(例如,播放的媒体项目、游戏,内容文档等)与同时被提供给外部用户的外部内容项目相同。这使得消息应用建议将外部用户添加到第一聊天对话中。在一些实施例中,建议命令可以是将外部用户添加到第一嵌入式会话。在一些示例中,如果嵌入式应用输出的内容项目的当前回放位置在输出给外部用户的外部内容项目的当前回放位置的(时间、数据等的)阈值量内,则可以触发建议事件。在一些实施例中,建议事件还可以或替代地是消息应用检测到一个或多个用户评论已经被与输出到外部用户的外部内容项目相关联的一个或多个外部用户输入,并且外部内容项目与嵌入式应用输出的内容项目是相同的。在一些示例中,建议事件可以是检测到外部用户的特定类型的用户评论,例如,用户对内容数据的赞同评级、对第一嵌入式会话的一个或多个成员用户的参考等,这样的用户评论可以使得消息应用生成建议命令,以将这样的外部用户(作为成员用户)添加到第一嵌入式会话和/或(作为聊天用户)添加到第一聊天对话。

在一些实施例中,如果已经获取了来自相关用户的用户同意,则可以使用用户数据来确定建议事件,该建议事件使得生成对消息应用(或其他应用)的建议命令,以如上所述将一个或多个用户(例如,聊天用户或外部用户)添加到嵌入式会话或聊天对话。例如,用户数据(例如,可访问的数据库数据或联系人列表数据)可以指示与一个或多个成员用户(或聊天用户)具有一个或多个特定社交关系的特定用户,并且可以选择这样的特定用户被包括在建议命令中,以将这些用户添加到嵌入式会话或聊天对话中。例如,这种特定的社交关系可以包括成员/聊天用户的联系人列表中的用户、由成员/聊天用户(例如,社交网络用户组)创建的用户组中的用户、与成员/聊天用户分离特定程度的用户等。

在一些实施例中,一个或多个建议命令可以是对第一用户设备执行消息应用外部的一个或多个任务的命令。例如,任务可以包括在第一用户设备上打开和执行消息应用外部的应用,和/或控制在与第一用户设备通信的远程设备上运行的外部应用。例如,这样的应用可以包括网页浏览器应用、通信应用、日历应用、文字处理应用、访问特定因特网服务的特定应用等。如果外部应用在第一用户设备上运行,它可以在第一用户设备上提供显示输出。显示输出可包括,例如,从与第一用户设备通信的服务器设备接收的信息。在一些示例中,建议命令可以包括用于打开网页浏览器应用、在第一用户设备上显示网页浏览器应用的用户界面、指令网页浏览器应用访问特定链接处的网页页面、以及在网页浏览器的用户界面中显示特定链接的网页页面内容的命令。可以包括使用适当的通信协议(例如,websockets)。特定链接可以是基于建议事件确定的链接。在另一示例中,打开的应用可以是购物应用,其输出从服务器接收的指示要购买的项目或服务并提供可接受用户输入以购买项目或服务的一个或多个控件的数据,其中项目或服务与建议事件相关。

在一些示例中,该命令可以指令在第一用户设备上打开或启动应用,以显示与在第一用户设备上的嵌入式界面中显示的内容项目中包括的一个或多个内容特征相关的信息。例如,可以基于由消息应用(或嵌入式应用)基于嵌入式会话的输出数据和/或基于由第一聊天对话的一个或多个聊天用户输入的一个或多个聊天消息所检测到的已经发生的建议事件,来生成打开或运行应用的建议命令,类似于如上所述。在一些示例中,如果已经获取用户同意,则可以由系统在嵌入式应用的输出数据中检测包括视觉特征(例如,面部、动物、景观特征、对象等,使用图像识别技术)、音频特征(语音、声音类型等,使用音频识别技术的)或主题(例如,呈现的主题、图像的地理位置或视频中的场景等)的内容特征,并且可以通过网络在可访问的站点和数据库上搜索类似的内容特征。例如,如果来自成员用户的聊天消息包括“我喜欢她穿的那件外套”,并且嵌入式应用正在显示描绘具有外套的人的视频或图像的输出数据,则这种与嵌入式应用输出中显示的视觉特征相关的聊天消息的组合可以是建议事件。这使得消息应用或嵌入式应用例如,通过使用图像搜索或从一种或多种图像识别技术确定的文本标签,通过网络在可访问网页或购物网站中搜索类似外套项目。具有匹配项目的一个或多个网络站点可以包括在一个或多个建议命令中。例如,可以为一个或多个成员用户生成建议命令,其中建议命令(如果被选择)指令第一用户设备打开显示匹配的外套项目之一的浏览器应用。在一些示例中,建议命令可以显示为其命令的动作的文本描述,例如,“显示展示外套的网站”。

在其他示例中,当嵌入式应用显示做讲座的人时,可以检测建议事件,其中可以确定人的标识(例如,在输出数据的元数据中,通过检测发言者的字幕)等,并且在通过网络可访问的内容项目中搜索和找到与发言者相关的项目。在一个示例中,在网站上找到由发言者编写的书。可以为一个或多个成员用户生成建议命令,其中建议命令(如果被选择)指令第一用户设备打开购物应用,该购物应用显示具有可选择的选项(例如,显示元素)的书籍的描述,以由用户购买这本书。

在额外的示例中,可以基于一个或多个图像、视频、音频数据片段或其他类型的内容数据来确定建议命令。例如,可以在嵌入式应用中显示多个图像(例如,媒体项目的表示、要购买的项目等),并且建议命令可以是选择一个或多个图像,其中建议命令基于用户选择的先前图像来确定。在另一个示例中,建议命令可以是从服装项目的多个颜色的列表中选择该服装项目的特定颜色,其中该建议是基于先前的用户选择(例如,相比于其他颜色,用户先前更加频繁地选择特定的颜色)。

在额外的示例中,建议事件可以是用户加入聊天对话,在加入用户的聊天界面中触发生成建议命令以发起“发现嵌入式应用”,“发现嵌入式应用”(经聊天用户同意)存储并在聊天界面或嵌入式界面中显示在加入用户加入聊天对话之前聊天用户在嵌入式会话中所采取的动作和/或输出的内容的历史。例如,历史可以包括先前已在聊天对话中使用的其他嵌入式应用的标识(包括嵌入式会话当前正在进行的、正在进行的共享列表等)。在一些实施例中,嵌入式应用可以为这些其他嵌入式应用中的每一个来显示启动相关联的其他嵌入式应用的发起/加入控件,以允许加入用户重新启动先前的嵌入式会话,如果先前的嵌入式会话正在进行,则加入/继续先前的嵌入式会话,等。这可以允许新用户在新用户加入聊天对话之前发现并了解聊天对话中的用户组已经进行的活动。

在额外的示例中,建议事件可以是(例如,在第一用户设备或远程设备上运行的)外部应用在聊天对话活跃时将数据发送到消息应用(例如,数据可以是指示在通信应用,日历应用等中事件的发生),并且可以在聊天界面中显示建议项目,其基于数据提供建议命令或建议消息(见下文)(例如,用于在存储中保存指示事件的数据以供用户稍后查看的建议命令,和/或以文本形式描述事件的建议消息,其可以被选择为在聊天对话中输出)。建议事件可以是用户改变聊天对话的组信息(例如,聊天界面中显示的视觉背景(壁纸)、聊天对话名称或组名、组图标等),并且这可以触发建议命令以启动图像编辑嵌入式应用,该应用向聊天用户提供控件,以例如通过在与其他聊天成员的共享编辑界面中编辑图像来创建新壁纸。

在一些实施例中,代替或者除了建议命令,可以在框714中生成推荐。例如,这样的推荐可以描述为用户建议的特定动作,但是如果用户选择该推荐,则不启动使得该动作被执行的命令。因此,如果用户选择跟随该推荐,则用户将手动执行推荐的动作。

在一些实施例中,如在图7的示例中,建议命令可以由嵌入式应用确定并由嵌入式应用例如在嵌入式界面中显示,和/或被提供给消息应用以在聊天界面中显示。在一些实施例中,系统的其他组件可以确定建议命令。例如,消息应用可以基于例如聊天界面中的事件和/或基于来自嵌入式应用的事件信息来确定建议命令。在一些实施例中,服务器(例如,消息服务器、建议服务器等)可以被提供事件信息并且可以确定建议命令。例如,消息应用可以向服务器发送指示建议事件的描述性信息,并且服务器可以确定被提供回消息应用的一个或多个建议命令。

在一些实施例中,例如,当嵌入式应用不包括建议特征时,消息应用可以提供建议响应项目。例如,如果嵌入式应用是图像查看器应用,则消息应用可以提供建议命令以增强图像、下载图像、运行对图像的图像搜索等。在一些实施例中,建议命令可以由嵌入式应用和聊天应用两者提供。该方法继续到框716。

在框716中,在框714中确定的一个或多个建议命令在第一用户设备上从嵌入式应用被提供给消息应用(如果嵌入式应用生成建议命令)。在一些实施例中,代替或除了向消应用发送建议命令,嵌入式应用可以向消息应用发送数据,消息应用可以从该数据确定一个或多个建议命令。例如,嵌入式应用可以发送描述建议事件的数据(例如,嵌入式应用中的用户动作的指示、游戏得分、实现游戏目标的成功或失败的指示等),和/或可以发送提供建议事件的上下文的数据(例如,视频数据、音频数据、游戏状态、共享列表的一部分等)。在一些实施例中,消息应用可以从该数据确定建议命令,和/或可以将数据发送到建议引擎(例如,建议服务器156),以基于该数据确定建议命令并将建议命令发送回消息应用。该方法继续到框718。

在框718中,消息应用在聊天界面中输出建议命令(和/或嵌入式应用在嵌入式界面中输出建议命令)以供选择,使得第一设备显示建议命令。在一些实施例中,建议命令可以各自被显示为建议命令所指令的动作的描述(例如,“跳过这个场景”、“向前移动卒3”、“将用户4添加到这个电影会话”、“显示购买外套的选项”等)。例如,建议命令可以显示在聊天界面的列表中,作为来自机器人程序等的可选消息。用户可以例如通过触摸屏输入或其他用户输入选择单独的建议命令。在一些实施例中,建议命令在聊天界面中可以例如作为按钮、在下拉菜单中等被显示为界面元素。一些实施例可以在聊天界面的永久区域中显示建议命令,使得当聊天界面中显示额外的聊天消息时,命令不会滚动出显示屏。在一些实施例中,建议命令不显示给聊天对话的其他聊天用户和嵌入式会话的成员用户,例如,命令特定于第一设备的第一用户。在一些实施例中,可以在聊天对话中向所有聊天设备或成员设备显示一个或多个建议命令,或者可以向被发现与建议命令相关的聊天设备或成员设备的子集显示一个或多个建议命令。在一些实施例中,如果一个用户选择建议命令,则从所有聊天设备的聊天界面的建议列表中移除该命令。

在一些实施例中,建议命令在被消息应用自动从聊天界面移除之前,可以具有有限的显示时间。例如,可以使用预定义的时间限制,使得在时间限制到期之后移除建议命令。在一些实施例中,可以基于满足的一个或多个条件来移除建议命令。例如,如果建议事件或应用状态使得特定建议命令被确定并显示,并且该建议事件或应用状态不再相关、待决定或有效,则那些特定建议命令可以从聊天界面中被移除。在一些示例中,如果建议命令在游戏中呈现响应于另一玩家的动作的动作,并且用户执行了不同的动作,则那些建议命令不再相关并且可以被移除。在另一示例中,如果例如在预定义的时间量之后不再显示播放的媒体项目中的事件,则可以移除对该事件作出反应的建议命令。在一些示例中,嵌入式应用可以向消息应用通知新事件和状态和/或当建议事件不再有效或待决定时,使得消息应用可以确定何时从显示中移除建议命令。该方法继续到框720,如下所述。

如果在框712中确定建议事件类型不提供建议命令,或者在框718之后,该方法继续到框720,其中,确定检测到的建议事件是否是(例如,具有事件类型)与聊天对话的一个或多个建议消息相关联的事件。例如,一些类型的建议事件可以提供包括要在聊天对话中输出的建议消息的建议响应项目。建议消息可以是,例如,在聊天界面中显示的文本消息,就好像选择用户已将消息作为聊天对话消息输入。在一些实施例中,可以提供建议消息的建议事件类型可以包括可以提供如上所述的建议命令的一种或多种类型的建议事件。在一些示例中,可以提供建议消息的建议事件类型可以包括上面针对建议命令描述的事件示例。在一些实施例中,一些类型的建议事件可以被指定为提供一个或多个建议消息,并且不提供一个或多个建议命令,反之亦然。

如果检测到的建议事件是为聊天对话提供一个或多个建议消息的类型,则该方法继续到框722,在框722,基于建议事件和/或其他条件获取一个或多个建议消息。例如,类似于针对建议命令所描述的(例如,框714),消息应用可以确定一个或多个建议消息,和/或可以将描述性数据发送到建议服务器(或其他服务器)等,该建议服务器(或其他服务器)确定一个或多个建议消息并将一个或多个建议消息发送回消息应用。在一些实施例中,嵌入式应用可以确定一个或多个建议消息。

在一些实施例中,可以基于存储和预定义的建议消息和特定建议事件和/或特定类型的建议事件的关联来确定建议消息,可以使用推荐引擎来确定建议消息,可以使用训练模型和机器学习技术来确定建议消息,和/或使用与这里针对建议命令所描述的(例如,如针对框714所描述的)类似的其他技术和特征来确定建议消息。

在一些示例中,建议消息可以是导致建议消息的建议事件的描述,或者是导致建议事件的动作的描述。例如,如果第一用户在嵌入式应用中执行了被检测为建议事件的动作(例如,游戏中的游戏动作、在媒体播放器应用中设置回放位置等),则嵌入式应用可以提供描述操作的建议消息(或向消息应用提供事件的指示,其提供建议消息)。例如,建议消息可以将用户执行的动作描述为“用户1跳过当前场景”或“用户1移动了马”。如果第一用户选择了建议消息(例如,在下面的框730中),则将建议消息输出到聊天对话,例如,用于与嵌入式会话和/或聊天对话共享用户动作。

在一些实施例中,如果建议事件是指令系统生成关于嵌入式应用和/或嵌入式会话的一个或多个消息建议的用户动作,则例如在特定用户动作或特定类型的建议事件的上下文之外,可以生成描述嵌入式应用和/或嵌入式会话的各种建议消息。例如,建议消息可以包括关于嵌入式应用的一般评论,例如,“这个游戏很棒!”或“看看这部电影!”等。这些一般的消息也可以响应于其他类型的建议事件而生成。

在一些示例中,建议消息可以指示或描述用户对建议事件的反应。在一些实施例中,当由用户选择时,这种建议消息可以被显示为聊天对话中的聊天消息。例如,这种建议消息可以是文本消息。在一些示例中,可以将描述用户反应的建议消息确定为与作为建议事件的基础而发生的特定主题、单词或短语相关联的存储的预定义消息,或者与用于检测建议事件的特定动作相关联。在一些实施例中,可以使用基于合成或实际训练数据被训练的机器学习模型,该合成或实际训练数据例如是用户响应于与检测到的建议事件相同的预定义或先前建议事件而提供的预定义的合成消息或先前的实际消息(例如,作为先前建议事件被检测到的相同类型的用户动作、聊天输入,事件等)。

在嵌入式应用正在播放媒体项目的一些示例实施例中,可以基于建议事件来确定建议消息。例如,如果建议事件是名为用户2的聊天用户加入嵌入式会话以查看媒体项目,则建议消息可以是“欢迎用户2!”。在另一示例中,如果建议事件是在播放的媒体项目中检测到的特定检测类型的视觉或音频特征或特定检测类型的场景或序列(例如,检测到的动作场景或序列),则建议消息可以包括与检测到的特征或场景的类型相关的惊叹或观察结果,例如“哇,太棒了!”或“可爱的宝贝”。例如,可以基于消息与内容特征和场景之间的预定义关联,和/或使用合成或实际数据训练的机器学习模型来确定这样的消息建议,其中合成或实际数据包括先前内容特征和先前用户评论或对这些特征的反应的响应。在另一示例中,如果建议事件是由另一成员用户引起的媒体项目的回放位置或输出特性(例如,音频音量或视觉亮度或对比度)的改变,则建议消息可以是对改变的反应,诸如“好,我厌倦了”或“等一下,我想看那个!”。在另一个例子中,消息应用可能已经从服务器接收到服务器事件,如上所述。在一个示例中,嵌入式会话中播放的媒体项目是由第一成员用户,用户1,创建的视频,该媒体项目可供用户从服务器查看,并且服务器事件指示已经由服务器接收到了媒体项目的阈值数量的用户赞同。除第一成员用户之外的成员用户的建议消息可以是“祝贺,用户1”或对第一成员用户的类似赞美。

在嵌入式应用提供游戏的一些示例实施例中,可以基于与游戏事件相关的建议事件来确定建议消息。例如,如果建议事件是游戏的不同玩家的游戏动作,则建议消息可以是对游戏动作(例如,是对在提供多个答案的选择的测验游戏中的选择)的一个或多个可能的或预定义的反应消息,例如“很棒的移动!”或“很棒的答案!”。在另一个示例中,如果建议事件是敌方游戏棋子侵入用户的游戏区域,则建议消息可以包括诸如“嘿,不要跟我来”或“你会后悔移动!”的反应。在另一个示例中,如果建议事件是用户的得分变得不同于(例如,落后或领先)其他玩家的分数或目标达阈值量或更多,则建议消息可以包括玩家的夸耀或哀叹,例如,“你们将永远不会抓住我”。在另一示例中,如果建议事件是另一个玩家加入游戏,则建议消息可以包括请求新玩家加入游戏中的用户团队的消息,和/或发送请求不同玩家形成团队对抗新玩家的消息。在另一示例中,如果建议事件是成员用户退出游戏(或者已经从游戏中的玩家角色改变为观察者角色),则建议消息可以是“感谢进行游戏”。可以如上所述类似地确定这样的建议消息。

在嵌入式应用提供项目的共享内容文档(例如,共享列表)的一些示例实施例中,可以基于与列表或文档相关的建议事件来确定建议命令。例如,如果建议事件是由不同的成员用户向食物列表添加项目(例如,“牛排”),则建议消息可以包括询问项目或请求从列表中移除项目的消息,例如,“我们需要牛排吗?”或者“我建议移除牛排。”在一些实施例中,如上所述,建议消息可以与突出显示的命令相关联以突出显示项目。在另一示例中,如果建议事件是移除项目,则建议消息可以包括在聊天界面中输出文本,例如,“你为什么要移除这个项目?”可以如上所述类似地确定这样的建议消息。

在嵌入式应用提供旅行行程的一些示例实施例中,如果建议事件是要从其中选择的多个旅行行程的输出,则建议消息可以包括对行程的描述、向其他聊天用户请求关于选择哪个行程的评论或建议等。

在可以应用于许多类型的嵌入式应用的另一示例中,如果建议事件是成员用户加入嵌入式会话,则建议消息可以是询问新成员用户他或她是否想要控制嵌入式应用的功能(如果已在嵌入式应用中为第一用户分配了允许这样的控制分配的用户状态或角色)。在一些实施例中,如果消息应用(或其他程序或设备)已经在来自聊天对话中的指定用户的消息中检测到滥用的或不适当的语言,则建议消息可以是要求成员用户停止使用滥用的或不适当的语言。

在额外的示例中,建议事件可以是用户设备在用户参与聊天对话时接收电话呼叫,并且建议消息可以是用于显示在聊天对话中的“等一下,让我接听我老板的电话”。建议事件可以是用户设备在用户参与聊天对话时接收短消息服务(shortmessageservice,sms)消息,并且建议消息可以包括用于在聊天对话中显示的sms消息的内容。建议事件可以是用户设备离线,并且建议消息可以包括“抱歉伙计们,我的手机失去连接一会”。在嵌入式会话中显示视频期间,建议事件可以是例如在阈值时间段内用户设备在在线/离线状态之间交替阈值次数,并且建议消息可以包括:“抱歉伙计们,我的连接非常不稳定,我稍后会观看该视频。”建议事件可以是聊天用户退出聊天对话(例如,被检测为服务器事件),并且这可以触发向所有其他(剩余)聊天用户生成建议消息,其中建议消息与该用户退出聊天对话相关。(例如,“我们应该停止电影吗?”等)。

如果已经获取用户同意,则建议消息也可以或者替代地基于先前消息的历史和/或用户在嵌入式会话中执行的动作,其涉及相同或相似类型的嵌入式应用和/或相同或相似类型的内容项目(例如,媒体项目、游戏等)。例如,如果用户先前通过发送“请将其改回来”的消息对视频中的特定场景或特定类型的场景的回放位置的改变做出反应,则可以响应于相似的建议事件的发生而生成相似的建议消息,其中建议消息提供相似的反应。

建议消息还可以或替代地基于聊天对话中的成员用户输入,如在消息应用的聊天界面中所显示的。例如,如果在游戏期间,成员用户在聊天对话中输入消息,说“帮我实现这个目标”,则可以生成“当然,要做”或“我无法帮助你”的建议消息。在另一个示例中,如果在嵌入式界面中的媒体项目的回放期间,成员用户输入“我应该从什么时间开始?”,则可以生成指示各种时间的建议消息,诸如不同的章节标题(例如,“转到28:30-访问”。),或如果在用户同意下可以访问用户优先级历史,则建议消息可以指示已知的用户喜欢的场景的时间或位置。

一些建议消息可以与在框714中确定的一个或多个建议命令相关联。如果用户选择了建议命令,则可以在该命令被提供给嵌入式应用时,在聊天界面中输出与该命令相关联的建议消息。在一些实施例中,这样的建议消息可以涉及相关联的建议命令,例如,强调或解释所提供的命令。例如,如果选择建议命令以采取响应于不同玩家在游戏中的先前动作的动作,则可以确定一个或多个相关联的建议消息,其可以伴随该建议命令来强调它,诸如“接招!”以及“我还没有被击败。”在另一个示例中,如果选择建议命令以将媒体项目的回放位置改变为新场景,则相关联的建议消息可以解释回放的改变(例如,“我正在跳过该场景”或“我对该场景感到厌倦”)。一些实施例可以类似地响应于对建议消息的选择而显示一个或多个建议命令。在另一个示例中,如果在聊天对话中的聊天用户之间存在讨论或争论,则可以向一个或多个聊天用户呈现对嵌入式应用的建议命令,以生成讨论的可视化,例如,使用其他类型的内容数据。例如,嵌入式应用可以使用用户简档图片来生成具有讨论的视觉表示的电影图或其他动画数据。可以(例如,向选择建议命令的用户)呈现编辑选项,该编辑选项允许用户编辑动画数据。嵌入式应用可以生成建议消息,如果用户选择该建议消息,则使得动画数据作为聊天消息在聊天对话中显示。

一些建议事件类型可以导致从框714-718生成建议命令和从框722-724生成建议消息。在一些实施例中,当在聊天界面中显示时,可以在视觉上将用于嵌入式应用的建议命令与建议消息区分开。在一些示例中,可以使用普通的第一视觉特征来显示建议命令,并且可以使用与第一视觉特征不同的普通的第二视觉特征来显示建议消息。例如,可以将特定颜色、字体、突出显示(例如,粗体文本)或其他视觉特征应用于建议命令,并且可以将不同的颜色、字体、突出显示或其他视觉特征应用于建议消息。

在一些实施例中,可以生成多个建议消息,并且可以基于一个或多个预定义的标准对其进行排名,类似于如上所述的建议命令。可以选择特定数量的排名靠前的建议消息用于在用户设备上输出。该方法继续到框724。

在框724中,在框722中获取的一个或多个建议消息由消息应用在聊天界面和/或嵌入式界面中输出。例如,建议消息可以在聊天界面的列表中显示,并且可以由用户选择,类似于上面针对建议命令所描述的那样。一些实施例可以在聊天界面的永久区域中显示建议消息,使得当在聊天界面中显示额外的聊天消息时,建议消息不会滚动出显示屏。

在一些实施例中,建议消息在自动被消息应用从聊天界面移除之前可以具有有限的显示时间,类似于上面针对建议命令所描述的。例如,可以在时间限制到期之后和/或基于满足一个或多个条件来移除建议消息。例如,如果建议事件或应用状态使得特定建议消息被确定和显示,并且该建议事件或应用状态不再相关、未决或有效,则那些特定的建议消息可以从聊天界面中被移除。在一些示例中,如果建议消息响应于嵌入式应用中的不同用户执行的特定动作,并且不同的用户执行了不同的动作,则那些建议消息可能不再相关并且可以被移除。在一些示例中,嵌入式应用可以向消息应用通知新事件和状态和/或何时建议事件不再有效或未决,使得消息应用可以确定何时从显示中移除建议消息。该方法继续到框726,如下所述。

如果在框720中确定建议事件类型不提供建议消息,或者在框724之后,该方法继续到框726,在框726,确定是否在聊天界面中接收到一个或多个建议命令项目的选择。例如,可以基于用户在聊天界面中提供的用户输入来接收选择,以选择所显示的建议命令项目。在一些实施例中,嵌入式界面可以在嵌入式界面中显示建议项目,其中它们响应于用户输入用于选择,如上面针对框718所描述的。

在一些实施例中,可以通过用户输入来选择多个建议命令项目。在一些示例中,如上所述,可以接收针对建议命令项目的选择,这使得显示与建议命令项目相关联的建议消息项目的列表。然后,用户可以选择一个(或多个)相关联的建议消息项目。在一些实施例中,可以接收针对建议消息项目的选择,这使得显示与建议消息项目相关联的建议命令项目的列表。然后,用户可以选择一个(或多个)相关联的建议命令项目。

如果在框726中确定接收到对一个或多个建议命令项目的选择,则该方法继续到框728,在框728,消息应用向嵌入式应用提供与所选命令项目相关联的一个或多个所选命令。在一些情形下,替代或除了提供给嵌入式应用的命令,将与所选命令项目相关联的一个或多个所选命令提供给如上所述的消息应用和/或第一用户设备。在一些实施例中,多个命令与单个所选建议命令项目相关联。嵌入式应用、消息应用和/或第一用户设备实施所提供的命令。例如,该命令可能使得嵌入式应用的状态发生改变(例如,改变媒体项目的回放位置、改变用户控制的游戏棋子的位置或状态、改变共享文档等)。在一些实施例中,如这里所述,通过网络将状态的改变发送或指示给一个或多个服务器和/或其他成员设备,以允许嵌入式会话中的嵌入式应用状态的同步。该方法继续到框730。

如果在框726中确定未接收到对一个或多个建议命令项目的选择,或在框728之后,该方法继续到框730,在框730,确定是否在聊天界面中接收到对一个或多个建议消息项目的选择。例如,可以基于用户在聊天界面中提供的用户输入来接收选择,以选择显示的建议消息项目。在一些实施例中,可以通过用户输入来选择多个建议消息项目。一些实施例可以选择与一个或多个建议命令项目相关联的的一个或多个建议消息项目,如上所述。

如果在框730中确定接收到对一个或多个建议消息项目的选择,则该方法继续到框732,在框732,消息应用将与所选消息项目对应的所选消息输出到聊天界面的聊天对话中。在一些实施例中,多个消息可以对应于单个消息项目。在一些示例中,所选消息可以显示在接收用户对消息项目的选择的(第一)设备的聊天界面中,并且所选消息可以通过网络传输到参与聊天对话的聊天设备,并且显示在这些设备的聊天界面中。在一些实施例中,可以将所选消息传输到聊天设备的特定子集,以在其相关联的聊天界面中显示,例如,传输到在与第一设备相同的嵌入会话中的成员设备、基于用户选择或偏好传输到特定聊天用户的设备、传输到嵌入式会话中的特定用户状态或角色的设备、传输到嵌入式会话的游戏中的同一团队或对方团队中的设备等。

在一些实施例中,可以限制在聊天对话中输出的建议消息的数量,例如,以便减少许多聊天消息拥挤在聊天界面的影响。例如,消息应用可以在特定时间段内施加可以输出到聊天对话的最大数量的所选建议消息,或者可以在来自特定成员用户或来自所有聊天用户的连续所选建议消息的输出之间施加最小的时间量。因此,如果所选建议消息不符合输出条件,则在框732中不将消息输出到聊天对话。

如果在框730中确定未接收到对一个或多个建议消息项目的选择,或者在框732之后,该方法可以继续到框708以继续运行嵌入式应用。

在一些实施例中,可以打开(例如,在角落中最小化)特定的嵌入式应用以连续地解析和/或以其他方式处理聊天对话中的聊天消息,并基于聊天消息提供建议命令和/或消息。例如,嵌入式应用可以基于聊天对话的内容呈现建议消息,该建议消息可以是主题、视频、图像、电影图、音频数据片段等。这可以帮助用户发布与聊天对话相关的内容。在一些实施例中,可以基于聊天用户在聊天对话中输入的当前聊天消息来连续地检测建议事件,并且可以在聊天界面和/或嵌入式界面中连续地提供新的建议命令和/或消息用于用户选择。

在一些实施例中,可以基于建议事件来确定建议响应并将其呈现给多个成员用户(和/或聊天用户),例如,显示在每个成员设备或聊天设备(或选定的成员设备或聊天设备)上。在一些示例中,建议响应可以是在多个成员设备中的每个成员设备上提供的相同的建议命令和/或建议消息,或者可以向两个或更多个成员设备中的每一个成员设备提供不同的建议响应。在一些示例中,用户1、2和3的成员设备从聊天对话的用户4接收聊天消息,并且用户1、2和3中的每个成员设备(或多个成员设备)可以呈现不同的建议响应集合(例如,每个集合具有不同于一个或多个其他集合的至少一个响应)。每个建议响应集合可以基于呈现该集合的成员设备的上下文,例如,基于由相关联用户在聊天对话中输入的相关联的聊天消息、相关联用户的聊天消息的历史(如果已获取用户同意)、和/或这里所述的其他因素。在一些示例中,建议响应集合可以基于相关联用户一直在使用的一个或多个特定嵌入式应用。例如,如果用户4输入聊天消息,“我们需要为今晚的聚会购买饮料”,并且如果用户2是共享列表嵌入式应用的常用用户,则用户2的用户设备可以提供(在被选中时)将项目“购买饮料”添加到该应用中的购物清单的建议命令。选择建议命令可以使得共享列表嵌入式应用打开,并且可以使得项目“购买饮料”自动进入共享列表嵌入式应用的共享列表。然而,用户3不是共享列表嵌入式应用的常用用户(例如,在特定时间量内使用该应用未超过阈值次数),并且用户3的用户设备不显示本示例中的建议命令。用户3的用户设备(例如,消息应用)可以为用户3经常使用的不同嵌入式应用显示不同的建议命令,例如,显示购买饮料的企业的地理位置的地图应用。在另一个示例中,用户3的设备可以提供与先前由用户3输入或选择的先前消息相同的建议消息,先前由用户3输入或选择的先前消息响应于在先前的场合在聊天对话中(或者,可替代地,在任何聊天对话中)显示的类似聊天消息(例如,具有一个或多个相同的单词、相同的语义含义等的先前的聊天消息)。

在一些实施例中,可以确定与嵌入式界面中提供的一个或多个特定内容项目相关的相关建议响应。例如,如果成员用户正在使用(或以前使用过)共享列表嵌入式应用来生成用于旅行准备的第一列表和用于聚会组织的第二列表,则建议响应可以例如基于聊天消息的内容和/或一个或多个其他建议事件,参考这些列表中的一个而不参考另一个列表。在一些示例中,响应于诸如“不要忘记为今晚购买饮料”的聊天消息,机器学习模型和/或知识图可以确定“今晚”和“购买饮料”参考聊天成员正在组织的“聚会”,并提供(当被选择时)将项目“购买饮料”添加到相应的用于聚会组织的第二列表中的建议响应。响应于诸如“你已经预订了我们旅行的机票吗”之类的聊天消息,机器学习和知识图可以确定“机票”和“旅行”参考旅行,并提供(当被选择时)将项目“预订机票”添加到相应的用于旅行准备的第一列表中的建议响应。

在一些实施例中,建议响应在被选择时可以触发多个相关联的嵌入式应用的标识的显示,例如,以允许用户基于建议响应来选择要运行的或接收数据的期望的嵌入式应用,从而减少歧义。在一些实施例中,当建议响应被用户选择时,建议响应可以使得关于应该通过选择建议响应来触发哪个嵌入式应用的请求的显示。在一些情形下,可以显示适合于所选建议响应的多个可能的嵌入式应用,并且用户输入可以指示要运行的嵌入式应用。例如,如果所选建议响应将项目添加到共享列表,并且两个不同的可用嵌入式应用提供此类列表,则可以显示这两个嵌入式应用的标识,并且用户可以选择其中一个嵌入式应用来使用。

在一些实施例中,建议响应可在嵌入式界面内显示,并且在嵌入式界面中显示时从用户输入接收选择(例如,经由触摸屏上的触摸输入,或经由位于嵌入式界面中的用户控制的光标)。例如,可以响应于建议事件在嵌入式应用中的发生而显示建议响应。在一些示例中,游戏中的建议事件可以是用户玩家使得对手玩家的化身或游戏棋子被击败或被移除,并且可以在获胜玩家的成员设备上显示第一建议消息集合(例如,夸耀移动的消息),并且可以在失败玩家的成员设备上显示第二建议消息集合(例如,抱怨失败的消息)。当这样的建议消息被用户输入选择时,使得指示期望内容的聊天消息被提供在聊天对话中。在另一示例中,建议事件是第一用户设备的嵌入式应用和嵌入式界面中的第二用户已加入游戏的通知,并且当建议响应被选择时,该建议响应使得逗弄或挑战被输出到第二玩家的用户设备(“我们走吧,用户2”、“我将在这个游戏中击败你”等)和/或所有成员设备(或者,可替代地,所有聊天设备)。

在一些实施例中,嵌入式应用(例如,脚本)可以通过例如被直接编码在建议响应的数据中或者建议响应中包括的用户可选链接(或其他显示的可选控件)中,被附加到(关联到)建议响应。例如,几百千字节的小型嵌入式应用可以如此被附加。当用户选择建议响应时,触发打开附加的嵌入式应用(在解码之后),例如,代替通过网络从源(例如,嵌入式应用服务器150)下载嵌入式应用。在一些情形下,此功能可以消除或减少嵌入式应用数据的额外下载时间,并且可以提供嵌入式界面的立即运行和显示。在一些实施例中,附加的嵌入式应用可以是轻量级版本,并且除了在设备的后台触发下载更完整版本的嵌入式应用之外还可以被运行,该更完整版本的嵌入式应用可以在下载发生之后替换设备上的轻量级版本。

在一些实施例中,附加的嵌入式应用可以在设备的操作系统(或其他软件环境)的后台运行(例如,以“无头模式”),其不会使得嵌入式界面或其他输出由嵌入式应用显示。例如,附加的嵌入式应用可以生成在聊天界面中显示的建议响应。附加的嵌入式应用可以向消息应用提供即时扩展和能力,其可以例如基于聊天对话的消息和/或由用户选择的相关联的建议响应,在聊天对话期间即时创建。消息应用可以使用附加的嵌入式应用的api和功能,而无需下载和运行例如显示其自己的相关联的嵌入式界面的相应版本的嵌入式应用。

在一些实施例中,附加的嵌入式应用可以与为其运行附加的嵌入式应用的聊天对话相关联或附加到为其运行附加的嵌入式应用的聊天对话,例如,与聊天对话持续关联。例如,附加的嵌入式应用可以充当聊天对话的扩展,例如,当聊天对话在设备上打开和/或显示时,嵌入式应用在后台运行。这种附加的嵌入式应用可以处理输入到聊天对话的聊天消息,并响应于聊天消息来执行动作,例如,提供对某些类型的聊天消息的自动回复、将聊天消息自动翻译成不同的语言、在消息应用打开时(在用户同意的情况下)提供永远在线的位置共享(指示用户设备的当前地理位置)、向聊天界面添加显示的图形界面元素等。在一些示例中,聊天对话的聊天消息可以被自动翻译成不同的语言的消息并被显示为不同语言的消息,例如,通过将附加的嵌入式翻译应用作为消息应用的扩展。扩展嵌入式应用可以增强相机应用或图像选择器应用,例如,在与聊天对话中的其他设备共享这些媒体项目之前或通过不同的嵌入式应用来修改诸如图像的媒体项目。在进一步的示例中,扩展嵌入式应用可以使聊天对话或聊天对话中的特定用户匿名化(例如,改变所显示的聊天用户的用户标识符),重新排序对话中的聊天消息的显示(例如,通过主题、通过包括对原始聊天消息的连续回复的线程等对消息进行分组),使得聊天界面中的功能可被用户输入访问(例如,将聊天对话中发布的媒体项目或聊天消息固定地持续显示在聊天界面的显示区域的显示控件,或将评论附加到例如存储在共享数据库中的媒体消息的控件)。

在一些实施例中,附加的嵌入式应用提供聊天对话的一次性运行(例如,以修改和重新共享输入到聊天对话的图像),或者聊天消息的一次性翻译。在一些实施例中,这样的嵌入式应用扩展和/或一次性脚本可以从服务器下载,或者可以直接附加到用户可选择的聊天消息或建议响应(链接)(例如,作为被提供为网址的参数(例如,统一资源定位符(uniformresourcelocator,url))的编码脚本)。

以类似的方式,附加的嵌入式应用(例如,使用几百kb内存的小型应用)可以被编码在聊天消息中的可选择链接的数据中或者显示在聊天界面或聊天对话中的交互式卡的数据中,并且可以在选择该聊天消息链接或交互式卡中的控件时被运行。

在一些实施例中,可以基于在消息应用和聊天对话之外的外部设备或程序处发生的建议事件来生成建议响应,例如,如上所述,并且建议响应可以提供命令和/或消息以输出到外部设备或程序。例如,嵌入式应用可以与在线游戏(例如,在服务器上运行的游戏)通信,并且输入到嵌入式应用的命令可以影响游戏的状态,例如,被传递到游戏服务器。如果在游戏中发生可以由第一用户向嵌入式应用提供输入来响应的事件,则建议响应可以包括向嵌入式应用提供输入的动作,该动作将导致在线游戏中的响应用户动作。

在一些实施例中,如果已经获取适用用户对这样做的同意,则可以基于过去发生的特定事件和/或建议事件来生成建议响应。例如,可以在存储的历史数据中指示或描述先前的事件。在一些示例中,可以使用在两个用户之间的先前聊天对话中输入的先前聊天消息的日志来确定消息,该消息要作为对于包括相同的两个用户的当前聊天对话的新生成建议响应被包括。建议响应可以基于描述特定用户在嵌入式游戏应用中的表现的先前历史,诸如用户在游戏中获得的先前目标或得分。例如,可以基于与用户2在该嵌入式游戏应用中的先前游戏中的先前得分相比用户2在游戏中的当前得分更高,来为用户1显示建议消息“你做得比以前好!”。如果已获取用户同意,则还可以使用嵌入式应用中的用户之间的记录的先前交互来生成建议响应。例如,游戏应用中的先前用户交互可用于生成在先前游戏中成功的新的建议游戏动作,和/或生成建议消息(例如,“这次我做得比你好”),或者用户对共享文档应用的先前贡献可以用于生成将相同的贡献添加到新的共享文档的建议命令。在另一个示例中,如果确定用户先前已将列表项目添加到嵌入式列表应用中的第一共享列表,如存储的历史数据中所描述的,则关于新创建的第二共享列表(例如,具有与第一列表相同或相似的标签或标题),可以为该用户生成建议命令。例如,在建议命令被选择时,该建议命令将相同的列表项目添加到第二列表,其中第二列表已被确定为具有与第一列表相同的标签(例如,“购物列表”)。

在一些实施例中,可以例如通过将多个建议响应合并到所显示的单个建议响应中来限制所显示的建议响应的数量。例如,单个建议响应在被选择时可以导致对一个或多个应用(嵌入式应用、消息应用、服务器等)的多个动作或输入。在一些示例中,建议事件是由聊天对话中的不同聊天用户输入聊天消息“不要忘记周五的timmy的生日”。确定的对此聊天消息的建议响应可以包括建议消息“不要担心”(聊天消息),将‘timmy的生日’添加到第一用户的日历的建议命令,在第一设备上设置闹钟或提醒以在timmy的生日时激活的建议命令,以及将项目‘为timmy的生日购买礼物”添加到列表嵌入式应用中的购物清单的建议命令。这三个建议命令触发嵌入式应用和/或机器人程序中的动作。然而,这三个建议命令可能占用大量的屏幕空间,因此可以组合成显示的合并建议命令,例如“为timmy的生日设置提醒。”当通过用户输入选择时,该合并建议命令将使得显示包括三个单独建议命令的选择菜单。可以通过用户输入来选择任何或所有这些单独的建议命令。

在一些实施例中,为第一聊天对话确定的建议响应项目在被用户输入选择时可以向(例如,由消息应用(或不同的应用)实施的)不同的第二聊天对话提供命令或消息。用户可以并行参与多个聊天对话,并且在一个聊天对话中选择的建议响应可以触发不同聊天对话中的动作。例如,在用户1和用户2之间的第一聊天对话中,用户1输入聊天消息“用户2,不要忘记timmy的生日礼物。”此消息可以是使得在用户2的设备上生成建议响应(命令)的建议事件。当用户输入选择此建议响应时,项目“为timmy购买礼物”被添加到已在用户2参与的第二聊天对话中的嵌入式应用中创建的生日列表。在另一示例中,用户1和用户2在第一聊天对话中输入关于用户1正在第二组对话中进行的游戏的聊天消息,并且生成建议响应,当该建议响应被用户1选择时,使得在第一聊天对话中输出特定的聊天消息(或其他显示的提示)。例如,特定聊天消息可以邀请用户2加入第一聊天对话中的游戏,或者使得在用户2的设备上显示包括显示的加入控件的交互式卡。

在一些实施例中,可以基于已经由第一设备运行至少一次的嵌入式应用来定制建议响应。在一些实施例中,可以基于在同一聊天对话中由第一设备运行至少一次的嵌入式应用来为聊天对话定制建议响应。在一些实施例中,可以基于已经由一个或多个成员用户的设备、或者在一些实施例中由一个或多个聊天用户的设备运行至少一次的嵌入式应用来定制建议响应。例如,如果嵌入式应用先前已由该设备运行,则可以在设备上提供对嵌入式应用的命令或消息作为(响应于建议事件的)建议响应。在一些示例中,如果第一设备先前已经运行了共享列表嵌入式应用,则当聊天用户在聊天对话中输入包括与事件组织或推荐相关的特定项目(例如,单词、图像或其他内容数据)的聊天消息时,可以在第一设备上生成建议响应,该建议响应是将这些特定项目添加到共享列表嵌入式应用中的现有列表或新列表的命令。在一些示例中,先前未运行共享列表嵌入式应用的成员设备将不显示与共享列表嵌入式应用相关的建议响应。在一些实施例中,如果任何成员设备(或聊天设备)先前已经运行了嵌入式应用,则可以在一个、一些或所有成员设备(或聊天设备)上提供建议命令或消息。

在一些实施例中,可以基于从提供建议响应项目的设备可访问的一个或多个机器人程序调用或请求信息,生成一个或多个建议响应项目。例如,如果建议项目生成组件(例如,建议服务器或系统的其他组件)确定适当的建议项目将是与播放的媒体项目的内容相关的特定信息,则可以确定可以获得该信息的机器人程序,并且可以生成对机器人程序的命令和/或请求作为建议项目。

在一些实施例中,如果所选建议响应项目是对机器人程序的命令或请求,则可以将机器人程序添加到聊天对话中并且在聊天界面中获取并显示所请求的信息,并且用户可以向机器人程序发送进一步的消息。

在使用上述特征的各种示例实施例中,可以由第一用户设备显示如同如上所述由消息应用生成的聊天界面。聊天界面被配置为显示被提供在聊天对话中的一个或多个消息,该聊天对话被配置为显示由通过网络参与聊天对话的用户设备所提供的消息。嵌入式界面由第一嵌入式应用提供并显示在聊天界面中。例如,基于所接收的数据,确定建议事件已经与第一嵌入式应用(或消息应用)相关联地发生,该数据指示在参与聊天对话的多个用户设备中的一个或多个用户设备处发生了特定事件,其中,所述多个用户设备中的一个或多个用户设备与第一用户设备不同。第一用户设备(例如,消息应用)基于建议事件获取一个或多个建议响应项目,并且由第一用户设备显示建议响应项目。

例如,特定事件可以包括由多个用户设备中的一个或多个用户设备的相关联的聊天界面接收的用户输入、由多个用户设备中的一个或多个用户设备的相关联的嵌入式界面接收的用户输入、在多个用户设备中的一个或多个用户设备上运行的相关联的嵌入式应用中发生的嵌入式应用事件等。所接收的数据可以指示在由第一嵌入式应用播放的媒体项目中显示的内容特征的类型、第一嵌入式应用的游戏中预定目标的实现、由参与聊天对话的接收用户设备接收的用户输入、从多个用户设备中的特定用户设备启动嵌入式应用等。接收的数据可以包括聊天消息。建议事件可以基于例如在聊天界面和/或嵌入式界面中接收的用户输入,和/或基于来自第一嵌入式应用的指示在第一嵌入式应用中发生了特定事件(和/或在不同聊天设备上运行的相应嵌入式应用中发生了特定事件)的事件信息。一个或多个建议响应项目可以由嵌入式应用、消息应用和/或通过网络与消息应用通信的远程服务器确定。在一些示例中,可以在参与聊天对话的用户设备的子集上输出嵌入式界面,其中用户设备接收用户选择以加入涉及第一嵌入式应用的嵌入式会话。第一嵌入式应用可以显示由第一嵌入式应用生成和/或通过网络从服务器接收的嵌入式输出数据。

用于这种实施例的特征可以包括接收从建议响应项目中选择所选建议响应项目的用户输入,在第一用户设备的聊天界面的聊天对话中输出与所选建议响应项目相关联的聊天消息,例如,使得聊天消息由参与聊天对话的用户设备中的一个或多个其他用户设备显示。例如,建议响应项目可以包括指示用户对建议事件的反应的一个或多个聊天消息,和/或可以包括被提供给嵌入式应用和/或消息应用的一个或多个命令。在一些示例中,对嵌入式应用的命令可以包括在由嵌入式应用实施的游戏中执行动作的命令,在嵌入式应用播放媒体数据时改变回放位置的命令,和/或改变由嵌入式应用提供的共享对象的命令。在一些示例中,在聊天界面中被显示时,提供建议命令的建议响应项目在视觉上与提供建议消息的建议响应项目区分开。

在进一步的示例中,第一嵌入式应用可以是媒体播放器应用,其使得在由参与聊天对话的用户设备的子集显示的嵌入式界面中显示视频数据(或其他内容数据),其中嵌入式界面被配置为接收控制视频数据的回放的用户输入,并且建议响应项目可以包括可操作为调整视频数据的回放的一个或多个建议回放命令。在另一示例中,第一嵌入式应用可以是使得在由参与聊天对话的用户设备的子集显示的嵌入式界面中显示游戏数据的游戏应用,其中嵌入式界面被配置为接收改变游戏应用的一个或多个状态的用户输入,并且建议响应项目可以包括可操作为修改游戏应用的至少一个状态的一个或多个建议命令。在另一示例中,第一嵌入式应用可以是共享文档应用,其使得在由参与聊天对话的用户设备的子集显示的嵌入式界面中显示共享内容文档(例如,项目列表),其中嵌入式界面被配置为接收改变共享文档中的一个或多个项目的用户输入,并且建议响应项目包括可操作为修改共享文档的一个或多个建议命令。

在另外的示例中,服务器设备可以通过网络从已经启动与现有嵌入式会话相关联的嵌入式应用的聊天设备处接收加入指示(或请求)。该加入指示由服务器设备通过网络发送到嵌入式会话中的其他聊天设备(成员设备),以使加入设备与嵌入式会话的成员设备同步。

在适当的情况下,这里描述的方法、框和操作可以以与所示出或描述的顺序不同的顺序执行,和/或与其他框或操作同时(部分地或完全地)执行。可以对一部分数据执行一些框或操作,并且稍后例如对另一部分数据再次执行一些框或操作。并非所有描述的框和操作都需要在各种实施例中执行。在一些实施例中,可以在方法中多次、以不同顺序和/或在不同时间执行框和操作。

在一些实施例中,一些或所有方法可以在诸如一个或多个客户端设备的系统上实施。在一些实施例中,这里描述的一个或多个方法可以例如在服务器系统上和/或在服务器系统和客户端系统两者上实施。在一些实施例中,一个或多个服务器和/或客户端的不同组件可以执行方法的不同框、操作或其他部分。

在各种实施例中,消息应用、与消息应用相关联地运行的嵌入式应用、和/或与消息应用通信的服务器可以执行所描述的方法的一个或多个框。

图8a-8e是由用户设备(例如,客户端设备)显示的示例用户界面的图形表示。在这些示例中,消息应用用于用户之间的聊天对话,并且嵌入式媒体播放器应用与消息应用相关联地使用。

在图8a中,第一消息应用的第一聊天界面800的示例显示在由第一用户(例如,“sarahc.”)操作的第一用户设备上。在该示例中,已经发起聊天对话“hanginout”,其包括第一用户和第一设备的参与,以及一个或多个其他用户和用户设备的参与。从聊天用户向聊天对话的聊天消息可以在相应的用户设备处输入,如果适用则发送到第一用户设备,并且由消息应用显示在聊天界面中。例如,来自第一用户的聊天消息可以在聊天界面800的输入字段802中输入(例如,经由诸如物理键盘的输入设备、显示的触摸屏键盘、语音输入等)。聊天消息可以显示在聊天界面800的消息显示区域804中。

在该示例中,第一用户已在输入字段802中输入命令,其中所接收的命令在被输入之后在聊天界面中显示为消息806。此命令指定要与聊天对话相关联地显示嵌入式界面。在该示例中,嵌入式界面由嵌入式应用提供,该嵌入式应用是在第一设备上运行的视频播放器“vidplay”。该命令还指定利用视频播放器应用来播放的媒体项目,即,视频片段“musicvida”。该命令还具有“共享”参数,以使得视频的播放在聊天对话中作为嵌入式会话被共享。在一些实施例中,可以选择媒体播放器应用以显示嵌入式界面,而不在与聊天对话相关联的嵌入式会话中共享其输出。在一些实施例中,代替输入所示的命令,第一用户可以通过浏览显示媒体项目的菜单并选择所需媒体项目、或以不同方式选择媒体项目来选择播放媒体项目。在一些实施例中,第一用户可以在不选择媒体项目的情况下执行嵌入式应用,然后使用嵌入式应用的菜单(例如,在嵌入式界面中)来选择媒体项目。

响应于命令806,响应消息808可以由机器人程序或消息应用显示在聊天界面中,例如,就好像机器人程序或消息应用是聊天用户。响应消息808指示正在运行所选嵌入式视频播放器应用。在一些情况或实施例中,嵌入式应用(和/或媒体项目)的选择使得嵌入式应用在后台例如从通过网络连接到第一设备的嵌入式应用服务器被下载到第一设备。

嵌入式应用在第一设备上运行并显示嵌入式界面810。在该示例中,嵌入式界面810显示在聊天界面800内,例如,显示在聊天界面的消息显示区域804内。在一些实施例中,基于由第一设备通过网络例如从至少部分地运行在远程会话服务器或通过网络连接的其他设备上的嵌入式应用接收的数据来显示嵌入式界面810。在该示例中,显示嵌入式界面810,使得至少部分地显示消息显示区域804,例如,允许消息显示区域804中的一个或多个聊天消息与嵌入式界面810同时被显示。

嵌入式界面810包括显示区域812,其用于显示媒体项目的内容数据(例如,视频数据、图像数据等),搜索控件814,其允许第一用户提供用户输入以沿时间线(例如,向左或向右移动控件)改变媒体项目的回放位置,以及全屏控件816,其允许用户输入以将嵌入式界面810放大到第一设备的整个屏幕(或其他显示区域)。可以显示用户标识符818以指示聊天中的哪个用户启动了与界面810相关联的嵌入式会话。用户标识符818被示为标识图像,但是也可以或替代地是文本(例如,名称)等。列表820可以示出当前正在显示区域812中播放的媒体项目以及在媒体项目完成之后排队等待播放的其他媒体项目。关闭控件822允许用户输入以关闭嵌入式界面810并且关闭嵌入式应用,例如,使得它不再在第一设备上运行。

在一些实施例中,可以在聊天界面中显示一个或多个嵌入式应用指示符824,以指示当前哪些嵌入式会话是活动的。一些实施例还可以在聊天界面中显示指示符,以指示自从第一用户最后一次是该嵌入式会话的成员用户以来对嵌入式会话的更新(例如,对相应嵌入式界面的用户输入)。例如,这样的指示符可以是与嵌入式应用指示符824相关联地(例如,邻近或重叠)显示的指示符826。

在图8b中,第二消息应用的第二聊天界面840的示例显示在由第二用户(例如,“emilyd.”)操作的第二用户设备上。在该示例中,第二用户是包括如图8a所述的第一用户和第一设备的聊天对话“hanginout”的参与者。聊天消息可以由第二用户在聊天界面840中输入,例如,经由输入字段842和输入设备(例如,屏幕上的键盘等)。在该示例中,第二用户已向聊天对话输入消息844,其显示在聊天界面840的显示区域848中。响应于消息844,第一用户已向聊天对话输入消息846,如在聊天界面840的显示区域848中显示的。

另外,嵌入式会话通知850显示在聊天界面840中。通知850指示嵌入式会话是活跃的,在该示例中,其利用由图8a中的第一用户运行的嵌入式视频播放器应用。在第二设备从会话服务器或已被启动并且是活跃的嵌入式会话的聊天设备接收到信息之后,可以在聊天界面840中显示通知850。通知850在该示例中显示在聊天界面840中的显示区域848下方,或者可以在其他实施例中显示在聊天界面840的其他区域中(或在聊天界面840外部)。

在该示例中,通知850包括嵌入式视频播放器应用的标志852(例如,图标或符号),该嵌入式视频播放器应用由图8a中的第一用户运行以启动相关联的共享嵌入式会话。通知850还包括在嵌入式会话中播放的媒体项目的名称854。通知850还包括已加入嵌入式会话的(例如,当前是嵌入式会话的成员用户的)聊天用户的列表856。通知850还包括加入控件858,其可接受用户输入以使得第二用户和第二设备加入嵌入式会话(如果被选择)。通知850还包括关闭控件860,其可接收用户输入以使得通知850从聊天界面840移除。

在图8c中,在第二用户已选择加入图8b的通知850中指示的嵌入式会话之后,图8b的聊天界面840被示出具有示例更新。例如,第二用户可能已经选择了图8b的加入控件858。在图8c中,嵌入式界面870已经显示在聊天界面840中。例如,嵌入式界面870可以由第二嵌入式应用提供,该第二嵌入式应用已经由第二设备响应于第二个用户加入嵌入式会话而被下载(在某些情形下)并且被运行。在其他实施例中,基于通过网络例如从至少部分地运行在会话服务器或其他设备上的嵌入式应用接收的数据来显示嵌入式界面870。第二嵌入式应用与在图8a的第一设备上提供嵌入式界面870的视频播放器应用相对应。在该示例中,显示嵌入式界面870,使得至少部分地显示消息显示区域848,例如,允许在嵌入式界面870的显示期间,显示消息显示区域848中的一个或多个聊天消息。

在第二用户和第二设备已加入嵌入式会话之后,嵌入式界面870中显示的媒体项目的回放位置与嵌入式会话的当前回放位置(例如,如图8a中的第一设备的嵌入式界面810所示)同步。因此,第二用户在媒体项目开始之后的回放位置处开始观看播放的媒体项目,并与嵌入式会话的其他成员用户共享观看体验。嵌入式界面870包括类似于嵌入式界面810的特征,例如,显示区域872、允许第二用户提供用户输入以沿时间线改变媒体项目的回放位置的搜索控件874、全屏控件876、指示启动与界面870相关联的嵌入式会话的用户的用户标识符878、以及关闭控件882。列表880示出了当前在显示区域872中播放的媒体项目884以及指令播放媒体项目884的用户的标识符。在该示例中,列表880还包括排队以在媒体项目884完成播放之后播放的第二媒体项目886,并且包括指示播放媒体项目886的用户的标识符。

在该示例中,已经许可第二用户在嵌入式会话中控制回放功能,并且第二用户可以操纵搜索控件874以将媒体项目的当前回放位置例如改变为当前位置之前或之后的位置。对由嵌入式会话的成员设备显示的所有嵌入式界面施加这样的改变,使得在成员设备之间同步媒体项目观看。在其他情形或实施例中,第二用户可能未被提供(例如,来自激活嵌入式会话的第一用户的)许可或特权并且将不能够调整媒体项目的回放位置。

在图8d中,在第二用户已选择在聊天界面的聊天对话中输入新消息之后,图8c的聊天界面840被示出具有示例更新。例如,第二用户可能在嵌入式界面870中的媒体项目的回放期间选择了聊天界面840的输入字段842。在一些实施例中,这可以使得显示的键盘890显示在聊天界面840中或附近(例如,使得仍然显示消息显示区域848的至少一部分),其可以用于输入诸如文本892的新消息。当(例如,经由键盘890中的回车控件)输入文本892时,文本892可以显示为聊天消息894。一些实施例可以提供消息建议896作为对最后聊天消息846的响应,其中的任何一个都可以通过用户输入来选择,以在消息显示区域848中提供具有所选消息建议896的聊天消息到聊天对话。

在一些实施例中,可调整嵌入式界面870的尺寸以允许键盘890和聊天对话的聊天消息两者的显示空间。在该示例中,如图所示,已经减小了嵌入式界面870的尺寸。聊天消息846和新聊天消息894可以与嵌入式界面870一起被显示。

在图8e中,聊天界面840与图8c类似地被示出,其中示例用户评论显示在嵌入式界面870中并与播放的媒体项目相关联。在嵌入式界面870中显示的媒体项目的当前回放位置处,显示用户评论897。在各种实施例中,所显示的用户评论897可以包括评论以及输入评论的用户的标识。

在一些实施例或情形下,用户评论897的信息由当前正在观看嵌入式会话中的媒体项目的成员用户输入。例如,用户评论897可以显示在嵌入式界面的显示区域中的用户指向的位置,显示预定的时间量然后从显示中移除。在一些情形下,当聊天用户在参与聊天对话(例如,可以是正在进行的聊天组)时在先前的场合观看相同的媒体项目时,用户评论897可能先前已经由聊天用户输入。例如,媒体项目可能已经由聊天用户在聊天对话中的先前嵌入式会话中播放,该聊天用户在显示区域中的特定回放位置和定位处输入用户评论。用户评论与聊天对话、媒体项目和播放位置相关联地被存储。当在当前嵌入式会话中显示媒体项目时,当回放位置处于(或接近,例如阈值时间内)先前输入用户评论的相同位置处时,显示用户评论897。

在一些实施例中,一个或多个建议响应项目898可以显示在聊天界面840和/或嵌入式界面870中。在该示例中,响应于检测到的建议事件,显示建议响应项目898,该检测到的建议事件是嵌入式界面中的用户评论897的显示。在该示例中,建议命令已由嵌入式应用确定(例如,由机器学习模型或其他技术生成)并提供给消息应用以在聊天界面840中显示。如果建议命令被运行,则建议命令将使得嵌入式应用跳过媒体项目的视频回放,至为播放的视频存储的下一个用户评论。如果用户选择建议命令,则该命令被发送到嵌入式应用,并且嵌入式界面870中的回放被改变为下一个用户评论的回放位置。在该示例中还确定了建议消息,作为对由系统(例如,基于提供对类似评论的样本用户消息的训练数据的机器学习模型)确定的用户评论897的反应。可以响应于嵌入式会话中的任何成员用户动作、聊天界面中的一个或多个聊天消息等,来确定其他建议消息。如果用户选择建议消息,则该消息在聊天界面840中(例如,在消息显示区域848中)作为聊天消息被显示。在一些实施例中,可以将选择的建议消息作为类似于用户评论897的用户评论添加到媒体项目。例如,选择的消息可以位于嵌入式界面870和/或与现有用户评论897相邻(例如,下方)的显示区域872内作为默认位置。在一些实施例中,诸如建议命令和/或建议消息的建议响应项目可以与显示的键盘或其他输入控件相关联地被显示,例如,类似于图8d中所示的消息建议896。

图9a-9c是由用户设备显示的额外的示例用户界面的图形表示。在这些示例中,消息应用用于用户之间的对话,并且嵌入式游戏应用与消息应用相关联地被使用。

在图9a中,第一消息应用的第一聊天界面900的示例显示在由第一用户(例如,“sarahc.”)操作的第一用户设备上。在该示例中,已经启动了包括第一用户和第一设备的参与的聊天对话“hanginout”,类似于针对图8a所描述的。来自第一用户的聊天消息可以在聊天界面900的输入字段902中输入(例如,使用类似于上面的键盘890的输入设备或键盘),并且聊天消息可以显示在聊天界面900的消息显示区域904中。

在该示例中,第一用户先前在输入字段902中输入命令,并且在被输入之后,所接收的命令在聊天界面中显示为消息906。此命令指定要与聊天对话相关联地显示的嵌入式界面。在该示例中,嵌入式界面由嵌入式应用提供,该嵌入式应用是游戏“蟾蜍”,在一些实施例中其可以在第一设备上运行。该命令还具有“共享”参数,以使得游戏在聊天对话中作为嵌入式会话共享。在一些实施例中,可以选择游戏应用以显示嵌入式界面,而不在与聊天对话相关联的嵌入式会话中共享其输出。在其他实施例中,第一用户可以通过从菜单、列表等中选择嵌入式游戏应用来选择启动嵌入式游戏应用。

响应于命令906,响应消息908可以由机器人程序或消息应用显示在聊天界面中,例如,就好像机器人程序或消息应用是聊天用户。响应消息908指示正在运行所选择的嵌入式游戏应用。在一些情形或实施例中,嵌入式游戏应用的选择使得嵌入式游戏应用在后台例如从通过网络连接到第一设备的嵌入式应用服务器被下载到第一设备,。

在嵌入式应用(或其一部分)已经存储在第一设备上之后,嵌入式应用运行并显示嵌入式界面910。在该示例中,嵌入式界面910显示在聊天界面900内,例如,在聊天界面的消息显示区域904内,使得消息显示区域904的一部分保持显示。在一些实施例中,基于由第一设备通过网络例如从在通过网络连接的远程会话服务器或其他设备上运行的嵌入式应用接收的数据来显示嵌入式界面910。

嵌入式界面910包括用于显示游戏输出的显示区域912。在该示例中,显示区域912可以接受用户输入,例如,作为游戏中的命令或动作的显示区域内位置的选择。全屏控件914允许用户输入将嵌入式界面910放大到第一设备的整个屏幕(或其他显示区域)。可以显示用户标识符916以指示作为游戏的玩家的聊天界面的第一用户。在一些实施例中,游戏得分918可以显示在用户标识符916旁边(或以其他方式与用户标识符916相关联)以指示所标识的用户的当前得分。关闭控件920允许用户输入关闭嵌入式界面910并关闭嵌入式游戏应用,例如,使得它不再在第一设备上运行。

在一些实施例中,可以在聊天界面中显示一个或多个嵌入式应用指示符924以指示哪些嵌入式会话当前是活跃的,类似于如上所述。

在图9b中,第二消息应用的第二聊天界面940的示例显示在由第二用户(例如,“emilyd.”)操作的第二用户设备上。在该示例中,第二用户是包括如针对图9a所描述的第一用户和第一设备的聊天对话“hanginout”的参与者。聊天消息可以由第二用户在聊天界面940中例如经由输入字段942输入。在该示例中,第二用户已经向聊天对话输入了消息944,其被显示在聊天界面940的消息显示区域948中。作为响应,第一用户已经向聊天对话输入了消息946,如在聊天界面940的显示区域948中所显示的。

嵌入式会话通知950显示在聊天界面940中。通知950指示嵌入式会话已被启动和/或是活跃的,在该示例中,其利用由图9a中的第一用户运行的嵌入式游戏应用。在第二设备从会话服务器或聊天设备接收到嵌入式会话已经被启动并且是活跃的信息之后,可以在聊天界面940中显示通知950。在各种实施例中,通知950可以显示在显示区域948或聊天界面940的其他区域中,或者在聊天界面940外部。

在该示例中,通知950包括嵌入式游戏应用的标志952(例如,图标或符号),该嵌入式游戏应用由图9a中的第一用户运行以启动相关联的共享嵌入式会话。通知950还包括已加入嵌入式会话的(例如,当前是嵌入式会话的成员用户的)聊天用户的列表956。通知950还包括加入控件958,其可接受用户输入以使得第二用户和第二设备加入嵌入式会话(如果被选择)。通知950还包括关闭控件960,其可接受用户输入以使得通知950从聊天界面940被移除。

在图9c中,在第二用户已经选择加入图9b的通知950中指示的嵌入式会话之后(例如通过选择加入控件958),图9b的聊天界面940被示出具有示例更新。在图9c中,嵌入式界面970显示在聊天界面940中,使得消息显示区域948的一部分(以及一个或多个聊天消息)保持显示。例如,嵌入式界面970可以由嵌入式游戏应用提供,该嵌入式游戏应用已经由第二设备响应于第二用户加入嵌入式会话而被下载(在一些情况下)并且被运行。在其他实施例中,基于通过网络例如从在会话服务器或其他设备上运行的嵌入式应用接收的数据显示嵌入式界面970。嵌入式游戏应用与在图9a的第一设备上提供嵌入式界面910的嵌入式游戏应用相对应。

在第二用户和第二设备已加入嵌入式会话之后,嵌入式界面970的游戏状态与在相应的嵌入式游戏应用上实施的嵌入式会话的当前游戏状态同步。在一些实施例中,会话服务器或其他服务器可以通过从成员设备连续地接收游戏状态并向成员设备发送同步更新,来在游戏期间同步成员设备上的游戏状态。一些实施例可以在成员设备之间提供对等同步。

嵌入式界面970包括类似于图9a的嵌入式界面910的特征,包括显示游戏的输出并且可接受用户输入的显示区域972。全屏控件974允许用户输入将嵌入式界面970放大到第一设备的整个屏幕(或其他显示区域)。关闭控件976允许用户输入关闭嵌入式界面970并关闭嵌入式游戏应用,例如,使得它不再在第二设备上运行。可以显示用户标识符978以指示作为游戏的玩家的聊天界面940的第二用户。在一些实施例中,可以在用户标识符978旁边显示游戏得分980以指示用户的当前得分。在本示例中,显示其他用户标识符982和相关联的游戏得分984,以指示参与嵌入式游戏对话的其他玩家用户及其在共享游戏中的当前得分。在一些实施例中,在游戏中具有观察者角色或裁判角色的成员用户可以在显示中与具有玩家角色的用户在视觉上区分。

在一些实施例中,嵌入式会话中提供的游戏可以是实时游戏,其中玩家用户可以在任何时间向游戏提供用户输入(例如,游戏动作)以改变游戏状态,并且嵌入式游戏应用可以实时地连续提供输出,例如,基于其自身的事件和/或响应于用户输入。一些实施例可以提供异步或回合制的嵌入式游戏应用,例如,其中游戏等待来自一个玩家(或多个玩家)的输入以改变游戏状态和/或输出,并且游戏等待来自相同玩家或不同玩家的下一个输入,等。游戏输出显示在观察者用户的嵌入式界面中,其中观察者用户能够提供给游戏的输入受到更多限制,例如,不影响游戏状态。

来自游戏的输出可以显示在嵌入式界面970中和/或显示为聊天界面940的消息显示区域948中显示的消息。例如,来自游戏对象的消息可以作为聊天消息显示在消息显示区域948中,如以上参照图6所描述的。

在一些实施例中,可以在聊天界面中显示一个或多个嵌入式应用指示符986,以指示当前哪些嵌入式会话是活跃的,类似于如上所述。

图10a至10d是由用户设备显示的额外的示例用户界面的图形表示。在这些示例中,消息应用用于用户之间的聊天对话,并且嵌入式应用用于以共享项目列表的形式提供共享内容文档。

在图10a中,在由第一用户(例如,“emilyd.”)操作的第一用户设备上显示消息应用的聊天界面1000的示例。在该示例中,已经启动了聊天对话“hanginout”,其包括第一用户和第一设备的参与,类似于针对图8a和9a所描述的。来自第一用户的聊天消息可以在聊天界面1000的输入字段1002中输入,并且聊天消息可以显示在聊天界面1000的消息显示区域1004中。

在该示例中,若干聊天用户已经在聊天对话中输入了消息,如从与第一用户不同的三个聊天用户输入的并显示在显示区域1004中的消息1006所示。聊天消息1008已由第一用户输入并显示在显示区域1004中的聊天界面中。在该示例中,来自其他用户的聊天消息由图形用户标识符所标识,并且由第一用户输入的聊天消息在显示屏幕上右对齐地显示。

嵌入式会话通知1020可以显示在聊天界面1000中。通知1020指示嵌入式会话是活跃的,类似于上面针对图8和图9描述的通知858和958。在该示例中,在用户“pamela”已经通过选择要运行的嵌入式列表应用并选择共享由嵌入式列表应用提供的列表来启动嵌入式会话之后,显示通知1020。在第一设备从会话服务器或聊天设备接收嵌入会话已被启动并且是活跃的信息之后,通知1020可以被显示在聊天界面1000中。通知1020可以显示在显示区域1004中或聊天界面1000的其他区域中,或者在聊天界面1000的各种实施例之外。

在该示例中,通知1020包括标示1024(例如,图标或符号),其标识嵌入式会话中使用的嵌入式列表应用。通知1020还包括在嵌入式会话中提供的列表中的用户响应项目的当前数量1026。通知1020还包括已加入嵌入式会话(例如,当前是嵌入式会话的成员用户)的聊天用户的列表1028。通知1020还包括(如果被选择)允许第一用户加入嵌入式会话的加入控件1030,以及如果被选择则使得从聊天界面1000中移除通知1020的关闭控件1032。

在一些实施例中,诸如图10a的示例,可在聊天界面中(例如,在显示区域1004中)显示通知1022以指示用户已启动嵌入式会话。通知1022可以包括由成员用户贡献或选择的嵌入式会话中提供的数据的描述,例如在该示例中的列表中的项目数量。

在图10b中,在第一用户已选择加入图10a的通知1020中指示的嵌入式会话之后,图10a的聊天界面1000被示出具有示例更新。例如,第一用户可能已经选择了图10a的加入控件1030。在图10b中,嵌入式界面1040已经被显示在聊天界面1000中,使得消息显示区域1004的一部分(以及一个或多个聊天消息)保持被显示。例如,嵌入式界面1040可以由嵌入式应用提供,该嵌入式应用已经由第一设备响应于第一用户加入嵌入式会话而被下载(在一些情形下)并且被运行,类似于如上所述。在其他实施例中,基于通过网络接收的数据来显示嵌入式界面1040,数据例如来自在会话服务器或在其他设备上运行的嵌入式应用。嵌入式应用是与由用户pamela启动以创建图10a的通知1020中指示的嵌入式会话的列表应用相同的列表应用。

在该示例中,嵌入式界面1040包括共享列表的名称1042,这里默认基于聊天对话名称。嵌入式界面1040在列表中显示项目1044,其中可以通过成员用户输入来选择项目1044以指示项目已经完成或不再相关。添加控件1046允许用户输入将新项目添加到列表并输入文本以命名新项目。可以利用它们已被用户输入所选择以被认为已完成或已实现的视觉指示来显示已完成的项目1048。还可以提供关闭控件1050。诸如指示或已向列表贡献特定项目的成员用户的列表的其他特征可以在各种实施例中显示。

嵌入式界面1040中显示的项目列表与所有成员设备的嵌入式界面同步,使得每个成员设备在列表中显示相同的项目和项目状态。在一些实施例中,可以例如由启动嵌入式会话的成员用户向一个或多个成员用户分配观察者状态,其中观察者用户不能修改列表。

在图10c中,在第一用户已选择在聊天界面的聊天对话中输入新消息之后,图10b的聊天界面1000被示出具有示例更新。例如,第一用户可能已经选择了聊天界面1000的输入字段1002。在一些实施例中,这可以使得显示的键盘1060显示在聊天界面1000中或附近,其可以用于输入新消息。一些实施例可以提供消息建议1062作为响应于一个或多个聊天消息或与一个或多个聊天消息相关的可选元素,该一个或多个聊天消息例如是最后的聊天消息1064。类似于图8d,如图10c的示例中所示,一些实施例可以调整嵌入式界面1040的尺寸(例如,缩小嵌入式界面的尺寸)以允许键盘1060和聊天对话的聊天消息两者在聊天界面1000的显示区域1004中的显示空间,使得键盘1060、嵌入式界面1040和显示区域1004的一部分被同时显示。

在图10d中,在第一用户已选择向嵌入式界面和嵌入式应用提供输入之后,图10b的聊天界面1000被示出具有示例更新。例如,第一用户可能已经选择了图10b的嵌入式界面1040的添加控件1046,例如使用触摸屏输入或来自另一个指向输入设备的输入,或者可能已经选择了嵌入式界面中的可以从键盘接受文本输入的不同选项。在其他情形下,用户可能已选择了嵌入式界面中的控件。在一些实施例中,对嵌入式界面的该用户输入可以使得显示的键盘1070显示在聊天界面1000中或其附近,其中键盘1070可以用于输入文本(包括字符、表情符号,符号等)。例如,第一用户可以使用键盘1070为列表中添加的项目输入文本名称或短语。

一些实施例可以例如基于由嵌入式界面中的用户输入选择的界面元素和/或基于嵌入式应用的事件,提供一个或多个建议1072作为嵌入式界面的建议输入。在该示例中,基于添加控件1046的选择来确定建议1072。例如,嵌入式应用(和/或消息应用或建议服务器,在发送列表项目之后)可以检查现有列表项目以确定与现有项目相关的建议的新列表项目。例如,可以检查存储的知识库或数据库(例如,相关概念的分层图)以找到与列表中的单词相关的单词。

在一些实施例中,如图10d所示,当键盘1070被显示以允许向嵌入式界面1040输入时,嵌入式界面1040可以保持如图所示的正常尺寸大小(或者可以以比图10c中的小尺寸嵌入式界面1040更大的尺寸显示)。当显示键盘1070以使得能够向嵌入式界面1040输入时,可以从聊天界面1000中移除显示聊天消息的显示区域1004,如图所示。

一些实施例可以显示类似于键盘1070的键盘用于输入到嵌入式界面,和/或可以显示要输入到嵌入式界面的类似于建议1072的建议,用于其他类型的嵌入式应用,例如,媒体播放器、游戏、文档处理应用等,如这里针对其他实施例所描述的。

机器人程序实施例的示例

机器人程序是在一个或多个计算机上实施的自动服务,用户主要例如经由消息应用103a/103b通过文本与机器人程序进行交互。机器人程序可以由机器人程序提供者实施,使得机器人程序可以与各种消息应用的用户交互。在一些实施例中,消息应用103a/103b的提供者还可以提供一个或多个机器人程序。在一些实施例中,由消息应用103a/103b的提供者提供的机器人程序可以被配置为使得机器人程序可以被包括在其他消息应用中,例如,由其他提供者提供的消息应用中。在一些实施例中,一个或多个机器人程序可以由嵌入式应用提供、生成和/或包括在嵌入式应用中。

机器人程序可以提供优于其他模式的若干优点。例如,机器人程序可以允许用户尝试新服务(例如,出租车预订服务、餐馆预订服务等),而无需在客户端设备上安装应用或访问网站。进一步,用户可以通过文本与机器人程序交互,与学习使用网站、软件应用、电话呼叫例如交互式语音响应(interactivevoiceresponse,ivr)服务或与服务的其他交互方式相比,这需要最少的学习或不需要学习。在消息服务或应用中并入机器人程序还可以允许用户与其他用户协作来完成消息服务内的各种任务,诸如旅行计划、购物、安排事件、获取信息等,并且消除了完成任务的繁琐的操作,诸如在各种应用(例如,出租车预订应用、餐馆预订应用、日历应用等)或网站之间的切换。

机器人程序可以被实施为计算机程序或应用(例如,软件应用),其被配置为经由消息应用103a/103b与一个或多个用户(例如,用户125a-n中的任何用户)交互,以在消息应用103中提供信息或执行特定动作。作为一个示例,信息检索机器人程序可以在因特网上搜索信息,并在消息应用内呈现最相关的搜索结果。作为另一个示例,例如,通过在消息应用内实现旅行和酒店票的购买、在消息应用内进行酒店预订、在消息应用中进行租赁汽车预订等,旅行机器人程序可以具有经由消息应用103进行旅行安排的能力。作为另一个示例,出租车机器人程序可以具有呼叫出租车例如到(当用户125允许访问位置信息时,由出租机器人程序从客户端设备115获得的)用户的位置的能力,而不必调用或呼叫单独的出租车预订应用。作为另一示例,例如,通过询问可能出现在考试中的问题并提供用户的响应是正确还是不正确的反馈,教练/辅导机器人程序可以在消息应用内在一些主题上辅导用户来指令用户。作为另一示例,游戏机器人程序可以在消息应用内在用户的相对方或同一方玩游戏。作为另一个示例,例如,通过从商家的目录中检索产品信息并通过消息应用实现购买,商业机器人程序可以提供来自特定商家的服务。作为另一个示例,接合机器人可以接合远程设备或车辆,使得消息应用的用户可以与远程设备或车辆聊天,从远程设备或车辆中检索信息和/或向远程设备或车辆提供指令。

机器人程序的能力可以包括理解用户的意图并在其上运行。可以通过分析和理解用户的对话及其上下文来理解用户的意图。机器人程序还可以基于随时间演变的对话来理解对话的上下文的改变或用户的情绪和/或意图的改变。例如,如果用户a建议会面喝咖啡,但如果用户b声明他不喜欢咖啡,则机器人程序可以向用户b分配对于咖啡的负面情绪得分,并且可能不会为会面而建议咖啡店。

实施可以与消息应用103a/103b的用户进行通信的机器人程序可以提供许多优点。传统上,用户可以利用软件应用或网站来执行诸如支付账单、订购食物、预订门票等活动。这种实施的问题是为了执行多项活动,用户需要安装或使用多个软件应用和网站。例如,用户可能不得不安装不同的软件应用以支付公共事业账单(例如,来自公共事业公司)、购买电影票(例如,来自票务服务提供者的票预订应用、进行餐厅预订(例如,来自相应的餐厅)、或者可能需要访问每个活动的相应网站。这种实现的另一个问题是用户可能需要学习复杂的用户界面,例如,使用多个用户界面元素(诸如窗口、按钮、复选框、对话框等)实施的用户界面。

因此,一个或多个所描述的实施例的优点在于,单个应用使用户能够执行涉及与任何数量的一方的交互的活动,而不需要访问单独的网站或安装和运行软件应用,其具有减少客户端设备上的内存、存储和处理资源的消耗的技术效果。所描述的实施例的优点在于,对话界面使得用户更容易和更快地完成这样的活动,例如,无需学习复杂的用户界面,其具有减少计算资源的消耗的技术效果。所描述的实施例的另一个优点是实施机器人程序可以使各种参与的实体能够以较低的成本提供用户交互,其具有减少对被部署为实现用户交互的计算资源(诸如使用一个或多个通信服务器实施的免费号码,托管在一个或多个网络服务器上的网站、托管在电子邮件服务器上的客户支持电子邮件等)的需求的技术效果。所描述特征的另一技术效果是,减少用于跨通信网络完成用户任务的系统处理和传输资源的消耗问题。

虽然这里的某些示例描述了机器人程序与一个或多个用户之间的交互,但是各种类型的交互,诸如机器人程序和用户125之间的一对一交互、机器人程序与两个或多个用户之间的一对多交互(例如,在组消息会话中)、多个机器人程序和用户之间的多对一交互以及多个机器人程序和多个用户之间的多对多交互是可能的。进一步,在一些实施例中,机器人程序还可以被配置为经由消息应用103、经由机器人程序之间的直接通信或其组合,与另一机器人程序(例如,机器人程序107a/107b、109a/109b、111、113等)交互。例如,餐馆预订机器人程序可以与特定餐馆的机器人程序进行交互,以便预订餐桌。

在某些实施例中,机器人程序可以使用对话界面(诸如聊天界面)来使用自然语言与用户进行对话交互。在某些实施例中,机器人程序可以使用基于模板的格式来创建与用户交互的句子,例如,响应于对餐馆地址的请求,使用诸如“餐馆r的位置是l”的模板。在某些情形下,可以使用户能够选择机器人程序交互格式,例如,机器人程序是否使用自然语言与用户交互、机器人程序是否使用基于模板的交互等。

在机器人程序使用自然语言进行对话交互的情形下,机器人程序的交互的内容和/或风格可以基于以下中的一个或多个动态地变化:使用自然语言处理所确定的对话的内容、对话中的用户的标识、以及一个或多个对话上下文(例如,关于用户的交互的历史信息、基于社交图的对话中的用户之间的连接)、外部条件(例如,天气、交通)、用户的日程安排、与用户相关联的相关上下文等。在这些情形下,机器人程序的交互的内容和风格仅基于参与对话的用户已经提供同意的这些因素而变化。

作为一个示例,如果确定对话的用户正在使用正式语言(例如,没有或最少的俚语或表情符号),则机器人程序也可以使用正式语言在该对话内进行交互,反之亦然。作为另一示例,如果对话中的用户(基于现在和/或过去的对话)被确定为表情符号的重度用户,则机器人程序还可以使用一个或多个表情符号与该用户交互。作为另一示例,如果确定对话中的两个用户在社交图中远程连接(例如,在他们之间具有两个或更多个中间节点表示例如他们是朋友的朋友的朋友),则机器人程序可以在该对话中使用更正式的语言。在参与对话的用户未同意机器人程序利用诸如用户的社交图、日程安排、位置或与用户相关联的其他上下文等因素的情形下,机器人程序的交互的内容和风格可以是默认风格,例如不需要使用这些因素的中性风格。

此外,在一些实施例中,一个或多个机器人程序可以包括参加与用户的来回对话的功能。例如,如果用户请求关于电影的信息,例如,通过输入“@moviebot你能推荐一部电影吗?”,机器人程序“moviebot”可能会响应“你想看喜剧吗?”然后,用户可以响应,例如,“不”,机器人程序可以响应“好的,名为太空与星球的科幻电影获得了很好的评价。我应该给你预订票吗?”然后,用户可以指示“是的,我可以在下午6点之后去。请检查steve是否可以加入”。一旦用户同意机器人程序访问关于其联系人的信息,并且一旦朋友steve同意接收来自机器人程序的消息,机器人程序就可以向用户的朋友steve发送消息,并在适当的时间执行进一步的动作来预定电影票。

在某些实施例中,可以使得参与聊天对话的用户能够调用特定机器人程序或执行特定任务的机器人程序,例如通过键入机器人程序名称或机器人程序句柄(例如,出租车、@taxibot、@movies等)、通过使用语音命令(例如,“调用bankbot”等)、通过激活用户界面元素(例如,标明机器人程序名称或句柄的按钮或其他元素)等。一旦机器人程序被调用,则用户125可以经由消息应用103a/103b以类似于向其他用户125发送消息的方式向机器人程序发送消息。例如,为了订购出租车,用户可以键入“@taxibot给我叫辆出租车”;为了预订酒店,用户可以输入“@hotelbot在我附近的中餐馆预订4人桌”。

在某些实施例中,机器人程序可以在没有被特别调用的情形下在聊天对话内自动建议信息或动作。也就是说,用户可能不需要专门调用机器人程序。在这些实施例中,机器人程序可以依赖于在持续的时间基础上或在离散的时间点对聊天对话的分析和理解。聊天对话的分析可以用于理解特定用户需求并且识别何时应该由机器人程序建议帮助。作为一个示例,如果确定用户需要信息(例如,基于用户向另一用户询问问题,基于多个用户指示他们没有某些信息),机器人程序可以搜索某些信息并建议答案。作为另一个示例,如果确定多个用户表示有兴趣吃中餐,则机器人程序可以自动建议靠近用户的中餐馆的集合,包括诸如位置、评级和到餐馆网站的链接的可选信息。

在某些实施例中,不是自动调用机器人程序或等待用户明确地调用机器人程序,而是可以对消息会话中的一个或多个用户进行自动建议去调用一个或多个机器人程序。在这些实施例中,可以在持续的时间基础上或在离散的时间点分析聊天对话,并且可以使用对话的分析来理解特定的用户需求,并且识别何时应该在对话内建议机器人程序。

在机器人程序可以在没有被特别调用的情形下在聊天对话内自动建议信息或动作的实施例中,例如,如果参与聊天对话的一个或多个用户不提供对机器人程序执行用户的对话的分析的同意,则禁用这样的功能。进一步,还可以基于用户输入,临时禁用这种功能。例如,当用户指示聊天对话是私密的时,暂停对该对话的上下文的分析,直到用户提供输入用于激活机器人程序。进一步,可以例如利用用户界面元素,向聊天对话中的参与者提供分析功能被禁用的指示。

在各种实施例中,机器人程序可以以各种配置被实施。例如,如图1所示,机器人程序105在客户端设备115a上实施。在该示例中,机器人程序可以是客户端设备115a本地的软件应用中的模块。例如,如果用户已在客户端设备115a上安装了出租车呼叫应用,则可以将机器人程序功能作为模块并入出租车呼叫应用中。在该示例中,用户可以例如通过发送消息“@taxibot给我叫辆出租车”来调用出租车机器人程序。消息应用103b可以自动地使得出租车呼叫应用中的机器人程序模块被发起。以这种方式,机器人程序可以在客户端设备上本地地实施,使得用户可以经由消息应用103参加与机器人程序的对话。

在图1中所示的另一示例中,机器人程序107a被示出在客户端设备115a上实施,而机器人程序107b被示为在消息服务器101上实施。在该示例中,机器人程序可以例如被实施为客户端-服务器计算机程序,由机器人程序107a(服务器模块)和机器人程序107b(客户端模块)中的每一个提供的机器人程序功能的部分。例如,如果机器人程序是具有句柄@calendar的安排机器人程序,则用户125a可以通过键入“@calendar提醒我在晚上收衣物”来安排提醒,这可以由机器人程序107b(客户端模块)处理。继续该示例,如果用户125a告诉机器人程序“检查jim是否可以在4点有空见面”,则机器人程序107a(服务器模块)可以联系用户jim(或jim的安排机器人程序)来交换消息,并向用户125a提供响应。

在另一示例中,机器人程序109a(服务器模块)在服务器135上实施,机器人程序109b(客户端模块)在客户端设备115上实施。在该示例中,机器人程序功能由在客户端设备115和服务器上实施的模块提供。在一些实施例中,机器人程序可以被实施为分布式应用,例如,模块分布在多个客户端设备和服务器(例如,客户端设备115、服务器135、消息服务器101等)上。在一些实施例中,机器人程序可以被实施为服务器应用,例如,在消息服务器101上实施的机器人程序111和在服务器135上实施的机器人程序113。

诸如仅客户端、仅服务器、客户端-服务器、分布式等的不同实施例可以提供不同的优点。例如,仅客户端的实施例允许在本地提供机器人程序功能,例如,没有网络访问,这在某些情境中可能是有利的,例如,当用户在网络覆盖区域之外或在具有低的或有限网络带宽的任何区域中时。包括一个或多个服务器(诸如仅服务器、客户端-服务器或分布式配置)的实施例可以允许某些功能,例如,可能无法在客户端设备上本地提供的金融交易、票预订等。

虽然图1示出了与消息应用103不同的机器人程序,但是在一些实施例中,一个或多个机器人程序可以被实施为消息应用103的一部分。在机器人程序被实施为消息应用103的一部分的实施例中,在实施机器人程序之前获得用户许可。例如,在将机器人程序实施为消息应用103a/103b的一部分的情形下,消息应用103a/103b可以提供可执行某些活动的机器人程序,例如,翻译往来消息的翻译机器人程序、在用户的日历上安排事件的安排机器人程序等。在此示例中,仅经用户的特定许可激活翻译机器人程序。如果用户未提供同意,则不实施(例如,禁用、移除等)消息应用103a/103b内的机器人程序。如果用户提供同意,则机器人程序或消息应用103a/103b可以有限地使用经由消息应用103a/103b在用户之间交换的消息,以提供特定功能,例如翻译、安排等。

在一些实施例中,与消息应用103a/103b的提供者和用户125不同的第三方可以提供可出于特定目的经由消息应用103a/103b与用户125通信的机器人程序。例如,出租车服务提供者可以提供出租车机器人程序,票务服务可以提供可以预订事件门票的机器人程序,银行机器人程序可以提供进行金融交易的能力等。

在经由消息应用103实施机器人程序时,仅在特定用户授权时允许机器人程序与用户通信。例如,如果用户调用机器人程序,则机器人程序可以例如基于用户调用机器人程序的动作来回复。在另一示例中,用户可以指示可联系该用户的特定机器人程序或特定类型的机器人程序。例如,用户可以允许旅行机器人程序与她通信,但不为购物机器人程序提供授权。在该示例中,消息应用103a/103b可以允许旅行机器人程序与用户交换消息,但是过滤或拒绝来自购物机器人程序的消息。

进一步,为了提供一些功能(例如,订购出租车、进行航班预订、联系朋友等),机器人程序可以请求用户允许机器人程序访问用户数据,诸如位置、支付信息、联系人列表等。在这种情形下,向用户呈现允许或拒绝访问机器人程序的选项。如果用户拒绝访问,则机器人程序可以经由消息(例如“抱歉,我无法为您预订出租车”)进行响应。进一步,用户可以在有限的基础上(例如,用户可以仅在机器人程序的特定调用时才允许出租车机器人程序访问当前位置,在其他方面不允许)提供对信息的访问。在不同的实施例中,用户可以控制机器人程序可以访问的信息的类型、数量和粒度,并且(例如,经由用户界面)被提供有在任何时间改变这种许可的能力。在一些实施例中,可以处理用户数据,以便在机器人程序可以访问这样的数据之前,例如移除个人可识别信息,将信息限制到特定数据元素等。进一步,用户可以通过消息应用103a/103b和一个或多个机器人程序来控制用户数据的使用。例如,用户可以指定供应进行金融交易的能力的机器人程序在交易完成之前需要用户授权,例如机器人程序可以发送消息“电影太空和开始的门票每个人12美元。我可以继续预订吗?”或者“这件衬衫的最优惠价格是125美元,包括运费。我可以从以尾号1234的信用卡中扣款吗?”等等。

在一些实施例中,由上述系统生成的一个或多个建议响应项目可以是用于调用或命令机器人程序的消息,例如,向机器人程序请求信息。例如,系统可以确定所接收的图像是否包括将由机器人程序提供的信息和/或一个或多个功能来帮助的内容。在一些示例中,对话中的第一用户可以向第二用户发送文本消息,说“猜猜在哪里?”然后,第一用户将图像发送到第二用户的设备。系统可以确定包括单词“猜”的短语指示建议响应可以是找出与图像内容相关的信息的请求。(其他词也可以指示这样的请求,诸如“哪里”、“什么”等。)作为响应,系统可以生成建议响应,该建议响应是对可以提供相关信息的适当机器人程序的请求或命令。例如,建议响应可以是请求地图机器人程序提供图像中描绘的位置的名称(例如,其中机器人程序可以使用网页搜索、地图和地图集、接收到的图像的地理位置元数据等来确定这样的信息)。在一些实施例中,可以使用训练消息数据(如果已经获得用户同意)来确定在图像中检测到的特定类型的图像内容的适当类型的机器人程序(例如,如果已获得用户同意,则使用一种或多种图像检测或识别技术),和/或基于规则的语法可以基于在图像内容中检测到的图像内容和/或概念的类型来确定在建议响应中调用哪些类型的机器人程序。

在一些实施例中,如果为用户显示与机器人程序相关的建议项目作为可能的响应,并且用户选择该建议,则可以将机器人程序添加到聊天对话和消息界面,例如,用机器人程序名称表示。机器人程序可以在对话中确定并输出所请求的信息,例如,作为对聊天界面中的第一和第二用户的消息。

在另一示例中,第一用户将描绘作为第二用户外来语言的文本的图像输入到聊天对话或嵌入式应用。系统可以确定适当的建议项目是请求语言机器人程序翻译图像中的文本,并在聊天界面或嵌入式界面中输出翻译后的文本。

在另一示例中,第一用户将描绘食品的图像输入到聊天对话。系统可以确定适当的建议响应是请求机器人程序检查一个或多个可访问的数据源(例如,在因特网上),以确定通常或具体包括在该食品中的成分和/或卡路里,并在消息对话界面中输出该信息。

这里描述的实施例通常涉及消息应用。某些实施例可以自动地(例如,无需用户干预)分析一个或多个聊天对话的图像内容和/或用户信息,以在消息应用内自动向用户提供建议项目。在某些示例中,用户可以选择自动建议项目,以在嵌入式应用或消息应用中进行响应,和/或自动建议项目可以代表用户被自动地提供为一个或多个适当的响应。在某些其他示例中,建议可以自动将特定的非消息功能合并到消息应用中。

可以基于在聊天对话中接收的任何类型的媒体内容来提供建议项目。例如,这样的媒体内容可以包括贴纸(例如,在聊天应用中)、动画图像(例如,电影图、gif图像等)和视频。进一步,可以建议各种类型的项目。例如,建议消息可以包括图像、贴纸、动画图像(例如,电影图、gif图像等)和视频中的一个或多个。为了提供这些建议,可以利用不同类型的响应中的概念,对所接收的项目中所识别的概念(例如,文本、图像、视频、贴纸、动画图像等)进行比较,并选择合适的响应。在用户提供同意的不同实施例中,可以基于上下文来选择或优先化建议项目的类型,例如,可以提供贴纸作为用于游戏中的特定动作的建议项目,可以提供第二视频作为用于播放视频的建议项目等。

一些实施例实现了与人类用户和/或聊天机器人程序的消息传递。在某些实施例中,可以基于聊天机器人程序是否参与聊天对话来定制自动建议项目。在一些示例中,如果在消息对话中不存在聊天机器人程序,则可以提供自动建议项目的第一集合,而如果聊天对话中存在聊天机器人程序,则可以提供自动建议项目的第二集合,其中建议项目的第一集合和第二集合至少部分不同。例如,这些实施例可以采用聊天机器人程序遵守的对话规则,并基于规则向用户建议项目。这可以减轻用户在以聊天机器人程序容易理解的语言和格式与聊天机器人程序通信时可能遇到的挑战。

一些实施例可以包括基于与用户的位置相关的区域、市场和国家中的至少一个中的其他消息(例如,包括由许多不同用户发送的流行消息内容的消息)来确定一个或多个趋势响应。一个或多个确定的建议项目可以包括一个或多个趋势响应。在一些实施例中,用户上下文,例如,地理位置、假日或事件等可用于生成和确定一个或多个建议项目用于呈现。

在一些实施例中,确定一个或多个建议响应项目可以基于使用机器学习来为用户开发个性化模型。确定建议项目可以基于用户的偏好和/或用户在通信中的先前动作(如果已经获得用户同意使用这样的动作和数据)。例如,用户偏好可以包括指示可以包括的特定单词的白名单和/或指示不能包括在消息建议中的特定单词的黑名单。如果已经获得用户同意,则可以基于用户在之前的场合提供的标点符号使用、表情符号使用或其他内容中的一个或多个来生成或修改建议项目。

用于提供建议项目的机器学习模型可以由客户端设备115和/或服务器(例如,消息服务器101和/或服务器150-156)来实施。在一些实施例中,聊天对话可以被加密,使得仅聊天对话中的参与者的客户端设备可以访问对话内容。在这些实施例中,由相应客户端设备实施的模型可以用于提供建议响应项目,并且不使用由服务器实施的模型。例如,当用户未提供对由服务器实施的模型的使用的同意时,还可以使用由客户端设备实施的模型。在一些实施例中,客户端实施的模型可以基于或导出自服务器实施的模型。在一些实施例中,例如,当客户端设备缺乏实施客户端模型的能力时,可以使用服务器模型并且可以不使用客户端模型。在一些实施例中,可以使用客户端和服务器模型的组合。

虽然在本文档中描述的示例利用以英语示出的概念,但是可以以任何语言提供建议,例如,为客户端设备115配置的地区或其他地理的语言、基于用户偏好选择的语言等。在一些实施例中,在用户提供对聊天对话的上下文的分析的同意的情形下,可以检测在涉及用户的各种对话(例如,在最近的消息中)中使用的语言,并且可以以该语言提供消息建议。

机器人程序和嵌入式应用的进一步示例

在一些实施例中,如上所述的机器人程序可以结合在用户设备上实现的一个或多个聊天对话中的嵌入式应用的使用来使用。

在一些机器人程序实施例中,用户可以参与与机器人程序的聊天对话,并且没有其他人类用户参与该聊天对话。例如,助理机器人程序可以由在用户设备上运行的本地程序提供,或者由服务器(例如,服务器应用程序)提供。在一些示例中,响应于用户在第一聊天对话中输入机器人程序命令(例如,命令聊天消息)、在聊天界面中选择机器人程序激活控件,可以打开包括用户和一个或多个机器人程序的新的机器人程序聊天对话。在机器人程序聊天对话中,用户可以输入信息(例如,问题、命令、语句)作为可以由机器人程序处理的消息,并且机器人程序可以基于那些消息,将命令或数据发送到嵌入式应用。例如,机器人程序可以基于聊天界面中从用户到机器人程序的命令来启动与聊天界面相关联的适当的嵌入式应用,以加入特定的嵌入式会话、回放媒体项目、玩游戏、创建共享列表等。在一些实施例中,机器人程序可以确定并呈现这里所述的建议响应项目,例如,在从聊天界面中的用户输入向机器人程序提供命令时,并且例如与和建议响应项目相关的嵌入式应用和嵌入式会话的运行同时。在一些实施例中,机器人程序可以接收与在嵌入式应用中发生的事件有关的信息,并且可以生成并使得显示描述嵌入式会话中的事件的交互式卡,如这里所述。

在一些示例中,在与具有媒体播放器功能的机器人程序的聊天对话中,用户可以在聊天界面或对话中输入问题,并且机器人程序可以启动媒体播放器嵌入式应用,其在与机器人程序聊天对话相关联地显示或与不同的聊天对话(例如,包括其他人类聊天用户的聊天对话)相关联地显示的嵌入式界面中播放特定媒体项目。例如,如果与不同的聊天对话相关联地播放,则可以从显示中隐藏机器人程序聊天对话,并且可以在聊天界面中显示不同的聊天对话,其中嵌入式界面与聊天界面相关联地显示。

在嵌入式应用可以播放媒体项的示例中,例如,如这里的实施例中所描述的,可以通过用户在聊天对话中调用媒体播放器机器人程序。例如,可以通过在聊天界面中类似于聊天消息地输入命令并且包括命令语法(例如,命令之前的符号)、或者通过输入不同类型的选择(例如,选择显示的界面元素)来调用机器人程序。媒体播放器机器人程序可以支持来自用户的与嵌入式应用播放或可播放的媒体项相关的查询。

在一些实施例中,媒体播放器机器人程序可以用于搜索已经由用户和/或其他聊天用户保存在可访问存储中的存储的媒体项目或其他类型的内容项目,和/或具有链接到聊天对话中发布的内容项目。在一些示例中,可以将针对机器人程序的查询作为聊天消息输入到聊天界面。例如,搜索查询可以被提供为“@mediaplay猫视频”以使媒体播放器机器人程序在存储的媒体项目的集合中搜索猫视频。还可以查询媒体项目的特定标题。在一些实施例中,可以提供对话搜索。例如,搜索查询可以被输入为“向我显示gameshow的最新一集”或“播放最受欢迎的gameshow视频”或“向我展示你推荐给我看的五个视频”或“每天给我发送一个新的猫视频”。在一些实施例中,推荐的媒体项目可以由内容服务器提供,该内容服务器可以跟踪先前的用户观看和偏好(具有用户同意),并且为用户对媒体项目进行排名。

一些实施例可以提供一个或多个机器人程序以接收形成搜索查询的用户输入,该搜索查询用于搜索要在嵌入式应用中使用的其他数据项目或内容项目。例如,这样的项目可以包括要添加到共享列表的项目、要在旅行行程中使用的特定时区中的时间、用于预订的餐馆的名称等。机器人程序可以在数据库、服务器或用户设备上和通过网络可访问的其他资源搜索这样的项目。机器人程序响应于搜索查询而找到的项目可以在聊天界面中呈现,以供用户选择,或者可以由机器人程序自动提供给相关联的嵌入式应用(并且在一些实施例中,如果嵌入式应用尚未运行,则机器人程序可以启动嵌入式应用)。如果适当,提供给嵌入式应用的项目可以显示在嵌入式界面中。

在一些实施例中,如上所述,可以为特定用户稍后保存嵌入式会话中的媒体项目的回放,以使该用户能够在稍后的时间(例如,在新的嵌入式会话中)播放该媒体项目。在一些实施例中,如果已从聊天用户处获得同意,则这样保存的媒体项目可以包括游戏或其他用户以及在一个或多个嵌入式会话中与聊天用户发生的应用活动/事件的记录(例如,捕获的视频数据、屏幕捕获图像等)。

在一些实施例中,可以在专用的单独聊天对话中为用户保存媒体项目。例如,用户可以在聊天对话中提供用户输入以保存特定媒体项目。作为响应,识别与用户相关联的第二聊天对话,并且机器人程序与媒体项目相关联。媒体项目被插入到第二聊天对话中,并且先前保存的媒体项目也被列在第二聊天对话中。消息应用可以从用户接收与媒体项相关联的输入,以便例如,播放所选择的媒体项目。作为响应,通过使用嵌入式应用播放所选媒体项目来更新第一聊天对话。

在一些额外的示例中,可以在指示媒体播放器嵌入式会话是活跃的通知中提供保存控件,或者与聊天对话中显示的媒体项目链接相关联地提供保存控件。例如,如果用户接收到媒体播放器嵌入式会话是活跃的通知(或者看到聊天界面中的媒体项目的链接),则用户可以选择保存控件。该选择可以使得第二聊天对话被显示(例如,媒体选择聊天对话),在该第二聊天对话中,仅用户和机器人程序正在参与。可以在媒体选择聊天对话中显示嵌入式会话中的媒体项目的链接。此外,来自先前嵌入式会话的任何保存的媒体项目可以作为先前消息包括在媒体选择聊天对话中。从而,用户可以打开媒体选择聊天对话,以选择和播放与用户相关联的已保存媒体项目。在一些实施例中,可以提供选项以自动地将用户的媒体项目插入到媒体选择聊天对话中,例如,以允许从单个集合中查看和播放媒体项目。

在一些实施例中,系统(例如,机器人程序)在聊天界面中提供被确定为与嵌入式会话中共享的媒体项目类似的额外的媒体项目的选择。例如,额外的媒体项目可以具有相同的流派、由相同的艺术家创作或有相同的艺术家作为主演等。

在一些实施例中,可以提供共享选项,如果选择该共享选项,则使得在嵌入式界面中播放的媒体项目被共享到不同的聊天对话,或共享到为所选择的共享动作创建的新聊天对话。例如,为了使得共享选项被显示,用户可以触摸播放媒体项目的嵌入式界面超过阈值时间量,以使得共享选项被显示,或者可以选择特定的显示界面元素。

在一些实施例中,用户可以选择评论控件,以使得能够向与播放媒体项目的嵌入式会话相关联的聊天对话输入评论。在一些实施例中,在聊天对话中发布用于播放媒体项目的链接,随后是用户输入的用户评论。如果当查看在不同聊天对话(例如,如上所述的媒体选择聊天对话)中看到的已保存媒体项目时选择评论控件,则所选择的评论控件可以使得原始聊天对话被打开和显示,从而允许该人在原始聊天对话中进行评论,在该原始聊天对话中,媒体项目在嵌入式会话中被播放。

在一些实施例中,如这里所描述的建议响应可与机器人程序一起使用。例如,选择建议响应可以触发与建议响应相关联的机器人程序,以在嵌入式应用、消息应用或其他程序或设备中执行一个或多个动作。在一些示例中,机器人程序可以对嵌入式应用内容执行动作而无需打开嵌入式应用。例如,嵌入式应用可以允许用户在聊天界面中向嵌入式应用提供命令(例如,通过向机器人程序提供命令),并允许用户经由嵌入式界面可视地与嵌入式应用交互。在嵌入式应用具有服务器组件或与服务器组件进行通信的一些示例中(例如,游戏状态由服务器管理的游戏),经由聊天消息命令机器人程序在嵌入式应用和嵌入式界面中执行动作还使得动作在由其他成员设备显示的嵌入式界面中执行。在另一示例中,共享列表嵌入式应用使得列表数据被存储在服务器上。第一用户打开共享列表嵌入式应用,并将项目添加到列表或从列表中移除项目。其他用户的设备可以显示建议响应,以经由使用聊天界面对嵌入式应用的机器人程序命令,将项目添加到列表中。例如,建议响应可以响应于诸如“不要忘记为聚会购买饮料”的聊天消息(例如,“向'今晚的聚会'列表添加'购买饮料'”的建议响应),或响应于诸如“我刚刚为今晚的聚会购买了苏打水”的聊天消息(例如“从'今晚的聚会'列表中移除'购买苏打水'”的建议命令)。在一些实施例中,当这些示例建议响应由关联用户选择时,可以调用机器人程序将命令发送到嵌入式应用,并且例如不会向嵌入式界面提供命令。在一些实施例中,除了嵌入式界面之外,提供机器人界面(经由聊天界面)的优点是,不需要在设备上显示可视界面,因此节省了设备处理、内存和屏幕空间资源,并且实现了与由嵌入式应用管理的内容数据的快速用户交互。

图11是根据一些实施例的示例序列的示意图,该示例序列包括嵌入式应用的启动和用户加入嵌入式会话。在该示例中,第一用户1102(“用户1”)正在操作运行消息应用1104的第一用户设备,消息应用1104显示第一聊天界面。第二用户1106(“用户2”)正在操作运行第二消息应用1108的第二用户设备,第二消息应用1108显示第二聊天界面。在消息应用1104和1108之间通过网络提供用户1102和1106(和他们的设备)正在参与的聊天对话,其中用户在他们各自的聊天界面中输入由参与的用户设备显示的消息。

在1110中,用户1102通过向消息应用1104提供用户输入来选择打开嵌入式应用1114。在1114,第一消息应用1104启动所选择的嵌入式应用1112。在一些实施例中,从服务器(例如,嵌入式应用服务器150(未示出))下载第一嵌入式应用1112。在1116,启动的第一嵌入式应用1112使得嵌入式界面由第一用户设备显示,例如,在第一聊天界面中、与第一聊天界面相邻或以其他方式与第一聊天界面相关联,并且由第一用户1102查看。

除了开始嵌入式应用之外,在1118,第一消息应用基于第一嵌入式应用1112的启动,通过网络发送指示启动事件(或第一用户的加入事件)的信息。在该示例中,在1118的事件被发送到消息路由器1120。在各种示例中,消息路由器1120可以是会话服务器152(例如,包括在消息服务器101中)或其他服务器。在一些实施例中可以响应于启动事件在消息路由器处创建嵌入式会话,或者可以由第一用户设备创建嵌入式会话等。消息路由器1120在1118将加入事件发送到在第二用户设备上操作的第二消息应用1108。在1122,第二消息应用1108使得第二用户设备例如在第二聊天界面中显示要由第二用户查看的通知,该通知指示第一用户1102已经启动嵌入式会话。在该示例中,通知包括用于第二用户选择加入嵌入式会话的显示的加入选项(例如,界面元素)。

在1124,第二用户1106选择所显示的加入选项以加入嵌入式会话,其中该选择被提供给第二消息应用1108。响应于加入选择,在1126,第二消息应用1108使得在第二用户设备上启动(例如,在一些实施例中下载)第二嵌入式应用1128。在1130,第二嵌入式应用使得在第二用户设备上显示第二嵌入式界面。除了启动第二嵌入式应用之外,在1132,响应于在1124的加入选择,第二消息应用1108通过网络向嵌入式会话发送指示第二用户的加入事件的信息。在该示例中,加入事件1132被发送到消息路由器1120。

消息路由器1120通过网络将加入事件1132发送到第一用户设备上的第一消息应用1104。作为响应,在1122,针对加入嵌入式会话的第二用户,第一消息应用1104向第一嵌入式应用1112发送成员更新。例如,成员更新可以包括指示第二用户已加入的数据、第二用户的聊天标识、第二用户的所选用户状态等,如这里所述。响应于成员更新,第一嵌入式应用1112在1136更新第一嵌入式界面的显示,如第一用户1102所查看的。例如,可以在嵌入式界面中显示第二用户的聊天标识(或其他用户标识)。

在系统、方法和具有存储的软件指令的非暂时性计算机可读介质的各种示例实施例中,与消息应用相关联地提供嵌入式应用。可以与由第一消息应用显示的第一聊天界面相关联地启动至少部分地在第一用户设备上运行的第一嵌入式应用。第一聊天界面被配置为从第一用户接收第一用户输入并显示通过网络源自参与聊天对话的一个或多个其他用户设备的消息。一个或多个其他用户设备与一个或多个聊天用户相关联,聊天用户与相应的聊天标识相关联。通过网络接收指示其他用户设备中的一个或多个特定用户设备已连接到与第一嵌入式应用相关联的嵌入式会话的指示。响应于该指示,一个或多个聊天标识从第一消息应用被提供给第一嵌入式应用,其与特定用户设备的一个或多个特定聊天用户相关联。特定聊天用户被指定为嵌入式会话的一个或多个成员用户,并且基于从嵌入式会话的至少一个特定用户设备接收的数据来更新第一嵌入式应用。

在进一步的示例中,第一嵌入式应用从第一用户接收到作为第一聊天界面的一部分显示的嵌入式界面的第一用户输入,并且第一用户输入包括选择嵌入式界面中的界面元素的选择。响应于第一用户输入,更新第一嵌入式应用。在一些示例中,嵌入式会话的每个特定用户设备运行相应的嵌入式应用,该嵌入式应用提供与在相应的特定用户设备上显示的相应聊天界面相关联的相应嵌入式界面,并且基于从嵌入式会话的至少一个特定用户设备接收的数据,更新第一嵌入式应用。该数据可以包括由至少一个相应嵌入式界面从嵌入式会话的一个或多个成员用户中的至少一个成员用户接收的其他用户输入。输出数据可以从第一嵌入式应用被获得,以在第一聊天界面中显示,并且响应于接收输出数据,由第一用户设备显示提示,该提示包括用户可选择的控件以同意在聊天界面中显示输出数据。在将一个或多个聊天标识提供给第一嵌入式应用之前,可以匿名化一个或多个聊天标识,以创建匿名聊天标识,使得匿名聊天标识被提供给第一嵌入式应用。

在进一步的示例中,信息被传输到参与聊天对话的其他用户设备,这使得其他用户设备显示界面元素,该界面元素可接受在每个其他用户设备处的选择性用户输入,并且响应于在特定用户设备上的界面元素处接收选择性用户输入,将特定用户设备指定为嵌入式会话的成员设备。可以确定一个或多个特定用户设备的一个或多个特性,并将其提供给第一嵌入式应用,其中特性包括至少一个特定用户设备的地理位置、至少一个特定用户设备的本地时间、和/或至少一个特定用户设备在网络上的可用数据带宽,其中该特性由第一嵌入式应用使用来确定要由特定用户设备显示的输出信息,和/或使得修改通过网络从一个或多个其他设备向第一用户设备的输入数据的传输。可以从管理嵌入会话的服务器接收指示,并且可以从服务器接收对第一嵌入式应用的更新,其中更新基于来自特定聊天用户的其他用户输入、提供给服务器的其他用户输入。

在进一步的示例中,输出通知,以在一个或多个其他用户设备的相应聊天界面中显示,其中通知指示特定用户设备是嵌入式会话的成员设备。在一些实施例中,响应于在嵌入式会话中发生的一个或多个特定类型的事件,将通知输出到聊天对话,该一个或多个特定类型的事件包括在第一嵌入式应用中发生的事件,并且包括启动媒体项目的回放、停止媒体项目的回放、基于第一用户输入和/或其他用户输入的媒体项目的回放的变化、在嵌入式会话的游戏中发生的游戏事件、基于第一用户输入和/或其他用户输入对游戏的更新、和/或基于第一用户输入和/或其他用户输入对共享内容文档的更新。在一些实施例中,响应于接收指示服务器上已发生一个或多个事件的服务器事件信息并将服务器事件信息提供给第一嵌入式应用以在第一用户设备上显示,将通知输出到聊天对话。

在进一步的示例中,基于接收从第一聊天界面中的第一用户接收的第二用户输入、来自第一嵌入式应用的嵌入式事件信息和/或来自耦合到网络的服务器的服务器事件信息、,基于建议事件获得一个或多个建议响应项目,并使得第一用户设备显示一个或多个建议响应项目,来确定嵌入式会话中的建议事件。例如,可以接收指示所选择的建议响应项目的第三用户输入,使得输出与在第一用户设备上和在参与第一用户设备的其他用户设备上显示的第一聊天界面中所选择的建议响应项目相关联的聊天消息。在另一示例中,第三用户输入选择所选择的建议响应项目,并提供与所选的建议响应项目相关联的一个或多个命令。在各种示例中,命令可以包括提供给第一嵌入式应用的至少一个第一命令、提供给第一消息应用的至少一个第二命令、和/或提供给第一用户设备以使得显示在第一用户设备上运行的不同应用的输出信息的至少一个第三命令。输出信息可以包括从与第一用户设备通信的服务器设备接收的信息。在进一步的示例中,命令可以包括第一命令,用于响应于确定第二内容项目与正在第一用户设备上的嵌入式应用的嵌入式界面中输出的第一内容项目相同,将一个或多个其他用户的第一集合添加到嵌入式会话,其中第二内容项目被显示在未参与聊天对话的一个或多个用户设备的第一集合上。命令可以包括第二命令,用于响应于确定一个或多个其他用户的第二集合已经输入了与第四内容项目相关联的用户评论,将一个或多个其他用户的第二集合添加到嵌入式会话,该第四内容项目与正在第一用户设备上的嵌入式界面中输出的第三内容项目相同,其中第四内容项目显示在未参与聊天对话的一个或多个用户设备的第二集合上。

在进一步的示例中,可以在消息应用处通过网络从在服务器设备处运行的服务器应用接收内容数据,并将其提供给嵌入式应用,以使得由用于在第一用户设备和一个或多个特定用户设备上显示的嵌入式界面中的嵌入式会话的嵌入式应用显示输出信息。通过网络接收指示在服务器应用处发生的建议事件的事件信息,其中建议事件基于由服务器应用接收的通过不同于一个或多个聊天用户的一个或多个网络用户的输入。获得响应于建议事件的一个或多个建议响应项目,并且在第一用户设备上的第一聊天界面中显示建议响应项目。可以通过用户输入选择建议响应项目,以使消息显示在聊天界面中,和/或将命令发送到嵌入式应用和消息应用中的一个。

在进一步的示例中,在将一个或多个特定聊天用户指定为嵌入式会话的一个或多个成员用户之前,从特定聊天用户接收选择输入,该选择输入为嵌入式会话选择一个或多个相关联的用户角色。从多个预定义的用户角色中选择关联的用户角色。响应于接收到选择输入,一个或多个特定聊天用户中的每一个特定聊天用户能够在嵌入式会话中被分配由特定聊天用户选择的相应的关联用户角色。每个特定聊天用户能够激活与特定聊天用户选择的相应的关联用户角色相关联的嵌入式应用的一个或多个功能。第一消息应用将关联用户角色和特定聊天用户的指示输出到其他用户设备以被显示。

在进一步的示例中,第一用户设备加入由至少部分地在第一用户设备上运行的第一消息应用至少部分地提供的聊天对话,并且第一聊天界面被配置为从第一用户接收第一用户输入和显示通过网络源自参与聊天对话的一个或多个其他聊天设备的一个或多个其他聊天用户的消息。每个聊天用户与第一聊天界面中显示的聊天标识相关联。从第一用户接收到第一聊天界面的第二用户输入,并且响应于第二用户输入,与第一聊天界面相关联地启动第一嵌入式应用。第一嵌入式应用在由第一用户设备显示的嵌入式界面中提供输出信息,使得第一聊天界面的至少一部分是可见的。从第一消息应用向第一嵌入式应用提供与第一用户相关联的聊天标识,其中第一用户被指定为与第一嵌入式应用相关联的嵌入式会话的成员用户,并且基于从第一用户接收的到嵌入式界面的第三用户输入来更新第一嵌入式应用。在一些示例中,其他聊天用户包括在第一用户设备和通过网络连接到第一用户设备的服务器设备中的至少一个上运行的机器人程序。基于从第一聊天界面中的第一用户接收的第四用户输入,机器人程序使得在嵌入式界面中显示内容数据。

在进一步的示例中,通过在第一用户设备上与第一消息应用相关联地运行的第一嵌入式应用,从第一用户接收到与第一聊天界面相关联地显示的第一嵌入式界面的第一用户输入。第一用户输入由第一嵌入式应用接收,第一聊天界面由至少部分地运行在第一用户设备上的第一消息应用显示,并且第一聊天界面被配置为从第一用户接收第二用户输入,并且显示通过网络从参与聊天对话的一个或多个其他用户设备接收的消息。每个其他用户设备与相应的聊天用户相关联,每个聊天用户与在第一聊天界面中显示的聊天标识相关联。从一个或多个其他用户设备中的一个或多个成员设备的一个或多个成员用户接收其他用户输入,其中成员设备被包括在与第一嵌入式应用相关联的嵌入式会话中。基于第一用户输入并基于其他用户输入,更新嵌入式应用的一个或多个状态,其中更新包括向每个成员用户分配相应的用户状态。指示成员用户的相应用户状态的信息被提供给第一消息应用,以由参与聊天对话的其他用户设备显示。

图12是可用于实施这里描述的一个或多个特征的示例设备1200的框图。在一个示例中,设备1200可以用于实施客户端设备,例如,图1中所示的客户端设备115中的任何一个。或者,设备1200可以实施服务器设备,例如,消息服务器101和/或图1的其他服务器。设备1200可以是如上所述的任何合适的计算机系统、服务器或其他电子或硬件设备。

这里描述的一个或多个方法可以在独立程序中运行,该独立程序可以在任何类型的计算设备上运行,该独立程序可以是在网页浏览器上运行的程序、在移动计算设备上运行的移动应用(“app”)(例如,手机、智能手机、平板电脑、可穿戴设备(手表、臂章、珠宝、头饰、虚拟现实护目镜或眼镜、增强现实护目镜或眼镜等)、笔记本电脑等)。在一个示例中,可以使用客户端/服务器架构,例如,移动计算设备(作为客户端设备)将用户输入数据发送到服务器设备并且从服务器接收用于输出(例如,用于显示)的最终输出数据。在另一示例中,可以在移动计算设备上的移动应用(和/或其他应用)内执行所有计算。在另一示例中,可以在移动计算设备和一个或多个服务器设备之间拆分计算。

在一些实施例中,设备1200包括处理器1202、内存1204和输入/输出(i/o)接口1206。处理器1202可以是运行程序代码和控制设备1200的基本操作的一个或多个处理器和/或处理电路。“处理器”包括处理数据、信号或其他信息的任何合适的硬件和/或系统、机构或组件。处理器可以包括系统,该系统具有通用中央处理单元(centralprocessingunit,cpu)、多个处理单元、实现功能的专用电路、或其他系统。处理不必限于特定的地理位置,或具有时间限制。例如,处理器可以“实时”、“离线”、以“批处理模式”等执行其功能。处理中的部分可以在不同的时间并且在不同的位置,通过不同的(或相同的)处理系统执行。计算机可以是与内存通信的任何处理器。

内存1204通常被设置在设备1200中以供处理器1202访问,并且可以是任何合适的处理器可读存储介质,诸如适用于存储用于由处理器运行的指令、并且与处理器1202分开设置和/或与处理器1202集成的随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、电可擦除只读存储器(electricalerasableread-onlymemory,eeprom)、闪存等。内存1204可以存储由处理器1202在服务器设备1200上运行的软件,包括操作系统1208、消息应用1210和其他应用(或引擎1212),诸如数据显示引擎、网络托管引擎(webhostingengine)、图像显示引擎、通知引擎、社交网络引擎等。在一些实施例中,消息应用1210可以包括使得处理器1202能够执行这里描述的例如图2-7的方法的一些或全部的功能的指令。例如,消息应用1210可以与如这里所述的其他应用和设备通信。在一些实施例中,消息应用1210可以包括或者关联一个或多个嵌入式应用1216,其可以提供如这里所述的特征,并且可以与消息应用1210通信以发送和接收来自经由网络连接的其他应用1212和的设备的信息。在一些实施例中,消息应用1210可以包括一个或多个模块,诸如管理聊天界面和/或其他用户界面的用户交互模块1218,和/或这些模块可以在与设备1200通信的其他应用或设备中实施。用户交互模块1218和/或一个或多个其他应用1212可以例如响应于用户输入来提供显示的用户界面以显示可选择的选项或控件,以及基于所选择的选项的数据。

其他应用1212可以包括例如图像编辑应用、媒体显示应用、通信应用、网络托管引擎或应用等。这里公开的一种或多种方法可以例如作为可以在任何类型的计算设备上运行的独立计算机程序、作为具有网页的网络应用、作为在移动计算设备上运行的移动应用(“app”)等在若干环境和平台中操作。

在各种实施例中,其他应用1212可以包括机器学习应用1230,其可以用于在这里描述的各种实施例中。例如,机器学习应用1230可以利用贝叶斯(bayesian)分类器、支持向量机、神经网络或其他学习技术。在一些实施例中,机器学习应用1230可以包括训练模型、推理引擎和数据。在一些实施例中,数据可以包括训练数据,例如,用于生成训练模型的数据。例如,训练数据可以包括任何类型的数据,诸如文本、图像、音频、视频等。训练数据可以从任何来源获得,例如,专门标记用于训练的数据存储库、提供许可以用作训练数据的数据等。在一个或多个用户允许使用他们各自的用户数据来训练训练模型的实施例中,训练数据可以包括这样的用户数据。在用户允许使用他们各自的用户数据的实施例中,数据可以包括允许的数据,诸如图像(例如,照片或其他用户生成的图像)、通信(例如,电子邮件;诸如文本消息的聊天数据、语音、视频等)、文档(例如电子表格、文本文档、演示文稿等)。

在一些实施例中,数据可以包括所收集的数据,诸如地图数据、图像数据(例如,卫星图像、俯视图像等)、游戏数据等。在一些实施例中,训练数据可以包括为训练的目的而生成的综合数据,诸如不是基于正在训练的上下文中的用户输入或活动的数据,例如,从模拟对话生成的数据、计算机生成的图像等。在一些实施例中,机器学习应用1230不包括数据。例如,在这些实施例中,训练模型可以例如在不同设备上生成,并且作为机器学习应用1230的一部分提供。在各种实施例中,训练模型可以被提供为包含模型结构或形式以及关联权重的数据文件。推理引擎可以读取训练模型的数据文件,并基于训练模型中指定的模型结构或形式实施具有节点连接、层和权重的神经网络。

机器学习应用1230还包括训练模型。在一些实施例中,训练模型可包括一个或多个模型形式或结构。例如,模型形式或结构可以包括任何类型的神经网络,例如线性网络、实施多个层(例如,输入层和输出层之间的“隐藏层”,每个层是线性网络)的深度神经网络、卷积神经网络(例如,将输入数据分割或划分成多个部分或图块(tiles)的网络,使用一个或多个神经网络层分别处理每个图块,并聚合来自每个图块的处理的结果)、序列到序列的神经网络(例如,将序列数据作为输入的网络,诸如(例如聊天消息中的)句子中的单词、视频中的帧等,并产生结果序列作为输出),等等。模型形式或结构可以指定各个节点之间的连接以及节点到层的组织。例如,第一层(例如,输入层)的节点可以接收数据作为输入数据或应用数据。例如,当使用训练模型用于图像分析时,这样的数据可以包括例如每个节点一个或多个像素。后续中间层可以按照模型形式或结构中指定的连接性接收先前层的节点的输出作为输入。这些层也可以称为隐藏层。最后一层(例如,输出层)产生机器学习应用1230的输出。例如,取决于特定的训练模型,输出可以是图像的一组标签、允许将图像与其他图像进行比较的图像的表示(例如,图像的特征向量)、响应于输入句子的输出句子、输入数据的一个或多个类别等。在一些实施例中,模型形式或结构还指定每层中的节点的数量和/或类型。

在不同的实施例中,训练模型可包括多个节点,按照模型结构或形式被布置成层。在一些实施例中,节点可以是没有内存的计算节点,例如,被配置为处理一个单元的输入以产生一个单元的输出。由节点执行的计算可以包括,例如,将多个节点输入中的每一个节点输入乘以权重,获得加权和,以及利用偏置或截距值(interceptvalue)调整加权和以产生节点输出。在一些实施例中,由节点执行的计算还可以包括将阶梯/激活函数应用于调整后的加权和。在一些实施例中,阶梯/激活函数可为非线性函数。在各种实施例中,这种计算可以包括诸如矩阵乘法之类的操作。在一些实施例中,例如,使用多核处理器的多个处理器核、使用gpu的单独的处理单元、或专用神经电路,多个节点的计算可以并行执行。在一些实施例中,节点可以包括内存,例如,可以能够在处理后续输入时存储和使用一个或多个较早的输入。例如,具有内存的节点可以包括长短期内存(longshort-termmemory,lstm)节点。lstm节点可以使用内存来维持允许节点像有限状态机(finitestatemachine,fsm)那样工作的“状态”。具有这种节点的模型可用于处理序列数据,例如句子或段落中的单词、视频中的帧、语音或其他音频等。

在一些实施例中,训练模型可以包括用于单独的节点的嵌入或权重。例如,模型可以被初始化为被组织成由模型形式或结构指定的层的多个节点。在初始化时,可以将相应的权重应用于按照模型形式连接的每对节点之间的连接,例如,神经网络的连续层中的节点。例如,可以随机分配相应的权重,或者将其初始化为默认值。然后可以例如使用以上描述的数据训练模型以产生结果。

例如,训练可以包括应用监督学习技术。在监督学习中,训练数据可以包括多个输入(例如,一组图像)和每个输入的相应预期输出(例如,每个图像的一个或多个标签)。基于模型的输出与预期输出的比较,例如,以提高在提供类似输入时模型产生预期输出的概率的方式,自动调整权重的值。

在一些实施例中,训练可以包括应用无监督学习技术。在无监督学习中,可以仅提供输入数据,并且可以训练模型以区分数据,例如,将输入数据聚类成多个组,其中每个组包括以某种方式相似的输入数据。例如,可以训练模型以区分图像,使得模型将抽象图像(例如,合成图像、人工图像等)与自然图像(例如,照片)区分开。

在另一示例中,使用无监督学习训练的模型可以基于输入句子中的单词的使用来对单词进行聚类。在一些实施例中,可以使用无监督学习来产生知识表示,例如,该知识表示可以由机器学习应用1230使用。在各种实施例中,训练模型包括与模型结构相对应的一组权重或嵌入。在省略数据的实施例中,机器学习应用1230可以包括基于例如通过机器学习应用1230的开发者、通过第三方等的先前训练的训练模型。在一些实施例中,训练模型可以包括例如从提供权重的服务器下载的一组固定的权重。

机器学习应用1230还包括推理引擎。推理引擎被配置为将训练模型应用于数据(诸如应用数据),以提供推理。在一些实施例中,推理引擎可以包括将由处理器1202运行的软件代码。在一些实施例中,推理引擎可以指定使处理器1202能够应用训练模型的(例如,用于可编程处理器、用于现场可编程门阵列(fpga)等的)电路配置。在一些实施例中,推理引擎可以包括软件指令、硬件指令或组合。在一些实施例中,推理引擎可以提供应用编程接口(applicationprogramminginterface,api),其可以由操作系统1208和/或其他应用1212用来调用推理引擎,例如,以将训练模型应用于应用数据,从而生成推理。

机器学习应用1230可以提供若干技术优势。例如,当基于无监督学习生成训练模型时,训练模型可以由推理引擎应用以从例如应用数据的输入数据产生知识表示(例如,数字表示)。例如,用于图像分析的训练模型可以产生具有比输入图像(例如,10mb)小的数据大小(例如,1kb)的图像的表示。在一些实施例中,这样的表示可以有助于降低生成输出(例如,标签、分类、描述图像的句子等)的处理成本(例如,计算成本、内存使用等)。在一些实施例中,可以提供这样的表示作为不同的机器学习应用的输入,该机器学习应用从推理引擎的输出产生输出。在一些实施例中,机器学习应用1230生成的知识表示可以例如通过网络被提供给进行进一步处理的不同的设备。在这样的实施例中,提供知识表示而不是图像可以提供技术优势,例如,以降低的成本实现更快的数据传输。在另一示例中,被训练用于聚类文档的模型可以从输入文档产生文档聚类。文档聚类可以适合于进一步处理(例如,确定文档是否与主题相关、确定文档的分类类别等)而无需访问原始文档,因此节省了计算成本。

在一些实施例中,机器学习应用1230可以以离线方式实施。在这些实施例中,训练模型可以在第一阶段生成,并且作为机器学习应用1230的一部分提供。在一些实施例中,机器学习应用1230可以以在线方式实施。例如,在这样的实施例中,调用机器学习应用1230的应用(例如,操作系统1208、一个或多个其他应用1212)可以利用机器学习应用1230产生的推理,例如,向用户提供推理,并且可以生成系统日志(例如,如果用户允许,则该日志为用户基于推理采取的动作;或者如果用作进一步处理的输入,则该日志为进一步处理的结果)。系统日志可以周期性地产生,例如,每小时、每月、每季度等,并且可以在用户许可的情况下用于更新训练模型,例如,更新训练模型的嵌入。

在一些实施例中,机器学习应用1230可以以能够适应其上运行机器学习应用1230的设备1200的特定配置的方式来实施。例如,机器学习应用1230可以确定利用例如处理器1202的可用计算资源的计算图。例如,如果机器学习应用1230被实施为多个设备上的分布式应用,则机器学习应用1230可以以优化计算的方式确定要在单独的设备上执行的计算。在另一示例中,机器学习应用1230可以确定处理器1202包括具有特定数量(例如,1000)的gpu核的gpu,并相应地实施推理引擎(例如,作为1000个单独的进程或线程)。

在一些实施例中,机器学习应用1230可实施训练模型的全体。例如,训练模型可以包括多个训练模型,每个训练模型适用于相同的输入数据。在这些实施例中,机器学习应用1230可以例如基于可用计算资源、先前推理的成功率等来选择特定的训练模型。在一些实施例中,机器学习应用1230可以运行推理引擎,使得多个训练模型被应用。在这些实施例中,机器学习应用1230可以例如使用对应用的每个训练模型的各个输出进行评分的投票技术、或者通过选择一个或多个特定的输出,组合来自应用的各个模型的输出。进一步,在这些实施例中,机器学习应用可以将时间阈值(例如,0.5ms)应用于应用的各个训练模型,并且仅利用在时间阈值内可用的那些单独的输出。可以不利用(例如丢弃)在时间阈值内未接收的输出。例如,在例如通过操作系统1208或一个或多个应用1212来调用机器学习应用1230时,当时间限制被指定,这样的方法可能是合适的。

在不同的实施例中,机器学习应用1230可以产生不同类型的输出。例如,机器学习应用1230可以提供表示或聚类(例如,输入数据的数字表示)、标签(例如,用于包括图像、文档等的输入数据)、短语或句子(例如,描述图像或视频,适合用作对输入句子的响应等)、图像(例如,由机器学习应用1230响应于输入而生成)、音频或视频(例如,响应于输入视频,机器学习应用1230可以产生具有特定应用效果的输出视频,例如,当使用来自漫画书或特定艺术家等的训练数据训练训练模型时,以漫画书或特定艺术家的风格呈现输出视频)。在一些实施例中,机器学习应用1230可以基于由例如操作系统1208或一个或多个应用1212的调用应用所指定的格式来产生输出。在一些实施例中,调用应用可以是另一个机器学习应用。例如,这样的配置可以用于生成的对抗网络,其中使用来自机器学习应用1230的输出来训练调用机器学习应用,反之亦然。

内存1204中的任何软件可替代地存储在任何其他合适的存储位置或计算机可读介质上。此外,内存1204(和/或其他连接的存储设备)可以存储一个或多个消息、一个或多个分类标准、电子百科全书、词典、辞典、消息数据、语法、用户偏好和/或在这里描述的特征中使用的其他指令和数据。内存1204和任何其他类型的存储(磁盘、光盘、磁带或其他有形介质)可以被认为是“存储”或“存储设备”。

i/o接口1206可以提供使服务器设备1200与其他系统和设备接合的功能。接口设备可以被包括作为设备1200的一部分,或者可以与设备1200分开并通信。例如,网络通信设备、存储设备(例如,内存和/或数据库106)和输入/输出设备可以通过i/o接口1206通信。在一些实施例中,i/o接口可以连接到诸如输入设备(键盘、指点设备、触摸屏、麦克风、相机、扫描仪、传感器等)和/或输出设备(显示设备、扬声器设备、打印机、电机等)的接口设备。

可以连接到i/o接口1206的接合的设备的一些示例可以包括可用于显示内容(例如图像、视频)的一个或多个显示设备1220,和/或如这里描述的输出应用的用户界面。显示设备1220可以经由本地连接(例如,显示总线)和/或经由网络连接而连接到设备1200,并且可以是任何合适的显示设备。显示设备1220可以包括任何合适的显示设备,诸如lcd、led或等离子显示屏、crt、电视、监视器、触摸屏、3d显示屏或其他视觉显示设备。例如,显示设备1220可以是在移动设备上提供的平面显示屏、在护目镜设备中提供的多个显示屏、或者用于计算机设备的监视屏。

i/o接口1206可以接合至其他输入和输出设备。一些示例包括可以捕获图像的一个或多个相机。一些实施例可以提供用于捕获声音的麦克风(例如,作为捕获图像的一部分,语音命令等)、用于输出声音的音频扬声器设备、或其他输入和输出设备。

为了便于说明,图12示出了处理器1202、内存1204、i/o接口1206中的每一个的一个框,并示出了软件框1208、1210和1212。这些框可以表示一个或多个处理器或处理电路、操作系统、内存、i/o接口、应用和/或软件模块。在其他实施例中,设备1200可以不具有所示的所有组件和/或可以具有包括其他类型的元件的其他元件来代替或补充这里所示的那些元件。虽然一些组件被描述为执行如这里的一些实施例中所描述的框和操作,但是环境100、设备1200、类似系统或与这种系统相关联的任何合适的处理器的任何合适的组件或组件的组合可以执行描述的框和操作。

这里描述的方法可以通过可在计算机上运行的计算机程序指令或代码来实施。例如,代码可以由一个或多个数字处理器(例如,微处理器或其他处理电路)实施,并且可以存储在包括非暂时性计算机可读介质(例如,存储介质)的计算机程序产品上,非暂时性计算机可读介质诸如磁、光、电磁或包括半导体或固态内存的半导体存储介质、磁带、可移动计算机磁盘、随机存取存储器(ram)、只读存储器(rom)、闪存,刚性磁盘、光盘、固态内存驱动等。程序指令也可以包含在或提供为电子信号,例如以从服务器(例如,分布式系统和/或云计算系统)传送的软件即服务(softwareasaservice,saas)的形式提供。可替代地,一个或多个方法可以用硬件(逻辑门等)或硬件和软件的组合来实施。示例硬件可以是可编程处理器(例如,现场可编程门阵列(fpga)、复杂可编程逻辑设备)、通用处理器、图形处理器、专用集成电路(asic)等。一个或多个方法可以作为在系统上运行的应用的一部分或组件来执行,或者作为与其他应用和操作系统一起运行的应用或软件来执行。

尽管已经关于特定实施例进行了描述,但是这些特定实施例仅是说明性的而非限制性的。示例中示出的概念可以应用于其他示例和实施例。

在这里讨论的某些实施例可以收集或使用关于用户的个人信息(例如,用户数据、关于用户的社交网络的信息、用户的位置和时间、用户的生物计量信息、用户的活动和人口统计信息)的情况下,向用户提供一个或多个机会来控制是否收集个人信息、是否存储个人信息、是否使用个人信息、以及如何收集、存储和使用关于用户的信息。也就是说,特别是在接收到来自相关用户的明确授权时,这里讨论的系统和方法才会收集、存储和/或使用用户个人信息。另外,某些数据可以在存储或使用之前以一种或多种方式处理,以便移除个人可识别信息。在一些实施例中,可以处理用户的标识,以便不能确定个人可识别信息。作为另一个示例,用户的地理位置可以被泛化到更大的地区,以便不能确定用户的特定位置。

注意,本公开中描述的功能框、操作、特征、方法、设备和系统可以被集成或分成系统、设备和功能框的不同组合,如本领域技术人员所知。可以使用任何合适的编程语言和编程技术来实施特定实施例的例程。可以采用不同的编程技术,诸如,程序或面向对象。例程可以在单个处理设备或多个处理器上运行。虽然步骤、操作或计算可以以特定顺序呈现,但是可以在不同的特定实施例中改变顺序。在一些实施例中,可以同时执行在本说明书中按顺序示出的多个步骤或操作。

以下描述一些示例。

示例1:一种提供建议项目的计算机实施的方法,计算机实施的方法包含:使得聊天界面由第一用户设备显示,其中聊天界面由消息应用生成,并且其中聊天界面被配置为显示聊天对话中的一个或多个消息,其中一个或多个消息由正在通过网络参与聊天对话的多个用户设备提供;使得嵌入式界面与聊天界面相关联地被显示,其中嵌入式界面由第一嵌入式应用提供,第一嵌入式应用与消息应用相关联地至少部分地在第一用户设备上运行;基于接收的数据,确定建议事件已经与第一嵌入式应用相关联地发生,接收的数据指示已经在参与聊天对话的多个用户设备中的一个或多个用户设备中发生了特定事件,其中多个用户设备中的一个或多个用户设备与第一用户设备不同;基于建议事件,获得一个或多个建议响应项目;和使得一个或多个建议响应项目由第一用户设备显示。

示例2:如示例1的计算机实施的方法,其中,特定事件包括以下中的至少一个:由多个用户设备中的一个或多个用户设备的关联的聊天界面接收的用户输入;由多个用户设备中的一个或多个用户设备的关联的嵌入式界面接收的用户输入;和/或在多个用户设备中的一个或多个用户设备上运行的关联的嵌入式应用中发生的嵌入式应用事件。

示例3:如示例1或2的计算机实施的方法,其中,指示特定事件已发生的接收的数据指示以下中的至少一个:在由多个用户设备中的一个或多个用户设备播放的媒体项目中显示的内容特征的类型;在多个用户设备中的一个或多个用户设备的游戏中实现预定义的目标;由参与聊天对话的接收用户设备接收的用户输入,其中,用户输入在接收用户设备上显示的不同的嵌入式界面中被接收;和/或从多个用户设备中的特定用户设备启动嵌入式应用。

示例4:如前述示例中至少一项的计算机实施的方法,其中,特定事件包括由多个用户设备中的一个或多个用户设备的相应用户输入到聊天对话的一个或多个消息,其中基于在一个或多个消息中检测到一个或多个预定义的主题、单词和/或短语中的至少一个来确定建议事件。

示例5:如前述示例中至少一项的计算机实施的方法,其中,建议事件包括以下中的至少一个:在设备处接收用户输入、在程序中的状态改变、数据在设备之间的通信、用户设备通过网络与嵌入式会话或设备的连接、在一个用户设备上在程序之间或者通过网络接收或传输数据、检测媒体数据中的内容特征或其他数据、检测聊天消息中的特定主题、和/或在历史数据中指示的在先前的时间发生的这些事件中的一个或多个事件。

示例6:如前述示例中至少一项的计算机实施的方法,其中,基于建议事件获得一个或多个建议响应项目包括基于以下中的至少一个来确定一个或多个建议响应项目中的至少一个建议响应项目:至少一个建议响应项目与建议事件的一个或多个预定义的关联;利用特定建议事件和响应于特定建议事件的响应输入来训练的模型;和/或在由嵌入式应用提供的游戏中使用的多个规则和目标中的一个或多个规则和目标。

示例7:如前述示例中至少一项的计算机实施的方法进一步包含:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的用户选择的用户输入;和在聊天对话中输出选择的消息,选择的消息与选择的建议响应项目相关联。

示例8:如前述示例中至少一项的计算机实施的方法,其中,一个或多个建议响应项目包括指示用户对建议事件的反应的一个或多个文本消息。

示例9:如前述示例中至少一项的计算机实施的方法进一步包含:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的选择的用户输入;和响应于用户输入,向第一嵌入式应用提供命令,其中命令与选择的建议响应项目相关联,其中命令引起第一嵌入式应用的状态改变,其中状态的改变被指示到参与聊天对话的多个用户设备中的一个或多个其他用户设备。

示例10:如示例9的计算机实施的方法,其中,对第一嵌入式应用的命令包括以下中的至少一个:用于在由第一嵌入式应用实施的游戏中执行动作的第一命令;用于在通过第一嵌入式应用的媒体数据的回放中改变回放位置的第二命令;和/或用于改变由第一嵌入式应用提供的共享对象的第三命令。

示例11:如前述示例中至少一项的计算机实施的方法进一步包含:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的选择的用户输入;和响应于用户输入,提供与选择的建议响应项目相关联的一个或多个命令,其中一个或多个命令包括以下中的至少一个:被提供给第一嵌入式应用的至少一个第一命令;被提供给消息应用的至少一个第二命令;和/或被提供给第一用户设备以使得显示来自在第一用户设备上运行的不同应用的输出信息的至少一个第三命令,其中输出信息包括从与第一用户设备通信的服务器设备接收的信息。

示例12:如前述示例中至少一项的计算机实施的方法进一步包含:接收指示对来自一个或多个建议响应项目的选择的建议响应项目的选择的用户输入;和响应于用户输入,提供与选择的建议响应项目相关联的一个或多个命令,其中一个或多个命令包括以下中的至少一个:第一命令,第一命令响应于确定第二内容项目与在第一用户设备上的嵌入式应用的嵌入式界面中输出的第一内容项目相同,将一个或多个其他用户的第一集合添加到聊天对话,其中第二内容项目被显示在未参与聊天对话的一个或多个用户设备的第一集合上;和/或第二命令,第二命令响应于确定一个或多个其他用户的第二集合已输入与第四内容项目相关联的用户评论,将一个或多个其他用户的第二集合添加到聊天对话,第四内容项目与在第一用户设备上的嵌入式界面中输出的第三内容项目相同,其中第四内容项目被显示在未参与聊天对话的一个或多个用户设备的第二集合上。

示例13:如前述示例中至少一项的计算机实施的方法,其中,一个或多个建议响应项目包括对第一嵌入式应用的一个或多个建议命令、以及要被输出到聊天界面中的聊天对话的一个或多个建议消息,其中当一个或多个建议命令被显示在聊天界面中时,一个或多个建议命令在视觉上与一个或多个建议消息区分开。

示例14:如前述示例中至少一项的计算机实施的方法,其中,一个或多个建议响应项目由以下中的至少一个确定:第一嵌入式应用;消息应用;通过网络与消息应用通信的远程服务器。

示例15:如前述示例中至少一项的计算机实施的方法,其中,第一嵌入式应用是使得在嵌入式界面中显示视频数据的回放的媒体播放器应用,其中嵌入式界面被配置为从控制显示的视频数据的回放的用户接收输入,并且其中一个或多个建议响应项目中的至少一个建议响应项目包括可操作为调整显示的视频数据的回放的一个或多个建议回放命令。

示例16:如前述示例中至少一项的计算机实施的方法,其中,第一嵌入式应用是使得在嵌入式界面中显示游戏数据的游戏应用,其中嵌入式界面被配置为从改变游戏应用的一个或多个状态的用户接收输入,并且其中一个或多个建议响应项目中的至少一个建议响应项目包括可操作为修改游戏应用的至少一个状态的一个或多个建议命令。

示例17:如前述示例中至少一项的计算机实施的方法,其中,第一嵌入式应用是使得在嵌入式界面中显示共享文档的共享文档应用,其中嵌入式界面被配置为从改变共享文档的一个或多个项目的用户接收输入,并且其中一个或多个建议响应项目中的至少一个建议响应项目包括可操作为修改共享文档的一个或多个建议命令。

示例18:如前述示例中至少一项的计算机实施的方法,其中,嵌入式界面被输出在参与聊天对话的多个用户设备的子集上,其中子集包括已经接收到在相关联的聊天界面中的第二用户输入的用户设备,第二用户输入使得用户设备加入由第一嵌入式应用启动的嵌入式会话。

示例19:如前述示例中至少一项的计算机实施的方法,其中,第一嵌入式应用显示输出数据,输出数据是以下中的至少一个:由第一嵌入式应用生成的、和/或从通过网络与第一用户设备连接的服务器接收的。

示例20:一种系统,包含:存储器;和至少一个处理器,至少一个处理器被配置为访问存储器并被配置为执行包含以下的操作:使得聊天界面由第一用户设备显示,其中聊天界面由消息应用生成,并且其中聊天界面被配置为显示聊天对话中的一个或多个消息,其中一个或多个消息由通过网参与聊天对话的多个用户设备络提供;使得嵌入式界面与聊天界面相关联地被显示,其中嵌入式界面由与消息应用相关联地运行的第一嵌入式应用提供,其中第一嵌入式应用至少部分地在第一用户设备上运行;基于以下中的至少一个来确定建议事件已经与第一嵌入式应用的使用相关联地发生:由嵌入式界面接收的用户输入、和/或来自第一嵌入式应用的指示建议事件已经在第一嵌入式应用中发生的事件信息;获得响应于建议事件的一个或多个建议响应项目;和使得一个或多个建议响应项目由第一用户设备显示。

示例21:根据示例20的系统,其中,一个或多个建议响应项目各自可由第一用户设备的第一用户选择,以使消息应用至少以下之一:提供相关联的命令以改变第一嵌入式应用的一个或多个状态;和/或使得由参与聊天对话的多个用户设备在聊天对话中显示相关联的消息。

示例22:示例20或21的系统,其中,确定建议事件已经发生的操作是基于确定多个用户设备中的第二用户设备已经启动了与第一嵌入式应用相对应的第二嵌入式应用以加入为第一嵌入式应用提供的嵌入式会话。

示例23:一种非暂时性计算机可读介质,在暂时性计算机可读介质上存储有软件指令,当软件指令由处理器运行时,软件指令使得处理器执行包括以下的操作:确定建议事件已经与至少部分地在相关联的用户设备上运行的多个相对应的嵌入式应用中的至少一个嵌入式应用的使用相关联地发生,其中每个嵌入式应用与运行在关联用户设备上的消息应用相关联地运行,其中每个消息应用被配置为使关联的聊天界面由关联的用户设备显示,其中关联的聊天界面被配置为在聊天对话中显示一个或多个消息,其中关联的用户设备正在通过网络参与聊天对话;获得响应于建议事件的一个或多个建议响应项目;和使得由相关联的用户设备中的至少一个相关联的用户设备显示一个或多个建议响应项目。

示例24:如示例23的非暂时性计算机可读介质,其中,一个或多个建议响应项目各自可以通过来自至少一个相关联的用户设备的对应用户的用户输入被选择,以实现以下中的至少一个:提供相关联的命令,以改变多个相应嵌入式应用的一个或多个状态;和/或使得由参与聊天对话的相关联的用户设备在聊天对话中显示相关联的消息。

示例25:如示例23或24的非暂时性计算机可读介质,其中,一个或多个状态是一个或多个第二状态,并且其中,确定建议事件已经发生的操作基于以下中的至少一个:由相应嵌入式应用中的至少一个接收到的用户输入,和/或由消息应用中的至少一个接收的、改变相应嵌入式应用的一个或多个第一状态的用户输入。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1