KR102096799B1 - 채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들 - Google Patents

채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들 Download PDF

Info

Publication number
KR102096799B1
KR102096799B1 KR1020197024479A KR20197024479A KR102096799B1 KR 102096799 B1 KR102096799 B1 KR 102096799B1 KR 1020197024479 A KR1020197024479 A KR 1020197024479A KR 20197024479 A KR20197024479 A KR 20197024479A KR 102096799 B1 KR102096799 B1 KR 102096799B1
Authority
KR
South Korea
Prior art keywords
user
embedded
application
chat
interface
Prior art date
Application number
KR1020197024479A
Other languages
English (en)
Other versions
KR20190101492A (ko
Inventor
아담 로드리게즈
렌동 첸
토마스 호른
플로르베라 레이
요한 라우나이
첸-팅 창
빈 주
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20190101492A publication Critical patent/KR20190101492A/ko
Application granted granted Critical
Publication of KR102096799B1 publication Critical patent/KR102096799B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/063Content adaptation, e.g. replacement of unsuitable content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1093In-session procedures by adding participants; by removing participants
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • H04L65/602
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • H04L67/36
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Data Mining & Analysis (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

구현들은 채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들에 관한 것이다. 일부 구현들에서, 방법은, 채팅 인터페이스가 제1 사용자 디바이스에 의해 디스플레이되게 하는 단계를 포함하며, 채팅 인터페이스는 메시징 애플리케이션에 의해 발생된다. 채팅 인터페이스는, 네트워크를 통해 채팅 대화에 참여하는 사용자 디바이스들에 의해 제공되는 메시지들을 채팅 대화에 디스플레이하도록 구성된다. 임베디드 인터페이스는 채팅 인터페이스와 연관되며, 메시징 애플리케이션과 연관된 임베디드 애플리케이션에 의해 디스플레이된다. 제안 이벤트는, 특정 이벤트가 채팅 대화에 참여하는 하나 이상의 다른 사용자 디바이스들에서 발생했다는 것을 표시하는 수신된 데이터에 기반하여, 임베디드 애플리케이션과 연관하여 발생하는 것으로 결정된다. 제안된 응답 아이템들은 제안 이벤트에 기반하여 획득되며, 제안된 응답 아이템들은 제1 사용자 디바이스에 의해 디스플레이된다.

Description

채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들
[0001] 본 출원은 2017년 6월 15일자로 "Suggested Items for Use with Embedded Applications in Chat Conversations"란 명칭으로 출원된 미국 특허 출원 제15/624,638호를 우선권으로 주장하며, 이 특허 출원은 전체가 인용에 의해 본원에 포함된다.
[0002] 디지털 모바일 디바이스들의 인기 및 편리성뿐만 아니라 인터넷 통신들의 광범위한 사용으로 인해, 사용자 디바이스들 간의 통신들을 흔히 볼 수 있게 되었다. 예컨대, 사용자들은 흔히 자신들의 디바이스들을 사용하여, 텍스트 메시지들, 채팅 메시지들, 이메일 등의 전자 메시지들을 다른 사용자들에게 전송한다. 예컨대, 사용자 디바이스들 간의 채팅 대화(chat conversation)에서, 사용자들은 텍스트, 이미지들 및 다른 타입들의 콘텐츠 데이터를 채팅 인터페이스에 포스팅하고(post), 포스팅된 데이터는 채팅 대화에 참여하는 다른 사용자 디바이스들 상에 디스플레이되는 채팅 인터페이스들에 디스플레이된다.
[0003] 본원에서 제공되는 배경기술 설명은 일반적으로 본 개시내용의 맥락을 제시하기 위한 것이다. 본 발명자의 연구는, 이 연구가 본 배경기술 섹션에 기재된 범위뿐만 아니라, 출원 당시 달리 종래 기술로서의 자격을 갖지 않았을 수 있는 설명의 양상들까지, 명시적으로나 묵시적으로나 본 개시내용에 대한 종래 기술로서 인정되지 않는다.
[0004] 본 출원의 구현들은 채팅 대화들을 위한 임베디드 프로그램(embedded program)들 및 인터페이스들에 관한 것이다. 일부 구현들에서, 제안된 아이템(suggested item)들을 제공하기 위한 컴퓨터로 구현되는 방법들은, 채팅 인터페이스가 제1 사용자 디바이스에 의해 디스플레이되게 하는 단계를 포함하며, 채팅 인터페이스는 메시징 애플리케이션에 의해 생성되고, 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지를 디스플레이하도록 구성된다. 하나 이상의 메시지들은 네트워크를 통해 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 제공된다. 방법은, 임베디드 인터페이스(embedded interface)가 채팅 인터페이스와 연관되어 디스플레이되게 하며, 임베디드 인터페이스는 메시징 애플리케이션과 연관하여 제1 사용자 디바이스 상에서 적어도 부분적으로 실행되는 제1 임베디드 애플리케이션에 의해 제공된다. 방법은, 채팅 대화에 참여하고 있는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들에서 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터에 기반하여, 제안 이벤트가 제1 임베디드 애플리케이션과 연관되어 발생했다는 것을 결정하며, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들은 제1 사용자 디바이스와 상이하다. 방법은, 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템(suggested response item)들을 획득하고, 하나 이상의 제안된 응답 아이템들이 제1 사용자 디바이스에 의해 디스플레이되게 한다.
[0005] 방법의 다양한 구현들 및 예들이 설명된다. 예컨대, 일부 구현들에서, 특정 이벤트는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 연관된 채팅 인터페이스에 의해 수신되는 사용자 입력, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 연관된 임베디드 인터페이스에 의해 수신되는 사용자 입력, 및/또는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들 상에서 실행되는 연관된 임베디드 애플리케이션에서 발생하는 임베디드 애플리케이션 이벤트를 포함한다. 일부 구현들에서, 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터는, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들에 의해 플레이되고 있는 미디어 아이템에 디스플레이되는 일정 타입의 콘텐츠 피처(content feature); 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 게임에서의 미리정의된 목표의 달성; 채팅 대화에 참여하는 수신 사용자 디바이스(receiving user device)에 의해 수신되는 사용자 입력 ―사용자 입력은 수신 사용자 디바이스 상에 디스플레이되는 상이한 임베디드 인터페이스에 제공됨―; 및/또는 복수의 사용자 디바이스들 중 특정 사용자 디바이스로부터의 임베디드 애플리케이션의 개시 중 적어도 하나를 표시한다. 일부 구현들에서, 특정 이벤트는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 개별 사용자들에 의해 채팅 대화에 입력되는 하나 이상의 메시지들을 포함하며, 제안 이벤트는 하나 이상의 메시지들에서 하나 이상의 미리정의된 토픽들, 단어들 및/또는 구절들 중 적어도 하나를 검출하는 것에 기반하여, 결정된다.
[0006] 일부 구현들에서, 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하는 것은, 하나 이상의 제안된 응답 아이템들 중 적어도 하나의 제안된 응답 아이템을, 제안 이벤트와 적어도 하나의 제안된 응답 아이템의 하나 이상의 미리정의된 연관들; 특정 제안 이벤트들 및 특정 제안 이벤트들에 대한 응답으로 입력되는 응답들로 트레이닝된 모델; 및/또는 임베디드 애플리케이션에 의해 제공되는 게임에서 사용되는 복수의 규칙들 및 목표들 중 하나 이상의 규칙들 및 목표들 중 적어도 하나에 기반하여 결정하는 것을 포함한다. 일부 구현들에서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 사용자 선택을 표시하는 사용자 입력을 수신하는 단계, 및 채팅 대화에 선택된 메시지를 출력하는 단계를 더 포함하며, 선택된 메시지는 선택되는 제안된 응답 아이템과 연관된다.
[0007] 일부 구현들에서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계; 및 사용자 입력에 대한 응답으로, 선택되는 제안된 응답 아이템과 연관된 하나 이상의 커맨드들을 제공하는 단계를 더 포함하며, 하나 이상의 커맨드들은, 제1 임베디드 애플리케이션에 제공되는 적어도 하나의 제1 커맨드; 메시징 애플리케이션에 제공되는 적어도 하나의 제2 커맨드; 및/또는 제1 사용자 디바이스에 제공되며, 제1 사용자 디바이스 상에서 실행되는 상이한 애플리케이션으로부터의 출력 정보의 디스플레이를 유발하게 하기 위한 적어도 하나의 제3 커맨드 중 적어도 하나를 포함하며, 출력 정보는 제1 사용자 디바이스와 통신하는 서버 디바이스로부터 수신되는 정보를 포함한다.
[0008] 일부 구현들에서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계; 및 사용자 입력에 대한 응답으로, 선택되는 제안된 응답 아이템과 연관된 하나 이상의 커맨드들을 제공하는 단계를 더 포함하며, 하나 이상의 커맨드들은, 제2 콘텐츠 아이템이 제1 사용자 디바이스 상의 임베디드 애플리케이션의 임베디드 인터페이스에서 출력되고 있는 제1 콘텐츠 아이템과 동일하다는 결정에 대한 응답으로, 제1 세트의 하나 이상의 다른 사용자들을 채팅 대화에 추가하기 위한 제1 커맨드 ―제2 콘텐츠 아이템은 채팅 대화에 참여하고 있지 않는 제1 세트의 하나 이상의 사용자 디바이스들 상에 디스플레이됨―; 및/또는 제2 세트의 하나 이상의 다른 사용자들이 제1 사용자 디바이스 상의 임베디드 인터페이스에 출력되고 있는 제3 콘텐츠 아이템과 동일한 제4 콘텐츠 아이템과 연관된 사용자 입력 코멘트(input user comment)들을 갖는다는 결정에 대한 응답으로, 제2 세트의 하나 이상의 다른 사용자들을 채팅 대화에 추가하기 위한 제2 커맨드 ―제4 콘텐츠 아이템은 채팅 대화에 참여하고 있지 않는 제2 세트의 하나 이상의 사용자 디바이스들 상에 디스플레이됨― 중 적어도 하나를 포함한다.
[0009] 일부 예들에서, 하나 이상의 제안된 응답 아이템들은 제안 이벤트에 대한 사용자 반응들을 표시하는 하나 이상의 텍스트 메시지들을 포함할 수 있다. 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계, 및 사용자 입력에 대한 응답으로, 제1 임베디드 애플리케이션에 커맨드를 제공하는 단계를 더 포함할 수 있으며, 커맨드는 선택되는 제안된 응답 아이템과 연관된다. 일부 예들에서, 제1 임베디드 애플리케이션에 대한 커맨드는, 제1 임베디드 애플리케이션에 의해 구현되는 게임에서 액션을 수행하기 위한 제1 커맨드, 제1 임베디드 애플리케이션에 의한 미디어 데이터의 플레이백(playback)에서 플레이백 포지션을 변경하기 위한 제2 커맨드, 및/또는 제1 임베디드 애플리케이션에 의해 제공되는 공유 오브젝트(shared object)를 변경하기 위한 제3 커맨드 중 적어도 하나를 포함한다. 추가적인 예들에서, 하나 이상의 제안된 응답 아이템들은, 제1 임베디드 애플리케이션에 대한 하나 이상의 제안된 커맨드(suggested command)들 및 채팅 인터페이스에서 채팅 대화에 출력될 하나 이상의 제안된 메시지(suggested message)들을 포함하며, 하나 이상의 제안된 커맨드들은 채팅 인터페이스에 디스플레이될 때 하나 이상의 제안된 메시지들과 시각적으로 구별된다. 일부 구현들에서, 하나 이상의 제안된 응답 아이템들은 제1 임베디드 애플리케이션, 메시징 애플리케이션, 및/또는 네트워크를 통해 메시징 애플리케이션과 통신하는 원격 서버 중 적어도 하나에 의해 결정된다.
[0010] 추가적인 예들에서, 제1 임베디드 애플리케이션은 임베디드 인터페이스에 비디오 데이터의 플레이백이 디스플레이되게 하는 미디어 플레이어 애플리케이션이며, 임베디드 인터페이스는 디스플레이되는 비디오 데이터의 플레이백을 제어하는 입력을 사용자로부터 수신하도록 구성되며, 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 디스플레이되는 비디오 데이터의 플레이백을 조정하도록 동작하는 하나 이상의 제안된 플레이백 커맨드들을 포함한다. 추가적인 예들에서, 제1 임베디드 애플리케이션은 임베디드 인터페이스에 게임 데이터가 디스플레이되게 하는 게임 애플리케이션이며, 임베디드 인터페이스는 게임 애플리케이션의 하나 이상의 상태들을 변경하는 입력을 사용자로부터 수신하도록 구성되며, 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 게임 애플리케이션의 적어도 하나의 상태를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함한다. 추가적인 예들에서, 제1 임베디드 애플리케이션은 임베디드 인터페이스에 공유 문서가 디스플레이되게 하는 공유 문서 애플리케이션이며, 임베디드 인터페이스는 공유 문서의 하나 이상의 아이템들을 변경하는 입력을 사용자로부터 수신하도록 구성되며, 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 공유 문서를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함한다.
[0011] 일부 구현들에서, 임베디드 인터페이스는 채팅 대화에 참여하는, 서브세트의 복수의 사용자 디바이스들 상에 출력될 수 있고, 서브세트는, 사용자 디바이스들이 제1 임베디드 애플리케이션에 의해 개시되는 임베디드 세션에 합류(join)하게 하는 제2 사용자 입력을 연관된 채팅 인터페이스에서 수신한 사용자 디바이스들을 포함한다. 제1 임베디드 애플리케이션은 제1 임베디드 애플리케이션에 의해 생성되는 그리고/또는 네트워크를 통해 제1 사용자 디바이스와 연결되는 서버로부터 수신되는 출력 데이터를 디스플레이할 수 있다.
[0012] 일부 구현들에서, 시스템은 메모리 및 메모리에 액세스하도록 구성된 적어도 하나의 프로세서를 포함하며, 이 적어도 하나의 프로세서는 채팅 인터페이스가 제1 사용자 디바이스에 의해 디스플레이되게 하는 동작을 포함하는 동작들을 수행하도록 구성되며, 채팅 인터페이스는 메시징 애플리케이션에 의해 생성된다. 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되며, 하나 이상의 메시지들은 네트워크를 통해 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 제공된다. 동작들은 임베디드 인터페이스가 채팅 인터페이스와 연관되어 디스플레이되게 하는 동작을 포함하며, 임베디드 인터페이스는 메시징 애플리케이션과 연관하여 실행되는 제1 임베디드 애플리케이션에 의해 제공되며, 제1 임베디드 애플리케이션은 제1 사용자 디바이스 상에서 적어도 부분적으로 실행된다. 동작들은, 임베디드 인터페이스에 의해 수신되는 사용자 입력, 및/또는 제안 이벤트가 제1 임베디드 애플리케이션에서 발생했다는 것을 표시하는, 제1 임베디드 애플리케이션으로부터의 이벤트 정보 중 적어도 하나에 기반하여, 제안 이벤트가 제1 임베디드 애플리케이션의 사용과 연관하여 발생했다는 것을 결정하는 동작을 포함한다. 동작들은, 제안 이벤트에 대한 응답으로 하나 이상의 제안된 응답 아이템들을 획득하는 동작, 및 제1 사용자 디바이스에 의해 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 동작을 포함한다.
[0013] 시스템의 다양한 구현들 및 예들이 설명된다. 예컨대, 일부 구현들에서, 하나 이상의 제안된 응답 아이템들은 각각, 메시징 애플리케이션이 제1 임베디드 애플리케이션의 하나 이상의 상태를 변경시키기 위한 연관된 커맨드를 제공하게 하도록, 그리고/또는 연관된 메시지가 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 채팅 대화에 디스플레이되게 하도록, 제1 사용자 디바이스의 제1 사용자에 의해 선택가능하다. 일부 구현들에서, 제안 이벤트가 발생했다는 것을 결정하는 동작은, 복수의 사용자 디바이스들 중 제2 사용자 디바이스가 제1 임베디드 애플리케이션에 해당하는 제2 임베디드 애플리케이션을 개시하여, 제1 임베디드 애플리케이션에 제공되는 임베디드 세션에 합류했다는 것을 결정하는 것에 기반할 수 있다.
[0014] 일부 구현들에서, 비-일시적 컴퓨터 판독가능 매체에는 소프트웨어 명령들이 저장되어 있으며, 이 소프트웨어 명령들은, 프로세서에 의해 실행될 때, 프로세서가 동작들을 수행하게 한다. 동작들은, 연관된 사용자 디바이스들 상에서 적어도 부분적으로 실행되는 복수의 대응하는 임베디드 애플리케이션들 중 적어도 하나의 임베디드 애플리케이션의 사용과 연관하여 제안 이벤트가 발생되었다는 것을 결정하는 동작을 포함하며, 각각의 임베디드 애플리케이션은 연관된 사용자 디바이스 상에서 실행되는 메시징 애플리케이션과 연관하여 실행된다. 각각의 메시징 애플리케이션은 연관된 채팅 인터페이스가 연관된 사용자 디바이스에 의해 디스플레이되게 하도록 구성되며, 연관된 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되며, 연관된 사용자 디바이스들은 네트워크를 통해 채팅 대화에 참여한다. 동작들은, 제안 이벤트에 대한 응답으로 하나 이상의 제안된 응답 아이템들을 획득하는 동작, 및 연관된 사용자 디바이스들 중 적어도 하나의 연관된 사용자 디바이스에 의해 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 동작을 포함한다.
[0015] 컴퓨터 판독가능 매체의 일부 구현들에서, 하나 이상의 제안된 응답 아이템들은 각각, 복수의 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들을 변경시키기 위한 연관된 커맨드를 제공하기 위한, 그리고/또는 채팅 대화에 참여하는 연관된 사용자 디바이스들에 의해 채팅 대화에 연관된 메시지가 디스플레이되게 하기 위한, 적어도 하나의 연관된 사용자 디바이스의 개별 사용자로부터의 사용자 입력에 의해 선택가능하다. 일부 구현들에서, 하나 이상의 상태들은 하나 이상의 제2 상태들이며, 제안 이벤트가 발생했다는 것을 결정하는 동작은, 대응하는 임베디드 애플리케이션들 중 적어도 하나에 의해 수신되는 사용자 입력, 및/또는 대응하는 임베디드 애플리케이션들의 하나 이상의 제1 상태들을 변경하는, 메시징 애플리케이션들 중 적어도 하나에 의해 수신되는 사용자 입력 중 적어도 하나에 기반한다.
[0016] 도 1은, 본원에서 설명되는 하나 이상의 구현들을 위해 사용될 수 있는 예시적 시스템들 및 네트워크 환경의 블록도이다;
[0017] 도 2는, 일부 구현들에 따른, 채팅 대화에 임베딩된(embedded) 프로그램을 제공하기 위한 예시적 방법을 예시하는 흐름도이다;
[0018] 도 3은, 일부 구현들에 따른, 사용자가 임베디드 세션에 합류하는 것을 가능하게 하는 예시적 방법을 예시하는 흐름도이다;
[0019] 도 4는, 일부 구현들에 따른, 제2 디바이스가 임베디드 세션에 합류한 이벤트를 제1 디바이스가 프로세싱하는 예시적 방법을 예시하는 흐름도이다;
[0020] 도 5는, 일부 구현들에 따른, 메시징 애플리케이션과 연관하여 임베디드 애플리케이션을 사용하여 미디어 아이템의 출력을 제공하기 위한 예시적 방법을 예시하는 흐름도이다;
[0021] 도 6은, 일부 구현들에 따른, 메시징 애플리케이션과 연관하여 임베디드 애플리케이션의 출력을 제공하기 위한 또 다른 예시적 방법을 예시하는 흐름도이다;
[0022] 도 7은, 일부 구현들에 따른, 채팅 대화에 임베디드 애플리케이션과 연관하여 제안된 응답 아이템들을 제공하기 위한 예시적 방법을 예시하는 흐름도이다;
[0023] 도 8a-도 8e는, 일부 구현들에 따른, 사용자 디바이스들에 의해 디스플레이되는 예시적 사용자 인터페이스들의 그래픽 표현들이다;
[0024] 도 9a-도 9c는, 일부 구현들에 따른, 사용자 디바이스에 의해 디스플레이되는 추가의 예시적 사용자 인터페이스들의 그래픽 표현들이다;
[0025] 도 10a-도 10d는, 일부 구현들에 따른, 사용자 디바이스들에 의해 디스플레이되는 추가의 예시적 사용자 인터페이스들의 그래픽 표현들이다;
[0026] 도 11은 임베디드 세션에 합류하는 사용자 및 임베디드 애플리케이션의 개시를 포함하는 예시적 시퀀스의 개략적 예시이다; 그리고
[0027] 도 12는 본원에서 설명되는 하나 이상의 구현들을 위해 사용될 수 있는 예시적 디바이스의 블록도이다.
[0028] 본원에서 설명된 하나 이상의 구현들은 채팅 대화들을 위한 임베디드 프로그램들 및 인터페이스들에 관한 것이다. 다양한 구현들에서, 제1 임베디드 애플리케이션은 제1 메시징 애플리케이션에 의해 제공되고 제1 사용자 디바이스 상에 디스플레이되는 제1 채팅 인터페이스에서 사용자 입력에 의해 개시될 수 있다. 제1 채팅 인터페이스는 제1 사용자로부터 사용자 입력을 수신하고, 네트워크를 통해 채팅 대화에 참여하고 개별적인 채팅 사용자와 연관된 하나 이상의 다른 사용자 디바이스들로부터 수신된 메시지들을 디스플레이하도록 구성된다. 다른 사용자 디바이스들은 임베디드 애플리케이션과 연관된 임베디드 세션에 연결될 수 있으며, 여기서 다른 디바이스들의 사용자들은 멤버 사용자들로서 지정된다.
[0029] 예컨대, 일부 구현들에서, 임베디드 세션이 활성이라는 것을 표시하는 통지가 채팅 대화에서 다른 채팅 디바이스들에 제공될 수 있다. 다른 채팅 디바이스들의 채팅 사용자들은 그들의 디바이스들이 임베디드 세션에 합류하여 멤버 디바이스가 되게 하기 위해 그들의 사용자 디바이스들에 입력을 제공할 수 있다(예컨대, 그들의 디바이스들의 채팅 인터페이스들에 디스플레이되는 합류 제어부를 선택할 수 있다). 채팅 사용자들의 채팅 아이덴티티들은 임베디드 애플리케이션에 제공되어, 임베디드 애플리케이션에서 사용될 수 있다.
[0030] 제1 임베디드 애플리케이션은 임베디드 인터페이스가 예컨대 채팅 인터페이스의 일부로서, 채팅 인터페이스의 내부에 또는 근처 등에 채팅 인터페이스와 연관하여 사용자 디바이스에 의해 디스플레이되게 할 수 있다. 임베디드 인터페이스는 예컨대 디스플레이된 인터페이스 엘리먼트들, 키보드, 다른 입력 디바이스 등의 선택을 통해 사용자 장치의 연관된 사용자로부터 사용자 입력을 수신할 수 있고, 입력은 제1 임베디드 애플리케이션에 제공된다. 제1 임베디드 애플리케이션은 또한, 제1 메시징 애플리케이션 및 채팅 인터페이스와 통신하여, 예컨대 채팅 메시지들로부터 데이터를 수신하고 채팅 인터페이스 및/또는 채팅 대화에서 디스플레이되는 채팅 메시지들을 출력할 수 있다. 제1 임베디드 애플리케이션은 예컨대 제1 메시징 애플리케이션을 통해 임베디드 세션에 합류한 다른 멤버 디바이스들과 통신할 수 있으며, 여기서 다른 디바이스들은 개별적인 임베디드 애플리케이션들 및 메시징 애플리케이션들과 연관될 수 있다. 제1 임베디드 애플리케이션은 제1 메시징 애플리케이션 및 제1 메시징 애플리케이션과 통신하는 하나 이상의 서버들과 통신할 수 있다. 임베디드 애플리케이션 또는 다른 연결된 디바이스들(예컨대, 서버)에서 발생하는 이벤트들의 표시들은 채팅 인터페이스에서 (예컨대 그 표시들이 채팅 사용자들에 의해 가시적이도록 채팅 대화에서) 디스플레이될수 있고 그리고/또는 임베디드 인터페이스에서 디스플레이될 수 있다.
[0031] 다양한 타입들의 임베디드 애플리케이션들, 예컨대 미디어 아이템들(비디오들, 이미지들, 오디오 세그먼트들 등)을 플레이하기 위한 임베디드 미디어 플레이어 애플리케이션들, 게임 데이터를 출력하기 위한 임베디드 게임 애플리케이션들, 콘텐츠 문서들(예컨대, 아이템 리스트들, 스프레드시트들 등)을 출력하기 위한 임베디드 애플리케이션들, 예약들 또는 여행 일정들을 생성 및 출력하기 위한 임베디드 애플리케이션들 등이 사용될 수 있다. 일부 구현들에서, 임베디드 애플리케이션들은 임베디드 애플리케이션들의 개시가 채팅 인터페이스에서 선택될 때 제1 사용자 디바이스상에 다운로드되어 실행될 수 있다. 일부 구현들에서, 임베디드 애플리케이션들은 임베디드 방식으로 디스플레이된 출력을 제공하도록, 예컨대 메시징 애플리케이션의 채팅 인터페이스와 연관하여 임베디드 인터페이스에서 출력을 디스플레이하도록 구성되거나 출력 프로세싱될 수 있는 표준 독립형 애플리케이션들일 수 있다.
[0032] 다양한 다른 피처들이 설명된다. 예컨대, 일부 구현들에서, 제안된 응답 아이템들은 메시징 애플리케이션 또는 임베디드 애플리케이션에 의해 생성 또는 획득될 수 있고, 채팅 인터페이스 또는 임베디드 인터페이스에서 디스플레이될 수 있다. 일부 제안된 응답 아이템들은, 사용자 입력에 의해 선택될 때, 임베디드 애플리케이션, 메시징 애플리케이션 또는 제1 사용자 디바이스에 하나 이상의 제안된 커맨드들을 제공할 수 있다. 일부 제안된 응답 아이템들은, 사용자 입력에 의해 선택될 때, 하나 이상의 제안된 메시지들을 채팅 인터페이스, 예컨대 채팅 대화에 제공할 수 있다. 제안된 응답 아이템들은 임베디드 애플리케이션, 메시징 애플리케이션 및/또는 다른 연결된 디바이스들에서 발생하는 제안 이벤트들에 기반하여 결정되어, 사용자에게 관련한 제안된 입력 옵션들을 제공할 수 있다.
[0033] 다양한 구현들에서, 피처들은 임베디드 세션에서 개별 사용자 상황들 (예컨대, 사용자 역할들)이 멤버 사용자들에 할당되는 것, 예컨대 게임에서 플레이어 역할 또는 관찰자 역할이 미디어 아이템 플레이백의 제어 사용자에 할당되는 것 등을 포함할 수 있다. 일부 예들에서, 임베디드 애플리케이션은 미디어 아이템의 첫 번째 플레이백 동안 임베디드 인터페이스에서 사용자 코멘트들을 수신할 수 있고, 첫 번째 플레이백의 시간에 채팅 대화에 참여한 채팅 사용자들에 대한 미디어 아이템의 추후 두 번째 플레이백 동안 임베디드 인터페이스에서 그 사용자 코멘트들을 디스플레이할 수 있다. 임베디드 애플리케이션들의 디스플레이된 출력 데이터는 특정 임베디드 세션의 멤버 디바이스들 간에 동기화될 수 있다. 예컨대, 하나의 멤버 디바이스에 대한 사용자 입력에 의해 조정된 플레이백 포지션은 다른 멤버 디바이스들이 연관된 임베디드 인터페이스들에서 플레이백 포지션들을 조정하게 한다. 봇(bot)들은 채팅 인터페이스에 제공될 수 있으며, 임베디드 애플리케이션들과 인터페이싱할 수 있으며, 예컨대 임베디드 애플리케이션들을 개시하여 사용자 입력 등에 의해 선택된 콘텐츠 아이템들을 프로세싱할 수 있다.
[0034] 본원에서 설명된 하나 이상의 특징들은 다수의 사용자 디바이스들이 참여하는 채팅 대화의 맥락에서 사용자들이 임베디드 애플리케이션들과 상호작용하는 것을 가능하게 한다. 또한, 다수의 채팅 사용자들은 임베디드 애플리케이션에서 상호작용할 수 있다. 피처들은, 채팅 사용자들이 채팅 인터페이스를 종료하지(exit) 않고도, 채팅 사용자들이 채팅 대화에서 애플리케이션들의 기능들 및 출력을 공유하게 허용하여, 별개의 애플리케이션의 인터페이스를 디스플레이할 수 있다. 따라서, 채팅 메시지들은 임베디드 애플리케이션으로부터의 출력의 디스플레이와 동시에 채팅 인터페이스에 입력되어 디스플레이될 수 있으며, 이에 따라 채팅 사용자들이 애플리케이션의 동시 사용에서 연결되는 것처럼 느끼게 할 수 있다. 이러한 피처들은 임베디드 애플리케이션들을 사용하여 임베디드 세션에서 채팅 사용자들 간에 그룹 공유 표현 경험들을 가능하게 한다. 일부 예들에서, 비디오와 같은 미디어 아이템을 플레이하는 임베디드 세션에서, 피처들은 채팅 사용자들이 비디오들을 함께 시청하고 채팅 대화에서 비디오에 대해 코멘트하는 것을 가능하게 한다. 만일 제1 채팅 사용자가 현재 비디오를 시청하고 있는 중이면, 그 대화에 참여하고 있는 제2 채팅 사용자는 유사한 물리적 환경에서 텔레비전을 함께 보면서 소파에 앉아있는 것과 유사하게 제1 채팅 사용자와 비디오를 시청할 수 있는 옵션을 갖는다. 이러한 공유 환경(shared experience)에서, 사용자들 둘 모두는 플레이백을 제어하고, 시청할 미디어 아이템들의 플레이리스트를 제어하며, 비디오의 피처들 및 이벤트들에 대해 채팅하며 그리고/또는 비디오 피드에 좋아요를 포스팅할 수 있다.
[0035] 임베디드 애플리케이션과 채팅 인터페이스 간의 통신은 채팅 및 애플리케이션 기능들의 강력하고 효율적인 통합을 허용한다. 예컨대, 임베디드 애플리케이션은 이벤트들 또는 통지들을 메시지 애플리케이션에 전송할 수 있고 메시지 애플리케이션은 채팅 사용자들의 채팅 대화 및 채팅 인터페이스들에 이벤트들 또는 통지들을 디스플레이할 수 있으며, 따라서 임베디드 세션에 현재 참여하고 있지 않은 채팅 사용자들이 볼 수 있다. 이는 임베디드 세션들내에서 이벤트들의 발생에 대한 관여, 기억 및 인식을 개선할 수 있다. 유사하게, 채팅 인터페이스들 및 채팅 대화에 입력된 채팅 메시지들은 임베디드 애플리케이션에 입력될 수 있으며, 따라서 임베디드 애플리케이션이 채팅 인터페이스 및 채팅 대화로부터의 커맨드들 및 메시지들에 응답하는 것이 허용될 수 있다.
[0036] 채팅 인터페이스와 연관하여 이러한 임베디드 애플리케이션들을 사용하는 것은 채팅 사용자들이 서로 상호작용하는 것을 허용하고 사용자 입력이 감소되고 시간이 단축된 임베디드 애플리케이션이 채팅 인터페이스와 애플리케이션을 사용할 때 상호작용하는 것을 허용하여, 따라서 그렇지 않으면 메시징 애플리케이션으로부터 분리된 애플리케이션들에서 사용자 입력을 프로세싱하고, 디스플레이하며 수신하는데 필요한 디바이스 자원들의 소비를 감소시킬 수 있다. 예컨대, 개시된 피처들은 채팅 인터페이스들 및 애플리케이션 기능들을 사용하여 동시에 다수의 사용자들 간의 통신들을 가능하게 하고 프로세싱하는데 필요한 디바이스 자원들의 소비를 감소시킨다(예컨대, 사용자 디바이스 상의 상이한 애플리케이션들에 대한 상이한 인터페이스들의 디스플레이들을 스위칭하는 것을 감소시키고, 하나의 애플리케이션의 디스플레이된 데이터를 다른 애플리케이션 또는 인터페이스에 복사하고 페스팅(pasting)하는 것을 감소시키며, 애플리케이션들에 입력된 커맨드들 또는 데이터의 반복을 감소시키는 식이다). 또한, 임베디드 애플리케이션들은 채팅 인터페이스 내의 선택들에 기반하여 사용자 디바이스에 끊김없게(seamlessly) 다운로드되어 설치될 수 있으며, 따라서 추가 다운로드 및 설치 인터페이스들을 제공하는 데 필요한 시스템 자원들을 감소시킨다. 또한, 임베디드 애플리케이션들은 데이터 사이즈가 작을 수 있으며, 예컨대 통신 기능과 및 네트워크 기능, 채팅 인터페이스 기능들 등과 같은 연관된 메시징 애플리케이션의 하나 이상의 기능들을 사용할 수 있으며, 따라서 이러한 기능들 자체를 생략할 수 있다. 이는 특정 애플리케이션 기능들(예컨대, 미디어 아이템들을 플레이하는 기능, 게임 또는 공유 리스트를 제공하는 기능 등)이 완전한 세트의 기능들을 각각 포함하는 독립적으로-실행된 애플리케이션들 보다 더 좁은 대역폭 및 더 작은 저장 자원들을 소비하는 보다 작은 애플리케이션으로 구현되는 것을 허용한다. 일부 구현들에서, 메시징 애플리케이션과 임베디드 애플리케이션 사이에 표준 API가 사용될 수 있으며, 이에 따라 매우 다양한 임베디드 애플리케이션들이 많은 상이한 제공자들에 의해 제공되는 것을 허용할 수 있다.
[0037] 결과적으로, 하나 이상의 설명된 구현들의 기술적 효과는 디바이스-구현 대화들에 참여하고 있는 사용자 디바이스들 간의 대화 통신이, 결과를 획득하기 위해 소비되는 컴퓨테이셔널(computational) 시간 및 자원이 적은 애플리케이션들로부터의 디스플레이된 대화형 피처들과 함께 제공된다는 점이다. 예컨대, 설명된 기법들 및 특징들의 기술적 효과는 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템, 예컨대 채팅 인터페이스 통신과 연관되지 않은 별개의 애플리케이션들에서 애플리케이션 출력을 디스플레이하는 종래 기법들(여기서는, 별개의 애플리케이션을 실행하는데 추가적인 컴퓨테이셔널 자원들이 필요하고, 사용자가 애플리케이션과 채팅 대화들 간을 스위칭하게 하며, 애플리케이션들에 추가적인 입력이 제공되는 것 등)을 사용하는 시스템과 비교하여, 채팅 통신 및 애플리케이션 기능들을 제공하는데 활용되는 시스템 프로세싱 자원들의 소비를 감소시키는 것이다. 다른 예에서, 설명된 기법들 및 특징들의 기술적 효과는 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템, 예컨대 애플리케이션 기능들 및 채팅 사용자들과의 인터페이스를 제공하기 위해 채팅 인터페이스들에서 봇들만을 사용하는 시스템에 의해 활용되는 시스템 프로세싱 자원들의 소비를 감소시키는 것이데, 왜냐하면 이러한 봇들은 채팅 대화에 참여하고 메시지들을 제공하는 다수의 채팅 사용자들을 혼란하게 하여 비효율적인 시스템 자원의 사용(예컨대, 이전에-출력된 메시지들 및 봇들 등에 의해 제공된 출력을 디스플레이하기 위해 사용자들로부터의 커맨드들의 반복된 뷰잉, 스크롤링 및 입력)을 초래하는 출력을 채팅 인터페이스에 제공할 수 있기 때문이다. 따라서, 설명된 기법들 및 특징들의 기술적 효과는 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템과 비교하여 다수의 사용자들로부터의 입력을 수신하는데 활용되는 시스템 프로세싱 자원들의 소비를 감소시키는 것이다.
[0038] 일부 구현들에서, 임베디드 애플리케이션들, 메시징 애플리케이션들 또는 다른 디바이스들에서 발생하는 제안 이벤트들에 대한 응답으로, 제안된 응답 아이템들이 자동적으로 제공될 수 있다. 제안된 응답 아이템들은 제안 이벤트에 대한 커맨드들 또는 메시지들로서 적절하고 이들과 관련이 있다. 예컨대, 제안된 메시지 아이템들은, 마치 사용자가 메시지들을 생성한 것 처럼, 임베디드 애플리케이션 또는 다른 프로그램에서 발생하는 특정 이벤트들(예컨대, 다른 사용자들로부터의 사용자 입력에 기초한 이벤트들, 또는 플레이된 콘텐츠 데이터의 이벤트들)에 대한 반응들로서 채팅 대화에 적절한 메시지들이 디스플레이되게 할 수 있다. 제안된 커맨드 아이템들은 제안된 관련 커맨드들이 임베디드 애플리케이션 또는 다른 프로그램에서의 이벤트들에 대한 응답으로 임베디드 애플리케이션 또는 다른 애플리케이션/디바이스로 전송되게 할 수 있으며, 예컨대 플레이된 미디어 아이템의 피처들의 검출에 대한 응답으로 커맨드가 미디어 플레이백을 변경하게 하며, 게임에서의 상대편 검출 액션에 대한 응답으로 커맨드가 게임 액션을 수행하게 할 수 있는 식이다. 이러한 제안된 아이템들은 애플리케이션들의 이벤트들에 대한 사용자들의 응답들을 결정할 때 더 플렉시블한(flexible) 옵션들을 사용자들에게 제공하며, 그렇지 않으면 애플리케이션의 이벤트에 충분히 응답할 수 없는 사용자에 대한 옵션들을 제공할 수 있다. 예컨대, 메시지 대화 동안 다양한 시간들에, 사용자들은 적절한 커맨드들 또는 메시지들로 이벤트들에 응답하기에 충분한 주의 및/또는 초점을 제공하지 못할 수 있고 그리고/또는 이러한 적절한 커맨드들 또는 메시지들을 생성하기 위해 사용자 디바이스에 상세한 사용자 입력을 제공하지 못할 수 있다. 일부 예들에서, 사용자는 활동을 수행할 수 있거나 또는 적절한 응답들이 가능하지 않거나 사용자가 제공하기에 더 곤란한 환경에서 있을 수 있다.
[0039] 본원에서 설명되는 하나 이상의 특징들은 임베디드 애플리케이션 또는 메시징 애플리케이션의 특정 이벤트들에 대한 응답으로 사용자에게 자동 선택 가능한 제안된 응답 아이템들을 유리하게 제공한다. 제안된 응답 아이템들은 디바이스에서 검출된 이벤트들과 관련이 있다. 이러한 제안된 아이템들의 선택은 사용자가 감소된 사용자 입력 및 감소된 시간을 갖는 이벤트들에 간단하고 신속하게 응답하여 디바이스에 대한 응답들을 구성하는 것을 허용하며, 따라서 그렇지 않으면 가능한 응답들의 큰 세트를 디스플레이하는데 필요할 디바이스 자원들의 소비를 감소시키고 그리고/또는 응답, 탐색, 편집, 또는 완전한 응답들을 구성하고 그리고/또는 그렇지 않으면 전자 디바이스들을 통해 유지되는 대화들에 참여하도록 사용자로부터 추가된 입력을 가능하게 하고 프로세싱하는데 필요한 디바이스 자원들의 소비를 감소시킬 수 있다. 결과적으로, 하나 이상의 설명된 구현들의 기술적 효과는 디바이스 구현 대화들에서 응답들의 생성 및 송신이 결과들을 획득하는데 소비되는 컴퓨테이셔널 시간 및 자원들을 적게 사용하여 달성된다는 것이다. 예컨대, 설명된 기법들 및 특징들의 기술적 효과는 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템, 예컨대 사용자가 전송할 응답들을 특정, 선택, 편집 또는 생성하는데 사용되는, 사용자로부터의 입력을 수신하는데 추가적인 컴퓨테이셔널 자원들이 필요한 이전 기법들을 사용하는 시스템과 비교하여, 메시지 응답들 및 커맨드 응답들을 디스플레이, 생성 및 전송하는데 활용되는 시스템 프로세싱 자원들의 소비를 감소시키는 것이다.
[0040] 설명된 기법들은 추가 장점들을 제공하다. 일부 예들에서, 추가 사용자 입력을 수신하지 않고, 메시징 애플리케이션과 임베디드 애플리케이션 간에 전달된 정보에 기초하여, 사용자 상황들 또는 역할들이 자동적으로 효율적으로 할당될 수 있다. 일부 예들에서, 사용자 커맨드들 및 코멘트들은 서버로 전송될 수 있고, 서버 이벤트들은 사용자가 채팅 인터페이스를 종료하여 사용자 디바이스상에서 별개의 애플리케이션을 실행함으로써 서버에 액세스하지 않고 사용자 디바이스상의 임베디드 애플리케이션에 의해 수신 및 제공될 수 있다. 봇들은 임베디드 애플리케이션들과 함께, 예컨대 임베디드 애플리케이션에 의해 플레이될 콘텐츠 아이템들을 서치하도록 그리고, 사용자가 시스템 자원들을 소비하지 않고, 애플리케이션들의 수동 서치, 선택 및 개시를 수행하도록 사용될 수 있다. 다른 예들에서, 임베디드 애플리케이션에서 이전에 플레이된 콘텐츠 아이템들과 연관하여 사용자들에 의해 이전에 입력된 사용자 코멘트들이 저장될 수 있다. 이러한 저장된 코멘트들은 플레이백이 동일한 채팅 대화(또는 채팅 사용자들의 그룹)에서 발생한 경우에 콘텐츠 아이템들의 나중의 플레이백과 연관하여 디스플레이되며, 따라서 채팅 사용자들이 나중의 플레이백 동안 코멘트들을 재입력하지 않아도 되게 하고 시스템 자원들의 소비를 감소시킬 수 있다. 동기화 기법들은 임베디드 세션의 사용자 디바이스들상에서의 콘텐츠 아이템들의 플레이백이 자동적으로 동기화되고 다수의 사용자들로부터의 입력에 잘 반응하는 것을 허용한다. 이러한 기법들은 추가적인 시스템 자원들을 사용하는 사용자들이 별개의 애플리케이션들을 실행하거나 또는 플레이백 포지션들을 서로에 대해 수동으로 표시하지 않고 채팅 사용자들이 채팅 대화에서의 경험을 공유하는 것을 허용한다.
[0041] 본원에서 논의된 특정 구현들이 사용자들에 관한 개인 정보(예컨대, 사용자 데이터, 사용자의 소셜 네트워크에 관한 정보, 사용자의 로케이션 및 그 로케이션에서의 시간, 사용자의 생체 정보, 사용자의 활동들 및 인구학적 정보)를 수집하거나 사용할 수 있는 상황들에서, 사용자들에게는 정보가 수집되는지 여부, 개인 정보가 저장되는지 여부, 개인 정보가 사용되는지 여부, 그리고 사용자에 관한 정보가 어떻게 수집되고, 저장되고 그리고 사용되는지를 제어하기 위해 하나 이상의 기회들이 제공된다. 즉, 본원에서 논의된 시스템들 및 방법들은 구체적으로 그렇게 수행하기 위해 관련 사용자들로부터 명시적인 권한 부여를 수신할 때 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 예컨대, 사용자에게는 프로그램들 또는 피처들이 그 특정 사용자 또는 프로그램 또는 피처와 관련된 다른 사용자들에 관한 사용자 정보를 수집하는지 여부에 대한 제어가 제공된다. 개인 정보가 수집되어야 하는 각각의 사용자에게는 그 사용자와 관련된 정보 수집에 대한 제어를 허용하고, 정보가 수집되어야 하는지 여부와 정보의 어느 부분들이 수집되어야 하는지에 대한 허용 또는 권한부여를 제공할 하나 이상의 옵션들이 제공된다. 예컨대, 사용자들에게는 통신 네트워크를 통해 하나 이상의 그러한 제어 옵션들이 제공될 수 있다. 더욱이, 특정 데이터는, 개인적으로 식별가능한 정보가 제거되도록, 그 특정 데이터가 저장되거나 또는 사용되기 전에 하나 이상의 방식들로 처리될 수 있다. 일례로서, 사용자의 아이덴티티는 어느 개인 식별가능 정보도 결정될 수 없도록 처리될 수 있다. 다른 예로서, 사용자 디바이스의 지리적 로케이션은 사용자의 특정 로케이션이 결정될 수 없도록 보다 큰 구역으로 일반화될 수 있다.
[0042] 본원에서 참조되는 이미지는 하나 이상의 픽셀 값들 (예컨대, 컬러 값들, 밝기 값들 등)을 갖는 픽셀들을 갖는 디지털 이미지이다. 이미지는 스틸 이미지 또는 단일 이미지일 수 있거나, 또는 일련의 이미지들에 포함된 이미지, 예컨대 비디오 프레임들의 비디오 시퀀스의 프레임, 또는 이미지들의 상이한 타입의 시퀀스 또는 애니메이션의 이미지일 수 있다. 비디오는 다수의 이미지들의 시퀀스를 포함한다. 예컨대, 본원에서 설명된 구현들은 단일 이미지들 또는 정적 이미지들(예컨대, 사진, 이모지 또는 다른 이미지), 비디오들 또는 애니메이팅된 이미지들 (예컨대, 모션을 포함하는 시네마그래프들 또는 다른 애니메이팅된 이미지, 애니메이션 및 오디오를 포함하는 스티커 등)과 함께 사용될 수 있다. 본원에서 참조되는 텍스트는 알파뉴메릭 캐릭터들, 이모지들, 심볼들 또는 다른 캐릭터들을 포함할 수 있다.
[0043] 도 1은 본원에서 설명되는 임베디드 애플리케이션들을 가능하게 하는 메시징 서비스들을 제공하기 위한 예시적인 환경(100)의 블록도를 예시한다. 일부 구현들에서, 자동 보조 에이전트들, 예컨대 봇들이 제공될 수 있다. 예시적인 환경(100)은 메시징 서버(101), 하나 이상의 클라이언트 디바이스들(115a, 115n), 서버(135), 임베디드 애플리케이션 서버(150), 세션 서버(152), 콘텐츠 서버(154), 제안 서버(156) 및 네트워크(140)를 포함한다. 사용자들(125a-125n)은 개별적인 클라이언트 디바이스들(115a, 115n)과 연관될 수 있다. 서버(135)는 예컨대 메시징 서비스들을 제공하는 당사자(party)와 상이한 당사자에 의해 제어되는 제3자 서버일 수 있다. 다양한 구현들에서, 서버(135)는 아래에 더 상세히 설명되는 바와 같은 봇 서비스들을 구현할 수 있다. 일부 구현들에서, 환경(100)은 도 1에 도시된 하나 이상의 서버들 또는 디바이스들을 포함하지 않을 수 있거나 또는 도 1에 도시되지 않은 다른 서버들 또는 디바이스들을 포함할 수 있다. 도 1 및 나머지 도면들에서, 참조 번호 뒤의 문자, 예컨대 "115a"는 특정 참조 번호를 갖는 엘리먼트에 대한 참조를 표현한다. 후속하는 문자가 없는 텍스트의 참조 번호, 예컨대 "115"는 그 참조 번호를 갖는 엘리먼트의 구현들에 대한 일반적인 참조를 표현한다.
[0044] 예시된 구현에서, 메시징 서버(101), 클라이언트 디바이스들(115), 서버(135) 및 서버들(150-156)은 네트워크(140)를 통해 통신가능하게 커플링된다. 다양한 구현들에서, 네트워크(140)는 통상적인 타입의 유선 또는 무선 네트워크일 수 있으며, 스타 구성, 토큰 링 구성 또는 다른 구성들을 포함하는 많은 수의 상이한 구성들을 가질 수 있다. 또한, 네트워크(140)는 LAN(local area network), WAN(wide area network) (예컨대, 인터넷) 및/또는 다수의 디바이스들이 통신할 수 있게 하는 다른 상호 연결된 데이터 경로를 포함할 수 있다. 일부 구현들에서, 네트워크(140)는 예컨대 오프라인 통신(및 후술되는 바와 같은 임베디드 애플리케이션들의 사용)을 가능하게 하는 피어-투-피어 데이터 교환 기법들을 사용하는, 사용자 디바이스들 사이 및/또는 다른 디바이스들 사이의 피어-투-피어 네트워크일 수 있다. 네트워크 통신은 적절한 통신 프로토콜들(예컨대, 클라이언트(사용자) 디바이스와 같은 디바이스들과 서버 간의 양방향 전이중 메시지 통신을 허용하는 웹소켓들)의 사용을 포함할 수 있다. 네트워크(140)는 또한 다양한 상이한 통신 프로토콜들로 데이터를 전송하기 위해 원격통신 네트워크의 일부들에 커플링하거나 이를 포함할 수 있다. 일부 구현들에서, 네트워크(140)는 SMS(Short Messaging Service), MMS(Multimedia Messaging Service), HTTP (Hypertext Transfer Protocol), 직접 데이터 연결, 이메일 등을 통해 데이터를 전송 및 수신하기 위한 Bluetooth® 통신 네트워크들, Wi-Fi® 또는 셀룰러 통신 네트워크를 포함한다. 다른 예에서, 사운드 파들은 디바이스들 간의 데이터 및 상태 교환을 위해 네트워크(140)에서 사용될 수 있다. 비록 도 1이 클라이언트 디바이스들(115), 메시징 서버(101), 서버(135) 및 서버들(150-156)에 커플링된 하나의 네트워크(140)를 예시하지만, 실제로는 하나 이상의 네트워크들(140)이 이들 엔티티들에 커플링될 수 있다.
[0045] 메시징 서버(101)는 프로세서, 메모리 및 네트워크 통신 능력들을 포함할 수 있다. 일부 구현들에서, 메시징 서버(101)는 하드웨어 서버이다. 일부 구현에서, 메시징 서버(101)는 가상화된 환경에 이식될 수 있으며, 예컨대, 메시징 서버(101)는 하나 이상의 다른 가상 머신들을 포함할 수 있는 하드웨어 서버상에서 실행되는 가상 머신일 수 있다. 메시징 서버(101)는 신호 라인(102)을 통해 네트워크(140)에 통신가능하게 커플링된다. 신호 라인(102)은 이더넷, 동축 케이블, 광섬유 케이블 등과 같은 유선 연결이거나 또는 Wi-Fi, 블루투스 또는 다른 무선 기술과 같은 무선 연결일 수 있다. 일부 구현들에서, 메시징 서버(101)는 네트워크(140)를 통해 클라이언트 디바이스들(115a-115n) 중 하나 이상, 서버들(135), 서버들(150-156) 중 하나 이상 및 봇(113)에 데이터를 전송하고 이들로부터 데이터를 수신한다. 일부 구현들에서, 메시징 서버(101)는 사용자(예컨대, 사용자들(125) 중 임의의 사용자)가 다른 사용자들 및/또는 봇과 메시지들을 교환하는 것을 가능하게 하는 클라이언트 기능성을 제공하는 메시징 애플리케이션(103a)을 포함할 수 있다. 메시징 애플리케이션(103a)은 서버 애플리케이션, 클라이언트-서버 애플리케이션의 서버 모듈, 또는 분산형 애플리케이션(예컨대, 하나 이상의 클라이언트 디바이스들(115)상의 대응하는 클라이언트 메시징 애플리케이션(103b)을 가짐)일 수 있다.
[0046] 메시징 서버(101)는 또한 데이터베이스(199)를 포함할 수 있으며, 데이터베이스(199)는 메시징 서버(101)를 통해 교환되는 메시지들, 예컨대 사용자들이 어느 메시징 그룹들(예컨대, 채팅 대화들)에 있는지 그리고 콘텐츠 데이터(비디오 데이터, 이미지들, 그룹 좋아요를 가진 오디오 데이터, 게임 데이터, 콘텐츠 문서들 등)가 어느 메시징 그룹들과 연관되는지를 표시하는 그룹 데이터, 하나 이상의 봇들의 데이터 및/또는 구성, 콘텐츠 분류기(130)에 의해 제공되는 정보 및 하나 이상의 사용자들(125)과 연관된 사용자 데이터를 저장할 수 있으며, 이들 모두는 그러한 데이터를 저장하기 위한 개별적인 사용자로부터의 명시적 허용을 갖는다. 일부 실시예들에서, 메시징 서버(101)는 하나 이상의 보조 에이전트들, 예컨대 봇들(107a 및 111)을 포함할 수 있다. 다른 실시예들에서, 보조 에이전트들은 메시징 서버(101)가 아닌 클라이언트 디바이스들(115a-n)상에서 구현될 수 있다.
[0047] 일부 구현들에서, 메시징 서버(101), 메시징 애플리케이션(103) 및/또는 메시징 애플리케이션과 연관되어 실행되는 임베디드 애플리케이션은 하나의 메시징 그룹(예컨대, 채팅 대화)에서 메시지들을 제공할 수 있고 그리고/또는 메시징 서버(101) (또는 다른 메시징 서버)에 의해 구현되는 하나 이상의 다른 메시징 그룹들(채팅 대화들)에서 메시지들을 전송할 수 있다.
[0048] 메시징 애플리케이션(103a)은 사용자들(125)과 하나 이상의 봇들(105, 107a, 107b, 109a, 109b, 111 및 113) 사이에서 메시지들을 교환할 수 있도록 프로세서에 의해 동작 가능한 코드 및 루틴들일 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a)은 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit)를 포함하는 하드웨어를 사용하여 구현될 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a)은 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수 있다.
[0049] 다양한 구현들에서, 클라이언트 디바이스들(115)과 연관된 개별적인 사용자들이 메시지들의 저장에 대한 동의를 제공 할 때, 데이터베이스(199)는 하나 이상의 클라이언트 디바이스들(115)간에 교환되는 메시지들을 저장할 수 있다. 일부 구현들에서, 클라이언트 디바이스들(115)과 연관된 개별적인 사용자들이 메시지들의 저장에 대한 동의를 제공할 때, 데이터베이스(199)는 하나 이상의 클라이언트 디바이스들(115)과 상이한 디바이스, 예컨대 다른 클라이언트 디바이스, 메시징 서버(101) 및 서버(135) 등상에서 구현되는 하나 이상의 봇들 간에 교환되는 메시지들을 저장할 수 있다. 하나 이상의 사용자들이 동의를 제공하지 않는 구현들에서, 그 사용자들에 의해 수신 및 전송된 메시지들은 저장되지 않는다.
[0050] 일부 구현들에서, 메시지들은 예컨대 메시지의 전송자 및 수신자만이 암호화된 메시지들을 뷰잉할 수 있도록 암호화될 수 있다. 일부 구현들은 사용자들로부터 생성된 암호화된 데이터, 예컨대 메시지들, 코멘트들, 기록된 사용자 액션들 등과 같은 사용자-생성 콘텐츠 데이터를 저장할 수 있다. 사용자-생성 콘텐츠 데이터는 (예컨대, 임베디드 애플리케이션의 로컬 실행시에) 사용자 디바이스상에 그리고 (예컨대, 공유된 임베디드 애플리케이션 및 임베디드 세션에 대해 통신되는 정보를 위해) 서버 시스템상에 국부적으로 암호화될 수 있다. 일부 구현들에서, 메시지들이 저장된다. 일부 구현들에서, 데이터베이스(199)는 하나 이상의 봇들, 예컨대 봇(107a), 봇(111) 등의 데이터 및/또는 구성을 더 저장할 수 있다. 일부 구현들에서, 사용자(125)가 (소셜 네트워크 데이터, 연락처 정보, 이미지들 등과 같은) 사용자 데이터의 저장에 대한 동의를 제공할 때, 데이터베이스(199)는 또한 그러한 동의를 제공한 개별적인 사용자(125)와 연관된 사용자 데이터를 저장할 수 있다.
[0051] 일부 구현들에서, 메시징 서버(101) 및 메시징 애플리케이션(103)은 본원에서 설명된 바와 같이 채팅 대화에 참여하는 하나 이상의 채팅 디바이스들(예컨대, 사용자 디바이스들)상에서 구현될 수 있다.
[0052] 일부 구현들에서, 메시징 애플리케이션(103a/103b)은 사용자(125)가 새로운 봇들을 생성하는 것을 가능하게 하는 사용자 인터페이스를 제공할 수 있다. 이러한 구현들에서, 메시징 애플리케이션(103a/103b)은 사용자-생성 봇들이 메시징 애플리케이션(103a/103b)의 사용자들 간의 채팅 대화들에 포함되는 것을 가능하게 하는 기능성을 포함할 수 있다.
[0053] 서버들(150-156)은 하나 이상의 프로세서들, 메모리 및 네트워크 통신 능력들을 포함할 수 있다. 일부 구현들에서, 서버들은 하드웨어 서버들이다. 신호 라인들(160, 162, 164 및 166)은 서버들(150, 152, 154 및 156)을 각각 네트워크(140)에 연결하며, 이더넷, 동축 케이블, 광섬유 케이블 등과 같은 유선 연결들, 또는 Wi-Fi, 블루투스 또는 다른 무선 기술과 같은 무선 연결들일 수 있다. 일부 구현들에서, 서버들(150-156)은 네트워크(140)를 통해 메시징 서버(101) 및 클라이언트 장치들(115a-115n) 중 하나 이상으로 데이터를 전송하고 이들로부터 데이터를 수신한다. 비록 서버들(150-156)이 개별적인 서버들인 것으로 도시되어 있지만, 서버들(150-156) 중 하나 이상은 환경(100)의 하나 이상의 다른 컴포넌트들, 예컨대 메시징 서버(101), 클라이언트 디바이스(115a), 서버(135) 등에 결합되고 그리고/또는 이들에 포함될 수 있다. 서버들(150-156) 중 일부 또는 전부는 메시징 서버(101)를 관리하는 동일한 당사자에 의해 관리될 수 있거나, 제3자에 의해 관리될 수 있다. 일부 구현들에서, 서버(101, 135 및 150-156)는 서버가 네트워크(140)를 통해 특정 디바이스와 통신할 때 그 특정 디바이스에 대한 원격 서버로 고려될 수 있다. 유사하게, 일부 구현들에서, 클라이언트 디바이스들(115)은 네트워크(140)를 통해 특정 디바이스와 통신하는 경우 그 특정 디바이스로부터 원격에 있는 것으로 고려될 수 있다. 다양한 구현들에서, 서버들(101, 135 및 150-156) 중 임의의 서버의 기능들은 하나 이상의 클라이언트 디바이스들(115)상에서 구현될 수 있다.
[0054] 임베디드 애플리케이션 서버(150)는 신호 라인(160)을 통해 네트워크(140)에 통신가능하게 커플링되고, 디바이스상에의 설치를 위해 디바이스에 의해 요청되는, 본원에서 설명된 바와같은 임베디드 애플리케이션들을 서빙한다. 예컨대, 사용자 디바이스는 운영 시스템 또는 메시징 애플리케이션의 백그라운드 프로세스에서 임베디드 애플리케이션의 다운로드를 요청할 수 있고, 임베디드 애플리케이션 서버(150)는 클라이언트 디바이스에서 임베디드 애플리케이션을 실행하기 위해 데이터를 클라이언트 디바이스에 전송한다. 일부 구현들에서, 임베디드 애플리케이션 서버(150)는 임베디드 애플리케이션을 전체적으로 또는 부분적으로 실행할 수 있고, 하나 이상의 클라이언트 디바이스들에 의해 디스플레이하기 위한 출력 데이터를 임베디드 애플리케이션으로부터 클라이언트 디바이스들로 전송할 수 있다.
[0055] 세션 서버(152)는 신호 라인(162)을 통해 네트워크(140)에 통신가능하게 커플링되며, 일부 구현들에서는, 네트워크(140)에 연결된 클라이언트 디바이스들상에서 실행되는 다수의 임베디드 애플리케이션들(예컨대, 공유된 임베디드 애플리케이션)을 연결하는 임베디드 세션에 참여하는 다수의 클라이언트 디바이스들로부터 그리고 이 다수의 클라이언트 디바이스들로 전송되는 데이터를 핸들링 및 조정하기 위해 사용될 수 있다. 예컨대, 세션 서버(152)는 예컨대 임베디드 세션에서 임베디드 애플리케이션들의 상태들을 동기화하는 것, 세션 서버상에서 실행되는 대응하는 임베디드 애플리케이션에 대한 이벤트들을 결정 및 분배하는 것 등을 포함하여 임베디드 세션을 관리하기 위해 사용될 수 있다. 일부 구현들에서, 세션 서버는 임베디드 세션에 대한 하나 이상의 이벤트들을 결정할 수 있으며, 하나 이상의 이벤트들 중 하나 이상은 세션 서버 또는 세션 서버와 통신하는 다른 서버에서 발생할 수 있다. 예컨대, 이벤트는 서버가 서버에 의해 사용자 디바이스들에 서빙되는 콘텐츠 아이템들과 연관된 사용자 선택, 코멘트들 또는 레이팅들을 수신하는 것을 포함할 수 있고 이러한 콘텐츠 아이템들은 임베디드 세션에서 플레이될 수 있어서, 이벤트는 임베디드 세션에 전달될 수 있다. 일부 구현들에서, 세션 서버(152)는 메시징 서버(101) 또는 환경(100)의 다른 서버에 포함되거나 이와 동일할 수 있다.
[0056] 콘텐츠 서버(154)는 신호 라인(164)을 통해 네트워크(140)에 통신가능하게 커플링되며, 네트워크(140)에 연결된 하나 이상의 디바이스들에 콘텐츠 데이터를 전송하는데 사용될 수 있다. 예컨대, 콘텐츠 데이터는 본원에서 설명되는 바와 같이 클라이언트 디바이스들 상에 임베디드 인터페이스들을 디스플레이하는 임베디드 애플리케이션들에 의한 출력을 위해 제공되는 데이터일 수 있다. 콘텐츠 데이터는 비디오 데이터, 이미지 데이터, 오디오 데이터, 문서 데이터, 웹페이지 데이터, 게임 데이터, 봇 데이터 또는 정보, 지도 데이터 또는 다른 지리적 정보 등을 포함할 수 있다. 콘텐츠 데이터는 상이한 콘텐츠 아이템들 (미디어 아이템들), 예컨대 비디오들 또는 영화들, 이미지들, 게임들, 문서들, 웹 페이지들 등에 포함될 수 있다.
[0057] 제안 서버(156)는 신호 라인(166)을 통해 네트워크(140)에 통신가능하게 커플링되며, 클라이언트 디바이스들에서 사용자들에 의한 디스플레이 및 선택을 위해 메시징 애플리케이션 및/또는 임베디드 애플리케이션들에 대한 응답으로 제안된 응답 아이템들을 결정 및 제공하는데 사용될 수 있다. 예컨대, 클라이언트 디바이스(115)에서 실행되는 메시징 애플리케이션은 서술 정보를 제안 서버(156)에 전송할 수 있으며, 제안 서버(156)는 서술 정보에 대한 응답으로 하나 이상의 제안된 응답 아이템들(본원에서는 또한 "제안된 아이템들", "제안된 입력 아이템들" 또는 "제안된 입력 아이템들"로 지칭됨)을 결정하기 위해 데이터베이스들, 지식 그래프 및/또는 다른 데이터 자원들을 참고할 수 있다. 이러한 제안된 아이템들은 도 7를 참조로 설명된 바와 같이 제안된 커맨드들 및 제안된 메시지일 수 있다. 일부 구현들에서, 제안 서버(156)의 기능들은 메시징 애플리케이션 및/또는 임베디드 애플리케이션 내에 포함될 수 있다.
[0058] 일부 구현들에서, 제안 서버(156) 및/또는 환경(100)의 다른 컴포넌트들은 머신 학습을 사용할 수 있고, 예컨대 제안된 아이템들을 결정하기 위해 기계 학습을 활용하는 머신 학습 모델을 사용할 수 있다. 예컨대, 트레이닝 스테이지에서, 제안 서버 (또는 다른 컴포넌트)는 메시징 애플리케이션 콘텍스트에서 실제 또는 생성된 메시지들의 트레이닝 데이터 (예컨대, 메시지 트레이닝 데이터)를 사용하여 트레이닝될 수 있으며, 이후 추론 스테이지에서 새로운 메시지들 또는 자신이 수신하는 다른 데이터에 대한 제안된 아이템들을 결정할 수 있다. 예컨대, 머신 학습 모델은 사용자 정보를 사용하지 않고 컴퓨터에 의해 자동으로 생성되는 데이터와 같은 합성 데이터를 사용하여 트레이닝될 수 있다. 일부 구현들에서, 머신 학습 모델은 트레이닝을 위해 사용자 데이터를 활용하기 위한 허용들이 메시지 데이터를 제공하는 사용자들로부터 명백하게 획득된 샘플 데이터, 예컨대 샘플 메시지 데이터에 기초하여 트레이닝될 수 있다. 예컨대, 샘플 데이터는 수신된 메시지들 및 수신된 메시지들에 전송된 응답들을 포함할 수 있다. 샘플 데이터에 기반하여, 모델은 수신된 메시지들에 대한 메시지 응답들을 예측할 수 있으며, 이 메시지 응답들은 이후에 제안된 아이템들로서 제공될 수 있다. 일부 구현들에서, 제안 서버(156) (또는 다른 컴포넌트)는 딥 러닝 모델, 로지스틱 회귀 모델, LSTM (Long Short Term Memory) 네트워크, 감독된 또는 감독되지 않은 모델 등 중 하나 이상을 사용할 수 있다. 일부 구현들은 또한 이미지들 또는 비디오들에서 이미지 피처들을 검출하고, 이미지 피처들에 기초하여 제안된 아이템들(예컨대, 메시지 응답들)을 결정할 수 있다. 예컨대, 이미지 피처들은 (사람들의 아이덴티티를 결정하지 않은) 사람들, 동물들, 오브젝트들 (예컨대, 물품들, 차량들 등), 특정 기념물들, 풍경 피처들(예컨대, 단풍, 산, 호수, 하늘, 구름, 일출 또는 일몰, 빌딩, 교량 등), 날씨 등을 포함할 수 있다. 다양한 이미지 인식 및 검출 기법들(예컨대, 트레이닝 이미지들에 기반한 머신 학습, 기준 이미지들의 기준 피처들과의 비교 등)은 이미지 피처들을 검출하기 위해 사용될 수 있다.
[0059] 일부 구현들에서, 서버들(150-156) 중 하나 이상은 봇들을 호스팅한다. 봇들은 제안을 제공하기 위해 특정 기능들을 수행하는 컴퓨터 프로그램들일 수 있는데, 예컨대 예약 봇은 예약들을 수행하고, 자동-응답 봇은 응답 메시지 텍스트를 생성하고, 스케줄링 봇은 캘린더 약속들을 자동적으로 스케줄링하는 식이다. 서버(150-156)는 그 출력으로서 메시징 애플리케이션(103)에 하나 이상의 봇들을 제공하거나 조회할 수 있다. 예컨대, 봇에 대한 코드는 메시징 애플리케이션(103)에 통합될 수 있거나, 또는 메시징 애플리케이션(103)은 서버(150-156)에서 구현되는 봇에 요청들을 전송할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103)은 서버(150-156)에 봇 커맨드들을 제공하고 봇 커맨드들에 기반하여 출력(예컨대, 임베디드 애플리케이션 데이터, 세션 데이터, 콘텐츠 데이터, 제안된 아이템들 등)을 수신함으로써 사용자(125)와 서버 (150-156)사이의 중개자로서의 역할을 한다.
[0060] 일부 구현들에서, 서버들(150-156) (예컨대, 콘텐츠 서버(154) 및/또는 제안 서버(156)) 중 하나 이상은 전자 백과 사전, 지식 그래프, 하나 이상의 데이터베이스들, 소셜 네트워크 애플리케이션들 (예컨대, 소셜 그래프, 친구를 위한 소셜 네트워크, 비즈니스를 위한 소셜 네트워크 등), 장소 또는 로케이션을 위한 웹사이트 (예컨대, 식당, 자동차 판매점 등), 맵핑 애플리케이션 (예컨대, 방향들을 제공하는 웹사이트들) 등을 유지할 수 있다. 예컨대, 콘텐츠 서버(154)는 메시징 애플리케이션(103)으로부터 정보에 대한 요청을 수신하고, 검색을 수행하며, 요청의 정보를 제공할 수 있다. 일부 구현들에서, 콘텐츠 서버(154)는 이미지들에 특정 타입들의 콘텐츠의 분류기들을 포함시킬 수 있고, 특정 클래스들 중 임의의 것이 이미지의 콘텐츠(예컨대, 픽셀들)에서 검출되는지 여부를 결정할 수 있다. 일부 예들에서, 메시징 애플리케이션(103)은 콘텐츠 서버(154)에 의해 액세스된 맵핑 애플리케이션으로부터 운전 방향들 또는 예상 도착 시간을 요청할 수 있다.
[0061] 일부 구현들에서, 사용자가 그러한 데이터의 사용에 동의하면, 하나 이상의 서버들(150-156) (예컨대, 콘텐츠 서버 (154))은 메시징 애플리케이션(103)이 대응하는 소셜 네트워크 프로필을 갖는 사람을 이미지에서 식별하기 위해 사용할 수 있는 사용자의 프로필 정보 또는 프로필 이미지들을 메시징 애플리케이션(103)에 제공할 수 있다. 다른 예에서, 콘텐츠 서버(154)는 제공된 사용자 데이터에 대해 사용자 동의가 획득된 경우, 메시징 애플리케이션 (10)에 의해 사용된 메시지들에서 식별된 엔티티들과 관련된 정보를 메시징 애플리케이션(103)에 제공할 수 있다. 예컨대, 콘텐츠 서버(154)는 이미지들에서 식별된 랜드마크들에 관한 정보를 제공하는 전자 백과사전, 메시지들에서 식별된 구매 엔티티들 구매하기 위한 정보를 제공하는 전자 쇼핑 웹사이트, 사용자 동의에 따라 제공되는 전자 캘린더 애플리케이션, 메시지에서 식별된 사용자로부터의 일정, 메시지의 엔티티가 방문될 수 있는 주변 로케이션들에 관한 정보를 제공하는 맵핑 애플리케이션, 메시지에서 언급된 요리가 서빙될 수 있는 식당의 웹 사이트 등을 포함하거나 또는 이에 액세스할 수 있다.일부 구현들에서, 콘텐츠 서버(154)는 정보를 획득하기 위해 제안 서버(156)와 통신할 수 있다. 콘텐츠 서버(154)는 요청된 정보를 제안 서버(156)에 제공할 수 있다.
[0062] 일부 구현들에서, 하나 이상의 서버들(150-156)은 예컨대 이들 모듈들에 의해 사용되거나 유지되는 데이터베이스들을 업데이트하기 위해 하나 이상의 메시징 애플리케이션들(103)으로부터 정보를 수신할 수 있다. 예컨대, 콘텐츠 서버(154)가 식당에 관한 웹사이트를 유지하는 경우, 메시징 애플리케이션(103)은 식당에서 사용자가 선호하는 요리와 같은 식당에 관한 업데이트된 정보를 콘텐츠 서버(154)에 제공할 수 있다.
[0063] 서버(135)는 프로세서, 메모리 및 네트워크 통신 능력들을 포함할 수 있다. 일부 구현들에서, 서버(135)는 하드웨어 서버이다. 서버(135)는 신호 라인(128)을 통해 네트워크(140)에 통신가능하게 커플링된다. 신호 라인(128)은 이더넷, 동축 케이블, 광섬유 케이블 등과 같은 유선 연결이거나 또는 Wi-Fi, 블루투스 또는 다른 무선 기술과 같은 무선 연결일 수 있다. 일부 구현들에서, 서버(135)는 네트워크(140)를 통해 메시징 서버(101) 및 클라이언트 디바이스들(115) 중 하나 이상으로 데이터를 전송하고 이들로부터 데이터를 수신한다. 비록 서버(135)가 하나의 서버인 것으로 예시되어 있지만, 다양한 구현은 하나 이상의 서버들(135)을 포함할 수 있다. 서버(135)는 하나 이상의 봇들, 예컨대 봇(109a) 및 봇(113)을 서버 애플리케이션들 또는 서버 모듈들로서 구현할 수 있다.
[0064] 다양한 구현들에서, 서버(135)는 메시징 서버(101), 예컨대 메시징 서비스 제공자를 관리하는 동일한 엔티티의 일부일 수 있다. 일부 구현들에서, 서버(135)는 예컨대 메시징 애플리케이션(103a/103b)을 제공하는 엔티티와 상이한 엔티티에 의해 제어되는 제3자 서버일 수 있다.
[0065] 일부 구현들에서, 서버(135)는 봇들을 제공하거나 호스팅한다. 봇은 하나 이상의 컴퓨터들상에서 구현되며, 사용자들이 주로 텍스트를 통해, 예컨대 메시징 애플리케이션(103a/103b)을 통해 상호작용하는 자동화된 서비스이다. 봇들은 아래에서 더 상세히 설명된다.
[0066] 클라이언트 디바이스(115)는 메모리 및 하드웨어 프로세서, 예컨대 카메라, 랩톱 컴퓨터, 태블릿 컴퓨터, 모바일 전화, 웨어러블 디바이스, 모바일 이메일 디바이스, 휴대용 게임 플레이어, 휴대용 음악 플레이어, 판독기 디바이스, 머리 장착 디스플레이 또는 네트워크(140)에 무선으로 액세스할 수 있는 다른 전자 디바이스를 포함하는 컴퓨팅 디바이스일 수 있다.
[0067] 예시된 구현에서, 클라이언트 디바이스(115a)는 신호 라인(108)을 통해 네트워크(140)에 커플링되고, 클라이언트 디바이스(115n)는 신호 라인(110)을 통해 네트워크(140)에 커플링된다. 신호 라인들(108 및 110)은 유선 연결들, 예컨대 이더넷, 또는 무선 연결들, 이를테면 Wi-Fi, 블루투스, 또는 다른 무선 기술일 수 있다. 클라이언트 디바이스들(115a, 115n)은 각각 사용자들(125a, 125n)에 의해 액세스된다. 도 1의 클라이언트 디바이스들(115a, 115n)이 예로서 사용된다. 도 1이 2개의 클라이언트 디바이스들(115a 및 115n)을 예시하지만, 본 개시내용은 하나 이상의 클라이언트 디바이스들(115)을 갖는 시스템 아키텍처에 적용된다.
[0068] 일부 구현들에서, 클라이언트 디바이스(115)는 사용자(125)에 의해 착용된 웨어러블 디바이스일 수 있다. 예컨대, 클라이언트 디바이스(115)는 클립(예컨대, 손목 밴드)의 일부, 보석류의 일부, 또는 안경(a pair of glasses)의 일부로서 포함될 수 있다. 다른 예에서, 클라이언트 디바이스(115)는 스마트워치일 수 있다. 다양한 구현들에서, 사용자(125)는 디바이스의 디스플레이 상에서 메시징 애플리케이션(103a/103b)으로부터의 메시지들을 뷰잉할 수 있거나, 디바이스의 스피커 또는 다른 출력 디바이스를 통해 메시지들에 액세스할 수 있는 등을 행할 수 있다. 예컨대, 사용자(125)는 스마트워치 또는 스마트 손목 밴드의 디스플레이 상에서 메시지들을 뷰잉할 수 있다. 다른 예에서, 사용자(125)는 클라이언트 디바이스(115) 또는 그의 일부에 커플링된 헤드폰들(도시되지 않음), 클라이언트 디바이스(115)의 스피커, 클라이언트 디바이스(115)의 햅틱 피드백 엘리먼트 등을 통해 메시지들에 액세스할 수 있다.
[0069] 일부 구현들에서, 메시징 애플리케이션(103b)은 클라이언트 디바이스(115a)에 보관된다. 일부 구현들에서, 메시징 애플리케이션(103b)(예컨대, 씬-클라이언트 애플리케이션(thin-client application), 클라이언트 모듈 등)은, 메시징 서버(101)에 보관된 대응하는 메시징 애플리케이션(103a)(예컨대, 서버 애플리케이션, 서버 모듈 등)에 대해 클라이언트 디바이스(115a)에 보관된 클라이언트 애플리케이션일 수 있다. 예컨대, 메시징 애플리케이션(103b)은 클라이언트 디바이스(115a) 상에서 사용자(125a)에 의해 생성된 메시지들을 메시징 서버(101)에 보관된 메시징 애플리케이션(103a)에 송신할 수 있다.
[0070] 일부 구현들에서, 메시징 애플리케이션(103a)은 메시징 서버(101)에 보관된 독립형 애플리케이션일 수 있다. 사용자(125a)는 클라이언트 디바이스(115a) 상의 브라우저 또는 다른 소프트웨어를 사용하여 웹 페이지를 통해 메시징 애플리케이션(103a)에 액세스할 수 있다. 일부 구현들에서, 클라이언트 디바이스(115a) 상에서 구현되는 메시징 애플리케이션(103b)은 메시징 서버(101) 상에 포함된 것과 동일한 또는 유사한 모듈들을 포함할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103b)은 독립형 클라이언트 애플리케이션으로서, 예컨대 하나 이상의 클라이언트 디바이스들(115)이 다른 클라이언트 디바이스들(115)과의 메시지들의 교환을 가능하게 하기 위한 기능성을 포함하는 피어-투-피어 또는 다른 구성으로 구현될 수 있다. 이 구현들에서, 메시징 서버(101)는 제한된 메시징 기능성(예컨대, 클라이언트 인증, 백업 등)을 포함하거나 또는 어떠한 메시징 기능성도 포함하지 않을 수 있다. 일부 구현들에서, 메시징 서버(101)는 하나 이상의 봇들, 예컨대 봇(107a) 및 봇(111)을 구현할 수 있다.
[0071] 다양한 구현들에서, 메시징 애플리케이션(103)은, 메시징 애플리케이션(103)과 연관하여 실행되고 메시징 애플리케이션(103)에 의존하는 하나 이상의 임베디드 애플리케이션들(117)을 포함할 수 있다. 임베디드 애플리케이션(117)은 메시징 애플리케이션의 채팅 인터페이스와 상호작용하고, 그 자신의 임베디드 인터페이스들 중 하나 이상을 제공할 수 있다. 임베디드 애플리케이션들의 다양한 피처들의 예들이 본원에서 설명된다.
[0072] 일부 구현들에서, 메시징 애플리케이션(103a/103b)은 하나 이상의 제안된 아이템들, 예컨대 제안된 커맨드들, 메시지들, 또는 응답들을 사용자 인터페이스를 통해, 예컨대 버튼 또는 다른 사용자 인터페이스 엘리먼트로서 사용자들(125)에게 제공할 수 있다. 제안된 아이템들은 사용자가 제안된 아이템을 선택할 때, 예컨대, 터치스크린 상에서 또는 다른 입력 디바이스를 통해 대응하는 사용자 인터페이스 엘리먼트를 선택함으로써 사용자들이 메시지들에 신속하게 응답하는 것을 가능하게 할 수 있다. 제안된 아이템들은, 예컨대 사용자가 응답을 타이핑할 필요성을 감소시키거나 또는 제거함으로써 보다 빠른 상호작용을 가능하게 할 수 있다. 제안된 아이템들은, 예컨대, 클라이언트 디바이스(예컨대, 키보드 또는 마이크로폰을 포함하지 않는 스마트워치)에 텍스트 입력 기능성이 없을 때 사용자들이 메시지에 응답하거나 또는 커맨드를 신속하고 용이하게 제공하는 것을 가능하게 할 수 있다. 일부 구현들에서, 제안된 응답들은, 응답들을 생성하기 위해 트레이닝된 예측 모델들, 예컨대 머신 학습 모델들을 사용하여 생성될 수 있다. 제안된 아이템들은 도 7과 관련하여 아래에서 보다 상세히 설명된다.
[0073] 도 2는 일부 구현들에 따른, 채팅 대화들에 임베딩된 프로그램을 제공하기 위한 예시적인 방법(200)을 예시하는 흐름도이다. 일부 구현들에서, 방법(200)은, 예컨대 서버 시스템, 예컨대 도 1에 도시된 바와 같이 메시징 서버(101) 상에서 구현될 수 있다. 일부 구현들에서, 방법(200) 중 일부 또는 전부는 시스템, 이를테면 도 1에 도시된 바와 같은 하나 이상의 클라이언트 디바이스들(115) 상에서 그리고/또는 서버 시스템 및 하나 이상의 클라이언트 시스템들 둘 모두 상에서 구현될 수 있다. 설명된 예들에서, 구현 시스템은 하나 이상의 프로세서들 또는 프로세싱 회로망, 및 하나 이상의 저장 디바이스들, 이를테면 데이터베이스 또는 다른 액세스가능한 저장소를 포함한다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들은 방법(200)의 상이한 블록들 또는 다른 부분들을 수행할 수 있다.
[0074] 블록(202)에서, 방법(200)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예컨대, 사용자 허용)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 예컨대 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송 또는 수신된 메시지들, 사용자 선호도들, 사용자 생체 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 관한 정보, 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 레이팅들, 및 사용자에 의해 생성 또는 제출된 의견들, 사용자의 현재 로케이션, 이력상 사용자 데이터, 사용자에 의해 생성, 수신 및/또는 액세스된 이미지들, 사용자에 의해 뷰잉 또는 공유된 비디오들 등을 포함할 수 있다. 일부 구현들에서, 본원에서 설명된 방법들의 하나 이상의 블록들은 그러한 사용자 데이터를 사용할 수 있다.
[0075] 사용자 동의가 관련 사용자들(그 사용자들에 대한 사용자 데이터가 방법(200)에서 사용될 수 있음)로부터 획득되었다면, 블록(204)에서, 본원의 방법들의 블록들이 이 블록들에 대해 설명된 바와 같이 사용자 데이터를 가능한 사용하여 구현될 수 있다고 결정되고, 방법은 블록(208)으로 계속된다. 사용자 동의가 획득되지 않았다면, 블록(206)에서, 블록들이 사용자 데이터를 사용하지 않고 구현될 것이라고 결정되고, 방법은 블록(208)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터를 사용하지 않고 그리고 합성 데이터 및/또는 일반적 또는 공개적으로 액세스가능하고 공개적으로-사용가능한 데이터를 이용하여 구현될 것이다.
[0076] 본원에서 설명되는 구현들은, 채팅 인터페이스들에서 채팅 대화들을 제공하는 메시징 애플리케이션들과 연관하여 실행되는 임베디드 애플리케이션 프로그램들을 제공할 수 있다. 메시징 애플리케이션은 상술된 바와 같이 메시징 애플리케이션(103)일 수 있으며, 사용자 디바이스(예컨대, 클라이언트 디바이스 또는 다른 디바이스) 상에서 전체적으로 또는 부분적으로 실행될 수 있거나 또는 서버(예컨대, 메시징 서버(101) 상에서 전체적으로 또는 부분적으로 실행되고 데이터를 사용자 디바이스에 제공하여 사용자 디바이스에 디스플레이될 수 있다.
[0077] 일부 예들에서, 메시징 애플리케이션(103)은 인스턴트 메시징 애플리케이션, 소셜 네트워크 애플리케이션, 이메일 애플리케이션, 멀티미디어 메시징 애플리케이션 등일 수 있다. 예컨대, 메시징 애플리케이션이 인스턴트 메시징 애플리케이션이면, 예컨대, 2개 이상의 참여자들을 갖는 메시징 세션(예컨대, 채팅, 그룹, 또는 "채팅 대화") 등에서 메시지들은 참여 디바이스들의 특정 사용자(125a)와 하나 이상의 다른 사용자들(125) 간의 인스턴트 메시징 통신의 일부로서 수신될 수 있다. 채팅 또는 채팅 대화는, 다수의 참여 사용자들이 서로 (예컨대, 다양한 타입들의 콘텐츠 데이터를 포함하는) 메시지들을 통신하는 메시징 세션이다. 일부 구현들에서, 사용자들은, 메시징 애플리케이션에 의해 구현된 채팅 대화로 메시지들을 입력함으로써 다른 사용자들에게 메시지들을 전송할 수 있다. 일부 구현들에서, 사용자들은, (예컨대, 메시징 애플리케이션(103)이 SMS, 또는 전화 번호들을 활용하는 다른 메시징 애플리케이션을 통해 작동할 때) 전화 번호를 메시징하거나 또는 (예컨대, 메시징 애플리케이션(103)이 RCS(rich communications services) 또는 다른 채팅 인터페이스를 통해 작동할 때) 연락처 리스트로부터 수신측 사용자를 선택함으로써 특정한 다른 사용자들에게 메시지들을 전송할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103)은 참여 디바이스들 간에 실시간 통신, 예컨대 오디오(보이스) 콜들 및/또는 비디오 콜들을 제공할 수 있으며, 여기서 실시간 오디오 데이터 및/또는 비디오 데이터는 (예컨대, 카메라 및 마이크로폰을 사용하여) 하나 이상의 참여 디바이스들에서 캡처되고, 이러한 데이터는 채팅 대화(예컨대, 전화 회의)에 참여하는 다른 디바이스들의 채팅 인터페이스들(및 스피커들)로 전송되고 그 채팅 인터페이스들에서 출력된다.
[0078] 메시징 애플리케이션(103)은 채팅 대화의 메시지들, 예컨대 사용자 디바이스의 사용자에 의해 전송된 메시지들, 및 다른 디바이스들로부터 사용자 디바이스에 의해 수신된 메시지들을 디스플레이하는 채팅 인터페이스를 디스플레이할 수 있다. 본원에서 참조되는 바와 같이, 채팅 인터페이스는 (예컨대, 디스플레이된 인터페이스 엘리먼트들을 포함하는) 디스플레이된 사용자 인터페이스 컴포넌트를 가질 뿐만 아니라, 사용자 입력의 수신, 메시지들의 전송 및 수신, 메시지들의 디스플레이 등을 수행하는 데이터 수신 및 교환 컴포넌트를 갖는다.
[0079] 본원에서 설명되는 구현들에서, 하나 이상의 임베디드 애플리케이션들은 메시징 애플리케이션과 연관하여 실행될 수 있다. 본원의 임베디드 애플리케이션은 메시징-임베디드 또는 채팅-임베디드 프로그램, 예컨대 실행중인 메시징 애플리케이션과 연관하여, 또는 그의 콘텍스트 내에서 실행되고 메시징 애플리케이션의 실행에 의존하는 프로그램을 참조한다. 예컨대, 임베디드 애플리케이션은, 메시징 애플리케이션이 디바이스 상에서 출력(예컨대, 채팅 인터페이스)을 현재 제공하고 있으면 디바이스 상에서 실행될 수 있는 코드(예컨대, 스크립트)이고, 임베디드 애플리케이션은, 메시징 애플리케이션이 종료되고(exit) 더 이상 디바이스 상에서 출력을 제공하지 않으면 종료된다(예컨대, 더 이상 디바이스 상에서 실행되지 않는다). 예컨대, 일부 구현들에서, 임베디드 애플리케이션은 임베디드 인터페이스에 제공되거나 또는 그 내에 있는 입력, 예컨대 임베디드 인터페이스 내의 사용자 인터페이스 엘리먼트들, 텍스트, 또는 다른 디스플레이된 오브젝트들의 선택들, 입력 디바이스의 제스처들(이를테면, 터치스크린, 터치패드 등의 터치-감응형 입력 표면 상의 탭들, 형상들의 추적들, 곡선들, 또는 라인들 등), 및/또는 터치스크린 또는 다른 입력 디바이스를 통하여 임베디드 인터페이스에 의해 수신된 다른 사용자 입력을 수신할 수 있다. 본원에서 참조되는 바와 같이, 임베디드 인터페이스는, 사용자 인터페이스 컴포넌트를 포함할 수 있는 디스플레이된 컴포넌트(예컨대, 디스플레이된 사용자 인터페이스 엘리먼트들) 뿐만 아니라 콘텐츠 데이터, 예컨대 미디어 아이템 콘텐츠 데이터, 게임 데이터, 문서 데이터, 사용자 코멘트들, 메시지들 등을 포함하는 디스플레이된 출력 데이터를 포함한다. 임베디드 인터페이스는 또한, 예컨대 사용자에 의한 터치스크린, 키보드, 또는 다른 입력 디바이스를 통한 사용자 디바이스에서의 사용자 입력의 수신을 수행하는 데이터 수신 컴포넌트를 포함한다. 일부 구현들에서, 임베디드 인터페이스는 채팅 인터페이스과 연관하여 디스플레이된다. 예컨대, 임베디드 인터페이스는 채팅 인터페이스의 일부로서, 예컨대 채팅 인터페이스의 경계들 또는 디스플레이 영역 내에서, 채팅 인터페이스와 부분적으로 오버랩되게, 또는 채팅 인터페이스에 인접하게 디스플레이될 수 있다. 일부 구현들에서, 디스플레이 상에서 채팅 인터페이스의 적어도 일부가 가시적이고 임베디드 인터페이스가 가시적이다.
[0080] 일부 구현들에서, 임베디드 애플리케이션은 연관된 채팅 대화를 위해, 연관된 채팅 인터페이스에서, 예컨대 텍스트 커맨드들 또는 채팅 인터페이스 엘리먼트들의 선택으로서 제공된 입력을 수신할 수 있다. 일부 구현들에서, 임베디드 애플리케이션은 임베디드 인터페이스에서 출력을 제공하고, 그리고/또는 채팅 인터페이스에서 출력을 제공할 수 있으며, 예컨대 채팅 인터페이스에 디스플레이된 채팅 대화에 텍스트로서 출력을 제공하거나 또는 다른 채팅 인터페이스 출력을 제공한다. 예컨대, 임베디드 인터페이스로의 임베디드 애플리케이션의 출력은 임베디드 출력 데이터로 참조될 수 있으며, 임베디드 애플리케이션에 의해 생성된 데이터 및/또는 연관된 메시징 애플리케이션을 통해 임베디드 애플리케이션이 하나 이상의 다른 소스들(예컨대, 제1 디바이스 상에서 실행되는 상이한 애플리케이션 프로그램을 포함하는 소스들, 네트워크를 통해 연결된 하나 이상의 서버들, 연관된 메시징 애플리케이션의 채팅 대화 내의 하나 이상의 채팅 디바이스들 등)로부터 수신한 데이터를 포함할 수 있다. 임베디드 애플리케이션으로부터 다른 애플리케이션 프로그램들 및/또는 다른 디바이스들로 전송된 데이터는 임베디드 애플리케이션으로부터 메시징 애플리케이션으로 제공될 수 있으며, 이어서, 그 애플리케이션은 데이터(또는 데이터의 프로세싱된 형태)를 다른 프로그램들 또는 디바이스들로 전달한다. 유사하게, 사용자 디바이스에 대해 실행되는 임베디드 애플리케이션으로 제공될, 다른 프로그램들 또는 디바이스들로부터 그 사용자 디바이스에서 수신된 데이터는 메시징 애플리케이션에 의해 수신되고, 메시징 애플리케이션으로부터 임베디드 애플리케이션으로 제공될 수 있다.
[0081] 임베디드 애플리케이션들의 일부 예들은 설명 전반에 걸쳐 설명된다. 일부 예시적인 구현들에서, 임베디드 애플리케이션은, 예컨대 채팅 인터페이스의 디스플레이 영역 내에서 또는 채팅 인터페이스와의 다른 시각적 연관에서 애플리케이션 데이터 및 임베디드 인터페이스를 디스플레이하기 위해 샌드박스형(sandboxed) 디스플레이 절차 내에서 실행되는 코드일 수 있다. 예컨대, 일부 구현들에서, 임베디드 애플리케이션은 채팅 인터페이스 내에서 임베디드 인터페이스를 제공하기 위해 웹 인터페이스 뷰를 구현할 수 있으며, 여기서 뷰는 웹 페이지로부터의 데이터를 디스플레이하고 그리고/또는 웹 페이지들과 관련되어 실행되는 코드(Javascript, CSS, HTML 등)를 구현할 수 있다. 일부 구현들에서, 임베디드 애플리케이션들은 제3자, 예컨대 연관된 메시징 애플리케이션을 공급하는 당사자와는 상이한 당사자 및/또는 임베디드 애플리케이션과 통신하는 다른 컴포넌트들에 의해 공급될 수 있다. 일부 구현들에서, 하나의 임베디드 애플리케이션의 디스플레이로부터 상이한 임베디드 애플리케이션으로 전환할 때, 버퍼링(예컨대, 더블 버퍼링 기법들)이 제공될 수 있다. 예컨대, 디스플레이되고 있지 않은 제2 임베디드 애플리케이션에 대한 임베디드 애플리케이션 코드 및/또는 출력 데이터는, 제1 임베디드(또는 다른) 애플리케이션 및 임베디드 인터페이스가 전경에서 디스플레이 및 사용되는 동안, 디바이스의 운영 시스템의 백그라운드에서의 디스플레이를 위해 다운로드, 설치, 및/또는 메모리로 로딩될 수 있다. 제1의 디스플레이된 임베디드 인터페이스는 디스플레이된 애니메이션들 및 사용자 인터페이스 전환들을 통해 제2 임베디드 인터페이스와 스왑(swap)될 수 있다. 일부 예들에서, 임베디드 애플리케이션이 다운로드되고 있을 때, 코드가 백그라운드에서 사용자 디바이스 상에 다운로드 및/또는 설치되고 있는 동안, 로딩 표시자가 디스플레이될 수 있다.
[0082] 일부 예들에서, 임베디드 애플리케이션은, 통신을 가능하게 하기 위한 한 세트의 미리정의된 프로토콜들 및 다른 툴들을 제공하는 API(application program interface)를 사용하여 메시징 애플리케이션에 의해 구현되는 프레임워크와 통신 및 인터페이싱할 수 있다. 예컨대, API는 임베디드 세션에 참여하는 디바이스들(예컨대, 멤버 디바이스들)로부터 특정 데이터를 통신하기 위해 사용될 수 있으며, 여기서 데이터는 임베디드 디바이스들의 임베디드 애플리케이션 프로그램들(예컨대, 공유된 임베디드 애플리케이션)을 연결하고 동기화시킨다. 일부 구현들에서, 메시징 애플리케이션 프레임워크는, 채팅 대화, 디바이스, 임베디드 세션, 및 임베디드 애플리케이션 간의 상호작용들을 가능하게 하기 위한 능력들을 임베디드-애플리케이션 개발자들에게 제공하도록 한 세트의 API들을 제공할 수 있다.
[0083] 일부 예시적인 구현들에서, 멤버 사용자가 임베디드 애플리케이션을 종료하면, 그 임베디드 애플리케이션은 일정 시간 기간(예컨대, 20초, 1분 등) 동안 그 멤버 사용자의 멤버 디바이스의 백그라운드, 예컨대 멤버 디바이스의 메시징 애플리케이션 또는 운영 시스템의 백그라운드에서 실행되게 유지될 수 있다. 예컨대, 이것은, 채팅 인터페이스와 상호작용한 이후 즉시 임베디드 애플리케이션을 사용하는 것으로 사용자가 다시 스위칭하는 경우에 수행될 수 있다. 일부 예들에서, 사용자는 임베디드 게임 애플리케이션을 열고, 이동을 게임에 입력하고, (임베디드 게임 애플리케이션 및 임베디드 인터페이스가 백그라운드에서 실행되도록) 임베디드 게임 애플리케이션 및 임베디드 인터페이스를 닫고, 다른 사용자의 요청에 대한 응답으로 채팅 대화에 파일을 전송 또는 첨부하며, 그리고 즉시 임베디드 게임 애플리케이션 및 임베디드 인터페이스를 다시-열어서 그들을 전경으로 스위칭할 수 있다. 백그라운드-실행중인 임베디드 애플리케이션은, 채팅 대화가 끝나면, 예컨대 사용자가 메시징 애플리케이션을 닫으면 종결될 수 있거나, 또는 일부 구현들에서는 상이한 채팅 대화로 스위칭된다. 유사하게, 메시징 애플리케이션이 사용자에 의해 닫히거나 또는 종료되면, 메시징 애플리케이션은 특정 시간 기간 동안 사용자 디바이스의 백그라운드로 전송될 수 있으며, 활성 임베디드 애플리케이션은 그 시간 동안 일시정지될 수 있다. 사용자는 다른 애플리케이션을 사용하는 것으로 스위칭하며, 이어서 메시징 애플리케이션이 전경에서 실행되도록 선택될 때 임베디드 애플리케이션의 사용을 재개할 수 있다. 따라서, 임베디드 애플리케이션들은 채팅 대화의 수명에 종속될 수 있다.
[0084] 다양한 구현들에서, 사용자들 중 하나 이상이 봇들일 수 있다. 예컨대, 일부 구현들에서, 본원에서 참조되는 바와 같은 채팅 사용자 또는 멤버 사용자는 봇일 수 있다. 그러한 경우, "채팅 사용자"(봇)과 연관된 "사용자 디바이스"는 봇을 제공하는 서버 디바이스일 수 있다. 일부 예들에서, 봇은 어시스턴트 봇(assistant bot), 쇼핑 봇, 서치 봇 등일 수 있다. 일부 구현들에서, 봇들은 소프트웨어 및/또는 하드웨어로 구현되는 자동화된 에이전트들일 수 있다. 일부 구현들에서, 봇들은 카메라들(예컨대, 보안 카메라들, 웹 카메라들, 감시 카메라들 등), 어플라이언스들(예컨대, 스마트 냉장고, 알람 디바이스, 산업용 어플라이언스 등), 이미징 디바이스들(예컨대, 현미경들, 의료용 이미징 디바이스들 등)을 표현하거나 또는 그들과 연관되며, 메시징 애플리케이션(103)을 통해 하나 이상의 이미지들을 전송할 수 있다. 봇들인 사용자들 중 하나 이상을 포함하는 구현들에서, 봇에 의해 생성된 메시지들을 사용하기 위해 봇의 소유자 또는 오퍼레이터로부터 동의가 획득된다. 일부 구현들에서, 동의는 봇, 카메라, 어플라이언스 등의 구성 파라미터로서 특정되며, 봇이 메시징 애플리케이션(103)과 상호작용할 시에 메시징 애플리케이션(103)으로 제공될 수 있다.
[0085] 블록(208)에서, 제1 메시징 애플리케이션은 제1 사용자 디바이스 상에 제1 채팅 인터페이스를 디스플레이하도록 유발된다. 채팅 인터페이스는, 제1 디바이스가 참여하는 하나 이상의 채팅 대화들에 관련된 정보를 수신하고 정보를 출력하도록 구성된 사용자 인터페이스이다. 예컨대, 채팅 인터페이스는, 제1 디바이스를 사용하거나 그렇지 않으면 제1 디바이스와 연관된 제1 사용자로부터의 사용자 입력 또는 다른 입력에 대한 응답으로 제1 디바이스의 디스플레이 디바이스, 예컨대 디스플레이 스크린 상에 디스플레이될 수 있다. 일부 구현들에서, 제1 메시징 애플리케이션은 제1 디바이스 상에서 실행되는 반면, 다른 구현들에서, 제1 메시징 애플리케이션은 네트워크(예컨대, 메시징 서버)를 통해 제1 디바이스에 연결된 상이한 디바이스 상에서 부분적으로 또는 전체적으로 실행될 수 있으며, 제1 디바이스에 의해 디스플레이될 데이터를 제1 디바이스에 전송할 수 있다.
[0086] 제1 사용자 및 제1 디바이스는 채팅 인터페이스를 사용하여 하나 이상의 채팅 대화들에 합류할 수 있다. 예컨대, 제1 디바이스의 사용자로부터의 사용자 입력은 사용자 디바이스들을 사용하여 하나 이상의 다른 사용자들과의 새로운 채팅 대화를 개시하고, 그리고/또는 네트워크를 통해 통신하는 하나 이상의 다른 사용자들 및 디바이스들과의 기존의 채팅 대화에 합류할 수 있다. 각각의 채팅 대화는, 그 특정 채팅 대화에 참여하는 채팅 사용자들(및 그들의 연관된 사용자 디바이스들)의 그룹을 포함한다. 일부 구현들에서, 사용자는 다수의 상이한 채팅 대화들에 현재 참여하고 있을 수 있다. 일부 구현들에서, 각각의 채팅 사용자는 채팅 대화에서 개별적인 채팅 아이덴티티와 연관된다. 채팅 아이덴티티는 채팅 인터페이스 내의 사용자의 시각적 표현(예컨대, 사용자의 머리의 묘사, 사용자이름, 사용자 이미지 등)을 참조할 수 있다. 채팅 아이덴티티는 채팅 사용자를 묘사하기에 효과적인 텍스트, 이미지, 또는 멀티미디어 데이터(예컨대, 사용자 사진, 사용자 아이콘, 사용자이름, 채팅 사용자를 묘사하는 애니메이션 등)를 포함한다. 채팅 아이덴티티는 또한 또는 대안적으로, 사용자 식별자(예컨대, ID(identification) 데이터, ID 번호 등)를 참조할 수 있다. 채팅 아이덴티티는 메시징 애플리케이션의 콘텍스트에서 채팅 사용자에 대한 고유 식별자를 포함한다. 예컨대, 고유 식별자는 사용자이름일 수 있다. 다른 예에서, 고유 식별자는 채팅 사용자들의 데이터베이스에 대한 식별자(예컨대, 사용자 아이덴티티들을 보관하는 데이터베이스 테이블에 대한 주요 키)일 수 있다. 채팅 아이덴티티를 임베디드 애플리케이션에 제공할 시에, 데이터베이스 식별자 또는 사용자이름이 제공될 수 있다.
[0087] 일부 구현들에서, 채팅 대화는 사용자들의 채팅 그룹으로 고려될 수 있으며, 그의 사용자들이 채팅 대화에 현재 참여하고 있는지 여부 또는 사용자 디바이스에 현재 로그인되거나 또는 사용자 디바이스를 사용하는지에 관계없이 진행중인 존재를 가질 수 있다. 예컨대, 모든 채팅 사용자들이 채팅 대화를 종료하면, 대화 식별자(ID), 및 채팅 대화의 채팅 아이덴티티들 및 사용자 아이덴티티들은 메시징 애플리케이션에 의해 보관될 수 있으며, 채팅 대화는, 채팅 사용자들 중 하나 이상이 채팅 인터페이스를 사용하여 대화에 로그인하거나 또는 그 대화를 재개할 때 재개될 수 있다. 메시징 애플리케이션의 일부 구현들은 특정 채팅 대화를 식별하는 대화 ID를 할당 및 보관하고, 대화 ID와 연관하여 연관된 현재 채팅 사용자들(및/또는 채팅 디바이스들)의 아이덴티티들을 보관할 수 있다. 일부 구현들에서, 새로운 사용자들이 채팅 대화에 추가될 수 있고, 하나 이상의 사용자들이 채팅 대화로부터 제거될 수 있다.
[0088] 채팅 인터페이스는, 채팅 대화에 참여하는 다른 채팅 디바이스들 및 채팅 사용자들로부터 제1 디바이스에 의해 수신되는 메시지들을 포함하는, 제1 사용자가 참여하고 있는 각각의 채팅 대화의 정보, 뿐만 아니라 채팅 사용자들의 상황들, 메시지 기능들에 대한 옵션들, 채팅 대화에서 발생하는 이벤트들 등에 관련된 정보를 디스플레이할 수 있다. 채팅 인터페이스는, 제1 디바이스의 또는 제1 디바이스와 연관된 사용자(예컨대, 제1 사용자)가 사용자 입력을 제공하게 허용하는 인터페이스 피처들을 포함할 수 있고, 그러한 피처들을 가능하게 하기 위한 인터페이스 엘리먼트들을 포함한다. 예컨대, 사용자는 제1 디바이스 상에서 메시지들을 구성하고, 메시지들을 채팅 대화에 입력할 수 있다. 일부 예들에서, 사용자는 터치스크린, 물리적 버튼들 또는 키보드, 보이스 입력, 또는 다른 타입들의 입력을 통해 채팅 인터페이스에 사용자 입력을 제공할 수 있다.
[0089] 블록(210)에서, 개시할(예컨대, 제1 디바이스 상에서 임베디드 애플리케이션을 열거나 실행할) 그리고 채팅 사용자들과 공유될 제1 임베디드 애플리케이션을 선택하는 입력이 제1 디바이스에 의해 수신된다. 입력은 제1 사용자로부터 국부적으로 제1 디바이스에서 수신되는 사용자 입력일 수 있다. 일부 예들에서, 이용가능한 임베디드 애플리케이션들을 리스팅하는 메뉴 또는 옵션들의 다른 세트가 제1 디바이스에 의해 디스플레이(또는 그렇지 않으면 제공 또는 출력)될 수 있으며, 사용자 입력은 옵션들로부터 제1 임베디드 애플리케이션을 선택할 수 있다. 제1 임베디드 애플리케이션은 메시지 애플리케이션에서 현재 활성인 특정 채팅 대화와 연관된다. 예컨대, 일부 구현들에서, 제1 임베디드 애플리케이션을 선택하고 열기 위한 하나 이상의 옵션들은 특정 채팅 대화를 디스플레이하는 채팅 인터페이스에 디스플레이되거나 그렇지 않으면 가능하게 될 수 있으며, 그러한 옵션의 선택은 제1 임베디드 애플리케이션이 그 채팅 대화와 연관하여 실행되게 한다. 일부 추가적인 예들에서, 사용자 입력은, 채팅 인터페이스에 입력되는 하나 이상의 텍스트 커맨드들을 구성된 메시지의 일부인 것처럼 포함할 수 있으며, 여기서 텍스트 커맨드들은 개시할 제1 임베디드 애플리케이션을 선택하기 위한 커맨드로서 수신된다. 일부 예들에서, 특정 신택스 캐릭터(들) 또는 다른 미리정의된 포맷에 선행하는 텍스트가 그러한 커맨드를 표시할 수 있다.
[0090] 일부 구현들에서, 열기 위한 제1 임베디드 애플리케이션을 선택했던 입력은 또한, 제1 임베디드 애플리케이션이 연관된 채팅 대화에 참여하는 하나 이상의 다른 채팅 사용자들 및 사용자 디바이스들과 공유될 것임을 특정할 수 있다. 이러한 공유 선택은, 임베디드 애플리케이션의 로컬 버전들을 실행하고 채팅 대화에 참여하는, 제1 디바이스와 하나 이상의 다른 디바이스들 간에 임베디드 세션이 생성되게 허용한다(아래의 블록(214) 참조). 일부 구현들에서, 제1 임베디드 애플리케이션은 다른 채팅 사용자들과 공유하지 않으면서 열리도록 교대로 선택될 수 있으며, 이는, 임베디드 세션을 개시하지 않으면서 그리고 다른 디바이스들이 제1 임베디드 애플리케이션에 관련된 데이터를 수신하지 않으면서 제1 임베디드 애플리케이션이 실행되게 할 것이다. 일부 구현들에서, 임베디드 애플리케이션을 개시하기 위한 선택은 공유된 임베디드 세션이 자동적으로(또는 보관된 사용자 선호도 데이터에 기반하여) 개시되게 한다. 일부 구현들에서, 적어도 하나의 다른 채팅 사용자가 제1 임베디드 애플리케이션과 연관된 임베디드 세션에 합류할 때까지, 임베디드 애플리케이션은 (예컨대, 아래의 블록(212)에서와 같이 임베디드 인터페이스에서) 디스플레이를 출력하지 않는다.
[0091] 블록(212)에서, 제1 임베디드 애플리케이션은 네트워크를 통해 다운로드되고 그리고/또는 제1 디바이스 상에서 실행되며, 임베디드 인터페이스는 채팅 인터페이스와 연관하여 디스플레이된다. 예컨대, 제1 임베디드 애플리케이션은 블록(210)에서 수신된 선택에 대한 응답으로 다운로드될 수 있다. 일부 구현들에서, 제1 임베디드 애플리케이션은 임베디드 애플리케이션들을 호스팅하는 서버 시스템, 예컨대 임베디드 애플리케이션 서버(150)로부터 다운로드될 수 있다. 일부 구현들에서, 제1 임베디드 애플리케이션의 다운로드는 제1 디바이스의 동작 환경의 백그라운드에서, 예컨대 제1 디바이스의 메시징 애플리케이션 및/또는 운영 시스템의 백그라운드 프로세스로서 발생할 수 있다. 이것은, 프로그램들 및 피처들(이를테면, 메시징 애플리케이션의 채팅 인터페이스)이 실행되고, 제1 디바이스 상에서 출력을 제공하며, 그리고/또는 다운로드 동안 제1 사용자에 의해 사용되게 허용한다. 제1 임베디드 애플리케이션이 다운로드된 이후(그리고/또는 그 동안), 그 애플리케이션은 제1 디바이스에 의해 실행될 수 있다. 일부 구현들에서, 제1 임베디드 애플리케이션이 다운로드된 이후, 그 애플리케이션은 제1 사용자 디바이스의 로컬 비-휘발성 메모리에 보관되게 유지될 수 있어서, 제1 임베디드 애플리케이션의 후속 개시들 시에, 그 애플리케이션은 로컬 메모리로부터 이용가능하고 (예컨대, 제1 임베디드 애플리케이션에 대한 업데이트들이 이용가능하지 않으면) 다운로드되지 않는다. 일부 구현들에서, 제1 임베디드 애플리케이션의 하나 이상의 부분들 또는 컴포넌트들은 제1 디바이스와 통신하는 하나 이상의 다른 디바이스들, 예컨대 하나 이상의 서버 시스템들에 의해 실행될 수 있다. 임베디드 애플리케이션 코드는, 시스템이 사용자 데이터에 액세스하기 위한 동의를 제공했던 사용자들의 그 디바이스들에 구체적으로 제공(예컨대, 송신)될 수 있다. 일부 구현들에서, 임베디드 애플리케이션이 개시될 경우 다운로드되기 때문에, 지역 및/또는 시간-민감 임베디드 애플리케이션들은, 예컨대 현재 휴일들 또는 캘린더 이벤트들, 지리적 구역들 등에 대해 특수화된 특정 다운로드로 임베디드 애플리케이션 서버로부터 제공될 수 있다. 특수화된 임베디드 애플리케이션들에 대한 액세스는 다운로드를 수신하고 있는 사용자 및 사용자 디바이스의 특정 지리적 구역들, 언어, 및/또는 다른 특징들 또는 제한들에 기반하여 제한될 수 있다.
[0092] 일부 구현들에서, 제1 임베디드 애플리케이션은 임베디드 인터페이스가 제1 디바이스에 의해 디스플레이되게 한다. 임베디드 인터페이스는, 사용자 입력이 제1 임베디드 애플리케이션에 제공되도록 임베디드 인터페이스에서 수신되게 허용하고, 제1 임베디드 애플리케이션으로부터의 출력이 제1 디바이스에 의해 디스플레이되게 허용하는 임베디드 애플리케이션에 대한 사용자 인터페이스이다. 일부 구현들에서, 네트워크를 통해 다른 디바이스들로 출력될 제1 임베디드 애플리케이션으로부터의 정보는 임베디드 애플리케이션으로부터 메시징 애플리케이션으로 제공될 수 있고, 메시징 애플리케이션은 제1 디바이스로부터 네트워크를 통해 다른 디바이스들로 정보를 전송할 수 있다.
[0093] 일부 예들에서, 채팅 인터페이스의 적어도 일부가 가시적이도록, 예컨대 채팅 인터페이스 내의 하나 이상의 채팅 메시지들(이를테면, 새로이 입력된 채팅 메시지들)이 임베디드 인터페이스의 디스플레이 동안 가시적인 상태를 유지하도록, 임베디드 인터페이스는 제1 디바이스의 디스플레이 디바이스 상에 채팅 인터페이스와 연관하여 디스플레이될 수 있다. 예컨대, 일부 구현들에서, 임베디드 인터페이스는 채팅 인터페이스의 일부로서, 예컨대 채팅 인터페이스의 디스플레이 영역 또는 경계들 내에서, 채팅 인터페이스와 부분적으로 오버랩되게, 또는 채팅 인터페이스에 인접하게 디스플레이될 수 있다. 예컨대, 임베디드 인터페이스는 채팅 인터페이스 내에 디스플레이되는 임베디드 뷰(embedded view)를 포함할 수 있다. 일부 예들에서, 임베디드 뷰는, 실행중인 임베디드 애플리케이션(들), 이를테면 제1 임베디드 애플리케이션의 출력 데이터를 디스플레이하는 것에 전용되고 그리고/또는 실행중인 임베디드 애플리케이션(들), 이를테면 제1 임베디드 애플리케이션에 대한 입력을 수신하는 것에 전용되는 채팅 인터페이스의 일부일 수 있다. 일부 예들에서, 임베디드 뷰는 디스플레이 스크린의 직사각형 또는 다른 형상의 윈도우 또는 다른 부분일 수 있다.
[0094] 다양한 구현들에서, 임베디드 인터페이스는 사용자 디바이스의 배향에 기반하여 디스플레이될 수 있으며, 예컨대, 여기서 사용자 디바이스의 풍경 모드로의 회전은, 예컨대 보다 몰입감있는 게임 경험, 편집 업무를 위한 더 많은 스크린 공간 등을 허용하기 위해 임베디드 인터페이스가 풀스크린 디스플레이로 확장되게 한다. 일부 구현들에서, 임베디드 인터페이스가 (부분-스크린 모드가 아니라) 풀스크린 디스플레이를 제공하는 풀스크린 모드에 있으면, 채팅 사용자들에 의해 채팅 대화에 입력되는 채팅 메시지들은 풀스크린 임베디드 인터페이스 내에, 예컨대 통지들로서 디스플레이될 수 있다(제1 사용자가 그러한 채팅 메시지들을 이러한 방식으로 디스플레이하도록 선택했다면). 일부 구현들에서, (도 7과 관련하여 설명된) 제안된 응답들이 또한 풀스크린 임베디드 인터페이스 내에 디스플레이될 수 있다.
[0095] 일부 구현들에서, 임베디드 인터페이스의 사이즈 및/또는 형상은 제1 사용자 디바이스의 타입, 및/또는 임베디드 인터페이스에서 제1 임베디드 애플리케이션에 의해 디스플레이된 정보의 타입에 기반할 수 있다. 일부 예들에서, 제1 사용자 디바이스가 작은 디스플레이 영역(예컨대, 디스플레이 스크린)을 갖는 모바일 디바이스 또는 다른 디바이스인 타입이면, 임베디드 인터페이스는 특정 퍼센티지의 디스플레이 영역을 점유하고 적어도 하나의 채팅 메시지가 채팅 인터페이스에 디스플레이되게 허용하도록 사이즈가 정해질 수 있다. 더 큰 디스플레이 영역을 갖는 디바이스의 타입(예컨대, 데스크톱 컴퓨터, 더 큰 태블릿 디바이스 등)의 경우, 임베디드 인터페이스는 더 작은 퍼센티지의 디스플레이 영역을 점유하도록 디스플레이되어, 채팅 메시지들에 대해 더 큰 영역을 허용할 수 있다. 일부 구현들에서, 디스플레이된 제어부를 선택하는 사용자 입력에 대한 응답으로, 임베디드 인터페이스는 전체 디스플레이 영역을 점유하도록 최대화될 수 있다. 추가적인 예들에서, 임베디드 애플리케이션이 특정 타입의 콘텐츠 데이터, 이를테면 영화 데이터 및 이미지 데이터를 디스플레이하는 미디어 플레이어 애플리케이션(또는, 예컨대 그래픽 환경들을 이용하여 특정 타입의 게임을 디스플레이하는 게임 애플리케이션)이면, 임베디드 인터페이스는 콘텐츠 데이터를 뷰잉하도록 더 크게 사이즈가 정해질 수 있는 반면, 임베디드 애플리케이션이 일정 타입의 콘텐츠 데이터, 이를테면 텍스트 아이템들의 리스트들을 디스플레이하거나 또는 오디오 데이터로부터 오디오를 출력하면, 임베디드 인터페이스는 더 작게 사이즈가 정해질 수 있다. 일부 구현들에서, 임베디드 인터페이스는 디스플레이 스크린, 가상 현실 디스플레이 디바이스 등에 의해 3D(three-dimensional) 디스플레이로서 디스플레이될 수 있거나, 또는 증강 현실 디스플레이 디바이스 등에 디스플레이될 수 있다.
[0096] 일부 구현들에서, 임베디드 세션을 개시하기 이전에 그리고 임베디드 애플리케이션을 다른 채팅 사용자들과 공유하기 이전에, 셋업 파라미터들이 제1 사용자에 의해 임베디드 애플리케이션으로 입력될 수 있다. 예컨대, 제1 사용자는 임베디드 게임 애플리케이션의 새로운 게임 인스턴스 및 게임의 셋업 파라미터들을 생성하고, 플레이어 이름, 게임 보드 사이즈, 플레이어 컬러, 그 특정 세션에 합류하도록 허용된 플레이어들의 수를 선택하는 등일 수 있다. 추가의 예들에서, 사용자는 플레이할 비디오에 대한 미디어 아이템 메뉴를 서치하고, 선택된 옵션들을 공유하기 전에 임베디드 애플리케이션을 사용하여 온라인으로 여행 목적지, 비행기, 호텔 등을 선택하고, 다른 멤버 사용자들에 의한 의견/투표들을 요청하기 전에 쇼핑 아이템들(의류들, 가구)을 미리-선택하는 등이다.
[0097] 블록(214)에서, 공유된 임베디드 세션이 개시된다. 임베디드 세션은, 네트워크를 통해 임베디드 세션 및 채팅 대화에 참여하고 있는 특정 채팅 디바이스들의 그룹에 의한 공유된 임베디드 애플리케이션의 공유된 사용, 예컨대, 특정 채팅 디바이스들과 공유된 임베디드 애플리케이션 간의 정보의 공유된 통신에 전용되는 지정된 이벤트이다. 일부 구현들에서, 임베디드 세션의 각각의 채팅 디바이스는 공유된 임베디드 애플리케이션(예컨대, 대응하는 임베디드 애플리케이션)의 인스턴스를 적어도 부분적으로 실행한다. 연관된 채팅 디바이스들의 그룹, 및 연관된 채팅 디바이스들을 사용하는 채팅 사용자들의 그룹은 공유된 임베디드 애플리케이션과의 사용자 상호작용들 및 공유된 임베디드 애플리케이션의 출력을 공유한다. 예컨대, 채팅 사용자들의 그룹의 사용자 디바이스들 상에서 실행되는 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들이 동기화된다. 일부 구현들에서, 임베디드 세션은, 제1 임베디드 애플리케이션이 연관되는 채팅 대화, 예컨대 제1 임베디드 애플리케이션이 블록(210)에서 열었던 채팅 대화로부터의 하나 이상의 채팅 디바이스들만을 포함한다. 임베디드 세션에 합류했던 채팅 사용자들은 "멤버 사용자들"이고, 그들의 채팅 디바이스들은 "멤버 디바이스들"이며, 그 디바이스들은 임베디드 세션에 참여하고 있는 채팅 디바이스들의 서브세트이다. 일부 구현들에서, 임베디드 세션은, 연관된 채팅 대화의 식별자와 연관되는 특정 임베디드 세션 식별자(ID)와 연관될 수 있다. 세션 ID는 그 임베디드 세션의 현재 사용자 멤버들과 연관될 수 있다. 예컨대, 제1 디바이스의 사용자는 임베디드 세션에 대한 세션 사용자 리스트에 추가될 수 있으며, 그 리스트는 임베디드 세션의 멤버들을 리스팅한다. 제1 디바이스 및/또는 세션 서버는 그러한 세션 사용자 리스트를 보관 및 업데이트할 수 있다.
[0098] 일부 구현들에서, 임베디드 세션은, 임베디드 세션에 참여하는 하나 이상의 멤버 디바이스들로부터 데이터를 수신하고, 멤버 디바이스들 상의 임베디드 애플리케이션들의 상태들을 동기화시키며, 하나 이상의 멤버 디바이스들로 데이터를 출력하는 서버 시스템일 수 있는 서버, 예컨대 (임베디드) 세션 서버(152)에 의해 관리될 수 있다. 이 예에서, 제1 디바이스(예컨대, 제1 메시징 애플리케이션)는, 블록(210)에서 입력을 수신하는 것에 대한 응답으로 그리고/또는 블록(212)에서 제1 임베디드 애플리케이션을 실행하는 것에 대한 응답으로 세션 서버에 데이터를 전송할 수 있으며, 여기서 데이터는 제1 임베디드 애플리케이션이 개시되었다는 것을 세션 서버에 표시한다. 일부 구현들에서, 세션 서버는, 이러한 데이터를 수신하는 것에 대한 응답으로 임베디드 세션을 개시할 수 있으며, 임베디드 세션 동안 일부 프로세싱을 수행(예컨대, 오브젝트들을 보관, 프로세스들을 수행 등)할 수 있는 애플리케이션(들)을 실행할 수 있다. 일부 구현들에서, 하나 이상의 클라이언트 디바이스들, 예컨대 임베디드 세션의 임베디드 애플리케이션을 개시했던 제1 디바이스는 임베디드 세션을 관리할 수 있고, 그리고/또는 멤버 디바이스들은 서버 프로세싱 없이 서로 간에 메시지들을 통신할 수 있다. 예컨대, 데이터는 임베디드 세션에 영향을 주는 프로세싱 없이, 각각의 멤버 디바이스로부터, 데이터를 다른 멤버 디바이스들로 중계하는 메시지 라우터로 전송될 수 있다.
[0099] 블록(216)에서, 임베디드 세션이 활성이라는 것을 표시하는 통지 정보가 채팅 대화의 다른 디바이스들에 송신된다. 일부 구현들에서, 통지 정보는, 세션 서버로부터 채팅 대화에 참여하는 다른 디바이스들("채팅 디바이스들"), 예컨대 모든 채팅 디바이스들로 네트워크를 통해 송신될 수 있다. 일부 구현들에서, 통지 정보는 세션 서버에서(또는 제1 메시지 애플리케이션에서) 생성되고, 세션 서버를 통해 다른 채팅 디바이스들로 전송된다. 통지 정보는 임베디드 세션의 식별 및 채팅 대화의 식별뿐만 아니라 임베디드 세션의 현재 멤버들(이 예에서는 현재 제1 사용자임)인 세션 사용자들의 식별들의 리스트를 포함할 수 있다.
[00100] 블록(218)에서, 채팅 사용자들은 임베디드 세션에 합류하고 그리고/또는 그만두는(leave) 것이 가능하게 되며, 채팅 디바이스들은 그러한 합류 및 그만두기 이벤트들을 통지받을 수 있다. 예컨대, 제1 디바이스는 채팅 대화에 참여하는 하나 이상의 다른 사용자 디바이스들에 (예컨대, 일부 구현들에서는 블록(216)의 통지에 포함될 수 있거나 또는 통지와는 별도로 송신될 수 있는) 합류 정보를 송신할 수 있다. 합류 정보는, 각각의 채팅 디바이스에서 사용자 입력을 수신하는 다른 채팅 디바이스들에서 인터페이스 엘리먼트의 디스플레이를 유발할 수 있다. 특정 채팅 디바이스 상의 인터페이스 엘리먼트에서 사용자 입력을 수신하는 것에 대한 응답으로, 특정 디바이스는 임베디드 세션의 멤버 디바이스로서 지정된다. 일부 예시적 구현들에서, 채팅 사용자들은, 그들의 사용자 디바이스들 상에 제공되는 디스플레이된 "합류" 버튼을 선택함으로써 임베디드 세션에 멤버 사용자들로서 합류하는 것이 가능해진다. 일부 구현들에서, 채팅 사용자는, 예컨대 블록(216)의 통지가 채팅 사용자의 디바이스 상에 디스플레이되는 것에 대한 응답으로 임베디드 세션에 합류하기 위한 커맨드를 입력할 수 있다. 디바이스가 임베디드 세션에 합류하는 일부 예들이 도 3 및 도 4와 관련하여 후술된다.
[00101] 멤버 사용자들은 임베디드 애플리케이션을 종료하거나 또는 닫음으로써 그리고/또는 메시징 애플리케이션을 종료하거나 또는 닫음으로써 임베디드 세션을 그만둘 수 있다. 일부 구현들에서, 메시징 애플리케이션 및/또는 임베디드 애플리케이션을 종료하거나 또는 닫는 것은 사용자가 임베디드 애플리케이션 또는 세션에서 멤버쉽을 잃는 것을 트리거링하지 않는다. 그러한 구현들에서, 사용자들은 여전히 임베디드 애플리케이션의 멤버들이며, 예컨대 다른 멤버 디바이스들 상에 디스플레이된 채팅 인터페이스 또는 임베디드 인터페이스에서 오프라인인 것으로 간단히 표시된다. 그러한 구현들의 예들에서, 사용자들은, 임베디드 애플리케이션이 연관되는 채팅 대화를 그만둠으로써 임베디드 세션을 그만둘 수 있다(임베디드 애플리케이션 멤버쉽을 중단함). 일부 예들에서, 채팅 디바이스들에는, 사용자가 임베디드 세션에 합류했거나 또는 임베디드 세션을 그만두었다는 것을 표시하는 통지 및 사용자(또는 사용자 디바이스)의 아이덴티티가 전송된다. 통지는 임베디드 세션의 멤버 디바이스들일 수 있거나 아닐 수 있는 채팅 디바이스들로 전송될 수 있다. 일부 구현들에서, 임베디드 세션의 멤버 사용자가 세션을 그만두는 것에 대한 응답으로 멤버 사용자들의 디바이스들에만 통지가 전송된다.
[00102] 임베디드 세션에 합류한 멤버 디바이스들 각각은, 개별적인 특정 사용자 디바이스 상에 디스플레이된 개별적인 채팅 인터페이스와 연관된 개별적인 임베디드 인터페이스를 제공하는 (제1 임베디드 애플리케이션 및 임베디드 세션에 대응하는) 개별적인 임베디드 애플리케이션을 다운로드하고 그리고/또는 실행한다. 멤버 디바이스들의 임베디드 애플리케이션들은 임베디드 세션에서 네트워크를 통해 서로 통신한다.
[00103] 블록(220)에서, 제1 디바이스 상에서 실행되는 제1 임베디드 애플리케이션은 입력을 수신하고, 상태들을 업데이트하며, 출력을 제공하도록 동작한다. 예컨대, 제1 임베디드 애플리케이션에 의해 수신된 입력은 제1 디바이스의 사용자로부터 제공되는 사용자 입력을 포함할 수 있다. 일부 예들에서, 사용자 입력은, 예컨대 임베디드 인터페이스 내에 디스플레이된 엘리먼트들을 선택하고, 제어기 또는 제스처를 이용하여 방향성 데이터를 특정하고, 텍스트 데이터를 특정하는 등을 위해, 디스플레이된 임베디드 인터페이스에서 수신될 수 있다. 추가적인 예들에서, 사용자 입력, 예컨대 메시지들로서 입력된 텍스트 커맨드 또는 채팅 인터페이스 내의 인터페이스 엘리먼트들의 선택이 채팅 인터페이스에서 수신될 수 있다. 채팅 인터페이스에서 수신된 입력은 프로세싱되고 그리고/또는 메시징 애플리케이션으로부터 임베디드 애플리케이션으로 전달될 수 있다. 일부 구현들에서, 임베디드 애플리케이션은 채팅 대화 정보(예컨대, 사용자 이름들 또는 채팅 아이덴티티들, 사용자 아이콘들 등)에 대한 액세스 및/또는 개인화된 경험을 허용할 수 있는 사용자 프로파일 정보(사용자 이름, 프로파일 사진, 채팅 난독화된 ID)에 대한 액세스를 가질 수 있다. 일부 구현들에서, 임베디드 애플리케이션은 채팅 스트림(예컨대, 채팅 대화에 입력된 채팅 메시지들)에 대한 액세스를 갖지 않는다. 다른 구현들에서, 임베디드 애플리케이션은 채팅 스트림에 대한 완전한 액세스를 가질 수 있고, 그리고/또는 임베디드 애플리케이션은 (사용자에 의해 허용될) 채팅 입력에 대한 더 높은-레벨 액세스를 요청할 수 있고, 그리고/또는 채팅 사용자들에 의해 채팅 대화에 입력되는 채팅 메시지들의 메시징 애플리케이션에 의해 요약들을 제공받을 수 있다. 추가적인 예들에서, 임베디드 애플리케이션은 (예컨대, 사용자 디바이스 또는 서버에 보관된) 채팅 대화와 연관되는 채팅 대화 데이터베이스로부터 입력 채팅 메시지들을 직접 판독할 수 있고 그리고/또는 서버 또는 봇을 통해 채팅 인터페이스에서 채팅 메시지들 및 다른 사용자 입력을 수신할 수 있다. 사용자 입력은 터치스크린 입력, 디스플레이된 키보드 또는 물리적 키보드로부터 제공된 텍스트 입력, 보이스 입력으로부터 제공된 커맨드들, 또는 다른 타입들의 입력일 수 있다.
[00104] 또한, 제1 임베디드 애플리케이션은 임베디드 세션의 멤버 디바이스들로부터 네트워크를 통해 수신된 이벤트 정보를 포함하는 입력(데이터)을 수신할 수 있다. 예컨대, 이벤트 정보는, 다른 멤버 사용자들의 디바이스들에 대해 실행되고 제1 임베디드 애플리케이션에 대응하는 임베디드 애플리케이션들에 의해 그들의 디바이스들 상에 디스플레이되는 연관된 임베디드 인터페이스들로 다른 멤버 사용자들에 의해 제공되는 사용자 입력을 포함할 수 있다. 이러한 사용자 입력 및/또는 다른 데이터(예컨대, 그 사용자 입력에 기반한 임베디드 애플리케이션에 대한 업데이트들 또는 그의 상태들)는 네트워크를 통해 제1 사용자 디바이스에 전송될 수 있다.
[00105] 또한, 입력은, 하나 이상의 다른 멤버 디바이스들(및/또는 세션 서버) 상에서 실행되는 하나 이상의 대응하는 임베디드 애플리케이션들에서 발생하는 하나 이상의 이벤트들 및/또는 애플리케이션 상태들을 표시하는 이벤트 정보를 포함할 수 있으며, 이러한 이벤트 정보는 네트워크를 통해 제1 사용자 디바이스에 전송될 수 있다. 예컨대, 이벤트 정보는 특정 디바이스 상에서 실행중인 대응하는 임베디드 애플리케이션 내에서 발생하는 이벤트들을, 그 임베디드 애플리케이션에 의해 수신된 사용자 입력에 기반하여 설명할 수 있으며, 이러한 정보는 임베디드 세션의 임베디드 애플리케이션들을 동기화시키기 위해 다른 멤버 디바이스들에 전송된다. 일부 구현들에서, 다른 멤버 디바이스들로부터의 이벤트 정보는 서버 시스템에 의해 제1 임베디드 애플리케이션(예컨대, 메시징 서버, 세션 서버 등)으로 전달될 수 있다. 일부 구현들에서, 입력은 제1 디바이스의 제1 메시징 애플리케이션에 의해 수신되며, 제1 메시징 애플리케이션은 정보를 제1 임베디드 애플리케이션에 제공한다.
[00106] 또한, 제1 임베디드 애플리케이션은 네트워크를 통해 하나 이상의 다른 디바이스들(예컨대, 멤버 디바이스들, 서버 시스템들 등)로부터 콘텐츠 데이터를 수신할 수 있다. 예컨대, 제1 임베디드 애플리케이션이 비디오 플레이 애플리케이션(video playing application)이면, 제1 임베디드 애플리케이션은 네트워크를 통해 콘텐츠 서버로부터 비디오 데이터의 스트림을 수신하고, 임베디드 인터페이스에서 비디오 데이터를 디스플레이할 수 있다. 제1 임베디드 애플리케이션이 게임이면, 제1 임베디드 애플리케이션은 다른 멤버 디바이스들 및/또는 게임 서버로부터 게임 데이터를 수신하고, 임베디드 인터페이스에서 게임 데이터를 디스플레이할 수 있다. 제1 임베디드 애플리케이션이 공유된 콘텐츠 문서(예컨대, 아이템들 또는 이벤트들의 리스트, 텍스트 문서 등), 여행 일정, 또는 다른 정보를 디스플레이하면, 제1 임베디드 애플리케이션은 다른 멤버 디바이스들 및/또는 서버 시스템으로부터 이들 아이템들의 콘텐츠 데이터를 수신하고, 임베디드 인터페이스에서 콘텐츠 데이터를 디스플레이할 수 있다. 일부 구현들에서, 콘텐츠 데이터는 제1 디바이스의 제1 메시징 애플리케이션에 의해 수신되며, 제1 메시징 애플리케이션은 콘텐츠 데이터를 제1 임베디드 애플리케이션에 제공한다.
[00107] 일부 예들에서, 제1 임베디드 애플리케이션은 입력에 기반하여 업데이트된다. 예컨대, 제1 임베디드 애플리케이션은, 예컨대, 임베디드 애플리케이션의 하나 이상의 상태들을 변화시키는, 제1 사용자 및/또는 하나 이상의 멤버 디바이스들(및/또는 서버 시스템)로부터 수신되는 입력 데이터에 기반하여 데이터를 수신할 수 있다. 변경된 상태들의 일부 예들에서, 미디어 아이템의 플레이백은 미디어 아이템의 상이한 포인트(예컨대, 비디오의 상이한 시점)으로 업데이트될 수 있고, 게임은 하나 이상의 게임 상태들(예컨대, 게임 환경에서 플레이어 캐릭터 또는 게임 피스의 상이한 포지션을 표시하는 게임의 상태, 플레이어의 스코어의 승(win), 패(loss), 또는 변화를 표시하는 게임의 상태 등)로 업데이트될 수 있고, 공유 리스트는 그 리스트 상에 하나 이상의 아이템들을 추가하거나 그 리스트 상의 하나 이상의 아이템들을 제거 또는 변화시키기 위해 업데이트될 수 있고, 극장 좌석의 예약이 입력되거나 시간 또는 장소가 변경되거나, 또는 제거될 수 있는 식이다. 유사하게, 입력은 임베디드 세션의 이벤트(예컨대, 임베디드 세션에서 데이터를 제공하는 서버 또는 멤버 디바이스의 대응하는 임베디드 애플리케이션에서의 이벤트), 이를테면, 사용자 입력에 기반하여 게임에서 발생하는 이벤트(예컨대, 상이한 멤버 디바이스 또는 서버에서 실행중인 게임 코드에 의해 결정된 게임 이벤트)를 설명하는 이벤트 정보를 포함할 수 있다. 이러한 이벤트 정보는 제1 임베디드 애플리케이션이 그 상태를 업데이트하게 하여, 임베디드 세션과 동기화되도록, 예컨대, 하나 이상의 대응하는 임베디드 애플리케이션들과 동기화되도록 할 수 있다. 일부 구현들에서, 다른 멤버 디바이스들의 다른 임베디드 애플리케이션들은 유사하게, 이벤트 정보 및 개별적인 멤버 디바이스들에서 수신된 입력에 기반하여 업데이트될 수 있다.
[00108] 임베디드 애플리케이션에 의해 제공되는 출력은 임베디드 애플리케이션에서 발생하는 이벤트들 및/또는 수신된 입력에 기반한다. 예컨대, 출력은 임베디드 인터페이스에 디스플레이되는 출력 데이터를 포함할 수 있다. 예컨대, 임베디드 인터페이스는 임베디드 애플리케이션에 의해 제공되는 인터페이스 엘리먼트들, 제어부들 및 다른 피처들을 디스플레이할 수 있다. 다른 예에서, 임베디드 애플리케이션은 임베디드 인터페이스에 데이터가 디스플레이되게 하여 그래픽 게임 환경, 3차원(3-D) 환경 등을 제공하게 할 수 있다(이를테면, 디스플레이 스크린(들) 상의 디스플레이, 가상 현실 및/또는 증강 현실 디스플레이 디바이스들에 의한 디스플레이 등). 일부 구현들에서, 출력은 상이한 디바이스로부터의 제1 디바이스 및 제1 임베디드 애플리케이션에 의해 수신된 데이터, 예컨대, 콘텐츠 서버(154)와 같은 서버 또는 임베디드 세션의 멤버 디바이스로부터 수신된 콘텐츠 데이터를 포함할 수 있다.
[00109] 일부 구현들에서, 임베디드 인터페이스에 의해 디스플레이되는 출력 데이터는 그러한 출력 데이터가 디스플레이되는 디바이스의 특정 사용자에 대해 맞춤화될 수 있다(customized). 예컨대, 제1 사용자는 디스플레이 상의 임베디드 인터페이스의 로케이션, 사이즈, 형상 등을 표시하는 사용자 선호도들, 및 임베디드 인터페이스에 디스플레이되는 출력 데이터의 사용자-선호 컬러 스킴(color scheme) 또는 다른 시각적 피처들을 저장했을 수 있다. 일부 예들에서, 제1 사용자는 특정 임베디드 애플리케이션에 특정한 사용자 선호도들, 예컨대 특정된 임베디드 애플리케이션에서의 사용자-선호 사용자 상황 또는 역할을 표시하는 선호도들, 특정 타입들의 임베디드 애플리케이션들에 대한 사용자-선호 인터페이스 엘리먼트 레이아웃 등을 저장했을 수 있다. 그러한 선호도들은, 예컨대, 메시징 애플리케이션으로부터 임베디드 애플리케이션으로 제공되어 그러한 임베디드 애플리케이션에 의해 구현될 수 있다.
[00110] 일부 예들에서, 제1 임베디드 애플리케이션으로부터 제공되는 출력은 제1 디바이스에 의해 디스플레이되는 임베디드 인터페이스(예컨대, 임베디드 뷰)에 대한 시각적 업데이트들을 포함할 수 있다. 예컨대, 새로운 시점에서 플레이가능한 미디어 데이터(예컨대, 이미지 또는 비디오 데이터)는 그 시점에 대한 업데이트에 기반하여 디스플레이될 수 있고, 디스플레이되는 게임에 대한 하나 이상의 변화들이 디스플레이될 수 있고, 콘텐츠 문서(리스트, 문서, 챠트 등)에 대한 변화들이 디스플레이될 수 있는 식이다.
[00111] 추가의 예들에서, 제1 임베디드 애플리케이션은 채팅 대화로부터의 콘텐츠 데이터를 프로세싱(예컨대, 메시징 애플리케이션에 의해 제공되는 채팅 메시지들을 파싱하고 그리고/또는 그렇지 않으면 프로세싱)하여, 연관된 채팅 대화에서 언급된 하나 이상의 토픽들과 문맥상 관련되는 출력 데이터를 임베디드 인터페이스, 및/또는 임베디드 인터페이스 그 자체에 제공할 수 있다. 예컨대, 대화 내의 채팅 메시지들은 플레이할 특정 미디어 아이템의 표시들을 포함했을 수 있으며, 그러한 미디어 아이템은 임베디드 애플리케이션에 의해 자동적으로 선택되어 플레이될 수 있다. 다른 예에서, 채팅 메시지들은 사용자가 게임에서 특정 편 또는 팀에서 플레이하기를 원한다는 것을 표시할 수 있고, 사용자는 임베디드 애플리케이션에 의해 그 팀에 자동적으로 할당될 수 있다. 임베디드 인터페이스의 다수의 시각적 외관들(예컨대, 컬러들, 시각적 스타일들 등), 및/또는 임베디드 인터페이스에 디스플레이되는 상이한 이용가능한 선택부들 또는 제어부들이, 상이한 버전들의 임베디드 인터페이스에 제공될 수 있다. 예컨대, 임베디드 인터페이스는, 사용자 상황 또는 사용자의 역할, 플레이되는 미디어 아이템의 타입(예컨대, 비디오 대 이미지) 등에 기반하여, 상이한 멤버 디바이스들에 대해 상이한 버전들로 디스플레이될 수 있다.
[00112] 추가적인 예들에서, 임베디드 애플리케이션은 대화들을 요약하고, 나중에 디스플레이될 수 있는 중요한 정보를 자동적으로 보관할 수 있다. 예컨대, 사용자는 "요약" 임베디드 애플리케이션을 열 수 있으며, 그리고 임베디드 애플리케이션은, 읽기 위한 많은 채팅 메시지들의 기록을 디스플레이하는 대신(또는 그러한 기록을 디스플레이하는 것 이외에), 사용자에 의해 특정된 시간 기간 및/또는 사용자가 오프라인이었던 시간 기간 동안 대화의 채팅 사용자들에 의해 입력된 메시지들의 요약 개요를 디스플레이할 수 있다.
[00113] 추가적인 예들에서, 임베디드 애플리케이션은, 사용자 디바이스 또는 상이한 디바이스들에서 실행되는 풀 애플리케이션(full application)의 "경량(lightweight)"(예컨대, 감소된-피처 또는 감소된-기능성) 버전일 수 있다. 경량 버전은, 저장 공간, 실행 메모리 등을 덜 필요로 하는, 풀 애플리케이션의 버전으로서, 풀 애플리케이션을 론칭(launching)하지 않고 실행될 수 있으며, 그리고 풀 애플리케이션의 피처들 및/또는 기능들의 서브세트(예컨대, 풀 세트보다 더 적음)를 가질 수 있다. 일부 예들에서, 풀 게임 애플리케이션은 제1 사용자의 상이한 디바이스(예컨대, 데스크톱 또는 랩톱 컴퓨터) 상에 설치될 수 있으며, 그리고 게임 애플리케이션의 경량 버전은 사용자 디바이스 상에서 임베디드 애플리케이션으로서 실행될 수 있다. 이러한 경량 게임 애플리케이션은, 제1 사용자가 임베디드 인터페이스에 사용자 입력을 제공하여, 풀 게임 애플리케이션에서 사용되는 제1 사용자의 계정 또는 제1 사용자와 관련된 게임 데이터 또는 게임 설정들을 변화시키도록 허용할 수 있다. 이러한 변화들은 풀 게임 애플리케이션에서 사용되는 제1 사용자의 게임 자원들의 관리, 예컨대, 게임 아이템들의 인벤토리(inventory) 조직화, 게임 내의 아이템들의 구매 또는 판매, 제1 사용자의 계정의 특정 게임 능력들에 대한 포인트들의 할당, 선호도들 또는 디스플레이 설정들의 변화, 간단한 게임 액션들의 수행 등을 포함할 수 있다. 경량 애플리케이션에 대해 사용자가 행한 변화들은 풀 게임 애플리케이션에 저장되는바, 예컨대, 서버에서 사용자의 계정에 저장되며, 그리고 그러한 풀 애플리케이션이 실행되고 있을 때 풀 게임 애플리케이션에 의해 액세스되며, 예컨대, 서버와 동기화될 수 있다. 유사하게, 미디어 아이템 플레이어 프로그램, 그래픽 편집 프로그램, 워드 프로세서 또는 기타 애플리케이션 프로그램을 위한 경량 버전으로 변경들이 행해질 수 있다. 일부 구현들에서, 임베디드 세션의 다른 멤버 사용자들은 경량 애플리케이션을 공유하여, 풀 애플리케이션의 자신들의 데이터 및 설정들을 조정하고 그리고/또는, 예컨대, 제1 사용자가 온라인이 아닌 경우, 제1 사용자의 데이터 및 설정들을 변화시킬 수 있다. 일부 예들에서, 경량 버전 임베디드 애플리케이션은 상이한 디바이스들 상에서 실행되는 애플리케이션의 사용자 디바이스들 상에 공유되는 제2-스크린 경험을 제공할 수 있다.
[00114] 일부 구현들에서, 임베디드 애플리케이션은, 제1 사용자 디바이스 또는 제1 사용자 디바이스와 통신하는 다른 디바이스 상에서, 외부 애플리케이션, 예컨대, 메시징 애플리케이션 외부의 상이한 임베디드 애플리케이션 또는 다른 애플리케이션의 개시 및 실행을 트리거링할 수 있다. 예컨대, 외부 애플리케이션은, 상술된 바와 유사하게, 임베디드 애플리케이션에 의해 구현되는 경량 버전에 대응하는 풀 애플리케이션일 수 있다. 일부 예들에서, 임베디드 애플리케이션은 업무의 프로세싱을 완료(예컨대, 거래의 결과를 결정하고, 렌더링된 디스플레이 비트맵을 제공하는 등)하기 위해 외부 애플리케이션을 개시할 수 있다. 일부 구현들에서, 임베디드 애플리케이션은 채팅 인터페이스 및 채팅 대화에 디스플레이될 선택가능한 데이터(예컨대, 단어들, 링크들, 버튼들 등)를 제공할 수 있다. 예컨대, 임베디드 애플리케이션은 선택가능한 데이터를 메시징 애플리케이션에 제공할 수 있으며, 메시징 애플리케이션은 선택가능한 데이터를 채팅 인터페이스 및 채팅 대화에 디스플레이할 수 있다. 선택가능한 콘텐츠는 사용자 입력에 의해 선택가능하며, 예컨대, 터치스크린 또는 다른 입력 디바이스를 통해 클릭될 수 있다. 사용자 입력에 의해 선택될 때, 선택가능 데이터는 커맨드가 디바이스의 운영 시스템에 전송되게 하여, (예컨대, 사용자 디바이스 상에서) 외부 애플리케이션을 개시 및 실행할 수 있으며, 여기서, 다른 애플리케이션은 선택가능한 데이터에서 식별되거나 이와 연관될 수 있다(예컨대, 선택가능한 데이터의 타입과 연관된 디폴트 애플리케이션).
[00115] 추가의 예들에서, 상술된 바와 같이 외부 애플리케이션을 개시할 때, 연관된 데이터, 이를테면 파라미터들, 구성 설정들, 및/또는 인수들이 외부 애플리케이션에 전달되어, 그러한 외부 애플리케이션으로부터 특정 데이터를 제공할 수 있다. 일부 예들에서, 임베디드 애플리케이션은 특정 주소와 연관된 맵 아이콘을 생성할 수 있고, 이러한 아이콘은 채팅 인터페이스에 디스플레이된다. 사용자 입력에 의해 아이콘이 선택될 때, 맵 애플리케이션 프로그램이 개시되며, 연관된 주소의 선택된 로케이션을 포함하는 맵을 뷰에 디스플레이한다. 추가적인 예들에서, 임베디드 애플리케이션에 의해 채팅 인터페이스에 전송된 아이템 설명을 선택함으로써, 외부 쇼핑 애플리케이션이 개시될 수 있으며, 그리고 외부 쇼핑 애플리케이션의 체크아웃 쇼핑 디스플레이는 쇼핑 디스플레이의 필드들에 자동적으로 채워진 사용자의 정보를 포함할 수 있다. 추가의 예들에서, 사용자들은 공유되는 임베디드 예약 애플리케이션을 사용하여 호텔 로케이션 및 룸을 선택하며, 그리고 채팅 인터페이스 또는 임베디드 인터페이스에 디스플레이된 제어부(예컨대, "호텔 룸 예약" 버튼)를 선택하면, 사용자 디바이스에서 외부의 풀 예약 애플리케이션이 열린다. 풀 예약 애플리케이션은 임베디드 애플리케이션으로부터의 예약 정보로 자동적으로 채워지는 예약 인터페이스를 디스플레이하며, 사용자는 예약 인터페이스에서 "지불" 버튼을 선택하여, 예약을 위해 호텔에 지불할 수 있다.
[00116] 일부 구현들에서, 제1 임베디드 애플리케이션은, 제1 사용자 디바이스 상에 설치된 하나 이상의 외부 애플리케이션들을 검출하며, 그리고 이러한 외부 애플리케이션들 중 하나 이상에 의해 제1 사용자 디바이스 상에 디스플레이되는 콘텐츠 데이터를 수정할 수 있다. 예컨대, 임베디드 애플리케이션은 풀 버전 (외부) 애플리케이션(풀 애플리케이션)의 경량 버전(예컨대, 경량 애플리케이션)일 수 있다. 예컨대, 제1 사용자 디바이스 상의 경량 애플리케이션이, 대응하는 풀 애플리케이션이 제1 사용자 디바이스 상에 설치되었음을 검출한다면, 경량 애플리케이션은, 예컨대, 메시징 애플리케이션을 통해, 풀 애플리케이션과 통신함으로써, 풀 애플리케이션에서의 특별한 피처들(예컨대, 추가적인 제어부들, 디스플레이되는 데이터 등)을 가능하게 할 수 있다. 일부 구현들에서, 풀 애플리케이션과 경량 애플리케이션(임베디드 애플리케이션) 간에 보완적인 관계가 제공될 수 있다. 일부 예들에서, 풀 애플리케이션은 백그라운드에서(예컨대, 제1 사용자 디바이스에 의해 디스플레이되지 않음) 데이터를 통신할 수 있으며, 그에 따라, 경량 애플리케이션은 백그라운드에서 풀 애플리케이션과 직접 통신하여 데이터에 액세스하거나 데이터를 교환할 수 있다. 이러한 통신은, 예컨대, 경량 애플리케이션과 인증 서버 간에 추가적인 인증을 필요로 하지 않으면서, 경량 애플리케이션 및/또는 풀 애플리케이션에서 디스플레이되는 데이터 및 옵션들을 트리거링할 수 있다. 예컨대, 풀 예약 애플리케이션 상에서의 로그인 프로세스는, 예약을 수행하기 위해 경량 애플리케이션 내에서 사용자가 재인증할 것을 요구하지 않으면서, 사용자 디바이스 상의 풀 애플리케이션 내에 등록된 사용자의 풀 애플리케이션 계정을 사용하여, 대응하는 경량 애플리케이션에 의해 트리거링될 수 있다.
[00117] 일부 구현들에서, 제1 임베디드 애플리케이션으로부터의 출력은, 제1 디바이스의 채팅 인터페이스에 제공되고/되거나 채팅 대화에 제공되는 데이터, 예컨대, 채팅 대화에 참여하는 채팅 디바이스들의 채팅 인터페이스들 상에 디스플레이되는 데이터를 포함할 수 있다. 예컨대, 제1 임베디드 애플리케이션은 데이터를 제1 메시징 애플리케이션(이는 채팅 인터페이스에 데이터를 출력함) 및/또는 다른 채팅 디바이스들에 제공할 수 있다. 일부 예들에서, 임베디드 애플리케이션은 이벤트들 또는 통지들을 설명하는 데이터를 메시지 애플리케이션에 전송할 수 있고(그리고/또는 메시지 애플리케이션은, 이벤트들 및 통지들을 설명하는 데이터를 다른 디바이스들로부터 수신할 수 있음), 그리고 메시지 애플리케이션은 이벤트들 또는 통지들을 설명하는 데이터를 채팅 대화에 디스플레이하여, 임베디드 세션들 내에서의 발생 및 이벤트들에 관한 사용자들의 관여, 기억 및 인식을 향상시킬 수 있다. 예컨대, 채팅 인터페이스에 대한 출력은 텍스트 또는 다른 타입의 채팅 메시지(또는 이미지, 비디오, 오디오 등)로서 제공될 수 있다. 채팅 대화에 대한 출력은 채팅 대화에 참여하는 모든 사용자 디바이스들의 채팅 인터페이스에 디스플레이되도록 모든 채팅 디바이스들에 송신될 수 있다. 일부 구현들에서, 채팅 대화에 대한 출력은, 출력을 디스플레이하기 위해, 참여하는 채팅 디바이스들의 서브세트에 송신될 수 있다. 예컨대, 출력은 채팅 대화에서 제공될 수 있고, 멤버 사용자들, 또는 제1 사용자에 의해 선택 또는 지정된 특정 채팅 사용자들에게 가시적일 수 있다. 일부 구현들에서, 채팅 인터페이스 및 채팅 대화에 출력되는 이러한 데이터는 메시징 애플리케이션 외부에서, 예컨대, 제1 사용자 디바이스 상에서 실행되는 다른 애플리케이션들에 대해 공유될 수 있다. 일부 예들에서, 메시징 애플리케이션 외부에서 공유되는 이러한 데이터는, 사용자에 의해 선택되거나 상이한 애플리케이션에 의해 프로세싱될 때, 메시징 애플리케이션이 사용자 디바이스 상에서 전경을 열거나 전경으로 이동하게 할 수 있고, 그리고 임베디드 애플리케이션이 실행되고 사용자가 임베디드 세션에 합류하게 할 수 있다.
[00118] 일부 예들에서, 채팅 대화에 출력되는 통지들은, 세션에서 임베디드 애플리케이션에 의해 제공되는, 사용자 액션들과 관련된 임베디드 세션에서 발생하는 이벤트들, 콘텐츠 데이터, 게임 내의 이벤트들 등의 설명들을 포함할 수 있다. 예컨대, 이러한 통지들은, (플레이되고 있는 장면에 의해 트리거링된) "User1 and User2 are watching the party scene movie Adventure in Time," (이러한 게임 이벤트에 의해 트리거링된) "User1 re-took the lead score in the Toads game!," 또는 (사용자가 임베디드 애플리케이션에서 이러한 아이템들을 예약함으로써 트리거링된) "User2 just reserved tickets to the Jubilee concert!"를 포함할 수 있다. 일부 구현들에서, 통지들은 텍스트, 이미지들, 비디오들, 오디오 출력, 시네마그래프들, 또는 다른 타입들의 콘텐츠 데이터를 포함할 수 있다. 일부 구현들에서, 이벤트들에 대한 이러한 설명들은 후술되는 대화형 카드(interactive card)들 상에 디스플레이될 수 있고, 이는 채팅 사용자가 통지/카드에 입력을 제공하여 임베디드 세션에 합류하거나 또는 임베디드 애플리케이션에 입력을 제공하게 허용할 수 있다. 추가적인 예들에서, 임베디드 애플리케이션은 채팅 대화에서 채팅 사용자들의 리스트(예컨대, 난독화된 채팅 ID들)에 액세스할 수 있으며, 그리고 채팅 대화에 대한 초대들을 발행하여, 비-멤버 채팅 사용자들이 임베디드 세션에 합류하게 할 수 있으며, 여기서, 예컨대, 비-멤버 채팅 사용자들은 초대를 선택하여, 자신들의 디바이스가 임베디드 세션에 합류하게 할 수 있다.
[00119] 일부 예들에서, 임베디드 애플리케이션은 사용자 대신에(예컨대, 후술되는 바와 같이, 사용자의 승인으로) 채팅 대화에 채팅 메시지들을 전송할 수 있다. 일부 구현들에서, 그러한 메시지들의 속성은 사용자의 채팅 아이덴티티가 아닌 임베디드 애플리케이션에 대한 것일 수 있으며, 예컨대, 임베디드 애플리케이션은 그 자신의 채팅 아이덴티티를 그 채팅 메시지들의 발신자(originator)로 가정할 수 있다. 이러한 채팅 메시지들은, 임베디드 애플리케이션에서 사용자에 의해 수행된 편집, 임베디드 애플리케이션에서 사용자에 의해 편집된 웹 콘텐츠 스니펫(snippet)들 등으로부터 비롯되는 밈(meme)들, 텍스트, 이미지들, 비디오들, 또는 다른 타입의 콘텐츠 데이터를 포함할 수 있다. 일부 예들에서, 다른 채팅 디바이스들의 채팅 인터페이스에 디스플레이되는, 임베디드 애플리케이션의 속성 또는 이름은 사용자 입력에 의해 선택가능할 수 있으며, 선택되는 경우, 동일한 공유 콘텐츠 데이터를 편집하거나 다른 콘텐츠 데이터 아이템을 편집하도록 임베디드 애플리케이션이 열리게 한다.
[00120] 임베디드 인터페이스는 채팅 대화에 대한 추가적인 피처들을 수정, 설정 또는 가능하게 하기 위해 디스플레이되는 옵션들을 제공할 수 있다. 예컨대, 이러한 피처들은 자동-응답 피처(이전의 유사한 질문들에 대한 제1 사용자로부터의 이전 회답들에 의한 자동-회답 질문들 또는 무작위 제안된 응답 선택), 특정 단어들이 채팅 대화로 전송되거나 제1 디바이스에 디스플레이하도록 수신되기 전에 그러한 특정 단어들을 검열하거나 교체하는 것 등을 포함할 수 있다. 예컨대, 임베디드 애플리케이션은 사용자에 대한 채팅 대화 경험을 수정하기 위해 API들을 사용할 수 있다. 따라서, 일부 구현들에서, 임베디드 애플리케이션은 메시징 애플리케이션 내에서 제공되는 피처들 및/또는 수정된 설정들을 가능하게 하는 시각적 인터페이스를 제공한다(예컨대, 채팅 사용자들에 대해 공유 콘텐츠 데이터를 제공하는 대신 또는 그 이외에, 메시징 애플리케이션 피처들을 제공함).
[00121] 추가적인 예들에서, 채팅 대화에 출력되는 통지들(또는 다른 데이터)은 채팅 사용자들에 의해 입력되는 채팅 메시지들에 기반하는 메시지들을 포함할 수 있다. 예컨대, 제1 임베디드 애플리케이션은 채팅 대화에서 사용자에 의해 입력된 채팅 메시지들의 리스트를 체크하고, (예컨대, 보관된 사전을 참고하거나, 속어 및 어휘로 트레이닝된 머신 학습 모델을 사용하는 등에 의해) 채팅 메시지들에서 속어 대 적절한 어휘의 사용을 결정하며, 그리고 채팅에서의 사용자의 글(writing)에 대한 스코어를 표시하는 레이팅을 통지에 출력할 수 있다. 임베디드 애플리케이션은, 예컨대, 채팅 메시지들에서 사용자에 의한 특정 단어들의 사용 빈도, 또는 특정 단어들을 사용하고자 하는 사용자에 대한 도전을 결정하고 통지들에 표시할 수 있고 (그리고 나중의 통지들에서 사용자가 특정 단어들을 사용했음을 확인할 수 있다). 일부 구현들에서, 채팅 대화에 출력되는 통지들은, 임베디드 세션에서 발생하는 이벤트들, 예컨대, 초대들, 다른 사용자들에 대한 도전들("beat my score," "guess my drawing," "I built a tower, try to destroy it")의 표시로서, 임베디드 세션의 하나 이상의 멤버 사용자들로부터 상이한 멤버 사용자로의 메시지들, 또는 자랑하는/불평하는 메시지들 또는 통지들(예컨대, 한 플레이어가 다른 플레이어의 캐릭터를 죽였거나, 한 플레이어가, 다른 플레이어가 자신의 펫을 훔쳤다고 컴플레인하는 등)을 포함할 수 있다.
[00122] 일부 추가적인 예들에서, 채팅 대화 메시지 스트림에 액세스할 수 있는 임베디드 애플리케이션은 채팅 대화와 관련된 정보, 예컨대, 대화의 하이-레벨 요약, 채팅 사용자들에 의해 채팅 대화에서 공유되었던 콘텐츠 데이터의 리스트 또는 기록, 채팅 인터페이스 또는 임베디드 인터페이스 내의 디스플레이(예컨대, 피닝(pinning)) 제어부들 또는 다른 옵션들(이는 사용자가 채팅 대화로부터, 수집된 토픽들, 정보, 또는 공유 콘텐츠 데이터를 선택하여 나중을 위해 저장하고, 사용자의 즐겨찾기 리스트에 저장하는 등을 하게 허용함)을 제공할 수 있다. 예컨대, 임베디드 애플리케이션(예컨대, 특정 "요약기" 타입의 임베디드 애플리케이션)은 채팅 대화에서 공유된 토픽들을 검출하고 그러한 토픽들과 관련된 리마인더들, 요약들, 및/또는 액션들을 제공할 수 있다. 일부 예들에서, 사용자 1은 사용자 2에게 "don't forget Kenny's birthday on Saturday"라고 말하며, 그리고 임베디드 애플리케이션은, 개시될 때, 사용자 1 및 사용자 2의 사용자 디바이스들에 보관된 사용자 1 및 사용자 2의 캘린더들에 캘린더 이벤트를 자동적으로 추가하거나, 제안된 커맨드 또는 통지를 디스플레이하여, 임베디드 애플리케이션으로 하여금, 사용자에 의해 이러한 커맨드 또는 통지가 선택될 때 캘린더 이벤트를 추가하게 한다. 다른 예에서, 사용자 3은 다음 주의 동창회 저녁을 위한 식당의 주소 또는 로케이션을 포함하는 메시지를 채팅 대화에 입력하며, 그리고 임베디드 애플리케이션은 채팅 인터페이스에 자동-피닝(pin)(지속적으로 디스플레이)하거나 그렇지 않으면 로케이션을 요약으로서 보관하며, 그에 따라, 제1 사용자는 일주일 후에 그 로케이션을 찾기 위해 오래된 채팅 메시지들을 검토하고 스크롤할 필요가 없다. 예컨대, 요약들은 채팅 대화에 입력되는 서술 및 식별 정보(예컨대, 시간들, 로케이션들, 이름들, 전화 번호들, 주소들 등)을 포함할 수 있고, 그리고/또는 채팅 대화에서 다른 채팅 사용자들로부터 반응들을 수신한 메시지들(예컨대, 사용자 승인들, 감탄 메시지들 등)을 포함할 수 있다. 다른 예에서, 사용자 1은 채팅 대화에서 최근의 회사 여행에서 캡처된 이미지들을 공유하며, 그리고 임베디드 애플리케이션은 모든 채팅 사용자들과 공유되는(예컨대, 네트워크를 통해 서버에 보관된) 공유되는 그룹 사진 앨범 "Company trip to Vegas"에 이미지들을 자동적으로 (사용자 동의하에) 업로드한다. 일부 구현들에서, 임베디드 애플리케이션이 채팅 대화 콘텐츠 데이터에 기반하여 그러한 액션들을 실행할 능력을 갖지 않는 다면, 해당 능력을 가지며 그리고 그러한 액션들을 실행하는 상이한 임베디드 애플리케이션(또는 다른 애플리케이션)의 개시 및 실행을 트리거링할 수 있다. 일부 구현들에서, 임베디드 애플리케이션의 하나 이상의 그러한 액션들은, 본원에 설명된 바와 같이, 선택된 커맨드들을 구현하기 위해 제1 사용자에 의해 선택될 수 있는 제안된 커맨드들 및/또는 제안된 메시지들로서 제공될 수 있다.
[00123] 일부 구현들에서, 채팅 대화에 대한 통지는, 네트워크를 통해 메시징 애플리케이션 및/또는 임베디드 애플리케이션과 통신하여 서버 상에 발생된 하나 이상의 특정 이벤트들 또는 특정 타입들의 이벤트들(예컨대, 서버 이벤트들), 예컨대, 서버 상에서 실행되는 서버 애플리케이션에서 프로세싱된 이벤트들에 대한 응답으로 제공될 수 있다. 서버는 서버 이벤트 정보를 멤버 디바이스들 중 하나 이상에 전송할 수 있고, 그에 따라, 메시징 애플리케이션은 채팅 대화에서 서버 이벤트 정보를 디스플레이한다. 일부 예들에서, 이러한 서버는 다른 네트워크 사용자들에 대한 제2 콘텐츠 데이터를 관리할 수 있고, 여기서, 제2 콘텐츠 데이터는 서버가 제1 사용자 디바이스 상의 임베디드 애플리케이션에 제공하고 있는 제1 콘텐츠 데이터(예컨대, 미디어 아이템 데이터, 게임 데이터 등)와 동일하거나 또는 그와 관련된다. 예컨대, 서버는, 다른 임베디드 애플리케이션들 및/또는 다른 메커니즘들(예컨대, 웹 사이트들, 사용자 디바이스들 상의 전용 뷰잉 애플리케이션들 등)을 통해 (예컨대, 채팅 대화에 참여하지 않는) 다른 사용자 디바이스들 상의 콘텐츠 데이터에 액세스하는 하나 이상의 다른 사용자들에게 네트워크를 통해 제2 콘텐츠 데이터를 전송할 수 있다. 서버는, 제2 콘텐츠 데이터가 임베디드 애플리케이션에 제공되는 제1 콘텐츠 데이터(예컨대, 동일한 타이틀의 미디어 아이템, 게임 등)와 동일하거나 유사한지 여부를 검출할 수 있다. 또한, 서버는, 서버 이벤트들로서 자격을 갖출 수 있는 제1 콘텐츠 데이터 및 제2 콘텐츠 데이터와 연관된 사용자 액션들을 검출할 수 있다. 예컨대, 서버는, 제2 콘텐츠 데이터가 다른 사용자들로부터, 예컨대, 임계 개수의 유리한 레이팅들을 통해 다수의 유리한 사용자 레이팅들을 수신했음을 검출할 수 있다. 이는 서버 이벤트로서 미리 정의될 수 있어서, 서버로 하여금 서버 이벤트 정보(예컨대, "this movie has received 1 million approvals!")를 제1 임베디드 애플리케이션에 전송하여 임베디드 인터페이스에 디스플레이하게 하고, 그리고/또는 메시징 애플리케이션에 전송하여 채팅 인터페이스에 디스플레이하게 한다.
[00124] 일부 구현들에서, 사용자 동의가 획득된다면, 임베디드 애플리케이션으로부터 제공되는 출력은 임베디드 인터페이스에서 제1 사용자로부터 수신된 사용자 입력에 기반한 입력 정보를 포함할 수 있으며, 여기서, 메시징 애플리케이션은, 예컨대, 다른 멤버 디바이스들에서의 디스플레이 등을 위해, 네트워크를 통해 입력 정보를 서버에 전송한다. 메시징 애플리케이션은 또한, 또는 대안적으로, (사용자 동의를 획득한 경우) 입력 정보를 결정하여 서버에 전송할 수 있으며, 여기서, 입력 정보는 임베디드 인터페이스 외부의 채팅 인터페이스에서 수신된 사용자 입력에 기반한다. 예컨대, 사용자 입력은 임베디드 세션 등에서 플레이되고 있는 콘텐츠 아이템(예컨대, 미디어 아이템 또는 게임)과 연관된 채팅 메시지, 사용자 코멘트들 또는 레이팅들일 수 있다. 일부 구현들에서, 이러한 코멘트들 또는 레이팅들은 서버에 의해 수신될 수 있으며 그리고 서버가 디바이스들에 제공하는 콘텐츠 아이템과 연관될 수 있다. 서버는 서버 상의 콘텐츠 아이템에 액세스하는 사용자 디바이스들에게 코멘트들 또는 레이팅들을 제공할 수 있다. 예컨대, 채팅 대화에 참여하지 않는 다른 사용자 디바이스들은, 예컨대 상이한 임베디드 세션들 또는 다른 애플리케이션들을 통해 서버 상의 해당 콘텐츠 아이템에 액세스할 수 있다. 이러한 다른 사용자 디바이스들은 또한, 제1 사용자에 의해 제공되는 코멘트들 또는 레이팅들에 액세스할 수 있다. 예컨대, 사용자 코멘트들 또는 레이팅들과 같은 사용자 입력은 다른 사용자 디바이스들에 전송되어, 그러한 다른 사용자 디바이스들 상의 임베디드 인터페이스들 또는 다른 애플리케이션 프로그램들에서 디스플레이될 수 있다.
[00125] 일부 구현들에서, 사용자 동의가 획득된 경우, 서버에 전송되는 입력 정보는 제1 디바이스 상의 임베디드 애플리케이션들에서 플레이된 특정 콘텐츠 아이템들을 표시하는 정보를 포함할 수 있다. 서버는 입력 정보에 기반하여 콘텐츠 아이템들의 사용자 선택들의 보관된 이력들을 업데이트할 수 있으며, 이력은 제1 디바이스의 제1 사용자와 연관된다. 보관된 이력은 또한, 서버에 의해 보관되고 그리고 제1 사용자에 의해 사용되는 다른 애플리케이션에서 뷰잉되는 콘텐츠 아이템들의 사용자 선택들을 표시할 수 있다. 일부 구현들에서, 서버는 보관된 이력을 사용하여, 제1 사용자에 의해 서버 상에서 이전에 액세스된 콘텐츠 아이템들과 (예컨대, 장르, 다른 사용자들에 의한 뷰잉들 등에 있어서) 관련된, 사용자에 대한 제안된 콘텐츠 아이템들을 결정할 수 있다. 일부 구현들에서, 이러한 서버-제안 콘텐츠 아이템들은 콘텐츠 아이템들의 타입을 플레이하는 임베디드 애플리케이션에 의해 그리고/또는 채팅 인터페이스에 디스플레이될 수 있다.
[00126] 또한, 임베디드 애플리케이션, 봇(아래의 봇 설명들 참조) 또는 서버에 의해 생성된 정보는, 새로운 조건들이 트리거링되는 경우 임베디드 애플리케이션, 봇 또는 서버에 의해 업데이트될 수 있다. 일 예에서, 사용자 1은 임베디드 미디어 플레이어 애플리케이션을 사용하여 채팅 대화의 임베디드 세션에서 비디오를 공유한다. 사용자 2는 자신의 디바이스에서 대응하는 임베디드 미디어 플레이어 애플리케이션을 열고 레이팅에 따라 비디오에 코멘트를 달거나 등급을 매긴다. 임베디드 애플리케이션, 봇 또는 서버는 공유된 비디오를 업데이트하고, 그리고 채팅 대화에 디스플레이되는 비디오를 설명하는 통지를 업데이트하여, 새로운 정보를 반영하여 채팅 사용자들에게 전파할 수 있다(예컨대, 비디오가 이제 +1 사용자 승인들, +1 사용자 코멘트들을 갖는다는 표시를 디스플레이한다). 일부 구현들에서, 임베디드 세션에 대한 업데이트가능한 "대화형 카드들"은 채팅 대화들에서 공유되며, 이는 서버, 봇 또는 임베디드 애플리케이션에 의해 제어될 수 있다.
[00127] 일부 구현들에서, 제1 임베디드 애플리케이션으로부터의 출력 데이터가 디스플레이를 위해 서버로 그리고/또는 채팅 대화로 출력될 때, 채팅 대화에서 데이터가 출력되도록 허용할지 여부를 제1 사용자가 선택할 수 있도록 하기 위해, (예컨대, 사용자-선택가능한 옵션을 갖는) 프롬프트가 디스플레이된다. 예컨대, 프롬프트는, 사용자가 승인한 경우, 채팅 대화 또는 서버로 전송될 메시지를 디스플레이할 수 있다. 일부 구현들에서, 프롬프트는 채팅 대화로의 특정 타입들의 출력 데이터(예컨대, 특정 타입들의 이벤트들을 표시하는, 미리정의된 키워드들을 갖는 특정 타입들의 메시지들, 멤버 사용자에 의해 임베디드 애플리케이션에 제공되는 특정 타입의 액션 또는 커맨드에 대한 응답인 출력 데이터 등)에 대해 디스플레이될 수 있으며, 다른 타입들에 대해서는 디스플레이되지 않는다. 프롬프트는 특정 타입들의 임베디드 애플리케이션들에 대해 디스플레이될 수 있으며, 다른 타입들에 대해서는 디스플레이되지 않는다. 일부 구현들에서, 프롬프트가 디스플레이될 조건들을 결정하기 위해, 제1 사용자는 액세스되는 액세스가능한 사용자 선호도들을 저장했을 수 있다. 예컨대, 사용자 선호도들은, 게임 타입들의 임베디드 애플리케이션들로부터 채팅 대화로 출력을 전송하기 위해서는 사용자 동의를 물어봐야 하며 그리고 미디어 플레이어 타입들의 애플리케이션들 또는 다른 타입들의 애플리케이션들에 대해서는 프롬프트를 제공하지 않아야 함을 표시할 수 있다.
[00128] 출력은 또한, 예컨대, 연관된 메시징 애플리케이션 및/또는 서버 시스템을 통하여, 네트워크를 통해 다른 멤버 디바이스들 상에서 실행되는 대응하는 임베디드 애플리케이션들로 송신되는 데이터를 포함할 수 있다. 예컨대, 송신되는 데이터는, 제1 사용자로부터 제1 임베디드 애플리케이션에 의해 수신되는, 예컨대, 제1 임베디드 애플리케이션에서 엘리먼트들을 선택하거나 상태들을 변경하는 사용자 입력(또는 그로부터 도출된 데이터)을 포함할 수 있다. 송신되는 데이터는, 상술된 바와 유사하게, (예컨대, 제1 사용자로부터의 사용자 입력에 기반하여) 제1 임베디드 애플리케이션에서 발생하는 하나 이상의 이벤트들, 코드 및 특정 조건들의 실행에 기반한 프로그램 이벤트들, 또는 제1 임베디드 애플리케이션에 대해 로컬로 발생하는 다른 이벤트들을 표시하는 이벤트 정보를 포함할 수 있다. 데이터는 제1 메시징 애플리케이션에 제공될 수 있고, 제1 메시징 애플리케이션은 데이터(또는 프로세싱된 형태의 데이터)를 네트워크를 통해 다른 디바이스들에게 송신할 수 있다. 예컨대, 데이터는 메시지 라우터, 예컨대, 상술된 바와 같은 세션 서버에 전송될 수 있고(메시지 라우터는 데이터를 다른 멤버 디바이스들에게 전송할 수 있음), 그리고/또는 데이터는 하나 이상의 멤버 디바이스들에게 직접 전송될 수 있다. 다른 멤버 디바이스들은 사용자 입력 및/또는 이벤트 정보를 수신 및 사용하여, 대응하는 임베디드 애플리케이션들의 상태들을 업데이트하여 제1 임베디드 애플리케이션과 동기화될 수 있다.
[00129] 일부 예들에서, 임베디드 애플리케이션으로부터의 출력은 임베디드 세션에서 발생된 하나 이상의 특정 이벤트들(또는 이벤트들의 타입들)을 표시하는 이벤트 데이터를 포함할 수 있다. 이벤트 데이터는 임베디드 애플리케이션으로부터 메시징 애플리케이션으로 제공될 수 있으며, 메시징 애플리케이션은 이벤트 데이터에 기반하여 통지를 생성할 수 있고, 통지가 채팅 인터페이스에 디스플레이되게 하고, 멤버 디바이스들 및/또는 채팅 디바이스들에 대한 채팅 대화(예컨대, 채팅 인터페이스들)에서 디스플레이되도록 네트워크를 통해 전송되게 한다. 예컨대, 이벤트들은 제1 임베디드 애플리케이션에서 발생되었을 수 있다. 다양한 예들에서, 임베디드 세션에서의 이벤트들은, 제1 사용자로부터의 제1 사용자 입력 및 임베디드 세션의 하나 이상의 멤버 사용자들로부터 수신된 다른 사용자 입력에 대한 응답으로 발생되었을 수 있다. 일부 예들에서, 이벤트들의 타입들은 미디어 아이템의 플레이백 포지션의 변경, 또는 임베디드 미디어 플레이어 애플리케이션에서의 미디어 아이템의 플레이백의 개시 또는 중단; 목표의 달성; 게임 또는 특정 단계 또는 게임 지속기간의 일부, 또는 임베디드 게임 애플리케이션에 의해 제공되는 게임에서의 다른 게임 이벤트의 종료; 임베디드 리스트 애플리케이션에서의 콘텐츠 문서(예컨대, 공유 리스트에서의 아이템)의 수정; 임베디드 예약 애플리케이션을 통한 좌석의 예약 등일 수 있다. 일부 구현들에서, 임베디드 세션에서의 이벤트들은 임베디드 세션을 관리하는 서버(예컨대, 세션 서버) 상에서 발생되었을 수 있고, 서버는 메시징 애플리케이션에 이벤트 데이터를 제공하며, 메시징 애플리케이션은 채팅 대화에서의 디스플레이를 위해 통지를 생성할 수 있다. 이러한 서버 상에서의 이벤트들의 타입들은 채팅 대화 외부의 다른 사용자들로부터 네크워크를 통해 서버에서 입력 데이터를 수신하는 것, 임베디드 세션에서 플레이되는 콘텐츠 아이템과 관련된 새로운 콘텐츠 아이템의 이용가능성(예컨대, 새로운 미디어 아이템은 플레이되는 미디어 아이템과 동일한 아티스트, 작가, 액터들, 제작 회사, 장르 등을 갖거나, 새로운 콘텐츠 아이템은 하나 이상의 멤버 사용자들의 즐겨찾기 리스트에 있는 것으로 알려져 있다(이들이 동의를 제공한 경우)), 서버로부터 하나 이상의 멤버 사용자들의 분리 등을 포함할 수 있다.
[00130] 일부 예들에서, 임베디드 애플리케이션은 (예컨대, 메시징 애플리케이션을 통해) 제어 정보를, 제1 사용자 디바이스 상에서 실행(또는 개시)되거나 또는 네트워크를 통해 제1 사용자 디바이스와 통신하는 상이한 디바이스 상에서 실행되는 외부 애플리케이션에 출력할 수 있다. 일부 예들에서, 임베디드 애플리케이션은, 홈 어플라이언스들, 차량 기능들(도어들의 잠금/잠금해제, 온도 조절기 변경 등), 또는 다른 타입들의 디바이스들을 제어하는 애플리케이션들에 제어 정보를 출력할 수 있다. 예컨대, 이러한 제어 정보는, 임베디드 인터페이스에서의 디스플레이된 제어부들(예컨대, 버튼들, 다이얼들 등)의 선택에 대한 응답으로 출력될 수 있거나, 또는 제1 사용자에 의해 입력되는 채팅 메시지들(예컨대, 사용자의 집의 도어의 잠금을 해제하는 제어 정보가 출력되게 하는, "open my front door")에 대한 응답으로 자동적으로 출력될 수 있거나, 또는 채팅 사용자들에 의해 입력되는 채팅 대화에서의 채팅 메시지들(예컨대, 차에 들어가는 것을 논의하는 메시지들, 이는 임베디드 애플리케이션으로 하여금 그 차의 도어들을 잠금해제하기 위한 제어 신호들을 전송하게 함)에 기반하여 출력될 수 있다. 다른 예에서, 임베디드 애플리케이션은, 임베디드 인터페이스에서 또는 채팅 대화에서 제1 사용자 및/또는 다른 채팅 사용자들로부터 입력을 수신하는 것에 대한 응답으로, 콘솔/데스크톱 게임의 게임 상태들에 영향을 미치기 위해 애플리케이션 데이터를 전송할 수 있다. 예컨대, 채팅 사용자들은 서버에 데이터를 전송하기 위해 임베디드 인터페이스에서 제어부들을 선택할 수 있고, 여기서, 이러한 데이터는, (상술된 바와 같이) 게임 자원들을 변화시키거나, 게임 디바이스 상에서 게임을 시작하거나, 게임에서 게임 액션들을 수행하는 등을 하기 위해, 상이한 게임 디바이스 상의 게임 애플리케이션에 의해 판독된다. 다른 예에서, 임베디드 애플리케이션은, 채팅 대화에서 채팅 사용자들로부터의 채팅 메시지들(예컨대, "let's join up in the game")에 기반하여 채팅 사용자들의 게임 캐릭터들이 게임의 그룹으로 형성되게 하는 정보를 게임에 자동적으로 전송할 수 있다. 채팅 디바이스들 상에서 제공되는 채팅 대화는 게임 디바이스 상에서 실행되는 게임의 플레이어들 간의 채팅 인터페이스로서의 역할을 할 수 있다. 일부 구현들에서, 후술되는 바와 같이, 제어 정보는 외부 애플리케이션에 대해 제안된 커맨드들로서 채팅 인터페이스에서 제공될 수 있고, 이 제어 정보는 사용자 입력에 의한 선택에 대한 응답으로 외부 애플리케이션에 전송될 수 있다.
[00131] 추가적인 예들에서, 임베디드 애플리케이션은 채팅 대화에서의 제1 사용자의 시각적 표현을 영구적으로 또는 일시적으로 수정하기 위해 메시징 애플리케이션에 데이터를 제공할 수 있다. 예컨대, 모든 메시지 또는 사용자 이름(예컨대, "User1-player") 또는 임베디드 애플리케이션에 의해 부여된 타이틀(예컨대, 게임에 대한 "User1-the Conqueror") 옆에 사용자 상황 또는 역할이 디스플레이될 수 있다. 추가적인 예들에서, 채팅 인터페이스에 나타나는 사용자 프로필 이미지를 수정하고 그리고/또는 제1 사용자에 의해 입력되는 채팅 메시지들을 수정하기 위해 필터가 적용될 수 있다(예컨대, 컬러들, 테두리들, 프레임들, 스티커들 등으로 강조표시됨). 이러한 수정들은, 제1 사용자가 임베디드 세션에 참여하는 동안 그리고/또는 임베디드 애플리케이션 내에서의 달성들에 대한 보상들로서 제공될 수 있다. 보상들은, 모든 채팅 사용자들이 사용하기 위한 다른 임베디드 애플리케이션들을 잠금해제하는 것을 포함할 수 있다. 노출된 API들을 통한 메시징 애플리케이션과 임베디드 애플리케이션 간의 통합은, 이러한 피처들을 허용할 수 있다.
[00132] 일부 임베디드 애플리케이션들은, 임베디드 애플리케이션의 타입에 기반하여 그리고/또는 채팅 대화 또는 임베디드 애플리케이션에서의 이벤트들에 대한 응답으로, 디스플레이된 키보드 레이아웃, 디스플레이된 버튼들, 또는 채팅 인터페이스에서의 다른 디스플레이된 제어부들(또는 사용자 디바이스에 의해 디스플레이되는 다른 인터페이스 또는 운영 시스템에 의해 제공되는 제어부들)을 변화시킬 수 있다. 예컨대, 채팅 인터페이스에 디스플레이되는 키보드의 레이아웃은 특정 임베디드 게임 애플리케이션에 대해 특화된 게임 제어기와 매칭하도록 변경될 수 있다. 다른 예에서, 게임에서 목표를 달성하거나 게임에서 패배하는 것과 같은 이벤트들은, 사용자에 대한 게임에서의 증가된 또는 감소된 옵션들에 따라 하나 이상의 디스플레이된 버튼들이 채팅 인터페이스에 추가되거나 또는 채팅 인터페이스로부터 제거되게 할 수 있다. 다른 예에서, 사용자가 텍스트 질의를 입력하여 아이템(예컨대, 제품)에 대한 서치를 수행할 때, 더 많은 캐릭터들이 입력됨에 따라, 임베디드 애플리케이션은 임의의 서치 결과들과 매칭하지 않는, 질의에 대한 추가적인 제안된 캐릭터들이 디스플레이로부터 제거되게 하거나, 또는 매칭하는 캐릭터들보다 더 낮은 가시성으로 디스플레이(예컨대, 회색으로 표시됨)되게 할 수 있다.
[00133] 추가적인 예들에서, 다양한 타입들의 임베디드 애플리케이션들은 메시징 애플리케이션과 연관하여 실행할 수 있다. 예컨대, 임베디드 미디어 플레이어 애플리케이션은 채팅 인터페이스 및/또는 연관된 임베디드 인터페이스에서의 멤버 사용자들로부터 사용자 입력을 수신할 수 있다. 입력은, 비디오들, 이미지들, 오디오 데이터, 문서들 등과 같은 미디어 아이템들의 플레이백 기능들을 선택할 수 있으며, 그리고 임베디드 애플리케이션으로부터의 출력은 미디어 아이템의 플레이백을 제공할 수 있다. 임베디드 게임 애플리케이션은 게임 상태들을 변화시킬 수 있는 멤버 사용자들로부터의 사용자 입력을 수신할 수 있으며, 그리고 애플리케이션의 출력은 게임 환경 및 게임 상태들을 표시하는 시각적, 청각적 및 촉각적 출력을 포함할 수 있다. 임베디드 공유 문서 애플리케이션은 공유 콘텐츠 문서(예컨대, 리스트 또는 다른 문서)를 변화시킬 수 있는 멤버 사용자들로부터의 사용자 입력을 수신할 수 있으며, 그리고 임베디드 애플리케이션의 출력은 업데이트된 콘텐츠 문서를 디스플레이할 수 있다. 임베디드 여행 일정 애플리케이션은 여행 목적지들, 루트들, 시간들 및 기타 여행-관련 선호도들을 선택할 수 있는 멤버 사용자들로부터의 사용자 입력을 수신할 수 있으며, 그리고 임베디드 애플리케이션의 출력은 이용가능한 여행 루트들의 디스플레이, 특정 루트들을 선택하기 위한 옵션들, 시간들, 및 사용자 입력에 의한 여행 방법 등을 포함할 수 있다. 임베디드 예약 애플리케이션은 선택가능한 옵션들을 디스플레이할 수 있어서, 멤버 사용자들이 호텔들, 식당들, 영화들, 컨벤션들, 놀이기구(rides), 공원들, 엔터테인먼트 퍼포먼스들, 및 기타 미래의 이벤트들에서의 장소들 또는 참석을 예약하도록 허용한다. 예컨대, 그러한 임베디드 애플리케이션은, (예컨대, 그래픽 디스플레이에서의 좌석들, 테이블들 또는 기타 장소들의 사용자 선택들을 포함하는) 시간들, 장소들, 및 장소들을 예약하기 위한 이벤트들을 특정하는 멤버 사용자들로부터의 사용자 입력을 수신할 수 있으며, 그리고 임베디드 애플리케이션은, 제안된 이벤트들 및 날짜들/시간들, 예약들이 성공적으로 이루어졌거나 거부되었다는 표시들 등을 출력할 수 있다. 일부 구현들에서, 다양한 타입들의 임베디드 애플리케이션들(예컨대, 상이한 기능들 또는 목적들을 가짐)이 단일 임베디드 애플리케이션으로 결합될 수 있다.
[00134] 블록(222)에서, 제1 메시징 애플리케이션이 제1 디바이스에서 종료되었는지 여부가 결정된다. 예컨대, 제1 디바이스에 의해 수신된 사용자 입력은 메시징 애플리케이션을 닫을 수 있다. 제1 임베디드 애플리케이션이 종료되었다면, 블록(224)에서, 임베디드 인터페이스의 제거를 포함하여, 채팅 인터페이스가 제1 디바이스의 디스플레이로부터 제거된다. 일부 구현들에서, 임베디드 애플리케이션은 또한 제1 디바이스의 메모리로부터 제거된다. 또한, 임베디드 세션을 관리하는 디바이스, 예컨대 세션 서버에 정보가 전송되어, 제1 디바이스가 임베디드 세션을 종료했음을 표시할 수 있다. 일부 구현들에서, 관리하는 디바이스(예컨대, 세션 서버)는 제1 사용자를 제거하기 위해 세션 사용자 리스트를 업데이트하고, 이러한 업데이트를 임베디드 세션의 다른 멤버 디바이스들에게 제공한다.
[00135] 메시징 애플리케이션이 종료되지 않았다면, 블록(226)에서, 제1 임베디드 애플리케이션이 제1 디바이스에서 닫혔는지 여부가 체크된다. 예컨대, 임베디드 애플리케이션을 닫기 위해 임베디드 인터페이스 또는 채팅 인터페이스에서 디스플레이된 엘리먼트를 선택하는 사용자 입력이 제1 사용자로부터 제1 디바이스에서 수신될 수 있다. 제1 임베디드 애플리케이션이 닫혔다면, 블록(228)에서, 임베디드 인터페이스가 제1 디바이스의 디스플레이로부터 제거된다. 일부 예들에서, 임베디드 인터페이스의 제거는 임베디드 인터페이스에 의해 이전에 점유된 영역을 채팅 인터페이스가 점유하도록 허용한다. 또한, 블록(224)에 대해 설명된 바와 유사하게, 제1 디바이스가 임베디드 세션을 종료했음을 표시하기 위해, 임베디드 세션을 관리하는 디바이스(예컨대, 세션 서버)에 정보가 전송될 수 있다.
[00136] 블록(230)에서, 일부 구현들에서, 그러한 조건이 존재하는 경우, 임베디드 애플리케이션이 하나 이상의 다른 멤버 디바이스들에 의해 사용중임을 표시하는 표시가 채팅 인터페이스에 디스플레이된다. 예컨대, 임베디드 애플리케이션이 제1 사용자가 종료한 임베디드 세션에서 계속해서 사용되는 동안, 표시는 채팅 인터페이스에 디스플레이되는 아이콘 또는 다른 엘리먼트일 수 있다. 일부 구현들에서, 이러한 표시는 사용자 입력에 의해 선택될 수 있어서, 제1 사용자 및 제1 디바이스가 임베디드 애플리케이션의 임베디드 세션에 다시 합류하게 하고, 예컨대, 제1 디바이스의 메모리에 보관된 코드로부터 임베디드 애플리케이션을 재실행시키고 그리고/또는 임베디드 애플리케이션을 다운로드하여 실행하게 한다. 일부 구현들은, 모든 사용자들이 임베디드 애플리케이션을 종료한 경우, 그리고/또는 임계 시간 기간 이후 임베디드 세션 또는 임베디드 애플리케이션들과 어떠한 멤버 사용자들도 상호작용(예컨대, 임베디드 세션 또는 임베디드 애플리케이션에 입력을 제공)하지 않은 경우, 디스플레이된 표시를 제거할 수 있다.
[00137] 일부 구현들에서, 다수의 임베디드 애플리케이션들은 동시적으로 실행될 수 있으며, 그리고 다수의 임베디드 인터페이스들이 (예컨대, 상술된 임베디드 인터페이스에 대한 것과 유사하게) 채팅 인터페이스와 연관하여 제1 사용자 디바이스에 의해 디스플레이될 수 있다. 일부 예들에서, 다수의 임베디드 애플리케이션들은 제1 사용자 디바이스 상에서 동시적으로 실행될 수 있다. 일부 구현들에서, 다수의 임베디드 애플리케이션들은 서로 데이터를 통신할 수 있다. 예컨대, 하나의 임베디드 애플리케이션은 다른 임베디드 애플리케이션에 커맨드를 전송하여, 그러한 다른 임베디드 애플리케이션으로 하여금 하나 이상의 상태들을 업데이트하거나, 멤버 사용자를 제거 또는 추가하는 것 등을 하게 할 수 있다.
[00138] 일부 구현들에서, 메시징 애플리케이션은 대화 "통화"를 관리할 수 있다. 이것은 임베디드 애플리케이션들에 의해 생성되고, 채팅 사용자들에 의해 획득되며, 임베디드 애플리케이션들 내에서 및/또는 메시징 애플리케이션 내에서 다른 채팅 사용자들과 교환될 수 있는 가상 통화일 수 있다. 일부 예들에서, 사용자는 임베디드 애플리케이션들에서 특정 업무들 또는 목표들을 수행할 때, 예컨대, 게임에서 목표를 완료하거나, 임계 시간량 또는 임계 개수의 편집 동작들 동안 비디오 또는 이미지를 편집하거나, 임계 시간량 동안 미디어 아이템을 플레이하거나, 공유 리스트를 편집하거나, 여행 예약을 완료하는 등을 할 때, 토큰들 또는 "코인들"을 수신할 수 있다. 다양한 구현들에서, 통화는 보상, 예컨대 채팅 인터페이스의 시각적 피처들을 변경하거나, 새로운 옵션들을 선택하거나, 채팅 인터페이스의 다른 피처들을 사용하는 능력을 획득하기 위해 사용자에 의해 소비될 수 있다. 추가적인 예들에서, 통화는 채팅 대화들(예컨대, "스티커 팩")에 삽입될 수 있는 시각적 텍스트 캐릭터들, 아이콘들 또는 이미지들의 사용(예컨대, 이들에 대한 액세스를 언락), 특정 대화 피처들의 사용(예컨대, 메시지 텍스트 폰트들의 변경, 채팅 아이덴티티들에 컬러들 또는 타이틀들의 추가, 채팅 대화에서 특정 이미지 또는 아바타의 사용 등), 특정 임베디드 애플리케이션들의 사용 등을 가능하게 하도록 소비될 수 있다. 일부 구현들에서, 통화는 임베디드 애플리케이션들의 피처들을 잠금해제 또는 개선하도록 사용될 수 있다(예컨대, 게임에서 특정 아바타들 또는 캐릭터들의 사용, 금전적 할인을 하는 특정 미디어 아이템들에 대한 액세스, 임베디드 인터페이스들에 대해 상이한 디스플레이된 외관들의 사용 등). 다른 예에서, 사용자는 특정 통화 금액을 상이한 채팅 사용자에게 전송하거나, 획득된 보상들 또는 액세스 권리들을 통화 금액과 교환하여 상이한 채팅 사용자에게 이전(또는 복사)할 수 있다. 일부 구현들에서, 통화는 실제 통화로 변환될 수 있어서, 사람 대 사람 지불들(예컨대, 식당에서 계산서 분할 또는 작은 부채 정산)을 허용한다.
[00139] 도 3은 일부 구현들에 따라, 사용자가 임베디드 세션에 합류하는 것을 가능하게 하는 예시적인 방법(300)을 예시하는 흐름도이다. 일부 예들에서, 방법(300)은 도 2의 블록(218)에 포함될 수 있다. 일부 구현들에서, 방법(300)은 예컨대, 도 1에 도시된 바와 같은 서버 시스템, 예컨대, 메시징 서버(101)에서 구현될 수 있다. 일부 구현들에서, 방법(300) 중 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 디바이스들(115)과 같은 시스템 및/또는 서버 시스템 및 하나 이상의 클라이언트 시스템들 둘 다에서 구현될 수 있다. 설명된 예들에서, 구현 시스템은 하나 이상의 프로세서들 또는 프로세싱 회로망, 및 데이터베이스 또는 다른 액세스 가능한 저장소와 같은 하나 이상의 저장 디바이스들을 포함한다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들은 방법(300)의 상이한 블록들 또는 다른 부분들을 수행할 수 있다.
[00140] 일부 구현들에서, 방법(300)은 도 2의 방법(200)과 상이한 사용자 디바이스, 예컨대, 제2 사용자 디바이스에서 구현될 수 있다. 예컨대, 제2 디바이스는 네트워크를 통해 도 2의 제1 디바이스와 통신할 수 있다. 제2 디바이스가 채팅 대화에 참여하고 있으며 임베디드 세션은 채팅 대화에 참여하는 상이한 디바이스의 채팅 사용자에 의해 개시되었다. 도 3의 예에서, 임베디드 세션은 도 2를 참조로 설명된 바와 같이 제1 디바이스의 제1 임베디드 애플리케이션과 연관하여 개시되었고, 제2 디바이스는 제1 사용자 및 제1 디바이스가 참여하는 동일한 채팅 대화에 참여하고 있다.
[00141] 블록(302)에서, 방법(300)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예컨대, 사용자 허가)가 획득되었는지가 체크된다. 예컨대, 사용자 데이터는 예컨대 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송 또는 수신된 메지시들, 사용자 선호도들, 사용자 생체 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 관한 정보, 소셜 및 다른 타입의 액션들 및 활동들, 사용자가 생성 또는 제출한 콘텐츠, 레이팅들 및 의견들, 사용자의 현재 위치, 이력상 사용자 데이터, 사용자가 생성, 수신 및/또는 액세스한 이미지들, 사용자가 뷰잉하거나 공유하는 비디오들 등을 포함할 수 있다. 본원에서 설명되는 방법들 중 하나 이상의 블록들은 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다.
[00142] 사용자 데이터가 방법(300)에서 사용될 수 있는 관련 사용자로부터 사용자 동의가 획득되면, 블록(304)에서, 본원의 방법들의 블록들이 이들 블록들에 대해 설명된 바와 같이 사용자 데이터의 가능한 사용으로 구현될 수 있다고 결정되고, 방법은 블록(308)으로 계속된다. 사용자 동의가 획득되지 않은 경우, 블록들이 사용자 데이터를 사용하지 않고 구현될 것이라고 블록(306)에서 결정되고, 방법은 블록(308)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않으면, 블록들은 사용자 데이터를 사용하지 않고 합성 데이터 및/또는 일반적 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터를 사용하여 구현될 것이다.
[00143] 블록(308)에서, 임베디드 애플리케이션에 대한 임베디드 세션이 활성이라는 표시(예컨대, 통지)가 제2 디바이스의 제2 메시징 애플리케이션에서 수신된다. 일부 예들에서, 표시는 개시된 특정 임베디드 애플리케이션을 표시하고 연관된 임베디드 세션이 개시되었음을 표시하는 데이터일 수 있다. 일부 구현들에서, 표시는 임베디드 세션을 개시한 채팅 대화로부터 채팅 사용자의 식별을 포함할 수 있다. 일부 구현들에서, 표시의 데이터는 예컨대, 임베디드 세션이 개시된 후 세션 서버에 의해 전송되었을 수 있다.
[00144] 일부 구현들에서, 현재 임베디드 세션의 멤버들인(예컨대, 임베디드 세션에 합류한) 채팅 사용자들의 식별들(예컨대, 사용자 ID)이 수신된 표시에 포함된다. 예컨대, 도 1을 참조로 설명된 세션 사용자들의 리스트가 표시에 제공될 수 있다. 대안적으로, 멤버 사용자들의 현재 수는 멤버 사용자들의 식별 없이 표시될 수 있다. 일부 구현들에서, 수신된 표시는 추가적인 정보를 포함할 수 있다. 예컨대, 정보는 임베디드 세션이 개시된 이후의 시간량, 임베디드 세션 내의 임베디드 애플리케이션(들)의 하나 이상의 현재 상태들, 및/또는 임베디드 세션과 관련된 다른 정보를 포함할 수 있다. 일부 예들에서, 추가 정보는, 현재 플레이되고 있는, 플레이될 큐의, 또는 임베디드 세션에 대해 다른 방식으로 프로세싱되는 미디어 아이템(들)의 이름, 임베디드 세션에서 편집되고 있는 공유 리스트(또는 다른 공유 문서 데이터)의 아이템들의 현재 수, 임베디드 세션과 관련한 하나 이상의 멤버 사용자들의 상황들(예컨대, 사용자를 제어자들, 플레이어들, 관찰자들 등으로 식별 및/또는 문서를 현재 편집하고 있는 사용자를 식별 또는 임베디드 세션에서 구현된 게임에서 우승 등), 임베디드 세션에서 지금까지 달성된 목표들의 리스트(예컨대, 비디오 플레이 완료, 게임 목표 완료, 리스트 완료 등), 추가적인 사용자 멤버가 임베디드 세션에 합류하게 하는 세션의 하나 이상의 현재 멤버 사용자들로부터의 특정 요청 등을 포함할 수 있다. 일부 구현들에서, 추가적인 정보는, 임베디드 세션에서 발생하는 이벤트들의 표시로서, 임베디드 세션의 하나 이상의 멤버 사용자들로부터 제2 사용자로의, 또는 다른 멤버 사용자들로의 메시지, 예컨대, 초대들, 다른 사용자에게 도전("beat my score," "guess my drawing," "I built a tower try to destroy it"), 자랑하거나 불평하는 통지들(예컨대, 플레이어가 다른 플레이어의 캐릭터를 죽였거나, 다른 플레이어가 그들의 애완 동물을 훔쳤다고 플레이어가 불평하는 것 등)을 포함할 수 있다. 일부 구현들에서, 이 정보에 대한 업데이트들, 예컨대, 현재의 멤버 사용자들의 수에 대한 업데이트, 임베디드 애플리케이션의 현재 상태 등은 나중에 제2 디바이스에 의해 수신될 수 있다.
[00145] 블록(310)에서, 제2 메시징 애플리케이션은 제2 디바이스에 의한 통지 및 합류 옵션의 디스플레이(또는 다른 타입의 프리젠테이션 또는 출력)를 야기한다. 통지는 블록(308)에서 수신된 정보의 하나 이상의 아이템들, 예컨대, 블록(308)에 표시된 활성 임베디드 세션에 대한 서술 정보를 포함할 수 있다. 예컨대, 이러한 정보의 아이템들은, 임베디드 세션에서 사용되는 임베디드 애플리케이션의 이름 또는 식별자, 공유되는 콘텐츠 데이터(예컨대, 플레이된 미디어 아이템, 편집된 콘텐츠 문서 등), 임베디드 세션에 합류한 현재 멤버 사용자들, 임베디드 세션에 관한 멤버 사용자들 중 하나 이상의 상황들, 참여하는 임베디드 애플리케이션의 현재 상태(들), 멤버 사용자들로부터의 메시지들, 및/또는 블록(308)의 표시에서 수신된 다른 정보를 포함할 수 있다. 추가적인 예들에서, 통지 내의 정보는, 임베디드 애플리케이션의 콘텐츠 데이터 또는 상태들(미디어 아이템의 플레이백 포지션, 게임에서 높은 점수, 게임 상태 정보) 또는 (사용자 프라이버시 제어들에 의해 허용된 바와 같은) 채팅 대화의 콘텐츠 데이터를 지칭할 수 있다. 추가로, 통지 정보는, 임베디드 애플리케이션 다운로드 사이즈 및 애플리케이션 설명, 사용자 데이터 및 임베디드 애플리케이션이 액세스 할 데이터 타입들(예컨대, 사용자 데이터)의 사용을 위해 사용자 허용이 요청되었다는 표시, 임베디드 세션에 이미 합류한 사용자들의 리스트 등을 포함할 수 있다. 일부 구현들에서, 디스플레이된 통지는 본원에 설명된 바와 같이 "대화형 카드"의 형태를 취할 수 있다.
[00146] 합류 옵션은 사용자 입력에 의해 선택된 경우, 제2 사용자가 활성 임베디드 세션에 합류하게 허용하는 선택가능한 옵션이다. 일부 구현들에서, 합류 옵션은 채팅 대화의 데이터가 디스플레이되는 메시징 애플리케이션의 채팅 인터페이스에 디스플레이되는 인터페이스 엘리먼트일 수 있다. 예컨대, 합류 옵션은 채팅 인터페이스에 디스플레이된 통지에서 선택가능한 제어(예컨대, 버튼)로 디스플레이될 수 있다.
[00147] 일부 구현들에서, 하나 이상의 조건들이 충족되는 경우, 합류 옵션이 디스플레이되거나 강조 표시될 수 있거나(예컨대, 밝은 색상으로 표시되거나, 깜빡이는 등), 디스플레이에서 다른 방식으로 강조될 수 있다. 예컨대, 조건들은 제2 사용자의 보관된 사용자 선호도들에 특정될 수 있다. 이러한 조건들은 예컨대, 임베디드 세션이 특정된 타입이거나 특정된 임베디드 애플리케이션과 연관되어 있는 것, 하나 이상의 특정된 사용자들이 세션의 현재 멤버 사용자들인 것, 특정된 사용자 상황(예컨대, 사용자 역할)이(예컨대, 아직 다른 멤버 사용자들에게 할당되지 않은) 임베디드 세션의 제2 사용자에 대해 여전히 이용가능한 것, 임베디드 세션이 특정된 시간 기간(예컨대, 도 2의 제1 사용자에 의한 임베디드 애플리케이션의 개시 후의 시간 기간) 이상 동안 활성화되지 않았다는 것, 임베디드 세션에서 플레이되고 있는 순차적인 미디어 아이템(예컨대, 비디오 또는 오디오 데이터)의 출력이 아직 총 플레이 시간의 특정 백분율 넘어서 진행되지 않았다는 것, 또는 다른 조건들을 포함할 수 있다.
[00148] 일부 구현들에서, 합류 옵션은 임베디드 세션에 합류하는 것 외에도 하나 이상의 디스플레이된 추가적인 옵션들(예컨대, 추가 옵션들에 대응하는 디스플레이된 사용자 인터페이스 엘리먼트들)을 포함할 수 있다. 예컨대, 추가적인 옵션들은 제2 사용자에게 임베디드 세션에서 할당될 수 있거나 할당될 하나 이상의 특정 사용자 상황들(예컨대, 사용자 역할들)에 대한 명령 또는 요청을 선택하기 위한 옵션을 포함할 수 있다. 사용자 상황들 또는 역할들은 한 세트의 미리정의된 사용자 상황들 또는 역할들로부터 제2 사용자에 의해 선택될 수 있다. 사용자 상황은 임베디드 세션에 참여하는 사용자에 의해 활성화될 수 있는 임베디드 애플리케이션의 하나 이상의 기능들을 정의할 수 있고 그리고/또는 임베디드 애플리케이션 및 임베디드 세션의 데이터 및/또는 상태들을 수정하는 사용자의 능력을 정의할 수 있다. 사용자 상황들 또는 역할들의 예들은, 제어기(예컨대, 콘텐츠 문서(예컨대, 리스트)와 같은 데이터를 수정하거나 미디어 아이템의 플레이백을 제어할 수 있는 사용자), (예컨대, 게임 내 승자 또는 패자일 수 있는) 게임의 플레이어, 애플리케이션 이벤트들의 관찰자(예컨대, 미디어 아이템의 디스플레이된 플레이백 또는 게임의 플레이를 뷰잉 및 미디어 아이템 플레이백 또는 입력 게임 액션들에 영향을 줄 수 없음), 게임의 심판(예컨대, 게임의 규칙들을 판결, 게임의 플레이의 다음 라운드를 개시 등), 관리자(예컨대, 임베디드 애플리케이션 출력을 개시 및 정지시키거나, 이를테면 미디어 아이템 플레이백 또는 게임들을 프로세싱, 게임의 플레이어들에게 자원들을 할당 또는 분배하는 것 등), 게임에서 다수의 사용자들의 팀의 리더, 사용자가 임베디드 애플리케이션의 동작을 수정하게 허용하는 사용자 상태 또는 역할(예컨대, 게임의 규칙들 또는 조건들을 지정, 미디어 데이터의 플레이백을 제어, 또는 다른 출력) 등을 포함할 수 있다. 일부 사용자 상황들 또는 역할들이 제한되거나 한정될 수 있는데, 예컨대, 자격을 갖춘 사용자들에게만 이러한 역할들이 할당될 수 있지만(예컨대, 게임에서 플레이어들의 최대 수는, 최대 수에 도달한 경우, 추가적인 사용자들에게 플레이어 역할이 할당되지 않도록 제한할 수 있음), 다른 상황들이나 역할들은 제한되지 않을 수 있다(예컨대, 게임의 관찰자들). 일부 구현에서, 합류 옵션은 임베디드 애플리케이션이 제2 사용자와 연관된 특정 타입의 사용자 데이터를 사용하도록 사용자로부터의 허가에 대한 요청을 포함할 수 있다.
[00149] 블록(312)에서, 사용자 입력은 제2 디바이스 및 제2 메시징 애플리케이션에 의해 수신되고, 사용자 입력은 제2 사용자 및 제2 디바이스가 임베디드 세션에 합류하도록 지시한다. 예컨대, 사용자 입력은 터치 스크린 또는 다른 입력 디바이스를 통해 (블록(310)에 대해 설명된 바와 같이) 디스플레이 된 합류 옵션을 선택하고 텍스트 또는 메뉴 커맨드를 입력하는 등의 선택적 사용자 입력일 수 있다. 일부 구현들에서, 제2 사용자 및 제2 디바이스는 그렇게 지시하는 사용자 입력을 명시적으로 수신하지 않고 임베디드 세션에 합류할 수 있다. 예컨대, 하나 이상의 조건들은, 조건들 중 하나 이상이 충족되는 경우, 임베디드 세션에 자동으로 합류하도록 명령할 수 있는 제2 사용자의 보관된 사용자 선호도들에 특정될 수 있다. 예컨대, 조건들은 블록(310)에 대해 상술된 바와 같은 하나 이상의 조건들을 포함할 수 있다.
[00150] 일부 구현들에서, 사용자 입력은 제2 사용자의 임베디드 세션으로의 가입과 관련된 추가 입력을 특정하는 제2 메시징 애플리케이션에 의해 수신될 수 있다. 예컨대, 사용자 입력은 임베디드 세션에서 제2 사용자의 상황을 선택할 수 있다. 일부 예들에서, 사용자 입력은 상술된 바와 같이, 제2 사용자에게 할당되거나 (제2 사용자가 요청할) 임베디드 세션에서의 사용자 상황(예컨대, 역할)을 선택하거나 지정할 수 있다. 다른 구현들에서, 사용자 상황 또는 역할은 제2 사용자, 제2 임베디드 애플리케이션, 또는 임베디드 세션에 합류한 후 세션 서버에 의해 선택될 수 있다. 일부 구현들에서, 사용자 입력은, 임베디드 세션의 멤버인 동안, 사용자가 임베디드 세션을 종료하려고 하는 시간, 아이콘, 아바타, 이미지 또는 사용자와 연관될 다른 데이터의 선택과 같은 다른 지정들 또는 선택들을 포함할 수 있다. 일부 구현들에서, 사용자 상황 또는 다른 지정들은 사용자 입력에 의해, 채팅 인터페이스에 디스플레이 된 옵션들의 메뉴 또는 다른 리스트로부터 선택될 수 있다.
[00151] 일부 구현들에서, 제2 사용자 및/또는 하나 이상의 다른 채팅 사용자들은 자동으로 활성 임베디드 세션에 합류될 수 있거나, 또는 자동적으로(예컨대, 블록(310)에서) 활성 임베디드 세션에 합류하기 위한 맞춤화된 옵션이 제공될 수 있다. 일부 예들에서, 그러한 채팅 사용자들은 채팅 대화에서 그들의 입력 메시지들에 기반한 임베디드 애플리케이션에 관심이 있는 것으로 검출될 수 있다. 일 예에서, 3명의 채팅 사용자들은 특정 지리적 로케이션(예컨대, 하와이)으로의 휴가를 설명하는 채팅 메시지들을 채팅 대화에 입력한다. 채팅 사용자들 중 한 명이 채팅 인터페이스에서 명령을 내려서 임베디드 여행 일정 애플리케이션을 시작하고, 다른 두 사용자는 연관된 임베디드 세션에 자동으로 참여하거나, 다른 두 사용자에게는 메시징 애플리케이션 또는 다른 디바이스 애플리케이션이 채팅 대화에서 이들 사용자들에 의해 입력된 메시지들을 파싱(예컨대, 로케이션 이름 등을 파싱)하는 것에 기초하여, 임베디드 세션이 이들의 논의된 여행 목적지(예컨대, 하와이)와 관련됨을 표시하는 통지가 제공된다.
[00152] 블록(314)에서, 블록(312)의 활성 임베디드 세션에 합류하기 위한 사용자 입력에 대한 응답으로, 제2 임베디드 애플리케이션이 제2 디바이스에 대해 다운로드 및/또는 실행되고, 합류하는 이벤트가 임베디드 세션에 통지된다. 예컨대, 제2 디바이스는 요청을 전송하고 도 1에 설명된 것처럼 임베디드 애플리케이션을 호스팅하는 서버 시스템에서 다운로드 될 수 있는 제2 임베디드 애플리케이션을 다운로드할 수 있다. 제2 임베디드 애플리케이션의 다운로드는 예컨대, 상술된 바와 유사하게, 제1 디바이스의 동작 환경의 배경에서 발생할 수 있다. 제2 임베디드 애플리케이션이 다운로드 된 후(및/또는 동안), 이는 제2 디바이스상에서 실행될 수 있다. 일부 구현들에서, 제2 임베디드 애플리케이션의 하나 이상의 부분들 또는 컴포넌트들은 제2 디바이스와 통신하는 하나 이상의 다른 디바이스, 예컨대 하나 이상의 서버 시스템들에 의해 실행될 수 있다. 일부 구현들에서, 제2 임베디드 애플리케이션은 제1 임베디드 애플리케이션 및 임베디드 세션의 다른 멤버 디바이스들에서 실행되는 임베디드 애플리케이션들에 대응한다. 예컨대, 제2 임베디드 애플리케이션은 도 1의 제1 임베디드 애플리케이션과 동일한 코드(또는 실질적으로 동일한 코드)를 포함할 수 있다.
[00153] 제2 메시징 애플리케이션은 제2 사용자가 임베디드 세션에 합류하기로 선택했음을 나타내는 통지 정보를 임베디드 세션으로 전송할 수 있다. 예컨대, 통지 정보는 세션 서버로 전송될 수 있고, 세션 서버는 통지 정보(또는 그로부터 도출된 정보)를 다른 멤버 디바이스들에 전송함으로써, 합류하는 이벤트를 다른 멤버 디바이스(제1 디바이스를 포함)에 전달한다. 일부 구현들에서, 세션 서버는 세션 서버에 의해 저장된 임베디드 세션에 대한 세션 사용자 리스트를 업데이트할 수 있고, 예컨대, 세션 서버의 세션 사용자 리스트에 제2 사용자를 추가할 수 있다. 일부 구현들은 통지 정보를 임베디드 세션의 하나 이상의 다른 멤버 디바이스들에 직접 전송할 수 있다. 일부 구현들에서, 제2 디바이스는 임베디드 세션에 합류하기 위한 요청을 전송하고, 세션 서버(또는 임베디드 디바이스)는 제2 디바이스가 임베디드 세션에 연결되게 하는(및/또는 제2 디바이스 상에서 제2 임베디드 애플리케이션이 아직 실행되지 않은 경우, 이 실행을 개시하게 하는) 응답을 제2 디바이스로 전송할 수 있다.
[00154] 블록(316)에서, 제2 메시징 애플리케이션은 사용자 정보를 제2 디바이스 상의 제2 임베디드 애플리케이션에 제공한다. 일부 구현들에서, 제2 임베디드 애플리케이션은 그러한 사용자 정보를 요청할 수 있다. 예컨대, 사용자 정보는 멤버 업데이트, 예컨대, 임베디드 세션에서 멤버들의 업데이트를 포함할 수 있다. 일부 예들에서, 사용자 정보는, 예컨대, 채팅 대화에 참여하는 사용자 디바이스들 및 사용자들의 채팅 아이덴티티일 수 있는, 임베디드 세션의 멤버 사용자들의 사용자 아이덴티티를 포함할 수 있다. 이 예에서, 제1 사용자의 채팅 아이덴티티 및 임의의 다른 멤버 사용자들의 채팅 아이덴티티가 제공될 수 있다. 예컨대, 제2 메시징 애플리케이션이 블록(308)에서 사용자 아이덴티티를 수신했고 그리고/또는 제2 메시징 애플리케이션에 의해 구현된 채팅 대화를 위해 메시징 서버로부터 사전에 수신한 경우, 제2 메시징 애플리케이션은 사용자 아이덴티티를 제공할 수 있다.
[00155] 일부 구현들에서, 특정 사용자(예컨대, 제1 사용자)에 대한 사용자 정보는 제2 메시징 애플리케이션에 의해 제2 임베디드 애플리케이션에 제공될 수 있다(제2 메시징 애플리케이션이 그렇게 하도록 제2 사용자로부터 동의를 얻은 경우). 예컨대, 그러한 동의는 일부 구현들에서 채팅 대화를 위해 제공된 사용자 정보에 포함될 수 있다. 사용자로부터 동의를 얻지 못한 경우, 사용자 정보는 제2 임베디드 애플리케이션에 제공되지 않는다.
[00156] 일부 구현들에서, 제2 메시징 애플리케이션은, 사용자 아이덴티티를 제2 임베디드 애플리케이션들에 제공하기 전에, 사용자 정보가 특정 사용자를 설명하지도 않고 특정 사용자와 연관될 수 없도록(또는 특정 사용자를 단지 부분적으로 설명하거나 이와 연관됨), 사용자 정보를 익명화(예컨대, 하나 이상의 사용자 아이덴티티를 익명화 또는 난독화)할 수 있다. 일부 예들에서, 채팅 아이덴티티가 사용자 이름인 경우, "더미"또는 "임시" 이름이 임베디드 애플리케이션에 의한 사용을 위해 그리고 임베디드 세션에서 사용되도록 할당될 수 있다. 예컨대, 제1 사용자 채팅 아이덴티티는 "사용자 1", "친구 1", 제1 사용자의 이니셜, 제1 사용자의 이름 등과 같은 일반적인 식별자 또는 이름으로 변경될 수 있다. 예컨대 "John Doe"와 같은 이름은 임시 가명(예컨대, "Kenny")으로 대체될 수 있다. 익명화된 사용자 정보는 하나 이상의 사용자 아이덴티티들로서 제2 임베디드 애플리케이션에 제공될 수 있다.
[00157] 일부 구현들에서, 제2 메시징 애플리케이션은 또한 추가적인 사용자 정보, 예컨대, 임베디드 세션에서 제2 사용자에게 할당될 사용자 상황 또는 역할을 제공한다. 일부 구현들 또는 경우들에서, 이 상태 또는 역할은, 예컨대 임베디드 인터페이스 또는 채팅 인터페이스에서 제2 사용자에 의해 선택되었을 수 있다. 제2 임베디드 애플리케이션은 추가된 제2 사용자에 기반하여 그 출력을 업데이트할 수 있다. 예컨대, 제2 사용자의 사용자 아이덴티티는 임베디드 인터페이스에 디스플레이 된 사용자 리스트에 추가될 수 있다.
[00158] 일부 구현들에서, 사용자 상황 또는 역할은 채팅 대화에서 제2 사용자에 의해 제공되는 채팅 메시지에 기반하여 메시징 애플리케이션(또는 임베디드 애플리케이션)에 의해 결정된다(그리고 예컨대, 이 사용자 상황 또는 역할은 제2 사용자에 의해 선택될 필요는 없다). 예컨대, 제2 사용자가 임베디드 체스 게임 애플리케이션의 시작에 관한 채팅 대화에서 "I want to play the white side"라는 채팅 메시지를 사전에 입력한 경우, 메시징 애플리케이션은 이 메시지를 검출하고, (예컨대, 키워드 또는 키 구절들에 대한 비교들 및/또는 기계 학습 기법을 사용하여) 그 의미를 결정하고 그리고 제2 사용자가 임베디드 체스 게임 세션에 합류한 후 제2 사용자를 화이트 피스 플레이어의 사용자 역할에 자동으로 할당할 수 있다. 메시징 애플리케이션은 이러한 사용자 상황을 임베디드 애플리케이션들에 제공하여 게임에서 화이트 피스들의 제2 사용자 제어를 할당할 수 있다.
[00159] 일부 구현들에서, 임베디드 세션에서의 특정 사용자 역할은 임베디드 세션에 추가되는 멤버 사용자(예컨대, 제2 사용자)에게 이용가능하지 않을 수 있다. 예컨대, 사용자 정보는 제2 사용자가 임베디드 게임 애플리케이션에서 플레이어 역할로 선택되었음을 나타낼 수 있으며, 이러한 플레이어 역할은 사용자가 게임에서 게임 상태에 영향을 미치게 허용한다(예컨대, 게임 상태에 영향을 미치는 입력 게임 동작). 애플리케이션에서 플레이어 역할들의 수가 제한되어 있는 경우(예컨대, 체스 게임 애플리케이션이 두 명의 플레이어들로 제한됨), 예컨대, 제2 사용자가, 다른 멤버 사용자가 임베디드 세션에 이미 참여했으며 모든 이용가능한 플레이어 역할들이 점유된 활성 임베디드 세션에 참여하는 경우, 제2 사용자가 이용할 수 있는 플레이어 역할 슬롯이 없을 수 있다. 그러한 이용 불능이 발생하면, 제2 임베디드 애플리케이션은 제2 사용자에 대한 상이한 사용자 상황(예컨대, 플레이어 역할)을 결정할 수 있고 메시징 애플리케이션에게 상이한 사용자 상황을 알릴 수 있다. 예컨대, 제2 사용자에게는 관찰자 역할이 할당될 수 있으며, 제2 사용자는 임베디드 애플리케이션 또는 세션의 특정 상태를 변경하기 위한 액션들을 입력하는 것이 가능하지 않다. 일부 예들에서, 임베디드 게임 애플리케이션에 대한 관찰자 플레이어는 자신의 디바이스에 게임 상태들을 디스플레이하도록 허용될 수 있지만, 사용자 입력으로 게임 상태들에 영향을 미치도록 허용할 수 없다. 미디어 플레이어 또는 공유 콘텐츠 문서의 관찰자 역할은 미디어 아이템 또는 리스트를 뷰잉하도록 허용될 수 있지만, 미디어 플레이백 또는 리스트 아이템들에 영향을 미칠도록 허용될 수 없다.
[00160] 일부 구현들에서, 제2 사용자의 선택된 역할이 이용불가능하면, 제2 사용자에게는 임베디드 세션에서 이용가능한 역할(들)의 메뉴가 제공될 수 있고, 제2 사용자는 하나 이상의 이용가능한 역할들을 선택하기 위해 사용자 입력을 제공할 수 있다. 일부 구현들에서, 임베디드 세션 동안 사용자 역할이 이용가능하게 되면(예컨대, 멤버 사용자가 임베디드 세션을 종료하거나 임베디드 세션 내에서 플레이어에서 관찰자로 변경하는 것과 같이 역할을 변경하는 경우), 요청된 사용자 역할들이 할당되지 않은 멤버 사용자에게는 그러한 새로 이용가능한 사용자 역할이 제공될 수 있다. 일부 구현들에서, 특정 사용자 역할은 임베디드 애플리케이션에 의해 결정된 대로 임베디드 세션 동안 제거되거나 변경될 수 있다. 예컨대, 게임이 종료 된 후 또는 게임의 특정 라운드 또는 단계가 끝난 후, 플레이어 역할이 관찰자 역할로 변경될 수 있다. 임베디드 세션에서 이러한 변화들을 수행할 권한 또는 능력을 갖는 멤버 사용자가 임베디드 세션 중에 사용자 역할들을 또한 변경하거나 재할당할 수 있다. 일부 구현들에서, 임베디드 세션 동안 사용자 역할들의 다양한 변화들 중 하나 이상이 임베디드 애플리케이션들에 의해 메시징 애플리케이션에 제공되는 데이터에 표시될 수 있고, 이러한 변화들은 채팅 인터페이스의 채팅 대화에서 메시징 애플리케이션에 의해 표시될 수 있다(예컨대, 멤버 사용자들만의 또는 모든 채팅 사용자들의 디바이스에 의한 텍스트 설명으로 출력).
[00161] 일부 구현들에서, 제2 사용자에게 상이한(새로 할당된) 사용자 상황이 할당되었다는 표시, 임베디드 세션에 대한 사용자 상황들 또는 역할들의 제거 또는 추가들의 표시 및/또는 임베디드 세션에서 멤버 사용자들에 대한 사용자 상황들의 임의의 다른 변화의 표시들은 채팅 인터페이스에 출력되어 채팅 대화에 참여하는 채팅 디바이스들 상에 디스플레이되거나, 대안적으로, 임베디드 세션의 멤버 사용자들의 멤버 디바이스들 상에 디스플레이된다.
[00162] 일 예에서, 제1 사용자는 임베디드 체스 게임 애플리케이션을 개시하고, 제1 및 제2 사용자는 채팅 대화에 입력된 채팅 메시지들을 통해 제2 사용자가 화이트 피스를 제어하는 플레이어로서 게임을 시작할 것이라는 것에 동의한다. 메시징 애플리케이션은 채팅 메시지들을 분석하여 제1 사용자에게 블랙 피스들을 플레이하기 위한 플레이어 역할이 할당된 것을 결정하고, 이 사용자 상황을 임베디드 체스 애플리케이션에 제공하여 제2 사용자에 의해 제어되는 화이트 피스들과 게임을 시작한다. 그런 다음 제3 사용자(다른 멤버 사용자)는 임베디드 체스 세션에 합류하고, 메시징 애플리케이션(또는 임베디드 체스 애플리케이션)은, 게임 세션에 제공되는 두 플레이어 역할 만 있으며 해당 역할들은 제1 및 제2 사용자들에 의해 점유되기 때문에, 임베디드 세션에 대해 관찰자의 사용자 역할을 제3 사용자에게 자동으로 할당한다.
[00163] 일부 구현들에서, 사용자 동의가 참여 사용자들에 의해 제공되었다면, 사용자 정보는 세션의 멤버 사용자들과 관련된 다른 정보를 포함할 수 있다. 예컨대, 채팅 사용자들(멤버 사용자들을 포함)이 이러한 지리적 정보(예컨대, GPS 또는 멤버 디바이스들의 다른 위치 센서에 의해 결정된 지리적 좌표들, 지리적 구역들 또는 영역들의 라벨들 등)를 획득하는 것에 동의한 경우, 멤버 사용자들에 의해 사용된 디바이스의 지리적 로케이션들은 예컨대, 채팅 대화로부터 제2 메시징 애플리케이션에 의해 획득될 수 있다. 3명의 채팅 사용자들에 대해 상술된 임베디드 여행 일정 애플리케이션을 사용하는 예에서, 메시징 애플리케이션은 사용자의 채팅 메시지들에 기반하여 여행 컨텍스트가 "vacation in Hawaii mid-June"임을 임베디드 애플리케이션에 특정할 수 있고, 3개의 채팅 사용자 디바이스들의 개별적인 지리적 로케이션들을 특정하여 임베디드 애플리케이션이 사용자의 디바이스 로케이션들에 기반하여 목적지 로케이션으로의 여행 일정들(예컨대, 여행 루트들, 비행기 비행, 스케줄링된 방문들 등)을 결정할 수 있게 한다. 일부 구현들에서, 로케이션 정보는 사용자를 위한 "집" 또는 "작업"과 같은 연관된 카테고리로서 로케이션을 특정할 수 있다. 일부 구현들에서, 사용자 정보는 각 멤버 사용자의 (로컬 타임 존에 기반한) 로컬 타임을 포함할 수 있다. 예컨대, 로컬 타임들은 각 사용자에 대한 여행 일정을 결정하기 위해 임베디드 여행 일정 애플리케이션에 의해 유사하게 사용될 수 있다. 일부 예들에서, 임베디드 애플리케이션은 멤버 사용자들의 로케이션 및/또는 시간 정보를 사용하여 임베디드 인터페이스에 디스플레이되는 출력 정보, 예컨대, 여행 일정들, 이벤트들에서의 예약들, 텍스트 출력의 문자 언어(예컨대, 자막들, 메시지들 등), 출력의 지역 맞춤화, 시간 기반 통지들 등을 결정할 수 있다. 다양한 예들에서, (사용자 동의에 따른) 멤버 사용자의 로케이션 대한 액세스는 임베디드 애플리케이션이 공유 로케이션들을 사용하여, 예컨대, 식당에서 다른 멤버 사용자들을 기다리는 멤버 사용자들의 그룹에 대한 멤버 사용자 로케이션들의 상황 업데이트들로서 출력을 제공하고, 인종 및 피트니스 도전들에서 사용자 로케이션들을 제공하고 그리고/또는 어린이 사용자들의 부모인 부모 사용자에 의한 뷰잉을 위해 해당 어린이 사용자의 로케이션들을 제공하는 것을 가능하게 한다.
[00164] 일부 구현들에서, 사용자 정보는 멤버 사용자들에 의해 사용되는 멤버 디바이스들 중 하나 이상의 네트워크를 통한 현재 또는 이용 가능한 데이터 대역폭들, 예컨대, 임베디드 세션을 구현하는 세션 서버에 대한 그리고/또는 임베디드 세션을 구현하는 하나 이상의 멤버 디바이스들에 대한 각 멤버 디바이스의 대역폭, 지연 또는 다른 네트워크 연결 특징들을 포함할 수 있다. 일부 예들에서, 임베디드 애플리케이션들은 대역폭 정보를 사용하여 네트워크를 통해 제1 사용자 디바이스 및 제1 임베디드 애플리케이션에서 수신된 입력 데이터의 송신의 수정을 유발할 수 있다. 예컨대, 수정된 송신은 네트워크를 통해 제1 사용자 디바이스로 전송될 상이한 데이터량을 포함할 수 있어서, 제1 사용자 디바이스에 대한 네트워크를 통해 상이한 데이터 전송률을 유발하고 그리고/또는 다른 디바이스들로부터 제1 사용자 디바이스로 송신된 데이터(예컨대, 콘텐츠 서버로부터의 콘텐츠 데이터 스트림)의 압축을 유발할 수 있다. 일부 예들에서, 임베디드 애플리케이션은 대역폭 정보를 사용하여 임베디드 세션에서 특정 멤버 사용자들에게 특정 사용자 상황들(예컨대, 역할들)을 할당할 수 있다. 예컨대, 높은 대역폭(예컨대, 임계치 초과)은 사용자 디바이스로부터 다른 디바이스들, 예컨대 실시간 게임의 특정 플레이어 사용자에게 데이터를 전송해야 하는 것을 필요로 하는 역할들에 적합할 수 있는 반면, 낮은 대역폭은 관찰자 플레이어들 특히 게임 애플리케이션들에 더 적합할 수 있다.
[00165] 제2 임베디드 애플리케이션에 제공된 다른 사용자 정보는 그러한 데이터의 액세스 및 사용에 대한 관련 채팅 사용자들에 의한 동의가 획득되면, 소셜 네트워크 정보(예컨대, 소셜 네트워킹 서비스에 포스팅된 포스트들, 레이팅들, 코멘트들 등), 멤버 사용자들에 의한 임베디드 애플리케이션의 사용 이력(예컨대, 임베디드 애플리케이션에서 이전에 뷰잉된 특정 미디어 아이템들, 멤버 사용자가 이전에 플레이한 게임 및 해당 게임들에서 멤버 사용자들에게 할당된 역할들, 이전의 게임들에서 멤버 사용자들의 승/패 기록, 이전의 임베디드 애플리케이션 사용의 날짜들 및 시간들 등)을 포함하는 다른 정보를 포함할 수 있다.
[00166] 블록(318)에서, 동기화 정보(syncing information)가 제2 디바이스에서(예컨대, 세션 서버 및/또는 제1 디바이스와 같은 다른 멤버 디바이스들로부터) 수신될 수 있고 제2 임베디드 애플리케이션들은 임베디드 세션과 동기화된다. 일부 구현들에서, 동기화 정보는, 블록(308)에서, 임베디드 세션의 표시와 함께, 수신될 수 있다. 예컨대, 동기화 정보는 임베디드 세션의 멤버 디바이스들 상에서 실행되는 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들, 세션 서버로부터의 참조 시간 정보 등을 포함할 수 있다. 일부 구현들에서, 동기화 정보는 임베디드 애플리케이션들이 서로 동기화되는 것을 가능하게 하도록 임베디드 세션의 모든 멤버 디바이스들에 동기화 정보를 제공할 수 있는 세션 서버 또는 다른 디바이스로부터 수신될 수 있다. 일부 예들에서, 세션 서버는 사용자 입력(예컨대, 미디어 아이템들의 사용자 플레이백 커맨드들, 게임 액션들, 공유 콘텐츠 문서들의 수정, 일정들 등) 또는 이러한 멤버 디바이스에서의 애플리케이션 이벤트들(예컨대, 타이머 만료, 큐 내의 새로운 미디어 아이템이 플레이되기 시작함, 게임 이벤트의 발생 등)에 기반하여 멤버 디바이스들의 임베디드 애플리케이션들의 업데이트들을 수신하고, 동기화 정보를 다른 멤버 디바이스들에 전송한다. 일부 구현들에서, 멤버 디바이스들은 서로 동기화를 유지하기 위해 서버와 같은 액세스 가능한 디바이스에 보관된 글로벌 동기화 값 또는 타이머를 업데이트 할 수 있으며, 그 예는 도 5를 참조하여 설명된다.
[00167] 일부 예들에서, 동기화 정보는 임베디드 세션에서 현재 플레이되고 있는 비디오 또는 오디오 데이터 세그먼트의 시점(또는 시점의 변화), 임베디드 세션에서 플레이되는 게임의 상태 변화, 임베디드 세션에서 공유 콘텐츠 문서에 대한 업데이트 등을 포함할 수 있다. 다른 예에서, 동기화 정보는 임베디드 세션에서 시간이 정해진 이벤트의 동기화에 사용될 수 있는 다른 멤버 디바이스들에 대한 클록 정보를 포함할 수 있다. 예컨대, 게임에서 에너미들 또는 보물의 스포닝(spawning)은 특정 시간에 모든 멤버 디바이스에 걸쳐 동기화되거나, 특정 시간에(또는 상대적으로) 멤버 사용자 입력들을 등록하여 게임에 영향을 유발할 수 있다. 임베디드 세션에서 상태들이 발생하거나 변화되는 동기화 된 시간들을 등록하면 나중에 다른 멤버 사용자가 임베디드 세션의 기록된 버전을 정확하게 재생할 수 있게 한다. 멤버 디바이스들 사이의 이벤트들을 정확하게 타이밍하는 것은 또한, (예컨대, 게임 환경에서 특정 아이템을 수집하거나 선택하기 위해 게임에서 어느 멤버 사용자가 제1 플레이어인지를 결정하기 위해) 사용자들 간의 경쟁을 허용한다.
[00168] 일부 구현들에서, 리더 디바이스는 (예컨대, 랜덤하게, 또는 네트워크 특징들 예컨대, 사용자 디바이스들의 동기화를 처리하는 서버에 대한 대기 시간이 가장 낮은 디바이스에 기반하는 등으로) 멤버 디바이스들 중에서 선택되어 임베디드 세션에서 임베디드 애플리케이션들 사이에서 실시간 이벤트들의 동기화 및 출력을 허용할 수 있다. 예컨대, 리더 디바이스는 예컨대, 그러한 업무에 서버 시스템을 사용하는 대신에, 상태 변화들을 확인하여 다른 멤버 디바이스들에 전파하는 권한을 가질 수 있다. 리더 디바이스가 오프라인 상태가 되는 경우, 온라인 멤버 디바이스들은 새로운 리더 디바이스를 선정하고, 그리고 이전 리더 디바이스가 다시 온라인 상태될 때, 그의 리더 상황은 해지되었기 때문에, 일반(비-리더) 디바이스로 간주될 것이다. 이러한 리더 디바이스 구성은 서버-측 동기화 및 권한을 사용하지 않고도 네트워크를 통해 멀티-디바이스 공유 경험들을 허용할 수 있다.
[00169] 블록(320)에서, 제2 임베디드 애플리케이션의 임베디드 인터페이스가 제2 디바이스에 의해 디스플레이되게 된다. 예컨대, 임베디드 인터페이스는 전술한 바와 유사하게 제2 메시징 애플리케이션의 채팅 인터페이스와 연관하여 디스플레이 될 수 있다. 임베디드 인터페이스는 제2 임베디드 애플리케이션에 대한 사용자 인터페이스이며, 제2 임베디드 애플리케이션으로부터의 출력이 제2 디바이스에 의해 디스플레이 될 수 있게 하고(예컨대, 임베디드 인터페이스의 임베디드 뷰에서), 임베디드 인터페이스에 사용자 입력이 입력되어 제2 임베디드 애플리케이션에 제공되게 할 수 있다.
[00170] 임베디드 인터페이스는 임베디드 세션에서 멤버 디바이스들의 다른 임베디드 애플리케이션들과 동기화된 제2 임베디드 애플리케이션으로부터의 출력을 디스플레이한다. 예컨대, 미디어 아이템이 임베디드 세션에서 플레이되고 있는 경우, 다른 멤버 디바이스들 상의 대응하는 임베디드 애플리케이션들에 의해 플레이되고 있는 미디어 아이템은 또한 멤버 디바이스들과 동기화된 제2 임베디드 애플리케이션들에 의해 플레이된다. 따라서, 제2 사용자가 미디어 아이템이 이전에 일정 시간 동안 플레이되고 있고 현재 지속 시간의 중간에 있는 임베디드 세션에 합류한 경우, 제2 임베디드 애플리케이션은 중간 포인트에서 시작하는 미디어 아이템을 플레이한다. 예컨대, 이 동기화는 제2 사용자에게 임베디드 애플리케이션들의 미디어 아이템들 및 다른 출력을 다른 멤버 사용자들과 공유하는 경험을 제공할 수 있다.
[00171] 임베디드 여행 일정 애플리케이션을 사용하는 일 예에서, 임베디드 애플리케이션은 특정된 날짜 동안 멤버 사용자들의 디바이스들의 지리적 로케이션들로부터 여행 목적지로 출발하는 비행기 비행에 관한 정보를 디스플레이하는 임베디드 인터페이스를 제공할 수 있다. 일부 구현들에서, 맞춤화된 비행기 비행 정보는 각 멤버 사용자에 대한 임베디드 인터페이스에 디스플레이 될 수 있으며, 각각의 임베디드 인터페이스는 임베디드 인터페이스에서 정보를 뷰잉하는 사용자의 로케이션에 대한 비행기 비행 정보만을 보여준다.
[00172] 블록(322)에서, 제2 사용자가 임베디드 세션에 합류했다는 표시가 네트워크를 통해 전송된다. 예컨대, 제2 메시징 애플리케이션은 조인 이벤트의 표시를 세션 서버에 전송할 수 있고, 세션 서버는 조인 이벤트의 표시를 멤버 디바이스에 전송할 수 있다(멤버 디바이스가 아닌 채팅 디바이스에는 전송하지 않음). 예컨대, 세션 서버는, 도 4와 관련하여 후술되는 바와 같이, 표시를 제1 디바이스에 전송할 수 있다. 일부 구현들에서, 제2 메시징 애플리케이션은 표시를 멤버 디바이스들에게 직접 전송할 수 있다.
[00173] 임베디드 세션 동안, 제2 디바이스는 본원에 설명된 바와 같이 임베디드 인터페이스를 통해 제2 사용자로부터 임베디드 애플리케이션으로 및/또는 채팅 인터페이스를 통해 메시징 애플리케이션으로 사용자 입력을 수신할 수 있다. 예컨대, 입력은 또한, 세션 서버를 통해 다른 멤버 디바이스들로부터 그리고/또는 하나 이상의 서버들로부터 수신될 수 있다(예컨대, 세션 서버에서 임베디드 애플리케이션으로의 동기화 및 다른 업데이트, 콘텐츠 서버로부터의 콘텐츠 데이터 등). 임베디드 인터페이스 및/또는 채팅 인터페이스에 출력이 디스플레이될 수 있다.
[00174] 제2 사용자에게 임베디드 애플리케이션 및 임베디드 세션 내에서 사용자 상황(예컨대, 역할)이 할당된 경우, 제2 사용자는, 임베디드 애플리케이션에 의해, 할당된 사용자 상황과 연관된 임베디드 애플리케이션의 하나 이상의 기능들을 활성화할 수 있다. 예컨대, 임베디드 게임 애플리케이션에서, 플레이어 역할이 할당된 사용자는 게임 상태(들)에 영향을 미치기 위해 사용자 입력으로 게임 액션들을 수행할 수 있다. 관찰자 역할이 할당된 사용자는 게임에서 뷰 기능들을 수행하기 위한 입력을 제공할 수 있는데, 예컨대, 사용자 입력으로 다른 플레이어 점수들, 속성들 등의 표시를 유발하지만 게임 상태에는 영향을 미칠 수 없다. 관리자 역할 또는 심판 역할이 할당된 사용자는, 게임을 시작하고, 플레이어 사용자를 상이한 팀들에 할당하고, 게임을 판결하는 등을 할 수 있지만 게임 상태들에는 영향을 미칠 수 없다. 일부 구현들에서, 멤버 사용자에게는 수동 관찰자 또는 활성 관찰자의 역할이 할당될 수 있다. 예컨대, 활성 관찰자 상황은 사용자가 임베디드 애플리케이션의 상태들(예컨대, 게임 상태들, 미디어 아이템의 플레이백 포지션 등)을 수정하거나, 일부 타입들의 상태들을 수정(예컨대, 특정 타입의 게임 오브젝트들을 안내하고 코멘트들을 추가하지만 플레이백 포지션을 변경하지 않는 등)하도록 허용할 수 있지만, 수동 관찰자는 이러한 상태를 수정하는 것이 방지될 수 있다. 일부 예들에서, 단일 플레이어 게임은 제1 사용자가 게임 환경을 통해 이동하고 장애물에 직면하는 등의 주 캐릭터가 되도록 허용할 수 있다. 다른 멤버 사용자들에게는 디폴트로 수동 관찰자 역할들이 할당되거나, 하나 이상의 수동 관찰자 사용자들이 게임 상태들에 영향을 미칠 수 있게 허용하는 활성 관찰자 역할이 할당되도록 선택할 수 있다(예컨대, 게임의 에너미들에게 제1 플레이어의 캐릭터를 공격하거나 지원하도록, 제1 플레이어의 캐릭터를 직접 지원하도록, 제1 플레이어의 캐릭터를 탭하여 속도를 늦출 수 있도록 명령하는 등).
[00175] 추가적인 예들에서, 임베디드 인터페이스에 대한 특정 그래픽 인터페이스는 멤버 디바이스의 사용자에게 할당된 역할에 기반하여 해당 멤버 디바이스 상에 디스플레이될 수 있는 반면, 임베디드 세션의 다른 멤버 디바이스들은 이들의 멤버 사용자들의 상이한 역할들(또는 역할들의 부재)에 기반하여 다른 그래픽 인터페이스들을 디스플레이할 수 있다. 예컨대, 상이한 컨트롤들과 기능들은 상이한 역할들에 대해 상이한 그래픽 인터페이스들에 디스플레이될 수 있다. 일부 예들에서, 특정 역할들만이 임베디드 애플리케이션의 특정 피처들에 액세스할 수 있다. (예컨대, 상술된 바와 유사하게) 임베디드 예약 애플리케이션의 일 예에서, 제1 사용자는 임베디드 예약 애플리케이션을 개시하고 따라서 해당 사용자가 예약을 마무리짓게(예컨대, 호텔 방을 예약하기 위해 예약금을 지불하게) 허용하는 "예약자" 상황이 된다. 제1 사용자는 목적지 및 일정과 같은 예약 정보를 선택하고, 임베디드 애플리케이션은 선택된 예약 정보를 임베디드 예약 애플리케이션의 나머지 멤버 디바이스들의 임베디드 인터페이스에 디스플레이하기 위해 나머지 멤버 디바이스들(예컨대, 제2 사용자의 디바이스를 포함함)과 공유한다. 제2 사용자는 제1 사용자가 예약 정보(모든 멤버 디바이스들에 대해 동기화 됨)를 선택 또는 변화시킴으로써 예약할 호텔 방을 선택하도록 보조한다. 이 예에서, 제1 사용자가 임베디드 애플리케이션/세션을 설정하고 예약자 상황이 되기 때문에, 멤버 디바이스들의 제1 사용자 디바이스만이 그것의 임베디드 인터페이스에 "지불" 버튼을 디스플레이한다. 사용자 입력으로 지불 버튼이 선택되면, 예약을 마무리짓기 위해 서버로 데이터가 전송되도록 유발된다.
[00176] 다양한 구현들에서, "대화형 카드들"은 제2 사용자 디바이스와 같은 채팅 대화의 채팅 디바이스들의 채팅 인터페이스에 디스플레이될 수 있다. 대화형 카드는, 이벤트들과 관련된 정보 및 제어들(사용자 입력 옵션들), 출력 데이터(예컨대, 콘텐츠 데이터) 및 채팅 대화의 임베디드 세션에서 제공된 멤버 사용자들로부터의 입력을 디스플레이하는 디스플레이된 정보 영역 또는 윈도우일 수 있다. 정보는 텍스트, 이미지들, 비디오들, 오디오 출력, 시네마그래프들 또는 다른 타입들의 콘텐츠 데이터(예컨대, 임베디드 인터페이스에 디스플레이된 출력의 캡처되고 보관된 이미지들)를 포함할 수 있다. 일부 구현들에서, 대화형 카드는, 채팅 디바이스가 임베디드 세션의 멤버 디바이스인지 여부에 관계없이, 채팅 디바이스의 채팅 인터페이스에 디스플레이될 수 있다.
[00177] 대화형 카드는 또한, 연관된 액션이 임베디드 애플리케이션들에 의해 수행되게 하기 위해 사용자 입력에 의해 선택될 수 있는 하나 이상의 디스플레이된 입력 제어부들을 포함할 수 있다. 제어부가 사용자 입력에 의해 선택될 때, 선택된 제어부 및/또는 대화형 카드의 인수들 또는 파라미터들은 임베디드 애플리케이션들에 제공되고, 임베디드 애플리케이션들은 관련 액션(들)을 수행한다. 일부 예들에서, 블록(310)에 디스플레이되는 임베디드 세션의 개시를 표시하는 통지는, 선택되는 경우, 사용자 디바이스가 임베디드 애플리케이션들을 실행하게 하고 임베디드 세션에 합류하게 하는 (비-멤버 사용자들에 대한) 합류 옵션을 포함하는, 상술된 정보를 디스플레이하는 대화형 카드일 수 있다. 일부 구현들에서, 하나 이상의 액션들은, 상술된 바와 같이, 사용자가 임베디드 세션에 합류하는 것에 대한 응답으로, 임베디드 애플리케이션에서 실행된다. 다른 예에서, 대화형 카드는, 제어부가 사용자 입력에 의해 선택될 때, 임베디드 애플리케이션이 미디어 아이템을 플레이하기 시작하고, 인-게임 액션(예컨대, 상이한 사용자의 도전을 수락하는 것, 인-게임 아이템을 잠금해제하는 것 등), 및/또는 다른 액션들을 트리거링하게 하는 디스플레이된 제어부를 포함할 수 있다. 임베디드 애플리케이션은 연관 액션(들)을 수행하기 위한 사용자로부터 확인을 위한 요청을 대화형 카드에 요청을 디스플레이할 수 있다. 일부 구현들에서, 대화형 카드에서의 정보 및 옵션들은 멤버 사용자들(및/또는 채팅 사용자들)로부터 수신된 현재 입력, 임베디드 애플리케이션에 의해 제공된 현재 출력, 및 임베디드 애플리케이션의 현재 프로세싱 상태들에 기반하여 계속해서 업데이트될 수 있다.
[00178] 일부 예들에서, 미디어 아이템은 미디어 플레이어 임베디드 애플리케이션에 대한 임베디드 세션에서 플레이되고 있고, 대화형 카드는 미디어 아이템의 플레이에 관련된 채팅 디바이스들의 채팅 인터페이스에 디스플레이된다. 정보 및 옵션들은, 채팅 대화의 채팅 사용자들에 의한 그 미디어 아이템에 대한 코멘팅 및 미디어 아이템의 플레이백에 기반하여 계속해서 업데이트될 수 있다. 예컨대, 대화형 카드는 플레이되고 있거나 플레이백을 위한 큐에 있는 각각의 미디어 아이템의 식별을 디스플레이할 수 있다. 대화형 카드의 정보 및 옵션들은 채팅 대화의 채팅 사용자들에 의한 그 미디어 아이템의 코멘팅 및 미디어 아이템의 플레이백에 기반하여 계속해서 업데이트될 수 있다. 예컨대, 카드는 다음의 피처들: (채팅 사용자들로부터의 동의가 획득된 경우) 미디어 아이템을 시청한 채팅 사용자들의 식별(또는 수), (채팅 사용자들로부터의 동의가 획득된 경우 아래의 블록(518)에서와 같이) 미디어 아이템에 대해 코멘트한 채팅 사용자들의 식별(또는 수), (예컨대, 블록(518)에서와 같이) 멤버 디바이스들에 대한 미디어 아이템에 대해 코멘트하기 위한 디스플레이된 옵션, 및, 예컨대, 미디어 아이템을 플레이하도록 하는 사용자로의 리마인더 등으로서, 카드가 사용자 디바이스 상에 지속적으로 디스플레이되게 하기 위한 디스플레이된 옵션 중 하나 이상을 디스플레이할 수 있다. 다수의 대화형 카드들이 지속되게 하면, 다수의 카드들을, 예컨대, 하나씩 뷰잉하도록 스크롤되거나 회전될 수 있는, 카드들의 캐러셀(carousel) 디스플레이가 디스플레이될 수 있다. 미디어 아이템이 그 채팅 대화에서 플레이되게 하는 것, 또는 (예컨대, 블록(518)에서와 같이) 미디어 아이템에 대한 코멘팅은, 채팅 대화의 각각의 채팅 디바이스의 채팅 인터페이스에 디스플레이될 수 있는 각각의 채팅 디바이스에 보관된 대응하는 대화형 카드를 업데이트한다. 대화형 카드는 채팅 사용자들에 의한 미디어 아이템에 대한 최신의 플레이들 및 코멘트들을 표시한다. 일부 구현들에서, 사용자 입력에 의한 대화형 카드의 코멘트 옵션의 선택은 입력 필드가 디스플레이되게 하여, (예컨대, 블록(518)에서와 같이) 사용자 입력 코멘트들이 미디어 아이템의 현재 및 나중의 플레이백들 동안 임베디드 인터페이스에 디스플레이되고 그리고/또는 미디어 아이템의 현재 및 나중의 플레이백 동안 채팅 대화의 채팅 인터페이스에 디스플레이되게 허용할 수 있다.
[00179] 일부 구현들에서, 임베디드 애플리케이션들의 다른 타입들에 관련된 대화형 카드들은 채팅 인터페이스에 디스플레이될 수 있다. 예컨대, 임베디드 게임 애플리케이션 및 세션은 다음과 같이, 사용자 동의가 획득된 경우, 게임의 플레이어들 및 관찰자들의 수, 멤버 사용자들의 식별들, 플레이어들의 현재 스코어들, 달성된 게임 목표들, 게임 이벤트들 또는 오브젝트들의 스크린샷들 또는 그의 일부들을 보여주는 하나 이상의 이미지들, (예컨대, 채팅 인터페이스, 및/또는 멤버 디바이스들의 임베디드 인터페이스에 디스플레이될) 게임 또는 게임의 특정 플레이어에 대한 코멘트 또는 레이팅을 입력하기 위한 디스플레이된 옵션, 예컨대, 임베디드 세션에 합류하도록 하는 사용자에 대한 리마인더 등으로서, 카드가 사용자 디바이스 상에 지속적으로 디스플레이되게 하기 위한 디스플레이된 옵션 중 하나 이상을 표시하는 대화형 카드가 디스플레이되게 할 수 있다. 콘텐츠 문서들, 여행 일정들, 예약들, 쇼핑 등을 제공하는 유사한 정보 및 디스플레이된 옵션들이 임베디드 세션들의 대화형 카드들에 디스플레이될 수 있다.
[00180] 일부 구현들에서, 제2 사용자가 임베디드 세션에서 종료하는 것은 임베디드 세션에 합류하는 것과 유사하게 구현될 수 있다. 예컨대, 제2 메시징 애플리케이션은, 예컨대, 제2 임베디드 애플리케이션들을 종료하거나, 채팅 대화를 종료하거나, 또는 제2 메시징 애플리케이션을 종료함으로써, 제2 사용자가 임베디드 세션을 종료한다는 표시를 수신한다. 제2 메시징 애플리케이션은, 제2 사용자가 종료한다는 것을 표시하는 정보를 (예컨대, 서버를 통해) 다른 멤버 디바이스들에 전송하여, 다른 멤버 디바이스들에 대해 실행되는 다른 (대응하는) 임베디드 애플리케이션들은 그들의 상태들을 업데이트할 수 있다(예컨대, 자신들의 임베디드 인터페이스들로부터 제2 사용자의 사용자 아이덴티티를 제거하고, 임베디드 세션에서의 참여자로서 제2 사용자를 제거하는 것 등).
[00181] 도 4는, 제2 디바이스가 임베디드 세션에 합류한 이벤트를 도 2의 제1 디바이스가 프로세싱하는 예시적인 방법(400)을 예시하는 흐름도이다. 이 예에서, 방법(400)은, 도 3을 참조로 설명된 바와 같이, 제2 사용자가 임베디드 세션에 합류한 것에 대한 응답으로, 제1 사용자 디바이스에서 수행되는 블록들을 예시한다.
[00182] 블록(402)에서, 방법(400)의 구현에서 사용자 데이터를 사용하기 위한 사용자 동의(예컨대, 사용자 허용)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 예컨대, 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송 또는 수신된 메시지들, 사용자 선호도들, 사용자 생체 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자 소셜 네트워크 및 연락처들에 관한 정보, 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 레이팅들, 및 사용자에 의해 생성되거나 제출된 의견들, 사용자의 현재 로케이션, 이력상 사용자 데이터, 사용자에 의해 생성, 수신 및/또는 액세스되는 이미지들, 사용자에 의해 뷰잉 또는 공유된 비디오들 등을 포함할 수 있다. 본원에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다.
[00183] 사용자 데이터가 방법(400)에서 사용되는 관련 사용자들로부터 사용자 동의가 획득되었다면, 블록(404)에서, 본원에서 방법들의 블록들이 그러한 블록들에 대해 설명된 바와 같이 가능한 사용자 데이터를 사용하여 구현될 수 있다는 것이 결정되고, 방법이 블록(408)으로 계속된다. 사용자 동의가 획득되지 않았다면, 블록들이 사용자 데이터의 사용 없이 구현될 수 있다고, 블록(406)에서, 결정되고, 방법은 블록(408)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터의 사용 없이 그리고 합성 데이터 및/또는 일반적 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터를 사용하여 구현되어야 한다.
[00184] 블록(408)에서, 제2 사용자 및 제2 디바이스가 임베디드 세션에 연결(합류)되었다는 것을 표시하는 표시가 제1 디바이스에서 네트워크를 통해 수신된다. 예컨대, 표시는, 예컨대, 도 3의 블록(314)에서와 같이, 제2 디바이스가 임베디드 세션에 대한 대응하는 임베디드 애플리케이션을 다운로드 및/또는 실행(또는 그를 프로세싱)하였고, 그리고/또는, 예컨대, 도 3의 블록(318)에서와 같이, 임베디드 애플리케이션이 임베디드 세션을 동기화하였다는(또는 동기화하고 있다는) 것을 표시할 수 있다. 예컨대, 표시는 도 3의 블록(314)에 대해 설명된 통지 정보를 포함하거나 이로부터 도출될 수 있다. 일부 구현들에서, 제1 메시징 애플리케이션은, 설명된 바와 같이, 일부 구현들에서 통지 정보를 포함할 수 있는 표시를 수신할 수 있다. 표시는 합류하는 이벤트, 제2 사용자의 사용자 아이덴티티, 및 제2 사용자에 의해 선택되거나 제2 사용자에게 제공되는 임의의 다른 옵션들(예컨대, 임베디드 애플리케이션에서의 사용자 상황 등)을 표시하는 정보를 포함할 수 있다. 일부 구현들에서, 제1 메시징 애플리케이션은, 예컨대, 제1 디바이스의 채팅 인터페이스에 제2 사용자의 사용자 아이덴티티를 디스플레이하기 위해, 채팅 대화에서 제2 사용자의 사용자 아이덴티티 정보를 이전에 획득하였다. 일부 구현들에서, 표시는 서버 시스템, 예컨대, 도 3의 블록(314)에서 제2 디바이스로부터 통지 정보를 수신한 세션 서버로부터 수신된다. 일부 구현들에서, 표시는 제2 디바이스(예컨대, 피어-투-피어 구성)로부터 직접적으로 제1 디바이스에서 수신된다.
[00185] 블록(410)에서, 제1 메시징 애플리케이션은 데이터 업데이트를 제1 임베디드 애플리케이션에 제공하고, 여기서 업데이트는 임베디드 세션에 대한 제2 사용자의 합류를 표시한다. 임베디드 애플리케이션은 임베디드 세션의 멤버 사용자로서 제2 사용자를 지정한다. 예컨대, 업데이트는 사용자 정보, 이를테면, 제2 사용자의 사용자 아이덴티티, 및 참여자로서 제2 사용자를 임베디드 세션에 추가하기 위한 표시를 포함할 수 있다. 일부 구현들에서, 제1 메시징 애플리케이션은 채팅 대화에서 제2 사용자의 사용자 아이덴티티 및 다른 사용자 정보를 획득하였다. 일부 예들에서, 사용자 아이덴티티는 채팅 대화에 참여하는 제2 사용자의 채팅 아이덴티티일 수 있다.
[00186] 특정 사용자(예컨대, 제2 사용자)에 대한 사용자 정보는, 제1 메시징 애플리케이션이 그 사용자 정보를 제1 임베디드 애플리케이션에 제공하기 위해 제2 사용자로부터 동의를 획득하면, 제1 메시지 애플리케이션에 의해 제1 임베디드 애플리케이션에 제공될 수 있다. 예컨대, 이러한 동의는, 일부 구현들에서, 채팅 대화에 대해 제공된 사용자 정보에 포함될 수 있다. 제2 사용자로부터 어떠한 동의도 획득되지 않았다면, 사용자 정보는 제1 임베디드 애플리케이션에 제공되지 않는다. 일부 구현들에서, 제1 메시징 애플리케이션(또는 서버 애플리케이션)은, 사용자 정보가 제2 사용자를 설명하지 않거나 제2 사용자와 연관되지 않을 수 있도록(또는 제2 사용자를 부분적으로만 설명하거나 제2 사용자와 연관되도록) 그 정보를 익명으로 하거나, 부분적으로 익명으로 할 수 있다. 예컨대, 제2 사용자 채팅 아이덴티티는 일반적인 이름 또는 플레이스홀더 이름, 이를테면, "사용자 1", "친구 1", 제2 사용자의 이니셜들, 제2 사용자의 제1 이름 등으로 변경될 수 있다. 추가적인 예들에서, 사용자 아이덴티티는 제2 사용자 이름의 실제 이름, 메시징 애플리케이션에서 제2 사용자에 의해 이전에 등록된 사용자 이름, 연락처 리스트에 이전에 등록된 사용자 이름 또는 (제2 사용자로부터의 동의가 획득된 경우) 제2 사용자 디바이스에 보관되고 이로부터 획득된 다른 데이터, 임베디드 애플리케이션들에 이전에 등록된 사용자 이름, 플레이스홀더 이름 등일 수 있다. 이러한 정보는 임베디드 세션에 대한 사용자 아이덴티티로서 임베디드 애플리케이션에 제공되고 그리고/또는 임베디드 애플리케이션에 의해 결정될 수 있다. 일부 예들에서, 애플리케이션은 임베디드 애플리케이션 및 임베디드 세션의 하나 이상의 특정 콘텍스트들에서 다른 멤버 사용자들에 디스플레이하기 위한 사용자 이름을 선정할 수 있고, 여기서 상이한 사용자 이름들은 상이한 콘텍스트들에서 디스플레이될 수 있다. 예컨대, 콘텍스트들은 메시징 애플리케이션 및 채팅 인터페이스에서 사용되는 이름, 메시징 애플리케이션 내에서 구성된 제2 사용자의 메시지들에 첨부된 이름, 임베디드 애플리케이션 내에서 사용되는 이름 및 그의 콘텐츠 데이터, 임베디드 애플리케이션에 의해 생성된 시스템 메시지들 또는 채팅 메시지들에 첨부된 이름 등을 포함할 수 있다.
[00187] 일부 구현들에서, 사용자 정보는 제2 사용자에 의해 선택되거나 제2 사용자에게 제공되는 사용자 상황(예컨대, 역할), 제2 디바이스의 지리적 로케이션, 및/또는 다른 정보의 사용을 위한 동의가 제2 사용자로부터 획득된 경우, 제2 사용자에 관련된 이러한 정보를 포함할 수 있다. 제1 임베디드 애플리케이션은 제2 사용자의 추가에 기반하여 자신의 프로세싱을 업데이트하고, 예컨대, 제2 사용자의 사용자 아이덴티티를 임베디드 인터페이스에 디스플레이하고, 제2 사용자로부터의 입력을 체크하는 식일 수 있다. 일부 구현들에서, 제1 메시징 애플리케이션은 또한 임베디드 세션의 멤버 사용자로서 제2 사용자를 지정하고, 예컨대, 제2 사용자 아이덴티티를 추가하기 위해 임베디드 세션에 대한 그 자신의 세션 사용자 리스트를 업데이트한다.
[00188] 블록(412)에서, 제1 임베디드 애플리케이션(및/또는 제1 메시징 애플리케이션)은 제2 사용자에 대한 하나 이상의 사용자 상황들을 결정할 수 있다. 일부 구현들에서, 사용자 상황은, 예컨대, 블록(410)에서 제1 메시징 애플리케이션으로부터 수신된 사용자 정보에 기반하여 결정될 수 있다. 예컨대, 사용자 정보는 임베디드 세션에서의 제2 사용자에 대한 사용자 상황을 포함할 수 있다. 사용자 상황은 제2 사용자에 의해 선택되었을 수 있고, 이러한 선택을 표시하는 정보는 제1 메시징 애플리케이션에 의해 제1 임베디드 애플리케이션에 제공되었을 수 있다. 예컨대, 게임 임베디드 애플리케이션에 대한 "관찰자"의 사용자 역할은 제2 사용자에 의해 선택되었을 수 있고, 제1 임베디드 애플리케이션은 이러한 역할을 제2 사용자에 할당한다.
[00189] 일부 구현들에서, 제1 임베디드 애플리케이션(및/또는 다른 멤버 디바이스들 상에서 실행되는 대응하는 임베디드 애플리케이션들)은 사용자 상황 또는 역할을 생성할 수 있다. 일부 구현들에서, 서버(예컨대, 세션 서버)는 사용자 상황 또는 역할을 생성하고, 결정된 사용자 상황을 제1 메시징 애플리케이션 및 제1 임베디드 애플리케이션에 제공할 수 있다. 일부 예들에서, 사용자 상황은, 제1 임베디드 애플리케이션 및/또는 임베디드 세션의 하나 이상의 현재 상태들에 적어도 부분적으로 기반하여 할당될 수 있다. 예컨대, 하나 이상의 역할들이 합류하는 사용자에게 할당되도록 이용가능하면, 제2 사용자(합류하는 사용자)에는 이용가능한 역할(예컨대, 게임에서 플레이어)이 자동적으로 할당될 수 있다. 임베디드 세션이 이용가능한 임의의 선택된 역할들을 갖지 않는다면, 제2 사용자에게 다른(예컨대, 디폴트) 역할이 할당될 수 있다. 예컨대, 제2 사용자에게 플레이어 역할이 할당되도록 선택되지만 어떠한 플레이어 역할도 이용가능하지 않다면, 제2 사용자에게 관찰자 역할이 할당될 수 있다. 일부 구현들에서, 동일한 임베디드 애플리케이션들을 사용하여 이전 임베디드 세션에서 특정 사용자에게 이전에 할당된 사용자 상황들 및 역할들과 같은 특정 상태들 및/또는 데이터는, 예컨대, 프라이버시 및 보안 측정들이 이러한 상태들 및 데이터에 대해 수행되면, 특정 사용자가 참여한 이전의 임베디드 세션들로부터 (예컨대, 서버에) 보관될 수 있다. 이러한 구현들에서, 제2 사용자의 임베디드 애플리케이션들의 사용 이력은, 제2 사용자에 대한 역할 또는 사용자 상황을 결정하는데 있어서, 사용자 데이터의 이러한 사용에 대한 제2 사용자 동의가 획득된 경우에 사용될 수 있다. 예컨대, 제2 사용자가 이러한 임베디드 애플리케이션을 사용하여 임계 개수의 이전의 임베디드 세션들에서 심판 역할을 하였다면, 그 역할은 자동적으로 제2 사용자에게 할당될 수 있다. 일부 구현들에서, 제2 사용자가 임베디드 세션에서 제2 사용자에게 자동적으로 할당된 특정 사용자 상황 또는 역할을 수락 또는 거절하게 허용하기 위한 프롬프트가 (예컨대, 멤버 디바이스 및/또는 세션 서버에 의해) 제2 디바이스에 전송될 수 있다.
[00190] 일부 구현들에서, 다른 사용자 상황들 및 역할들은 임베디드 세션에서의 사용자들에 대해 결정될 수 있다. 예컨대, 사용자(예컨대, 제1 사용자)가 임베디드 세션을 개시하면, "제어기" 또는 "리더" 역할이 사용자에게 할당될 수 있고, 여기서 제어기는 임베디드 세션에서 프로세싱된 데이터를 수정하고, 예컨대, 미디어 아이템에서 플레이백 포인트를 변경하고, 공유 콘텐츠 문서의 데이터를 변경하는 것 등을 하기 위한 유일한 사용자이다. 일부 예들에서, 임베디드 세션과 유사한 이전의 게임들에서 제2 사용자의 이력에 기반하여, 임베디드 애플리케이션의 게임에서 플레이어로서 제2 사용자에게 핸디캡 또는 이점이 할당될 수 있다.
[00191] 일부 구현들에서, 사용자 상황은, 임베디드 세션이 개시된 채팅 대화에서 제공된 메시지들 및 다른 사용자 입력에 기반하여 결정될 수 있다. 예컨대, 메시징 애플리케이션은 미리정의된 단어들 또는 구절들을 매칭시키기 위해 제2 사용자의 텍스트 메시지들(또는 제2 사용자 보이스 입력으로부터 도출된 텍스트 메시지들)을 파싱하고, 그리고/또는 채팅 대화에 대한 사용자 입력의 의미론적 의미들을 결정하기 위해 다른 언어 프로세싱 기법들을 사용할 수 있다. 예컨대, 제2 사용자는 채팅 대화에 "let's play!" 또는 "I'll watch you two"를 이전에 입력하여, 제2 사용자가 개시된 임베디드 애플리케이션 게임에서 플레이어 역할 또는 관찰자 역할을 하도록 각각 의도한다는 것을 표시할 수 있다. 제2 사용자는 "I'll show you the place in the video"를 입력하여, 임베디드 세션에서 플레이된 비디오에서 플레이백 포지션을 제어하는 제어기 역할이 제2 사용자에게 할당되어야 한다는 것을 표시할 수 있다.
[00192] 일부 구현들에서, 임베디드 세션에서 특정 상황 또는 역할이 할당된 멤버 사용자는 변경된 상황 또는 역할을 가질 수 있고, 그리고/또는, 계속해서 멤버 사용자이면서, 자신의 상황 또는 역할을 상이한 상황 또는 역할로 변경하도록 선택할 수 있다. 예컨대, 임베디드 세션에서 플레이어 역할이 할당된 사용자는 특정 조건들에 기반하여 자동적으로 관찰자 사용자가 될 수 있고, 예컨대, 사용자의 플레이어 캐릭터는 게임에서 제거되었고, 게임 환경 내에서 단지 관찰하고 이동할 수 있지만 환경 내에서 오브젝트들을 변경하는 역할을 하지 않는 "고스트"가 되고, 또는, 예컨대, 2-플레이어 게임에서, 플레이어는 임계치 시간 기간보다 더 오래 오프라인이고, 플레이어 상황을 상실한 반면에, 임베디드 애플리케이션에 의해 온라인 관찰자 사용자에게 플레이어 역할이 자동적으로 할당된다. 다른 예에서, 플레이어 사용자가 자신들의 턴 동안에서만 활성인 턴-기반 게임들에서, 자신들의 턴이 현재 활성이 아닐 때, 플레이어는 자동적으로 관찰자 플레이어가 될 수 있다. 추가의 예들에서, 미리정의된 추가적인 사용자 상황들 또는 역할들은 임베디드 세션에서 영구적으로 또는 일시적으로 이용가능하게 될 수 있고, 그리고/또는 기존 사용자 상황들 또는 역할들은 임베디드 세션 동안 임베디드 세션에서 영구적으로 또는 일시적으로 이용불가능하게 될 수 있다. 예컨대, 이러한 사용자 상황 또는 역할 변화들은 현재 임베디드 세션에서의 멤버 사용자들의 수의 변화, 세션이 활성인 시간의 길이, 전화 통화에 회답하는 것과 같이 사용자가 외부 업무를 행한다는 것을 멤버 사용자가 표시하는 것, 특정 이벤트들이 임베디드 애플리케이션에서 발생하는 것(게임 이벤트들, 공유 리스트의 완성 등) 등에 기반하여 발생할 수 있다.
[00193] 일부 추가적인 예시적인 구현들에서, 로비, 예컨대, 아직 역할이 할당되지 않은 멤버 사용자들을 리스팅하는 디스플레이된 영역이 임베디드 애플리케이션 및 임베디드 인터페이스에 제공될 수 있다. 예컨대, 이러한 사용자들은 게임에서 사용자 상황 또는 역할이 할당되기를 대기하고, 예컨대, 게임이 끝나기를 대기하고, 플레이어 사용자가 비-플레이어 역할로 변하기를 대기하는 식일 수 있다. 일부 예들에서, 멤버 사용자들의 서브세트는 임베디드 세션 내의 서브-세션과 연관될 수 있고, 여기서 사용자들의 서브세트는 서브-세션 내에서 임베디드 애플리케이션을 통해 상호작용하고, 다른 멤버 사용자들은 상호작용하기 위한 상이한 능력을 갖거나 어떠한 능력도 갖지 않는다. 예컨대, 임베디드 세션은 다수의 서브-세션들을 포함할 수 있고, 각각의 서브-세션은 멤버 사용자들의 상이한 서브세트와 연관된다. 일부 예들에서, 각각의 서브-세션은 전체 임베디드 세션에서 실행된 토너먼트 구조 내의 특정 게임일 수 있고, 여기서 각각의 게임은 동시적으로 실행되고, 각각의 게임의 승리자는 새로운 게임에서 서로 플레이한다. 일부 예들에서, 로비에서 2명 이상의 사용자들은 서로 연관되고 그리고/또는 임베디드 세션에서 개시된 서브-세션(예컨대, 개별 게임)에서 특정 역할들이 할당될 수 있다. 팀-기반 구현들이 또한 제공될 수 있고, 여기서 임베디드 세션에 합류한 사용자들에게는 특정 게임의 기존 팀이 할당되고, 각각의 팀은 다수의 플레이어들을 갖는다. 일부 예들에서, 임베디드 세션은 동시에 실행중인 다수의 게임들, 2명의 플레이어들 및 N명의 관찰자들을 갖는 단일 게임 및 2개의 팀들 및 팀당 N명의 플레이어들을 갖는 단일 게임 등을 제공할 수 있다. 일부 구현들에서, 다수의 이러한 서브-세션들은 별개의 동시적 임베디드 세션들로서 구현될 수 있고, 각각의 임베디드 세션은 단일 임베디드 애플리케이션들에 의해 제공된다.
[00194] 블록(414)에서, 제1 임베디드 애플리케이션은 제2 사용자의 추가에 기반하여 임베디드 인터페이스에서 자신의 출력을 업데이트한다. 예컨대, 제2 사용자 식별자뿐만 아니라 제2 사용자 상황(사용자 역할 등)이 임베디드 인터페이스에 디스플레이될 수 있다.
[00195] 블록(416)에서, 제1 임베디드 애플리케이션은 결정된 사용자 상황 정보를 제1 메시징 애플리케이션에 제공한다. 예컨대, 제1 임베디드 애플리케이션이 사용자 역할 및/또는 다른 사용자 상황 정보를 결정하였다면, 이것은 제1 메시징 애플리케이션에 제공된다. 일부 구현들에서, 제1 메시징 애플리케이션은 사용자들의 세션 리스트를 업데이트하고, 사용자 상황 정보를 채팅 인터페이스에서 출력하는 식일 수 있다.
[00196] 일부 구현들에서, 제2 사용자가 임베디드 세션을 종료하는 것은 임베디드 세션에 합류하는 것과 유사하게 구현될 수 있다. 예컨대, 제1 디바이스는, 예컨대, 제2 임베디드 애플리케이션들을 종료하거나, 채팅 대화를 종료하거나, 또는 제2 메시징 애플리케이션을 종료함으로써, 제2 사용자가 임베디드 세션을 종료한다는 표시를 네트워크를 통해 수신할 수 있다. 제1 메시징 애플리케이션은 제2 사용자가 종료하는 것을 표시하는 정보를 제1 임베디드 애플리케이션에 전송하여, 제1 임베디드 애플리케이션은 자신의 상태들을 업데이트할 수 있다(예컨대, 임베디드 인터페이스로부터 제2 사용자의 사용자 아이덴티티를 제거하고, 제2 사용자로부터 입력을 더 이상 예상하지 않음).
[00197] 일부 구현들에서, 사용자 디바이스는 오프라인 모드를 가능하게 하기 위해 임베디드 애플리케이션의 상태를 캐싱할 수 있고, 여기서 사용자 디바이스(및/또는 메시징 애플리케이션)는 네트워크를 통해 다른 사용자 디바이스들 및 서버 디바이스들에 대해 더 이상 가시적이지 않다. 사용자 디바이스(및/또는 메시징 애플리케이션)가 온라인으로 돌아갈 때, 임베디드 애플리케이션의 캐싱된 상태는 다른 멤버 디바이스들과 임베디드 애플리케이션 및 대응하는 임베디드 애플리케이션들을 동기화하는 데 사용되고, 병합/충돌 해상도를 제공할 수 있다. 일부 예들에서, 사용자 디바이스들이 네트워크 연결성을 상실하기 전에, 임베디드 애플리케이션은 임의의 상태 변화들을 사용자 디바이스 상의 저장소에 먼저 기록할 수 있다. 사용자 디바이스가 온라인인 동안, 로컬 상태는 서버에 보관된 서버 글로벌 상태와 일정하게 동기화되고, 여기서 글로벌 상태는 동일한 채팅 대화에서 멤버 디바이스들 상에서 실행되는 임베디드 애플리케이션의 인스턴스들에 의해 공유된다. 네트워크 연결성의 상실 시에, 로컬 상태는 사용자 디바이스 상의 임베디드 애플리케이션에 의해 액세스되고 기록될 수 있지만, 어떠한 클라이언트-대-서버 동기화도 발생하지 않을 수 있다. 일단 사용자 디바이스에 대한 네트워크 연결성이 복원되면, 로컬 상태는 글로벌 상태와 동기화되고(예컨대, 서버-측 변화들의 풀링 및 클라이언트-측 변화들의 푸싱), 필요한 경우 충돌 해상도를 사용하여(예컨대, 마지막-기록-승리 전략 또는 다른 병합 전략을 사용하여) 병합이 발생한다. 이는 제한된 오프라인 지원을 제시하고, 예컨대, 이는 셀 타워 스위치들 또는 환경 변화들(이를테면, 지하로 가는 것 등) 동안 모바일 디바이스들 중에서 공통인 단기 네트워크 연결해제들에 대한 보호를 제공한다. 사용자들이 더 긴 시간 기간 동안 오프라인이면, 사용자 디바이스에 대한 로컬 상태는 서버 글로벌 상태로부터 상당히 벗어날 수 있다.
[00198] 도 5는 메시징 애플리케이션과 연관된 임베디드 애플리케이션을 사용하여 미디어 아이템의 출력을 제공하기 위한 예시적인 방법(500)을 예시하는 흐름도이다. 일부 예들에서, 방법(500)은, 임베디드 애플리케이션이 채팅 대화로부터 개시되고 데이터가 채팅 사용자들을 수반하는 임베디드 세션에서 프로세싱되는 도 2의 하나 이상의 블록들와 유사하게 구현될 수 있다.
[00199] 블록(502)에서, 방법(500)의 구현에서 사용자 데이터를 사용하기 위한 사용자 동의(예컨대, 사용자 허용)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 예컨대, 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송 또는 수신된 메시지들, 사용자 선호도들, 사용자 생체 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자 소셜 네트워크 및 연락처들에 관한 정보, 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 레이팅들, 및 사용자에 의해 생성되거나 제출된 의견들, 사용자의 현재 로케이션, 이력상 사용자 데이터, 사용자에 의해 생성, 수신 및/또는 액세스되는 이미지들, 사용자에 의해 뷰잉 또는 공유된 비디오들 등을 포함할 수 있다. 본원에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다.
[00200] 사용자 동의가 관련 사용자들로부터 획득되었다면 ― 관련 사용자들에 대한 사용자 데이터는 방법(500)에서 사용될 수 있음 ― , 블록(504)에서, 본원의 방법들의 블록들이 이러한 블록들에 대해 설명된 바와 같이 사용자 데이터를 가능한 사용하여 구현될 수 있다고 결정되고, 방법은 블록(508)으로 계속된다. 사용자 동의가 획득되지 않았다면, 블록들이 사용자 데이터를 사용하지 않고 구현될 수 있다고 블록(506)에서 결정되고, 방법은 블록(508)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터를 사용하지 않고 그리고 합성 데이터 및/또는 일반적 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터를 사용하여 구현되어야 한다.
[00201] 블록(508)에서, 채팅 사용자에 의한 미디어 아이템의 선택이 획득되고, 선택은 사용자 디바이스에 의한 미디어 아이템의 플레이백(예컨대, 출력)을 명령한다. 채팅 사용자는 네트워크에 의해 사용자 디바이스 및 서로에 연결된 디바이스들을 사용하여 하나 이상의 다른 채팅 사용자들과 채팅 대화에 참여하고, 여기서 채팅 대화는 상술된 제1 및 제2 사용자들 및 제1 및 제2 디바이스들과 유사한 디바이스에 의해 채팅 인터페이스에 디스플레이된다. 미디어 아이템은 다양한 방식들 중 임의의 것으로 선택될 수 있다. 예컨대, 미디어 아이템의 식별자는 텍스트, 보이스 입력, 디스플레이된 메뉴로부터 디스플레이된 엘리먼트 또는 아이템의 선택 등을 통한 입력일 수 있다. 일부 구현들에서, 미디어 아이템은, 예컨대, 텍스트 커맨드, 채팅 인터페이스에 디스플레이된 인터페이스 엘리먼트 등을 통해 채팅 인터페이스 내에서 선택된다. 일부 구현들에서, 사용자 입력은 또한, 공유 옵션(예컨대, 인터페이스 엘리먼트, 텍스트 커맨드 또는 파라미터 등)을 선택 또는 입력함으로써 미디어 아이템을 채팅 대화와 공유하기 위해 명시적으로 표시할 수 있다. 미디어 아이템을 공유하는 것은, 임베디드 세션을 채팅 대화의 다른 채팅 사용자들에 제시함으로써 다른 디바이스들 상의 플레이백에서 미디어 아이템을 이용가능하게 하는 것을 포함할 수 있다. 일부 구현들은, 미디어 아이템이 출력을 위해 선택될 때, 채팅 대화의 임베디드 세션에서 미디어 아이템을 자동적으로 제시할 수 있다. 일부 구현들에서, 미디어 아이템은, 임베디드 미디어 플레이어 애플리케이션이 블록(510)에서 설명된 바와 같이 개시된 후에 임베디드 인터페이스 내에서 선택될 수 있다. 일부 구현들에서, 봇은 미디어 아이템을 선택하는 데 사용될 수 있고, 봇의 일부 예들이 후술된다. 방법은 블록(510)으로 계속된다.
[00202] 블록(510)에서, 임베디드 미디어 플레이어 애플리케이션은 미디어 아이템의 선택에 대한 응답으로 실행(예컨대, 개시)된다. 임베디드 미디어 플레이어 애플리케이션은 선택된 미디어 아이템을 출력하도록 구성된다. 일부 예들에서, 임베디드 미디어 플레이어 애플리케이션은 상술된 바와 유사하게 서버로부터 사용자 디바이스로 다운로드되고, 사용자 디바이스 상에서 적어도 부분적으로 실행된다. 일부 구현들에서, 임베디드 미디어 플레이어 애플리케이션은 사용자 디바이스와 통신하는 디바이스, 예컨대, 서버 상에서 부분적으로 또는 전체적으로 실행되고, 사용자 디바이스 상의 디스플레이를 위해 데이터(예컨대, 임베디드 인터페이스를 설명하는 데이터)를 제공할 수 있다. 임베디드 미디어 플레이어 애플리케이션은, 채팅 인터페이스의 하나 이상의 채팅 메시지들이 임베디드 인터페이스의 디스플레이 동안 디스플레이될 수 있도록, (예컨대, 상술된 바와 유사하게) 채팅 인터페이스와 연관하여 사용자 디바이스 상의 연관된 임베디드 인터페이스의 디스플레이를 발생시킨다. 일부 구현들에서, 임베디드 미디어 플레이어 애플리케이션은, 플레이될 미디어 아이템을 특정하지 않고서, 사용자 입력이 임베디드 애플리케이션에 실행되도록 명령하는 것에 대한 응답으로, 개시될 수 있다. 예컨대, 그런 다음, 미디어 아이템은, 예컨대, 사용자 입력이 임베디드 인터페이스의 이용가능한 미디어 아이템들의 디스플레이된 메뉴들을 브라우징한 후 등에, 임베디드 인터페이스에 제공된 사용자 입력에 의해 선택될 수 있다. 방법은 블록(512)으로 계속된다.
[00203] 블록(512)에서, 다른 채팅 사용자들이 임베디드 미디어 플레이어 애플리케이션의 시작과 연관하여 개시된 임베디드 세션에 합류하거나 임베디드 세션을 그만두는 것을 가능하게 하고, 여기서 임베디드 세션은 미디어 아이템의 플레이백을 포함할 수 있다. 예컨대, 통지는 채팅 대화에 참여하는 채팅 디바이스들에 전송될 수 있고, 한 명 이상의 채팅 사용자들은, 도 2-4에 대해 상술된 바와 유사하게 멤버 사용자들로서 임베디드 세션에 합류할 수 있다. 방법은 블록(514)으로 계속된다.
[00204] 블록(514)에서, 선택된 미디어 아이템의 플레이백은, 임베디드 미디어 플레이어 애플리케이션에 의해 사용자 디바이스의 디스플레이 상에 제공된 임베디드 인터페이스에서 수행된다. 예컨대, 블록(510)에서 미디어 아이템의 선택 후에, 미디어 아이템의 콘텐츠 데이터의 시퀀스의 시작, 예컨대, 비디오 데이터 세그먼트의 제1 프레임 및/또는 오디오 세그먼트의 제1 부분에서 플레이백이 개시된다. 일부 예들에서, 플레이백은 임베디드 인터페이스에서 비디오 데이터의 프레임들을 디스플레이하는 것 및/또는 사용자 디바이스의 스피커들로부터 대응하는 오디오 데이터를 오디오로서 출력하는 것을 포함할 수 있다. 일부 예들에서, 플레이백은 비디오 및/또는 오디오에 대한 트랙을 플레이하는 것을 포함할 수 있고, 플레이백 포지션은 그 트랙에서 현재 시점에 현재 디스플레이 또는 출력되는 데이터를 참조할 수 있다. 일부 추가의 예들에서, 예컨대, 가상 현실 환경 또는 다른 디스플레이된 3D 환경을 디스플레이하는데 있어서, 플레이백은, 시점 외에 또는 대안적으로, 3D 환경에서 디스플레이된 시점(또는 다른 참조 시점)의 방향 및/또는 배향을 참조하는 플레이백 포지션을 가질 수 있다. 일부 경우들에서, 미디어 아이템 콘텐츠 데이터는 사용자 디바이스의 로컬 저장소, 예컨대, 사용자 디바이스에 포함된 메모리 및 다른 저장소로부터 획득될 수 있다. 일부 경우들에서, 미디어 아이템 콘텐츠 데이터는, 예컨대, 다른 디바이스, 이를테면, 콘텐츠 서버(154), 상이한 멤버 디바이스 등으로부터 데이터의 스트림으로서 네트워크를 통해 수신될 수 있다. 일부 구현들에서, 비디오 미디어 아이템의 플레이백은 뮤팅된 오디오 및 스피치에 대한 캡션들의 디스플레이(예컨대, 여기서 캡션 데이터는 수신된 비디오 데이터에 포함됨)로 디폴팅될 수 있고, 여기서 사용자는 비디오 데이터에 대한 오디오 출력을 가능하게 하도록 선택할 수 있다.
[00205] 미디어 아이템의 플레이백은 임베디드 세션의 다른 멤버 디바이스들 상에서 발생한다. 일부 구현들에서, 서버(예컨대, 세션 서버 또는 콘텐츠 서버)는 임베디드 세션에서 미디어 아이템의 플레이백을 관리할 수 있다. 일부 구현들에서, 콘텐츠 서버는 콘텐츠 데이터를 세션 서버 또는 다른 서버로 스트리밍할 수 있고, 이는 임베디드 세션을 관리하고, 콘텐츠 데이터의 개별 스트림을 각각의 멤버 디바이스에 전송한다. 예컨대, 세션 서버는 멤버 디바이스들로부터 수신된 임의의 커맨드들을 콘텐츠 서버에 전송할 수 있거나, 커맨드들을 콘텐츠 서버에 대한 특정 커맨드로 프로세싱할 수 있다. 일부 구현들에서, 콘텐츠 서버는 콘텐츠 데이터를 독립적으로 임베디드 세션의 각각의 멤버 디바이스로 스트리밍할 수 있고, 멤버 디바이스들 중 하나 이상으로부터의 사용자 입력에 기반하여 커맨드들을 수신할 수 있다. (예컨대, 방법(500)의 나중의 블록들에서) 커맨드들에 기반하여 플레이백에 대해 이루어진 변화들은 모든 스트림들로 멤버 디바이스들에 제공될 수 있다.
[00206] 플레이백은 멤버 디바이스들 중에서 동기화된다. 일부 구현들에서, 동기화는 하나 이상의 서버들에 의해 관리될 수 있다. 예컨대, 콘텐츠 서버가 미디어 아이템을 데이터의 스트림으로서 각각의 멤버 디바이스에 제공하는 것은 동기화 데이터, 예컨대, 참조 포지션을 사용하여 데이터의 각각의 스트림을 동기화할 수 있어서, 각각의 멤버 디바이스 상의 플레이백이 동기화된다. 일부 구현들에서, 세션 서버는, 멤버 디바이스들에 의해 액세스되고 그리고/또는 세션 서버에 의해 멤버 디바이스들에 전송될 수 있는, 참조 포지션(또는 다른 동기화 데이터), 이를테면, 미디어 아이템 데이터 시퀀스 내의 참조 프레임 또는 시간 포지션을 보관할 수 있다. 예컨대, 미디어 데이터의 플레이백은 참조 포지션과 동일한 각각의 멤버 디바이스 상의 프레임(또는 시점)으로 설정될 수 있다. 일부 구현들에서, 동기화는 멤버 디바이스들 중 하나 이상에 의해 관리될 수 있다. 예컨대, 멤버 디바이스들 중 하나(예컨대, 사용자 디바이스)는, 사용자 디바이스 상에 플레이되고 있는 미디어 데이터에 현재 포지션을 표시하는 동기화 데이터(예컨대, 참조 포지션들)를 다른 멤버 디바이스들에 전송하는 참조 디바이스일 수 있다. 다른 멤버 디바이스들은, 참조 디바이스의 참조 포지션과 동기화하기 위해 이러한 디바이스들 상의 미디어 아이템의 플레이백을 조정할 수 있다.
[00207] 일부 예들에서, 모든 멤버 디바이스들(예컨대, 세션 서버, 콘텐츠 서버, 또는 멤버 디바이스들 중 하나)에 액세스가능한 디바이스의 데이터베이스 상에 보관 및 액세스될 수 있는 공유 플레이백 타이머가 사용될 수 있다. 예컨대, 단일 참조 값은, 모든 멤버 디바이스들이 동기화해야 하는 권위있는 플레이백 포지션(예컨대, 글로벌 플레이백 포지션)으로서 역할을 할 수 있다. 일부 구현들에서, 멤버 디바이스들에 대한 플레이백 포지션들과 글로벌 플레이백 포지션 사이에서 톨러런스(예컨대, 임계 시간량), 예컨대, 플러스 또는 마이너스 5초가 허용될 수 있다. 멤버 디바이스의 플레이백 포지션이 톨러런스 양보다 더 큰 시간에서의 포지션이면, 그 플레이백 포지션은 글로벌 플레이백 포지션으로 업데이트된다.
[00208] 일부 구현들에서, 다수의 또는 모든 멤버 디바이스들은 공유 타이머(글로벌 플레이백 포지션)를 평균화 방식으로 업데이트할 수 있다. 예컨대, 플레이백 동안, 각각의 멤버 디바이스는 "싱크 포인트"인 매초(또는 다른 시간 유닛)마다 서버와 동기화하려고 시도한다. 각각의 싱크 포인트에서, 각각의 멤버 디바이스는 글로벌 플레이백 포지션을 증가시키려고 시도한다. 일부 예들에서, 증가량은 다음의 공식을 사용하여 결정될 수 있다.
Figure 112019085831043-pct00001
여기서 g는 글로벌 플레이백 포지션이고, g'는 증가된 글로벌 플레이백 포지션이다. 예컨대, 디바이스 이전의 플레이백 포지션은 이전의 싱크 포인트에 있고, 멤버 디바이스들의 총수는 임베디드 미디어 세션에서(예컨대, 모든 멤버 디바이스들이 글로벌 플레이백 포지션을 업데이트할 수 있는 경우) 멤버 디바이스들의 수이다. 따라서, 각각의 디바이스는, 멤버 디바이스들의 수로 나누어지는 그 디바이스의 마지막 싱크 포인트 이래로 그 디바이스의 플레이백 포지션의 증가에 기반하는 분수량(fractional amount)만큼 글로벌 플레이백 포지션을 업데이트한다. 증가된 플레이백 포지션(g')과 [디바이스 현재 플레이백 포지션] 간의 차이가 톨러런스 값보다 더 크면, 디바이스는 플레이백 포지션을 유지하거나, g로 변경한다(그리고 g'를 커밋(commit)하지 않음). 그렇지 않으면, 디바이스는 g'를 데이터베이스로 커밋한다. 방법은 블록(516)으로 계속된다.
[00209] 블록(516)에서, 사용자 입력은 임베디드 인터페이스에서 멤버 사용자로부터 수신된다. 예컨대, 사용자 입력은, 블록(508)에서 임베디드 세션을 개시한 멤버 디바이스의 사용자로부터 수신될 수 있거나, 사용자 입력은 상이한 멤버 디바이스의 상이한 멤버 사용자로부터 수신될 수 있다. 사용자 입력, 예컨대, 디스플레이된 인터페이스 엘리먼트, 이를테면, 버튼, 아이콘, 슬라이더 제어부 등의 선택은 임베디드 인터페이스에서 수신될 수 있다. 일부 경우들에서, 사용자 입력은 채팅 인터페이스에서 수신되거나 부분적으로 수신될 수 있다. 예컨대, 사용자 입력은 사용자 코멘트를 디스플레이된 미디어 아이템에 직접적으로 입력하기 위한 옵션을 선택할 수 있고, 그런 다음 추가로 사용자 입력은 사용자 코멘트를, 예컨대, 텍스트, 이모지, 레이팅 심볼 등으로서 채팅 인터페이스에 입력할 수 있다. 방법은 블록(518)으로 계속된다.
[00210] 블록(518)에서, 수신된 사용자 입력이 플레이하는 미디어 아이템과 연관된 사용자 코멘트인지가 체크된다. 예컨대, 이러한 연관된 사용자 코멘트는, 사용자 코멘트가 미디어 아이템의 디스플레이 동안 디스플레이되도록, 임베디드 인터페이스에 입력된다. 예컨대, 사용자 코멘트는, 입력 후에, 미리정의된 시간량 동안의 플레이백 동안에 디스플레이될 수 있다. 일부 예들에서, 사용자 코멘트는 비디오 데이터의 디스플레이 상에 수퍼포즈되거나 그렇지 않으면 임베디드 인터페이스에 디스플레이될 수 있다. 일부 구현들에서, 사용자 코멘트의 콘텐츠는, 상술된 바와 같이, 채팅 인터페이스에 입력되고, 그런 다음 임베디드 인터페이스에 디스플레이될 수 있다. 예컨대, 사용자 입력은 코멘트를 입력하기 위해 임베디드 인터페이스에서 옵션을 선택할 수 있고, 그런 다음 코멘트는 채팅 인터페이스를 통해 입력된다. 일부 구현들에서, 사용자 입력은 또한, 임베디드 인터페이스의 디스플레이된 영역에서 사용자 코멘트를 디스플레이하는 특정 로케이션, 이를테면, 미디어 아이템의 뷰 또는 디스플레이 윈도우 내의 로케이션을 선택하거나 지시할 수 있다. 예컨대, 로케이션은 비디오, 이미지, 또는 다른 미디어 아이템의 디스플레이된 뷰 내의 코멘트의 로케이션의 좌표들로서 특정될 수 있다. 추가의 예들에서, 사용자는, 사용자의 감정 또는 무드와 연관된 채팅 인터페이스 또는 임베디드 인터페이스에 디스플레이되는 다수의 제어부들(예컨대, 이모티콘 버튼들) 중 하나 이상을 토글(예컨대, 탭)하거나 지속적으로 선택할 수 있다. 사용자가 제어부를 선택하는 동안 또는 사용자가 제어부 ― 이는 미디어 아이템의 플레이백에 대한 응답으로 그 때에 사용자를 표현함 ― 를 다시 토글(예컨대, 탭)할 때까지, 이러한 선택은 연관된 이미지 또는 아이콘(예컨대, 이모티콘)이 (후술되는 바와 같이) 임베디드 인터페이스에 디스플레이되게 한다.
[00211] 사용자 입력이 사용자 코멘트이면, 블록(520)에서 사용자 코멘트는, 코멘트가 입력되고 그리고/또는 디스플레이된 때 디스플레이된 미디어 아이템의 연관된 부분의 식별과 연관하여 보관된다. 일부 구현들에서, 연관된 부분의 식별은 미디어 아이템의 식별(예컨대, 미디어 아이템의 타이틀, 식별 값 등)을 포함한다. 예컨대, 미디어 아이템의 연관된 부분의 식별은 사용자 코멘트의 미디어 아이템 콘텍스트를 표시할 수 있다. 일부 예들에서, 사용자 코멘트가 5-분 비디오 세그먼트의 플레이백의 시작에서 1분 후의 시간에서 입력되었다면, 미디어 아이템의 연관된 부분은 비디오 세그먼트의 1분 시점에서의 미디어 아이템의 콘텐츠 데이터(예컨대, 1분 시점 전 및/또는 후의 임계 데이터량)이다. 일부 예들에서, 이러한 부분은, 예컨대, 그 부분이 시작하는 곳 또는 그 부분의 중간 포인트를 표시하는 시점에 의해 식별될 수 있다. 일부 구현들에서, 식별은 그 부분의 지속기간을 포함할 수 있다. 일부 구현들에서, 코멘트를 제공한 사용자의 식별(예컨대, 임베디드 세션에 디스플레이되는 사용자의 식별, 또는 채팅 대화의 채팅 아이덴티티)은 보관될 수 있다. 일부 구현들에서, 미디어 아이템의 디스플레이된 영역에 대한 사용자 코멘트의 로케이션의 표시는 사용자 코멘트와 연관하여 보관될 수 있다. 예컨대, 디스플레이된 임베디드 인터페이스 윈도우의 영역, 또는 임베디드 인터페이스의 미디어 디스플레이 윈도우의 영역을 참조하는 좌표들은, 사용자 코멘트가 사용자에 의해 포지셔닝된 로케이션을 표시할 수 있다. 방법은 블록(522)으로 계속된다.
[00212] 블록(522)에서, 연관된 채팅 대화의 식별은 사용자 코멘트와 연관하여 보관된다. 이것은, 예컨대, 사용자 코멘트(및 채팅 대화와 연관된 임베디드 애플리케이션들에 대해 입력 및 보관된 다른 사용자 코멘트들)이 동일한 채팅 대화의 사용자들에 대한(예컨대, 사용자 코멘트가 입력된 때 채팅 대화에 참여한 채팅 사용자들의 동일한 그룹으로부터의 멤버 사용자들에 대한) 미디어 아이템의 나중의 플레이백 동안에 리트리브되고 디스플레이되게 허용한다. 사용자 코멘트는, 상이한, 제2 채팅 대화와 연관된 임베디드 인터페이스에서 미디어 아이템의 향후 플레이백을 위해, 리트리브되지 않을 것이고 디스플레이되지 않을 것이다. 예컨대, 그 제2 채팅 대화는, 제2 채팅 대화와 연관된 임베디드 미디어 플레이어 애플리케이션에 입력된 미디어 아이템의 플레이백 동안 디스플레이하기 위한 연관된 사용자 코멘트들의 그 자신의 세트를 가질 수 있다. 일부 구현들에서, 사용자 코멘트는 다른 채팅 대화들에서 미디어 아이템의 나중의 임베디드 플레이백을 위해 또는 다른 사용자들에 의해 리트리브되고 디스플레이되지 않는다.
[00213] 블록(524)에서, 사용자 코멘트는, 사용자 코멘트가 수신된 멤버 디바이스의 임베디드 인터페이스에 디스플레이되고, 사용자 코멘트는, 사용자 코멘트가 다른 멤버 디바이스들의 임베디드 인터페이스들에 디스플레이되도록, 현재 플레이백 동안 (예컨대, 사용자 디바이스 상의 메시징 애플리케이션을 통해) 다른 멤버 디바이스들에 전송된다. 일부 예들에서, 사용자 코멘트는, 임베디드 인터페이스의 디스플레이로부터 제거되기 전에, 미디어 아이템의 플레이백 동안 미리결정된 시간 기간 동안 디스플레이된다. 시간 기간은 사용자 선호도들, 임베디드 세션에 대한 설정들 등에 기반하여 결정될 수 있다. 일부 구현들에서, 사용자 코멘트는, 상술된 바와 같이, 사용자에 의한 연관된 제어부의 선택, 예컨대, 디스플레이된 제어부의 토글 또는 연속적인 누름에 대한 응답으로 디스플레이되고, 사용자 코멘트는, 사용자가 제어부를 선택하는 것을 정지시키거나 다시 제어부를 토글할 때, 디스플레이로부터 제거된다. 그런 다음, 방법은, 사용자들이 임베디드 세션에 합류하거나 임베디드 세션을 그만두는 것을 가능하게 하기 위해 블록(512)으로 계속되고, 블록(514)에서 미디어 아이템의 플레이백을 수행할 수 있다.
[00214] 만약 블록(518)에서 사용자 입력이 사용자 코멘트가 아니라고 결정되면, 방법은 블록(526)으로 계속되고, 블록(526)에서는 사용자 입력이 미디어 아이템에서 탐색 포인트(seek point)의 선택인지 여부가 체크된다. 일부 예들에서, 사용자는 미디어 아이템의 전체 플레이 길이를 표현하는 임베디드 인터페이스에 디스플레이되는 그래픽 진행 바 또는 타임라인 상에서 탐색 포인트를 선택할 수 있다. 다른 구현들에서, 탐색 포인트는 다른 방식들로, 예컨대, 타임라인을 따라 특정 시간을 특정하는 입력을 수신하는 것에 의해, 타임라인을 따라 플레이백을 앞으로 또는 뒤로 이동시키는 빨리 감기 또는 되감기 제어의 선택을 수신하는 것 등에 의해 선택될 수 있다.
[00215] 만약 사용자 입력이 탐색 포인트의 선택이라면, 블록(528)에서, 미디어 아이템의 플레이백 포지션은 탐색 포인트로 업데이트된다. 예컨대, 탐색 포인트가 플레이백 포지션을 그것의 이전 포지션으로부터 이동시킨 일부 경우들에서는, 미디어 아이템의 플레이백이 그것의 이전 포지션으로부터 중단되고 업데이트된 탐색 포인트에서 계속될 수 있다. 방법은 블록(530)으로 계속된다.
[00216] 블록(530)에서, 탐색 포인트 정보가 디바이스들의 플레이백을 동기화시키기 위해 전송된다. 예컨대, 탐색 포인트를 설명하는 정보, 이를테면 조정된 탐색 포인트의 시간 값 또는 다른 값 등이 다른 멤버 디바이스들 상의 미디어 아이템의 플레이백을 업데이트된 탐색 포인트를 사용자로부터 수신한 멤버 디바이스 상의 플레이백과 동기화시키기 위해서 그 다른 멤버 디바이스들에 (예컨대, 메시징 애플리케이션을 통해) 전송될 수 있다. 상술된 바와 같은 공유 타이머 및/또는 글로벌 플레이백 포지션을 사용하는 일부 구현들에서, 멤버 디바이스는 글로벌 플레이백 포지션(g)의 값을 탐색 포인트에서의 플레이백 포지션의 새로운 값으로 겹쳐 쓰기한다. 이어서, 방법은 사용자들이 임베디드 세션에 합류하거나 이를 떠나는 것을 가능하게 하기 위해 블록(512)으로 계속되고, 블록(514)에서 미디어 아이템의 플레이백을 수행할 수 있다.
[00217] 만약 블록(526)에서 사용자 입력이 탐색 포인트를 선택하지 않았다고 결정되면, 방법은 블록(532)으로 계속되고, 블록(532)에서는 적용가능한 경우 하나 이상의 디바이스 또는 애플리케이션 기능들이 수신된 사용자 입력에 기반하여 수행될 수 있다. 방법은 일부 경우들에서 블록(512)으로 계속될 수 있다. 일부 구현들에서, 방법은 미디어 아이템의 나중의 플레이백에 대한 응답으로 블록(534)으로 계속된다.
[00218] 블록(534)에서, 채팅 대화 및 미디어 아이템과 연관하여 보관된 연관된 사용자 코멘트(들)가 동일한(예컨대, 진행중인) 채팅 대화에서 미디어 아이템의 나중의 플레이백 동안에 디스플레이된다. 연관된 사용자 코멘트들은 나중의 플레이백 동안에 임베디드 인터페이스에 디스플레이될 수 있다. 예컨대, 일부 구현들에서, 만약 블록들(518 내지 524)에서 미디어 아이템이 그 미디어 아이템과 연관하여 보관된 하나 이상의 사용자 코멘트들을 수신하였다면, 연관된 사용자 코멘트들은 채팅 사용자에 의해 미디어 아이템의 연관된 부분들의 나중의 플레이백과 함께 디스플레이될 수 있다. 일부 예들에서, 만약 미디어 아이템이 (예컨대, 동일한 대화 ID를 갖거나, 코멘트가 본래 입력되었을 때와 동일한 참여하는 채팅 사용자들을 갖거나, 오리지널 채팅 사용자들의 서브세트를 갖는) 채팅 대화의 임베디드 인터페이스에서 플레이되고, 하나 이상의 사용자 코멘트들과 연관된 미디어 아이템의 일부가 디스플레이된다면, 연관된 사용자 코멘트들이 저장소로부터 리트리브되고, 또한 연관된 미디어 아이템 부분들과 함께 임베디드 인터페이스에 디스플레이된다. 일부 예들에서, 만약 사용자 코멘트들의 인터페이스 로케이션들이 보관되었다면, 연관된 사용자 코멘트들은 그것이 입력되어진 임베디드 인터페이스의 동일 로케이션에, 예컨대 플레이백 윈도우의 동일 좌표에 디스플레이될 수 있다. 일부 예들에서, 미리 결정된 시간 지속기간 또는 미디어 아이템 데이터의 양이 플레이된 이후에, 연관된 사용자 코멘트(들)가 임베디드 인터페이스로부터 제거될 수 있다. 일부 구현들에서, 사용자 코멘트들은 추가적으로 또는 대안적으로 나중의 플레이백 동안에 채팅 인터페이스의 채팅 대화에 예컨대 채팅 메시지들로서 디스플레이될 수 있다. 일부 구현들에서, 사용자 코멘트들은 플레이백 동안에 미디어 아이템의 디스플레이 아래에 또는 그것의 바로 옆에 리스트로서 디스플레이되거나, 또는 임베디드 인터페이스의 플레이백 인터페이스를 통한 제어(예컨대, 코멘트 뷰와 플레이백 뷰 사이에서의 스위칭)를 통해서 액세스가능할 수 있다.
[00219] 추가적인 예들에서, 상술된 바와 같이, 사용자가 제어를 지속적으로 선택하거나 토글링하는 동안 사용자 코멘트들이 미디어 아이템의 플레이백의 시간 기간과 연관하여 보관되었을 수 있고, 이들 사용자 코멘트들은 미디어 아이템 플레이백의 대응하는 일부 동안에 사용자의 감정 또는 생각들을 (예컨대, 이모티콘들, 이미지들 등을 통해) 표현할 수 있다. 미디어 아이템을 이전에 보았던 다수의 사용자들로부터의 입력으로부터의 다수의 그런 사용자 코멘트들이 저장되어, 이것은, 미디어 아이템을 동시적으로 시청하고 이것에 대해 코멘트하고 있던 멤버 사용자들의 생각들 및 감정 상태들의 동기화를 허용한다. 미디어 아이템의 대응하는 일부들에 대한 사용자 코멘트들은 시간 바 상의 마커들 또는 아이콘들로서 또는 미디어 아이템의 디스플레이 상의 오버레이들로서 디스플레이될 수 있고(예컨대, 비디오 프레임들 위에 디스플레이됨), 여기서 사용자 코멘트는 연관된 마커 또는 아이콘의 선택 시에 전부 디스플레이될 수 있다. 그러한 사용자 코멘트들은 동일한 채팅 대화 내에서 동일하거나 상이한 사용자들에 의한 미디어 아이템의 리플레이(나중의 플레이백) 동안에 사용자들의 생각 및 감정 상태 변화들을 등록할 수 있다.
[00220] 일부 구현들에서, 사용자가 나중의 플레이백을 위해 플레이 미디어 아이템(playing media item)을 저장하게 허용하기 위해서 저장 피처가 제공될 수 있다. 이는 채팅 대화들에서는 자주 보이지 않을 수 있는 비교적 긴 지속기간들을 갖는 미디어 아이템들(예컨대, 영화들 또는 TV 쇼들)에 유용할 수 있다. 일부 예들에서, 사용자는, 제공된 사용자 입력을 통해서, 예컨대 사용자 디바이스에 그리고/또는 서버(예컨대, 세션 서버 또는 메시징 서버)에 저장되는 언플레이된 미디어 아이템들의 연관된 리포지터리에 액세스하도록 허용될 수 있어서, 그 사용자가 미디어 아이템들을 원하는 시간에, 한번에 모두 잇달아 식으로 플레이하게 허용한다. 예컨대, 저장된 미디어 아이템들은 다른 채팅 사용자들에 의해 이전에 플레이되었을 수 있고, 사용자는 이들 임베디드 세션들에 참여하지 않았다.
[00221] 일부 예들에서, 임베디드 세션에서 플레이되는(예컨대, 상이한 채팅 사용자에 의해 개시되는) 각각의 미디어 아이템이 나중의 플레이백을 위해 그 미디어 아이템을 저장하기 위해서 채팅 인터페이스 및/또는 임베디드 인터페이스에서 디스플레이되는 옵션(예컨대, UI 엘리먼트)과 연관될 수 있다. 예컨대, 이 옵션은, 도 2-3을 참조하여 설명된 바와 같이, 임베디드 세션이 활성이라는 것을 표시하는, 사용자 디바이스에 의해 수신된 통지(그리고 이것은 합류 옵션을 또한 포함할 수 있음)와 연관하여 디스플레이될 수 있다. 이런 옵션은 추가적으로 또는 대안적으로 임베디드 인터페이스 내에서, 예컨대, 임베디드 애플리케이션에서 플레이하고 있는 그리고 플레이될 미디어 아이템들의 식별들의 디스플레이된 리스트 바로 옆에 또는 그렇지 않으면 그것과 연관하여 디스플레이될 수 있다. 사용자 입력에 의한 옵션의 선택은 그 미디어 아이템이 선택하는 사용자와 연관된 큐(queue)에 보관되게 한다. 일부 예들에서, 미디어 아이템은 사용자 및 특정 봇이 참여하는 상이한 채팅 대화에 보관될 수 있다. 일부 구현들에서, 사용자는 채팅 대화에서 임베디드 세션들에서 다른 채팅 사용자들에 의해 개시되는 모든 미디어 아이템을 자동적으로 저장하도록 요청할 수 있다. 큐에 보관된 임의의 미디어 아이템은 나중에 선택되고, 그 미디어 아이템을 플레이하기 위해 이어서 개시되는 임베디드 미디어 플레이어 애플리케이션을 위한 임베디드 세션에서 플레이될 수 있다. 일부 구현들에서, 임베디드 인터페이스 및/또는 채팅 인터페이스는 나중의 플레이백 동안에 사용자로부터 코멘트들을 수신할 수 있고, 여기서 그 코멘트들은 임베디드 인터페이스에 디스플레이되고 그리고/또는 미디어 아이템이 본래 플레이된 채팅 대화에 전송되어 제공된다. 일부 예들에서, 큐로부터의 미디어 아이템이 나중의 플레이백을 위해 선택될 때, 선택된 미디어 아이템에 대한 코멘트들이 사용자에 의해 입력되는 것을 가능하게 하기 위해서 코멘트 제어가 디스플레이된다. 일부 구현들에서, 코멘트 제어의 선택은 원래의 채팅 대화를 디스플레이하고, 미디어 아이템 링크를 메시지로서 채팅 대화에 삽입하며, 사용자가 채팅 대화에서 코멘트 메시지들을 구성하는 것을 가능하게 할 수 있다. 일부 구현들에서, 저장되거나 플레이되는 미디어 아이템에 대한 링크는 채팅 대화에서 선택가능한 메시지(예컨대, 플레이 버튼을 갖는 비디오의 이미지, 또는 텍스트 메시지)로서 디스플레이될 수 있고, 그로 인해서 채팅 사용자에 의한 메시지의 선택은 미디어 플레이어 임베디드 애플리케이션이 개시되게 하고 선택된 미디어 아이템이 플레이되게 한다. 일부 구현들은 다른 타입들의 임베디드 애플리케이션들에서 출력되는 다른 타입들의 콘텐츠 데이터에 대한 유사한 저장 피처, 예컨대, (예컨대, 게임의 특정 플레이를 기록하기 위해) 시간에 걸쳐 디스플레이되는 게임 데이터, 문서 데이터, 여행 일정들 등을 제공할 수 있다.
[00222] 상술된 특징들을 사용할 수 있는 다양한 예시적 구현들에서, 미디어 아이템의 선택은 복수의 참여자들을 포함하는 제1 채팅 대화에서 수신된다. 예컨대, 채팅 대화는 네트워크에 의해 연결된 다수의 사용자 디바이스들에서 구현될 수 있다. 미디어 아이템은 네트워크에 의해 사용자 디바이스들 중 하나 이상에 연결된 서버 및/또는 사용자 디바이스에 의해 제공될 수 있다. 미디어 아이템의 플레이백은, 그 미디어 아이템이 참여자들의 사용자 디바이스들에 의해 디스플레이되도록, 제1 채팅 대화에서 개시된다. 코멘트가 제1 참여자로부터 수신되는데, 그 코멘트는 미디어 아이템과 연관되고 그 미디어 아이템의 특정 부분과 연관된다. 코멘트는 보관되고, 그리고 코멘트를 보관한 이후에, 제2 참여자의 사용자 디바이스가 미디어 아이템의 특정 부분을 디스플레이하여 검출된다. 제2 참여자의 사용자 디바이스가 특정 부분을 디스플레이하고 있음을 검출하는 것에 대한 응답으로, 제2 참여자의 사용자 디바이스에 의해 코멘트가 디스플레이되도록 유발된다.
[00223] 이들 구현들에 대한 피처들은, 코멘트가 수신되었을 때 제2 참여자는 제1 참여자가 참여하고 있었던 제1 채팅 대화의 참여자라고 결정하는 것에 대한 응답으로, 제2 참여자의 사용자 디바이스에 의해 코멘트를 디스플레이하는 것을 부가적으로 포함할 수 있다. 코멘트를 보관하는 것은 그 코멘트와 연관되는 식별 정보를 보관하는 것을 포함할 수 있고, 여기서 식별 정보는 제1 채팅 대화의 식별을 포함한다. 일부 예들에서, 식별 정보는 또한 미디어 아이템의 식별, 및 미디어 아이템의 특정 부분의 식별을 포함할 수 있다. 코멘트는 레이팅 및/또는 사용자 코멘트를 포함할 수 있다. 일부 예들에서, 제1 채팅 대화에서 미디어 아이템의 플레이백은, 예컨대, 네트워크를 통해 사용자 디바이스들에 의해 액세스가능한 참조 번호를 제공함으로써, 참여자들의 사용자 디바이스들 간에 동기화되고, 여기서 사용자 디바이스들 각각은 규칙적인 시간 인터벌들로 참조 번호와 동기화하려 시도한다.
[00224] 추가적인 예들에서, 플레이백을 개시하는 것은 사용자 디바이스들의 제1 사용자 디바이스에서 수행될 수 있고, 미디어 아이템의 플레이백이 제1 사용자 디바이스에 의해 개시되었다는 통지가 하나 이상의 다른 사용자 디바이스들에 제공될 수 있다. 다른 사용자 디바이스들은 플레이백에 합류하기 위해 데이터(및/또는 요청)를 전송하고, 다른 사용자 디바이스들은 제1 클라이언트 디바이스를 포함하는 임베디드 세션에 추가된다. 사용자 디바이스들을 추가하는 것에 대한 응답으로, 미디어 아이템의 플레이백은 제1 클라이언트 디바이스에서의 현재 플레이백 포지션에 다른 사용자 디바이스에서 동기화된다. 다른 예에서, 미디어 아이템의 플레이백을 개시하는 것은 메시징 애플리케이션에 의해 제공되는 채팅 대화와 연관하여 사용자 디바이스들 각각 상에 디스플레이된 임베디드 인터페이스에서 미디어 아이템의 데이터를 디스플레이하는 것을 포함한다. 임베디드 인터페이스는 메시징 애플리케이션과 연관하여 실행하는 임베디드 애플리케이션들에 의해 제공된다.
[00225] 일부 예시적 구현들에서, 미디어 아이템의 선택은 채팅 대화에서 참여자들 중 제1 참여자로부터 제1 클라이언트 디바이스에 수신된다. 미디어 아이템의 플레이백을 개시하기 위해 참여자들과 연관된 하나 이상의 클라이언트 디바이스들에 제1 커맨드가 전송된다. 미디어 아이템의 탐색 포인트를 표시하는 사용자 입력이 제2 참여자로부터 제2 클라이언트 디바이스에 수신된다. 사용자 입력에 대한 응답으로, 미디어 아이템의 플레이백을 탐색 포인트로 업데이트하기 위해 복수의 참여자들과 연관된 하나 이상의 클라이언트 디바이스들에 제2 커맨드가 전송된다.
[00226] 예컨대, 미디어 아이템은 제1 미디어 아이템일 수 있다. 제2 미디어 아이템을 선택하는 제2 참여자로부터 입력이 수신될 수 있고, 제1 미디어 아이템 및 제2 미디어 아이템의 플레이백 순서를 표시하는 플레이리스트 큐에 제2 미디어 아이템이 추가될 수 있다. 플레이백의 포지션을 표시하는 글로벌 값을 업데이트하는 것을 포함해서, 제1 클라이언트 디바이스 및 하나 이상의 클라이언트 디바이스들에 대해 미디어 아이템의 플레이백의 동기화가 수행될 수 있다. 일부 구현들에서, 미디어 아이템의 플레이백이 개시되었다는 통지가 복수의 참여자들과 연관된 하나 이상의 클라이언트 디바이스들에 제공되고, 하나 이상의 클라이언트 디바이스들이 플레이백에 합류할 것이라는 표시가 수신되고, 하나 이상의 클라이언트 디바이스가 제1 클라이언트 디바이스를 포함하는 임베디드 세션에 추가되며, 하나 이상의 클라이언트 디바이스들을 세션에 추가하는 것에 대한 응답으로, 미디어 아이템의 플레이백이 제1 클라이언트 디바이스 상의 현재 플레이백 포지션에 하나 이상의 클라이언트 디바이스들 상에서 동기화된다. 일부 예들에서, 제1 채팅 대화에서 미디어 아이템의 플레이백을 개시하는 것은 메시지 애플리케이션에 의해 제공되는 채팅 대화와 연관하여 사용자 디바이스들 각각 상에 디스플레이된 임베디드 인터페이스에서 미디어 아이템의 데이터를 디스플레이하는 것을 포함한다.
[00227] 도 6은 메시징 애플리케이션과 연관하여 임베디드 애플리케이션의 출력을 제공하기 위한 다른 예시적인 방법(600)을 예시하는 흐름도이다. 일부 예들에서, 방법(600)은, 임베디드 애플리케이션이 채팅 대화로부터 개시되고 데이터가 채팅 사용자들을 수반하는 임베디드 세션에서 프로세싱되는 도 2의 하나 이상의 블록들과 유사하게 구현될 수 있다.
[00228] 블록(602)에서, 방법(600)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예컨대, 사용자 허용)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는 예컨대 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송되거나 수신되는 메시지들, 사용자 선호도들, 사용자 생체 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 대한 정보, 사용자에 의해 생성되거나 제출되는 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 레이팅들 및 의견들, 사용자의 현재 로케이션, 이력상 사용자 데이터, 사용자에 의해 생성, 수신 및/또는 액세스되는 이미지들, 사용자에 의해 뷰잉되거나 공유되는 비디오들 등을 포함할 수 있다. 본원에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 그런 사용자 데이터를 사용할 수 있다.
[00229] 만약 사용자 동의가 관련 사용자들로부터 획득되었다면(그 관련 사용자들에 대한 사용자 데이터가 방법(600)에서 사용될 수 있음), 블록(604)에서, 본원에서의 방법들의 블록들이 이들 블록들에 대해 설명된 바와 같이 사용자 데이터를 가능한 사용하여 구현될 수 있다는 것이 결정되고, 방법은 블록(608)으로 계속된다. 만약 사용자 동의가 획득되지 않았다면, 블록들이 사용자 데이터를 사용하지 않고 구현될 것이라는 것이 블록(606)에서 결정되고, 방법은 블록(608)으로 계속된다. 일부 구현들에서, 만약 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터는 사용하지 않고 합성 데이터 및/또는 일반적 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터는 사용하여 구현될 것이다.
[00230] 블록(608)에서, 임베디드 애플리케이션은 채팅 대화를 제공하는 메시징 애플리케이션과 연관하여 사용자 디바이스 상의 임베디드 인터페이스에서 출력되는 디스플레이를 제공하도록 개시되고 실행되었으며, 여기서 도 2-4에 대해 상술된 바와 유사하게, 사용자 디바이스는 임베디드 게임 애플리케이션과 연관된 임베디드 세션에 합류한, 채팅 대화에 참여하는 다수의 멤버 디바이스들 중 하나이다. 방법은 블록(610)으로 계속된다.
[00231] 블록(610)에서, 사용자 디바이스 상에서 실행되는 임베디드 애플리케이션에 대한 로컬 입력이 수신되었는지 여부가 결정된다. 예컨대, 로컬 입력은 임베디드 애플리케이션이 실행되는 사용자 디바이스의 사용자로부터 수신되는 사용자 입력을 포함할 수 있다. 만약 로컬 입력이 수신되었다면, 방법은 블록(612)으로 계속되고, 블록(612)에서는 임베디드 애플리케이션의 하나 이상의 상태(들)가 로컬 입력에 기반하여 업데이트된다. 예컨대, 로컬 입력은 하나 이상의 애플리케이션 상태들이 변경되게 하는, 임베디드 애플리케이션에 대한 하나 이상의 커맨드들을 포함할 수 있다. 이 예에서, 애플리케이션 상태는 임베디드 세션의 멤버 디바이스들의 모든 임베디드 애플리케이션들에서 업데이트되는 상태를 포함할 수 있다. 예컨대, 게임 애플리케이션에서, 업데이트는 게임 상태, 예컨대, 하나 이상의 디스플레이되는 게임 오브젝트들의 포지션 변화, 스코어 변화 등에 대한 것일 수 있다. 미디어 플레이어 애플리케이션에서, 업데이트는 플레이 미디어 아이템의 플레이백 특징, 예컨대, 플레이백 포지션 변화, 정지, 일시정지, 되감기, 빨리 감기 등에 대한 것일 수 있다. 일부 경우들에서, 사용자 디바이스에서 업데이트된 상태는 다른 멤버 디바이스들에서는 업데이트될 수 없는데, 예컨대, 임베디드 인터페이스에서 디스플레이될 때의 환경(예컨대, 게임 환경)의 뷰의 변화는, 만약 각각의 멤버 디바이스 상에서의 뷰가 그 특정 임베디드 애플리케이션에서 그 디바이스의 사용자에 의해 독립적으로 제어된다면, 다른 멤버 디바이스들에서 업데이트될 수 없다. 방법은 블록(614)으로 계속된다.
[00232] 블록(614)에서, 만약 업데이트된 상태가 멤버 디바이스들 간에 업데이트된 타입의 상태라면, 그 업데이트된 상태는 임베디드 세션의 다른 멤버 디바이스들에 전송된다. 예컨대, 임베디드 애플리케이션들은 업데이트된 상태를 설명하는 데이터를 메시징 애플리케이션에 제공할 수 있고, 그 메시징 애플리케이션은 임베디드 세션의 다른 멤버 디바이스들에 데이터를 송신할 수 있다. 방법은 블록(616)으로 계속된다.
[00233] 만약 블록(610)에서 로컬 입력이 수신되지 않았다면, 또는 블록(614) 이후에는, 방법이 블록(616)으로 계속되고, 블록(616)에서는, 네트워크를 통해 임베디드 세션의 다른 멤버 디바이스들 중 하나 이상으로부터 입력(예컨대, 원격 입력)이 수신되었는지 여부가 결정된다. 만약 그런 입력이 수신되었다면, 방법은 블록(618)으로 계속되고, 블록(618)에서는, 애플리케이션 상태가 입력에 기반하여 업데이트된다. 예컨대, 입력은 상이한 멤버 디바이스 상에서 대응하는 임베디드 애플리케이션의 업데이트된 애플리케이션 상태를 표시할 수 있고, 사용자 디바이스 상에서 임베디드 디바이스의 애플리케이션 상태는 다른 멤버 디바이스들과 동기하도록 업데이트된다. 방법은 블록(620)으로 계속된다.
[00234] 만약 블록(616)에서 입력이 수신되지 않았다면, 또는 블록(618) 이후에는, 방법은 블록(620)으로 계속되고, 블록(620)에서는, 하나 이상의 메시지 조건들이 애플리케이션 환경에서 제공되는 하나 이상의 비-사용자 애플리케이션 오브젝트들에 대한 메시징 애플리케이션 또는 임베디드 애플리케이션에서 발생하였는지 여부가 결정된다. 예컨대, 애플리케이션 환경은 게임 환경일 수 있고, 하나 이상의 비-사용자 애플리케이션 오브젝트들은, 예컨대, 임베디드 세션에서 플레이어 사용자들 중 임의의 사용자에 의해 제어되지 않는 게임 환경의 캐릭터들 또는 엔티티들, 예컨대 게임의 플레이어 사용자들이 게임 환경 내에서 상호작용할 수 있는 비-플레이어 게임 엔티티를 표현할 수 있다. 다른 예에서, 애플리케이션 오브젝트들(게임 오브젝트들)은 게임의 플레이어 사용자들과 플레이하거나 그들에 대항하는 비-플레이어 게임 캐릭터들, 이를테면 시뮬레이팅된 상대편 또는 팀 멤버를 포함할 수 있다. 다른 예에서, 애플리케이션 환경은 미디어 아이템을 디스플레이하는 미디어 플레이어 환경일 수 있고, 비-사용자 애플리케이션 오브젝트는 디스플레이되는 콘텐츠 데이터 내의 캐릭터(예컨대, 영화 또는 이미지 내의 캐릭터)일 수 있다. 일부 예들에서, 애플리케이션 오브젝트는 봇에 의해 채택되고 캐릭터로서 디스플레이되는 가정된 캐릭터 또는 사람일 수 있다.
[00235] 비-사용자 애플리케이션 오브젝트는 메시지를 출력하도록 가능해질 수 있다. 예컨대, 만약 애플리케이션 오브젝트가 캐릭터라면, 메시지는 임베디드 애플리케이션 및 세션에서 캐릭터의 액션들 또는 역할에 따를 수 있다. 일부 구현들에서, 다수의 상이한 애플리케이션 오브젝트들은 상이한 타입들의 메시지들을 출력할 수 있는 임베디드 세션에 구현될 수 있다.
[00236] 하나 이상의 메시지 조건들은 미리 정의되고 보관될 수 있으며, 임베디드 애플리케이션 실행 동안에 체크될 수 있다. 메시지 조건들은 메시지 조건이 발생할 경우 연관된 애플리케이션 오브젝트가 채팅 메시지를 출력하게 할 수 있다. 예컨대, 특정 애플리케이션 오브젝트가 하나 이상의 메시지 조건들과 연관될 수 있고, 그로 인해서 만약 하나 이상의 메시지 조건들이 발생한다면(또는, 대안적으로, 만약 하나 이상의 메시지 조건들 중 임의의 하나의 메시지 조건이 발생한다면), 연관된 애플리케이션 오브젝트(들)는 현재 애플리케이션 상태, 현재 멤버 사용자들 등에 기반하여 결정되는 채팅 대화에 대한 메시지 또는 미리 정의된 메시지를 출력하도록 지정된다. 다양한 메시지 조건들 및/또는 메시지 조건들의 타입들이 하나 이상의 연관된 비-사용자 애플리케이션 오브젝트들에 의해 메시지의 출력을 트리거링하기 위해 정의될 수 있다. 메시지 조건은, 예컨대, 애플리케이션 오브젝트에 영향을 미치는 애플리케이션 환경에서 발생하는 이벤트(예컨대, 플레이어-제어식 오브젝트가 애플리케이션 오브젝트와 충돌함, 사용자가 애플리케이션 캐릭터에 어드레싱되는 요청을 입력함 등)를 포함할 수 있다. 메시지 조건은, 예컨대, 임베디드 세션에 합류하거나 이를 종료하는 하나 이상의 멤버 사용자들을 포함할 수 있다. 메시지 조건은, 예컨대, 애플리케이션 환경에서 특정 캐릭터에 대항하거나 이를 보조하는 사용자 액션을 포함할 수 있다.
[00237] 일부 구현들에서, 메시지 조건들은 채팅 대화에서 멤버 사용자들에 의한 특정 채팅 메시지들 또는 채팅 메시지들의 타입들의 입력을 포함할 수 있다. 예컨대, 입력되는 채팅 메시지들은 애플리케이션 오브젝트를 참조할 수 있다. 일부 예들에서, 만약 게임 세션의 플레이어 사용자가 채팅 대화에서 메시지, 이를테면 "let's go after that enemy on the left"를 입력한다면, 이 메시지는 메시징 애플리케이션(또는 임베디드 애플리케이션, 다른 애플리케이션, 또는 서버)에 의해 파싱 및 분석되고, 특정 게임 오브젝트를 참조하기 위해 결정될 수 있다. 이는, 플레이어 메시지가 게임 오브젝트를 참조할 때 트리거링되는 그 게임 오브젝트와 연관된 메시지 조건을 만족시킬 수 있다. 만약 어떤 메시지 조건도 발생하지 않았다면, 방법은 블록(608)으로 계속될 수 있다.
[00238] 만약 메시지 조건이 블록(620)에서 결정된 바와 같이 발생하였다면, 방법은 블록(622)으로 계속되고, 블록(622)에서는, 메시지 조건과 연관되는 애플리케이션 오브젝트들의 오브젝트 아이덴티티들이 임베디드 애플리케이션으로부터 메시징 애플리케이션으로 제공된다. 예컨대, 오브젝트 아이덴티티들은 임베디드 애플리케이션 및 세션에 의해 디스플레이될 때 애플리케이션 오브젝트들의 이름들을 제공하는 라벨들일 수 있거나, 애플리케이션 오브젝트들의 다른 타입들의 식별자들일 수 있다. 또한, 일부 구현들에서, 블록(620)에서, 애플리케이션 오브젝트와 연관되고 그리고 메시지 조건과 연관되는 메시지 데이터가 임베디드 애플리케이션으로부터 메시징 애플리케이션에 제공될 수 있다. 메시지 데이터는 텍스트 또는 다른 형태의 메시지(예컨대, 이미지, 심볼들, 오디오 메시지 등)일 수 있거나, 메시지의 표시(예컨대, 특정 메시지 또는 메시지의 타입을 표시하는 플래그 또는 값)일 수 있다. 일부 구현들에서, 임베디드 애플리케이션은 그 임베디드 애플리케이션에 대해 발생된 것으로 검출된 메시지 조건(들)을 제공할 수 있다. 방법은 블록(624)으로 계속된다.
[00239] 블록(624)에서, 메시징 애플리케이션은 각각의 애플리케이션 오브젝트에 채팅 아이덴티티를 할당한다. 일부 예들에서, 채팅 아이덴티티는 임베디드 게임 애플리케이션에 의해 제공되는 채팅 이름이거나, 애플리케이션 오브젝트는 임베디드 애플리케이션으로부터 수신되는 데이터에 기반하여 메시징 애플리케이션에 의해 채팅 이름을 할당받을 수 있다. 일부 구현들에서, 메시징 애플리케이션은 임베디드 애플리케이션에 의해 제공되는 메시지 데이터에 기반하여 애플리케이션 오브젝트에 대한 메시지를 결정할 수 있다. 예컨대, 메시징 애플리케이션은 룩-업 테이블 또는 다른 데이터 구조 내의 특정 텍스트 메시지에 대응하는 값을 임베디드 애플리케이션으로부터 수신할 수 있다. 일부 구현들에서, 메시징 애플리케이션은 임베디드 애플리케이션에서 발생한 것으로 검출된 하나 이상의 메시지 조건들을 수신하고, 그 메시지 조건들에 기반하여 연관된 메시지들을 결정할 수 있다. 일부 예들에서, 메시징 애플리케이션은 발생하는 메시지 조건들을 서술하는 데이터를 서버에 전송할 수 있는데, 서버는 애플리케이션 오브젝트에 대한 메시지를 결정하고 그 결정된 메시지를 메시징 애플리케이션에 전송할 수 있다. 방법은 블록(626)으로 계속된다.
[00240] 블록(626)에서, 애플리케이션 오브젝트에 대한 각각의 결정된 채팅 아이덴티티와 연관된 메시지가 채팅 대화의 채팅 인터페이스에서 출력된다. 각각의 채팅 아이덴티티는 채팅 대화의 메시지를 채팅 사용자들(예컨대, 단지 일부 구현들에서는 멤버 사용자들)에게 제공하는 연관된 애플리케이션 오브젝트를 표현한다. 이는 임베디드 세션의 멤버 디바이스들이 그들의 채팅 디바이스들에서 메시지를 디스플레이하게 허용하고 멤버 사용자들이 그 메시지를 뷰잉하게 허용한다. 일부 구현들에서, 메시징 애플리케이션은 하나 이상의 특정 멤버 디바이스들의 채팅 인터페이스에서는 메시지를 출력하지만, 다른 멤버 디바이스들의 채팅 인터페이스에서는 메시지를 출력하지 않을 수 있는데, 예컨대 하나 이상의 특정 멤버 디바이스들의 채팅 인터페이스에서 직접 메시지 출력을 출력할 수 있다. 예컨대, 만약 특정 애플리케이션 오브젝트가 애플리케이션 환경에서 멤버 사용자들과 상호작용함으로 인해 그 멤버 사용자들의 서브세트에 (예컨대, 사용자-제어식 애플리케이션 오브젝트들을 통해서 또는 멤버 사용자로부터의 직접 입력에 의해) 메시지를 제공한다면, 메시지는 그 서브세트의 사용자들의 멤버 디바이스들에 전송되거나 그 멤버 디바이스들에 의해 디스플레이될 수 있다.
[00241] 출력 메시지는 다양한 형태들을 취할 수 있고, 메시지 조건, 및 그 애플리케이션 오브젝트와 연관된 한 세트의 보관된 메시지들에 기반할 수 있다. 예컨대, 만약 메시지 조건이 임베디드 게임 세션에 합류하는 하나 이상의 멤버 사용자들에 의해 충족되고 연관된 게임 오브젝트가 플레이어-에너미 게임 오브젝트(예컨대, 캐릭터)라면, 그 게임 오브젝트에 대한 출력 메시지는 "Another victim!"일 수 있다. 유사한 메시지 조건이 "Welcome, User"와 같은 메시지를 제공할 수 있는 플레이어들-친화적 게임 오브젝트(예컨대, 캐릭터)와 연관될 수 있다. 다른 예에서, 메시지 조건이 임베디드 세션에 합류하는 새로운 사용자에 의해 충족되는 것에 대한 응답으로, 연관된 애플리케이션 오브젝트(예컨대, 캐릭터)가 새로운 플레이어의 채팅 인터페이스에서만 디스플레이되는 애플리케이션 사용자를 위한 힌트들 또는 팁들(예컨대, 게임을 플레이하는 방법)을 포함하는 하나 이상의 메시지들을 전송함으로써 어시스턴스를 새로운 사용자에게 제공할 수 있다. 다른 예에서, 만약 메시지 조건이 애플리케이션 오브젝트에 대해 발생하는 임베디드 애플리케이션에서의 이벤트에 의해 충족된다면, 연관된 메시지는 애플리케이션 오브젝트의 상황의 설명(예컨대, "I need help from all of you" 또는 "beware, I am stronger"라고 말하는 게임 캐릭터)을 포함할 수 있다. 다른 예에서, 만약 메시지 조건이 비-사용자 애플리케이션 캐릭터에 대항하는 사용자 액션에 의해 충족된다면, 비-사용자 캐릭터가 도발들과 같은 메시지들(예컨대, 게임에서 "your efforts are useless")을 제공할 수 있다. 다른 예에서, 만약 메시지 조건이 비-사용자 애플리케이션 오브젝트(예컨대, 캐릭터)를 보조하는 사용자 액션들에 의해 충족되면, 애플리케이션 오브젝트는 보조하는 사용자들에게 감사를 표하는 메시지들(예컨대, "your help was greatly needed")을 제공할 수 있다. 다른 예에서, 메시지 조건은 채팅 대화에서 멤버 사용자로부터 특정 사용자 채팅 메시지의 입력에 의해 충족될 수 있는데, 여기서 채팅 메시지(예컨대, "let's go after that enemy on the left")는 게임 오브젝트를 참조한다. 메시지 조건이 충족되는 것에 대한 응답으로, 게임 오브젝트를 나타내는 채팅 아이덴티티에 의해 출력되는 연관된 메시지는 "You will find me a worthy opponent"와 같은 텍스트를 포함할 수 있다. 일부 구현들에서, 그런 메시지들은 이미지들, 이모지들, 또는 다른 타입들의 데이터를 포함할 수 있다.
임베디드 애플리케이션들과 연관하여 제안된 아이템들을 제공하는 예들
[00242] 도 7은 채팅 대화에서 임베디드 애플리케이션과 연관하여 제안된 응답 아이템들을 제공하기 위한 예시적인 방법(700)을 예시하는 흐름도이다.
[00243] 제안된 응답 아이템들(본원에서 "제안된 아이템들"로도 지칭됨)은 다양한 콘텍스트들에서 사용자에 의한 선택을 위해 채팅 인터페이스 및/또는 임베디드 인터페이스에서 생성되어 제공될 수 있다. 이미지를 전송 및/또는 수신한 사용자 및 하나 이상의 다른 사용자들로부터의 동의가 있을 때, 제안된 응답 아이템들은 생성되어 사용자에게 자동적으로 제공될 수 있다.
[00244] 제안된 응답 아이템들은 관련 결과들을 한 세트의 데이터에 제공할 수 있는 하나 이상의 기법들에 기반하여 결정될 수 있다. 일부 구현들에서, 제안된 응답 아이템들은, 후술되는 바와 같이, 특정 제안 이벤트들과 제안된 응답 아이템들의 (예컨대, 룩-업 테이블 또는 데이터베이스에) 보관되는 미리 정의된 연관들 및/또는 발생된 제안 이벤트들의 타입들에 기반하여 결정될 수 있다. 제안된 응답 아이템들은, 텍스트, 이미지들, 애니메이팅된 이미지들(예컨대, 시네마그래프들), 오디오 세그먼트들, 비디오, 다른 타입들의 문서들(예컨대, 스프레드시트들, 테이블들 등) 등을 포함해서, 하나 이상의 상이한 콘텐츠 데이터 타입들이거나 또는 이들을 포함할 수 있다. 제안된 응답 아이템들은 또한 대화형 카드들을 포함하거나 대화형 카드들로서 제공될 수 있다. 일부 구현들에서, 제안된 응답 아이템들은, 후술되는 바와 같이, 하나 이상의 액션들을 수행하거나 출력을 제공하는 첨부된(예컨대, 경량) 임베디드 애플리케이션들을 포함할 수 있다. 다수의 타입들, 및 이들 타입들 및 피처들의 제안된 응답들이 메뉴(예컨대, 드롭 다운 메뉴, 캐러셀 선택 메뉴 등)에서 제공될 수 있다.
[00245] 일부 예들에서, 제안된 응답 아이템들은 하나 이상의 머신 학습 기법들을 사용하여 결정될 수 있다. 일부 예들에서, 메시징 애플리케이션(103a/103b)은 메시징 애플리케이션(103)과의 사용자 상호작용을 향상시킬 수 있는 머신-학습 애플리케이션, 예컨대 심층 학습 모델과의 머신 학습 또는 인터페이스를 구현할 수 있다. 제안 서버(156)는, 예컨대, 메시징 애플리케이션에 제안들을 제공하기 위해 머신 학습을 활용할 수 있다. 일부 구현들에서, 머신 학습은 환경(100)의 하나 이상의 다른 컴포넌트들 상에서 예컨대 제안 서버(156)를 사용하지 않고 구현될 수 있다.
[00246] 머신 학습 모델은 제안 이벤트(그 제안 이벤트에 대한 제안된 응답 아이템들이 생성될 것임)를 수신하기 이전에 트레이닝 데이터에 기반하여 생성될 수 있고, 그로 인해, 제안 이벤트의 표시의 수신 시에, 제안된 응답 아이템들은 기존 모델을 사용하여 생성될 수 있다. 머신-학습 모델들은, 사용자 정보는 사용하지 않고, 합성 데이터 또는 테스트 데이터, 예컨대, 컴퓨터에 의해서 자동적으로 생성되는 데이터를 사용하여 트레이닝될 수 있다. 합성 데이터는 임베디드 애플리케이션들 및 임베디드 세션들에서 발생하는 시뮬레이팅된 이벤트들, 및 응답 커맨드들 및 메시지들에 기반할 수 있고, 여기서 어떠한 인간 사용자들도 참여하지 않는다. 일부 구현들에서, 머신-학습 모델들은 샘플 데이터 또는 트레이닝 데이터, 예컨대, 임베디드 애플리케이션 및 세션 이벤트들에 대한 응답으로 그리고 트레이닝 목적으로 그런 데이터를 제공하도록 동의한 사용자들에 의해 실질적으로 제공되는 커맨드들 및 메시지들을 사용하여 트레이닝될 수 있다. 트레이닝 데이터는 사용자 식별자들 및 다른 사용자-관련된 정보를 제거하기 위해 사용하기 전에 처리된다. 일부 구현들에서, 머신-학습 모델들은 샘플 데이터(트레이닝을 위해 사용자 데이터를 활용하기 위한 그 샘플 데이터에 대한 허용들이 사용자들로부터 명확히 획득됨)에 기반하여 트레이닝될 수 있다. 머신 학습 모델이 트레이닝된 후에, 새롭게 발생하는 세트의 데이터가 모델에 입력될 수 있고, 그 모델은 샘플 데이터를 통한 그것의 트레이닝에 기반하여 제안된 아이템들을 제공할 수 있다. 샘플 데이터에 기반하여, 머신-학습 모델은 임베디드 세션에서 이벤트들을 발생시키기 위해 메시지들 및 커맨드들을 예측할 수 있고, 이어서 이들은 제안된 응답 아이템들로서 제공될 수 있다. 사용자 상호작용은, 예컨대, 발생하는 이벤트 및 사용자의 콘텍스트에 기반하여 맞춤화된 응답 아이템들의 선정을 제공하여 사용자가 커맨드를 결정하거나 애플리케이션 이벤트에 대한 메시지를 구성하는데 있어서 부담을 감소시킴으로써, 향상된다. 머신-학습 애플리케이션 및 머신-학습 피처들의 일부 예들은 도 12를 참조로 후술된다.
[00247] 일부 예들에서, 사용자들이 동의를 제공할 때, 제안된 응답 아이템들은 사용자의 이전 활동, 예컨대, 대화에서 제공되는 조기 메시지들, 상이한 대화에서의 메시지들, 임베디드 애플리케이션 또는 상이한 임베디드 애플리케이션 프로그램에 사용자에 의해 제공되는 조기 커맨드들 등에 기반하여 맞춤화될 수 있다. 예컨대, 그러한 활동은 사용자의 상호작용 스타일에 기반하여, 사용자에 대한 적절한 제안된 아이템, 예컨대 농담 메시지 또는 커맨드, 공식적 메시지 등을 결정하는데 사용될 수 있다. 다른 예에서, 사용자가 하나 이상의 사용자-선호 언어들 및/또는 로케일들을 특정할 때, 메시징 애플리케이션(103a/103b)은 제안된 아이템들을 사용자의 선호 언어로 생성할 수 있다. 다양한 예들에서, 제안된 아이템들은 텍스트 메시지들, 이미지들, 멀티미디어, 인코딩된 커맨드들 등일 수 있다.
[00248] 일부 구현들에서, 머신 학습은 환경(100)의 하나 이상의 컴포넌트들, 예컨대, 제안 서버(156), 메시징 서버(101), 클라이언트 디바이스들(115), 메시징 서버(101) 및 클라이언트 디바이스들(115) 중 어느 하나 또는 둘 다 등에서 구현될 수 있다. 일부 구현들에서, 간단한 머신 학습 모델은 (예컨대, 메모리, 즉 저장소 내의 모델의 동작, 및 클라이언트 디바이스들의 프로세싱 제약들을 허용하기 위해) 클라이언트 디바이스(115) 상에 구현될 수 있고, 복잡한 머신 학습 모델이 메시징 서버(101), 제안 서버(156), 및/또는 상이한 서버 상에서 구현될 수 있다. 만약 사용자가 머신 학습 기법들의 사용에 대한 동의를 제공하지 않는다면, 그런 기법들은 구현되지 않는다. 일부 구현들에서, 사용자는 머신 학습이 클라이언트 디바이스(115) 상에서만 구현되는 것에 대한 동의를 선택적으로 제공할 수 있다. 일부 구현들에서, 머신 학습이 클라이언트 디바이스(115) 상에서 구현될 수 있음으로써, 머신 학습 모델에 의해 사용되는 사용자 정보 또는 머신 학습 모델에 대한 업데이트들이 국부적으로 사용되거나 보관되고, 다른 디바이스들, 이를테면 메시징 서버(101), 서버들(135 및 150-156), 또는 다른 클라이언트 디바이스들(115)에 공유되지 않는다.
[00249] 예컨대 머신-학습 기법들에 기반하여 제안들을 수신하는 것에 대한 동의를 제공하는 사용자들의 경우, 제안들은 메시징 애플리케이션(103)에 의해 제공될 수 있다. 예컨대, 제안들은 콘텐츠(예컨대, 영화들, 책들 등), 스케줄들(예컨대, 사용자의 캘린더 상의 이용가능한 시간), 이벤트들/베뉴들(예컨대, 식당들, 콘서트들 등) 등의 제안을 포함할 수 있다. 일부 구현들에서, 만약 자신들의 디바이스들을 통해 채팅 대화에 참여하는 사용자들이 대화 데이터의 사용에 대한 동의를 제공한다면, 제안들은 대화 콘텐츠에 기반하는 다른 채팅 사용자들에 의해 입력되는 메시지들에 대한 제안된 메시지 응답들을 포함할 수 있다. 예컨대, 만약 대화 콘텐츠에 기반한 제안들에 동의한 두 명의 사용자들 중 제1 사용자가 메시지 "do you want to grab a bite? How about Italian?"를 전송한다면, 응답, 예컨대, "@assistant lunch, Italian, table for 2"이 제2 사용자에게 제안될 수 있다. 이 예에서, 제안된 응답은 봇(심볼 @ 및 봇 핸들 어시스턴트에 의해 식별됨)을 포함한다. 만약 제2 사용자가 이 응답을 선택한다면, 어시스턴트 봇이 채팅 대화에 추가되고, 메시지가 봇에 전송된다. 그런 다음, 봇으로부터의 응답이 대화에 디스플레이될 수 있고, 두 명의 사용자들 중 어느 한 명이 추가 메시지들을 봇에 전송할 수 있다. 이 예에서, 어시스턴트 봇은 채팅 대화의 콘텐츠에 대한 액세스를 제공받지 않고, 제안된 아이템들이 메시징 애플리케이션에 의해 생성된다.
[00250] 특정 구현들에서, 제안된 아이템의 콘텐츠는 봇이 채팅 대회에 이미 존재하는지 여부 또는 채팅 대화에 통합될 수 있는지 여부에 기반하여 맞춤화될 수 있다. 예컨대, 만약 여행 봇이 메시징 애플리케이션에 통합될 수 있다고 결정되면, 프랑스행 비행기 티켓들의 비용에 관한 질문에 대한 제안된 메시지 응답은 "Let's ask travel bot!"일 수 있다.
[00251] 상이한 구현들에서, 제안들, 예컨대 본원에 설명된 바와 같은 제안된 메시지들은, 텍스트(예컨대, "Terrific!"), 이모지(예컨대, 웃는 얼굴, 졸린 얼굴 등), 이미지들(예컨대, 사용자의 사진 라이브러리로부터의 사진들), 템플릿의 필드에 삽입된 사용자 데이터를 갖는 템플릿에 기반하여 생성된 텍스트(예컨대, 만약 사용자가 사용자 데이터로의 액세스를 제공한다면, 필드 "Phone Number"가 사용자 데이터에 기반하여 채워지는 "her number is <Phone Number>"), 링크들(예컨대, URL들(Uniform Resource Locators)), 메시지 스티커들 등 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 제안된 메시지들은 예컨대 컬러들, 폰트들, 레이아웃 등을 사용하여 포맷 및/또는 스타일링될 수 있다. 예컨대, 영화 추천을 포함하는 제안된 메시지는 영화, 영화로부터의 이미지, 및 티켓들을 구매할 링크에 대한 서술 텍스트를 포함할 수 있다. 상이한 구현들에서, 제안된 메시지들은 상이한 타입들의 사용자 인터페이스 엘리먼트들, 예컨대 텍스트 박스들, 대화형 카드 등으로서 제공될 수 있다.
[00252] 다양한 구현들에서, 사용자들은, 그들이 제안된 아이템들을 수신하는지 여부, 그들이 어떤 타입들의 제안된 아이템들을 수신하는지, 제안된 아이템들의 빈도 등에 대한 제어를 제시받는다. 예컨대, 사용자들은 제안된 아이템들 모두를 수신하는 것을 거부할 수 있거나, 특정 타입들의 제안된 아이템들을 선정하거나 하루 중 특정 시간 동안에만 제안된 아이템들을 수신할 수 있다. 다른 예에서, 사용자들은 개인화된 제안된 아이템들을 수신하기로 선정할 수 있다. 이 예에서, 머신 학습은 머신 학습 기법들의 사용 및 제안된 아이템들의 데이터의 사용에 관한 사용자의 선호도들에 기반하여, 그 제안된 아이템들을 제공하기 위해 사용될 수 있다.
[00253] 블록(702)에서, 방법(700)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예컨대, 사용자 허용)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는 예컨대 메시징 애플리케이션(103)을 사용하여 사용자에 의해 전송되거나 수신되는 메시지들, 사용자 선호도들, 사용자 생체 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 대한 정보, 사용자에 의해 생성되거나 제출되는 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 레이팅들 및 의견들, 사용자의 현재 로케이션, 이력상 사용자 데이터, 사용자에 의해 생성, 수신 및/또는 액세스되는 이미지들, 사용자에 의해 뷰잉되거나 공유되는 비디오들 등을 포함할 수 있다. 본원에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 그런 사용자 데이터를 사용할 수 있다.
[00254] 만약 사용자 동의가 관련 사용자들로부터 획득되었다면(그 관련 사용자들에 대한 사용자 데이터가 방법(700)에서 사용될 수 있음), 블록(704)에서, 본원에서의 방법들의 블록들이 이들 블록들에 대해 설명된 바와 같이 사용자 데이터를 가능한 사용하여 구현될 수 있다는 것이 결정되고, 방법은 블록(708)으로 계속된다. 만약 사용자 동의가 획득되지 않았다면, 블록들이 사용자 데이터를 사용하지 않고 구현될 것이라는 것이 블록(706)에서 결정되고, 방법은 블록(708)으로 계속된다. 일부 구현들에서, 만약 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터는 사용하지 않고 합성 데이터 및/또는 일반적 또는 공개적으로 액세스가능하고 공개적으로 사용가능한 데이터는 사용하여 구현될 것이다.
[00255] 블록(708)에서, (제1) 채팅 대화를 제공하는 (제1) 메시징 애플리케이션과 연관하여 제1 사용자 디바이스에 대해 (제1) 임베디드 애플리케이션이 실행되고, 여기서 도 2-4에 대해 상술된 바와 같이 유사하게, 제1 사용자 디바이스는 채팅 대화와 연관하여 생성되는 임베디드 세션에 합류한, 채팅 대화에 참여하는 다수의 사용자 디바이스들 중 하나의 사용자 디바이스이다. 사용자 디바이스들은 상술된 바와 같이 대응하는 임베디드 애플리케이션들을 실행중인 멤버 디바이스들이다.
[00256] 블록(710)에서, 제안 이벤트, 예컨대, 도 7에 대해 설명된 바와 같이 하나 이상의 제안된 응답 아이템들이 생성되게 할 수 있는 이벤트가 발행하였는지 여부가 결정된다. 일부 구현들에서, 제안 이벤트는 임베디드 애플리케이션들과 연관하여 발생하는 이벤트를 포함할 수 있다. 그런 제안 이벤트들은 임베디드 세션의 임베디드 애플리케이션에서, 메시징 애플리케이션에서, 임베디드 세션에서 사용되는 서버에서, 및/또는 임베디드 세션, 멤버 디바이스들, 또는 채팅 디바이스들과 통신하는 상이한 애플리케이션 또는 디바이스에서 발생할 수 있다. 제안 이벤트들은 디바이스에서 사용자 입력의 수신, 프로그램에서 상태의 변화, 디바이스들 간의 데이터의 통신, 네트워크를 통해 임베디드 세션 또는 디바이스와의 사용자 디바이스의 연결, 디바이스에서 데이터의 수신 또는 송신(예컨대, 프로그램들 간에, 네트워크를 통하는 식으로), 미디어 데이터 또는 다른 데이터에서 콘텐츠 피처들의 검출, 채팅 메시지들에서 특정 토픽들의 검출, 이전 시간에 발생하는 이들 이벤트들 중 하나 이상(예컨대, 이력상 데이터(historical data)에 표시됨) 등을 포함할 수 있다. 예컨대, 일부 구현들에서, 제안 이벤트들, 이를테면, 채팅 사용자들이 채팅 대화에 들어가거나 그만두는 것, 채팅 사용자들에 의해 채팅 대화에 입력되는 채팅 메시지들 내의 특정 검출된 콘텐츠 등이 메시징 애플리케이션(예컨대, 채팅 대화)에서 발생하는 것에 대해 체크될 수 있다. 다른 예들이 본원에서 설명된다. 후술되는 바와 같이, 제안 이벤트는 채팅 대화 또는 채팅 인터페이스에서 멤버 디바이스(또는 채팅 디바이스) 상에 제공될 수 있는 하나 이상의 제안된 응답 아이템들의 생성을 트리거하고, 디바이스의 사용자에 의한 사용을 선택가능하다.
[00257] 다양한 구현들에서, 임베디드 애플리케이션 및/또는 메시징 애플리케이션은 이벤트가 제안 이벤트로서 자격을 갖추는지 여부를 결정할 수 있다. 일부 구현들에서, 제안 이벤트는 임베디드 애플리케이션들, 메시징 애플리케이션들, 및/또는 제안된 응답 아이템들이 사용자에 대해 생성되게 하는 제안 이벤트들인 것으로 지정된 다른 애플리케이션들 및 디바이스들에서 다수의 미리정의된 타입들의 이벤트들 중 임의의 것일 수 있다.
[00258] 일부 구현들에서, 제안 이벤트들은, 채팅 대화에 참여하는 채팅 디바이스들 중 하나 이상에서 발생하는 하나 이상의 특정 이벤트들에 기반하여 결정될 수 있다. 예컨대, 이러한 특정 이벤트들은 채팅 인터페이스에 의해 그리고/또는 제1 사용자 디바이스의 그리고/또는 다른 멤버 디바이스들 또는 채팅 디바이스들의 임베디드 인터페이스에 의해 수신된 사용자 입력을 포함할 수 있다. 일부 예들에서, 이러한 특정 이벤트들은 연관된 채팅 사용자(들) 및/또는 멤버 사용자(들)로부터 하나 이상의 멤버 디바이스들에 의해 수신된 사용자 입력에 기반하여 임베디드 애플리케이션에서 수행된 채팅 사용자 액션들 및/또는 멤버 사용자 액션들일 수 있다. 제1 사용자 디바이스(예컨대, 제1 메시징 애플리케이션)는, 예컨대 특정 이벤트들을 표시 및/또는 식별하는 데이터를 네트워크를 통해 수신함으로써, 다른 디바이스들(예컨대, 멤버 디바이스들, 채팅 디바이스들 및/또는 다른 디바이스들)에서 특정 이벤트들이 발생했다는 표시들을 수신할 수 있다.
[00259] 예컨대, 제안 이벤트는, 멤버 디바이스 또는 채팅 디바이스에서의 사용자 입력에 기반하여 사용자가 임베디드 세션에 합류하거나 또는 임베디드 세션을 그만두는 것일 수 있거나, 또는 사용자 입력, 그리고 임베디드 세션의 하나 이상의 상태들에 영향을 미치는 것(예컨대, 임베디드 세션에 대해 멤버 디바이스들 상에서 실행중인 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들에 영향을 미치는 것)에 기반한 상이한 액션일 수 있다. 제안 이벤트는, 채팅 인터페이스에서 사용자에 의해 선택되는 임베디드 애플리케이션 및/또는 멤버 사용자에 의해 개시되는 임베디드 애플리케이션일 수 있다. 제안 이벤트는 임베디드 애플리케이션에서 멤버 사용자에 의해 수행된 액션(예컨대, 미디어 아이템의 플레이백을 시작하는 것, 게임 액션을 수행하는 것, 임베디드 애플리케이션에 제공되고 임베디드 인터페이스에 디스플레이된, 디스플레이되는 공유 오브젝트, 예컨대 문서 오브젝트, 게임 오브젝트 등을 추가하거나 또는 수정하는 것)일 수 있다. 제안 이벤트는 (예컨대, 도 5를 참조로 설명된 바와 같이) 멤버 사용자에 의해 미디어 아이템에 이전에 추가된 특정 사용자 코멘트의 (예컨대, 임베디드 인터페이스에서의) 현재 디스플레이일 수 있다. 제안 이벤트는, 로컬(제1 사용자 디바이스) 또는 원격(다른 멤버/채팅 디바이스) 사용자 입력 또는 임베디드 세션의 임베디드 애플리케이션에서 편집된 다른 공유 데이터에 기반한, 공유 콘텐츠 문서에서의 아이템 또는 엘리먼트의 변화일 수 있다. 제안 이벤트는 임베디드 여행 일정 애플리케이션에서 멤버 사용자에 의한 특정 여행 일정의 선택 또는 확인일 수 있다.
[00260] 일부 구현들에서, 제안 이벤트들은 하나 이상의 멤버 디바이스들에서, 예컨대, 임베디드 세션의 하나 이상의 임베디드 애플리케이션들 내에서 발생하는 임베디드 애플리케이션 이벤트들인 하나 이상의 특정 이벤트들에 기반하여 결정될 수 있다. 일부 구현들에서, 일부 타입들의 임베디드 애플리케이션 이벤트들은 사용자 입력에 기반하고, 일부 타입들의 임베디드 애플리케이션 이벤트들은 사용자 입력에 기반하지 않는다. 일부 예들에서, 제안 이벤트는 임베디드 애플리케이션 이벤트, 이를테면, 임베디드 애플리케이션에서 플레이되고 있는 특정 콘텐츠 데이터(예컨대, 미디어 아이템 데이터)에 기반할 수 있다. 예컨대, 특정 콘텐츠 데이터는 하나 이상의 이미지 인식 및/또는 보이스/오디오 인식 기법들을 사용하여 플레이된 미디어 아이템의 시각적 콘텐츠(예컨대, 이미지 또는 비디오) 또는 오디오 콘텐츠(예컨대, 데이터의 오디오 세그먼트)에서 검출되는 하나 이상의 콘텐츠 피처들(또는 타입들의 콘텐츠 피처들)일 수 있다. 예컨대, 콘텐츠 피처들은 시각적 콘텐츠 피처들(예컨대, 만약 사용자 동의가 획득되었다면 얼굴들, 풍경 피처들, 기념물들, 오브젝트들 등) 및 오디오 콘텐츠 피처들(예컨대, 보이스들, 특정 사운드 효과들 등)을 포함할 수 있다. 콘텐츠 피처들은, 예컨대, 콘텐츠 아이템들, 이를테면 비디오들, 이미지들, 오디오 세그먼트들, 게임들 등을 갖는 메타 데이터로서 제공되는 지리적 로케이션들을 포함할 수 있다. 제안 이벤트는, 임베디드 게임 애플리케이션에서 특정 목표 또는 스코어의 달성(또는 달성에 실패)일 수 있거나, 또는 미리정의된 임계치보다 더 큰, 게임에서 제1-장소 플레이어와 다음-장소 플레이어 사이의 스코어 차이의 달성일 수 있다. 제안 이벤트는, 임베디드 게임 애플리케이션(예컨대, 게임 액션을 수행한 상이한 멤버 사용자에 의해 트리거링되는, 또는 시간, 게임에서의 비-플레이어 이벤트들 등에 의해 트리거링되는, 게임 상태를 진행시키기 위해 플레이어 액션을 기다리는 게임 애플리케이션)에서 플레이어가 특정 액션을 수행하거나 또는 이동할 기회일 수 있다.
[00261] 일부 구현들에서, 제안 이벤트들은 특정 타입들의 임베디드 애플리케이션 이벤트들일 수 있다. 예컨대, 사용자 멤버 이벤트들은 (예컨대, 채팅 디바이스에서 임베디드 애플리케이션을 개시함으로써) 채팅 사용자가 새로운 임베디드 세션을 시작하는 것, 채팅 사용자가 활성 임베디드 세션에 합류하는 것, 멤버 사용자가 활성 임베디드 세션을 종료하는 것, 또는 임베디드 세션의 마지막 멤버 사용자가 임베디드 세션을 종료하는 것 그리고/또는 그렇지 않으면 임베디드 세션을 끝내는 것을 포함할 수 있다. 특정 지정된 임베디드 애플리케이션 이벤트들은 시작하는 또는 끝난 이벤트들을 포함할 수 있는데, 예컨대, 멤버 사용자가 게임을 이기는 것(게임이 완료되게 함), 콘텐츠 문서가 생성 또는 삭제되는 것, 새로운 비디오가 미디어 플레이어 애플리케이션 내에서 시작 또는 끝나는 것 등이다. 동기화 이벤트들은, 멤버 디바이스들 상의 임베디드 애플리케이션들을 동기화시키기 위한 데이터가 멤버 디바이스들에 제공되는 이벤트들(예컨대, 입력 사용자 액션이 게임 상태를 변화시키는 것, 미디어 플레이어 애플리케이션에서 플레이된 미디어 아이템의 플레이백 포지션의 상태가 변화되는 것, 공유 리스트 상의 아이템이 변화되는 것 등)을 포함할 수 있다. 제안 이벤트들은 이러한 정의된 타입들의 임베디드 애플리케이션 이벤트들 중 하나 이상의 발생인 것으로 정의될 수 있다.
[00262] 일부 구현들에서, 특정 이벤트들(및/또는 제안 이벤트들)이 발생했다는 것을 표시하기 위해 이벤트 정보가 애플리케이션들 사이에서 그리고/또는 채팅 디바이스들 사이에서 전송될 수 있다. 예컨대, 이벤트 정보는 임베디드 애플리케이션에서 발생된 특정 이벤트의 발생 시 임베디드 애플리케이션으로부터 그것의 연관된 메시징 애플리케이션으로 전달될 수 있다. 일부 구현들 또는 경우들에서, 특정 이벤트가 임베디드 애플리케이션에서 발생했고, 이벤트 정보는 특정 이벤트의 발생을 표시할 수 있고 그리고/또는 특정 이벤트 또는 이벤트의 타입을 식별할 수 있다. 예컨대, 이벤트 정보는 특정 이벤트의 타입(예컨대, 특정 게임에서 게임 액션이 수행된 것, 미디어 아이템의 플레이백이 일시정지되었거나 또는 상이한 플레이백 포지션으로 변화된 것 등), 특정 이벤트와 연관된 데이터(예컨대, 이벤트의 발생 시간, 이벤트로서 검출된 플레이된 미디어 아이템에서 디스플레이되는 피처의 타입 등), 특정 이벤트의 상황들(예컨대, 어느 멤버 사용자들이 이벤트를 유발했는지 또는 이벤트에 의해 영향을 받는 역할, 상황 또는 스코어를 갖는지 등)을 표시할 수 있다. 이러한 특정 이벤트들은 본원에서 설명되는 이벤트들 중 임의의 이벤트, 예컨대, 임베디드 애플리케이션 이벤트들, 메시징 애플리케이션 이벤트들, 서버 이벤트들 등을 포함할 수 있다.
[00263] 일부 구현들에서, 이벤트 정보는 네트워크를 통해 하나의 디바이스로부터 다른 디바이스로, 예컨대 멤버 디바이스(또는 채팅 디바이스)로부터 서버 디바이스로, 서버 디바이스로부터 하나 이상의 멤버 디바이스들(또는 채팅 디바이스들) 등으로 전송될 수 있다. 예컨대, 임베디드 이벤트 정보는 임베디드 애플리케이션에서 발생하는 이벤트를 표시하는, 임베디드 애플리케이션으로부터의 것일 수 있고, 서버 이벤트 정보는 서버에서 발생하는 이벤트를 표시하는, 서버로부터의 것일 수 있는 식이다. 일부 예들에서, 멤버 디바이스 상의 메시징 애플리케이션은 상이한 디바이스 상에서 특정 이벤트가 발생했다는 것을 표시하는, 상이한 디바이스로부터의 이벤트 정보를 수신할 수 있다. 일부 구현들 또는 경우들에서, 메시징 애플리케이션은 수신된 이벤트 정보에 의해 표시된 이벤트가 제안 이벤트인지를 결정할 수 있다. 일부 구현들 또는 경우들에서, 메시징 애플리케이션은 그 메시징 애플리케이션과 연관하여 실행하는 임베디드 애플리케이션에 이벤트 정보를 전달할 수 있고, 여기서, 임베디드 애플리케이션은 이벤트 정보에 의해 표시된 이벤트가 제안 이벤트인지를 결정한다(그리고 임의의 결과적인 제안 이벤트를 다시 메시징 애플리케이션에 통신할 수 있다).
[00264] 일부 구현들에서, 메시징 애플리케이션에 의해 수신된 이벤트 정보는 특정 이벤트가 제안 이벤트임을 표시할 수 있다. 예컨대, 이벤트 정보의 소스는 특정 이벤트가 제안 이벤트로서 자격을 갖춘다고 결정했을 수 있다. 일부 구현들에서, 이벤트 정보는 특정 이벤트를 표시할 수 있고, 메시징 애플리케이션은 특정 이벤트가 제안 이벤트로서 자격을 갖추는지 여부를 결정할 수 있다. 일부 구현들에서, 메시징 애플리케이션은 이러한 이벤트 정보를 사용하여 제안된 아이템들을 획득할 수 있는데, 예컨대, 하나 이상의 제안된 아이템들 자체를 결정할 수 있고, 그리고/또는 메시징 애플리케이션에 다시 전송될 수 있는 제안된 아이템들을 결정하도록 이벤트 정보(또는 이벤트 정보로부터 도출된 요청)를 상이한 프로그램 또는 디바이스에 전송할 수 있다.
[00265] 일부 구현들에서, 제안 이벤트들은 메시징 애플리케이션에 제공되는, 또는 메시징 애플리케이션에서의 특정 이벤트들일 수 있다. 예컨대, 사용자가 채팅 대화에 들어가는 것(예컨대, 로그온, 온라인이 되는 것) 또는 채팅 대화를 종료하는 것이 제안 이벤트일 수 있다. 채팅 대화에서 멤버 사용자들에 의해 입력된 하나 이상의 특정 채팅 메시지들(또는 채팅 메시지들의 특정 세트 또는 시퀀스)이 제안 이벤트로 고려될 수 있다. 예컨대, 채팅 메시지들은 파싱될 수 있으며, 제안 이벤트를 결정하기 위해 하나 이상의 미리결정된 토픽들, 단어들 또는 키워드들 및/또는 구절들(예컨대, "go out to eat", "let's invite User4", "let's watch MovieA", 특정 이름, 주소, 로케이션 등)이 검출될 수 있다. 일부 구현들에서, 머신 학습 모델이, 합성 또는 실제 트레이닝 데이터를 이용하여 트레이닝 스테이지에서 트레이닝될 수 있고, 방법(700)에서 사용되는 추론 스테이지에서, 제안 이벤트가 발생했는지를 예측하기 위해 한 세트의 채팅 메시지들을 프로세싱하는 데 사용될 수 있다. 예컨대, 모델은 임의의 특정 사용자 액션들(예컨대, 커맨드들 또는 추가적인 메시지들)이 한 세트의 채팅 메시지들의 콘텐츠에 기반하여 사용자들에 의해 개시되거나 또는 제공될 가능성이 있는지를 예측할 수 있으며, 만약 이러한 커맨드들이 발생의 임계치 확률 내에 있으면, 한 세트의 채팅 메시지들의 입력(예컨대, 세트의 마지막 채팅 메시지의 입력)은 제안 이벤트로 고려될 수 있다.
[00266] 일부 구현들에서, 제안 이벤트들은, 제1 디바이스 상에서 실행하는 임베디드 애플리케이션의 하나 이상의 상태들을 변화시키는, 메시징 애플리케이션에 제공되는 또는 메시징 애플리케이션에서의 특정 이벤트들(예컨대, 이는 이어서, 다른 멤버 디바이스들 상에서 실행하는 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들에서의 변화를 유발함)일 수 있다. 예컨대, 채팅 인터페이스를 통해 메시징 애플리케이션에 제공되는 사용자 입력은 커맨드들을 임베디드 애플리케이션으로 지향시킬 수 있다(예컨대, 채팅 인터페이스에서 채팅 메시지들로서 입력된 텍스트 커맨드들에 기반하여, 플레이 미디어 아이템의 플레이백 상태를 변화시키는 것, 게임 액션을 수행하는 것 등). 일부 구현들에서, 임베디드 애플리케이션에 대한 직접적인 커맨드들이 아닌, 채팅 인터페이스에서의 입력이 임베디드 애플리케이션의 하나 이상의 상태들을 변화시킬 수 있다. 예컨대, 임베디드 애플리케이션에 대한 옵션들의 선택은 임베디드 인터페이스 외부의 채팅 인터페이스에 디스플레이되는 메뉴 또는 인터페이스 엘리먼트들을 통해 수행될 수 있다. 추가적인 예들에서, 채팅 인터페이스에 입력된 채팅 메시지들은 실행하는 임베디드 애플리케이션에 의해 파싱될 수 있으며, 그리고 데이터를 결정 또는 프로세싱하고, 특정 출력 데이터를 디스플레이하며, 그리고/또는 본원에서 설명되는 예들로서 저장소, 상이한 디바이스, 네트워크 사이트 등으로부터 데이터를 리트리브하기 위해, 임베디드 애플리케이션이 자신의 상태들 중 하나 이상을 변화시키게 할 수 있다.
[00267] 일부 구현들에서, 제안 이벤트는 제1 채팅 대화를 제공하는 메시징 애플리케이션에 의해 제공되는 상이한 채팅 대화 내에서 발생하는 특정 이벤트일 수 있다. 예컨대, 특정 이벤트는 상이한 채팅 대화에 입력된 사용자 메시지, 미리정의된 단어들 또는 구절들에 매칭하는 그 사용자 메시지의 특정 콘텐츠(또는 머신 학습 기법들에 기반한 다른 매치들), 사용자가 상이한 채팅 대화에 합류하거나 또는 종료하는 것 등일 수 있다. 일부 예들에서, 상이한 채팅 대화의 채팅 사용자는 제1 채팅 대화에 합류하는 것에 관심을 표시하는 메시지를 입력할 수 있으며, 이 메시지는, 제안된 커맨드(예컨대, 상이한 채팅 대화의 사용자들을 제1 채팅 대화 및/또는 임베디드 세션에 추가하라는 커맨드) 또는 제안된 메시지(예컨대, 다른 사용자들을 환영하고, 상이한 채팅 대화의 사용자들을 제1 채팅 대화에 초대하는 식으로 상이한 채팅 대화에서 출력될 메시지)를 생성하기 위해, 제안 이벤트로서 검출될 수 있다.
[00268] 일부 구현들에서, 제안 이벤트는, 사용자에 대해 하나 이상의 제안된 응답 아이템들을 생성하라고 시스템에게 명령하는 사용자 액션(예컨대, 입력 커맨드)인 특정 이벤트일 수 있다. 예컨대, 사용자는 하나 이상의 일반적인 제안된 메시지들 또는 제안된 커맨드들을 생성하라는 커맨드인 인터페이스 엘리먼트를 임베디드 인터페이스 또는 채팅 인터페이스에서 선택할 수 있다. 일부 예들에서, 이러한 제안된 메시지들은 임베디드 애플리케이션에 관한 코멘트들 또는 하나 이상의 멤버 사용자들에 관한 코멘트들을 포함할 수 있거나, 또는 이러한 제안된 커맨드들은 임베디드 세션을 종료하는 커맨드, 게임을 그만두는 커맨드 등을 포함할 수 있다.
[00269] 일부 구현들에서, 제안 이벤트는, 메시징 애플리케이션 및 임베디드 애플리케이션과는 상이한, 사용자 디바이스 상에서 실행하는 상이한 애플리케이션으로부터 수신된 데이터에 기반할 수 있으며, 여기서, 데이터는 특정 이벤트가 상이한 애플리케이션에서 발생했다는 것을 표시한다. 예컨대, 화상 회의 애플리케이션은, 화상 회의가 끝났고 특정 사용자가 화상 회의에 합류하는 것 또는 이를 종료하는 것 등을 표시하는 표시(예컨대, 데이터)를 메시징 애플리케이션에 전송할 수 있다. 일부 구현들에서, 제안 이벤트는, 네트워크를 통해 사용자 디바이스와 통신하는 서버 또는 다른 디바이스 상에서(예컨대, 서버 또는 다른 디바이스 상에서 실행하는 애플리케이션에서) 발생했고 예컨대 임베디드 세션에서 사용되는 데이터를 제공하고 있는 특정 이벤트일 수 있다. 예컨대, 특정 이벤트는, 서버가 채팅 대화에 참여하지 않는 다른 사용자 디바이스들로부터 획득한 사용자 입력(예컨대, 저장된 미디어 아이템들에 대한 코멘트들 또는 레이팅들), 예컨대, 서버가 임베디드 세션에 제공하고 있는 제1 콘텐츠 데이터와 동일한 제2 콘텐츠 데이터에 대한 사용자 요청들, 다른 사용자 디바이스들에 전송되고 있는 제2 콘텐츠 데이터에 대한 사용자 코멘트들 또는 레이팅들 등을 포함할 수 있다.
[00270] 제안 이벤트는, 서버 상에서 발생하는 특정 이벤트, 예컨대, 서버에 의해 실행되고 네트워크를 통해 멤버 디바이스들에 스트리밍되는 게임에서의 게임 이벤트(이를테면, 게임 상태에서의 변화 등), 서버로부터 멤버 디바이스들에 스트리밍되는 미디어 아이템에 디스플레이되는 특정 타입의 콘텐츠 피처 등을 포함할 수 있다. 메시징 애플리케이션은, 발생된 특정 서버 이벤트를 표시하거나 또는 설명하는 서버 이벤트 정보를 서버로부터 수신할 수 있으며, 이 특정 서버 이벤트는 메시징 애플리케이션 또는 임베디드 애플리케이션에 대한 제안 이벤트로서 자격을 갖출 수 있다.
[00271] 만약 사용자 동의가 획득되었다면, 제안 이벤트는 이전 시간에서 발생된 특정 이벤트를 포함할 수 있다. 예컨대, 본원에서 설명되는 특정 이벤트들 중 하나 이상의 발생은 사용자 동의(예컨대, 디바이스 통신의 설명, 채팅 메시지들의 콘텐츠 등)와 함께 하나 이상의 디바이스들 상에 보관된 데이터에서 표시되거나 또는 설명될 수 있으며, 디바이스는 이 데이터에서 이러한 이전의 특정 이벤트들을 서치할 수 있다.
[00272] 블록(712)에서, 검출된 제안 이벤트가, 임베디드 애플리케이션에 대한 하나 이상의 제안된 커맨드들과 연관되는 이벤트인지(그리고/또는 연관되는 타입을 갖는지) 여부가 결정된다. 예컨대, 일부 타입들의 제안 이벤트들은 임베디드 애플리케이션에 대한 제안된 커맨드들인 제안된 응답 아이템들의 생성을 유발할 수 있다.
[00273] 임베디드 애플리케이션에 대한 제안된 커맨드는 예컨대 임베디드 애플리케이션의 하나 이상의 상태들을 수정하라는 커맨드일 수 있다. 예컨대, 제안된 커맨드는, 임베디드 애플리케이션에서 플레이되고 있는 미디어 아이템의 새로운 플레이백 포지션으로 플레이백 포지션을 세팅하거나 또는 현재 플레이백 포지션을 변화시키라는 제안된 플레이백 커맨드일 수 있다. 추가적인 예들에서, 제안된 커맨드는, 임베디드 게임 애플리케이션에서 게임 상태를 수정하라는 커맨드, 예컨대, 특정 게임 액션을 수행하라는 커맨드, 이를테면, 게임 피스 또는 캐릭터를 이동시키라는 커맨드, 게임 디스플레이 뷰포인트를 변화시키라는 커맨드, 게임 오브젝트를 선택하라는 커맨드 등일 수 있다. 제안된 커맨드는, 임베디드 애플리케이션에 제공된 공유 콘텐츠 문서(예컨대, 공유 리스트)의 특정 아이템 또는 엘리먼트를 추가하거나, 수정하거나 또는 제거하기 위한 것일 수 있다. 제안된 커맨드들을 제공할 수 있는 제안 이벤트 타입들은, 예컨대, 하나 이상의 멤버 사용자들의 임베디드 세션으로의 합류 또는 임베디드 세션으로부터의 종료, 게임 임베디드 애플리케이션에서 플레이어가 행한 액션, 게임이 액션을 기다리고 있거나 또는 플레이어로부터 이동하는 게임의 상태, 게임에서 플레이어 또는 플레이어의 오브젝트들이 상이한 플레이어 또는 플레이어의 오브젝트들과 상호작용하고 있는 이벤트(예컨대, 오브젝트들 사이의 공격 또는 충돌, 하나의 플레이어로부터 다른 플레이어로의 도움을 위한 제시 또는 요청 등), 미디어 아이템의 시각적 또는 오디오 콘텐츠에서 검출된 변화(예컨대, 임계치 이동 속도를 초과하여, 오브젝트들의 느린 이동을 갖는 장면으로부터, 이동하는 오브젝트들을 갖는 장면으로의 변화, 말하는 장면으로부터 액션 장면으로의 변화, 임계치를 초과하여, 더 낮은 볼륨 또는 일정한 사운드로부터 더 높은 볼륨으로의 오디오 출력의 변화, 또는 임계치 주파수를 초과하여 빠르게 변하는 진폭의 사운드 등), 상이한 멤버 사용자에 의해 공유 콘텐츠 문서에 수행된 변화(예컨대, 추가적인 변화들을 위해, 또는 수행된 변화를 다시 변화시키기 위해 사용자를 프롬프트하는 제안), 플레이된 미디어 아이템의 플레이백 포지션에서의 변화 등을 포함할 수 있다.
[00274] 만약 검출된 제안 이벤트가, 임베디드 애플리케이션에 대해 하나 이상의 제안된 커맨드들을 제공하는 타입이면, 방법은 블록(714)으로 계속되며, 여기서, 하나 이상의 제안된 커맨드들이 획득되고, 제안 이벤트에 적어도 부분적으로 기반한다. 일부 구현들에서, 제안된 커맨드들은, 제안 이벤트 이외에 또는 대안으로서, 다른 요인들, 예컨대, 임베디드 애플리케이션 및/또는 메시징 애플리케이션의 하나 이상의 현재 상태(들)(예컨대, 미디어 아이템에서의 플레이백의 현재 시간 포지션, 현재 게임 스코어, 멤버 사용자들 및/또는 채팅 사용자들의 현재 수 또는 식별들, 시각 등)에 기반할 수 있다. 일부 예들에서, 하나 이상의 제안된 응답 아이템들은 제안 이벤트에 기반하여 임베디드 애플리케이션 및/또는 채팅 애플리케이션에 의해 결정될 수 있다. 일부 구현들에서, 제안된 응답 아이템들이 디스에이블되게, 예컨대, 생성되지 않게 그리고/또는 디스플레이되지 않게 하는 옵션(예컨대, 디스플레이된 인터페이스 엘리먼트)이 사용자에게 제공될 수 있다.
[00275] 일부 구현들에서, 제안된 커맨드들은 특정 제안 이벤트들 및/또는 제안 이벤트들의 타입들과, 제안된 커맨드들의 보관된, 미리정의된 연관들에 기반하여 결정될 수 있다. 예컨대, 하나 이상의 특정 타입들의 제안 이벤트들이 예컨대 룩-업 테이블 또는 데이터베이스에서의 하나 이상의 특정 커맨드들과 연관되어서, 연관된 커맨드들은 검출된 제안 이벤트에 기반하여 리트리브될 수 있다.
[00276] 일부 구현들에서, 임베디드 애플리케이션은 제안된 응답 아이템들을 결정하기 위해 (예컨대, 임베디드 애플리케이션에서 결과들을 결정하는 데 사용된 규칙들, 다른 규칙 세트들, 판단 트리들 등에 기반하여) 추천 엔진을 구현할 수 있다. 일 예에서, 제안된 응답 아이템들은 판단 트리(또는 다른 판단 구성)에 기반하여 결정될 수 있으며, 이 판단 트리에서, 트리의 노드들에서의 하나 이상의 조건들의 상태들은, 마지막 결과들로서 제안 아이템들을 결정하기 위해, 트리를 통하는 경로를 결정하며, 여기서, 조건들은 제안 이벤트들 및 다른 조건들을 포함할 수 있다. 다른 예에서, 임베디드 애플리케이션이 규칙-기반 게임(예컨대, 체스, 포커 등)일 때, 제안된 응답 아이템들은 게임의 규칙들 및/또는 목표들에 기반하여 결정될 수 있다. 예컨대, 제안된 응답 아이템은 게임에서의 이동(예컨대, 체스 보드 로케이션 g7로의 비숍의 이동을 표시하는 Bg7)일 수 있다. 예컨대, 규칙세트 또는 판단 트리는 미리결정된, 이길 확률들에 기반하여 이동을 결정할 수 있다. 다른 예에서, 사용자들이 사용자 데이터의 분석을 허용할 때, 제안된 응답 아이템은 사용자의 이전에 수락된 제안들에 기반할 수 있다(예컨대, 사용자는 대개, 폰(pawn)을 로케이션 d4로 이동시키는 것을 표시하는 이동 d4를 이용하여 체스 게임을 연다).
[00277] 일부 구현들에서, 사용자가 사용자 프로필 데이터의 사용을 허용할 때, 제안된 응답 아이템들은 사용자 프로필 데이터, 예컨대, 사용자 입력에 의해 직접적으로 특정되고 그리고/또는 이전 사용자 액션들에 기반하여 추론된 디폴트들 또는 사용자 선호도들에 기반하여 결정될 수 있다. 예컨대, 만약 임베디드 애플리케이션이 쇼핑 애플리케이션(예컨대, 여행 앱, 전자 상거래 앱 등)이고, 제안 이벤트가 사용자가 "purchase" 사용자 인터페이스로 내비게이팅했다는 것이면, 제안된 응답 아이템들은, 사용자의 프로필에 기반하여 "pay with credit card", "pay with bank account", "pay with cash" 등을 포함할 수 있다. 유사하게, 만약 사용자 동의가 획득되었다면, 다른 사용자 프로필 데이터, 이를테면, 사용자의 연락처 정보(예컨대, 주소, 전화 번호, 이메일 등)가 제안된 응답 아이템들에 포함될 수 있다. 일부 구현들에서, 예컨대, 임베디드 애플리케이션이 "퀴즈(quiz)" 애플리케이션일 때, 임베디드 애플리케이션은 퀴즈 질문에 회답하기 위한 다중 선정들로서, 제안된 응답 아이템들을 제공할 수 있다.
[00278] 일부 구현들에서, 제안된 커맨드들은, 본원에 설명된 바와 같이 임베디드 애플리케이션 및/또는 머신 학습 기법들에 대해 트레이닝된 모델을 사용하여 결정될 수 있다. 예컨대, 제안된 커맨드들은 머신-학습 모델의 추론 스테이지의 결과일 수 있으며, 여기서, 모델은 트레이닝 데이터로서 특정 제안 이벤트들 및 제안 이벤트들의 타입들 그리고 그러한 제안 이벤트들에 대한 응답으로 사용자들에 의해 입력된 특정 커맨드들을 이용하여 이전에 트레이닝되어서, 모델은 새롭게 발생하는 제안 이벤트에 기반하여 추론 스테이지에서 가능성이 있는 또는 관련 제안된 커맨드들을 생성할 수 있다. 일부 구현들에서, 제안된 응답 아이템들은, 특정 임베디드 애플리케이션에 대한 응답 아이템들을 제공하도록 트레이닝되는 머신-학습 애플리케이션에 의해 결정될 수 있다. 일부 예들에서, 제안된 응답들에 사용되는 머신 학습 모델은 특정 임베디드 애플리케이션에서 수행될 수 있는 다양한 게임 액션들을 인식하도록 트레이닝될 수 있으며, 여기서, 머신 학습 모델은 임베디드 애플리케이션에서 응답 액션을 트리거링하는 제안된 커맨드들, 예컨대, "build a tower", "move pawn to space D1", "play this video next" 등을 그 임베디드 애플리케이션에서 제공할 수 있다.
[00279] 다양한 구현들에서, 제안 이벤트는 하나 이상의 제안된 커맨드들(또는 다른 응답 아이템들)을 결정하기 위해 분석될 수 있다. 일부 구현들에서, 제안 이벤트의 분석은 제안 이벤트에 대한 규칙 세트 또는 판단 트리를 찾는 것을 포함할 수 있다. 일부 구현들에서, 제안 이벤트의 분석은 제안 이벤트의 콘텍스트를 결정하기 위해 임베디드 애플리케이션의 상태(예컨대, 게임에서의 진행 레벨, 게임 동안 어시스턴스와 관련된 사용자 설정 등)를 결정하는 것을 포함할 수 있다.
[00280] 일부 예시적 구현들에서, 임베디드 애플리케이션은 미디어 아이템을 플레이하고 있고, 제안된 커맨드들은 미디어 아이템의 플레이을 수정하기 위해 제공될 수 있다. 예컨대, 만약 제안 이벤트가, 채팅 사용자가 미디어 아이템을 뷰잉하기 위해 임베디드 세션에 합류하는 것이면, 제안된 커맨드는 미디어 아이템의 시작부터 플레이백을 재시작하기 위한 것(예컨대, 비디오 또는 오디오 세그먼트를, 세그먼트의 초반부터 시작하기 위한 것)일 수 있으며, 이는 새로운 멤버 사용자가 초반부터 미디어 아이템을 뷰잉하게 허용할 수 있다. 일부 구현들에서, 이러한 "restart" 제안된 커맨드가, 미디어 아이템이 그것의 시작 후에 임계치 시간 기간인 현재 플레이백 포인트에 있는 것에 대한 응답으로 생성될 수 있어서, 플레이백 포지션이 임계치 시간 기간을 초과하는 시간 기간 동안 플레이되었다면 재시작 제안된 커맨드는 생성되지 않는다(예컨대, 그 이유는 기존 멤버 사용자들이 장시간 동안 플레이된 미디어 아이템을 재시작하기를 원하지 않을 수 있기 때문임). 다른 예에서, 만약 제안 이벤트가 미디어 아이템에서 발생한 것으로 검출된 특정 검출된 타입의 장면 또는 시퀀스(예컨대, 검출된 액션 장면 또는 시퀀스)이면, 제안된 커맨드들은, 검출된 장면 또는 시퀀스를 그 장면의 시작부터 리플레이하기 위해, 플레이백 포지션을 특정 시간량으로 되감는 것을 포함할 수 있다. (예컨대, 도 5를 참조로 설명된 바와 같이) 다른 예시적인 제안된 커맨드는, 임베디드 애플리케이션이 프롬프트 또는 입력 필드를 디스플레이하게 하여, 사용자가 사용자 코멘트를 입력하게 허용할 수 있으며, 그런 다음, 사용자 코멘트는 플레이된 미디어 아이템의 디스플레이된 장면 상에 디스플레이(예컨대, 수퍼임포즈)된다. 다른 예에서, 만약 제안 이벤트가 다른 멤버 사용자에 의한 미디어 아이템의 플레이백 포지션에서의 변화라면, 제안된 커맨드는 플레이백 포지션에서의 변화를, 변화 이전에 그것이 유지한 포지션으로 되돌리거나 또는 되돌아가기 위한 것일 수 있다. 다른 예에서, 만약 제안 이벤트가 플레이백 포지션에서의 변화라면, 제안된 커맨드들은 가장 가까운(한 방향 또는 어느 한 방향으로) 장면 전환, 챕터 분할, 세그먼트 분할, 또는 미디어 파일에서의 다른 마킹된 분할으로의 플레이백 포지션에서의 하나 이상의 추가적인 변화들(예컨대, "adjust to nearest previous chapter heading?" 및 "adjust to nearest later chapter heading?"와 같은 커맨드들)을 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가 미디어 아이템에 의해 출력되는 오디오 볼륨에서의 변화(예컨대, 임계량만큼의 변화, 또는 임계치 레벨을 초과하는 볼륨 레벨로의 변화)라면, 제안된 커맨드들은 볼륨을 높이거나 또는 낮추기 위한 것일 수 있다.
[00281] 일부 예시적 구현들에서, 임베디드 애플리케이션은 게임을 제공하고 있으며, 제안된 커맨드들은 게임으로 지향될 수 있다. 예컨대, 만약 제안 이벤트가 게임의 제2 플레이어에 의한 게임 액션이면, 제1 플레이어에 대한 제안된 커맨드는, 예컨대 게임 전략 및 액션들을 평가할 수 있는 게임 알고리즘들에 의해 결정되는 바와 같이, 게임 액션에 대한 응답으로 게임으로의 하나 이상의 가능한 액션들의 입력을 유발할 수 있다. 일부 예들에서, 만약 제안 이벤트가 상대편 플레이어에 의한 게임 피스의 이동이면, 제안된 커맨드들은 게임에서(예컨대, 비동기 또는 턴-기반 게임에서) 사용자의 피스들의 다양한 가능한 응답하는 이동들을 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가 에너미 게임 피스들에 의한 사용자의 게임 영역의 침략이면, 제안된 커맨드들은 침략자들을 인터셉트하기 위해 피스들을 이동시키기 위한 커맨드, 침략된 로케이션에서 플레이어의 피스들을 이용하여 이 침략된 로케이션을 방어하기 위한 커맨드 등을 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가 다른 플레이어가 게임에 합류하는 것이라면, 제안된 커맨드들은, 새로운 플레이어에게 게임에서 사용자의 팀에 합류하도록 요청하는 것, 그리고 상이한 플레이어에게 새로운 플레이어에 대항하는 팀을 형성하도록 요청하는 것을 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가 멤버 사용자가 게임을 종료하는(또는 게임에서 플레이어 역할을 관찰자 역할로 변화시키는) 것이면, 제안된 커맨드는, 교체 플레이어가 게임에 합류할 때까지 게임이 일시정지될 것을 요청하기 위한 것일 수 있다. 다른 예에서, 만약 제안 이벤트가 사용자의 스코어(또는 다른 게임 목표)가 (예컨대, 후행 또는 선두) 다른 플레이어들의 스코어들 또는 목표들로부터 임계량만큼 상이한 것이면, 제안된 커맨드들은, 다른 플레이어들에게 힌트들을 전송하는 것, 또는 다른 플레이어들에게 힌트들을 사용자에게 제공하도록 요청하는 것, 다른 플레이어들에게 게임에서 그들 자신들을 핸디캡하거나 또는 부스팅하도록 요청하는 것, 게임을 재시작하는 것 등을 포함할 수 있다.
[00282] 일부 예시적 구현들에서, 임베디드 애플리케이션은 공유 오브젝트, 예컨대, 게임에서의 게임 오브젝트, 공유 콘텐츠 문서, 이를테면, 아이템들의 리스트 또는 다른 문서 등을 제공하고 있다. 제안된 커맨드들은, 공유 오브젝트를 변화시키거나 또는 공유 오브젝트에 영향을 미치기 위한 커맨드들, 예컨대, 공유 오브젝트를 편집, 제거 등을 하고 공유 오브젝트의 특징들(예컨대, 타입, 컬러, 사이즈 또는 디멘션들 등) 중 하나 이상을 변화시키기 위한 커맨드들일 수 있다. 예컨대, 만약 제안 이벤트가 임베디드 애플리케이션에서 공유 리스트의 개시라면, 제안된 커맨드는 리스트 상에 아이템을 추가하거나, 삭제하거나, 또는 변화시키기 위한 것일 수 있다. 다른 예에서, 만약 제안 이벤트가 상이한 멤버 사용자에 의한 공유 리스트로의 아이템의 추가라면, 제안된 커맨드는, 임베디드 인터페이스에서 추가된 아이템을 강조표시하거나 그렇지 않으면 그래픽으로 표시하기 위한 것일 수 있다. 일부 구현들에서, 강조표시 커맨드는, 임베디드 인터페이스에 또는 채팅 인터페이스에 출력될 수 있는 제안된 텍스트, 예컨대, "do we need this item?" 또는 "I suggest removing this"(예컨대, 후술되는 바와 같이 제안된 메시지)를 수반할 수 있다. 다른 예에서, 만약 제안 이벤트가 아이템의 제거라면, 제안된 커맨드는, 임베디드 인터페이스(또는 채팅 인터페이스)에 텍스트, 예컨대, "why did you remove that?"를 출력하는 것을 포함할 수 있다. 다른 예에서, 사용자에 의해 특정 아이템을 강조표시하는 제안 이벤트에 대한 응답으로, 제안된 커맨드들은 리스트 내의 제안된 아이템을 하나, 둘 또는 그 초과의 장소들로, 위로 또는 아래로, 초반 또는 끝 등으로 이동하는 것을 포함할 수 있다.
[00283] 많은 타입들의 임베디드 애플리케이션들에 적용될 수 있는 추가적인 예들에서, 만약 제안 이벤트가 멤버 사용자가 임베디드 세션에 합류하는 것이라면, 임베디드 애플리케이션에서 새로운 멤버 사용자에게 사용자 상태(예컨대, 사용자 역할)가 할당된 경우 -임베디드 애플리케이션은 제어의 이러한 할당을 허용함-, 제안된 커맨드는, 임베디드 애플리케이션의 특정된 기능들에 대한 제어가 새로운 멤버 사용자에게 할당되도록 명령할 수 있다. 예컨대, 제안된 커맨드는, 새로운 사용자 상황이 임베디드 애플리케이션에서 플레이된 미디어 아이템의 플레이백 포지션을 변화시키는 것, 공유 리스트 상의 아이템들을 변화시키는 것 등을 허용하기 위한 것일 수 있다. 일부 구현들에서, 예컨대, 만약 채팅 대화에서 지정된 사용자로부터의 메시지들에서 메시징 애플리케이션(또는 다른 프로그램 또는 디바이스)에 의해 폭력적인 또는 부적절한 언어가 검출되었다면, 제안된 커맨드는 (만약 커맨딩하는 사용자가 그렇게 할 수 있다면) 지정된 사용자로부터 이러한 제어 능력들을 제거하기 위한 것일 수 있다.
[00284] 또한 또는 대안적으로, 만약 사용자 동의가 획득되었다면, 제안된 커맨드들은, 동일한 또는 유사한 타입들의 임베디드 애플리케이션들에서 그리고/또는 동일한 또는 유사한 타입들의 출력 데이터(예컨대, 미디어 아이템들, 게임들 등)에 대해 사용자에 의해 수행된 이전 액션들 및/또는 메시지들의 이력에 기반할 수 있다. 예컨대, 만약 사용자가 비디오에서 특정 장면 또는 장면 타입의 플레이백을 이전에 되감았거나 또는 스킵했다면, 현재 플레이 미디어 아이템의 플레이백 포지션이 동일한 방식으로 되감기거나 또는 이동되게 하는 제안된 커맨드가 생성될 수 있다.
[00285] 또한 또는 대안적으로, 제안된 커맨드들은, 메시징 애플리케이션의 채팅 인터페이스에 디스플레이되는 바와 같이, (제1) 채팅 대화에 입력되는 멤버 사용자에 기반할 수 있다. 다양한 구현들에서, 이 사용자 입력은 검출된 제안 이벤트의 일부인 것으로 고려될 수 있거나, 또는 검출된 제안 이벤트의 외부인 것으로(예컨대, 검출된 제안 이벤트에 보완적인 것으로) 고려될 수 있다. 예컨대, 제안된 커맨드는, 이러한 활동을 언급하는 채팅 메시지들(예컨대, "let's watch Funny Movie 2", "let's play Chess" 또는 "we need a shopping list" 등)에 기반하여 미디어 플레이어, 게임, 콘텐츠 문서, 또는 다른 기능들을 구현하는 임베디드 애플리케이션을 수반하는 임베디드 세션을 개시하기 위해 생성될 수 있다. 다른 예에서, 제안된 커맨드는, 사용자 상황 또는 역할을 임베디드 세션의 특정 멤버 사용자에게, 그 멤버 사용자가 원하는 사용자 역할을 표시하는 메시지(예컨대, 플레이어 역할을 표시하기 위해 "I'll play", 또는 관찰자 역할을 표시하기 위해 "I only want to watch")를 채팅 대화에서 전송했다면, 할당하기 위해 생성될 수 있다. 다른 예에서, 만약 하나 이상의 멤버 사용자들이 메시지들, 이를테면, "let's skip this scene" 또는 "let's watch the car chase"를 채팅 대화에서 입력했다면, 현재 장면을 지나서 또는 특정한 나중의 장면으로, 플레이된 미디어 아이템에 대한 플레이백 포지션을 이동하는 제안된 커맨드가 생성될 수 있다.
[00286] 일부 구현들에서, 사용자 데이터는, 만약 이러한 사용자 데이터를 사용하기 위한 동의가 이러한 사용자 데이터와 관련된 또는 연관된 사용자(들)로부터 획득되었다면, 제안된 커맨드들 및/또는 제안된 메시지들을 결정하는 데 사용될 수 있다. 예컨대, 멤버 사용자들 또는 채팅 사용자들(또는 그들의 디바이스들)의 현재 지리적 로케이션들은, 메시징 애플리케이션에 의해 획득될 수 있고, 그리고/또는 제안된 응답 아이템들을 결정하는 데 사용하기 위해 임베디드 애플리케이션에 제공될 수 있다. 예컨대, 제안된 커맨드들은, 예컨대 임베디드 여행 일정 애플리케이션에게 현재 사용자 로케이션에 기반한 일정을 제공하도록 명령하기 위해, (사용자 동의와 함께) 사용자들의 현재 지리적 로케이션들을 참조할 수 있다. 만약 사용자 동의가 획득되었다면, 다른 타입들의 사용자 데이터가 제안된 아이템들의 생성을 유발할 수 있다. 추가적인 예들에서, 사용자 데이터, 이를테면, 디바이스 상에 설치된 애플리케이션들(예컨대, 메시징 애플리케이션 외부의 애플리케이션들)의 리스트가, 제안된 아이템들을 생성하는 데 사용될 수 있다. 예컨대, 채팅 대화에서 다른 채팅 사용자들에 의한 사용을 위해 하나 이상의 애플리케이션들을 추천하는 제안된 메시지들이 생성될 수 있다.
[00287] 추가적인 예들에서, 사용자 데이터, 이를테면, 사용자 디바이스에 의해 수신된 SMS 메시지들 및 전화 통화들이, 메시지들을 포워딩하거나 또는 주석을 달기 위해 제안된 커맨드들을 생성하는 데 사용될 수 있다. 예컨대, 메시징 애플리케이션은 SMS 메시지가 수신되었음을 인터셉트하며, 포워딩 또는 주석 능력들, 예컨대, 채팅 대화와 그 SMS 메시지를 공유하기 위한 제안된 커맨드 및/또는 제안된 메시지, SMS 이미지를 다른 메시지(예컨대, 채팅 메시지, 이메일 메시지 등)에 주석을 달기 위한 제안된 커맨드를 생성할 수 있고 그것을 다른 사용자 등에 전송할 수 있다. 다른 예에서, 메시징 애플리케이션은, 사용자가 채팅 대화에서 메시지들을 능동적으로 입력하고 있는 동안 전화 통화가 수신되고 있음을 검출할 수 있고, 임베디드 애플리케이션은 채팅 대화에 대한 제안된 메시지들(예컨대, "I'm answering a phone call, will be back")을 생성할 수 있다. 피트니스 운동에 대한 채팅 대화에서 다른 채팅 사용자들에 도전을 주는 제안된 메시지들을 제공하기 위해 사용자 데이터, 이를테면, 피트니스 추적기 정보가 사용될 수 있다. 미디어 아이템의 플레이백 전에 또는 그 동안 미디어 플레이백 볼륨/온-오프 상태를 자동적으로 조정하는 제안된 커맨드들을 제공하기 위해 사용자 데이터, 이를테면, 사용자 디바이스 상의 현재 시스템 오디오 볼륨/뮤트 상태가 사용될 수 있다. 예컨대 브라우저 임베디드 애플리케이션에서 사용자에 대한 쇼핑 제안들을 디스플레이하기 위해 제안된 커맨드들을 생성하는 데 사용자 데이터, 이를테면, 브라우징 이력이 사용될 수 있다. 사용자 데이터, 이를테면, 특정 시스템들 또는 네트워크 사이트들에 대한 사용자 계정 정보(예컨대, 로그인/패스워드)가, 임베디드 애플리케이션에서 그러한 시스템들에 액세스하는 제안된 커맨드들을 제공하는 데 사용될 수 있다. 사용자 데이터, 이를테면, 연락처 리스트에 최근에 추가된(예컨대, 현재 시간으로부터 임계 시간량 내에 추가된) 사용자들이, 그러한 사용자들 중 하나 이상을 채팅 대화에 추가하기 위한 제안된 커맨드 또는 사용자가 참여하고 있는 특정 임베디드 세션에 합류하도록 그러한 사용자들 중 하나 이상을 초대하기 위한 제안된 커맨드를 제공하는 데 사용될 수 있다.
[00288] 일부 구현들에서, 임베디드 애플리케이션이 제1 사용자 디바이스 상에서 또는 네트워크를 통해 제1 사용자 디바이스와 통신하는 상이한 디바이스 상에서 실행하는 외부 애플리케이션을 제어하게 하기 위해, 제안된 커맨드들은 임베디드 애플리케이션에 대한 것일 수 있다. 이러한 제어의 일부 예들이 본원에서 설명된다.
[00289] 일부 제안 이벤트 타입들은 블록들(714-718)로부터의 제안된 커맨드들 및 블록들(722-724)로부터의 제안된 메시지들 둘 다의 생성을 유발할 수 있다. 일부 구현들에서, 제안된 커맨드들을 제공하는 제안된 커맨드 아이템들은 채팅 인터페이스에 출력될 제안된 메시지들을 제공하는 제안된 메시지 아이템들과 시각적으로 구별될 수 있다. 예컨대, 사용자가 상이한 타입들의 제안된 응답 아이템들을 구별하는 것을 보조하기 위해 상이한 컬러들 또는 강조표시가 이러한 타입들의 제안된 응답 아이템들에 사용될 수 있다.
[00290] 일부 구현들에서, 복수의 제안된 커맨드들이 생성될 수 있으며, 하나 이상의 미리결정된 기준들에 기반하여 랭킹될 수 있다. 예컨대, 제안된 커맨드에 대한 랭킹 스코어는 예컨대, 이전 제안 이벤트들에 대한 응답으로 제공된 이전 커맨드들의 합성 또는 실제 데이터에 기반한 머신 학습 모델 및 그것의 트레이닝에 의해 표시된 바와 같이, 검출된 제안 이벤트에 대한 응답으로, 제안된 커맨드가 얼마나 선택될 가능성이 있는지에 기반할 수 있다. 일부 구현들에서, 제안된 응답들에는 제안된 응답이 사용자에 의해 얼마나 선택될 가능성이 있는지를 표시하는 컨피던스 레이팅들 또는 랭킹들이 제공될 수 있다. 예컨대, 이러한 컨피던스 레이팅들은, 동일한 또는 유사한 제안 이벤트들에 제공된 제안된 응답들의 사용자(또는 다수의 사용자들)에 의한 이전 선택들에, 만약 이러한 사용자들로부터의 동의가 획득되었다면 기반할 수 있다. 머신 학습 모델들이 사용되는 일부 구현들에서, 제안된 응답들은 모델의 트레이닝에 기반하여 결정된 바와 같이 어느 응답들이 가장 선택될 가능성이 있는지를 표시하는 랭킹들을 가질 수 있다. 특정 수의 최상위 랭킹된 제안된 커맨드들이 사용자 디바이스 상의 출력을 위해 선택될 수 있다. 일부 구현들에서, 제안된 응답들은 그들의 랭킹 또는 컨피던스 레이팅의 순서로 디스플레이될 수 있다. 일 예에서, 높은 컨피던스 레이팅(예컨대, 임계 레이팅을 초과하거나 또는 임계 개수의 최상위 레이팅들 내에 있음)을 갖는 제안된 응답은 연관된 임베디드 애플리케이션에서 액션을 트리거링하는 커맨드 또는 메시지로서 사용자 입력에 의해 선택될 수 있다. 일부 구현들에서, 높은-컨피던스의 제안된 응답이 생성된 후에 그리고 그것이 사용자 입력에 의해 선택되기 전에, 연관된 임베디드 애플리케이션은 사용자 디바이스에 사전-로딩(예컨대, 백그라운드에 다운로드되고 로컬 저장소에 저장)되고 그것의 코드는 개시될 수 있다. 이는, 높은-컨피던스의 제안된 응답이 사용자 입력에 의해 선택된 후에 사용자 디바이스 상의 임베디드 애플리케이션으로부터 출력의 순간적인 디스플레이를 허용한다. 임베디드 애플리케이션들의 이러한 사전-로딩은 더 낮은-컨피던스(예컨대, 임계치 미만임)의 제안된 응답들의 경우 생략될 수 있는데, 그 이유는 그들이 선택될 가능성이 적기 때문이다.
[00291] 상술된 바와 같이 다수의 임베디드 애플리케이션들이 제1 사용자 디바이스에 대해 동시적으로 실행할 수 있는 일부 구현들에서, 하나 이상의 제안된 커맨드들은 다수의 또는 상이한 실행하는 임베디드 애플리케이션들에 제공되는 커맨드들일 수 있다.
[00292] 일부 구현들에서, 제안된 커맨드들 중 하나 이상은 메시징 애플리케이션에 대한 커맨드들일 수 있다. 예컨대, 제안된 커맨드는 하나 이상의 특정 채팅 사용자들을 임베디드 세션에 추가하기 위한, 메시징 애플리케이션에 대한 커맨드를 포함할 수 있으며, 여기서, 특정 채팅 사용자들은 제안된 커맨드에서 특정된다. 예컨대, 이러한 제안된 커맨드는, 멤버 세션의 제1 사용자 및/또는 다른 멤버 사용자에 의해 입력되는 하나 이상의 채팅 메시지들(예컨대, "let's ask Kenny if he wants to join" 등)에 기반하여, 또는 멤버 사용자들이 아닌 채팅 사용자들에 의해 입력된 하나 이상의 채팅 메시지들(예컨대, "maybe we should join that movie")에 의해, 메시징 애플리케이션(또는 임베디드 애플리케이션)에 의해 발생된 것으로 검출되는 제안 이벤트에 기반하여 생성될 수 있다. 제안된 커맨드는 멤버 사용자에게, 그리고/또는 멤버 사용자가 아닌 채팅 사용자에게 제공될 수 있다. 일부 구현들에서, 이러한 제안 이벤트를 결정하기 위해, 특정 채팅 사용자 이름들, 멤버 사용자 이름들, 콘텐츠 데이터의 이름들, 임베디드 세션에 관련된 일반적인 단어들(예컨대, "영화", "게임" 등) 및 다른 단어들이, 머신 학습 기법들을 통한 채팅 메시지들의 파싱 및 분석 그리고/또는 미리정의된 키워드들 및 키 구절들과 함께 채팅 메시지들에서 검출될 수 있다. 일부 구현들에서, 제안 이벤트는 또한 또는 대안적으로, 임베디드 세션(제1 임베디드 세션)에 제공되는 콘텐츠 아이템(예컨대, 플레이된 미디어 아이템, 게임, 콘텐츠 문서 등)이 제1 임베디드 세션에서의 콘텐츠 데이터의 디스플레이와 동시적으로 제2 임베디드 세션에서 다른 채팅 사용자들에 제공되는 콘텐츠 아이템과 동일한 메시징 애플리케이션에 의한 검출일 수 있다. 이는, 메시징 애플리케이션이 제2 임베디드 세션의 멤버 사용자들을 제1 임베디드 세션에 추가하기 위해 제안된 커맨드를 생성하게 할 수 있다. 후술되는 바와 유사하게, 임베디드 세션 외부의 채팅 사용자들에 의해 콘텐츠 아이템과 연관된 사용자 코멘트들이 또한, 제안 이벤트에 대한 기초일 수 있다.
[00293] 일부 구현들에서, 메시징 애플리케이션에 대한 제안된 커맨드는, 블록(708)의 채팅 대화(예컨대, 제1 채팅 대화)에 사용자를 추가하거나, 또는 블록(708)의 임베디드 세션(예컨대, 제1 임베디드 세션) 및 제1 채팅 대화에 사용자를 추가하기 위한 커맨드를 포함할 수 있다. 예컨대, 제안된 커맨드는 제1 채팅 대화에 현재 참여하지 않는 외부 사용자가 추가되도록 명령할 수 있다. 그러한 커맨드는, 실행될 때, 외부 사용자의 디바이스들이 채팅 대화에 합류하게 한다. 일부 예들에서, 외부 사용자는, 제1 메시징 애플리케이션에 의해 제공되거나, 또는 제1 메시징 애플리케이션과 통신하는 상이한 메시징 애플리케이션에 의해 제공되는 상이한 채팅 대화에 참여하고 있을 수 있다. 일부 경우들에서, 제1 임베디드 세션의 하나 이상의 멤버 사용자들은 제1 임베디드 세션 및 제1 채팅 대화에 참여하고 있는 동시에, 상이한 채팅 대화에 참여하고 있을 수 있으며, 그러한 멤버 사용자들에게는 상이한 채팅 대화로부터 하나 이상의 외부 사용자들을 추가하기 위한 (예컨대, 블록들(716 및 718)에서의) 제안된 커맨드가 제공될 수 있다. 예컨대, 그러한 제안된 커맨드는, (상술된 바와 유사하게) 제1 채팅 대화의 하나 이상의 채팅 사용자들에 의해 그리고/또는 상이한 채팅 대화의 하나 이상의 외부 사용자들에 의해 입력되는 하나 이상의 채팅 메시지들에 기반하여, 메시징 애플리케이션(또는 임베디드 애플리케이션)에 의해 발생된 것으로 검출된 제안 이벤트에 기반하여 생성될 수 있다.
[00294] 일부 구현들에서, 제안 이벤트는 또한 또는 대안적으로, 임베디드 세션에서 제공되는 콘텐츠 아이템(예컨대, 플레이된 미디어 아이템, 게임, 콘텐츠 문서 등)이 외부 사용자들에 동시적으로 제공되는 외부 콘텐츠 아이템과 동일하다는 메시징 애플리케이션에 의한 검출일 수 있다. 이는 메시징 애플리케이션이 제1 채팅 대화에 외부 사용자들을 추가하도록 제안하게 한다. 일부 구현들에서, 제안된 커맨드는 제1 임베디드 세션에 외부 사용자들을 추가하기 위한 것일 수 있다. 일부 예들에서, 제안 이벤트는 만약 임베디드 애플리케이션에 의해 출력되는 콘텐츠 아이템의 현재 플레이백 포지션이 외부 사용자들에 출력되는 외부 콘텐츠 아이템의 현재 플레이백 포지션의 (시간, 데이터 등의) 임계량 내에 있다면 트리거링될 수 있다. 일부 구현들에서, 제안 이벤트는 또한 또는 대안적으로, 외부 사용자들에 출력되는 외부 콘텐츠 아이템과 연관된 하나 이상의 사용자 코멘트들이 하나 이상의 외부 사용자들에 의해 입력되었고, 외부 콘텐츠 아이템이 임베디드 애플리케이션에 의해 출력되는 콘텐츠 아이템과 동일하다는 메시징 애플리케이션에 의한 검출일 수 있다. 일부 예들에서, 제안 이벤트는 외부 사용자들에 의한 특정 타입의 사용자 코멘트, 예컨대 콘텐츠 데이터에 대한 사용자들에 의한 승인 레이팅들, 제1 임베디드 세션의 멤버 사용자들 중 하나 이상에 대한 참조 등의 검출일 수 있다. 그러한 사용자 코멘트들은 (멤버 사용자들로서) 제1 임베디드 세션 및/또는 (채팅 사용자들로서) 제1 채팅 대화에 그러한 외부 사용자들을 추가하기 위한 제안된 커맨드를 메시징 애플리케이션이 생성하게 할 수 있다.
[00295] 일부 구현들에서, 만약 관련 사용자들로부터의 사용자 동의가 획득되었다면, 상술된 바와 같이 임베디드 세션 또는 채팅 대화에 하나 이상의 사용자들(예컨대, 채팅 사용자들 또는 외부 사용자들)을 추가하기 위한, 메시징 애플리케이션(또는 다른 애플리케이션)에 대한 제안된 커맨드의 생성을 유발하는 제안 이벤트를 결정하기 위해 사용자 데이터가 사용될 수 있다. 예컨대, 사용자 데이터(예컨대, 액세스가능한 데이터베이스 데이터 또는 연락처 리스트 데이터)는 하나 이상의 멤버 사용자들(또는 채팅 사용자들)과 하나 이상의 특정한 소셜 관계들을 갖는 특정 사용자들을 표시할 수 있으며, 그러한 특정 사용자들은 임베디드 세션 또는 채팅 대화에 이들 사용자들을 추가하기 위해 제안된 커맨드에 포함되도록 선택될 수 있다. 예컨대, 그러한 특정한 소셜 관계들은 멤버/채팅 사용자들의 연락처 리스트들에 있는 사용자들, 멤버/채팅 사용자들에 의해 생성된 사용자 그룹들(예컨대, 소셜 네트워킹 사용자 그룹들)에 있는 사용자들, 멤버/채팅 사용자들로부터 특정한 선별도 내에 있는 사용자들 등을 포함할 수 있다.
[00296] 일부 구현들에서, 제안된 커맨드들 중 하나 이상은 메시징 애플리케이션 외부의 하나 이상의 업무들을 수행하기 위한 제1 사용자 디바이스에 대한 커맨드들일 수 있다. 예컨대, 업무들은, 제1 사용자 디바이스 상에서 메시징 애플리케이션 외부의 애플리케이션을 열고 실행하는 것, 및/또는 제1 사용자 디바이스와 통신하는 원격 디바이스 상에서 실행하는 외부 애플리케이션을 제어하는 것을 포함할 수 있다. 예컨대, 그러한 애플리케이션은 웹 브라우저 애플리케이션, 통신 애플리케이션, 캘린더 애플리케이션, 워드 프로세싱 애플리케이션, 특정한 인터넷 서비스에 액세스하기 위한 특정 애플리케이션 등을 포함할 수 있다. 만약 제1 사용자 디바이스 상에서 외부 애플리케이션이 실행하고 있다면, 이는 제1 사용자 디바이스 상에 디스플레이 출력을 제공할 수 있다. 디스플레이 출력은, 예컨대, 제1 사용자 디바이스와 통신하는 서버 디바이스로부터 수신된 정보를 포함할 수 있다. 일부 예들에서, 제안된 커맨드는, 웹 브라우저 애플리케이션을 열고, 제1 사용자 디바이스 상에 웹 브라우저 애플리케이션의 사용자 인터페이스를 디스플레이하고, 웹 브라우저 애플리케이션으로 하여금 특정 링크에서의 웹 페이지에 액세스하도록 명령하고, 웹 브라우저의 사용자 인터페이스에 특정 링크에서의 웹 페이지의 콘텐츠들을 디스플레이하기 위한 커맨드를 포함할 수 있다. 적절한 통신 프로토콜들(예컨대, 웹소켓들)의 사용이 포함될 수 있다. 특정 링크는 제안 이벤트에 기반하여 결정된 링크일 수 있다. 다른 예에서, 열린 애플리케이션은 쇼핑 애플리케이션일 수 있으며, 그 쇼핑 애플리케이션은 구매하기 위한 아이템 또는 서비스를 표시하는 서버로부터 수신된 데이터를 출력하고, 아이템 또는 서비스를 구매하기 위한 사용자 입력을 수신하는 하나 이상의 제어부들을 제공하고, 여기서, 아이템 또는 서비스는 제안 이벤트에 관련된다.
[00297] 일부 예들에서, 커맨드는 제1 사용자 디바이스 상의 임베디드 인터페이스에 디스플레이되는 콘텐츠 아이템에 포함된 하나 이상의 콘텐츠 피처들에 관련된 정보를 디스플레이 하기 위해 제1 사용자 디바이스 상에서 열리거나 또는 개시하도록 애플리케이션에 명령할 수 있다. 예컨대, 애플리케이션을 열거나 또는 실행하기 위한 제안된 커맨드는, 상술된 바와 유사하게, 제1 채팅 대화의 하나 이상의 채팅 사용자들에 의해 입력되는 하나 이상의 채팅 메시지들에 기반하여, 그리고/또는 임베디드 세션의 출력 데이터에 기반하여, 메시징 애플리케이션(또는 임베디드 애플리케이션)에 의해 발생된 것으로 검출된 제안 이벤트에 기반하여 생성될 수 있다. 일부 예들에서, 만약 사용자 동의가 획득되었다면, 시각적 피처들(이미지 인식 기법들을 사용한, 예컨대, 얼굴들, 동물들, 풍경 피처들, 오브젝트들 등), 오디오 피처들(오디오 인식 기법들을 사용한, 스피치, 사운드들의 타입들 등), 또는 토픽들(예컨대, 프리젠테이션의 내용, 비디오에서의 장면 또는 이미지의 지리적 로케이션 등)을 포함하는 콘텐츠 피처들이 임베디드 애플리케이션의 출력 데이터에서 시스템에 의해 검출될 수 있으며, 네트워크를 통해 액세스가능한 사이트들 및 데이터베이스들 상에서 유사한 콘텐츠 피처들이 서치될 수 있다. 예컨대, 만약 멤버 사용자로부터의 채팅 메시지가 "I like that coat she's wearing"을 포함하고, 임베디드 애플리케이션이 코트를 입은 사람을 묘사하는 비디오 또는 이미지의 출력 데이터를 디스플레이하고 있다면, 임베디드 애플리케이션 출력에 디스플레이되는 시각적 피처에 관련된 채팅 메시지의 이 조합은 제안 이벤트일 수 있다. 이는 메시징 애플리케이션 또는 임베디드 애플리케이션이, 예컨대, 하나 이상의 이미지 인식 기법들로부터 결정되는 이미지 서치 또는 텍스트 라벨들을 사용함으로써, 네트워크를 통해 액세스가능한 웹 페이지들 또는 쇼핑 사이트들에서 유사한 코트 아이템들을 서치하게 한다. 매칭하는 아이템들을 갖는 하나 이상의 네트워크 사이트들이 하나 이상의 제안된 커맨드들에 포함될 수 있다. 예컨대, 제안된 커맨드는 하나 이상의 멤버 사용자들에 대해 생성될 수 있으며, 여기서, 제안된 커맨드는(만약 선택된 경우) 매칭된 코트 아이템들 중 하나를 디스플레이하는 브라우저 애플리케이션을 열도록 제1 사용자 디바이스에 명령한다. 일부 예들에서, 제안된 커맨드는 그 제안된 커맨드가 커맨드하는 액션(들)의 텍스트 설명, 예컨대 "Display a website showing the coat"로서 디스플레이될 수 있다.
[00298] 다른 예들에서, 제안 이벤트는 임베디드 애플리케이션이 강의를 제공하는 사람을 디스플레이할 때 검출될 수 있으며, 여기서, 사람의 아이덴티티가 (예컨대, 출력 데이터의 메타데이터에서, 화자에 대한 자막을 검출함으로써, 등에 의해) 결정될 수 있고, 그리고 네트워크를 통해 액세스가능한 콘텐츠 아이템들에서 화자에 관련된 아이템들이 서치 및 발견된다. 일 예에서, 화자에 의해 기록된 책이 웹사이트 상에서 발견된다. 제안된 커맨드는 하나 이상의 멤버 사용자들에 대해 생성될 수 있으며, 여기서, 제안된 커맨드(만약 선택된 경우)는 사용자에 의해 책을 구매하기 위한 선택가능한 옵션(예컨대, 디스플레이되는 엘리먼트)과 함께 책의 설명을 디스플레이하는 쇼핑 애플리케이션을 열도록 제1 사용자 디바이스에 명령한다.
[00299] 추가적인 예들에서, 제안된 커맨드들은 하나 이상의 이미지들, 비디오들, 오디오 데이터 세그먼트들, 또는 다른 타입들의 콘텐츠 데이터에 기반하여 결정될 수 있다. 예컨대, 다수의 이미지들(예컨대, 미디어 아이템들, 구매하기 위한 아이템들 등의 표현들)이 임베디드 애플리케이션에 디스플레이될 수 있으며, 제안된 커맨드는 이미지들 중 하나 이상을 선택하기 위한 것일 수 있고, 여기서, 제안된 커맨드는 사용자에 의해 선택된 이전의 이미지들에 기반하여 결정된다. 다른 예에서, 제안된 커맨드는 다수의 컬러들의 의류 아이템의 리스트로부터 그 의류 아이템의 특정 컬러를 선택하기 위한 것일 수 있으며, 여기서, 제안은 이전 사용자 선택들(예컨대, 사용자는 이전에 다른 컬러들보다 특정 컬러를 더 빈번하게 선택하였던 경우)에 기반한다.
[00300] 추가적인 예들에서, 제안 이벤트는 사용자가 채팅 대화에 합류하는 것일 수 있으며, 이는 "discovery embedded application"을 론칭하기 위해 합류 사용자의 채팅 인터페이스에서 제안된 커맨드의 생성을 트리거링하며, 그 "discovery embedded application"은, 합류 사용자가 채팅 대화에 합류하기 전에 채팅 사용자들에 의해 임베디드 세션에서 출력된 콘텐츠 및/또는 행해진 액션들의 이력을 채팅 인터페이스 또는 임베디드 인터페이스에 (채팅 사용자들의 동의 하에) 저장 및 디스플레이한다. 예컨대, 이력은 (어떤 임베디드 세션들이 현재 진행중인지, 진행중인 공유 리스트들 등을 포함하는) 채팅 대화에서 이전에 사용된 다른 임베디드 애플리케이션들의 식별들을 포함할 수 있다. 일부 구현들에서, 임베디드 애플리케이션은 이들 다른 임베디드 애플리케이션들 각각에 대한 론치/합류 제어부를 디스플레이할 수 있으며, 그 론치/합류 제어부는 연관된 다른 임베디드 애플리케이션을 개시하여, 합류 사용자가 이전의 임베디드 세션을 재-개시하는 것, 만약 이전의 임베디드 세션이 진행중이라면 이전의 임베디드 세션에 합류하는 것/이전의 임베디드 세션을 계속하는 것 등을 허용한다. 이는 새로운 사용자가 채팅 대화에 합류하기 전에 채팅 대화에서의 사용자들의 그룹이 행한 활동들을 새로운 사용자가 발견하고 따라 잡게 허용할 수 있다.
[00301] 추가적인 예들에서, 제안 이벤트는, (예컨대, 제1 사용자 디바이스 또는 원격 디바이스 상에서 실행하는) 외부 애플리케이션이 채팅 대화가 활성인 동안 메시징 애플리케이션에 데이터를 전송하는 것일 수 있으며(예컨대, 데이터는 통신 애플리케이션, 캘린더 애플리케이션 등에서의 이벤트의 발생의 표시일 수 있음), 데이터에 기반하여 제안된 커맨드 또는 제안된 메시지(예컨대, 사용자에 의한 나중의 검토를 위해 저장소에 이벤트를 표시하는 데이터를 저장하기 위한 제안된 커맨드, 및/또는 채팅 대화에 출력되도록 선택될 수 있는 텍스트 형태로 이벤트를 설명하는 제안된 메시지)를 제공하는 제안된 아이템(아래 참조)이 채팅 인터페이스에 디스플레이될 수 있다. 제안 이벤트는 사용자가 채팅 대화에 대한 그룹 정보(예컨대, 채팅 인터페이스(월페이퍼)에 디스플레이되는 시각적 백그라운드, 채팅 대화 이름 또는 그룹 이름, 그룹 아이콘 등)를 변경하는 것일 수 있으며, 이는, 예컨대, 다른 채팅 멤버들과 공유되는 편집 인터페이스에서 이미지를 편집함으로써, 새로운 월페이퍼를 생성할 수 있는 제어부들을 채팅 사용자들에 제공하는 이미지 편집 임베디드 애플리케이션을 개시하기 위한 제안 커맨드를 트리거링할 수 있다.
[00302] 일부 구현들에서, 제안된 커맨드들 대신에 또는 제안된 커맨드들에 추가하여, 블록(714)에서, 추천들이 생성될 수 있다. 예컨대, 그러한 추천은 사용자에 대해 제안되는 특정 액션을 설명할 수 있지만, 만약 사용자에 의해 추천이 선택된다면 그 액션이 수행되게 하기 위한 커맨드를 개시하지 않는다. 따라서, 만약 사용자가 추천을 따르기로 선정한다면, 사용자는 추천된 액션을 수동으로 수행할 것이다.
[00303] 일부 구현들에서, 도 7의 예에서와 같이, 제안된 커맨드들은 임베디드 애플리케이션에 의해 결정될 수 있고, 예컨대 임베디드 인터페이스에 임베디드 애플리케이션에 의해 디스플레이될 수 있고, 그리고/또는 채팅 인터페이스에 디스플레이되도록 메시징 애플리케이션에 제공될 수 있다. 일부 구현들에서, 시스템의 다른 컴포넌트들이 제안된 커맨드들을 결정할 수 있다. 예컨대, 메시징 애플리케이션은, 예컨대, 채팅 인터페이스에서의 이벤트들에 기반하여, 그리고/또는 임베디드 애플리케이션으로부터의 이벤트 정보에 기반하여, 제안된 커맨드들을 결정할 수 있다. 일부 구현들에서, 서버(예컨대, 메시징 서버, 제안 서버 등)에 이벤트 정보가 제공될 수 있고, 그 서버는 제안된 커맨드들을 결정할 수 있다. 예컨대, 메시징 애플리케이션은 제안 이벤트를 표시하는 서술 정보를 서버에 전송할 수 있으며, 서버는 메시징 애플리케이션에 다시 제공되는 하나 이상의 제안된 커맨드들을 결정할 수 있다.
[00304] 일부 구현들에서, 예컨대, 임베디드 애플리케이션이 제안 피처들을 포함하지 않을 때, 메시징 애플리케이션은 제안된 응답 아이템들을 제공할 수 있다. 예컨대, 만약 임베디드 애플리케이션이 이미지-뷰어 애플리케이션이라면, 메시징 애플리케이션은, 이미지를 향상시키는 것, 이미지를 다운로드하는 것, 이미지에 대해 이미지 서치를 실행하는 것 등을 위해, 제안된 커맨드를 제공할 수 있다. 일부 구현들에서, 제안된 커맨드들은 임베디드 애플리케이션과 채팅 애플리케이션 둘 다에 의해 제공될 수 있다. 방법은 블록(716)으로 계속된다.
[00305] 블록(716)에서, 블록(714)에서 결정된 하나 이상의 제안된 커맨드들은 (만약 임베디드 애플리케이션이 제안된 커맨드들을 생성하였다면) 임베디드 애플리케이션으로부터 제1 사용자 디바이스 상의 메시징 애플리케이션에 제공된다. 일부 구현들에서, 임베디드 애플리케이션은, 제안된 커맨드들을 메시징 애플리케이션에 전송하는 대신에 또는 전송하는 것에 추가하여, 데이터를 메시징 애플리케이션에 전송할 수 있으며, 그 데이터로부터 메시징 애플리케이션은 하나 이상의 제안된 커맨드들을 결정할 수 있다. 예컨대, 임베디드 애플리케이션은 제안 이벤트를 설명하는 데이터(예컨대, 임베디드 애플리케이션에서의 사용자 액션의 표시, 게임 스코어, 게임 목표의 달성 성공 또는 실패의 표시 등)를 전송할 수 있고, 그리고/또는 제안 이벤트에 대한 콘텍스트를 제공하는 데이터(예컨대, 비디오 데이터, 오디오 데이터, 게임의 상태들, 공유 리스트의 일부들 등)를 전송할 수 있다. 일부 구현들에서, 메시징 애플리케이션은 이 데이터로부터 제안된 커맨드들을 결정할 수 있고, 그리고/또는 데이터를 제안 엔진, 예컨대 제안 서버(156)에 전송할 수 있으며, 그 제안 엔진은 데이터에 기반하여 제안된 커맨드들을 결정하고, 제안된 커맨드들을 메시징 애플리케이션에 다시 전송한다. 방법은 블록(718)으로 계속된다.
[00306] 블록(718)에서, 메시징 애플리케이션은, 제1 디바이스가 제안된 커맨드들을 디스플레이하도록, 선택을 위해, 채팅 인터페이스에서 제안된 커맨드들을 출력한다(그리고/또는 임베디드 애플리케이션이 임베디드 인터페이스에서 제안된 커맨드들을 출력함). 일부 구현들에서, 제안된 커맨드들은 제안된 커맨드가 명령하는 액션들의 설명(예컨대, "Skip this scene", "Move pawn 3 forward", "add User4 to this movie session", "Display option to purchase a coat" 등)으로서 각각 디스플레이될 수 있다. 예컨대, 제안된 커맨드들은, 봇으로부터 선택가능한 메시지들 등으로서, 채팅 인터페이스에 리스트로 디스플레이될 수 있다. 개별 제안된 커맨드들은, 예컨대, 터치스크린 입력 또는 다른 사용자 입력을 통해, 사용자에 의해 선택가능할 수 있다. 일부 구현들에서, 제안된 커맨드들은 채팅 인터페이스에 인터페이스 엘리먼트들, 예컨대 버튼들, 드롭-다운 메뉴 등으로서 디스플레이될 수 있다. 일부 구현들은, 채팅 인터페이스에 추가적인 채팅 메시지들이 디스플레이될 때 커맨드들이 디스플레이 스크린을 스크롤 오프시키기 않도록, 제안된 커맨드들을 채팅 인터페이스의 지속적 영역에 디스플레이할 수 있다. 일부 구현들에서, 제안된 커맨드들은 채팅 대화의 다른 채팅 사용자들 및 임베디드 세션의 멤버 사용자들에 디스플레이되지 않으며, 예컨대, 커맨드들은 제1 디바이스의 제1 사용자에 특정하다. 일부 구현들에서, 제안된 커맨드들 중 하나 이상은 채팅 대화에서 모든 채팅 디바이스들 또는 멤버 디바이스들, 또는 제안된 커맨드들에 관련된 것으로 발견되었을 수 있는 채팅 디바이스들 또는 멤버 디바이스들의 서브세트에 디스플레이될 수 있다. 일부 구현들에서, 만약 하나의 사용자가 제안된 커맨드를 선택한다면, 그 커맨드는 모든 채팅 디바이스들의 채팅 인터페이스들의 제안된 리스트로부터 제거된다.
[00307] 일부 구현들에서, 제안된 커맨드들은 메시징 애플리케이션에 의해 채팅 인터페이스로부터 자동적으로 제거되기 전에, 제한된 디스플레이 시간을 가질 수 있다. 예컨대, 미리정의된 시간 제한은, 시간 제한이 만료된 후에 제안된 커맨드들이 제거되도록 사용될 수 있다. 일부 구현들에서, 제안된 커맨드들은 충족되는 하나 이상의 조건들에 기반하여 제거될 수 있다. 예컨대, 만약 제안 이벤트 또는 애플리케이션 상태가, 특정 제안된 커맨드(들)가 결정 및 디스플레이되게 하였고, 그 제안 이벤트 또는 애플리케이션 상태가 더 이상 관련되거나, 계류중이거나, 또는 유효하지 않다면, 이들 특정 제안된 커맨드(들)는 채팅 인터페이스로부터 제거될 수 있다. 일부 예들에서, 만약 제안된 커맨드들이 다른 플레이어의 액션에 응답하여 게임에서 액션들을 제공하고, 사용자가 상이한 액션을 수행한다면, 이들 제안된 커맨드들은 더 이상 관련되지 않고, 제거될 수 있다. 다른 예에서, 만약 플레이되는 미디어 아이템에서의 이벤트가, 예컨대 미리정의된 시간량 후에, 더 이상 디스플레이되지 않는다면, 그 이벤트에 반응하는 제안된 커맨드들은 제거될 수 있다. 일부 예들에서, 임베디드 애플리케이션은 새로운 이벤트들 및 상태들, 및/또는 제안 이벤트들이 더 이상 유효하지 않거나 또는 계류중이지 않은 경우를 메시징 애플리케이션에 알릴 수 있고, 그에 따라, 메시징 애플리케이션은 디스플레이로부터 제안된 커맨드들을 제거할 때를 결정할 수 있다. 방법은 후술되는 바와 같이 블록(720)으로 계속된다.
[00308] 블록(712)에서 결정되는 바와 같이, 만약 제안된 이벤트 타입이 제안된 커맨드들을 제공하지 않는다면, 또는 블록(718) 후에, 방법은 블록(720)으로 계속되며, 그 블록(720)에서, 검출된 제안 이벤트가 채팅 대화에 대한 하나 이상의 제안된 메시지들과 연관된 이벤트인지(예컨대, 이벤트 타입을 갖는지) 여부가 결정된다. 예컨대, 일부 타입들의 제안 이벤트들은 채팅 대화에 출력될 제안된 메시지들을 포함하는 제안된 응답 아이템들을 제공할 수 있다. 제안된 메시지는, 예컨대, 선택하는 사용자가 채팅 대화 메시지로서 메시지를 입력한 것처럼 채팅 인터페이스에 디스플레이되는 텍스트 메시지일 수 있다. 일부 구현들에서, 제안된 메시지들을 제공할 수 있는 제안 이벤트 타입들은 상술된 바와 같은 제안된 커맨드들을 제공할 수 있는 타입들의 제안된 이벤트들 중 하나 이상을 포함할 수 있다. 일부 예들에서, 제안된 메시지들을 제공할 수 있는 제안 이벤트 타입들은 제안된 커맨드들에 대해 상술된 이벤트 예들을 포함할 수 있다. 일부 구현들에서, 일부 타입들의 제안 이벤트들은, 하나 이상의 제안된 메시지들을 제공하고 하나 이상의 제안된 커맨드들을 제공하지 않는 것으로서 지정될 수 있고, 이의 역도 가능하다.
[00309] 만약 검출된 제안 이벤트가 채팅 대화에 대한 하나 이상의 제안된 메시지들을 제공하는 타입이라면, 방법은 블록(722)으로 계속되며, 그 블록(722)에서, 제안 이벤트 및/또는 다른 조건들에 기반하여 하나 이상의 제안된 메시지들이 획득된다. 예컨대, 제안된 커맨드들(예컨대, 블록(714))에 대해 설명된 것과 유사하게, 메시징 애플리케이션은 하나 이상의 제안된 메시지들을 결정할 수 있고, 그리고/또는 서술 데이터를 제안 서버(또는 다른 서버)에 전송할 수 있으며, 그 제안 서버는 하나 이상의 제안된 메시지들을 결정하고, 그 하나 이상의 제안된 메시지들을 메시징 애플리케이션에 다시 전송하는 등이다. 일부 구현들에서, 임베디드 애플리케이션은 하나 이상의 제안된 메시지들을 결정할 수 있다.
[00310] 일부 구현들에서, 제안된 메시지들은, 특정 제안 이벤트들 및/또는 타입들의 제안 이벤트들과 제안된 메시지들의 저장된 미리정의된 연관들에 기반하여 결정될 수 있고, 추천 엔진을 사용하여 결정될 수 있고, 트레이닝된 모델 및 머신 학습 기법들을 사용하여 결정될 수 있고, 그리고/또는 제안된 커맨드들에 대해 본원에 설명된 바와 유사하게, 예컨대 블록(714)에 대해 설명된 바와 유사하게 다른 기법들 및 피처들을 사용하여 결정될 수 있다.
[00311] 일부 예들에서, 제안된 메시지는 제안된 메시지를 유발하였던 제안 이벤트의 설명, 또는 제안 이벤트를 유발하였던 액션의 설명일 수 있다. 예컨대, 만약 제1 사용자가 제안 이벤트로서 검출되는, 임베디드 애플리케이션에서의 액션(예컨대, 게임에서의 게임 액션, 미디어 플레이어 애플리케이션에서의 플레이백 포지션의 세팅 등)을 수행한다면, 임베디드 애플리케이션은 액션을 설명하는 제안된 메시지를 제공할 수 있다(또는 제안된 메시지를 제공하는 메시징 애플리케이션에 이벤트의 표시를 제공할 수 있음). 예컨대, 제안된 메시지는, "User1 has skipped past the current scene" 또는 "User1 has moved a knight"로서 사용자에 의해 수행된 액션을 설명할 수 있다. 만약 제안된 메시지가 (예컨대, 아래의 블록(730)에서) 제1 사용자에 의해 선택된다면, 제안된 메시지는, 예컨대, 채팅 대화 및/또는 임베디드 세션과 사용자 액션을 공유하기 위해, 채팅 대화에 출력된다.
[00312] 일부 구현들에서, 만약 제안 이벤트가 임베디드 애플리케이션 및/또는 임베디드 세션에 관한 하나 이상의 메시지 제안들을 생성하도록 시스템에 명령하는 사용자 액션이라면, 예컨대, 특정 타입의 제안 이벤트 또는 특정 사용자 액션의 콘텍스트 외부의, 임베디드 애플리케이션 및/또는 임베디드 세션을 설명하는 다양한 제안된 메시지들이 생성될 수 있다. 예컨대, 제안된 메시지들은 임베디드 애플리케이션에 관한 일반적인 코멘트들, 예컨대 "This game is great!" 또는 "Check this movie out!" 등을 포함할 수 있다. 그러한 일반적인 메시지들은 또한, 다른 타입들의 제안 이벤트들에 대한 응답으로 생성될 수 있다.
[00313] 일부 예들에서, 제안된 메시지들은 제안 이벤트에 대한 사용자 반응들을 표시 또는 설명할 수 있다. 일부 구현들에서, 그러한 제안된 메시지는, 사용자에 의해 선택될 때, 채팅 대화에 채팅 메시지로서 디스플레이될 수 있다. 예컨대, 그러한 제안된 메시지들은 텍스트 메시지들일 수 있다. 일부 예들에서, 사용자 반응들을 설명하는 제안된 메시지들은 저장된 미리정의된 메시지들로서 결정될 수 있으며, 그 저장된 미리정의된 메시지들은 제안 이벤트의 기초로서 발생하는 특정 토픽들, 단어들, 또는 구절들과 연관되거나, 또는 제안 이벤트를 검출하는 데 사용되는 특정 액션들과 연관된다. 일부 구현들에서, 합성 또는 실제 트레이닝 데이터, 예컨대, 검출된 제안 이벤트와 동일한 미리결정된 또는 이전의 제안 이벤트들(예컨대, 이전의 제안 이벤트들로서 검출되었던 동일한 타입들의 사용자 액션들, 채팅 입력, 이벤트들 등)에 대한 반응으로 사용자들에 의해 제공되는 미리결정된 합성 메시지들 또는 이전의 실제 메시지들에 기반하여 트레이닝된 머신 학습 모델이 사용될 수 있다.
[00314] 임베디드 애플리케이션이 미디어 아이템을 플레이하는 것인 일부 예시적 구현들에서, 제안된 메시지들은 제안 이벤트에 기반하여 결정될 수 있다. 예컨대, 만약 제안 이벤트가 User2라는 이름의 채팅 사용자가 미디어 아이템을 뷰잉하기 위해 임베디드 세션에 합류하는 것이라면, 제안된 메시지는 "welcome User2!"일 수 있다. 다른 예에서, 만약 제안 이벤트가 플레이된 미디어 아이템에서 검출된 특정 검출된 타입의 시각적 또는 오디오 피처 또는 타입의 장면 또는 시퀀스(예컨대, 검출된 액션 장면 또는 시퀀스)라면, 제안된 메시지들은 검출된 타입의 피처 또는 장면에 관련된 감탄들 또는 관찰들, 예컨대 "Wow that was great!" 또는 "Cute baby"를 포함할 수 있다. 예컨대, 그러한 메시지 제안들은, 이전 콘텐츠 피처들 및 이들 피처들에 대해 반응한 이전 사용자 코멘트들 또는 응답들을 포함하는 합성 또는 실제 데이터를 사용하여 트레이닝된 머신 학습 모델, 및/또는 콘텐츠 피처들 및 장면들과 메시지들 사이의 미리정의된 연관들에 기반하여 결정될 수 있다. 다른 예에서, 만약 제안 이벤트가 다른 멤버 사용자에 의해 유발된 미디어 아이템의 출력 특징들(예컨대, 오디오 볼륨 또는 시각적 밝기 또는 콘트라스트) 또는 플레이백 포지션에서의 변화라면, 제안된 메시지는 변화에 대한 반응, 이를테면 "good, I was tired of that" 또는 "wait, I wanted to watch that!"일 수 있다. 다른 예에서, 상술된 바와 같이, 서버로부터 메시징 애플리케이션에 의해 서버 이벤트가 수신되었을 수 있다. 일 예에서, 임베디드 세션에서의 플레이된 미디어 아이템은 제1 멤버 사용자, User1에 의해 생성된 비디오이고, 미디어 아이템은 서버로부터 사용자들에 의해 뷰잉하기 위해 이용가능하였으며, 서버 이벤트는 사용자들에 의한 임계 개수의 승인들이 미디어 아이템에 대해 서버에 의해 수신되었음을 표시한다. 제1 멤버 사용자 이외의 멤버 사용자들에 대한 제안된 메시지는 "congratulations, User1" 또는 제1 멤버 사용자에 대한 유사한 칭찬일 수 있다.
[00315] 임베디드 애플리케이션이 게임을 제공하는 일부 예시적 구현들에서, 제안된 메시지들은 게임 이벤트에 관련된 제안 이벤트에 기반하여 결정될 수 있다. 예컨대, 만약 제안 이벤트가 게임의 상이한 플레이어에 의한 게임 액션이라면, 제안된 메시지는 게임 액션에 대한 하나 이상의 가능한 또는 미리정의된 반응 메시지들, 예컨대 "great move!" 또는 "great answer!"(예컨대, 다수의 회답들의 선정을 제공하는 퀴즈 게임에서의 선택에 대한 경우)일 수 있다. 다른 예에서, 만약 제안 이벤트가 에너미 게임 피스들에 의한 사용자의 게임 영역의 침략이라면, 제안된 메시지들은 반응들, 이를테면 "Hey, don't come after me" 또는 "You'll regret that move!"를 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가, 사용자의 스코어가 임계량 이상만큼 (예컨대, 후행 또는 선두) 다른 플레이어들의 스코어들 또는 목표들로부터 상이하게 되는 것이라면, 제안된 메시지들은 플레이어에 의한 자랑들 또는 애도들, 예컨대 "You guys will never catch me"를 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가, 다른 플레이어가 게임에 합류하는 것이라면, 제안된 메시지들은 게임에서 사용자의 팀에 합류하라는 새로운 플레이어에 대한 메시지 요청, 및/또는 새로운 플레이어에 대항하는 팀을 형성하기 위한 상이한 플레이어에 대한 메시지 요청의 전송을 포함할 수 있다. 다른 예에서, 만약 제안 이벤트가, 멤버 사용자가 게임을 종료하는 것(또는 게임에서 플레이어 역할로부터 관찰자 역할로 변경된 것)이라면, 제안된 메시지는 "Thanks for playing"일 수 있다. 그러한 제안된 메시지들은 상술된 바와 유사하게 결정될 수 있다.
[00316] 임베디드 애플리케이션이 아이템들의 공유 콘텐츠 문서(예컨대, 공유 리스트)를 제공하는 일부 예시적 구현들에서, 제안된 커맨드들은 리스트 또는 문서에 관련된 제안 이벤트에 기반하여 결정될 수 있다. 예컨대, 만약 제안 이벤트가 상이한 멤버 사용자에 의한 식품 리스트에 대한 아이템(예컨대 "steak")의 추가라면, 제안된 메시지들은, 아이템에 관하여 문의하거나 또는 리스트로부터 아이템을 제거하기 위해 요청하는 메시지들, 예컨대 "do we need the steak?" 또는 "I suggest removing the steak"를 포함할 수 있다. 일부 구현들에서, 제안된 메시지는 상술된 바와 같은 아이템을 강조표시하기 위한 강조표시 커맨드와 연관될 수 있다. 다른 예에서, 만약 제안 이벤트가 아이템의 제거라면, 제안된 메시지는 채팅 인터페이스에 텍스트, 예컨대 "why did you remove that item?"를 출력하는 것을 포함할 수 있다. 그러한 제안된 메시지들은 상술된 바와 유사하게 결정될 수 있다.
[00317] 임베디드 애플리케이션이 여행 일정들을 제공하는 일부 예시적 구현들에서, 만약 제안 이벤트가 선택하기 위한 다수의 여행 일정들의 출력이라면, 제안된 메시지들은 일정들의 설명들, 어떤 일정을 선택할지에 대한 코멘트들 또는 제안들을 위한 다른 채팅 사용자들에 대한 요청들 등을 포함할 수 있다.
[00318] 다수의 타입들의 임베디드 애플리케이션들에 적용될 수 있는 다른 예에서, 만약 제안 이벤트가, 멤버 사용자가 임베디드 세션에 합류하는 것이라면, 제안된 메시지는 새로운 멤버 사용자에게 그 또는 그녀가 임베디드 애플리케이션의 기능들에 대한 제어를 원하는지 여부를 물어보는 것일 수 있다(제1 사용자가 임베디드 애플리케이션에서 그러한 제어 할당을 허용하는 사용자 상황 또는 역할을 할당받은 경우). 일부 구현들에서, 제안된 메시지는 멤버 사용자에게 욕설 또는 부적절한 언어를 사용하는 것을 중단하라고 물어보는 것일 수 있다(메시징 애플리케이션(또는 다른 프로그램 또는 디바이스)이 채팅 대화에서의 지정된 사용자로부터의 메시지들에서 그러한 언어를 검출한 경우).
[00319] 추가적인 예들에서, 제안 이벤트는, 사용자가 채팅 대화에 참여하고 있는 동안 사용자 디바이스가 전화 통화를 수신하는 것일 수 있으며, 제안된 메시지는 채팅 대화에서의 디스플레이를 위한 "Hang on, let me take this call from my boss"일 수 있다. 제안 이벤트는, 사용자가 채팅 대화에 참여하고 있는 동안 사용자 디바이스가 SMS(Short Message Service) 메시지를 수신하는 것일 수 있으며, 제안된 메시지는 채팅 대화에서의 디스플레이를 위한 SMS 메시지의 콘텐츠를 포함할 수 있다. 제안 이벤트는 사용자 디바이스가 오프라인 상태로 되는 것일 수 있으며, 제안된 메시지는 "sorry guys, my phone lost connectivity for a minute"을 포함할 수 있다. 제안 이벤트는, 임베디드 세션에서의 비디오의 디스플레이 동안, 사용자 디바이스가, 예컨대 임계 시간 기간 내에 임계 횟수로 온라인/오프라인 상황 사이에서 교번하는 것일 수 있으며, 제안된 메시지는 "sorry guys my connection is very choppy, I'll watch that video later"를 포함할 수 있다. 제안 이벤트는 채팅 사용자가 채팅 대화를 종료하는 것(예컨대, 서버 이벤트로서 검출됨)일 수 있으며, 이는 모든 다른(나머지) 채팅 사용자들에 대한 제안된 메시지들의 생성을 트리거링할 수 있고, 여기서, 제안된 메시지들은 그 사용자가 채팅 대화를 중단하는 것에 관련된다(예컨대, "shall we stop the movie?" 등).
[00320] 만약 사용자 동의가 획득되었다면, 제안된 메시지들은 또한 또는 대안적으로, 동일한 또는 유사한 타입들의 콘텐츠 아이템들(예컨대, 미디어 아이템들, 게임들 등)에 대한 그리고/또는 그 동일한 또는 유사한 타입들의 임베디드 애플리케이션들을 수반하는 임베디드 세션들에서 사용자에 의해 수행된 이전 메시지들 및/또는 액션들의 이력에 기반할 수 있다. 예컨대, 만약 사용자가 이전에, "Please change it back"의 메시지를 전송함으로써 비디오에서의 특정 장면 또는 타입의 장면의 플레이백 포지션의 변화에 반응하였다면, 유사한 제안 이벤트의 발생에 대한 응답으로 유사한 제안된 메시지가 생성될 수 있으며, 여기서, 제안된 메시지는 유사한 반응을 제공한다.
[00321] 제안된 메시지들은 또한 또는 대안적으로, 메시징 애플리케이션의 채팅 인터페이스에 디스플레이되는 바와 같은, 채팅 대화에서의 멤버 사용자 입력에 기반할 수 있다. 예컨대, 만약 게임 동안, 멤버 사용자가 "help me get this objective"라고 말하는 메시지를 채팅 대화에 입력한다면, "sure, will do" 또는 "I can't help you right now"라는 제안된 메시지들이 생성될 수 있다. 다른 예에서, 만약 임베디드 인터페이스에서의 미디어 아이템의 플레이백 동안, 멤버 사용자가 "what time should I start at?"을 입력하면, 다양한 시간들, 이를테면 상이한 챕터 헤딩들(예컨대, "go to 28:30 - The Visit")을 표시하는 제안된 메시지들이 생성될 수 있거나, 또는 제안된 메시지는, 만약 사용자 동의로 앞선 이력에 액세스될 수 있다면, 사용자의 알려진 선호 장면의 시간 또는 포지션을 표시할 수 있다.
[00322] 일부 제안된 메시지들은 블록(714)에서 결정된 하나 이상의 제안된 커맨드들과 연관될 수 있다. 만약 제안된 커맨드가 사용자에 의해 선택된다면, 임베디드 애플리케이션에 커맨드가 제공되면서, 그 커맨드와 연관된 제안된 메시지가 채팅 인터페이스에 출력될 수 있다. 일부 구현들에서, 그러한 제안된 메시지는 연관된 제안된 커맨드에 관련될 수 있고, 예컨대, 제공되는 커맨드를 강조 또는 설명할 수 있다. 예컨대, 만약 게임에서의 상이한 플레이어의 이전의 액션에 응답하는 액션을 취하기 위한 제안된 커맨드가 선택된다면, 그 제안된 커맨드를 강조하기 위해 그 제안된 커맨드와 동반될 수 있는 하나 이상의 연관된 제안된 메시지들, 이를테면 "Take that!" 및 "I'm not defeated yet"가 결정될 수 있다. 다른 예에서, 만약 미디어 아이템에 대한 플레이백 포지션을 새로운 장면으로 변화시키기 위한 제안된 커맨드가 선택된다면, 연관된 제안된 메시지는 플레이백에서의 그 변화를 설명할 수 있다(예컨대, "I'm skipping past that scene" 또는 "I got bored with that scene"). 일부 구현들은 유사하게, 제안된 메시지의 선택에 대한 응답으로 하나 이상의 제안된 커맨드들을 디스플레이할 수 있다. 다른 예에서, 만약 채팅 대화에서 채팅 사용자들 간에 논의 또는 논쟁이 있다면, 예컨대 다른 타입들의 콘텐츠 데이터를 사용하여, 논의의 시각화를 생성하기 위해, 임베디드 애플리케이션에 대한 제안된 커맨드가 채팅 사용자들 중 하나 이상에게 제공될 수 있다. 예컨대, 임베디드 애플리케이션은 사용자 프로필 사진들을 사용하여 논의의 시각적 표현으로 시네마그래프 또는 다른 애니메이팅된 데이터를 생성할 수 있다. 사용자가 애니메이팅된 데이터를 편집하게 허용하는 편집 옵션들이 (예컨대, 제안된 커맨드를 선택한 사용자에게) 제공될 수 있다. 임베디드 애플리케이션은, 만약 사용자에 의해 선택되면, 애니메이팅된 데이터가 채팅 메시지로서 채팅 대화에 디스플레이되게 하는 제안된 메시지를 생성할 수 있다.
[00323] 일부 제안 이벤트 타입들은 블록들(714-718)로부터의 제안된 커맨드들과 블록들(722-724)로부터의 제안된 메시지들 둘 다의 생성을 유발할 수 있다. 일부 구현들에서, 임베디드 애플리케이션에 대한 제안된 커맨드들은, 채팅 인터페이스에 디스플레이될 때, 제안된 메시지들과 시각적으로 구별될 수 있다. 일부 예들에서, 제안된 커맨드들은 공통 제1 시각적 피처로 디스플레이될 수 있으며, 제안된 메시지들은 제1 시각적 피처와 상이한 공통 제2 시각적 피처로 디스플레이될 수 있다. 예컨대, 제안된 커맨드들에 특정 컬러, 서체, 강조표시(예컨대, 볼드체 텍스트), 또는 다른 시각적 피처가 적용될 수 있으며, 제안된 메시지들에 상이한 컬러, 서체, 강조표시, 또는 다른 시각적 피처가 적용될 수 있다.
[00324] 일부 구현들에서, 상술된 바와 같은 제안된 커맨드들과 유사하게, 복수의 제안된 메시지들이 생성될 수 있고, 그리고 하나 이상의 미리결정된 기준들에 기반하여 랭킹될 수 있다. 특정 수의 최상위 랭킹된 제안된 메시지들이 사용자 디바이스 상에 출력되도록 선택될 수 있다. 방법은 블록(724)으로 계속된다.
[00325] 블록(724)에서, 블록(722)에서 획득된 하나 이상의 제안된 메시지들이 메시징 애플리케이션에 의해 채팅 인터페이스 및/또는 임베디드 인터페이스에 출력된다. 예컨대, 제안된 커맨드들에 대해 상술된 바와 유사하게, 제안된 메시지들은 채팅 인터페이스에 리스트로 디스플레이될 수 있고, 사용자에 의해 선택가능할 수 있다. 일부 구현들은, 채팅 인터페이스에 추가적인 채팅 메시지들이 디스플레이될 때, 제안된 메시지들이 디스플레이를 스크롤 오프시키기 않도록, 제안된 메시지들을 채팅 인터페이스의 지속적 영역에 디스플레이할 수 있다.
[00326] 일부 구현들에서, 제안된 커맨드들에 대해 상술된 바와 유사하게, 제안된 메시지들은 메시징 애플리케이션에 의해 채팅 인터페이스로부터 자동적으로 제거되기 전에, 제한된 디스플레이 시간을 가질 수 있다. 예컨대, 제안된 메시지들은 시간 제한이 만료된 후에 그리고/또는 하나 이상의 조건들이 충족되는 것에 기반하여 제거될 수 있다. 예컨대, 만약 제안 이벤트 또는 애플리케이션 상태가, 특정 제안된 메시지(들)가 결정 및 디스플레이되게 하였고, 그 제안 이벤트 또는 애플리케이션 상태가 더 이상 관련되거나, 계류중이거나, 또는 유효하지 않다면, 이들 특정 제안된 메시지(들)는 채팅 인터페이스로부터 제거될 수 있다. 일부 예들에서, 만약 제안된 메시지들이 임베디드 애플리케이션에서의 상이한 사용자에 의해 수행된 특정 액션에 대한 응답이고, 그 상이한 사용자가 상이한 액션을 수행한다면, 이들 제안된 메시지들은 더 이상 관련되지 않을 수 있고 제거될 수 있다. 일부 예들에서, 임베디드 애플리케이션은 새로운 이벤트들 및 상태들, 및/또는 제안 이벤트들이 더 이상 유효하지 않거나 또는 계류중이지 않은 경우를 메시징 애플리케이션에 알릴 수 있고, 그에 따라, 메시징 애플리케이션은 디스플레이로부터 제안된 메시지들을 제거할 때를 결정할 수 있다. 방법은 후술되는 바와 같이 블록(726)으로 계속된다.
[00327] 블록(720)에서 결정되는 바와 같이, 만약 제안 이벤트 타입이 제안된 메시지들을 제공하지 않거나 또는 블록(724) 후에, 방법은 블록(726)으로 계속되며, 그 블록(726)에서, 채팅 인터페이스에서 하나 이상의 제안된 커맨드 아이템들의 선택이 수신되는지 여부가 결정된다. 예컨대, 선택은 디스플레이된 제안된 커맨드 아이템(들)을 선택하기 위해 채팅 인터페이스에서 사용자에 의해 제공된 사용자 입력에 기반하여 수신될 수 있다. 일부 구현들에서, 블록(718)에 대해 상술된 바와 같이, 임베디드 인터페이스는 임베디드 인터페이스에 제안된 아이템들을 디스플레이할 수 있으며, 여기서, 이들은 선택을 위한 사용자 입력에 응답한다.
[00328] 일부 구현들에서, 다수의 제안된 커맨드 아이템들이 사용자 입력에 의해 선택될 수 있다. 일부 예들에서, 상술된 바와 같이, 제안된 커맨드 아이템에 대한 선택이 수신될 수 있으며, 이는 제안된 커맨드 아이템과 연관된 제안된 메시지 아이템들의 리스트가 디스플레이되게 한다. 이어서, 사용자는 연관된 제안된 메시지 아이템들 중 하나(또는 그 이상)를 선택할 수 있다. 일부 구현들에서, 제안된 메시지 아이템에 대한 선택이 수신될 수 있으며, 이는 제안된 메시지 아이템과 연관된 제안된 커맨드 아이템들의 리스트가 디스플레이되게 한다. 이어서, 사용자는 연관된 제안된 커맨드 아이템들 중 하나(또는 그 이상)를 선택할 수 있다.
[00329] 블록(726)에서 결정되는 바와 같이, 만약 하나 이상의 제안된 커맨드 아이템들의 선택이 수신되면, 방법은 블록(728)으로 계속되며, 그 블록(728)에서, 메시징 애플리케이션은 선택된 커맨드 아이템(들)과 연관된 하나 이상의 선택된 커맨드(들)를 임베디드 애플리케이션에 제공한다. 일부 경우들에서, 선택된 커맨드 아이템과 연관된 하나 이상의 선택된 커맨드들은, 임베디드 애플리케이션에 커맨드들이 제공되는 대신에 또는 그 이외에, 메시징 애플리케이션 및/또는 상술된 바와 같은 제1 사용자 디바이스에 제공된다. 일부 구현들에서, 단일 선택된 제안된 커맨드 아이템과 다수의 커맨드들이 연관된다. 임베디드 애플리케이션, 메시지 애플리케이션, 및/또는 제1 사용자 디바이스는 제공된 커맨드(들)를 구현한다. 예컨대, 커맨드는 임베디드 애플리케이션의 상태의 변화(예컨대, 미디어 아이템의 플레이백 포지션의 변화, 사용자-제어식 게임 피스의 상황 또는 포지션의 변화, 공유 문서의 변화 등)를 유발할 수 있다. 일부 구현들에서, 본원에 설명된 바와 같이, 상태의 변화는, 임베디드 세션에서의 임베디드 애플리케이션 상태들의 동기화를 허용하기 위해, 네트워크를 통해, 하나 이상의 서버들 및/또는 다른 멤버 디바이스들에 전송 또는 표시된다. 방법은 블록(730)으로 계속된다.
[00330] 블록(726)에서 결정되는 바와 같이, 만약 하나 이상의 제안된 커맨드 아이템들의 선택이 수신되지 않거나 또는 블록(728) 후에, 방법은 블록(730)으로 계속되며, 그 블록(730)에서, 채팅 인터페이스에서 하나 이상의 제안된 메시지 아이템들의 선택이 수신되는지 여부가 결정된다. 예컨대, 선택은 디스플레이된 제안된 메시지 아이템을 선택하기 위해 채팅 인터페이스에서 사용자에 의해 제공된 사용자 입력에 기반하여 수신될 수 있다. 일부 구현들에서, 다수의 제안된 메시지 아이템들이 사용자 입력에 의해 선택될 수 있다. 일부 구현들은 상술된 바와 같은 하나 이상의 제안된 커맨드 아이템들과 연관하여 하나 이상의 제안된 메시지 아이템들을 선택할 수 있다.
[00331] 블록(730)에서 결정되는 바와 같이, 만약 하나 이상의 제안된 메시지 아이템들의 선택이 수신된다면, 방법은 블록(732)으로 계속되며, 그 블록(732)에서, 메시징 애플리케이션은 선택된 메시지 아이템에 대응하는 선택된 메시지(들)를 채팅 인터페이스에서의 채팅 대화에 출력한다. 일부 구현들에서, 다수의 메시지들이 단일 메시지 아이템에 대응할 수 있다. 일부 예들에서, 선택된 메시지(들)는 메시지 아이템의 사용자 선택을 수신하는 (제1) 디바이스의 채팅 인터페이스에 디스플레이될 수 있으며, 선택된 메시지(들)는 네트워크를 통해 채팅 대화에 참여하는 채팅 디바이스들에 송신될 수 있고, 그 디바이스들의 채팅 인터페이스들에 디스플레이될 수 있다. 일부 구현들에서, 선택된 메시지(들)는, 채팅 디바이스들의 특정 서브세트의 연관된 채팅 인터페이스들에서의 디스플레이를 위해 그 채팅 디바이스들의 특정 서브세트에 송신될 수 있으며, 예컨대, 제1 디바이스와 동일한 임베디드 세션에 있는 멤버 디바이스들에 송신될 수 있고, 사용자 선택 또는 선호도들에 기반하여 특정 채팅 사용자들의 디바이스들에 송신될 수 있고, 임베디드 세션에서의 특정 사용자 상황들 또는 역할들의 디바이스들에 송신될 수 있고, 임베디드 세션의 게임에서의 동일 팀 또는 반대 팀의 디바이스들에 송신될 수 있는 등이다.
[00332] 일부 구현들에서, 채팅 대화에 출력되는 제안된 메시지들의 수는, 예컨대, 채팅 인터페이스를 혼잡하게 하는 다수의 채팅 메시지들의 영향을 감소시키기 위해 제한될 수 있다. 예컨대, 메시징 애플리케이션은 특정 시간 기간 내에 채팅 대화에 출력될 수 있는 선택된 제안된 메시지들의 최대 개수를 부과할 수 있거나, 또는 특정 멤버 사용자로부터 또는 모든 채팅 사용자들로부터의 연속적인 선택된 제안된 메시지들의 출력 간의 최소 시간량을 부과할 수 있다. 따라서, 만약 선택된 제안된 메시지가 출력에 대한 자격을 갖추지 않는다면, 블록(732)에서, 메시지가 채팅 대화에 출력되지 않는다.
[00333] 블록(730)에서 결정되는 바와 같이, 만약 하나 이상의 제안된 메시지 아이템들의 선택이 수신되지 않거나 또는 블록(732) 후에, 방법은 임베디드 애플리케이션의 실행을 계속하기 위해 블록(708)으로 계속될 수 있다.
[00334] 일부 구현들에서, 채팅 대화에서의 채팅 메시지들을 계속해서 파싱하고 그리고/또는 다른 방식으로 프로세싱하고, 채팅 메시지들에 기반하여 제안된 커맨드들 및/또는 메시지들을 제공하기 위해, 특정 임베디드 애플리케이션이 열릴 수 있다(예컨대, 코너에서 최소화될 수 있음). 예컨대, 임베디드 애플리케이션은, 채팅 대화의 콘텐츠에 기반하여, 토픽들, 비디오들, 이미지들, 시네마그래프들, 오디오 데이터 세그먼트들 등인 제안된 메시지들을 제공할 수 있다. 이는 사용자가 채팅 대화에 관련된 콘텐츠를 포스팅하는 것을 보조할 수 있다. 이들 구현들 중 일부에서, 채팅 대화에 채팅 사용자들에 의해 입력되는 현재 채팅 메시지들에 기반하여 제안 이벤트들이 계속해서 검출되고 있을 수 있으며, 사용자 선택을 위해 임베디드 인터페이스 및/또는 채팅 인터페이스에 새로운 제안된 커맨드들 및/또는 메시지들이 계속해서 제공되고 있을 수 있다.
[00335] 일부 구현들에서, 제안된 응답들은, 예컨대 각각의 멤버 디바이스 또는 채팅 디바이스(또는 선택된 멤버 디바이스들 또는 채팅 디바이스들) 상에 디스플레이된 제안 이벤트에 기반하여 다수의 멤버 사용자들(및/또는 채팅 사용자들)에 대해 결정되고 이들에게 제공될 수 있다. 일부 예들에서, 제안된 응답들은 다수의 멤버 디바이스들 각각에 제공되는 동일한 제안된 커맨드들 및/또는 제안된 메시지들일 수 있거나, 또는 상이한 제안된 응답들이 멤버 디바이스들 중 2개 이상의 멤버 디바이스들 각각에 제공될 수 있다. 일부 예들에서, 사용자 1, 사용자 2 및 사용자 3의 멤버 디바이스들은 채팅 대화의 사용자 4로부터 채팅 메시지를 수신하고, 사용자 1, 사용자 2, 및 사용자 3의 각각의 멤버 디바이스(또는 다수의 멤버 디바이스들)는 상이한 세트의 제안된 응답들을 제공할 수 있다(예컨대, 각각의 세트는 다른 세트들 중 하나 이상과 상이한 적어도 하나의 응답을 가짐). 각각의 세트의 제안된 응답들은 세트를 제공하는 멤버 디바이스의 콘텍스트에 기반할 수 있는데, 예컨대 채팅 대화의 연관된 사용자에 의해 입력된 연관된 채팅 메시지들, 연관된 사용자의 채팅 메시지들의 이력(사용자 동의가 획득된 경우), 및/또는 본원에 설명된 바와 같은 다른 팩터들에 기반할 수 있다. 일부 예들에서, 제안된 응답들의 세트는 연관된 사용자가 사용하고 있는 하나 이상의 특정 임베디드 애플리케이션들에 기반할 수 있다. 예컨대, 만약 사용자 4가 "We need to buy drinks for the party tonight"라는 채팅 메시지를 입력하고, 그리고 만약 사용자 2가 공유 리스트 임베디드 애플리케이션의 빈번한 사용자라면, 사용자 2의 사용자 디바이스는, (선택될 때) 'Buy Drinks'라는 아이템을 그 애플리케이션의 쇼핑 리스트에 추가하는 제안된 커맨드를 제공할 수 있다. 제안된 커맨드를 선택하는 것은, 공유 리스트 임베디드 애플리케이션이 열리게 할 수 있고, "Buy Drinks"라는 아이템이 공유 리스트 임베디드 애플리케이션의 공유 리스트에 자동으로 들어가게 할 수 있다. 그러나, 사용자 3은 공유 리스트 임베디드 애플리케이션의 빈번한 사용자가 아니며(예컨대, 특정 시간량 내에 임계 횟수를 초과하여 애플리케이션을 사용하지 않음), 사용자 3의 사용자 디바이스는 이 예에서 그 제안된 커맨드를 디스플레이하지 않는다. 사용자 3의 사용자 디바이스(예컨대, 메시징 애플리케이션)는 사용자 3에 의해 빈번하게 사용되는 상이한 임베디드 애플리케이션, 예컨대 음료를 구매하기 위한 비지니스들의 지리적 로케이션을 디스플레이하는 맵 애플리케이션에 대한 상이한 제안된 커맨드를 디스플레이할 수 있다. 다른 예에서, 사용자 3의 디바이스는, 이전의 경우의 채팅 대화(또는 대안적으로, 임의의 채팅 대화)에 디스플레이된 유사한 채팅 메시지(예컨대, 동일한 단어들, 또는 동일한 의미론적 의미 등 중 하나 이상을 갖는 이전의 채팅 메시지)에 대한 응답으로 사용자 3에 의해 이전에 입력된 또는 선택된 이전의 메시지와 동일한 제안된 메시지를 제공할 수 있다.
[00336] 일부 구현들에서, 임베디드 인터페이스에서 제공된 하나 이상의 특정 콘텐츠 아이템들과 관련된, 관련 제안된 응답들이 결정될 수 있다. 예컨대, 만약 멤버 사용자들이 여행 준비를 위한 제1 리스트 및 파티 준비를 위한 제2 리스트를 생성하기 위해 공유 리스트 임베디드 애플리케이션을 사용하고 있다면(또는 이전에 사용했다면), 제안된 응답들은, 예컨대 채팅 메시지들의 콘텐츠 및/또는 하나 이상의 다른 제안 이벤트들에 기반하여, 다른 리스트가 아닌 이 리스트들 중 하나를 참조할 수 있다. 일부 예들에서, 채팅 메시지, 이를테면, "don't forget to buy drinks for tonight"와 같은 에 대한 응답으로, 머신 학습 모델 및/또는 지식 그래프는, "tonight" 및 "buy drinks"가, 채팅 멤버들이 준비하고 있는 "party"를 참조한다는 것을 결정하고, 그리고 (선택될 때) 파티 준비를 위해 대응하는 제2 리스트에 "buy drinks"라는 아이템을 추가하는 제안된 응답을 제공할 수 있다. 채팅 메시지, 이를테면, "have you booked the plane tickets for our trip"에 대한 응답으로, 머신 학습 및 지식 그래프는, "plane tickets" 및 "trips"이 여행을 참조한다는 것을 결정하고, 그리고 (선택될 때) 여행 준비를 위해 대응하는 제1 리스트에 "book plane tickets"라는 아이템을 추가하는 제안된 응답을 제공할 수 있다.
[00337] 일부 구현들에서, 제안된 응답은, 선택될 때, 예컨대 사용자가, 제안된 응답에 기반하여 데이터를 수신하거나 또는 실행될 원하는 임베디드 애플리케이션을 선택하게 허용하여 모호성을 감소시키기 위해, 다수의 연관된 임베디드 애플리케이션들의 식별들의 디스플레이를 트리거링할 수 있다. 일부 구현들에서, 제안된 응답은, 사용자에 의해 선택될 때, 제안된 응답의 선택에 의해 어느 임베디드 애플리케이션이 트리거링되어야 하는지에 대한 요청의 디스플레이를 유발할 수 있다. 일부 경우들에서, 선택된 제안된 응답에 적합한 다수의 가능한 임베디드 애플리케이션들이 디스플레이될 수 있고, 사용자 입력은 실행할 임베디드 애플리케이션을 표시할 수 있다. 예컨대, 만약 선택된 제안된 응답이 아이템을 공유 리스트에 추가하고, 2개의 상이한 이용가능한 임베디드 애플리케이션들이 그러한 리스트들을 제공한다면, 이 2개의 임베디드 애플리케이션들의 식별들이 디스플레이될 수 있고, 사용자는 임베디드 애플리케이션들 중 사용할 임베디드 애플리케이션을 선택할 수 있다.
[00338] 일부 구현들에서, 제안된 응답들은 임베디드 인터페이스 내에 디스플레이될 수 있고, 임베디드 인터페이스에 디스플레이되는 동안, (예컨대, 임베디드 인터페이스에 포지셔닝된 사용자-제어식 커서를 통해 또는 터치스크린 상에서의 터치 입력을 통해) 사용자 입력으로부터 선택을 수신할 수 있다. 예컨대, 제안된 응답들은 임베디드 애플리케이션에서 제안 이벤트들의 발생에 대한 응답으로 디스플레이될 수 있다. 일부 예들에서, 게임에서의 제안 이벤트는, 사용자 플레이어로 하여금 상대편 플레이어의 아바타 또는 게임 피스가 패배하게 하거나 또는 제거되게 하는 것일 수 있고, 제안된 메시지들의 제1 세트는 승리한 플레이어의 멤버 디바이스 상에 디스플레이될 수 있고(예컨대, 이동하는 것에 관해 자랑하는 메시지들), 제안된 메시지들의 제2 세트는 패배한 플레이어의 멤버 디바이스 상에 디스플레이될 수 있다(예컨대, 패배에 관해 불평하는 메시지들). 사용자 입력에 의해 선택될 때, 그러한 제안된 메시지들은, 원하는 콘텐츠를 표시하는 채팅 메시지들이 채팅 대화에서 제공되게 한다. 다른 예에서, 제안 이벤트는, 제1 사용자의 디바이스의 임베디드 애플리케이션 및 임베디드 인터페이스에서의, 제2 사용자가 게임에 합류했다는 통지이고, 제안된 응답은, 선택될 때, 도발 또는 도전이 제2 플레이어의 사용자 디바이스(예컨대, ("Let's go, User 2", "I'm gonna beat you at this game" 등) 및/또는 모든 멤버 디바이스들(또는 대안적으로, 모든 채팅 디바이스들)에 출력되게 한다.
[00339] 일부 구현들에서, 임베디드 애플리케이션들(예컨대, 스크립트들)은, 예컨대, 제안된 응답의 데이터에 또는 제안된 응답에 포함된 사용자-선택가능한 링크(또는 다른 디스플레이된 선택가능한 제어)에 직접적으로 인코딩됨으로써, 제안된 응답에 첨부(또는 제안된 응답과 연관)될 수 있다. 예컨대, 수백 킬로바이트의 작은 임베디드 애플리케이션들이 그렇게 첨부될 수 있다. 제안된 응답이 사용자에 의해 선택될 때, 첨부된 임베디드 애플리케이션은, 예컨대 네트워크를 통해 소스(예컨대, 임베디드 애플리케이션 서버(150))로부터 임베디드 애플리케이션을 다운로드하는 대신에, (디코딩 후에) 열도록 트리거링된다. 일부 경우들에서, 이 피처는 임베디드 애플리케이션 데이터의 추가적인 다운로드 시간을 제거하거나 감소시킬 수 있으며, 임베디드 인터페이스의 즉각적인 실행 및 디스플레이를 제공할 수 있다. 일부 구현들에서, 첨부된 임베디드 애플리케이션은 경량 버전일 수 있으며, 디바이스의 백그라운드에서 임베디드 애플리케이션의 더 완전한 버전(이는 다운로드가 발생된 후에 디바이스 상의 경량 버전을 교체할 수 있음)을 다운로드하는 것을 트리거링하는 것에 부가하여 실행된다.
[00340] 일부 구현들에서, 첨부된 임베디드 애플리케이션은 (예컨대, "headless mode"로) 디바이스의 운영 시스템(또는 다른 소프트웨어 환경)의 백그라운드에서 실행될 수 있으며, 이는 임베디드 인터페이스 또는 다른 출력이 임베디드 애플리케이션에 의해 디스플레이되게 하지 않는다. 예컨대, 첨부된 임베디드 애플리케이션은 채팅 인터페이스에 디스플레이되는 제안된 응답들을 생성할 수 있다. 첨부된 임베디드 애플리케이션들은, 예컨대 사용자에 의해 선택된 연관된 제안된 응답들 및/또는 채팅 대화의 메시지들에 기반하여, 채팅 대화 중에 온-더-플라이(on-the-fly) 방식으로 생성될 수 있는 즉석 확장들 및 능력들을 메시징 애플리케이션에 제공할 수 있다. 메시징 애플리케이션은, 예컨대 자기 자신의 연관된 임베디드 인터페이스를 디스플레이하는 임베디드 애플리케이션의 대응하는 버전을 다운로드하여 실행할 필요 없이, 첨부된 임베디드 애플리케이션들의 API들 및 능력들을 사용할 수 있다.
[00341] 일부 구현들에서, 첨부된 임베디드 애플리케이션은, 예컨대 첨부된 임베디드 애플리케이션이 채팅 대화와 계속해서 연관되어 실행되는 동안, 실행되는 채팅 대화와 연관되거나 또는 그 채팅 대화에 첨부될 수 있다. 예컨대, 첨부된 임베디드 애플리케이션은, 예컨대 채팅 대화가 열려 있고 그리고/또는 디바이스 상에 디스플레이되는 동안 임베디드 애플리케이션이 백그라운드에서 실행되는 경우, 채팅 대화에 대한 확장으로서의 역할을 할 수 있다. 그러한 첨부된 임베디드 애플리케이션은 채팅 대화에 입력되는 채팅 메시지들을 프로세싱하고 그리고 채팅 메시지들에 대한 응답으로 액션들을 수행할 수 있는데, 예컨대 특정 타입들의 채팅 메시지들에 자동-응답들을 제공하고, 채팅 메시지들을 상이한 언어로 자동-번역하고, (사용자 동의 하에) 메시징 애플리케이션이 열려 있는 동안 (사용자 디바이스의 현재 지리적 로케이션을 표시하는) 상시(always-on) 로케이션 공유를 제공하고, 디스플레이된 그래픽 인터페이스 엘리먼트들을 채팅 인터페이스에 추가할 수 있는 식이다. 일부 예들에서, 예컨대 첨부된 임베디드 번역 애플리케이션을 메시징 애플리케이션의 확장으로서 가짐으로써, 채팅 대화의 채팅 메시지들은 자동-번역되어 상이한 언어의 메시지들로서 디스플레이될 수 있다. 확장 임베디드 애플리케이션들은, 예컨대 이미지들과 같은 미디어 아이템들이 채팅 대화에서 또는 상이한 임베디드 애플리케이션을 통해 다른 디바이스들과 공유되기 전에 그러한 미디어 아이템들을 수정하기 위해, 카메라 애플리케이션 또는 이미지 피커 애플리케이션을 증강시킬 수 있다. 추가의 예들에서, 확장 임베디드 애플리케이션은, 채팅 대화, 또는 채팅 대화의 특정 사용자들을 익명화하고(예컨대, 채팅 사용자들의 디스플레이되는 사용자 식별자들을 변화시킴), 대화에서 채팅 메시지들의 디스플레이를 재순서화(reorder)하고(예컨대, 메시지들을 테마별, 본래의 채팅 메시지에 대한 연속적인 응답들을 포함하는 스레드별 식으로 그룹화함), 채팅 인터페이스의 기능들이 사용자 입력에 액세스가능한 것을 가능하게 할 수 있다(예컨대, 디스플레이되는 제어들은 채팅 대화에 포스팅된 채팅 메시지들 또는 미디어 아이템들이 채팅 인터페이스의 디스플레이 영역에 지속적으로 디스플레이되도록 고정(pin)하기 위한 것이거나, 또는 제어들은, 예컨대 공유된 데이터베이스에 보관된 미디어 메시지들에 코멘트들을 첨부하기 위한 것임).
[00342] 일부 구현들에서, 첨부된 임베디드 애플리케이션은, 예컨대 채팅 대화에 대한 이미지 입력을 수정 및 재-공유하기 위한 채팅 대화에 대한 1회성(one-time) 실행, 또는 채팅 메시지의 1회성 번역을 제공한다. 일부 구현들에서, 그러한 임베디드 애플리케이션 확장들 및/또는 1회성 스크립트들은 서버로부터 다운로드될 수 있거나, 또는 사용자-선택가능한 채팅 메시지들 또는 제안된 응답들(링크들)(예컨대, 웹 주소(예컨대, URL(Uniform Resource Locator))의 파라미터로서 제공되는 인코딩된 스크립트들로서)에 직접적으로 첨부될 수 있다.
[00343] 유사한 방식으로, 첨부된 임베디드 애플리케이션들(예컨대, 수백 KB의 메모리를 사용하는 소형 애플리케이션들)은 채팅 메시지의 선택가능한 링크의 데이터 또는 채팅 인터페이스 또는 채팅 대화에 디스플레이되는 대화형 카드에 대한 데이터에 인코딩될 수 있고, 대화형 카드에서 그 채팅 메시지 링크 또는 제어의 선택 시에 실행될 수 있다.
[00344] 일부 구현들에서, 제안된 응답들은, 예컨대 상술된 바와 같이, 메시징 애플리케이션 및 채팅 대화 외부의 외부 디바이스들 또는 프로그램들에서 발생하는 제안 이벤트들에 기반하여 생성될 수 있고, 제안된 응답들은 커맨드들 및/또는 메시지 출력을 외부 디바이스들 또는 프로그램들에 제공할 수 있다. 예컨대, 임베디드 애플리케이션은 온라인 게임(예컨대, 서버 상에서 실행되는 게임)과 통신할 수 있고, 임베디드 애플리케이션에 입력된 커맨드들은 게임의 상태에 영향을 미칠 수 있는데, 예컨대 게임 서버에 전달될 수 있다. 만약 임베디드 애플리케이션에 입력을 제공하는 제1 사용자에 의해 응답될 수 있는 이벤트가 게임에서 발생한다면, 제안된 응답은 온라인 게임에서 사용자 응답 액션을 유발할 입력을 임베디드 애플리케이션에 제공하는 액션을 포함할 수 있다.
[00345] 일부 구현들에서, 제안된 응답들은 제안 이벤트들 및/또는 과거에 발생한 특정 이벤트들에 기반하여 생성될 수 있다(만약 그렇게 행하는 것에 대해, 적용가능한 사용자들의 동의가 획득되었다면). 이전의 이벤트들은, 예컨대 보관된 이력상 데이터에 표시되거나 설명될 수 있다. 일부 예들에서, 2명의 사용자들 간의 이전의 채팅 대화에서 입력된 이전의 채팅 메시지들의 로그는, 동일한 2명의 사용자들을 포함하는 현재 채팅 대화에 대해 새롭게-생성된 제안된 응답들로서 포함될 메시지들을 결정하는 데 사용될 수 있다. 제안된 응답은, 게임에서 사용자에 의해 획득된 이전의 목표들 또는 스코어들과 같은, 임베디드 게임 애플리케이션에서의 특정 사용자의 퍼포먼스를 설명하는 이전 이력에 기반할 수 있다. 예컨대, 게임에서 사용자 2의 현재 스코어가, 그 임베디드 게임 애플리케이션에서 이전의 게임에서의 사용자 2의 이전의 스코어와 비교해 볼 때 더 높은 것에 기반하여, "You're doing better than before!"라는 제안된 메시지가 사용자 1게 디스플레이될 수 있다. 임베디드 애플리케이션들에서 사용자들 간의 기록된 이전의 상호작용들은 또한, 만약 사용자 동의가 획득되었다면, 제안된 응답들을 생성하는 데 사용될 수 있다. 예컨대, 게임 애플리케이션에서 이전 사용자 상호작용들은, 이전의 게임에서 성공적이었던 새로운 제안된 게임 액션을 생성하고, 그리고/또는 제안된 메시지(예컨대, "I'm doing better than you this time")를 생성하는 데 사용될 수 있거나, 또는 공유 문서 애플리케이션에 대한 이전 사용자 기여들은 새로운 공유 문서 등에 동일한 기여들을 추가하기 위해, 제안된 커맨드를 생성하는 데 사용될 수 있다. 다른 예에서, 보관된 이력상 데이터에서 설명된 바와 같이, 만약 리스트 아이템의 추가가 임베디드 리스트 애플리케이션의 제1 공유 리스트에 대해 사용자에 의해 이전에 이루어진 것으로 결정된다면, 제안된 커맨드는, 예컨대 제1 리스트와 동일한 또는 유사한 라벨 또는 타이틀을 갖는 새롭게-생성된 제2 공유 리스트와 관련하여 그 사용자에 대해 생성될 수 있다. 예컨대, 제안된 커맨드는, 선택될 때, 동일한 리스트 아이템을 제2 리스트에 추가하며, 여기서 제2 리스트는 제1 리스트와 동일한 라벨(예컨대, "Shopping List")을 갖는 것으로 결정되었다.
[00346] 일부 구현들에서, 예컨대 다수의 제안된 응답들을 디스플레이되는 단일의 제안된 응답으로 통합함으로써, 디스플레이되는 제안된 응답들의 수가 제한될 수 있다. 예컨대, 단일의 제안된 응답은, 선택될 때, 하나 이상의 애플리케이션들(임베디드 애플리케이션들, 메시징 애플리케이션들, 서버 등)에 다수의 액션들 또는 입력들을 유발할 수 있다. 일부 예들에서, 제안 이벤트는 채팅 대화의 상이한 채팅 사용자에 의한 "Don't forget Timmy's birthday on Friday"라는 채팅 메시지의 입력이다. 이 채팅 메시지에 대해 결정된 제안된 응답들은, "don't worry"(채팅 메시지)라는 제안된 메시지, 'Timmy's Birthday'를 제1 사용자의 캘린더에 추가하기 위한 제안된 커맨드, Timmy's birthday에 활성화시키기 위한 제1 디바이스에 대한 알람 또는 리마인더를 설정하기 위한 제안된 커맨드, 및 'Buy a present for Timmy's birthday'라는 아이템을 리스트 임베디드 애플리케이션의 쇼핑 리스트에 추가하기 위한 제안된 커맨드를 포함할 수 있다. 이 3개의 제안된 커맨드들은 임베디드 애플리케이션들 및/또는 봇들에서 액션들을 트리거링한다. 그러나, 3개의 제안된 커맨드들은 많은 양의 스크린 실면적(screen real estate)을 점유할 수 있으므로, 디스플레이되는 통합된 제안된 커맨드, 예컨대 "Set reminders for Timmy's birthday"로 결합될 수 있다. 사용자 입력에 의해 선택될 때, 이 통합된 제안된 커맨드는, 3개의 개별 제안된 커맨드들을 포함하는 선택 메뉴가 디스플레이되게 한다. 이 개별 제안된 커맨드들 중 임의의 또는 모든 개별 제안된 커맨드들이 사용자 입력에 의해 선택될 수 있다.
[00347] 일부 구현들에서, 제1 채팅 대화에 대해 결정된 제안된 응답 아이템들은, 사용자 입력에 의해 선택될 때, 예컨대 메시징 애플리케이션(또는 상이한 애플리케이션)에 의해 구현되는 상이한 제2 채팅 대화에 커맨드들 또는 메시지들을 제공할 수 있다. 사용자들은 다수의 채팅 대화들에 동시에 참여할 수 있으며, 하나의 채팅 대화에서 선택된 제안된 응답들은 상이한 채팅 대화에서 액션들을 트리거링할 수 있다. 예컨대, 사용자 1과 사용자 2 간의 제1 채팅 대화에서, 사용자 1은 "User 2, don't forget Timmy's present for his birthday"라는 채팅 메시지를 입력한다. 이 메시지는, 제안된 응답(커맨드)이 사용자 2의 디바이스 상에 생성되게 하는 제안 이벤트일 수 있다. 이 제안된 응답이 사용자 입력에 의해 선택될 때, 사용자 2가 참여하는 제2 채팅 대화에서 임베디드 애플리케이션에 생성된 생일 리스트에 "Buy present for Timmy"라는 아이템이 추가된다. 다른 예에서, 사용자 1 및 사용자 2는, 사용자 1이 제2 그룹 대화에서 플레이하고 있는 게임에 관하여 제1 채팅 대화에서 채팅 메시지들을 입력하고 있으며, 사용자 1에 의해 선택될 때, 특정 채팅 메시지(또는 다른 디스플레이되는 프롬프트)가 제1 채팅 대화에서 출력되게 하는 제안된 응답이 생성된다. 예컨대, 특정 채팅 메시지는 제1 채팅 대화에서 사용자 2가 게임에 합류하도록 초대할 수 있거나, 또는 디스플레이되는 합류 제어를 포함하는, 사용자 2의 디바이스 상에서의 대화형 카드의 디스플레이를 유발할 수 있다.
[00348] 일부 구현들에서, 제안된 응답들은 제1 디바이스에 의해 적어도 한 번 실행된 임베디드 애플리케이션들에 기반하여 맞춤화될 수 있다. 일부 구현들에서, 제안된 응답들은 동일한 채팅 대화에서 제1 디바이스에 의해 적어도 한 번 실행된 임베디드 애플리케이션들에 기반하여 채팅 대화를 위해 맞춤화될 수 있다. 일부 구현들에서, 제안된 응답들은, 하나 이상의 멤버 사용자들의 디바이스에 의해 또는 일부 구현들에서는 하나 이상의 채팅 사용자들의 디바이스에 의해 적어도 한 번 실행된 임베디드 애플리케이션들에 기반하여 맞춤화될 수 있다. 예컨대, 임베디드 애플리케이션에 대한 커맨드 또는 메시지는, 만약 그 임베디드 애플리케이션이 그 디바이스에 의해 이전에 실행되었다면, (제안 이벤트에 대한 응답으로) 제안된 응답으로서 디바이스 상에 제공될 수 있다. 일부 예들에서, 만약 제1 디바이스가 이전에 공유 리스트 임베디드 애플리케이션을 실행했다면, 채팅 사용자가, 이벤트 조직화 또는 추천들과 관련된 특정 아이템들(예컨대, 단어들, 이미지들, 또는 다른 콘텐츠 데이터)을 포함하는 채팅 대화에서 채팅 메시지들을 입력할 때, 제안된 응답이 제1 디바이스 상에서 생성될 수 있으며, 그 제안된 응답은, 그러한 특정 아이템들을 공유 리스트 임베디드 애플리케이션의 기존의 또는 새로운 리스트에 추가하기 위한 커맨드이다. 일부 예들에서, 이전에 공유 리스트 임베디드 애플리케이션을 실행하지 않은 멤버 디바이스들은 공유 리스트 임베디드 애플리케이션과 관련된 제안된 응답을 디스플레이하지 않을 것이다. 일부 구현들에서, 만약 임의의 멤버 디바이스(또는 채팅 디바이스)가 임베디드 애플리케이션을 이전에 실행했다면, 제안된 커맨드 또는 메시지는 하나의, 일부, 또는 모든 멤버 디바이스들(또는 채팅 디바이스들) 상에 제공될 수 있다.
[00349] 일부 구현들에서, 하나 이상의 제안된 응답 아이템들은, 제안된 응답 아이템들을 제공하는 디바이스에 액세스가능한 하나 이상의 봇들로부터 정보를 인보킹(invoking) 또는 요청하는 것에 기반하여 생성될 수 있다. 예컨대, 적절한 제안된 아이템이, 플레이된 미디어 아이템의 콘텐츠와 관련된 특정 정보일 것이라는 것을 만약 제안된 아이템 생성 컴포넌트(예컨대, 제안 서버 또는 시스템의 다른 컴포넌트)가 결정하면, 그 정보를 획득할 수 있는 봇이 결정될 수 있고, 봇에 대한 커맨드 및/또는 요청은 제안된 아이템으로서 생성될 수 있다.
[00350] 일부 구현들에서, 만약 선택된 제안된 응답 아이템이 봇에 대한 커맨드 또는 요청이라면, 봇은 채팅 대화에 추가될 수 있고, 요청된 정보를 획득하여 채팅 인터페이스에서 디스플레이하고, 그리고 사용자들은 추가 메시지들을 봇에 전송할 수 있다.
[00351] 상술된 특징들을 사용하는 다양한 예시적 구현들에서, 채팅 인터페이스는 상술된 바와 같이 메시징 애플리케이션에 의해 생성된 바와 같이 제1 사용자 디바이스에 의해 디스플레이될 수 있다. 채팅 인터페이스는, 네트워크를 통해 채팅 대화에 참여하는 사용자 디바이스들에 의해 제공되는 메시지들을 디스플레이하도록 구성된 채팅 대화에 제공된 하나 이상의 메시지들을 디스플레이하도록 구성된다. 임베디드 인터페이스는 제1 임베디드 애플리케이션에 의해 제공되고 채팅 인터페이스에 디스플레이된다. 제안 이벤트는, 예컨대 채팅 대화에 참여하는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들에서 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터에 기반하여, 제1 임베디드 애플리케이션(또는 메시징 애플리케이션)과 연관하여 발생되는 것으로 결정되며, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들은 제1 사용자 디바이스와 상이하다. 제1 사용자 디바이스(예컨대, 메시징 애플리케이션)는 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하고, 제안된 응답 아이템들은 제1 사용자 디바이스에 의해 디스플레이된다.
[00352] 예컨대, 특정 이벤트는, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 연관된 채팅 인터페이스에 의해 수신된 사용자 입력, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 연관된 임베디드 인터페이스에 의해 수신된 사용자 입력, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들 상에서 실행되는 연관된 임베디드 애플리케이션에서 발생하는 임베디드 애플리케이션 이벤트 등을 포함할 수 있다. 수신된 데이터는, 제1 임베디드 애플리케이션에 의해 플레이되고 있는 미디어 아이템에 디스플레이되는 일정 타입의 콘텐츠 피처, 제1 임베디드 애플리케이션의 게임에서 미리 정의된 목표의 달성, 채팅 대화에 참여하는 수신 사용자 디바이스에 의해 수신된 사용자 입력, 복수의 사용자 디바이스들 중 특정 사용자 디바이스로부터의 임베디드 애플리케이션의 개시 등을 표시할 수 있다. 수신된 데이터는 채팅 메시지들을 포함할 수 있다. 제안 이벤트는, 예컨대 채팅 인터페이스에서 및/또는 임베디드 인터페이스에서 수신된 사용자 입력에 기반하고, 그리고/또는 특정 이벤트가 제1 임베디드 애플리케이션에서 발생했음을 (그리고/또는 상이한 채팅 디바이스 상에서 실행되는 대응하는 임베디드 애플리케이션에서 발생했음을) 표시하는 제1 임베디드 애플리케이션으로부터의 이벤트 정보에 기반할 수 있다. 하나 이상의 제안된 응답 아이템들은, 임베디드 애플리케이션, 메시징 애플리케이션, 및/또는 네트워크를 통해 메시징 애플리케이션과 통신하는 원격 서버에 의해 결정될 수 있다. 일부 예들에서, 임베디드 인터페이스는 채팅 대화에 참여하는 사용자 디바이스들의 서브세트 상에서 출력될 수 있으며, 여기서 사용자 디바이스들은 제1 임베디드 애플리케이션을 수반하는 임베디드 세션에 합류하기 위한 사용자 선택을 수신하였다. 제1 임베디드 애플리케이션은, 제1 임베디드 애플리케이션에 의해 생성된 그리고/또는 네트워크를 통해 서버로부터 수신된 임베디드 출력 데이터를 디스플레이할 수 있다.
[00353] 그러한 구현들에 대한 피처들은, 제안된 응답 아이템들로부터 선택된 제안된 응답 아이템을 선택하는 사용자 입력을 수신하는 것, 제1 사용자 디바이스의 채팅 인터페이스의 채팅 대화에서 선택된 제안된 응답 아이템과 연관된 채팅 메시지를 출력하여, 예컨대 채팅 메시지가 채팅 대화에 참여하는 사용자 디바이스들 중 하나 이상의 다른 사용자 디바이스들에 의해 디스플레이되게 하는 것을 포함할 수 있다. 예컨대, 제안된 응답 아이템들은 제안 이벤트에 대한 사용자 반응들을 표시하는 하나 이상의 채팅 메시지들을 포함할 수 있고, 그리고/또는 임베디드 애플리케이션 및/또는 메시징 애플리케이션에 제공되는 하나 이상의 커맨드들을 포함할 수 있다. 일부 예들에서, 임베디드 애플리케이션들에 대한 커맨드는 임베디드 애플리케이션에 의해 구현되는 게임에서 액션을 수행하기 위한 커맨드, 임베디드 애플리케이션에 의해 미디어 데이터의 플레이에서 플레이백 포지션을 변화시키기 위한 커맨드, 및/또는 임베디드 애플리케이션에 의해 제공되는 공유 오브젝트를 변화시키기 위한 커맨드를 포함할 수 있다. 일부 예들에서, 제안된 커맨드들을 제공하는 제안된 응답 아이템들은, 채팅 인터페이스에서 디스플레이될 때, 제안된 메시지들을 제공하는 제안된 응답 아이템들과 시각적으로 구별된다.
[00354] 추가의 예들에서, 제1 임베디드 애플리케이션은, 채팅 대화에 참여하는 사용자 디바이스들의 서브세트에 의해 디스플레이되는 임베디드 인터페이스에서 비디오 데이터(또는 다른 콘텐츠 데이터)의 디스플레이를 유발하는 미디어 플레이어 애플리케이션일 수 있으며, 여기서 임베디드 인터페이스는 비디오 데이터의 플레이백을 제어하는 사용자 입력을 수신하도록 구성되고, 제안된 응답 아이템들은 비디오 데이터의 플레이백을 조정하도록 동작하는 하나 이상의 제안된 플레이백 커맨드들을 포함할 수 있다. 다른 예에서, 제1 임베디드 애플리케이션은 채팅 대화에 참여하는 사용자 디바이스들의 서브세트에 의해 디스플레이되는 임베디드 인터페이스에서 게임 데이터의 디스플레이를 유발하는 게임 애플리케이션일 수 있으며, 여기서 임베디드 인터페이스는 게임 애플리케이션의 하나 이상의 상태들을 변화시키는 사용자 입력을 수신하도록 구성되고, 제안된 응답 아이템들은 게임 애플리케이션의 적어도 하나의 상태를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함할 수 있다. 다른 예에서, 제1 임베디드 애플리케이션은 채팅 대화에 참여하는 사용자 디바이스들의 서브세트에 의해 디스플레이되는 임베디드 인터페이스에서 공유 콘텐츠 문서(예컨대, 아이템들의 리스트)의 디스플레이를 유발하는 공유 문서 애플리케이션일 수 있으며, 여기서 임베디드 인터페이스는 공유 문서 내의 하나 이상의 아이템들을 변화시키는 사용자 입력을 수신하도록 구성되고, 제안된 응답 아이템들은 공유 문서를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함한다.
[00355] 추가적인 예들에서, 서버 디바이스는 기존의 임베디드 세션과 연관된 임베디드 애플리케이션을 개시한 채팅 디바이스들로부터 네트워크를 통해 합류 표시들(또는 요청들)을 수신할 수 있다. 합류 표시들은 서버 디바이스에 의해, 임베디드 세션 내에 있는 네트워크를 통해 다른 채팅 디바이스들(멤버 디바이스들)에 전송되어, 합류하는 디바이스들을 임베디드 세션의 멤버 디바이스들과 동기화시킨다.
[00356] 본원에서 설명되는 방법들, 블록들, 및 동작들은 도시된 또는 설명된 것과는 상이한 순서로 수행될 수 있고, 그리고/또는 적절한 경우 다른 블록들 또는 동작들과 동시적으로(부분적으로 또는 완전히) 수행될 수 있다. 일부 블록들 또는 동작들은 데이터의 일 부분에 대해 수행될 수 있고, 예컨대 데이터의 다른 부분에 대해 나중에 다시 수행될 수 있다. 설명된 블록들 및 동작들 모두가 다양한 구현들에서 수행될 필요는 없다. 일부 구현들에서, 블록들 및 동작들은 방법들에서 여러 번, 상이한 순서로, 그리고/또는 상이한 시간들에서 수행될 수 있다.
[00357] 일부 구현들에서, 방법들 중 일부 또는 전부는 시스템, 이를테면, 하나 이상의 클라이언트 디바이스들 상에서 구현될 수 있다. 일부 구현들에서, 본원에서 설명되는 하나 이상의 방법들은, 예컨대 서버 시스템 상에서, 그리고/또는 서버 시스템 및 클라이언트 시스템 둘 모두 상에서 구현될 수 있다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들이 방법들의 상이한 블록들, 동작들, 또는 다른 부분들을 수행할 수 있다.
[00358] 다양한 구현들에서, 메시징 애플리케이션, 메시징 애플리케이션과 연관하여 실행중인 임베디드 애플리케이션, 및/또는 메시징 애플리케이션과 통신하는 서버는 설명된 방법들의 하나 이상의 블록들을 수행할 수 있다.
[00359] 도 8a-도 8e는 사용자 디바이스들, 예컨대 클라이언트 디바이스들에 의해 디스플레이되는 예시적 사용자 인터페이스들의 그래픽 표현들이다. 이 예들에서, 메시징 애플리케이션은 사용자들 간의 채팅 대화에 사용되고, 임베디드 미디어 플레이어 애플리케이션은 메시징 애플리케이션과 연관하여 사용된다.
[00360] 도 8a에서, 제1 메시징 애플리케이션의 제1 채팅 인터페이스(800)의 예는 제1 사용자(예컨대, "Sarah C.")에 의해 동작되는 제1 사용자 디바이스 상에 디스플레이된다. 이 예에서, 제1 사용자 및 제1 디바이스의 참여뿐만 아니라 하나 이상의 다른 사용자들 및 사용자 디바이스들의 참여를 포함하는 "HanginOut"라는 채팅 대화가 개시되었다. 채팅 사용자들로부터 채팅 대화로의 채팅 메시지들은 개별 사용자 디바이스들에서 입력되고, 적용가능한 경우 제1 사용자 디바이스에 전송되고, 그리고 메시징 애플리케이션에 의해 채팅 인터페이스에 디스플레이될 수 있다. 예컨대, 제1 사용자로부터의 채팅 메시지들은 (예컨대, 입력 디바이스들, 이를테면, 물리적 키보드, 디스플레이되는 터치스크린 키보드, 보이스 입력 등을 통해) 채팅 인터페이스(800)의 입력 필드(802)에 입력될 수 있다. 채팅 메시지들은 채팅 인터페이스(800)의 메시지 디스플레이 영역(804)에 디스플레이될 수 있다.
[00361] 이 예에서, 제1 사용자는 입력 필드(802)에 커맨드를 입력하며, 여기서, 수신된 커맨드는 입력된 후에 채팅 인터페이스에 메시지(806)로서 디스플레이된다. 이 커맨드는 채팅 대화와 연관되어 디스플레이될 임베디드 인터페이스를 특정한다. 이 예에서, 임베디드 인터페이스는 제1 디바이스 상에서 실행되는 "vidplay"라는 비디오 플레이어인 임베디드 애플리케이션에 의해 제공된다. 커맨드는 또한, 비디오 플레이어 애플리케이션을 이용하여 "MusicVidA"라는 비디오 세그먼트를 플레이할 미디어 아이템을 특정한다. 커맨드는 또한, 비디오의 플레이가 채팅 대화에서 임베디드 세션으로서 공유되게 하기 위한 "share" 파라미터를 갖는다. 일부 구현들에서, 채팅 대화와 연관된 임베디드 세션에서 자신의 출력을 공유함이 없이 임베디드 인터페이스를 디스플레이하도록 미디어 플레이어 애플리케이션이 선택될 수 있다. 일부 구현들에서, 도시된 커맨드를 입력하는 대신에, 제1 사용자는, 미디어 아이템들을 디스플레이하는 메뉴를 브라우징하고 그리고 원하는 미디어 아이템을 선택함으로써 또는 미디어 아이템을 상이한 방식으로 선택함으로써, 미디어 아이템을 플레이하도록 선택할 수 있다. 일부 구현들에서, 제1 사용자는 미디어 아이템의 선택 없이 임베디드 애플리케이션을 실행하고, 그런 다음, 예컨대 임베디드 인터페이스에서 임베디드 애플리케이션의 메뉴를 사용하여 미디어 아이템을 선택할 수 있다.
[00362] 커맨드(806)에 대한 응답으로, 응답 메시지(808)는, 예컨대 봇 또는 메시징 애플리케이션이 채팅 사용자인 것처럼, 봇 또는 메시징 애플리케이션에 의해 채팅 인터페이스에 디스플레이될 수 있다. 응답 메시지(808)는 선택된 임베디드 비디오 플레이어 애플리케이션이 실행되고 있음을 표시한다. 일부 경우들에서 또는 구현들에서, 임베디드 애플리케이션(및/또는 미디어 아이템)의 선택은, 예컨대 제1 디바이스에 연결된 네트워크를 통해 임베디드 애플리케이션 서버로부터, 임베디드 애플리케이션이 백그라운드에서 제1 디바이스에 다운로드되게 한다.
[00363] 임베디드 애플리케이션은 제1 디바이스 상에서 실행되고, 임베디드 인터페이스(810)를 디스플레이한다. 이 예에서, 임베디드 인터페이스(810)는 채팅 인터페이스(800) 내에, 예컨대 채팅 인터페이스의 메시지 디스플레이 영역(804) 내에 디스플레이된다. 일부 구현들에서, 임베디드 인터페이스(810)는, 예컨대 원격 세션 서버 상에서 또는 네트워크를 통해 연결된 다른 디바이스 상에서 적어도 부분적으로 실행되는 임베디드 애플리케이션으로부터, 네트워크를 통해 제1 디바이스에 의해 수신된 데이터에 기반하여 디스플레이된다. 이 예에서, 메시지 디스플레이 영역(804)이 적어도 부분적으로 디스플레이되도록 임베디드 인터페이스(810)가 디스플레이되어, 예컨대, 메시지 디스플레이 영역(804) 내의 하나 이상의 채팅 메시지들이 임베디드 인터페이스(810)에 동시적으로 디스플레이되도록 허용한다.
[00364] 임베디드 인터페이스(810)는, 미디어 아이템의 콘텐츠 데이터(예컨대, 비디오 데이터, 이미지 데이터 등)를 디스플레이하기 위한 디스플레이 영역(812), 타임라인을 따라 미디어 아이템의 플레이백 포지션을 변화시키기 위해 제1 사용자가 사용자 입력을 제공하게 허용하는 탐색 제어부(814)(예컨대, 제어부를 좌측 또는 우측으로 이동시킴), 및 사용자 입력이 임베디드 인터페이스(810)를 제1 디바이스의 전체 스크린(또는 다른 디스플레이 영역)으로 넓히게 허용하는 풀 스크린 제어부(816)를 포함한다. 사용자 식별자(818)는, 채팅의 어느 사용자가 인터페이스(810)와 연관된 임베디드 세션을 개시하였는지를 표시하기 위해 디스플레이될 수 있다. 사용자 식별자(818)는 식별 이미지로서 도시되지만, 또한 또는 대안적으로 텍스트(예컨대, 이름) 등일 수 있다. 리스트(820)는 디스플레이 영역(812)에서 현재 플레이되고 있는 미디어 아이템, 및 미디어 아이템이 완료된 후에 플레이하기 위해 큐잉된 다른 미디어 아이템들을 도시할 수 있다. 닫기 제어부(822)는, 사용자 입력이 임베디드 인터페이스(810)를 닫고 그리고 임베디드 애플리케이션을 닫아서, 예컨대, 그것이 제1 디바이스 상에서 더 이상 실행되지 않게 하도록 허용한다.
[00365] 일부 구현들에서, 하나 이상의 임베디드 애플리케이션 표시자들(824)은, 어느 임베디드 세션들이 현재 활성인지를 표시하기 위해 채팅 인터페이스에 디스플레이될 수 있다. 일부 구현들은 또한, 제1 사용자가 그 임베디드 세션의 멤버 사용자였던 마지막 시간 이후, 임베디드 세션에 대한 업데이트들(예컨대, 대응하는 임베디드 인터페이스에 대한 사용자 입력)을 표시하기 위해 채팅 인터페이스에 표시자를 디스플레이할 수 있다. 예컨대, 그러한 표시자는 임베디드 애플리케이션 표시자(824)와 연관하여(예컨대, 인접하거나 또는 오버랩하여) 디스플레이되는 표시자(826)일 수 있다.
[00366] 도 8b에서, 제2 메시징 애플리케이션의 제2 채팅 인터페이스(840)의 예는 제2 사용자(예컨대, "Emily D.")에 의해 동작되는 제2 사용자 디바이스 상에 디스플레이된다. 이 예에서, 제2 사용자는, 도 8a에 대해 설명된 바와 같이 제1 사용자 및 제1 디바이스를 포함하는 "HanginOut"라는 채팅 대화의 참여자이다. 채팅 메시지들은, 예컨대 입력 필드(842) 및 입력 디바이스(예컨대, 온-스크린 키보드 등)를 통해 채팅 인터페이스(840)에서 제2 사용자에 의해 입력될 수 있다. 이 예에서, 제2 사용자는 채팅 대화에 메시지(844)를 입력했으며, 이는 채팅 인터페이스(840)의 디스플레이 영역(848)에 디스플레이된다. 메시지(844)에 대한 응답으로, 제1 사용자는, 채팅 인터페이스(840)의 디스플레이 영역(848)에 디스플레이되는 바와 같이, 채팅 대화에 메시지(846)를 입력했다.
[00367] 또한, 임베디드 세션 통지(850)가 채팅 인터페이스(840)에 디스플레이된다. 통지(850)는 임베디드 세션이 활성임을 표시하며, 이는, 이 예에서, 도 8a의 제1 사용자에 의해 실행된 임베디드 비디오 플레이어 애플리케이션을 활용한다. 통지(850)는, 임베디드 세션이 개시되었고 활성이라는 정보를 제2 디바이스가 세션 서버 또는 채팅 디바이스로부터 수신한 후에, 채팅 인터페이스(840)에 디스플레이될 수 있다. 이 예에서, 통지(850)는 채팅 인터페이스(840)의 디스플레이 영역(848) 아래에 디스플레이되거나, 또는 다른 구현들에서는 채팅 인터페이스(840)의 다른 영역들(또는 채팅 인터페이스(840) 외부)에 디스플레이될 수 있다.
[00368] 이 예에서, 통지(850)는, 연관된 공유 임베디드 세션을 개시하기 위해, 도 8a에서 제1 사용자에 의해 실행된 임베디드 비디오 플레이어 애플리케이션의 지정(852)(또는 아이콘 또는 심볼)을 포함한다. 통지(850)는 또한, 임베디드 세션에서 플레이되고 있는 미디어 아이템의 이름(854)을 포함한다. 통지(850)는 또한, 임베디드 세션에 합류한, 예컨대, 현재 임베디드 세션의 멤버 사용자들인 채팅 사용자들의 리스트(856)를 포함한다. 통지(850)는 또한, 만약 선택되면, 제2 사용자 및 제2 디바이스가 임베디드 세션에 합류하게 하기 위한 사용자 입력을 수신하는 합류 제어부(858)를 포함한다. 통지(850)는 또한, 통지(850)가 채팅 인터페이스(840)로부터 제거되게 하기 위한 사용자 입력을 수신하는 닫기 제어부(860)를 포함한다.
[00369] 도 8c에서, 도 8b의 채팅 인터페이스(840)는, 제2 사용자가 도 8b의 통지(850)에서 표시된 임베디드 세션에 합류하기로 선택한 후의 예시적 업데이트와 함께 도시된다. 예컨대, 제2 사용자는 도 8b의 합류 제어부(858)를 선택했을 수 있다. 도 8c에서, 임베디드 인터페이스(870)가 채팅 인터페이스(840)에 디스플레이되었다. 예컨대, 임베디드 인터페이스(870)는, 제2 사용자가 임베디드 세션에 합류하는 것에 대한 응답으로 제2 디바이스에 의해 다운로드되고(일부 경우들에서) 그리고 실행된 제2 임베디드 애플리케이션에 의해 제공될 수 있다. 다른 구현들에서, 임베디드 인터페이스(870)는, 예컨대 세션 서버 또는 다른 디바이스 상에서 적어도 부분적으로 실행되는 임베디드 애플리케이션으로부터 네트워크를 통해 수신된 데이터에 기반하여 디스플레이된다. 제2 임베디드 애플리케이션은, 도 8a의 제1 디바이스 상에 임베디드 인터페이스(870)를 제공하는 비디오 플레이어 애플리케이션에 대응한다. 이 예에서, 메시지 디스플레이 영역(848)이 적어도 부분적으로 디스플레이되도록 임베디드 인터페이스(870)가 디스플레이되어서, 예컨대, 임베디드 인터페이스(870)의 디스플레이 동안에 메시지 디스플레이 영역(848)에 하나 이상의 채팅 메시지들이 디스플레이되도록 허용한다.
[00370] 제2 사용자 및 제2 디바이스가 임베디드 세션에 합류한 후에, 임베디드 인터페이스(870)에 디스플레이되는 미디어 아이템의 플레이백 포지션은, 예컨대 도 8a의 제1 디바이스의 임베디드 인터페이스(810) 상에 도시된 바와 같이, 임베디드 세션의 현재 플레이백 포지션과 동기화된다. 따라서, 제2 사용자는, 미디어 아이템의 시작 후에 플레이백 포지션에서 플레이 미디어 아이템을 뷰잉하기 시작하고, 임베디드 세션의 다른 멤버 사용자들과 뷰잉 경험을 공유한다. 임베디드 인터페이스(870)는 임베디드 인터페이스(810)와 유사한 피처들, 예컨대 디스플레이 영역(872), 타임라인을 따라 미디어 아이템의 플레이백 포지션을 변화시키기 위해 제2 사용자가 사용자 입력을 제공하게 허용하는 탐색 제어부(874), 풀 스크린 제어부(876), 인터페이스(870)와 연관된 임베디드 세션을 개시한 사용자를 표시하는 사용자 식별자(878), 및 닫기 제어부(882)를 포함한다. 리스트(880)는 디스플레이 영역(872)에서 현재 플레이되는 미디어 아이템(884)뿐만 아니라 미디어 아이템(884)을 플레이하도록 지시한 사용자의 식별자를 도시한다. 이 예에서, 리스트(880)는 또한, 미디어 아이템(884)이 플레이하는 것을 완료한 후에 플레이를 위해 큐잉된 제2 미디어 아이템(886)을 포함하고, 미디어 아이템(886)을 플레이하도록 명령한 사용자의 식별자를 포함한다.
[00371] 이 예에서, 제2 사용자는, 임베디드 세션에서 플레이백 기능들에 대한 제어가 허용되었고, 제2 사용자는 미디어 아이템의 현재 플레이백 포지션을, 예컨대 현재 포지션 앞의 또는 현재 포지션 뒤의 포지션으로 변화시키기 위해 탐색 제어부(874)를 조작할 수 있다. 그러한 변화는 임베디드 세션의 멤버 디바이스들에 의해 디스플레이된 모든 임베디드 인터페이스들에 부과되어서, 미디어 아이템 뷰잉이 멤버 디바이스들 사이에서 동기화된다. 다른 경우들에서 또는 구현들에서, 제2 사용자는 (예컨대, 임베디드 세션을 활성화한 제1 사용자로부터) 허용 또는 특권들을 제공받지 못했을 수 있고, 미디어 아이템의 플레이백 포지션을 조정할 수 없을 것이다.
[00372] 도 8d에서, 도 8c의 채팅 인터페이스(840)는, 제2 사용자가 채팅 인터페이스의 채팅 대화에 새로운 메시지를 입력하는 것을 선택한 후의 예시적 업데이트와 함께 도시된다. 예컨대, 제2 사용자는 임베디드 인터페이스(870)에서의 미디어 아이템의 플레이백 동안에 채팅 인터페이스(840)의 입력 필드(842)를 선택했을 수 있다. 일부 구현들에서, 이는, 새로운 메시지, 이를테면, 텍스트(892)를 입력하는 데 사용될 수 있는 디스플레이된 키보드(890)가 채팅 인터페이스(840) 내에 또는 채팅 인터페이스(840)에 인접하게 디스플레이되게 할 수 있다(예컨대, 그에 따라, 메시지 디스플레이 영역(848)의 적어도 일부가 여전히 디스플레이됨). 텍스트(892)는, (예컨대, 키보드(890)의 리턴 제어부를 통해) 텍스트(892)가 입력될 때 채팅 메시지(894)로서 디스플레이될 수 있다. 일부 구현들은 마지막 채팅 메시지(846)에 대한 응답들로서 메시지 제안들(896)을 제공할 수 있고, 메시지 제안들(896) 중 임의의 메시지 제안들(896)은, 선택된 메시지 제안(896)을 갖는 채팅 메시지를 메시지 디스플레이 영역(848)에 그리고 채팅 대화에 제공하기 위해 사용자 입력에 의해 선택될 수 있다.
[00373] 일부 구현들에서, 임베디드 인터페이스(870)는 채팅 대화의 채팅 메시지들 및 키보드(890) 둘 모두에 대한 디스플레이 공간을 허용하도록 사이즈가 다시 정해질 수 있다. 이 예에서, 임베디드 인터페이스(870)는 도시된 바와 같이 사이즈가 감소되었다. 임베디드 인터페이스(870)와 함께 채팅 메시지(846) 및 새로운 채팅 메시지(894)가 디스플레이될 수 있다.
[00374] 도 8e에서, 채팅 인터페이스(840)는 도 8c에서와 유사하게 도시되며, 예시적 사용자 코멘트가 임베디드 인터페이스(870)에 디스플레이되고 플레이 미디어 아이템과 연관된다. 임베디드 인터페이스(870)에 디스플레이되는 미디어 아이템의 현재 플레이백 포지션에서, 사용자 코멘트(897)가 디스플레이된다. 다양한 구현들에서, 디스플레이되는 사용자 코멘트(897)는 코멘트뿐만 아니라 코멘트를 입력한 사용자의 식별을 포함할 수 있다.
[00375] 일부 구현들에서 또는 경우들에서, 사용자 코멘트(897)의 정보는, 임베디드 세션에서 현재 미디어 아이템을 뷰잉하고 있는 멤버 사용자에 의해 입력된다. 예컨대, 사용자 코멘트(897)는, 사용자에 의해 포인팅된 임베디드 인터페이스의 디스플레이 영역의 로케이션에서 미리결정된 시간량 동안 디스플레이될 수 있고, 그런 다음 디스플레이로부터 제거될 수 있다. 일부 경우들에서, 사용자 코멘트(897)는, 채팅 사용자가 이전의 경우와 동일한 미디어 아이템을 뷰잉하면서 채팅 대화에 참여하는 동안(이는, 예컨대, 진행중인 채팅 그룹일 수 있음), 채팅 사용자에 의해 이전에 입력되었을 수 있다. 예컨대, 미디어 아이템은, 디스플레이 영역의 특정 플레이백 포지션 및 로케이션에서 사용자 코멘트를 입력한 채팅 사용자에 의해 채팅 대화에서 이전의 임베디드 세션에서 플레이되었을 수 있다. 사용자 코멘트는, 채팅 대화, 미디어 아이템, 및 플레이백 포지션과 연관하여 보관되었다. 미디어 아이템이 현재 임베디드 세션에 디스플레이될 때, 사용자 코멘트(897)는, 플레이백 포지션이 사용자 코멘트가 이전에 입력되었던 곳과 동일한 포지션에(또는 근처에, 예컨대 그것의 임계 시간 내에) 있을 때 디스플레이된다.
[00376] 일부 구현들에서, 하나 이상의 제안된 응답 아이템들(898)은 채팅 인터페이스(840) 및/또는 임베디드 인터페이스(870)에 디스플레이될 수 있다. 이 예에서, 제안된 응답 아이템(898)은 임베디드 인터페이스에서 사용자 코멘트(897)의 디스플레이에 있는 검출된 제안 이벤트에 대한 응답으로 디스플레이된다. 이 예에서, 제안된 커맨드는 (예컨대, 머신-학습 모델 또는 다른 기법에 의해 생성된 바와 같이) 임베디드 애플리케이션에 의해 결정되고, 채팅 인터페이스(840)에서의 디스플레이를 위해 메시징 애플리케이션에 제공된다. 제안된 커맨드는, 만약 실행되는 경우, 임베디드 애플리케이션이 미디어 아이템의 비디오 플레이백을 플레이 비디오에 대해 저장된 다음 사용자 코멘트로 스킵하게 할 것이다. 사용자가 제안된 커맨드를 선택하는 경우, 커맨드는 임베디드 애플리케이션으로 전송되고 임베디드 인터페이스(870)에서의 플레이백은 다음 사용자 코멘트에서의 플레이백 포지션으로 변경된다. 또한, 제안된 메시지는, 이 예에서, 시스템(예컨대, 유사한 코멘트들에 샘플 사용자 메시지를 제공하는 트레이닝 데이터에 기반한 머신 학습 모델)에 의해 결정된 바와 같은 사용자 코멘트(897)에 대한 반응으로 결정되었다. 다른 제안된 메시지들은 임베디드 세션에서의 임의의 멤버 사용자 액션들, 채팅 인터페이스의 하나 이상의 채팅 메시지들 등에 대한 응답으로 결정될 수 있다. 사용자가 제안된 메시지를 선택하는 경우, 메시지는 채팅 인터페이스(840)에서, 예컨대 메시지 디스플레이 영역(848)에서 채팅 메시지로서 디스플레이된다. 일부 구현들에서, 선택된 제안된 메시지는 사용자 코멘트(897)와 유사한 사용자 코멘트로서 미디어 아이템에 추가될 수 있다. 예컨대, 선택된 메시지는 디폴트 포지션으로서 임베디드 인터페이스(870) 및/또는 기존 사용자 코멘트(897)에 인접한(예컨대, 아래의) 디스플레이 영역(872) 내에 포지셔닝될 수 있다. 일부 구현들에서, 제안된 커맨드들 및/또는 제안된 메시지들과 같은 제안된 응답 아이템들은 예컨대, 도 8d에 도시된 메시지 제안들(896)과 유사하게, 디스플레이된 키보드 또는 다른 입력 컨트롤들과 연관하여 디스플레이될 수 있다.
[00377] 도 9a 내지 도 9c는 사용자 디바이스들에 의해 디스플레이되는 추가적인 예시적 사용자 인터페이스들의 그래픽 표현들이다. 이러한 예들에서, 메시징 애플리케이션은 사용자들 간의 대화에 사용되고 임베디드 게임 애플리케이션은 메시징 애플리케이션과 연관하여 사용된다.
[00378] 도 9a에서, 제1 메시징 애플리케이션의 제1 채팅 인터페이스(900)의 예는 제1 사용자(예컨대, "Sarah C.")에 의해 동작되는 제1 사용자 디바이스 상에 디스플레이된다. 이 예에서, 도 8a에 대해 설명된 것과 유사하게, 제1 사용자 및 제1 디바이스의 참여를 포함하는 채팅 대화 "HanginOut"이 개시되었다. 제1 사용자로부터의 채팅 메시지들은 (예컨대, 위의 키보드(890)와 유사한 입력 디바이스 또는 키보드를 사용하여) 채팅 인터페이스(900)의 입력 필드(902)에 입력될 수 있고 채팅 메시지들은 채팅 인터페이스(900)의 메시지 디스플레이 영역(904)에 디스플레이될 수 있다.
[00379] 이 예에서, 제1 사용자는 입력 필드(902)에 커맨드를 이전에 입력하였고, 수신된 커맨드는 입력된 후에 채팅 인터페이스에서 메시지(906)로서 디스플레이된다. 이 커맨드는 채팅 대화와 연관하여 디스플레이될 임베디드 인터페이스를 특정한다. 이 예에서, 임베디드 인터페이스는 일부 구현들에서 제1 디바이스 상에서 실행될 수 있는 게임 "Toads"인 임베디드 애플리케이션에 의해 제공된다. 이 커맨드는 또한, 게임이 임베디드 세션으로서 채팅 대화에서 공유되게 하기 위해 "공유" 파라미터를 가질 수 있다. 일부 구현들에서, 게임 애플리케이션은 채팅 대화와 연관된 임베디드 세션에서 그의 출력을 공유하지 않고 임베디드 인터페이스를 디스플레이하도록 선택될 수 있다. 다른 구현들에서, 제1 사용자는 메뉴, 리스트 등으로부터 임베디드 게임 애플리케이션을 선택함으로써 임베디드 게임 애플리케이션을 개시하도록 선택할 수 있다.
[00380] 커맨드(906)에 대한 응답으로, 예컨대, 봇 또는 메시징 애플리케이션이 채팅 사용자인 것처럼, 봇 또는 메시징 애플리케이션에 의해 채팅 인터페이스에 응답 메시지(908)가 디스플레이될 수 있다. 응답 메시지(908)는 선택된 임베디드 게임 애플리케이션이 실행되고 있음을 표시한다. 일부 경우들 또는 구현들에서, 임베디드 게임 애플리케이션의 선택은 임베디드 게임 애플리케이션이, 예컨대 제1 디바이스에 연결된 네트워크를 통해 임베디드 애플리케이션 서버로부터 백그라운드에서 제1 디바이스로 다운로드되게 한다.
[00381] 임베디드 애플리케이션(또는 그 일부)이 제1 디바이스에 저장된 후, 임베디드 애플리케이션은 임베디드 인터페이스(910)를 실행하고 디스플레이한다. 이 예에서, 임베디드 인터페이스(910)는 채팅 인터페이스(900) 내에, 예컨대, 채팅 인터페이스의 메시지 디스플레이 영역(904) 내에 디스플레이되어서 메시지 디스플레이 영역(904)의 일부가 디스플레이된 채로 유지되게 한다. 일부 구현들에서, 임베디드 인터페이스(910)는 예컨대, 원격 세션 서버 또는 네트워크를 통해 연결된 다른 디바이스 상에서 실행되는 임베디드 애플리케이션으로부터, 네트워크를 통해 제1 디바이스에 의해 수신된 데이터에 기반하여 디스플레이된다.
[00382] 임베디드 인터페이스(910)는 게임의 출력을 디스플레이하기 위한 디스플레이 영역(912)을 포함한다. 디스플레이 영역(912)은 이 예에서, 사용자 입력, 예컨대, 게임 내의 커맨드들 또는 액션들로서 디스플레이 영역 내의 로케이션들의 선택을 수신할 수 있다. 풀 스크린 제어부(914)는 사용자 입력이 임베디드 인터페이스(910)를 제1 디바이스의 전체 스크린(또는 다른 디스플레이 영역)으로 확대하게 허용한다. 게임의 플레이어로서 채팅 인터페이스의 제1 사용자를 표시하기 위해 사용자 식별자(916)가 디스플레이될 수 있다. 일부 구현들에서, 식별된 사용자의 현재 스코어를 표시하기 위해 사용자 식별자(916) 옆에(또는 그렇지 않으면 사용자 식별자(916)와 연관됨) 게임 스코어(918)가 디스플레이될 수 있다. 닫기 제어부(920)는 예컨대, 사용자 입력이 임베디드 인터페이스(910)를 닫고 임베디드 게임 애플리케이션을 닫게 허용하여서, 그것이 더 이상 제1 디바이스 상에서 실행되지 않게 한다.
[00383] 일부 구현들에서, 하나 이상의 임베디드 애플리케이션 표시자들(924)은 상술된 것과 유사하게 어느 임베디드 세션들이 현재 활성인지를 표시하기 위해 채팅 인터페이스에 디스플레이될 수 있다.
[00384] 도 9b에서, 제2 메시징 애플리케이션의 제2 채팅 인터페이스(940)의 예는 제2 사용자(예컨대, "Emily D.")에 의해 동작되는 제2 사용자 디바이스 상에 디스플레이된다. 이 예에서, 제2 사용자는 도 9a에 설명된 바와 같이 제1 사용자 및 제1 디바이스를 포함하는 채팅 대화 "HanginOut"의 참여자이다. 채팅 메시지들은 채팅 인터페이스(940)에서 제2 사용자에 의해 예컨대, 입력 필드(942)를 통해 입력될 수 있다. 이 예에서, 제2 사용자는 채팅 대화에 메시지(944)를 입력하였으며, 이는 채팅 인터페이스(940)의 메시지 디스플레이 영역(948)에 디스플레이된다. 이에 응답하여, 제1 사용자는 채팅 인터페이스(940)의 메시지 디스플레이 영역(948)에 디스플레이되는 바와 같이, 채팅 대화에 메시지(946)를 입력하였다.
[00385] 임베디드 세션 통지(950)가 채팅 인터페이스(940)에 디스플레이된다. 통지(950)는 임베디드 세션이 개시되고 그리고/또는 활성임을 표시하며, 이는 이 예에서, 도 9a의 제1 사용자에 의해 실행된 임베디드 게임 애플리케이션을 활용한다. 통지(950)는 제2 디바이스가 세션 서버 또는 채팅 디바이스로부터, 임베디드 세션이 개시되었고 활성이라는 정보를 수신 후에 채팅 인터페이스(940)에 디스플레이될 수 있다. 통지(950)는 다양한 구현들에서 채팅 인터페이스(940)의 디스플레이 영역(948) 또는 다른 영역에 또는 채팅 인터페이스(940) 외부에 디스플레이될 수 있다.
[00386] 이 예에서, 통지(950)는 연관된 공유 임베디드 세션을 개시하기 위해 도 9a의 제1 사용자에 의해 실행된 임베디드 게임 애플리케이션의 지정(952)(예컨대, 아이콘 또는 심볼)을 포함한다. 통지(950)는 또한 임베디드 세션에 합류한(예컨대, 임베디드 세션의 현재 멤버인) 채팅 사용자들의 리스트(956)를 포함한다. 통지(950)는 또한 선택된 경우, 제2 사용자 및 제2 디바이스가 임베디드 세션에 합류하게 하는 사용자 입력을 수신하는 합류 제어부(958)를 포함한다. 통지(950)는 또한 통지(950)가 채팅 인터페이스(940)로부터 제거되게 하는 사용자 입력을 수신하는 닫기 제어부(960)를 포함한다.
[00387] 도 9c에서, 도 9b의 채팅 인터페이스(940)는, 제2 사용자가 예컨대, 도 9b의 합류 제어부(958)를 선택함으로써, 도 9b의 통지(950)에 표시된 임베디드 세션에 합류하기로 선택한 후의 예시적인 업데이트와 함께 도시된다. 도 9c에서, 임베디드 인터페이스(970)는 메시지 디스플레이 영역(948)(및 하나 이상의 채팅 메시지들)의 일부가 디스플레이된 채로 유지되도록 채팅 인터페이스(940)에 디스플레이된다. 예컨대, 임베디드 인터페이스(970)는 제2 사용자가 임베디드 세션에 합류하는 것에 대한 응답으로 제2 디바이스에 의해 (일부 경우들에서) 다운로드되고 실행되는 임베디드 게임 애플리케이션에 의해 제공될 수 있다. 다른 구현들에서, 임베디드 인터페이스(970)는 예컨대, 세션 서버 또는 다른 디바이스 상에서 실행되는 임베디드 애플리케이션으로부터, 네트워크를 통해 수신된 데이터에 기반하여 디스플레이된다. 임베디드 게임 애플리케이션은 도 9a의 제1 디바이스 상에 임베디드 인터페이스(910)를 제공하는 임베디드 게임 애플리케이션에 대응한다.
[00388] 제2 사용자 및 제2 디바이스가 임베디드 세션에 합류한 후, 임베디드 인터페이스(970)의 게임 상태들은 대응하는 임베디드 게임 애플리케이션들 상에 구현된 바와 같은 임베디드 세션의 현재 게임 상태와 동기화된다. 일부 구현들에서, 세션 서버 또는 다른 서버는, 계속해서, 멤버 디바이스들로부터 게임 상태들을 수신하고 멤버 디바이스들에 동기화 업데이트들을 전송함으로써 게임 동안 멤버 디바이스들 상의 게임 상태들을 동기화할 수 있다. 일부 구현들은 멤버 디바이스들 간에 피어-투-피어 동기화를 제공할 수 있다.
[00389] 임베디드 인터페이스(970)는 게임의 출력을 디스플레이하기 위한 디스플레이 영역(972)을 포함하고 사용자 입력을 수신할 수 있는, 도 9a의 임베디드 인터페이스(910)와 유사한 피처들을 포함한다. 풀 스크린 제어부(974)는 사용자 입력이 임베디드 인터페이스(970)를 제1 디바이스의 전체 스크린(또는 다른 디스플레이 영역)으로 확대하게 허용한다. 닫기 제어부(976)는 예컨대, 사용자 입력이 임베디드 인터페이스(970)를 닫고 임베디드 게임 애플리케이션을 닫게 허용하여서, 그것이 더 이상 제2 디바이스 상에서 실행되지 않게 한다. 게임의 플레이어로서 채팅 인터페이스(940)의 제2 사용자를 표시하기 위해 사용자 식별자(978)가 디스플레이될 수 있다. 일부 구현들에서, 사용자의 현재 스코어를 표시하기 위해 사용자 식별자(978) 옆에 게임 스코어(980)가 디스플레이될 수 있다. 이 예에서, 임베디드 게임 세션에 참여하는 다른 플레이어 사용자들 및 공유된 게임에서의 그의 현재 스코어들을 표시하기 위해 다른 사용자 식별자들(982) 및 연관된 게임 스코어들(984)이 디스플레이된다. 일부 구현들에서, 게임에서 관찰자 역할 또는 심판 역할을 갖는 멤버 사용자들이 디스플레이되며 플레이어 역할들을 갖는 사용자들로부터 디스플레이에서 시각적으로 구별될 수 있다.
[00390] 일부 구현들에서, 임베디드 세션에서 제공되는 게임은, 플레이어 사용자들이 게임 상태들을 변화시키기 위해 언제든지 게임에 사용자 입력(예컨대, 게임 액션들)을 제공할 수 있는 실시간 게임일 수 있고, 임베디드 게임 애플리케이션은 예컨대, 자체 이벤트들에 기반하여 그리고/또는 사용자 입력에 대한 응답으로 실시간으로 지속적으로 출력을 제공할 수 있다. 일부 구현들은, 예컨대 게임이 게임 상태 및/또는 출력을 변화시키기 위해 하나의 플레이어(또는 다수의 플레이어들)로부터의 입력을 기다리고 게임이 동일하거나 상이한 플레이어(들)로부터의 다음 입력을 기다리는 등을 하는, 비동기식 또는 턴제-기반인 임베디드 게임 애플리케이션을 제공할 수 있다. 게임 출력은 관찰자 사용자들의 임베디드 인터페이스들에 디스플레이되며, 여기서 관찰자 사용자들이 게임에 제공할 수 있는 입력은 보다 제한되는데, 예컨대, 게임 상태들에 영향을 미치지 않는다.
[00391] 게임으로부터의 출력은 채팅 인터페이스(940)의 메시지 디스플레이 영역(948)에 디스플레이된 메시지로서 그리고/또는 임베디드 인터페이스(970)에 디스플레이될 수 있다. 예컨대, 게임 오브젝트들로부터의 메시지들은 도 6과 관련하여 상술된 바와 같이 채팅 메시지들로서 메시지 디스플레이 영역(948)에 디스플레이될 수 있다.
[00392] 일부 구현들에서, 하나 이상의 임베디드 애플리케이션 표시자들(986)은 상술된 것과 유사하게 어느 임베디드 세션들이 현재 활성인지를 표시하기 위해 채팅 인터페이스에 디스플레이될 수 있다.
[00393] 도 10a 내지 도 10d는 사용자 디바이스들에 의해 디스플레이되는 추가적인 예시적 사용자 인터페이스들의 그래픽 표현들이다. 이들 예들에서, 메시징 애플리케이션은 사용자들 간의 채팅 대화에 사용되고, 임베디드 애플리케이션은 아이템들의 공유 리스트의 형태의 공유 콘텐츠 문서를 제공하는데 사용된다.
[00394] 도 10a에서, 메시징 애플리케이션의 채팅 인터페이스(1000)의 예는 제1 사용자(예컨대, "Emily D.")에 의해 동작되는 제1 사용자 디바이스 상에 디스플레이된다. 이 예에서, 도 8a 및 도 9a에 대해 설명된 것과 유사하게, 제1 사용자 및 제1 디바이스의 참여를 포함하는 채팅 대화 "HanginOut"이 개시되었다. 제1 사용자로부터의 채팅 메시지들은 채팅 인터페이스(1000)의 입력 필드(1002)에 입력될 수 있고 채팅 메시지들은 채팅 인터페이스(1000)의 메시지 디스플레이 영역(1004)에 디스플레이될 수 있다.
[00395] 이 예에서, 제1 사용자와 상이한 3명의 채팅 사용자들로부터 입력된 메시지들(1006)에 의해 도시되고 디스플레이 영역(1004)에 디스플레이되는 바와 같이, 몇 명의 채팅 사용자들은 채팅 대화에서 메시지들을 입력한다. 채팅 메시지들(1008)은 제1 사용자에 의해 입력되었고 디스플레이 영역(1004)에서 채팅 인터페이스에 디스플레이되었다. 이 예에서, 다른 사용자들로부터의 채팅 메시지들은 그래픽 사용자 식별자에 의해 식별되고, 제1 사용자에 의해 입력된 채팅 메시지들은 디스플레이 스크린에 우측-정렬되게 디스플레이된다.
[00396] 임베디드 세션 통지(1020)가 채팅 인터페이스(1000)에 디스플레이될 수 있다. 통지(1020)는 도 8 및 도 9에 대해 상술된 통지들(858 및 958)과 유사하게, 임베디드 세션이 활성임을 표시한다. 이 예에서, 통지(1020)는 사용자 "Pamela"가, 실행할 임베디드 리스트 애플리케이션을 선택하고 임베디드 리스트 애플리케이션에 의해 제공된 리스트를 공유하기로 선택함으로써 임베디드 세션을 개시한 후에 디스플레이된다. 통지(1020)는 제1 디바이스가 세션 서버 또는 채팅 디바이스로부터, 임베디드 세션이 개시되었고 활성이라는 정보를 수신 후에 채팅 인터페이스(1000)에 디스플레이될 수 있다. 통지(1020)는 다양한 구현들에서 채팅 인터페이스(1000)의 디스플레이 영역(1004) 또는 다른 영역에 또는 채팅 인터페이스(1000) 외부에 디스플레이될 수 있다.
[00397] 이 예에서, 통지(1020)는 임베디드 세션에서 사용된 임베디드 리스트 애플리케이션을 식별하는 지정(1024)(예컨대, 아이콘 또는 심볼)을 포함한다. 통지(1020)는 또한 임베디드 세션에서 제공된 리스트에 현재 사용자-응답 아이템의 양(1026)을 포함한다. 통지(1020)는 또한 임베디드 세션에 합류한(예컨대, 임베디드 세션의 현재 멤버인) 채팅 사용자들의 리스트(1028)를 포함한다. 통지(1020)는 또한 선택된 경우, 제1 사용자가 임베디드 세션에 합류하게 허용하는 합류 제어부(1030), 및 선택된 경우, 통지(1020)가 채팅 인터페이스(1000)로부터 제거되게 하는 닫기 제어부(1032)를 포함한다.
[00398] 도 10a의 예와 같은 일부 구현들에서, 통지(1022)는 사용자가 임베디드 세션을 개시했음을 표시하기 위해 채팅 인터페이스에, 예컨대, 디스플레이 영역(1004)에 디스플레이될 수 있다. 통지(1022)는 이 예에서 리스트에서의 아이템들의 수와 같이 멤버 사용자들에 의해 기여되거나 선택된, 임베디드 세션에 제공된 데이터의 설명을 포함할 수 있다.
[00399] 도 10b에서, 도 10a의 채팅 인터페이스(1000)는, 제1 사용자가 예컨대, 도 10a의 통지(1020)에 표시된 임베디드 세션에 합류하기로 선택한 후의 예시적인 업데이트와 함께 도시된다. 예컨대, 제1 사용자는 도 10a의 합류 제어부(1030)를 선택했을 수 있다. 도 10b에서, 임베디드 인터페이스(1040)는 메시지 디스플레이 영역(1004)(및 하나 이상의 채팅 메시지들)의 일부가 디스플레이된 채로 유지되도록 채팅 인터페이스(1000)에 디스플레이된다. 예컨대, 임베디드 인터페이스(1040)는 상술된 바와 같이 유사하게 제1 사용자가 임베디드 세션에 합류하는 것에 대한 응답으로 제1 디바이스에 의해 (일부 경우들에서) 다운로드되고 실행되는 임베디드 애플리케이션에 의해 제공될 수 있다. 다른 구현들에서, 임베디드 인터페이스(1040)는 예컨대, 세션 서버 또는 다른 디바이스 상에서 실행되는 임베디드 애플리케이션으로부터, 네트워크를 통해 수신된 데이터에 기반하여 디스플레이된다. 임베디드 애플리케이션은 도 10a의 통지(1020)에 표시된 임베디드 세션을 생성하기 위해 사용자 Pamela에 의해 개시된 동일한 리스트 애플리케이션 이다.
[00400] 이 예에서, 임베디드 인터페이스(1040)는 여기에서 디폴트로, 채팅 대화 이름에 기반하여 공유 리스트의 이름(1042)을 포함한다. 임베디드 인터페이스(1040)는 리스트에서 아이템(1044)을 디스플레이하며, 여기서 아이템(1044)은 아이템이 완료되었거나 더 이상 관련이 없음을 표시하기 위해 멤버 사용자 입력에 의해 선택될 수 있다. 추가 제어부(1046)는 사용자 입력이 새로운 아이템을 리스트에 추가하고 새로운 아이템을 명명하도록 텍스트를 입력하게 허용한다. 완료된 아이템들(1048)은 완료되거나 달성된 것으로 고려되도록 이들이 사용자 입력에 의해 선택되었다는 시각적 표시와 함께 디스플레이될 수 있다. 닫기 제어부(1050)가 또한 제공될 수 있다. 리스트에 특정 아이템을 기여한 멤버 사용자들의 리스트 또는 표시와 같은 다른 피처들이 다양한 구현들에서 디스플레이될 수 있다.
[00401] 임베디드 인터페이스(1040)에 디스플레이된 아이템들의 리스트는 모든 멤버 디바이스들의 임베디드 인터페이스들과 동기화되어서, 각각의 멤버 디바이스는 리스트에서 동일한 아이템 및 아이템들의 상황들을 디스플레이하게 한다. 일부 구현들에서, 하나 이상의 멤버 사용자들은 예컨대, 임베디드 세션을 개시한 멤버 사용자에 의해 관찰자 상황이 할당될 수 있으며, 여기서 관찰자 사용자들은 리스트를 수정할 수 없다.
[00402] 도 10c에서, 도 10b의 채팅 인터페이스(1000)는 제1 사용자가 채팅 인터페이스의 채팅 대화에서 새로운 메시지를 입력하도록 선택한 후 예시적인 업데이트와 함께 도시된다. 예컨대, 제1 사용자는 채팅 인터페이스(1000)의 입력 필드(1002)를 선택했을 수 있다. 일부 구현들에서, 이는, 새로운 메시지를 입력하는데 사용될 수 있는 디스플레이된 키보드(1060)가 채팅 인터페이스(1000)에 또는 그에 인접하게 디스플레이되게 한다. 일부 구현들은 하나 이상의 채팅 메시지들, 예컨대, 마지막 채팅 메시지(1062)에 응답하거나 이와 관련된 선택 가능한 엘리먼트들로서 메시지 제안들(1064)을 제공할 수 있다. 도 8d에서와 유사하게, 일부 구현들은 키보드(1060), 임베디드 인터페이스(1040) 및 디스플레이 영역(1004)의 일부가 동시적으로 디스플레이되도록, 채팅 인터페이스(1000)의 디스플레이 영역(1004)에서 채팅 대화의 채팅 메시지들 및 키보드(1060) 둘 다의 디스플레이 공간을 허용하기 위해 도 10c의 예에 도시된 바와 같이 임베디드 인터페이스(1040)의 사이즈가 다시 정해질 수 있다(예컨대, 임베디드 인터페이스의 사이즈를 축소함),
[00403] 도 10d에서, 도 10b의 채팅 인터페이스(1000)는 제1 사용자가 임베디드 인터페이스 및 임베디드 애플리케이션에 입력을 제공하도록 선택한 후 예시적인 업데이트와 함께 도시된다. 예컨대, 제1 사용자는 예컨대, 터치 스크린 입력 또는 다른 포인팅 입력 디바이스로부터의 입력을 사용하여 도 10b의 임베디드 인터페이스(1040)의 추가 제어부(1046)를 선택했을 수 있거나, 또는 키보드로부터 텍스트 입력을 수락할 수 있는 임베디드 인터페이스의 상이한 옵션을 선택했을 수 있다. 다른 경우들에서, 사용자는 임베디드 인터페이스에서 제어부를 선택했을 수 있다. 일부 구현들에서, 임베디드 인터페이스에 대한 이러한 사용자 입력은 디스플레이된 키보드(1070)가 채팅 인터페이스(1000)에 또는 이에 인접하게 디스플레이되게 할 수 있으며, 여기서 키보드(1070)는 텍스트(캐릭터들, 이모지, 심볼들 등을 포함함)를 입력하는데 사용될 수 있다. 예컨대, 제1 사용자는 키보드(1070)를 사용하여 리스트에 추가된 아이템에 대한 텍스트 이름 또는 구절을 입력할 수 있다.
[00404] 일부 구현들은, 예컨대, 임베디드 인터페이스에서의 사용자 입력에 의해 선택된 인터페이스 엘리먼트에 기반하여 및/또는 임베디드 애플리케이션의 이벤트에 기반하여, 임베디드 인터페이스에 대한 제안된 입력으로서 하나 이상의 제안들(1072)을 제공할 수 있다. 이 예에서, 제안들(1072)은 추가 제어부(1046)의 선택에 기반하여 결정되었다. 예컨대, 임베디드 애플리케이션(및/또는 리스트 아이템을 전송한 후, 메시징 애플리케이션 또는 제안 서버)은 기존 리스트 아이템들을 검사하여 기존 아이템들과 관련된 제안된 새로운 리스트 아이템들을 결정할 수 있다. 예컨대, 보관된 지식 베이스 또는 데이터베이스(예컨대, 관련된 개념들의 계층적 그래프)가 검사되어 리스트 내의 단어들과 관련된 단어들을 찾을 수 있다.
[00405] 일부 구현들에서, 도 10d에 도시된 바와 같이, 임베디드 인터페이스(1040)로의 입력을 허용하도록 키보드(1070)가 디스플레이되는 동안, 임베디드 인터페이스(1040)는 도시된 바와 같이 그의 정상 사이즈로 유지될 수 있거나(또는 도 10c의 소형-사이즈 임베디드 인터페이스(1040)보다 더 큰 사이즈로 디스플레이될 수 있음) 채팅 메시지들을 디스플레이하는 디스플레이 영역(1004)은 도시된 바와 같이 임베디드 인터페이스(1040)로의 입력을 가능하게 하기 위해 키보드(1070)가 디스플레이되는 동안 채팅 인터페이스(1000)로부터 제거될 수 있다.
[00406] 일부 구현들은 임베디드 인터페이스로의 입력을 위해 키보드(1070)와 유사한 키보드를 디스플레이할 수 있고 그리고/또는 다른 구현들에 대해 본원에서 설명된 바와 같은 다른 타입들의 임베디드 애플리케이션들, 예컨대, 미디어 플레이어들, 게임들, 문서 프로세싱 애플리케이션들 등에 대해 제안들(1072)과 유사한, 임베디드 인터페이스에 입력될 제안들을 디스플레이할 수 있다.
봇 구현들의 예들
[00407] 봇은, 예컨대, 메시징 애플리케이션(103a/103b)을 통해 주로 텍스트를 통해, 사용자들이 상호작용하는 하나 이상의 컴퓨터들 상에서 구현되는 자동화된 서비스이다. 봇은, 봇이 다양한 메시징 애플리케이션들의 사용자들과 상호작용할 수 있도록 봇 공급자에 의해 구현될 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a/103b)의 공급자는 또한 하나 이상의 봇들을 제공할 수 있다. 일부 구현들에서, 메시징 애플리케이션(103a/103b)의 공급자에 의해 제공되는 봇들은 다른 봇들이 예컨대, 다른 공급자들에 의해 제공되는 다른 메시징 애플리케이션들에 포함될 수 있도록 구성될 수 있다. 일부 구현들에서, 하나 이상의 봇들은 임베디드 애플리케이션에 의해 제공되고, 이에 의해 생성되거나 그리고/또는 이에 포함될 수 있다.
[00408] 봇은 다른 모드들에 비해 몇 가지 이점들을 제공할 수 있다. 예컨대, 봇은, 클라이언트 디바이스 상에 애플리케이션을 설치하거나 웹 사이트에 액세스할 필요 없이, 사용자가 새로운 서비스(예컨대, 택시 예약 서비스, 식당 예약 서비스 등)를 시도하게 허용할 수 있다. 추가로, 사용자는 텍스트를 통해 봇과 상호작용할 수 있으며, 이는 웹 사이트, 소프트웨어 애플리케이션, 예컨대, IVR(interactive voice response) 서비스에 대한 전화 통화 또는 서비스와 상호작용하는 다른 방식들을 이용한 학습과 비교하여 최소한의 학습이 필요하거나 학습이 전혀 필요하지 않다. 메시징 서비스 또는 애플리케이션 내에 봇을 통합하는 것은 또한, 사용자들이, 메시징 서비스 내에서 다양한 업무들, 이를테면, 여행 계획 수립, 쇼핑, 이벤트 스케줄링, 정보 획득 등을 달성하기 위해 다른 사용자들과 협력하고, 업무들을 달성하는데 번거로운 작업들, 이를테면, 다양한 애플리케이션(예컨대, 택시 예약 애플리케이션, 식당 예약 애플리케이션, 캘린더 애플리케이션 등) 또는 웹 사이트들 간의 스위칭을 제거하게 허용할 수 있다.
[00409] 봇은, 메시징 애플리케이션(103) 내에서 특정 액션들을 수행하기 위해 또는 정보를 제공하기 위해 메시징 애플리케이션(103a/103b)을 통해 하나 이상의 사용자들(예컨대, 사용자들(125a-n) 중 임의의 사용자)과 상호작용하도록 구성되는 컴퓨터 프로그램 또는 애플리케이션(예컨대, 소프트웨어 애플리케이션)으로서 구현될 수 있다. 일 예로서, 정보 리트리벌 봇은 인터넷 상에서 정보를 서치하고 메시징 앱 내에서 가장 관련된 서치 결과를 제공할 수 있다. 다른 예로서, 여행 봇은 예컨대, 메시징 앱 내에서 여행 및 호텔 티켓들의 구매를 가능하게 하고, 메시징 앱 내에서 호텔 예약을 하고, 메시징 앱 내에서 렌터카 예약들 등을 함으로써 메시징 애플리케이션(103)을 통해 여행 준비를 하는 능력을 가질 수 있다. 다른 예로서, 택시 봇은 별개의 택시 예약 앱을 인보킹 또는 콜링할 할 필요 없이, 예컨대, (예컨대, 사용자(125)가 로케이션 정보에 대한 액세스를 허용할 때 클라이언트 디바이스(115)로부터 택시 봇에 의해 획득되는) 사용자의 로케이션으로 택시를 콜링하는 능력을 가질 수 있다. 다른 예로서, 코치/튜터 봇은 예컨대, 시험에 나타날 가능성이 있는 질문들을 묻고 사용자의 응답들이 맞는지 또는 틀리는지에 관한 피드백을 제공함으로써, 메시징 앱 내에서 일부 토픽에서 사용자를 교육하도록 사용자를 지도할 수 있다. 다른 예로서, 게임 봇은 메시징 앱 내에서 사용자와 반대 편 또는 같은 편에서 게임을 플레이할 수 있다. 다른 예로서, 상업용 봇은 예컨대, 판매자의 카탈로그로부터 제품 정보를 리트리브하고 메시징 앱을 통한 구매를 가능하게 함으로써 특정 판매자로부터의 서비스들을 제공할 수 있다. 다른 예로서, 인터페이스 봇은 메시징 앱의 사용자가 원격 디바이스 또는 차량과 채팅하고, 이로부터 정보를 리트리브하고 그리고/또는 이에 명령들을 제공하도록 원격 디바이스 또는 차량과 인터페이싱할 수 있다.
[00410] 봇의 능력들은 사용자의 의도를 이해하고 그것에 관해 실행하는 것을 포함할 수 있다. 사용자의 의도는 사용자의 대화 및 그의 콘텍스트를 분석하고 이해함으로써 이해될 수 있다. 봇은 또한, 대화의 변하는 콘텍스트 또는 시간이 지남에 따라 전개되는 대화에 기반하여 사용자들의 변하는 감정 및/또는 의도들을 이해할 수 있다. 예컨대, 사용자 A가 커피에 대한 회의를 제안하지만, 사용자 B는 자신이 커피를 좋아하지 않는다고 언급하는 경우, 봇은 커피에 대해 부정적인 감정 스코어를 사용자 B에게 할당할 수 있고 회의를 위해 커피 숍을 제안하지 않을 수 있다.
[00411] 메시징 애플리케이션(103a/103b)의 사용자들과 통신할 수 있는 봇들을 구현하는 것은 다수의 이점들을 제공할 수 있다. 통상적으로, 사용자는 소프트웨어 애플리케이션 또는 웹 사이트를 활용하여, 계산서 지불, 음식 주문, 티켓 예약 등과 같은 활동들을 수행할 수 있다. 이러한 구현들이 갖는 문제는, 다수의 활동들을 수행하기 위해 사용자가 다수의 소프트웨어 애플리케이션들 및 웹 사이트들을 설치 또는 사용할 필요가 있다는 것이다. 예컨대, 사용자는, (예컨대, 공익 회사로부터의) 공과금 고지서를 지불하기 위해, 영화 티켓들을 구매하기 위해(예컨대, 발권 서비스 공급자로부터의 티켓 예약 애플리케이션), (예컨대, 개별적인 식당들로부터) 식당 예약을 하기 위해 상이한 소프트웨어 애플리케이션들을 설치할 필요가 있을 수 있거나, 또는 각각의 활동에 대해 개별적인 웹 사이트를 방문할 필요가 있을 수 있다. 이러한 구현들이 갖는 다른 문제는, 사용자가 복잡한 사용자 인터페이스, 예컨대, 윈도우들, 버튼들, 체크 박스들, 대화 상자들 등과 같은 다수의 사용자 인터페이스 엘리먼트들을 사용하여 구현된 사용자 인터페이스를 배울 필요가 있을 수 있다는 것이다.
[00412] 결과적으로, 하나 이상의 설명된 구현의 이점들은, 단일 애플리케이션이, 사용자가 별개의 웹 사이트에 액세스하거나 소프트웨어 애플리케이션들을 설치 및 실행할 필요 없이 임의의 수의 당사자들과의 상호작용을 수반하는 활동들을 수행하는 것을 가능하게 한다는 것이며, 이는 클라이언트 디바이스 상의 메모리, 저장 및 프로세싱 자원들의 소비를 감소시키는 기술적 효과를 갖는다. 설명된 구현들의 이점은, 예컨대, 복잡한 사용자 인터페이스를 학습할 필요 없이, 사용자가 이러한 활동들을 완료하는 것을 대화형 인터페이스가 보다 용이하고 보다 빠르게 한다는 것이며, 이는 컴퓨테이셔널 자원들의 소비를 감소시키는 기술적 효과를 갖는다. 설명된 구현들의 다른 이점은, 다양한 참여 엔티티들이 더 낮은 비용으로 사용자 상호작용을 제공하는 것을 가능하게 할 수 있다는 것이며, 이는 통신 서버, 하나 이상의 웹 서버들 상에 호스팅되는 웹 사이트, 이메일 서버 상에 호스팅되는 고객 지원 이메일 등 중 하나 이상을 이용하여 구현되는 요금 수화자 부담 전화 번호(toll-free number)와 같이, 사용자 상호작용을 가능하게 하기 위해 전개되는 컴퓨테이셔널 자원들에 대한 필요성을 감소시키는 기술적 효과를 갖는다. 설명된 특징들의 다른 기술적 효과는 통신 네트워크를 통해 사용자 업무들을 완료하는데 사용되는 시스템 프로세싱 및 송신 자원들의 소비 문제에 있어서의 감소이다.
[00413] 본원에서의 특정 예들은 봇과 하나 이상의 사용자들 간의 상호작용을 설명하지만, 다양한 타입들의 상호작용들, 이를테면, 봇과 사용자(125) 간의 일대일 상호작용, (예컨대, 그룹 메시징 대화에서)둘 이상의 사용자들과 봇 간의 일대다 상호작용, 다수의 봇들과 사용자 간의 다대일 상호작용 및 다수의 봇들과 다수의 사용자들 간의 다대다 상호작용들이 가능하다. 추가로, 일부 구현들에서, 봇은 또한, 메시징 애플리케이션(103)을 통해, 봇들 간의 직접 통신을 통해, 또는 이들 조합을 통해 다른 봇(예컨대, 봇들(107a/107b, 109a/109b, 111, 113) 등)과 상호작용하도록 구성될 수 있다. 예컨대, 식당 예약 봇은 테이블을 예약하기 위해 특정 식당에 대한 봇과 상호작용할 수 있다.
[00414] 특정 실시예들에서, 봇은 사용자와 대화로 상호작용하도록 자연 언어를 사용하기 위해 대화형 인터페이스, 이를테면, 채팅 인터페이스를 사용할 수 있다. 특정 실시예들에서, 봇은 예컨대, 식당 주소에 대한 요청에 대한 응답으로 "the location of restaurant R is L"와 같은 템플릿을 이용하여 사용자와 상호작용할 문장들을 생성하기 위해 템플릿-기반 포맷을 사용할 수 있다. 특정 경우들에서, 사용자는, 봇 상호작용 포맷, 예컨대, 봇이 사용자와 상호작용하는데 자연 언어를 사용할지 여부, 봇이 템플릿-기반 상호작용들을 이용할지 여부 등을 선택할 수 있다.
[00415] 봇이 자연 언어를 사용하여 대화로 상호작용하는 경우들에서, 봇의 상호작용의 콘텐츠 및/또는 스타일은, 자연 언어 프로세싱을 사용하여 결정된 대화의 콘텐츠, 대화들에서 사용자의 아이덴티티들, 및 하나 이상의 대화 콘텍스트들(예컨대, 사용자의 상호작용들에 대한 이력 정보, 소셜 그래프에 기반한 대화에서 사용자들 간의 연결들) 외부 조건들(예컨대, 날씨, 교통), 사용자의 스케줄들, 사용자와 연관된 관련 콘텍스트 등 중 하나 이상에 기반하여 동적으로 변동될 수 있다. 이 경우에, 봇 상호작용들의 콘텐츠 및 스타일은 대화에 참여한 사용자들이 동의한 그러한 팩터들에만 기반하여 변동된다.
[00416] 일 예로서, 대화의 사용자들이 격식 언어(예컨대, 속어들 또는 이모지들이 최소이거나 전혀 없음)를 사용하는 것으로 결정되는 경우, 봇은 또한 격식 언어를 사용하여 그 대화 내에서 상호작용할 수 있으며, 그 반대도 마찬가지이다. 다른 예로서, 대화의 사용자가 (현재 및/또는 과거 대화들에 기반하여) 이모지들의 헤비 사용자인 것으로 결정되는 경우, 봇은 또한 하나 이상의 이모지들을 사용하여 그 사용자와 상호작용할 수 있다. 다른 예로서, 대화에서 2명의 사용자들이 소셜 그래프에서 원격으로 연결되어 있다고 결정되는 경우(예컨대, 그들 간에 둘 이상의 중간 노드들을 가지며, 이는 예컨대, 그들이 친구들의 친구들의 친구들임을 나타냄), 봇 그 대화에서 보다 격식 언어를 사용할 수 있다. 대화에 참여하는 사용자들이, 봇이 사용자의 소셜 그래프, 스케줄들, 로케이션 또는 사용자들과 연관된 다른 콘텍스트와 같은 팩터들을 활용하는데 동의하지 않은 경우, 봇의 상호작용의 콘텐츠 및 스타일은 디폴트 스타일, 예컨대, 이러한 팩터들의 활용을 요구하지 않는 중립 스타일일 수 있다.
[00417] 또한, 일부 구현들에서, 하나 이상의 봇들은 사용자와의 주고받는 대화에 관여하는 기능성을 포함할 수 있다. 예컨대, 사용자가 예컨대, "@moviebot Can you recommend a movie?"를 입력함으로써 영화들에 관한 정보를 요청하는 경우, 봇 "영화 봇(Moviebot)"은 "Are you in the mood for a comedy?로 응답할 수 있다. 그러면, 사용자는 "nope"로 응답할 수 있으며, 이에 대해, 봇은 "OK. The sci-fi movie entitled Space and Stars has got great reviews. Should I book you a ticket?"로 응답할 수 있다. 그러면, 사용자는 "Yeah, I can go after 6 pm. Please check if Steve can join"를 표시할 수 있다. 봇이 자신의 연락처들에 관한 정보에 액세스하는 것에 대해 사용자가 동의하고, 봇으로부터 메시지들을 수신하는 것에 대해 친구 Steve가 동의하면, 봇은 사용자의 친구 Steve에게 메시지를 전송하고 적합한 시간에 영화 티켓들을 예약하기 위한 추가의 액션들을 수행할 수 있다.
[00418] 특정 실시예들에서, 채팅 대화에 참여하는 사용자는 예컨대, 봇 이름 또는 봇 핸들(예컨대, taxi, @taxibot, @movies 등)을 타이핑함으로써, 보이스 커맨드(예컨대, "invoke bankbot" 등)를 사용함으로써, 사용자 인터페이스 엘리먼트(예컨대, 봇 이름 또는 핸들로 레이블이 지정된 버튼 또는 다른 엘리먼트)의 활성화에 의한 식으로, 특정 봇 또는 특정 업무를 수행하는 봇을 인보킹할 수 있다. 봇이 인보킹되면, 사용자(125)는 다른 사용자들(125)에게 메시지들을 전송하는 것과 유사한 방식으로 메시징 애플리케이션(103a/103b)을 통해 봇에 메시지를 전송할 수 있다. 예컨대, 택시를 부르기 위해, 사용자는 "@taxibot get me a cab"를 타이핑하고; 호텔 예약들을 하기 위해 사용자는 "@hotelbot book a table for 4 at a Chinese restaurant near me"를 타이핑할 수 있다.
[00419] 특정 실시예들에서, 봇은 구체적으로 인보킹되지 않고 채팅 대화 내에서 정보 또는 액션들을 자동적으로 제안할 수 있다. 즉, 사용자들은 봇을 구체적으로 인보킹할 필요가 없을 수 있다. 이들 실시예들에서, 봇은 연속적으로 또는 별도의 시점들에서의 채팅 대화의 분석 및 이해에 의존할 수 있다. 채팅 대화의 분석은 특정 사용자 요구들을 이해하고 어시스턴스가 봇에 의해 제안되어야 할 때를 식별하기 위해 사용될 수 있다. 일 예로서, 봇은 일부 정보를 서치하고 (예컨대, 다른 사용자에게 질문을 물어보는 사용자에 기반하여, 다수의 사용자들이 일부 정보를 갖지 않는다고 표시하는 다수의 사용자들에 기반하여) 사용자가 정보를 필요로 하는 것으로 결정되는 경우 회답을 제안할 수 있다. 다른 예로서, 다수의 사용자들이 중국 음식을 먹는 것에 관심을 표명한 것으로 결정되는 경우, 봇은 로케이션들, 레이팅들 및 식당의 웹 사이트들에 대한 링크들과 같은 선택적인 정보를 포함하여, 사용자들에 근접한 한 세트의 중국 식당들을 자동적으로 제안할 수 있다.
[00420] 특정 실시예들에서, 봇을 자동적으로 인보킹하거나 사용자가 봇을 명백하게 인보킹하기를 기다리기 보다는, 하나 이상의 봇들을 인보킹하기 위해 메시징 대화의 하나 이상의 사용자들에게 자동 제안이 이루어질 수 있다. 이들 실시예들에서, 채팅 대화는 연속적으로 또는 별도의 시점들에서 분석될 수 있고, 대화의 분석은 특정 사용자 요구들을 이해하고 대화 내에서 봇이 제안되어야 할 때를 식별하기 위해 사용될 수 있다.
[00421] 구체적으로 인보킹되지 않고 봇이 채팅 대화 내에서 정보 또는 액션들을 자동적으로 제안할 수 있는 실시예에서, 이러한 기능성은, 예컨대 봇이 사용자의 대화의 분석을 수행하는 것에 대해 채팅 대화에 참여하는 하나 이상의 사용자들이 동의하지 않는 경우, 디스에이블된다. 추가로, 이러한 기능성은 또한 사용자 입력에 기반하여 일시적으로 디스에이블될 수 있다. 예컨대, 채팅 대화가 비공개임을 사용자들이 표시할 때, 대화 콘텍스트 분석은 봇이 활성화되게 하는 입력을 사용자들이 제공할 때까지 중단된다. 추가로, 분석 기능성이 디스에이블된다는 표시들은 예컨대, 사용자 인터페이스 엘리먼트를 통해 채팅 대화의 참여자들에게 제공될 수 있다.
[00422] 다양한 구현들에서, 봇은 다양한 구성들로 구현될 수 있다. 예컨대, 도 1에 도시된 바와 같이, 봇(105)은 클라이언트 디바이스(115a) 상에서 구현된다. 이 예에서, 봇은 클라이언트 디바이스(115a)에 로컬인 소프트웨어 애플리케이션의 모듈일 수 있다. 예컨대, 사용자가 클라이언트 디바이스(115a) 상에 택시 부름 애플리케이션을 설치한 경우, 봇 기능성은 택시 부름 애플리케이션에 모듈로서 통합될 수 있다. 이 예에서 사용자는 예컨대, 메시지 "@taxibot get me a cab"를 전송함으로써 택시 봇을 인보킹할수 있다. 메시징 애플리케이션(103b)은 자동적으로, 택시 부름 애플리케이션의 봇 모듈이 런칭되게 할 수 있다. 이러한 방식으로, 봇은 사용자가 메시징 애플리케이션(103)을 통해 봇과의 대화에 관여할 수 있도록 클라이언트 디바이스 상에 국부적으로 구현될 수 있다.
[00423] 도 1에 도시된 다른 예에서, 봇(107a)은 클라이언트 디바이스(115a) 상에 구현된 것으로 도시되고 있고, 봇(107b)은 메시징 서버(101) 상에 구현된 것으로 도시된다. 이 예에서, 봇은 예컨대, 클라이언트-서버 컴퓨터 프로그램으로서 구현될 수 있으며, 복 기능성의 일부들은 봇(107a)(서버 모듈) 및 봇(107b)(클라이언트 모듈) 각각에 의해 제공된다. 예컨대, 봇이 핸들 @calendar을 가진 스케줄링 봇인 경우, 사용자(125a)는 "@calendar remind me to pick up laundry in the evening"을 타이핑함으로써 리마인더를 스케줄링할 수 있으며, 이는 봇(107b)(클라이언트 모듈)에 의해 핸들링될 수 있다. 이 예를 계속하면, 사용자(125a)가 봇에게 "check if Jim is free to meet at 4"라고 말하는 경우, 봇(107a)(서버 모듈)은 사용자 Jim(또는 Jim의 스케줄링 봇)에게 연락하여 메시지들을 교환하고 사용자(125a)에게 응답을 제공할 수 있다.
[00424] 다른 예에서, 봇(109a)(서버 모듈)은 서버(135) 상에서 구현되고 봇(109b)(클라이언트 모듈)은 클라이언트 디바이스들(115) 상에서 구현된다. 이 예에서, 봇 기능성은 클라이언트 디바이스들(115) 및 메시징 서버(101)와 구별되는 서버(135) 상에서 구현된 모듈들에 의해 제공된다. 일부 구현들에서, 봇은 예컨대, 다수의 클라이언트 디바이스들 및 서버들(예컨대, 클라이언트 디바이스들(115), 서버(135), 메시징 서버(101) 등)에 걸쳐 모듈들이 분산되어 있는 분산형 애플리케이션으로서 구현될 수 있다. 일부 구현들에서, 봇은 서버 애플리케이션으로서 구현될 수 있는데, 예컨대 봇(111)은 메시징 서버(101) 상에서 구현되고 봇(113)은 서버(135) 상에서 구현된다.
[00425] 클라이언트-전용, 서버-전용, 클라이언트-서버, 분산 등과 같은 상이한 구현들은 상이한 이점들을 제공할 수 있다. 예컨대, 클라이언트-전용 구현들은 예컨대, 네트워크 액세스 없이 봇 기능성이 국부적으로 제공되게 허용하며, 이는 특정 콘텍스트에서, 예컨대, 사용자가 네트워크 커버리지 영역 외부에 있거나 낮은 또는 제한된 네트워크 대역폭을 갖는 임의의 영역에 있을 때 유리할 수 있다. 서버-전용, 클라이언트-서버 또는 분산형 구성들 같은 하나 이상의 서버들을 포함하는 구현들은, 예컨대, 클라이언트 디바이스 상에서 국부적으로 제공하는 것이 가능하지 않을 수 있는 특정 기능성, 예컨대, 금융 거래들, 티켓 예약들 등을 허용할 수 있다.
[00426] 도 1은 메시징 애플리케이션(103)과 구별되는 봇을 도시하지만, 일부 구현들에서, 하나 이상의 봇들은 메시징 애플리케이션(103)의 일부로서 구현될 수 있다. 봇들이 메시징 애플리케이션(103)의 일부로서 구현되는 구현들에서, 봇들을 구현하기 전에 사용자 허용이 획득된다. 예컨대, 봇들이 메시징 애플리케이션(103a/103b)의 일부로서 구현되는 경우, 메시징 애플리케이션(103a/103b)은, 특정 활동들을 수행할 수 있는 봇, 예컨대, 착신 및 발신 메시지를 번역하는 번역 로봇, 사용자의 캘린더 상에 이벤트들을 스케줄링하는 스케줄링 로봇 등을 제공할 수 있다. 이 예에서, 번역 봇은 사용자의 특정 허용 시에만 활성화된다. 사용자가 동의를 제공하지 않으면, 메시징 애플리케이션(103a/103b) 내의 봇들은 구현되지 않는다(예컨대, 디스에이블되고, 제거되는 등이 됨). 사용자가 동의를 제공하는 경우, 봇 또는 메시징 애플리케이션(103a/103b)은 메시징 애플리케이션(103a/103b)을 통해 사용자들 간에서 교환되는 메시지들을 제한적으로 사용하여 특정 기능성, 예컨대 번역, 스케줄링 등을 제공할 수 있다.
[00427] 일부 구현들에서, 메시징 애플리케이션(103a/103b)의 공급자 및 사용자들(125)과 구별되는 제3자들은 특정 목적들을 위해 메시징 애플리케이션(103a/103b)을 통해 사용자(125)와 통신할 수 있는 봇들을 제공할 수 있다. 예컨대, 택시 서비스 제공자는 택시 봇을 제공할 수 있고, 발권 서비스는 이벤트 티켓들을 예약할 수 있는 봇을 제공할 수 있고, 은행 봇은 금융 거래들을 수행하는 능력 등을 제공할 수 있고 기타 등을 제공할 수 있다.
[00428] 메시징 애플리케이션(103)을 통한 봇들의 구현 시에, 봇들은 특정 사용자 권한부여 시에만 사용자들과 통신하도록 허용된다. 예컨대, 사용자가 봇을 인보킹하는 경우, 봇은 예컨대, 봇을 인보킹하는 사용자의 액션에 기반하여 응답할 수 있다. 다른 예에서, 사용자는 사용자에게 연락할 수 있는 특정 봇들 또는 봇들의 타입들을 표시할 수 있다. 예컨대, 사용자는 여행 봇들이 자신과 통신하도록 허용할 수 있지만 쇼핑 봇들에게 권한부여를 제공하지는 않는다. 이 예에서, 메시징 애플리케이션(103a/103b)은 여행 봇들이 사용자와 메시지들을 교환하도록 허용하지만, 쇼핑 봇들로부터의 메시지들을 필터링 또는 거부할 수 있다.
[00429] 추가로, 일부 기능성(예컨대, 택시를 부르는 것, 비행 예약을 하는 것, 친구와 연락하는 것 등)을 제공하기 위해, 봇들은, 봇이 사용자 데이터, 이를테면, 로케이션, 결제 정보, 연락처 리스트 등에 액세스하는 것을 사용자가 허용하도록 요청할 수 있다. 이러한 인스턴스들에서, 사용자에게 봇에 대한 액세스를 허용 또는 거부하는 옵션들이 제공된다. 사용자가 액세스를 거부하면, 봇은 예컨대, "Sorry, I am not able to book a taxi for you"라는 메시지를 통해 응답할 수 있다. 추가로, 사용자는 제한된 기반으로 정보에 대한 액세스를 제공할 수 있는데, 예컨대, 사용자는 봇의 특정 인보케이션 시에만 택시 봇이 현재 로케이션에 액세스하도록 허용하고, 그렇지 않으면 허용하지 않을 수 있다. 상이한 구현들에서, 사용자는 봇이 액세스할 수 있는 정보의 타입, 양 및 입도를 제어할 수 있고, 언제든지 이러한 허용들을 변경하는 능력을 (예컨대, 사용자 인터페이스를 통해) 제공받는다. 일부 구현들에서, 봇이 사용자 데이터에 액세스할 수 있기 전에, 예컨대, 식별가능한 정보를 개인적으로 제거하는 것, 정보를 특정 데이터 엘리먼트들로 제한하는 것 등을 위해 사용자 데이터가 프로세싱될 수 있다. 추가로, 사용자들은 메시징 애플리케이션(103a/103b) 및 하나 이상의 봇들에 의한 사용자 데이터의 사용을 제어할 수 있다. 예컨대, 사용자는 금융 거래들을 하는 능력을 제공하는 봇이 거래가 완료되기 전에 사용자 권한부여를 요구하도록 특정할 수 있는데, 예컨대, 봇은 "Tickets for the movie Space and Starts are $12 each. Shall I go ahead and book?" 또는 "The best price for this shirt is $125, including shipping. Shall I charge your credit card ending 1234?" 등과 같은 메시지를 전송할 수 있다.
[00430] 일부 구현들에서, 상술된 시스템들에 의해 생성된 하나 이상의 제안된 응답 아이템들은 봇을 인보킹 또는 커맨딩하기 위해, 예컨대 봇에 정보를 요청하기 위해 사용되는 메시지들일 수 있다. 예컨대, 시스템은, 수신된 이미지가 봇에 의해 제공되는 하나 이상의 기능들 및/또는 정보에 의해 보조될 콘텐츠를 포함하는지 여부를 결정할 수 있다. 일부 예들에서, 대화의 제1 사용자는 "Guess where?"라고 말하는 텍스트 메시지를 제2 사용자에게 전송할 수 있다. 이어서, 제1 사용자는 제2 사용자의 디바이스에 이미지를 전송한다. 시스템은, "guess"라는 단어를 포함하는 구절이, 제안된 응답이 이미지 콘텐츠와 관련된 정보를 발견하기 위한 요청일 수 있음을 표시한다고 결정할 수 있다. (다른 단어들이 또한 이러한 요청, 이를테면 "where", "what" 등을 표시할 수 있다.) 응답으로, 시스템은 관련 정보를 제공할 수 있는 적절한 봇에 대한 요청 또는 커맨드인 제안된 응답을 생성할 수 있다. 예컨대, 제안된 응답은 이미지에 묘사된 로케이션의 이름을 제공하도록 하는 맵핑 봇에 대한 요청일 수 있다(예컨대, 여기서 봇은 웹 서치들, 맵들 및 아틀라스들, 수신된 이미지의 지리적 로케이션 메타데이터 등을 사용하여 이러한 정보를 결정할 수 있다). 일부 구현들에서, (예컨대, 만약 사용자 동의가 획득되면, 하나 이상의 이미지 검출 또는 인식 기술들을 사용하여) 이미지에서 검출된 이미지 콘텐츠의 특정 타입들에 대해 적절한 타입들의 봇들을 결정하기 위해 (만약 사용자 동의가 획득되면) 트레이닝 메시지 데이터가 사용될 수 있고, 그리고/또는 규칙들-기반 문법들은 이미지 콘텐츠의 타입들 및/또는 이미지 콘텐츠에서 검출된 개념들에 기반하여 제안된 응답에서 어느 타입들의 봇들을 인보킹할지를 결정할 수 있다.
[00431] 일부 구현들에서, 만약 봇-관련 제안된 아이템이 가능한 응답으로서 사용자에 대해 디스플레이되고 사용자가 그 제안을 선택하면, 봇은 예컨대 봇 이름과 함께 표현된 채팅 대화 및 메시징 인터페이스에 추가될 수 있다. 봇은 예컨대, 채팅 인터페이스에서 제1 및 제2 사용자들 둘 모두에 대한 메시지들로서 대화에서 요청된 정보를 결정 및 출력할 수 있다.
[00432] 다른 예에서, 제1 사용자는 제2 사용자에 대해 외국어인 이미지 묘사 텍스트를 채팅 대화 또는 임베디드 애플리케이션에 입력한다. 시스템은, 적절한 제안된 아이템이, 이미지에서 텍스트를 번역하고 번역된 텍스트를 채팅 인터페이스 또는 임베디드 인터페이스에서 출력하도록 하는 언어 봇에 대한 요청이라고 결정할 수 있다.
[00433] 다른 예에서, 제1 사용자는 식품 아이템을 묘사하는 이미지를 채팅 대화에 입력한다. 시스템은, 적절한 제안된 응답이, 식품 아이템에 통상적으로 또는 구체적으로 포함된 성분들 및/또는 칼로리들을 결정하고 메시지 대화 인터페이스에서 그 정보를 출력하기 위해 하나 이상의 액세스가능한 데이터 소스들을 (예컨대, 인터넷 상에서) 체크하도록 하는 봇에 대한 요청이라고 결정할 수 있다.
[00434] 본 명세서에 설명된 구현들은 일반적으로 메시징 애플리케이션들에 관한 것이다. 특정 구현들은 메시징 애플리케이션 내에서 제안된 아이템들을 사용자에게 자동으로 제공하기 위해 하나 이상의 채팅 대화들의 이미지 콘텐츠 및/또는 사용자 정보를 자동으로(예컨대, 사용자 간섭 없이) 분석할 수 있다. 특정 예들에서, 자동 제안된 아이템들은 임베디드 애플리케이션에서 또는 메시징 애플리케이션에서 응답하기 위해 사용자에 의해 선택될 수 있고, 그리고/또는 사용자 대신에 하나 이상의 적절한 응답들로서 자동으로 제공될 수 있다. 특정한 다른 예들에서, 제안들은 특정한 비-메시징 기능을 메시징 애플리케이션에 자동으로 통합할 수 있다.
[00435] 제안된 아이템들은 채팅 대화에서 수신된 임의의 타입의 미디어 콘텐츠에 기반하여 제공될 수 있다. 예컨대, 이러한 미디어 콘텐츠는 (예컨대, 채팅 애플리케이션 내의) 스티커들, 애니메이팅된 이미지들(예컨대, 시네마그래프들, GIF 이미지들 등) 및 비디오들을 포함할 수 있다. 추가로, 다양한 타입들의 아이템들이 제안될 수 있다. 예컨대, 제안된 메시지들은 이미지, 스티커, 애니메이팅된 이미지(예컨대, 시네마그래프, GIF 이미지 등) 및 비디오 중 하나 이상을 포함할 수 있다. 이 제안들을 제공하기 위해, 수신된 아이템(예컨대, 텍스트, 이미지, 비디오, 스티커, 애니메이팅된 이미지 등)에서 식별된 개념들과 상이한 타입들의 응답들 내의 개념들과의 비교가 행해질 수 있고, 적합한 응답을 선택할 수 있다. 사용자들이 동의를 제공하는 상이한 구현들에서, 제안된 아이템의 타입은 콘텍스트에 기반하여 선택 또는 우선순위화될 수 있는데, 예컨대, 스티커가 게임에서 특정 액션에 대한 제안된 아이템으로서 제공될 수 있고, 제2 비디오가 플레이 비디오에 대한 제안된 아이템으로서 제공될 수 있는 식이다.
[00436] 특정 구현들은 인간 사용자들 및/또는 채팅 봇들에 의한 메시징을 가능하게 한다. 특정 구현들에서, 자동 제안된 아이템들은, 채팅 봇이 채팅 대화에 참여하고 있는지 여부에 기반하여 맞춤화될 수 있다. 일부 예들에서, 만약 채팅 봇이 메시징 대화에 없으면 제1 세트의 자동 제안된 아이템들이 제공될 수 있는 반면, 만약 채팅 봇이 채팅 대화에 존재하면 제2 세트의 자동 제안된 아이템들이 제공될 수 있고, 여기서 제1 및 제2 세트들의 제안된 아이템들은 적어도 부분적으로 상이하다. 예컨대, 이 구현들은 채팅 봇이 따르는 대화 규칙들을 이용할 수 있고, 규칙들에 기반하여 사용자에게 아이템들을 제안할 수 있다. 이는, 채팅 봇들에 의해 용이하게 이해되는 언어 및 포맷으로 채팅 봇들과 통신할 때 사용자들이 가질 수 있는 도전들을 완화시킬 수 있다.
[00437] 일부 구현들은 사용자의 로케이션과 관련된 구역, 마켓 및 국가 중 적어도 하나에서 다른 메시지들에 기반하여 하나 이상의 트렌딩 응답들(예컨대, 많은 상이한 사용자들에 의해 전송된 인기있는 메시지 콘텐츠를 포함하는 메시지)을 결정하는 것을 포함할 수 있다. 하나 이상의 결정된 제안된 아이템들은 하나 이상의 트렌딩 응답들을 포함할 수 있다. 일부 구현들에서, 사용자 콘텍스트, 예컨대, 지리적 로케이션, 휴일 또는 이벤트 등이 제안된 아이템들 중 하나 이상을 프리젠테이션을 위해 생성 및 결정하기 위해 사용될 수 있다.
[00438] 일부 구현들에서, 하나 이상의 제안된 응답 아이템들을 결정하는 것은 사용자에 대해 개인화된 모델을 개발하기 위해 머신 학습을 사용하는 것에 기반할 수 있다. 제안된 아이템들을 결정하는 것은 통신들에서 사용자의 선호도들 및/또는 사용자의 이전 액션들에 기반할 수 있다(만약 이러한 액션들 및 데이터의 사용에 대한 사용자 동의가 획득된 경우). 예컨대, 사용자 선호도들은 포함될 수 있는 특정 단어들을 표시하는 화이트리스트 및/또는 메시지 제안들에 포함될 수 없는 특정 단어들을 표시하는 블랙리스트를 포함할 수 있다. 만약 사용자 동의가 획득되었다면, 제안된 아이템들은 이전의 경우들에서 사용자에 의해 제공된 구두점 사용, 이모지 사용 또는 다른 콘텐츠 중 하나 이상에 기반하여 생성 또는 수정될 수 있다.
[00439] 제안된 아이템들을 제공하기 위해 사용된 머신 학습 모델들은 클라이언트 디바이스(115) 및/또는 서버, 예컨대, 메시징 서버(101) 및/또는 서버(150-156)에 의해 구현될 수 있다. 일부 구현들에서, 채팅 대화들은, 오직 채팅 대화에서의 참여자들의 클라이언트 디바이스들만이 대화 콘텐츠에 액세스할 수 있도록 암호화될 수 있다. 이 구현들에서, 개별적인 클라이언트 디바이스에 의해 구현되는 모델들은 제안된 응답 아이템들을 제공하기 위해 사용될 수 있고, 서버에 의해 구현된 모델들은 사용되지 않는다. 클라이언트 디바이스에 의해 구현되는 모델들은 또한, 예컨대, 사용자가 서버에 의해 구현된 모델들의 사용에 대한 동의를 제공하지 않을 때 사용될 수 있다. 일부 구현들에서, 클라이언트 구현 모델들은 서버 구현 모델들에 기반하거나 그로부터 도출될 수 있다. 일부 구현들에서, 예컨대, 클라이언트 디바이스가 클라이언트 모델들을 구현할 능력이 없을 때 서버 모델들이 사용될 수 있고 클라이언트 모델들이 사용되지 않을 수 있다. 일부 구현들에서, 클라이언트 및 서버 모델들의 조합이 사용될 수 있다.
[00440] 본 문헌에서 설명된 예들은 영어로 예시된 개념들을 활용하지만, 제안들은 임의의 언어, 예컨대, 클라이언트 디바이스(115)에 대해 구성된 로케일 또는 다른 지리적인 언어, 사용자 선호도에 기반하여 선택된 언어 등으로 제공될 수 있다. 일부 구현들에서, 사용자들이 채팅 대화의 콘텍스트의 분석에 대한 동의를 제공하는 경우, 사용자를 수반하는 다양한 대화들에서(예컨대, 최근 메시지들에서) 사용된 언어가 검출될 수 있고 메시지 제안들은 그 언어로 제공될 수 있다.
봇들 임베디드 애플리케이션들의 추가적 예들
[00441] 일부 구현들에서, 상술된 바와 같은 봇들은 사용자 디바이스 상에 구현된 하나 이상의 채팅 대화들에서 임베디드 애플리케이션의 사용과 함께 사용자에 의해 사용될 수 있다.
[00442] 일부 봇 구현들에서, 사용자는 채팅 대화에 참여하는 다른 인간 사용자들 없이 봇과 채팅 대화에 참여할 수 있다. 예컨대, 어시스턴트 봇이 사용자 디바이스 상에서 실행되는 로컬 프로그램에 의해 제공될 수 있거나 서버(예컨대, 서버 애플리케이션 프로그램)에 의해 제공될 수 있다. 일부 예들에서, 사용자가 제1 채팅 대화에서 봇 커맨드(예컨대, 커맨드 채팅 메시지)를 입력하는 것, 채팅 인터페이스에서 봇 활성화 제어를 선택하는 것 등에 대한 응답으로 사용자 및 하나 이상의 봇들을 포함하는 새로운 봇 채팅 대화가 열릴 수 있다. 봇 채팅 대화에서, 사용자는 봇에 의해 프로세싱될 수 있는 메시지들로서 정보(예컨대, 질문들, 커맨드들, 진술들)를 입력할 수 있고, 봇은 그러한 메시지들에 기반하여 커맨드들 또는 데이터를 임베디드 애플리케이션들에 전송할 수 있다. 예컨대, 봇은 특정 임베디드 세션에 합류하는 것, 미디어 아이템을 플레이백하는 것, 게임을 플레이하는 것, 공유 리스트를 생성하는 것 등을 위해 사용자로부터 봇으로의 채팅 인터페이스에서의 커맨드에 기반하여 채팅 인터페이스와 연관된 적절한 임베디드 애플리케이션을 개시할 수 있다. 일부 구현들에서, 봇들은 예컨대, 채팅 인터페이스에서 사용자 입력으로부터 봇에 제공되는 커맨드 시에, 그리고 예컨대, 제안된 응답 아이템들이 관련되는 임베디드 애플리케이션 및 임베디드 세션의 실행과 동시에, 본원에서 설명되는 제안된 응답 아이템들을 결정 및 제공할 수 있다. 일부 구현들에서, 봇들은 임베디드 애플리케이션들에서 발생하는 이벤트들과 관련된 정보를 수신할 수 있고, 본원에 설명된 바와 같이, 임베디드 세션들에서 이벤트들을 설명하는 대화형 카드들을 생성하고 디스플레이되게 할 수 있다.
[00443] 일부 예들에서, 미디어 플레이어 기능성을 갖는 봇과의 채팅 대화에서, 사용자는 채팅 인터페이스 또는 대화에서 질문들을 입력할 수 있고, 봇은 봇 채팅 대화와 연관하여 또는 상이한 채팅 대화(예컨대, 다른 인간 채팅 사용자들을 포함하는 채팅 대화)와 연관하여 디스플레이되는 임베디드 인터페이스에서 특정 미디어 아이템을 플레이하는 미디어 플레이어 임베디드 애플리케이션을 개시할 수 있다. 예컨대, 만약 상이한 채팅 대화와 연관하여 플레이되면, 봇 채팅 대화는 디스플레이로부터 숨겨질 수 있고, 상이한 채팅 대화가 채팅 인터페이스와 연관하여 디스플레이된 임베디드 인터페이스와 함께 채팅 인터페이스에 디스플레이될 수 있다.
[00444] 예컨대 본원의 구현들에서 설명된 바와 같이 임베디드 애플리케이션이 미디어 아이템을 플레이할 수 있는 일 예에서, 미디어 플레이어는 사용자에 의해 채팅 대화에서 인보킹될 수 있다. 예컨대, 봇은 채팅 메시지와 유사하게 채팅 인터페이스에 커맨드를 입력하고 커맨드 신택스(예컨대, 커맨드 전의 심볼)를 포함함으로써, 또는 상이한 타입의 선택을 입력함으로써(예컨대, 디스플레이된 인터페이스 엘리먼트를 선택함으로써) 인보킹될 수 있다. 미디어 플레이어 봇은 임베디드 애플리케이션에 의해 플레이되거나 플레이가능한 미디어 아이템들과 관련된 사용자로부터의 질의들을 지원할 수 있다.
[00445] 일부 구현들에서, 미디어 플레이어 봇은 사용자에 의해 및/또는 다른 채팅 사용자들에 의해 액세스가능한 저장소에 저장된 그리고/또는 채팅 대화에서 포스팅된 콘텐츠 아이템들에 대한 링크들을 갖는 보관된 미디어 아이템들 또는 다른 타입들의 콘텐츠 아이템들에 대해 탐색하기 위해 사용될 수 있다. 일부 예들에서, 봇에 대한 질의는 채팅 메시지로서 채팅 인터페이스에 입력될 수 있다. 예컨대, 서치 질의는 미디어 플레이어 봇이 보관된 미디어 아이템들의 수집에서 고양이 비디오들에 대해 서치하게 하기 위해 "@mediaplay cat videos"로서 제공될 수 있다. 미디어 아이템들의 특정 타이틀들이 또한 질의될 수 있다. 일부 구현들에서, 대화 서치가 제공될 수 있다. 예컨대, 서치 질의는 "show me the most recent episode of Gameshow" 또는 "play the most popular Gameshow video" 또는 "show me five videos you recommend for me to watch" 또는 "send me a new cat video each day"로서 입력될 수 있다. 일부 구현들에서, 추천된 미디어 아이템들은, 이전 사용자 뷰잉들 및 선호도들(사용자 동의를 가짐)을 추적할 수 있고 사용자에 대한 미디어 아이템들을 랭킹할 수 있는 콘텐츠 서버에 의해 제공될 수 있다.
[00446] 일부 구현들은 임베디드 애플리케이션들에서 사용될 다른 데이터 아이템들 또는 콘텐츠 아이템들에 대한 서치에서 사용되는 서치 질의를 형성하는 사용자 입력을 수신하는 하나 이상의 봇들을 제공할 수 있다. 예컨대, 이러한 아이템들은 공유 리스트에 추가될 아이템들, 여행 일정에서 사용될 특정 시간 구역에서의 시간, 예약할 식당의 이름 등을 포함할 수 있다. 봇은 데이터베이스들, 서버들, 또는 사용자 디바이스 상에서 네트워크를 통해 액세스가능한 다른 자원들 상에서 이러한 아이템들을 서치할 수 있다. 서치 질의에 대한 응답으로 봇에 의해 발견되는 아이템들은 사용자에 의한 선택을 위해 채팅 인터페이스에 제공될 수 있거나 또는 봇에 의해 연관된 임베디드 애플리케이션에 자동으로 제공될 수 있다.(그리고 일부 구현들에서, 봇은 만약 임베디드 애플리케이션이 아직 실행중이 아니면 임베디드 애플리케이션을 개시할 수 있다). 임베디드 애플리케이션에 제공된 아이템들은 적절한 경우 임베디드 인터페이스에 디스플레이될 수 있다.
[00447] 일부 구현들에서, 앞서 설명된 바와 같이, 임베디드 세션에서 미디어 아이템들의 플레이백은, 예컨대, 새로운 임베디드 세션에서, 사용자가 나중의 시간에 미디어 아이템을 플레이하는 것을 가능하게 하기 위해 특정 사용자를 위한 나중을 위해 저장될 수 있다. 일부 구현들에서, 이러한 저장된 미디어 아이템들은, 게임들 또는 다른 사용자의 레코딩들(예컨대, 캡처된 비디오 데이터, 스크린 캡처 이미지들 등) 및 만약 채팅 사용자들로부터 동의가 획득되었다면, 채팅 사용자들과의 하나 이상의 임베디드 세션들에서 발생한 애플리케이션 활동/이벤트들을 포함할 수 있다.
[00448] 일부 구현들에서, 미디어 아이템들은 전용된 별개의 채팅 대화들에서 사용자를 위해 저장될 수 있다. 예컨대, 사용자는 채팅 대화에서, 특정 미디어 아이템을 저장하기 위한 사용자 입력을 제공할 수 있다. 응답으로, 사용자와 연관된 제2 채팅 대화가 식별되고 봇은 미디어 아이템과 연관된다. 미디어 아이템은 제2 채팅 대화에 삽입되고, 이전에 저장된 미디어 아이템들은 또한 제2 채팅 대화에 리스트된다. 메시징 애플리케이션은 예컨대, 선택된 미디어 아이템을 플레이하기 위해, 미디어 아이템과 연관된 사용자로부터의 입력을 수신할 수 있다. 응답으로, 제1 채팅 대화는 임베디드 애플리케이션을 사용하여 선택된 미디어 아이템을 플레이함으로써 업데이트된다.
[00449] 일부 추가적인 예들에서, 미디어 플레이어 임베디드 세션이 활성임을 표시하는 통지에서 또는 채팅 대화에서 디스플레이되는 미디어 아이템 링크와 연관하여 저장 제어가 제공될 수 있다. 예컨대, 만약 미디어 플레이어 임베디드 세션이 활성이라는 통지를 사용자가 수신하면(또는 채팅 인터페이스에서 미디어 아이템에 대한 링크를 보면), 사용자는 저장 제어를 선택할 수 있다. 이 선택은, 오직 사용자 및 봇이 참여하고 있는 제2 채팅 대화(예컨대, 미디어 선택 채팅 대화)가 디스플레이되게 할 수 있다. 임베디드 세션에서 미디어 아이템에 대한 링크는 미디어 선택 채팅 대화에서 디스플레이될 수 있다. 또한, 이전의 임베디드 세션들로부터의 임의의 저장된 미디어 아이템들은 이전의 메시지들로서 미디어 선택 채팅 대화들에 포함될 수 있다. 따라서, 사용자는 사용자와 연관된 저장된 미디어 아이템들을 선택 및 플레이하기 위해 미디어 선택 채팅 대화를 열 수 있다. 일부 구현들에서, 예컨대, 단일 수집으로부터 미디어 아이템들의 뷰잉 및 플레이를 허용하기 위해, 사용자의 미디어 아이템들을 미디어 선택 채팅 대화에 자동으로 삽입하기 위한 옵션이 제공될 수 있다.
[00450] 일부 구현들에서, 시스템(예컨대, 봇)은 임베디드 세션에서 공유되었던 미디어 아이템과 유사한 것으로 결정되는 추가적인 미디어 아이템들에 대한 채팅 인터페이스에서의 선택들을 제공한다. 예컨대, 추가적인 미디어 아이템들은 동일한 장르를 가질 수 있는 것, 동일한 아티스트들에 의해 저술된 것 또는 동일한 아티스트들을 특징으로 하는 것 등일 수 있다.
[00451] 일부 구현들에서, 공유 옵션이 제공될 수 있고, 이는, 만약 선택되면, 임베디드 인터페이스에서 플레이되고 있는 미디어 아이템이 상이한 채팅 대화에 대해 공유되게 하거나 선택된 공유 액션에 대해 생성된 새로운 채팅 대화에 공유되게 한다. 예컨대, 공유 옵션이 디스플레이되게 하기 위해, 사용자는 공유 옵션이 디스플레이되게 하기 위한 임계 시간량 동안 미디어 아이템을 플레이하는 임베디드 인터페이스를 터치할 수 있거나 또는 특정한 디스플레이된 인터페이스 엘리먼트를 선택할 수 있다.
[00452] 일부 구현들에서, 사용자는 미디어 아이템을 플레이하는 임베디드 세션과 연관된 채팅 대화에 대한 코멘트를 입력하는 것을 가능하게 하기 위해 코멘트 제어를 선택할 수 있다. 일부 구현들에서, 미디어 아이템을 플레이하기 위한 링크가 채팅 대화에 포스팅되고, 사용자에 의한 사용자 코멘트 입력이 그에 후속한다. 만약 상이한 채팅 대화(예컨대, 상술된 바와 같은 미디어 선택 채팅 대화)에서 뷰잉되는 저장된 미디어 아이템을 뷰잉하는 동안 코멘트 제어가 선택되면, 선택된 코멘트 제어는 원래의 채팅 대화가 열리고 디스플레이되게 하여, 미디어 아이템이 임베디드 세션에서 플레이되었던 원래의 채팅 대화에서 사람이 코멘트하는 것을 허용할 수 있다.
[00453] 일부 구현들에서, 본원에 설명된 바와 같은 제안된 응답들이 봇들과 함께 사용될 수 있다. 예컨대, 제안된 응답의 선택은 임베디드 애플리케이션, 메시징 애플리케이션 또는 다른 프로그램 또는 디바이스에서 하나 이상의 액션들을 수행하도록 제안된 응답과 연관된 봇을 트리거링할 수 있다. 일부 예들에서, 봇은 임베디드 애플리케이션을 열지 않고 임베디드 애플리케이션 콘텐츠 상의 액션을 수행할 수 있다. 예컨대, 임베디드 애플리케이션은 사용자가 (예컨대, 커맨드를 봇에 제공함으로써) 채팅 인터페이스에서 임베디드 애플리케이션에 커맨드들을 제공하도록 허용할 수 있고, 사용자들이 임베디드 인터페이스를 통해 시각적으로 임베디드 애플리케이션과 상호작용하도록 허용할 수 있다. 임베디드 애플리케이션이 서버 컴포넌트를 갖거나 그와 통신하는 일부 예들(예컨대, 게임 상태들이 서버에 의해 관리되는 게임)에서, 임베디드 애플리케이션 및 임베디드 인터페이스에서 액션들을 수행하기 위해 채팅 메시지에서 봇에 커맨딩하는 것은 또한 다른 멤버 디바이스들에 의해 디스플레이되는 임베디드 인터페이스들에서 액션들이 수행되게 한다. 다른 예에서, 공유 리스트 임베디드 애플리케이션은 리스트 데이터가 서버 상에 보관되게 한다. 제1 사용자는 공유 리스트 임베디드 애플리케이션을 열고 아이템들을 리스트에 추가하거나 리스트로부터 아이템들을 제거한다. 다른 사용자들의 디바이스들은 채팅 인터페이스를 사용하여 임베디드 애플리케이션에 대한 봇 커맨드들을 통해 리스트에 아이템들을 추가하기 위해 제안된 응답들을 디스플레이할 수 있다. 예컨대, 제안된 응답들은, "don't forget to buy drinks for the party"(예컨대, "Add 'Buy drinks' to the 'Tonight's Party' list"라는 제안된 응답)와 같은 채팅 메시지들에 대한 응답일 수 있거나 또는 "I just bought the sodas for tonight's party"와 같은 채팅 메시지들에 대한 응답(예컨대, "Remove 'Buy Sodas' from the 'Tonight's Party' list"의 제안된 커맨드)일 수 있다. 일부 구현들에서, 이 예시적인 제안된 응답들은 연관된 사용자에 의해 선택될 때, 임베디드 애플리케이션에 커맨드를 전송하도록 봇에 요청할 수 있고, 예컨대, 임베디드 인터페이스에 커맨드를 제공하지 않을 것이다. 일부 구현들에서, 임베디드 인터페이스 이외에 (채팅 인터페이스를 통해) 봇 인터페이스를 제공하는 이점은, 시각적 인터페이스가 디바이스 상에 디스플레이될 필요가 없어서 디바이스 프로세싱, 메모리 및 스크린 공간 자원들을 절약하고, 임베디드 애플리케이션에 의해 관리되는 콘텐츠 데이터와의 신속한 사용자 상호작용을 가능하게 한다는 점이다.
[00454] 도 11은 일부 구현들에 따라, 임베디드 애플리케이션의 개시 및 사용자가 임베디드 세션에 합류하는 것을 포함하는 예시적인 시퀀스의 개략적 예시이다. 이 예에서, 제1 사용자(1102)("사용자 1")는 제1 채팅 인터페이스를 디스플레이하는 메시징 애플리케이션(1104)을 실행하는 제1 사용자 디바이스를 동작시키고 있다. 제2 사용자(1106)("사용자 2")는 제2 채팅 인터페이스를 디스플레이하는 제2 메시징 애플리케이션(1108)을 실행하는 제2 사용자 디바이스를 동작시키고 있다. 채팅 대화는, 사용자들(1102 및 1106)(및 이들의 디바이스들)이 참여하고 있는 메시징 애플리케이션들(1104 및 1108)간의 네트워크를 통해 제공되고, 여기서 사용자들은 참여하는 사용자 디바이스들에 의해 디스플레이될 자신들의 개별적인 채팅 인터페이스들에서 메시지들을 입력하고 있다.
[00455] 1110에서, 사용자(1102)는 메시징 애플리케이션(1104)에 사용자 입력을 제공함으로써 임베디드 애플리케이션(1114)을 열도록 선택한다. 1114에서, 제1 메시징 애플리케이션(1104)은 선택된 임베디드 애플리케이션(1112)을 개시한다. 일부 구현들에서, 제1 임베디드 애플리케이션(1112)은 서버, 예컨대, 임베디드 애플리케이션 서버(150)(도시되지 않음)로부터 다운로드된다. 1116에서, 개시된 제1 임베디드 애플리케이션(1112)은, 임베디드 인터페이스가, 예컨대, 제1 채팅 인터페이스와 인접하거나 그렇지 않으면 그와 연관되고 제1 사용자(1102)에 의해 뷰잉되는 제1 사용자 디바이스에 의해 디스플레이되게 한다.
[00456] 임베디드 애플리케이션을 시작하는 것 이외에, 1118에서 제1 메시징 애플리케이션은 제1 임베디드 애플리케이션(1112)의 개시에 기반하여 개시 이벤트(또는 제1 사용자의 합류 이벤트)를 표시하는 네트워크를 통한 정보를 전송한다. 이 예에서, 1118에서의 이벤트는 메시지 라우터(1120)에 전송된다. 메시지 라우터(1120)는 다양한 예들에서, 세션 서버(152)(예컨대, 메시징 서버(101)에 포함됨) 또는 다른 서버일 수 있다. 임베디드 세션은 개시 이벤트에 대한 응답으로 메시지 라우터에서 생성될 수 있거나, 일부 구현들에서, 제1 사용자 디바이스에 의해 생성될 수 있는 식이다. 메시지 라우터(1120)는 1118에서, 제2 사용자 디바이스 상에서 동작하는 제2 메시징 애플리케이션(1108)에 합류 이벤트를 전송한다. 1122에서, 제2 메시징 애플리케이션(1108)은 통지가, 예컨대, 제2 채팅 인터페이스에서 제2 사용자에 의해 뷰잉될 제2 사용자 디바이스에 의해 디스플레이되게 하여, 제1 사용자(1102)가 임베디드 세션을 개시한 것을 표시한다. 이 예에서, 통지는 제2 사용자가 임베디드 세션에 합류하기 위해 선택할 디스플레이되는 합류 옵션(예컨대, 인터페이스 엘리먼트)을 포함한다.
[00457] 1124에서, 제2 사용자(1106)는 임베디드 세션에 합류하기 위해 디스플레이되는 합류 옵션을 선택하고, 여기서 이 선택은 제2 메시징 애플리케이션(1108)에 제공된다. 합류 선택에 대한 응답으로, 1126에서, 제2 메시징 애플리케이션(1108)은 제2 사용자 디바이스 상에서 제2 임베디드 애플리케이션(1128)의 개시(예컨대, 일부 구현들에서 다운로드됨)를 유발한다. 1130에서, 제2 임베디드 애플리케이션은 제2 사용자 디바이스 상에서 제2 임베디드 인터페이스의 디스플레이를 유발한다. 제2 임베디드 애플리케이션을 개시하는 것 이외에, 1132에서 제2 메시징 애플리케이션(1108)은, 1124에서의 합류 선택에 대한 응답으로 제2 사용자의 합류 이벤트를 표시하는 정보를 네트워크를 통해 임베디드 세션에 전송한다. 이 예에서, 합류 이벤트(1132)는 메시지 라우터(1120)에 전송된다.
[00458] 합류 이벤트(1132)는 메시지 라우터(1120)에 의해 네트워크를 통해 제1 사용자 디바이스 상의 제1 메시징 애플리케이션(1104)에 전송된다. 응답으로, 1122에서, 제1 메시징 애플리케이션(1104)은 임베디드 세션에 합류하는 제2 사용자에 대한 제1 임베디드 애플리케이션(1112)에 멤버 업데이트를 전송한다. 예컨대, 멤버 업데이트는 본원에 설명된 바와 같이, 제2 사용자가 합류한 것을 표시하는 데이터, 제2 사용자의 채팅 아이덴티티, 제2 사용자의 선택된 사용자 상태 등을 포함할 수 있다. 멤버 업데이트에 대한 응답으로, 제1 임베디드 애플리케이션(1112)은 제1 사용자(1102)에 의해 뷰잉되는 바와 같이, 1136에서 제1 임베디드 인터페이스의 디스플레이를 업데이트한다. 예컨대, 제2 사용자의 채팅 아이덴티티(또는 다른 사용자 아이덴티티)는 임베디드 인터페이스에 디스플레이될 수 있다.
[00459] 시스템들, 방법들, 및 보관된 소프트웨어 명령들을 갖는 비-일시적 컴퓨터 판독가능 매체의 다양한 예시적인 구현들에서, 임베디드 애플리케이션은 메시징 애플리케이션과 연관하여 제공된다. 제1 임베디드 애플리케이션은 적어도 부분적으로 제1 사용자 디바이스 상에서 실행되는 제1 메시징 애플리케이션에 의해 디스플레이되는 제1 채팅 인터페이스와 연관하여 개시될 수 있다. 제1 채팅 인터페이스는 네트워크를 통해 채팅 대화에 참여하는 하나 이상의 다른 사용자 디바이스들로부터 발신하는 제1 사용자로부터의 제1 사용자 입력 및 디스플레이 메시지들을 수신하도록 구성된다. 하나 이상의 다른 사용자 디바이스들은 하나 이상의 채팅 사용자들과 연관되고, 채팅 사용자들은 개별적인 채팅 아이덴티티들과 연관된다. 다른 사용자 디바이스들의 하나 이상의 특정 사용자 디바이스들이 제1 임베디드 애플리케이션과 연관된 임베디드 세션에 연결되었음을 표시하는 표시가 네트워크를 통해 수신된다. 표시에 대한 응답으로, 하나 이상의 채팅 아이덴티티들이 제1 메시징 애플리케이션으로부터 제1 임베디드 애플리케이션에 제공되고, 이는 특정 사용자 디바이스들의 하나 이상의 특정 채팅 사용자들과 연관된다. 특정 채팅 사용자들은 임베디드 세션의 하나 이상의 멤버 사용자들로서 지정되고, 제1 임베디드 애플리케이션은 임베디드 세션의 특정 사용자 디바이스들 중 적어도 하나로부터 수신된 데이터에 기반하여 업데이트된다.
[00460] 추가적인 예들에서, 제1 임베디드 애플리케이션은 제1 채팅 인터페이스의 일부로서 디스플레이되는 임베디드 인터페이스에 대한 제1 사용자로부터의 제1 사용자 입력을 수신하고, 제1 사용자 입력은 임베디드 인터페이스에서 인터페이스 엘리먼트의 선택을 포함한다. 제1 임베디드 애플리케이션은 제1 사용자 입력에 대한 응답으로 업데이트된다. 일부 예들에서, 임베디드 세션의 특정 사용자 디바이스들 각각은 개별적인 특정 사용자 디바이스 상에 디스플레이되는 개별적인 채팅 인터페이스와 연관된 개별적인 임베디드 인터페이스를 제공하는 개별적인 임베디드 애플리케이션을 실행하고, 제1 임베디드 애플리케이션은 임베디드 세션의 특정 사용자 디바이스들 중 적어도 하나로부터 수신된 데이터에 기반하여 업데이트된다. 데이터는 임베디드 세션의 하나 이상의 멤버 사용자들 중 적어도 하나로부터 개별적인 임베디드 인터페이스들 중 적어도 하나에 의해 수신된 다른 사용자 입력을 포함할 수 있다. 출력 데이터는 제1 채팅 인터페이스에서 디스플레이될 제1 임베디드 애플리케이션으로부터 획득될 수 있고, 출력 데이터를 수신하는 것에 대한 응답으로, 제1 사용자 디바이스에 의해 프롬프트가 디스플레이되고, 프롬프트는 채팅 인터페이스에서 출력 데이터의 디스플레이에 대해 동의하기 위한 사용자-선택가능 제어를 포함한다. 제1 임베디드 애플리케이션에 하나 이상의 채팅 아이덴티티들을 제공하기 전에, 익명화된 채팅 아이덴티티들을 생성하기 위해 채팅 아이덴티티들 중 하나 이상은 익명화되어, 익명화된 채팅 아이덴티티들이 제1 임베디드 애플리케이션에 제공된다.
[00461] 추가적인 예들에서, 채팅 대화에 참여하는 다른 사용자 디바이스들에 정보가 송신되고, 이는 다른 사용자 디바이스들에 의한 인터페이스 엘리먼트의 디스플레이, 다른 사용자 디바이스들 각각에서 선택적인 사용자 입력을 수신하는 인터페이스 엘리먼트, 및 특정 사용자 디바이스 상의 인터페이스 엘리먼트에서 선택적인 사용자 입력을 수신하는 것에 대한 응답으로 특정 사용자 디바이스를 임베디드 세션의 멤버 디바이스로서 지정하는 것을 유발한다. 하나 이상의 특정 사용자 디바이스들의 하나 이상의 특징들이 결정되고 제1 임베디드 애플리케이션에 제공될 수 있고, 여기서 특징들은 특정 사용자 디바이스들 중 적어도 하나의 지리적 로케이션, 특정 사용자 디바이스들 중 적어도 하나에 대한 로컬 타임 및/또는 특정 사용자 디바이스들 중 적어도 하나에 대한 네트워크에 걸쳐 이용가능한 데이터 대역폭을 포함하고, 여기서 특징들은 특정 사용자 디바이스들에 의해 디스플레이될 출력 정보를 결정하기 위해 그리고/또는 네트워크를 통한 하나 이상의 다른 디바이스들로부터 제1 사용자 디바이스로의 입력 데이터의 송신에 대한 수정을 유발하기 위해 제1 임베디드 애플리케이션에 의해 사용된다. 표시는, 임베디드 세션을 관리하는 서버로부터 수신될 수 있고, 제1 임베디드 애플리케이션에 대한 업데이트들은 서버로부터 수신될 수 있고, 여기서 업데이트들은 서버에 제공되는 다른 사용자 입력인 특정 채팅 사용자들로부터의 다른 사용자 입력에 기반한다.
[00462] 추가적인 예들에서, 하나 이상의 다른 사용자 디바이스들의 개별적인 채팅 인터페이스들에서 디스플레이될 통지가 출력되고, 여기서 통지는 특정 사용자 디바이스들이 임베디드 세션의 멤버 디바이스들임을 표시한다. 일부 구현들에서, 제1 임베디드 애플리케이션에서 발생하고 미디어 아이템의 플레이백의 개시를 포함하는 이벤트들을 포함하고 미디어 아이템의 플레이백의 종료, 제1 사용자 입력 및/또는 다른 사용자 입력에 기반한 미디어 아이템의 플레이백에서의 변화, 임베디드 세션의 게임에서 발생하는 게임 이벤트, 제1 사용자 입력 및/또는 다른 사용자 입력에 기반한 게임에 대한 업데이트 및/또는 제1 사용자 입력 및/또는 다른 사용자 입력에 기반한 공유 콘텐츠 문서에 대한 업데이트를 포함하는, 임베디드 세션에서 발생하는 하나 이상의 특정 타입들의 이벤트들에 대한 응답으로 채팅 대화에 대한 통지가 출력된다. 일부 구현들에서, 하나 이상의 이벤트들이 서버 상에서 발생했음을 표시하는 서버 이벤트 정보를 수신하는 것 및 제1 사용자 디바이스 상에서 디스플레이하기 위해 제1 임베디드 애플리케이션에 서버 이벤트 정보를 제공하는 것에 대한 응답으로 채팅 대화에 대한 통지가 출력된다.
[00463] 추가적인 예들에서, 임베디드 세션 내의 제안 이벤트는, 제1 채팅 인터페이스에서 제1 사용자로부터 수신된 제2 사용자 입력, 제1 임베디드 애플리케이션으로부터의 임베디드 이벤트 정보 및/또는 네트워크에 커플링된 서버로부터 서버 이벤트 정보를 수신하는 것, 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하는 것, 및 제1 사용자 디바이스에 의해 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 것에 기반하여 결정된다. 예컨대, 선택된 제안된 응답 아이템을 표시하는 제3 사용자 입력이 수신되어, 제1 사용자 디바이스 상에서 그리고 채팅 대화에 참여하는 다른 사용자 디바이스들에서 디스플레이되는 제1 채팅 인터페이스에서 선택된 제안된 응답 아이템과 연관된 채팅 메시지의 출력을 유발할 수 있다. 다른 예에서, 제3 사용자는 선택된 제안된 응답 아이템을 선택하는 것을 입력하고 선택된 제안된 응답 아이템과 연관된 하나 이상의 커맨드들을 제공한다. 다양한 예들에서, 커맨드들은 제1 임베디드 애플리케이션에 제공되는 적어도 하나의 제1 커맨드, 제1 메시징 애플리케이션에 제공되는 적어도 하나의 제2 커맨드 및/또는 제1 사용자 디바이스 상에서 실행되는 상이한 애플리케이션으로부터 출력 정보의 디스플레이를 유발하기 위해 제1 사용자 디바이스에 제공되는 적어도 하나의 제3 커맨드를 포함할 수 있다. 출력 정보는 제1 사용자 디바이스와 통신하는 서버 디바이스로부터 수신된 정보를 포함할 수 있다. 추가적인 예들에서, 커맨드들은, 제2 콘텐츠 아이템이 제1 사용자 디바이스 상에서 임베디드 애플리케이션의 임베디드 인터페이스에서 출력되고 있는 제1 콘텐츠 아이템과 동일하다고 결정하는 것에 대한 응답으로, 임베디드 세션에 제1 세트의 하나 이상의 다른 사용자들을 추가하기 위한 제1 커맨드를 포함할 수 있고, 여기서 제2 콘텐츠 아이템은 채팅 대화에 참여하지 않은 제1 세트의 하나 이상의 사용자 디바이스들 상에 디스플레이된다. 커맨드는, 제2 세트의 하나 이상의 다른 사용자들이 제1 사용자 디바이스 상의 임베디드 인터페이스에서 출력되고 있는 제3 콘텐츠 아이템과 동일한 제4 콘텐츠 아이템과 연관된 입력 사용자 코멘트들을 갖는다고 결정하는 것에 대한 응답으로, 임베디드 세션에 제2 세트의 하나 이상의 다른 사용자들을 추가하기 위한 제2 커맨드를 포함할 수 있고, 여기서 제4 콘텐츠 아이템은 채팅 대화에 참여하지 않은 제2 세트의 하나 이상의 사용자 디바이스들 상에 디스플레이된다.
[00464] 추가적인 예들에서, 콘텐츠 데이터는, 제1 사용자 디바이스 및 하나 이상의 특정 사용자 디바이스들 상에 디스플레이되는 임베디드 인터페이스에서 임베디드 세션에 대한 임베디드 애플리케이션에 의해 출력 정보가 디스플레이되게 하기 위해, 서버 디바이스에서 실행되는 서버 애플리케이션으로부터 네트워크를 통해 메시징 애플리케이션에서 수신되고 임베디드 애플리케이션에 제공될 수 있다. 이벤트 정보는 서버 애플리케이션에서 발생하는 제안 이벤트를 표시하는 네트워크를 통해 수신되고, 제안 이벤트는 하나 이상의 채팅 사용자들과 상이한 하나 이상의 네트워크 사용자들에 의한 서버 애플리케이션에 의해 수신된 입력에 기반한다. 제안 이벤트에 응답하여 하나 이상의 제안된 응답 아이템들이 획득되고, 제안된 응답 아이템들은 제1 사용자 디바이스 상의 제1 채팅 인터페이스에서 디스플레이된다. 제안된 응답 아이템들은 메시지가 채팅 인터페이스에 디스플레이되게 하도록 그리고/또는 커맨드가 임베디드 애플리케이션 및 메시징 애플리케이션 중 하나에 전송되게 하도록 사용자 입력에 의해 선택가능하다.
[00465] 추가적인 예들에서, 하나 이상의 특정 채팅 사용자들이 임베디드 세션의 하나 이상의 멤버 사용자들로 지정되기 전에, 선택 입력은 임베디드 세션에 대한 하나 이상의 연관된 사용자 역할들을 선택하는 특정 채팅 사용자들로부터 수신된다. 연관된 사용자 역할들은 복수의 미리정의된 사용자 역할들로부터 선택된다. 선택 입력을 수신하는 것에 대한 응답으로, 하나 이상의 특정 채팅 사용자들 각각은, 임베디드 세션에서, 특정 채팅 사용자에 의해 선택된 개별적인 연관된 사용자 역할을 할당받는 것이 가능하게 된다. 각각의 특정 채팅 사용자는 특정 채팅 사용자에 의해 선택된 개별적인 연관된 사용자 역할과 연관된 임베디드 애플리케이션의 하나 이상의 기능들을 활성화시키는 것이 가능하게 된다. 연관된 사용자 역할들 및 특정 채팅 사용자들의 표시들은 제1 메시징 애플리케이션에 의해 다른 사용자 디바이스들에 출력되어 디스플레이된다.
[00466] 추가적인 예들에서, 제1 사용자 디바이스는 적어도 부분적으로 제1 사용자 디바이스를 실행하는 제1 메시징 애플리케이션에 의해 적어도 부분적으로 제공되는 채팅 대화에 합류하고, 제1 채팅 인터페이스는 제1 사용자로부터 제1 사용자 입력을 수신하고 네트워크를 통해 채팅 대화에 참여하는 하나 이상의 다른 채팅 디바이스들의 하나 이상의 다른 채팅 사용자들로부터 발신하는 메시지들을 디스플레이하도록 구성된다. 각각의 채팅 사용자는 제1 채팅 인터페이스에서 디스플레이되는 채팅 아이덴티티와 연관된다. 제2 사용자 입력은 제1 사용자로부터 제1 채팅 인터페이스로 수신되고, 제2 사용자 입력에 대한 응답으로, 제1 임베디드 애플리케이션은 제1 채팅 인터페이스와 연관하여 개시된다. 제1 임베디드 애플리케이션은, 제1 채팅 인터페이스의 적어도 일부가 가시적이도록 제1 사용자 디바이스에 의해 디스플레이되는 임베디드 인터페이스에서 출력 정보를 제공한다. 제1 사용자와 연관된 채팅 아이덴티티는 제1 메시징 애플리케이션으로부터 제1 임베디드 애플리케이션에 제공되고, 여기서 제1 사용자는 제1 임베디드 애플리케이션과 연관된 임베디드 세션의 멤버 사용자로서 지정되고, 제1 임베디드 애플리케이션은 제1 사용자로부터 임베디드 인터페이스로 수신되는 제3 사용자 입력에 기반하여 업데이트된다. 일부 예들에서, 다른 채팅 사용자들은 제1 사용자 디바이스 및 네트워크에 의해 제1 사용자 디바이스에 연결되는 서버 디바이스 중 적어도 하나 상에서 실행되는 봇을 포함한다. 제1 채팅 인터페이스에서 제1 사용자로부터 수신된 제4 사용자 입력에 기반하여, 봇은 임베디드 인터페이스에서 콘텐츠 데이터의 디스플레이를 유발한다.
[00467] 추가적인 예들에서, 제1 사용자 입력은, 제1 사용자로부터, 제1 사용자 디바이스 상에서 제1 메시징 애플리케이션과 연관하여 실행되는 제1 임베디드 애플리케이션에 의해 제1 채팅 인터페이스와 연관하여 디스플레이되는 제1 임베디드 인터페이스로 수신된다. 제1 사용자 입력은 제1 임베디드 애플리케이션에 의해 수신되고, 제1 채팅 인터페이스는 적어도 부분적으로 제1 사용자 디바이스에서 실행되는 제1 메시징 애플리케이션에 의해 디스플레이되고, 제1 채팅 인터페이스는 제1 사용자로부터의 제2 사용자 입력을 수신하고 네트워크를 통해 채팅 대화에 참여하는 하나 이상의 다른 사용자 디바이스들로부터 수신된 메시지들을 디스플레이하도록 구성된다. 다른 사용자 디바이스들 각각은 개별적인 채팅 사용자와 연관되고, 각각의 채팅 사용자는 제1 채팅 인터페이스에서 디스플레이되는 채팅 아이덴티티와 연관된다. 다른 사용자 입력은 하나 이상의 다른 사용자 디바이스들의 하나 이상의 멤버 디바이스들의 하나 이상의 멤버 사용자들로부터 수신되고, 여기서 멤버 디바이스들은 제1 임베디드 애플리케이션과 연관된 임베디드 세션에 포함된다. 임베디드 애플리케이션의 하나 이상의 상태들은 제1 사용자 입력에 기초하여 그리고 다른 사용자 입력에 기초하여 업데이트되고, 여기서 업데이트하는 것은 개별 사용자 상황을 멤버 사용자들 각각에게 할당하는 것을 포함한다. 멤버 사용자들의 개별 사용자 상황을 표시하는 정보는 채팅 대화에 참여하는 다른 사용자 디바이스들에 의해 디스플레이될 제1 메시징 애플리케이션에 제공된다.
[00468] 도 12는 본원에서 설명된 하나 이상의 특징들을 구현하기 위해 사용될 수 있는 예시적인 디바이스(1200)의 블록도이다. 일 예에서, 디바이스(1200)는 클라이언트 디바이스, 예컨대, 도 1에 도시된 클라이언트 디바이스들(115) 중 임의의 것을 구현하기 위해 사용될 수 있다. 대안적으로, 디바이스(1200)는 서버 디바이스, 예컨대, 도 1의 메시징 서버(101) 및/또는 다른 서버들을 구현할 수 있다. 디바이스(1200)는 임의의 적합한 컴퓨터 시스템, 서버, 또는 상술된 바와 같은 다른 전자 또는 하드웨어 디바이스일 수 있다.
[00469] 본원에서 설명되는 하나 이상의 방법들은 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 프로그램, 웹 브라우저 상에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스(예컨대, 셀 폰, 스마트 폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목시계, 암밴드, 보석류, 헤드웨어, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경 등), 랩탑 컴퓨터 등) 상에서 실행되는 모바일 애플리케이션("앱")일 수 있다. 일 예에서, 클라이언트/서버 아키텍처가 사용될 수 있는데, 예컨대, (클라이언트 디바이스로서) 모바일 컴퓨팅 디바이스는 사용자 입력 데이터를 서버 디바이스에 전송하고 출력을 위해(예컨대, 디스플레이를 위해) 최종 출력 데이터를 서버로부터 수신한다. 다른 예에서, 모든 컴퓨테이션들은 모바일 컴퓨팅 디바이스 상의 모바일 앱(및/또는 다른 앱들) 내에서 수행될 수 있다. 다른 예에서, 컴퓨테이션들은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스들간에 분할될 수 있다.
[00470] 일부 구현들에서, 디바이스(1200)는 프로세서(1202), 메모리(1204) 및 I/O(input/output) 인터페이스(1206)를 포함한다. 프로세서(1202)는 프로그램 코드를 실행하고 디바이스(1200)의 기본 동작들을 제어하는 하나 이상의 프로세서들 및/또는 프로세싱 회로들일 수 있다. "프로세서"는 데이터, 신호들 또는 다른 정보를 프로세싱하는 임의의 적합한 하드웨어 및/또는 소프트웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 범용 CPU(central processing unit), 다수의 프로세싱 유닛들, 기능성을 달성하기 위한 전용 회로망 또는 다른 시스템들을 갖는 시스템을 포함할 수 있다. 프로세싱은 특정 지리적 로케이션으로 또는 시간적 제한들로 제한될 필요가 없다. 예컨대, 프로세서는 "실시간", "오프라인", "배치 모드" 등에서 자신의 기능들을 수행할 수 있다. 프로세싱의 일부들은 상이한(또는 동일한) 프로세싱 시스템들에 의해 상이한 시간들에 및 상이한 로케이션들에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
[00471] 메모리(1204)는 전형적으로 프로세서(1202)에 의한 액세스를 위해 디바이스(1200)에 제공되고, 프로세서에 의한 실행을 위해 명령들을 저장하기에 적합하고 프로세서(1202)와 별개로 로케이팅되고 그리고/또는 그에 통합되는 임의의 적합한 프로세서-판독가능 저장 매체, 이를테면 RAM(random access memory), ROM(read-only memory), EEPROM(Electrical Erasable Read-only Memory), 플래시 메모리 등일 수 있다. 메모리(1204)는 운영 시스템(1208), 메시징 애플리케이션(1210) 및 다른 애플리케이션들(또는 엔진들)(1212), 이를테면 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 통지 엔진, 소셜 네트워킹 엔진 등을 포함하는 프로세서(1202)에 의해 서버 디바이스(1200) 상에서 실행되는 소프트웨어를 저장할 수 있다. 일부 구현들에서, 메시징 애플리케이션(1210)은 프로세서(1202)가 본원에서 설명되는 기능들, 예컨대, 도 2-7의 방법들의 일부 또는 전부를 수행하는 것을 가능하게 하는 명령들을 포함할 수 있다. 예컨대, 메시징 애플리케이션(1210)은 본원에 설명된 바와 같이 다른 애플리케이션들 및 디바이스들과 통신할 수 있다. 일부 구현들에서, 메시징 애플리케이션(1210)은 하나 이상의 임베디드 애플리케이션들(1216)을 포함하거나 이들과 연관될 수 있고, 하나 이상의 임베디드 애플리케이션들(1216)은 본원에 설명된 바와 같은 특징들을 제공할 수 있고 네트워크를 통해 연결된 다른 애플리케이션들(1212) 및 디바이스들로부터 정보를 전송하고 수신하기 위해 메시징 애플리케이션(1210)과 통신할 수 있다. 일부 구현들에서, 메시징 애플리케이션(1210)은 하나 이상의 모듈들, 이를테면 채팅 인터페이스 및/또는 다른 사용자 인터페이스들을 관리하는 사용자 상호작용 모듈(1218)을 포함할 수 있고 그리고/또는 이 모듈들은 디바이스(1200)와 통신하는 다른 애플리케이션들 또는 디바이스들로 구현될 수 있다. 사용자 상호작용 모듈(1218) 및/또는 다른 애플리케이션들(1212) 중 하나 이상은, 예컨대, 선택가능한 옵션들 또는 제어들, 및 선택된 옵션들에 기반한 데이터를 디스플레이하기 위해 사용자 입력에 응답하여 디스플레이되는 사용자 인터페이스를 제공할 수 있다.
[00472] 다른 애플리케이션들(1212)은 예컨대, 이미지 편집 애플리케이션들, 미디어 디스플레이 애플리케이션들, 통신 애플리케이션들, 웹 호스팅 엔진 또는 애플리케이션 등을 포함할 수 있다. 본원에서 개시되는 하나 이상의 방법들은 예컨대, 예컨대, 임의의 타입의 컴퓨팅 디바이스 상에서 실행되는 독립형 컴퓨터 프로그램, 웹 페이지들을 갖는 웹 애플리케이션으로서, 모바일 컴퓨팅 디바이스 상에서 실행되는 모바일 애플리케이션("앱")으로서 등, 몇 가지 환경들 및 플랫폼에서 동작할 수 있다.
[00473] 다양한 구현들에서, 다른 애플리케이션들(1212)은 본원에서 설명되는 다양한 구현들에서 사용될 수 있는 머신-학습 애플리케이션(1230)을 포함할 수 있다. 예컨대, 머신-학습 애플리케이션(1230)은 베이지안 분류기들, 지원 벡터 머신들, 뉴럴 네트워크들 또는 다른 학습 기법들을 활용할 수 있다. 일부 구현들에서, 머신-학습 애플리케이션(1230)은 트레이닝된 모델, 추론 엔진 및 데이터를 포함할 수 있다. 일부 구현들에서, 데이터는 트레이닝 데이터, 예컨대 트레이닝된 모델을 생성하기 위해 사용된 데이터를 포함할 수 있다. 예컨대, 트레이닝 데이터는 임의의 타입의 데이터, 이를테면 텍스트, 이미지들, 오디오, 비디오 등을 포함할 수 있다. 트레이닝 데이터는 임의의 소스, 예컨대 트레이닝을 위해 구체적으로 마킹된 데이터 리포지토리, 머신-학습을 위한 트레이닝 데이터로서 사용하기 위한 허용이 제공되는 데이터 등으로부터 획득될 수 있다. 하나 이상의 사용자들이 트레이닝된 모델을 트레이닝하기 위해 이들의 개별 사용자 데이터의 사용을 허용하는 구현들에서, 트레이닝 데이터는 그러한 사용자 데이터를 포함할 수 있다. 사용자들이 이들의 개별 사용자 데이터의 사용을 허용하는 구현들에서, 데이터는 허용된 데이터, 이를테면 이미지들(예컨대, 사진들 또는 다른 사용자-생성된 이미지들), 통신들(예컨대, 이메일; 채팅 데이터, 이를테면 텍스트 메시지들, 보이스, 비디오 등), 문서들(예컨대, 스프레드시트들, 텍스트 문서들, 프리젠테이션들 등)을 포함할 수 있다.
[00474] 일부 구현들에서, 데이터는 수집된 데이터, 이를테면 맵 데이터, 이미지 데이터(예컨대, 위성 이미저리, 오버헤드 이미저리 등), 게임 데이터 등을 포함할 수 있다. 일부 구현들에서, 트레이닝 데이터는 트레이닝 목적으로 생성된 합성 데이터, 이를테면 트레이닝되고 있는 콘텍스트에서 사용자 입력 또는 활동에 기반하지 않는 데이터, 예컨대 시뮬레이팅된 대화들, 컴퓨터-생성된 이미지들 등으로부터 생성된 데이터를 포함할 수 있다. 일부 구현들에서, 머신-학습 애플리케이션(1230)은 데이터를 배제한다. 예컨대, 이 구현들에서, 트레이닝된 모델은 예컨대, 상이한 디바이스에서 생성될 수 있고, 머신-학습 애플리케이션(1230)의 일부로서 제공될 수 있다. 다양한 구현들에서, 트레이닝된 모델은 모델 구조 또는 형태 및 연관된 가중치들을 포함하는 데이터 파일로서 제공될 수 있다. 추론 엔진은 트레이닝된 모델에 대한 데이터 파일을 판독하고 트레이닝된 모델에 특정된 모델 구조 또는 형태에 기반하여 노드 연결성, 레이어들 및 레이어들 및 가중치들을 갖는 뉴럴 네트워크를 구현할 수 있다.
[00475] 머신-학습 애플리케이션은 또한 트레이닝된 모델을 포함한다. 일부 구현들에서, 트레이닝된 모델은 하나 이상의 모델 형태들 또는 구조들을 포함할 수 있다. 예컨대, 모델 형태들 또는 구조들은 임의의 타입의 뉴럴-네트워크, 이를테면 선형 네트워크, 복수의 레이어들(예컨대, 입력 레이어와 출력 레이어 사이의 "숨겨진 레이어들", 각각의 레이어는 선형 네트워크임)을 구현하는 딥 뉴럴 네트워크, 컨볼루셔널 뉴럴 네트워크(convolutional neural network)(예컨대, 입력 데이터를 다수의 부분들 또는 타일들로 분할 또는 파티셔닝하고, 하나 이상의 뉴럴-네트워크 레이어들을 사용하여 각각의 타일을 별도로 프로세싱하며, 각각의 타일의 프로세싱으로부터의 결과들을 애그리게이팅하는 네트워크), 시퀀스-대-시퀀스 뉴럴 네트워크(예컨대, 순차 데이터, 이를테면 문장 내의(예컨대, 채팅 메시지 내의) 단어들, 비디오 내의 프레임들 등을 입력으로 취하여 결과 시퀀스를 출력으로서 생성하는 네트워크) 등을 포함할 수 있다. 모델 형태 또는 구조는 다양한 노드들 간의 연결성 및 레이어들로의 노드들의 조직화를 특정할 수 있다. 예컨대, 제1 레이어(예컨대, 입력 레이어)의 노드들은 입력 데이터 또는 애플리케이션 데이터로서 데이터를 수신할 수 있다. 이러한 데이터는 예컨대, 트레이닝된 모델이 이미지 분석을 위해 사용될 때, 예컨대 노드당 하나 이상의 픽셀들을 포함할 수 있다. 후속하는 중간 레이어들은 모델 형태 또는 구조로 특정된 연결성마다 이전의 레이어의 노드들의 출력을 입력으로서 수신할 수 있다. 이 레이어들은 숨겨진 레이어들로도 또한 지칭될 수 있다. 최종 레이어(예컨대, 출력 레이어)는 머신-학습 애플리케이션(1230)의 출력을 생성한다. 예컨대, 출력은 특정 트레이닝된 모델에 따라, 이미지에 대한 한 세트의 라벨들, 다른 이미지들(예컨대, 이미지에 대한 피처 벡터)에 대한 이미지의 비교를 허용하는 이미지의 표현, 입력 문장에 대한 응답인 출력 문장, 입력 데이터에 대한 하나 이상의 카테고리들 등일 수 있다. 일부 구현들에서, 모델 형태 또는 구조는 또한, 각각의 레이어에서 노드들의 수 및/또는 타입을 특정한다.
[00476] 상이한 구현들에서, 트레이닝된 모델은 모델 구조 또는 형태에 따라 레이어들로 배열된 복수의 노드들을 포함할 수 있다. 일부 구현들에서, 노드들은 메모리가 없는, 예컨대 하나의 입력 유닛을 프로세싱하여 하나의 출력 유닛을 생성하도록 구성된 컴퓨테이셔널 노드들일 수 있다. 노드에 의해 수행된 컴퓨테이션은 예컨대, 복수의 노드 입력들 각각에 가중치를 곱하고, 가중된 합을 획득하고, 가중된 합을 바이어스 또는 인터셉트 값으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다. 일부 구현들에서, 노드에 의해 수행된 컴퓨테이션은 스텝/활성화 기능을 조정된 가중된 합에 적용하는 것을 또한 포함할 수 있다. 일부 구현들에서, 스텝/활성화 기능은 비선형 기능일 수 있다. 다양한 구현들에서, 이러한 컴퓨테이션은 동작들, 이를테면 행렬 곱을 포함할 수 있다. 일부 구현들에서, 복수의 노드들에 의한 컴퓨테이션들은 동시에, 예컨대 멀티코어 프로세서의 다수의 프로세서 코어들을 사용하여, GPU의 개별 프로세싱 유닛들을 사용하여, 또는 특수-목적용 뉴럴 회로망을 사용하여 병렬로 수행될 수 있다. 일부 구현들에서, 노드들은 메모리를 포함할 수 있고, 예컨대 후속 입력의 프로세싱시 하나 이상의 더 이전 입력들을 보관하고 사용하는 것이 가능할 수 있다. 예컨대, 메모리를 가진 노드들은 LSTM(long short-term memory) 노드들을 포함할 수 있다. LSTM 노드들은 노드가 FSM(Finite State Machine)처럼 작동하는 것을 허용하는 "상태"를 유지하기 위해 메모리를 사용할 수 있다. 그러한 노드들을 갖는 모델들은 순차 데이터, 예컨대 문장 또는 단락 내의 단어들, 비디오의 프레임들, 스피치 또는 다른 오디오 등을 프로세싱하는데 유용할 수 있다.
[00477] 일부 구현들에서, 트레이닝된 모델은 개별 노드들에 대한 임베딩들 또는 가중치들을 포함할 수 있다. 예컨대, 모델은 모델 형태 또는 구조에 의해 특정된 바와 같이 레이어들로 조직화된 복수의 노드들로서 개시될 수 있다. 초기화 시에, 모델 형태마다 연결되는 각각의 쌍의 노드들, 예컨대 뉴럴 네트워크의 연속 레이어들의 노드들 사이의 연결에 개별적인 가중치가 적용될 수 있다. 예컨대, 개별적인 가중치들은 랜덤하게 할당되거나 디폴트 값들로 초기화될 수 있다. 그 후, 모델은 예컨대, 상술된 데이터를 사용하여 트레이닝되어 결과를 생성할 수 있다.
[00478] 예컨대, 트레이닝은 감독된 학습 기법들을 적용하는 것을 포함할 수 있다. 감독된 학습에서, 트레이닝 데이터는 복수의 입력들(예컨대, 한 세트의 이미지들) 및 각각의 입력에 대한 대응하는 예상된 출력(예컨대, 각각의 이미지에 대한 하나 이상의 라벨들)을 포함할 수 있다. 모델의 출력과 예상된 출력의 비교에 기반하여, 예컨대 유사한 입력이 제공될 때 모델이 예상된 출력을 생성할 확률을 증가시키는 방식으로 가중치들의 값들이 자동적으로 조정된다.
[00479] 일부 구현들에서, 트레이닝은 감독되지 않은 학습 기법들을 적용하는 것을 포함할 수 있다. 감독되지 않은 학습에서, 입력 데이터만이 제공될 수 있고, 데이터를 구별하도록, 예컨대 입력 데이터를 복수의 그룹들로 클러스터링하도록 모델이 트레이닝될 수 있으며, 여기서 각각의 그룹은 어떤 방식으로 유사한 입력 데이터를 포함한다. 예컨대, 모델이 추상적 이미지들(예컨대, 합성 이미지들, 사람이 그린 이미지들 등)를 자연 이미지들(예컨대, 사진들)과 구별하게 이미지들을 구별하도록 모델이 트레이닝될 수 있다.
[00480] 다른 예에서, 감독되지 않은 학습을 사용하여 트레이닝된 모델은 입력 문장들 내의 단어들의 사용에 기반하여 단어들을 클러스터링할 수 있다. 일부 구현들에서, 예컨대, 머신-학습 애플리케이션(1230)에 의해 사용될 수 있는 지식 표현들을 생성하기 위해 감독되지 않은 학습이 사용될 수 있다. 다양한 구현들에서, 트레이닝된 모델은 모델 구조에 대응하는 한 세트의 가중치들 또는 임베딩들을 포함한다. 데이터가 생략된 구현들에서, 머신-학습 애플리케이션(1230)은 예컨대, 머신-학습 애플리케이션(1230)의 개발자에 의한, 제3자 등에 의한 사전 트레이닝에 기반한 트레이닝된 모델을 포함할 수 있다. 일부 구현들에서, 트레이닝된 모델은 고정된, 예컨대 가중치들을 제공하는 서버로부터 다운로드되는 한 세트의 가중치들을 포함할 수 있다.
[00481] 머신-학습 애플리케이션(1230)은 또한 추론 엔진을 포함할 수 있다. 추론 엔진은 트레이닝된 모델을 데이터, 이를테면 애플리케이션 데이터에 적용하여, 추론을 제공하도록 구성된다. 일부 구현들에서, 추론 엔진은 프로세서(1202)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 구현들에서, 추론 엔진은 프로세서(1202)가 트레이닝된 모델을 적용할 수 있게 하는 (예컨대, 프로그램가능 프로세서, FPGA(field programmable gate array) 등을 위한) 회로 구성을 특정할 수 있다. 일부 구현들에서, 추론 엔진은 소프트웨어 명령어, 하드웨어 명령어, 또는 조합을 포함할 수 있다. 일부 구현들에서, 추론 엔진은 추론 엔진을 인보킹하여, 예컨대 트레이닝된 모델을 애플리케이션 데이터에 적용하여 추론을 생성하도록 운영 시스템(1208) 및/또는 다른 애플리케이션들(1212)에 의해 사용될 수 있는 API(application programming interface)를 제시할 수 있다.
[00482] 머신-학습 애플리케이션(1230)은 몇 가지 기술적 이점들을 제공할 수 있다. 예컨대, 트레이닝된 모델이 감독되지 않은 학습에 기반하여 생성될 때, 트레이닝된 모델이 입력 데이터, 예컨대 애플리케이션 데이터로부터 지식 표현들(예컨대, 숫자 표현들)을 생성하도록 추론 엔진에 의해 적용될 수 있다. 예컨대, 이미지 분석을 위해 트레이닝된 모델은 입력 이미지들(예컨대, 10 MB)보다 작은 더 데이터 사이즈(예컨대, 1 KB)를 갖는 이미지들의 표현들을 생성할 수 있다. 일부 구현들에서, 이러한 표현들은 출력(예컨대, 라벨, 분류, 이미지를 서술하는 문장 등)을 생성할 프로세싱 비용(예컨대, 컴퓨테이셔널 비용, 메모리 사용 등)을 감소시키는 데 도움이 될 수 있다. 일부 구현들에서, 이러한 표현들은 추론 엔진의 출력으로부터 출력을 생성하는 상이한 머신-학습 애플리케이션에 대한 입력으로서 제공될 수 있다. 일부 구현들에서, 머신-학습 애플리케이션(1230)에 의해 생성된 지식 표현들은 예컨대, 네트워크를 통해 추가로 프로세싱을 수행하는 상이한 디바이스에 제공될 수 있다. 이러한 구현들에서, 이미지들보다 지식 표현들을 제공하는 것은 기술적 이점을 제공할 수 있는데, 예컨대 감소된 비용으로 보다 빠른 데이터 송신을 가능하게 할 수 있다. 다른 예에서, 문서들을 클러스터링하기 위해 트레이닝된 모델은 입력 문서들로부터 문서 클러스터들을 생성할 수 있다. 문서 클러스터들은 원본 문서에 액세스할 필요 없이 추가 프로세싱(예컨대, 문서가 토픽과 관련되는지 여부의 결정, 문서에 대한 분류 카테고리의 결정 등)에 적합할 수 있으며, 따라서 컴퓨테이셔널 비용을 절약할 수 있다.
[00483] 일부 구현들에서, 머신-학습 애플리케이션(1230)은 오프라인 방식으로 구현될 수 있다. 이 구현들에서, 트레이닝된 모델은 제1 스테이지에서 생성될 수 있고, 머신-학습 애플리케이션(1230)의 일부로서 제공될 수 있다. 일부 구현들에서, 머신-학습 애플리케이션(1230)은 온라인 방식으로 구현될 수 있다. 예컨대, 이러한 구현들에서, 머신-학습 애플리케이션(1230)(예컨대, 운영 시스템(1208), 다른 애플리케이션들(1212) 중 하나 이상의 애플리케이션)을 인보킹하는 애플리케이션은 머신-학습 애플리케이션(1230)에 의해 생성된 추론을 활용할 수 있는데, 예컨대 사용자에게 추론을 제공할 수 있고, 시스템 로그들(예컨대, 사용자에 의해 허용된다면, 추론에 기반하여 사용자가 취한 액션; 또는 추가 프로세싱을 위한 입력으로서 활용된다면, 추가 프로세싱의 결과)을 생성할 수 있다. 시스템 로그들은 주기적으로, 예컨대 시간별, 월별, 분기별 등으로 생성될 수 있고, 트레이닝된 모델을 업데이트하기 위해, 예컨대 트레이닝된 모델에 대한 임베딩들을 업데이트하기 위해 사용자 허용에 따라 사용될 수 있다.
[00484] 일부 구현들에서, 머신-학습 애플리케이션(1230)은 머신-학습 애플리케이션(1230)이 실행되는 디바이스(1200)의 특정 구성에 적응할 수 있는 방식으로 구현될 수 있다. 예컨대, 머신-학습 애플리케이션(1230)은 이용가능한 컴퓨테이셔널 자원들, 예컨대 프로세서(1202)를 활용하는 컴퓨테이셔널 그래프를 결정할 수 있다. 예컨대, 머신-학습 애플리케이션(1230)이 다수의 디바이스들 상에 분산형 애플리케이션으로서 구현된다면, 머신-학습 애플리케이션(1230)은 컴퓨테이션을 최적화하는 방식으로 개별 디바이스들 상에서 실행될 컴퓨테이션들을 결정할 수 있다. 다른 예에서, 머신-학습 애플리케이션(1230)은 프로세서(1202)가 특정 수의 GPU 코어들(예컨대, 1,000개)을 갖는 GPU를 포함한다고 결정할 수 있고, 그에 따라 (예컨대, 1,000개의 개별 프로세스들 또는 스레드들로서) 추론 엔진을 구현할 수 있다.
[00485] 일부 구현들에서, 머신-학습 애플리케이션(1230)은 트레이닝된 모델들의 앙상블을 구현할 수 있다. 예컨대, 트레이닝된 모델은 동일한 입력 데이터에 각각 적용가능한 복수의 트레이닝된 모델들을 포함할 수 있다. 이 구현들에서, 머신-학습 애플리케이션(1230)은 예컨대, 이용가능한 컴퓨테이셔널 자원들, 사전 추론들에 의한 성공률 등에 기반하여 특정 트레이닝된 모델을 선정할 수 있다. 일부 구현들에서, 머신-학습 애플리케이션(1230)은 복수의 트레이닝된 모델들이 적용되도록 추론 엔진을 실행할 수 있다. 이 구현들에서, 머신-학습 애플리케이션(1230)은 개별 모델들을 적용하는 것으로부터의 출력들을, 예컨대 각각의 트레이닝된 모델을 적용하는 것으로부터의 개별 출력들을 스코어링하는 투표-기법을 사용하여, 또는 하나 이상의 특정 출력들을 선정함으로써 조합할 수 있다. 추가로, 이 구현들에서, 머신-학습 애플리케이션은 개별 트레이닝된 모델들(예컨대, 0.5 ms)을 적용하기 위한 시간 임계치를 적용할 수 있고 시간 임계치 내에서 이용가능한 개별 출력들만을 활용할 수 있다. 시간 임계치 내에 수신되지 않은 출력들은 활용되지 않을 수 있는데, 예컨대 폐기될 수 있다. 예컨대, 그러한 접근법들은 머신-학습 애플리케이션(1230)을 인보킹하는 동안, 예컨대 운영 시스템(1208) 또는 하나 이상의 애플리케이션들(1212)에 의해 특정된 시간 제한이 있을 때 적합할 수 있다.
[00486] 상이한 구현들에서, 머신-학습 애플리케이션(1230)은 상이한 타입들의 출력들을 생성할 수 있다. 예컨대, 머신-학습 애플리케이션(1230)은 표현들 또는 클러스터들(예컨대, 입력 데이터의 숫자 표현들), (예컨대, 이미지들, 문서들 등을 포함하는 입력 데이터에 대한) 라벨들, (예컨대, 입력 문장 등에 대한 응답으로서 사용하기에 적합한 이미지 또는 비디오를 서술하는) 구절들 또는 문장들, (예컨대, 입력에 대한 응답으로 머신-학습 애플리케이션(1230)에 의해 생성된) 이미지들, (예컨대, 입력 비디오에 대한 응답인) 오디오 또는 비디오를 제공할 수 있으며, 머신-학습 애플리케이션(1230)은 트레이닝된 모델이 코믹 책 또는 특정 아티스트로부터의 트레이닝 데이터 등을 사용하여 트레이닝될 때 적용된, 예컨대 코믹-책 또는 특정 아티스트의 스타일에 렌더링된 특정 효과를 가진 출력 비디오를 생성할 수 있다. 일부 구현들에서, 머신 학습 애플리케이션(1230)은 인보킹 애플리케이션, 예컨대 운영 시스템(1208) 또는 하나 이상의 애플리케이션들(1212)에 의해 특정된 포맷에 기반하여 출력을 생성할 수 있다. 일부 구현들에서, 인보킹 애플리케이션은 다른 머신-학습 애플리케이션일 수 있다. 예컨대, 그러한 구성들은 생성적 대립쌍 네트워크에서 사용될 수 있으며, 여기서 머신-학습 애플리케이션(1230)으로부터의 출력을 사용하여 인보킹 머신-학습 애플리케이션이 트레이닝되고 이의 역도 가능하다.
[00487] 메모리(1204) 내의 임의의 소프트웨어는 대안적으로 임의의 다른 적절한 저장 로케이션 또는 컴퓨터-판독가능 매체에 보관될 수 있다. 또한, 메모리(1204)(및/또는 다른 연결된 저장 디바이스(들))는 하나 이상의 메시지들, 하나 이상의 분류법들, 전자 백과사전, 사전들, 유의어 사전들, 메시지 데이터, 문법들, 사용자 선호도들 및/또는 본원에서 설명된 특징들에 사용된 다른 명령들 및 데이터를 보관할 수 있다. 메모리(1204) 및 임의의 다른 타입의 저장소(자기 디스크, 광학 디스크, 자기 테이프 또는 다른 유형 미디어)는 "저장소" 또는 "저장 디바이스"로 고려될 수 있다.
[00488] I/O 인터페이스(1206)는 서버 디바이스(1200)를 다른 시스템들 및 디바이스들과 인터페이스하는 것을 가능하게 하기 위한 기능들을 제공할 수 있다. 인터페이싱된 디바이스들은 디바이스(1200)의 일부로서 포함될 수 있거나 별개이며 디바이스(1200)와 통신할 수 있다. 예컨대, 네트워크 통신 디바이스들, 저장 디바이스들(예컨대, 메모리 및/또는 데이터베이스(106)) 및 입력/출력 디바이스들은 I/O 인터페이스(1206)를 통해 통신할 수 있다. 일부 구현들에서, I/O 인터페이스는 인터페이스 디바이스들, 이를테면 입력 디바이스들(키보드, 포인팅 디바이스, 터치 스크린, 마이크로폰, 카메라, 스캐너, 센서 등) 및/또는 출력 디바이스들(디스플레이 디바이스, 스피커 디바이스들, 프린터, 모터 등)에 연결될 수 있다.
[00489] I/O 인터페이스(1206)에 연결될 수 있는 인터페이싱된 디바이스들의 일부 예들은 본원에 설명된 바와 같이 콘텐츠, 예컨대 이미지들, 비디오 및/또는 출력 애플리케이션의 사용자 인터페이스를 디스플레이하는 데 사용될 수 있는 하나 이상의 디스플레이 디바이스들(1220)을 포함할 수 있다. 디스플레이 디바이스(1220)는 로컬 연결들(예컨대, 디스플레이 버스)을 통해 그리고/또는 네트워크화된 연결들을 통해 디바이스(1200)에 연결될 수 있으며, 임의의 적합한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(1220)는 임의의 적합한 디스플레이 디바이스, 이를테면 LCD, LED, 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 디바이스를 포함할 수 있다. 예컨대, 디스플레이 디바이스(1220)는 모바일 디바이스 상에 제공된 평면 디스플레이 스크린, 고글 디바이스 내에 제공된 다수의 디스플레이 스크린들, 또는 컴퓨터 디바이스에 대한 모니터 스크린일 수 있다.
[00490] I/O 인터페이스(1206)는 다른 입력 및 출력 디바이스들에 인터페이스할 수 있다. 일부 예들은 이미지들을 캡처할 수 있는 하나 이상의 카메라들을 포함한다. 일부 구현들은 (예컨대, 캡처된 이미지들, 보이스 커맨드들 등의 일부로서) 사운드를 캡처하기 위한 마이크로폰, 사운드를 출력하기 위한 오디오 스피커 디바이스들, 또는 다른 입력 및 출력 디바이스들을 제공할 수 있다.
[00491] 예시의 편의상, 도 12는 프로세서(1202), 메모리(1204), I/O 인터페이스(1206) 및 소프트웨어 블록들(1208, 1210, 1212) 각각에 대한 하나의 블록을 도시한다. 이러한 블록들은 하나 이상의 프로세서들 또는 프로세싱 회로망들, 운영 시스템들, 메모리들, I/O 인터페이스들, 애플리케이션들 및/또는 소프트웨어 모듈들을 나타낼 수 있다. 다른 구현들에서, 디바이스(1200)는 도시된 모든 컴포넌트들을 갖지는 않을 수 있고 그리고/또는 본원에서 도시된 것들 대신에 또는 그 이외에 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 일부 컴포넌트들은 본원의 일부 구현들에서 설명된 바와 같은 블록들 및 동작들을 수행하는 것으로 설명되지만, 환경(100), 디바이스(1200), 유사한 시스템들, 또는 이러한 시스템과 연관된 임의의 적합한 프로세서 또는 프로세서들의 임의의 적합한 컴포넌트 또는 컴포넌트들의 조합은 설명된 블록들 및 동작들을 수행할 수 있다.
[00492] 본원에서 설명되는 방법들은 컴퓨터 프로그램 명령들 또는 코드에 의해 구현될 수 있으며, 이는 컴퓨터 상에서 실행될 수 있다. 예컨대, 코드는 하나 이상의 디지털 프로세서들(예컨대, 마이크로프로세서들 또는 다른 프로세싱 회로망)에 의해 구현될 수 있고 비-일시적 컴퓨터 판독가능 매체(예컨대, 저장 매체), 이를테면 반도체 또는 고체 상태 메모리, 자기 테이프, 제거가능한 컴퓨터 디스켓, RAM(random access memory), ROM(read-only memory), 플래시 메모리, 강성 자기 디스크, 광학 디스크, 고체-상태 메모리 드라이브 등을 포함하는 자기, 광학, 전자기 또는 반도체 저장 매체를 포함하는 컴퓨터 프로그램 제품에 보관될 수 있다. 프로그램 명령들은 또한 예컨대 서버(예컨대, 분산형 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 서비스(SaaS)로서의 소프트웨어의 형태로 전자 신호에 포함되고 그러한 전자 신호로서 제공될 수 있다. 대안적으로, 하나 이상의 방법들은 하드웨어(로직 게이트들 등)로 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그램가능 프로세서들(예컨대, FPGA(Field-Programmable Gate Array), 복합 프로그램가능 로직 디바이스), 범용 프로세서들, 그래픽 프로세서들, ASIC(Application Specific Integrated Circuit)들 등일 수 있다. 하나 이상의 방법들은 시스템 상에서 실행중인 애플리케이션의 일부 또는 컴포넌트로서, 또는 다른 애플리케이션들 및 운영 시스템과 함께 실행중인 애플리케이션 또는 소프트웨어로서 수행될 수 있다.
[00493] 설명은 특정 구현들과 관련하여 설명되었지만, 이러한 특정 구현들은 단지 예시일 뿐이며 제한이 아니다. 예들에 예시된 개념들은 다른 예들 및 구현들에 적용될 수 있다.
[00494] 본원에서 논의된 특정 구현들이 사용자들에 관한 개인 정보(예컨대, 사용자 데이터, 사용자의 소셜 네트워크에 관한 정보, 사용자의 로케이션 및 시간, 사용자의 생체 정보, 사용자의 활동들 및 인구학적 정보)를 수집 또는 사용할 수 있는 상황들에서, 사용자들에게는 개인 정보가 수집되는지 여부, 개인 정보가 보관되는지 여부, 개인 정보가 사용되는지 여부, 그리고 사용자에 관한 정보가 어떻게 수집되고, 보관되고 사용되는지를 제어할 하나 이상의 기회들이 제공된다. 즉, 본원에서 논의된 시스템들 및 방법들은 구체적으로 관련 사용자들로부터 그렇게 하도록 명백한 권한부여를 받으면 사용자 개인 정보를 수집, 보관 및/또는 사용한다. 또한, 특정 데이터는 저장되거나 사용되기 전에 하나 이상의 방식들로 처리되어, 개인 식별 가능 정보가 제거된다. 일 예로서, 개인 식별가능한 정보가 결정될 수 없도록 사용자의 아이덴티티가 처리될 수 있다. 다른 예로서, 사용자의 특정 로케이션이 결정될 수 없도록 사용자의 지리적 로케이션은 더 넓은 구역으로 일반화될 수 있다.
[00495] 본 개시내용에 설명된 기능 블록들, 동작들, 피처들, 방법들, 디바이스들 및 시스템들은 당업자들에게 공지되는 바와 같이 시스템들, 디바이스들 및 기능 블록들의 상이한 조합들로 통합되거나 분할될 수 있다는 점에 주목한다. 임의의 적합한 프로그래밍 언어 및 프로그래밍 기법들이 특정 구현들의 루틴들을 구현하는 데 사용될 수 있다. 상이한, 이를테면 절차적 또는 객체-지향 프로그래밍 기법들이 이용될 수 있다. 루틴들은 단일 프로세싱 디바이스 또는 다수의 프로세서들 상에서 실행될 수 있다. 단계들, 동작들 또는 컴퓨테이션들이 특정 순서로 제공될 수 있지만, 순서는 상이한 특정 구현들에서 변경될 수 있다. 일부 구현들에서, 본 명세서에서 순차적으로 도시된 다수의 단계들 또는 동작들이 동시에 수행될 수 있다.
[00496] 다음에, 일부 예들이 설명된다.
[00497] 예 1: 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법으로서, 컴퓨터로 구현되는 방법은, 채팅 인터페이스가 제1 사용자 디바이스에 의해 디스플레이되게 하는 단계 ―채팅 인터페이스는 메시징 애플리케이션에 의해 생성되며, 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되며, 하나 이상의 메시지들은 네트워크를 통해 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 제공됨―; 임베디드 인터페이스가 채팅 인터페이스와 연관되어 디스플레이되게 하는 단계 ―임베디드 인터페이스는, 메시징 애플리케이션과 연관하여 제1 사용자 디바이스 상에서 적어도 부분적으로 실행되는 제1 임베디드 애플리케이션에 의해 제공됨―; 채팅 대화에 참여하는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들에서 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터에 기반하여, 제안 이벤트가 제1 임베디드 애플리케이션과 연관하여 발생했다는 것을 결정하는 단계 ―복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들은 제1 사용자 디바이스와 상이함―; 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하는 단계; 및 하나 이상의 제안된 응답 아이템들이 제1 사용자 디바이스에 의해 디스플레이되게 하는 단계를 포함한다.
[00498] 예 2: 예 1의 컴퓨터로 구현되는 방법에 있어서, 특정 이벤트는, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 연관된 채팅 인터페이스에 의해 수신되는 사용자 입력; 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 연관된 임베디드 인터페이스에 의해 수신되는 사용자 입력; 및/또는 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들 상에서 실행되는 연관된 임베디드 애플리케이션에서 발생하는 임베디드 애플리케이션 이벤트 중 적어도 하나를 포함한다.
[00499] 예 3: 예 1 또는 예 2의 컴퓨터로 구현되는 방법에 있어서, 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터는, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들에 의해 플레이되고 있는 미디어 아이템에서 디스플레이되는 콘텐츠 피처(content feature)의 타입, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 게임에서의 미리정의된 목표의 달성, 채팅 대화에 참여하는 수신 사용자 디바이스에 의해 수신되는 사용자 입력 ―사용자 입력은 수신 사용자 디바이스 상에 디스플레이되는 상이한 임베디드 인터페이스에서 수신됨―; 및/또는 복수의 사용자 디바이스들 중 특정 사용자 디바이스로부터의 임베디드 애플리케이션의 개시 중 적어도 하나를 표시한다.
[00500] 예 4: 예 1 내지 예 3 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 특정 이벤트는, 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들의 개별 사용자들에 의해 채팅 대화에 입력되는 하나 이상의 메시지들을 포함하며, 제안 이벤트는, 하나 이상의 메시지들에서의 하나 이상의 미리정의된 토픽들, 단어들 및/또는 구절들 중 적어도 하나를 검출하는 것에 기반하여 결정된다.
[00501] 예 5: 예 1 내지 예 4 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 제안 이벤트들은, 디바이스에서의 사용자 입력의 수신, 프로그램에서의 상태의 변화, 디바이스들 간의 데이터 통신, 네트워크를 통한 임베디드 세션 또는 디바이스와 사용자 디바이스의 연결, 사용자 디바이스들 중 하나의 사용자 디바이스에서의 네트워크를 통한 또는 프로그램들 간의 데이터의 수신 또는 송신, 미디어 데이터 또는 다른 데이터에서의 콘텐츠 피처들의 검출, 채팅 메시지들에서의 특정 토픽들의 검출, 및/또는 이력상 데이터(historical data)에 표시된, 이전 시간에서 발생한 이들 이벤트들 중 하나 이상의 이벤트들 중 적어도 하나를 포함한다.
[00502] 예 6: 예 1 내지 예 5 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하는 단계는, 하나 이상의 제안된 응답 아이템들 중 적어도 하나의 제안된 응답 아이템을, 제안 이벤트와 적어도 하나의 제안된 응답 아이템의 하나 이상의 미리정의된 연관들; 특정 제안 이벤트들 및 특정 제안 이벤트들에 대한 응답으로 입력되는 응답들로 트레이닝된 모델; 및/또는 임베디드 애플리케이션에 의해 제공되는 게임에서 사용되는 복수의 규칙들 및/또는 목표들 중 하나 이상의 규칙들 및/또는 목표들 중 적어도 하나에 기반하여, 결정하는 단계를 포함한다.
[00503] 예 7: 예 1 내지 예 6 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 사용자 선택을 표시하는 사용자 입력을 수신하는 단계; 및 채팅 대화에 선택된 메시지를 출력하는 단계를 더 포함하며, 선택된 메시지는 선택되는 제안된 응답 아이템과 연관된다.
[00504] 예 8: 예 1 내지 예 7 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 하나 이상의 제안된 응답 아이템들은 제안 이벤트에 대한 사용자 반응들을 표시하는 하나 이상의 텍스트 메시지들을 포함한다.
[00505] 예 9: 예 1 내지 예 8 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계; 및 사용자 입력에 대한 응답으로, 제1 임베디드 애플리케이션에 커맨드를 제공하는 단계를 더 포함하며, 커맨드는 선택되는 제안된 응답 아이템과 연관되며, 커맨드는 제1 임베디드 애플리케이션의 상태의 변화를 유발하며, 상태의 변화는 채팅 대화에 참여하고 있는 복수의 사용자 디바이스들 중 하나 이상의 다른 사용자 디바이스들에 표시된다.
[00506] 예 10: 예 9에 따른 컴퓨터로 구현되는 방법에 있어서, 제1 임베디드 애플리케이션에 대한 커맨드는, 제1 임베디드 애플리케이션에 의해 구현되는 게임에서 액션을 수행하기 위한 제1 커맨드; 제1 임베디드 애플리케이션에 의한 미디어 데이터의 플레이백에서 플레이백 포지션을 변경하기 위한 제2 커맨드; 및/또는 제1 임베디드 애플리케이션에 의해 제공되는 공유 오브젝트를 변경하기 위한 제3 커맨드 중 적어도 하나를 포함한다.
[00507] 예 11: 예 1 내지 예 10 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계; 및 사용자 입력에 대한 응답으로, 선택되는 제안된 응답 아이템과 연관된 하나 이상의 커맨드들을 제공하는 단계를 더 포함하며, 하나 이상의 커맨드들은, 제1 임베디드 애플리케이션에 제공되는 적어도 하나의 제1 커맨드; 메시징 애플리케이션에 제공되는 적어도 하나의 제2 커맨드; 및/또는 제1 사용자 디바이스 상에서 실행되는 상이한 애플리케이션으로부터의 출력 정보의 디스플레이를 유발하게 하기 위한, 제1 사용자 디바이스에 제공되는 적어도 하나의 제3 커맨드 중 적어도 하나를 포함하며, 출력 정보는 제1 사용자 디바이스와 통신하는 서버 디바이스로부터 수신되는 정보를 포함한다.
[00508] 예 12: 예 1 내지 예 11 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 방법은, 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계; 및 사용자 입력에 대한 응답으로, 선택되는 제안된 응답 아이템과 연관된 하나 이상의 커맨드들을 제공하는 단계를 더 포함하며, 하나 이상의 커맨드들은, 제2 콘텐츠 아이템이 제1 사용자 디바이스 상의 임베디드 애플리케이션의 임베디드 인터페이스에서 출력되고 있는 제1 콘텐츠 아이템과 동일하다는 결정에 대한 응답으로, 제1 세트의 하나 이상의 다른 사용자들을 채팅 대화에 추가하기 위한 제1 커맨드 ―제2 콘텐츠 아이템은 채팅 대화에 참여하고 있지 않는 제1 세트의 하나 이상의 사용자 디바이스들 상에 디스플레이됨―; 및/또는 제2 세트의 하나 이상의 다른 사용자들이 제1 사용자 디바이스 상의 임베디드 인터페이스에 출력되고 있는 제3 콘텐츠 아이템과 동일한 제4 콘텐츠 아이템과 연관된 사용자 입력 코멘트들을 갖는다는 결정에 대한 응답으로, 제2 세트의 하나 이상의 다른 사용자들을 채팅 대화에 추가하기 위한 제2 커맨드 ―제4 콘텐츠 아이템은 채팅 대화에 참여하고 있지 않는 제2 세트의 하나 이상의 사용자 디바이스들 상에 디스플레이됨― 중 적어도 하나를 포함한다.
[00509] 예 13: 예 1 내지 예 12 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 하나 이상의 제안된 응답 아이템들은 제1 임베디드 애플리케이션에 대한 하나 이상의 제안된 커맨드들 및 채팅 인터페이스의 채팅 대화에 출력될 하나 이상의 제안된 메시지들을 포함하며, 하나 이상의 제안된 커맨드들은 채팅 인터페이스에 디스플레이될 때 하나 이상의 제안된 메시지들과 시각적으로 구별된다.
[00510] 예 14: 예 1 내지 예 13 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 하나 이상의 제안된 응답 아이템들은, 제1 임베디드 애플리케이션; 메시징 애플리케이션; 및/또는 네트워크를 통해 메시징 애플리케이션과 통신하는 원격 서버 중 적어도 하나에 의해 결정된다.
[00511] 예 15: 예 1 내지 예 14 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 제1 임베디드 애플리케이션은 임베디드 인터페이스에 비디오 데이터의 플레이백이 디스플레이되게 하는 미디어 플레이어 애플리케이션이며, 임베디드 인터페이스는 디스플레이되는 비디오 데이터의 플레이백을 제어하는 입력을 사용자로부터 수신하도록 구성되며, 하나 이상의 제안된 응답 아이템들 중 적어도 하나는, 디스플레이되는 비디오 데이터의 플레이백을 조정하도록 동작하는 하나 이상의 제안된 플레이백 커맨드들을 포함한다.
[00512] 예 16: 예 1 내지 예 15 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 제1 임베디드 애플리케이션은 임베디드 인터페이스에 게임 데이터가 디스플레이되게 하는 게임 애플리케이션이며, 임베디드 인터페이스는 게임 애플리케이션의 하나 이상의 상태들을 변경하는 입력을 사용자로부터 수신하도록 구성되며, 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 게임 애플리케이션의 적어도 하나의 상태를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함한다.
[00513] 예 17: 예 1 내지 예 16 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 제1 임베디드 애플리케이션은 임베디드 인터페이스에 공유 문서가 디스플레이되게 하는 공유 문서 애플리케이션이며, 임베디드 인터페이스는 공유 문서의 하나 이상의 아이템들을 변경하는 입력을 사용자로부터 수신하도록 구성되며, 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 공유 문서를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함한다.
[00514] 예 18: 예 1 내지 예 17 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 임베디드 인터페이스는 채팅 대화에 참여하는, 서브세트의 복수의 사용자 디바이스들 상에 출력되며, 서브세트는, 사용자 디바이스들이 제1 임베디드 애플리케이션에 의해 개시되는 임베디드 세션에 합류하게 하는 제2 사용자 입력을 연관된 채팅 인터페이스에서 수신한 사용자 디바이스들을 포함한다.
[00515] 예 19: 예 1 내지 예 18 중 적어도 하나에 따른 컴퓨터로 구현되는 방법에 있어서, 제1 임베디드 애플리케이션은, 제1 임베디드 애플리케이션에 의해 생성된 것, 및/또는 네트워크를 통해 제1 사용자 디바이스와 연결되는 서버로부터 수신된 것 중 적어도 하나인 출력 데이터를 디스플레이한다.
[00516] 예 20: 시스템은, 메모리; 및 메모리에 액세스하도록 구성된 적어도 하나의 프로세서를 포함하며, 적어도 하나의 프로세서는, 채팅 인터페이스가 제1 사용자 디바이스에 의해 디스플레이되게 하는 동작 ―채팅 인터페이스는 메시징 애플리케이션에 의해 생성되며, 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되며, 하나 이상의 메시지들은 네트워크를 통해 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 제공됨―; 임베디드 인터페이스가 채팅 인터페이스와 연관되어 디스플레이되게 하는 동작 ―임베디드 인터페이스는 메시징 애플리케이션과 연관하여 실행되는 제1 임베디드 애플리케이션에 의해 제공되며, 제1 임베디드 애플리케이션은 제1 사용자 디바이스 상에서 적어도 부분적으로 실행됨―; 임베디드 인터페이스에 의해 수신되는 사용자 입력, 및/또는 제안 이벤트가 제1 임베디드 애플리케이션에서 발생했다는 것을 표시하는, 제1 임베디드 애플리케이션으로부터의 이벤트 정보 중 적어도 하나에 기반하여, 제안 이벤트가 제1 임베디드 애플리케이션의 사용과 연관하여 발생했다는 것을 결정하는 동작; 제안 이벤트에 대한 응답으로 하나 이상의 제안된 응답 아이템들을 획득하는 동작; 및 제1 사용자 디바이스에 의해 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 동작을 포함하는 동작들을 수행하도록 구성된다.
[00517] 예 21: 예 20에 따른 시스템에 있어서, 하나 이상의 제안된 응답 아이템들은 각각, 메시징 애플리케이션이, 제1 임베디드 애플리케이션의 하나 이상의 상태들을 변경시키기 위한 연관된 커맨드를 제공하는 것; 및/또는 연관된 메시지가 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 채팅 대화에 디스플레이되게 하는 것 중 적어도 하나를 하게 하도록, 제1 사용자 디바이스의 제1 사용자에 의해 선택가능하다.
[00518] 예 22: 예 20 또는 예 21에 따른 시스템에 있어서, 제안 이벤트가 발생했다는 것을 결정하는 동작은, 복수의 사용자 디바이스들 중 제2 사용자 디바이스가 제1 임베디드 애플리케이션에 해당하는 제2 임베디드 애플리케이션을 개시하여, 제1 임베디드 애플리케이션에 제공되는 임베디드 세션에 합류했다는 결정에 기반한다.
[00519] 예 23: 소프트웨어 명령들이 저장되어 있는 비-일시적 컴퓨터 판독가능 매체에 있어서, 소프트웨어 명령들은, 프로세서에 의해 실행될 때, 프로세서가, 연관된 사용자 디바이스들 상에서 적어도 부분적으로 실행되는 복수의 대응하는 임베디드 애플리케이션들 중 적어도 하나의 임베디드 애플리케이션의 사용과 연관하여 제안 이벤트가 발생했다는 것을 결정하는 동작 ―각각의 임베디드 애플리케이션은 연관된 사용자 디바이스 상에서 실행되는 메시징 애플리케이션과 연관하여 실행되며, 각각의 메시징 애플리케이션은, 연관된 채팅 인터페이스가 연관된 사용자 디바이스에 의해 디스플레이되게 하도록 구성되며, 연관된 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되며, 연관된 사용자 디바이스들은 네트워크를 통해 채팅 대화에 참여함―; 제안 이벤트에 대한 응답으로 하나 이상의 제안된 응답 아이템들을 획득하는 동작; 및 연관된 사용자 디바이스들 중 적어도 하나의 연관된 사용자 디바이스에 의해 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 동작을 포함하는 동작들을 수행하게 한다.
[00520] 예 24: 예 23에 따른 비-일시적 컴퓨터 판독가능 매체에 있어서, 하나 이상의 제안된 응답 아이템들은 각각, 복수의 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들을 변경시키기 위한 연관된 커맨드를 제공하는 것; 및/또는 채팅 대화에 참여하는 연관된 사용자 디바이스들에 의해 채팅 대화에 연관된 메시지가 디스플레이되게 하는 것 중 적어도 하나를 위해, 적어도 하나의 연관된 사용자 디바이스의 개별 사용자로부터의 사용자 입력에 의해 선택가능하다.
[00521] 예 25: 예 23에 따른 비-일시적 컴퓨터 판독가능 매체에 있어서, 하나 이상의 상태들은 하나 이상의 제2 상태들이며, 제안 이벤트가 발생했다는 것을 결정하는 동작은, 대응하는 임베디드 애플리케이션들 중 적어도 하나에 의해 수신되는 사용자 입력, 및/또는 대응하는 임베디드 애플리케이션들의 하나 이상의 제1 상태들을 변경하는, 메시징 애플리케이션들 중 적어도 하나에 의해 수신되는 사용자 입력 중 적어도 하나에 기반한다.

Claims (25)

  1. 제안된 아이템(suggested item)들을 제공하도록 컴퓨터로 구현되는 방법으로서,
    채팅 인터페이스(chat interface)가 제1 사용자 디바이스에 의해 디스플레이되게 하는 단계 ― 상기 채팅 인터페이스는 메시징 애플리케이션에 의해 생성되고, 그리고 상기 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되고, 상기 하나 이상의 메시지들은 네트워크를 통해 상기 채팅 대화에 참여하고 있는 복수의 사용자 디바이스들에 의해 제공됨 ―;
    임베디드 인터페이스(embedded interface)가 상기 채팅 인터페이스와 연관되어 디스플레이되게 하는 단계 ― 상기 임베디드 인터페이스는, 상기 메시징 애플리케이션과 연관하여 상기 제1 사용자 디바이스 상에서 적어도 부분적으로 실행되는 제1 임베디드 애플리케이션(embedded application)에 의해 제공됨 ―;
    상기 채팅 대화에 참여하고 있는 상기 복수의 사용자 디바이스들 중 하나 이상의 사용자 디바이스들에서 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터에 기반하여, 제안 이벤트가 상기 제1 임베디드 애플리케이션과 연관하여 발생했다는 것을 결정하는 단계 ― 상기 복수의 사용자 디바이스들 중 상기 하나 이상의 사용자 디바이스들은 상기 제1 사용자 디바이스와 상이함 ―;
    상기 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하는 단계;
    상기 하나 이상의 제안된 응답 아이템들이 상기 제1 사용자 디바이스에 의해 디스플레이되게 하는 단계;
    상기 하나 이상의 제안된 응답 아이템들로부터의 선택되는 제안된 응답 아이템의 선택을 표시하는 사용자 입력을 수신하는 단계; 및
    상기 사용자 입력에 대한 응답으로, 상기 제1 임베디드 애플리케이션에 커맨드를 제공하는 단계
    를 포함하고,
    상기 커맨드는 상기 선택되는 제안된 응답 아이템과 연관되고, 상기 커맨드는 상기 제1 임베디드 애플리케이션의 상태의 변화를 유발하고, 상기 상태의 변화는 상기 채팅 대화에 참여하고 있는 상기 복수의 사용자 디바이스들 중 상기 하나 이상의 사용자 디바이스들에 표시되고,
    상기 제1 임베디드 애플리케이션에 대한 상기 커맨드는:
    상기 제1 임베디드 애플리케이션에 의해 구현되는 게임에서 액션을 수행하기 위한 제1 커맨드;
    상기 제1 임베디드 애플리케이션에 의한 미디어 데이터의 플레이백(playback)에서 플레이백 포지션을 변경하기 위한 제2 커맨드; 또는
    상기 제1 임베디드 애플리케이션에 의해 제공되는 공유 오브젝트(shared object)를 변경하기 위한 제3 커맨드
    중 적어도 하나를 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  2. 제1 항에 있어서,
    상기 특정 이벤트는:
    상기 하나 이상의 사용자 디바이스들의 연관된 채팅 인터페이스에 의해 수신되는 사용자 입력;
    상기 하나 이상의 사용자 디바이스들의 연관된 임베디드 인터페이스에 의해 수신되는 사용자 입력; 또는
    상기 하나 이상의 사용자 디바이스들 상에서 실행되는 연관된 임베디드 애플리케이션에서 발생하는 임베디드 애플리케이션 이벤트
    중 적어도 하나를 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 특정 이벤트가 발생했다는 것을 표시하는 수신된 데이터는:
    상기 하나 이상의 사용자 디바이스들에 의해 플레이되고 있는 미디어 아이템에서 디스플레이되는 콘텐츠 피처(content feature)의 타입; 또는
    상기 하나 이상의 사용자 디바이스들로부터의 상기 임베디드 애플리케이션의 개시
    중 적어도 하나를 표시하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  4. 제1 항 또는 제2 항에 있어서,
    상기 특정 이벤트는, 상기 하나 이상의 사용자 디바이스들의 개별 사용자들에 의해 상기 채팅 대화에 입력되는 하나 이상의 메시지들을 포함하고,
    상기 제안 이벤트는, 상기 하나 이상의 메시지들에서의 하나 이상의 미리정의된 토픽들, 단어들 또는 구절(phrase)들 중 적어도 하나를 검출하는 것에 기반하여 결정되는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  5. 제1 항 또는 제2 항에 있어서,
    상기 제안 이벤트에 기반하여 하나 이상의 제안된 응답 아이템들을 획득하는 단계는:
    상기 하나 이상의 제안된 응답 아이템들 중 적어도 하나의 제안된 응답 아이템을:
    상기 제안 이벤트와 상기 적어도 하나의 제안된 응답 아이템의 하나 이상의 미리정의된 연관들;
    특정 제안 이벤트들 및 상기 특정 제안 이벤트들에 대한 응답으로 입력되는 응답들로 트레이닝된 모델; 또는
    상기 임베디드 애플리케이션에 의해 제공되는 게임에서 사용되는 복수의 규칙들 또는 목표들 중 하나 이상의 규칙들 또는 목표들
    중 적어도 하나에 기반하여, 결정하는 단계를 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  6. 제1 항 또는 제2 항에 있어서,
    상기 제1 사용자 디바이스는 상기 임베디드 애플리케이션이 상기 하나 이상의 사용자 디바이스들에 통신하는 임베디드 세션에 연결되고, 그리고 상기 특정 이벤트는:
    상기 임베디드 세션으로의 상기 하나 이상의 사용자 디바이스들의 연결; 또는
    상기 임베디드 세션으로부터의 상기 하나 이상의 사용자 디바이스들의 연결해제
    중 적어도 하나를 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  7. 제1 항 또는 제2 항에 있어서,
    상기 하나 이상의 제안된 응답 아이템들은 상기 제안 이벤트에 대한 사용자 반응들을 표시하는 하나 이상의 텍스트 메시지들을 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  8. 제1 항 또는 제2 항에 있어서,
    상기 하나 이상의 제안된 응답 아이템들은 상기 제1 임베디드 애플리케이션에 대한 하나 이상의 제안된 커맨드(suggested command)들 및 상기 채팅 인터페이스에서 상기 채팅 대화에 출력될 하나 이상의 제안된 메시지(suggested message)들을 포함하고,
    상기 하나 이상의 제안된 커맨드들은 상기 채팅 인터페이스에 디스플레이될 때 상기 하나 이상의 제안된 메시지들과 시각적으로 구별되는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  9. 제1 항 또는 제2 항에 있어서,
    상기 하나 이상의 제안된 응답 아이템들은:
    상기 제1 임베디드 애플리케이션;
    상기 메시징 애플리케이션; 또는
    상기 네트워크를 통해 상기 메시징 애플리케이션과 통신하는 원격 서버
    중 적어도 하나에 의해 결정되는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  10. 제1 항 또는 제2 항에 있어서,
    상기 제1 임베디드 애플리케이션은 상기 임베디드 인터페이스에 비디오 데이터의 플레이백이 디스플레이되게 하는 미디어 플레이어 애플리케이션이고,
    상기 임베디드 인터페이스는 상기 디스플레이되는 비디오 데이터의 플레이백을 제어하는 입력을 사용자로부터 수신하도록 구성되고, 그리고
    상기 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 상기 디스플레이되는 비디오 데이터의 플레이백을 조정하도록 동작하는 하나 이상의 제안된 플레이백 커맨드들을 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  11. 제1 항 또는 제2 항에 있어서,
    상기 제1 임베디드 애플리케이션은 상기 임베디드 인터페이스에 게임 데이터가 디스플레이되게 하는 게임 애플리케이션이고,
    상기 임베디드 인터페이스는 상기 게임 애플리케이션의 하나 이상의 상태들을 변경하는 입력을 사용자로부터 수신하도록 구성되고, 그리고
    상기 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 상기 게임 애플리케이션에 의해 구현되는 게임 동안의 적어도 하나의 상태를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  12. 제1 항 또는 제2 항에 있어서,
    상기 제1 임베디드 애플리케이션은 상기 임베디드 인터페이스에 공유 문서가 디스플레이되게 하는 공유 문서 애플리케이션이고,
    상기 임베디드 인터페이스는 상기 공유 문서의 하나 이상의 아이템들을 변경하는 입력을 사용자로부터 수신하도록 구성되고, 그리고
    상기 하나 이상의 제안된 응답 아이템들 중 적어도 하나는 상기 공유 문서를 수정하도록 동작하는 하나 이상의 제안된 커맨드들을 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  13. 제1 항 또는 제2 항에 있어서,
    상기 임베디드 인터페이스는 상기 채팅 대화에 참여하는 상기 복수의 사용자 디바이스들의 상기 하나 이상의 사용자 디바이스들 상에 출력되며,
    상기 하나 이상의 사용자 디바이스들은, 상기 사용자 디바이스들이 상기 제1 임베디드 애플리케이션에 의해 개시되는 임베디드 세션에 합류(join)하게 하는 제2 사용자 입력을 연관된 채팅 인터페이스에서 수신한 사용자 디바이스들을 포함하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  14. 제1 항 또는 제2 항에 있어서,
    상기 제1 임베디드 애플리케이션은, 상기 제1 임베디드 애플리케이션에 의해 생성된 것, 또는 상기 네트워크를 통해 상기 제1 사용자 디바이스와 연결되는 서버로부터 수신된 것 중 적어도 하나인 출력 데이터를 디스플레이하는, 제안된 아이템들을 제공하도록 컴퓨터로 구현되는 방법.
  15. 메모리; 및
    상기 메모리에 액세스하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는:
    채팅 인터페이스가 제1 사용자 디바이스에 의해 디스플레이되게 하는 동작 ― 상기 채팅 인터페이스는 메시징 애플리케이션에 의해 생성되고, 그리고 상기 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되고, 상기 하나 이상의 메시지들은 네트워크를 통해 상기 채팅 대화에 참여하는 복수의 사용자 디바이스들에 의해 제공됨 ―;
    임베디드 인터페이스가 상기 채팅 인터페이스와 연관되어 디스플레이되게 하는 동작 ― 상기 임베디드 인터페이스는 상기 메시징 애플리케이션과 연관하여 실행되는 제1 임베디드 애플리케이션에 의해 제공되고, 상기 제1 임베디드 애플리케이션은 상기 제1 사용자 디바이스 상에서 적어도 부분적으로 실행됨 ―;
    상기 임베디드 인터페이스에 의해 수신되는 사용자 입력, 또는 제안 이벤트가 상기 제1 임베디드 애플리케이션에서 발생했다는 것을 표시하는, 상기 제1 임베디드 애플리케이션으로부터의 이벤트 정보 중 적어도 하나에 기반하여, 상기 제안 이벤트가 상기 제1 임베디드 애플리케이션의 사용과 연관하여 발생했다는 것을 결정하는 동작;
    상기 제안 이벤트에 대한 응답으로 하나 이상의 제안된 응답 아이템들을 획득하는 동작; 및
    상기 제1 사용자 디바이스에 의해 상기 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 동작
    을 포함하는 동작들을 수행하도록 구성되고,
    상기 하나 이상의 제안된 응답 아이템들은 각각 상기 메시징 애플리케이션으로 하여금:
    상기 제1 임베디드 애플리케이션의 하나 이상의 상태들을 변경시키기 위한 연관된 커맨드를 제공하게 하는 것; 또는
    연관된 메시지가 상기 채팅 대화에 참여하는 상기 복수의 사용자 디바이스들에 의해 상기 채팅 대화에 디스플레이되게 하는 것
    중 적어도 하나를 하게 하도록, 상기 제1 사용자 디바이스의 제1 사용자에 의해 선택가능한, 시스템.
  16. 제15 항에 있어서,
    상기 제안 이벤트가 발생했다는 것을 결정하는 동작은, 상기 복수의 사용자 디바이스들 중 제2 사용자 디바이스가, 상기 제1 임베디드 애플리케이션에 대해 제공되는 임베디드 세션에 합류하기 위해 상기 제1 임베디드 애플리케이션에 대응하는 제2 임베디드 애플리케이션을 개시했다는 결정에 기반하는, 시스템.
  17. 소프트웨어 명령들이 저장되어 있는 비-일시적 컴퓨터 판독가능 저장 매체로서,
    상기 소프트웨어 명령들은, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    연관된 사용자 디바이스들 상에서 적어도 부분적으로 실행되는 복수의 대응하는 임베디드 애플리케이션들 중 적어도 하나의 임베디드 애플리케이션의 사용과 연관하여 제안 이벤트가 발생했다는 것을 결정하는 동작 ― 각각의 임베디드 애플리케이션은 상기 연관된 사용자 디바이스 상에서 실행되는 메시징 애플리케이션과 연관하여 실행되고, 각각의 메시징 애플리케이션은, 연관된 채팅 인터페이스가 상기 연관된 사용자 디바이스에 의해 디스플레이되게 하도록 구성되고, 상기 연관된 채팅 인터페이스는 채팅 대화에 하나 이상의 메시지들을 디스플레이하도록 구성되고, 상기 연관된 사용자 디바이스들은 네트워크를 통해 상기 채팅 대화에 참여함 ―;
    상기 제안 이벤트에 대한 응답으로 하나 이상의 제안된 응답 아이템들을 획득하는 동작; 및
    상기 연관된 사용자 디바이스들 중 적어도 하나의 연관된 사용자 디바이스에 의해 상기 하나 이상의 제안된 응답 아이템들이 디스플레이되게 하는 동작
    을 포함하는 동작들을 수행하게 하고,
    상기 하나 이상의 제안된 응답 아이템들은 각각:
    상기 복수의 대응하는 임베디드 애플리케이션들의 하나 이상의 상태들을 변경시키기 위한 연관된 커맨드를 제공하는 것; 또는
    상기 채팅 대화에 참여하는 상기 연관된 사용자 디바이스들에 의해 상기 채팅 대화에 연관된 메시지가 디스플레이되게 하는 것
    중 적어도 하나를 위해, 상기 적어도 하나의 연관된 사용자 디바이스의 개별 사용자로부터의 사용자 입력에 의해 선택가능한, 비-일시적 컴퓨터 판독가능 저장 매체.
  18. 제17 항에 있어서,
    상기 하나 이상의 상태들은 하나 이상의 제2 상태들이고, 그리고
    상기 제안 이벤트가 발생했다는 것을 결정하는 동작은:
    상기 대응하는 임베디드 애플리케이션들 중 적어도 하나에 의해 수신되는 사용자 입력, 또는
    상기 대응하는 임베디드 애플리케이션들의 하나 이상의 제1 상태들을 변경하는, 상기 메시징 애플리케이션들 중 적어도 하나에 의해 수신되는 사용자 입력
    중 적어도 하나에 기반하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020197024479A 2017-06-15 2018-03-14 채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들 KR102096799B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/624,638 US10348658B2 (en) 2017-06-15 2017-06-15 Suggested items for use with embedded applications in chat conversations
US15/624,638 2017-06-15
PCT/US2018/022501 WO2018231306A1 (en) 2017-06-15 2018-03-14 Suggested items for use with embedded applications in chat conversations

Publications (2)

Publication Number Publication Date
KR20190101492A KR20190101492A (ko) 2019-08-30
KR102096799B1 true KR102096799B1 (ko) 2020-04-03

Family

ID=61911673

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197024479A KR102096799B1 (ko) 2017-06-15 2018-03-14 채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들

Country Status (6)

Country Link
US (2) US10348658B2 (ko)
EP (1) EP3580712A1 (ko)
JP (1) JP6718028B2 (ko)
KR (1) KR102096799B1 (ko)
CN (1) CN110709869B (ko)
WO (1) WO2018231306A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024090726A1 (ko) * 2022-10-24 2024-05-02 라인플러스 주식회사 메신저에서의 영상 추천 방법, 기록 매체 및 컴퓨팅 디바이스

Families Citing this family (261)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10904178B1 (en) 2010-07-09 2021-01-26 Gummarus, Llc Methods, systems, and computer program products for processing a request for a resource in a communication
US10033672B1 (en) 2012-10-18 2018-07-24 Sitting Man, Llc Methods and computer program products for browsing using a communicant identifier
US10019135B1 (en) 2012-10-18 2018-07-10 Sitting Man, Llc Methods, and computer program products for constraining a communication exchange
US10430894B2 (en) 2013-03-21 2019-10-01 Khoros, Llc Gamification for online social communities
KR102057944B1 (ko) * 2013-09-17 2019-12-23 삼성전자주식회사 단말 장치 및 그의 공유 방법
US10846112B2 (en) * 2014-01-16 2020-11-24 Symmpl, Inc. System and method of guiding a user in utilizing functions and features of a computer based device
EP3149554B1 (en) 2014-05-30 2024-05-01 Apple Inc. Continuity
EP3333740A1 (en) 2014-09-02 2018-06-13 Apple Inc. Physical activity and workout monitor
EP4321088A3 (en) 2015-08-20 2024-04-24 Apple Inc. Exercise-based watch face
EP3395018A1 (en) 2015-12-21 2018-10-31 Google LLC Automatic suggestions for message exchange threads
CN108476164B (zh) 2015-12-21 2021-10-08 谷歌有限责任公司 在消息传送应用中自动地提供机器人服务的方法
DK201770423A1 (en) 2016-06-11 2018-01-15 Apple Inc Activity and workout updates
CN107809517B (zh) * 2016-09-08 2020-07-10 阿里巴巴集团控股有限公司 事件展示方法及装置
EP3482363A1 (en) * 2016-09-20 2019-05-15 Google LLC System and method for transmitting a response in a messaging application
WO2018057536A1 (en) 2016-09-20 2018-03-29 Google Llc Bot requesting permission for accessing data
US10015124B2 (en) * 2016-09-20 2018-07-03 Google Llc Automatic response suggestions based on images received in messaging applications
WO2018057541A1 (en) 2016-09-20 2018-03-29 Google Llc Suggested responses based on message stickers
US10380826B2 (en) * 2016-10-21 2019-08-13 Disney Enterprises, Inc. Systems and methods for unlocking user interface elements
EP3322149B1 (en) * 2016-11-10 2023-09-13 Tata Consultancy Services Limited Customized map generation with real time messages and locations from concurrent users
US10416846B2 (en) 2016-11-12 2019-09-17 Google Llc Determining graphical element(s) for inclusion in an electronic communication
CN108075959B (zh) * 2016-11-14 2021-03-12 腾讯科技(深圳)有限公司 一种会话消息处理方法和装置
US10482327B1 (en) 2017-01-18 2019-11-19 Snap Inc. Media overlay selection system
US10902462B2 (en) 2017-04-28 2021-01-26 Khoros, Llc System and method of providing a platform for managing data content campaign on social networks
US10891485B2 (en) 2017-05-16 2021-01-12 Google Llc Image archival based on image categories
US10474967B2 (en) * 2017-05-23 2019-11-12 International Business Machines Corporation Conversation utterance labeling
US10348658B2 (en) 2017-06-15 2019-07-09 Google Llc Suggested items for use with embedded applications in chat conversations
US10404636B2 (en) 2017-06-15 2019-09-03 Google Llc Embedded programs and interfaces for chat conversations
US10063600B1 (en) * 2017-06-19 2018-08-28 Spotify Ab Distributed control of media content item during webcast
CN107222632A (zh) * 2017-06-23 2017-09-29 北京金山安全软件有限公司 即时通信方法及装置
US11093110B1 (en) * 2017-07-17 2021-08-17 Amazon Technologies, Inc. Messaging feedback mechanism
US20190026473A1 (en) * 2017-07-21 2019-01-24 Pearson Education, Inc. System and method for automated feature-based alert triggering
US10725735B2 (en) 2017-07-31 2020-07-28 Allegro Artificial Intelligence Ltd System and method for merging annotations of datasets
US11153244B1 (en) * 2017-08-03 2021-10-19 United Services Automobile Association (Usaa) Digital conversations
WO2019049073A1 (en) * 2017-09-07 2019-03-14 Zudomanzi (Pty) Ltd METHOD AND SYSTEM FOR VIRTUAL OFFICE MANAGEMENT
CN107612814A (zh) * 2017-09-08 2018-01-19 北京百度网讯科技有限公司 用于生成候选回复信息的方法和装置
US10867128B2 (en) 2017-09-12 2020-12-15 Microsoft Technology Licensing, Llc Intelligently updating a collaboration site or template
US10742500B2 (en) * 2017-09-20 2020-08-11 Microsoft Technology Licensing, Llc Iteratively updating a collaboration site or template
US10951558B2 (en) * 2017-09-27 2021-03-16 Slack Technologies, Inc. Validating application dialog associated with a triggering event identification within user interaction data received via a group-based communication interface
US10372298B2 (en) * 2017-09-29 2019-08-06 Apple Inc. User interface for multi-user communication session
US10346449B2 (en) 2017-10-12 2019-07-09 Spredfast, Inc. Predicting performance of content and electronic messages among a system of networked computing devices
US10999278B2 (en) 2018-10-11 2021-05-04 Spredfast, Inc. Proxied multi-factor authentication using credential and authentication management in scalable data networks
US11050704B2 (en) 2017-10-12 2021-06-29 Spredfast, Inc. Computerized tools to enhance speed and propagation of content in electronic messages among a system of networked computing devices
US11470161B2 (en) 2018-10-11 2022-10-11 Spredfast, Inc. Native activity tracking using credential and authentication management in scalable data networks
US10785222B2 (en) 2018-10-11 2020-09-22 Spredfast, Inc. Credential and authentication management in scalable data networks
US11570128B2 (en) 2017-10-12 2023-01-31 Spredfast, Inc. Optimizing effectiveness of content in electronic messages among a system of networked computing device
CN110959166B (zh) * 2017-10-13 2024-04-30 索尼公司 信息处理设备、信息处理方法、信息处理系统、显示设备和预订系统
CN109964223B (zh) * 2017-10-23 2020-11-13 腾讯科技(深圳)有限公司 会话信息处理方法及其装置、存储介质
US10599391B2 (en) * 2017-11-06 2020-03-24 Google Llc Parsing electronic conversations for presentation in an alternative interface
CN109814938A (zh) * 2017-11-20 2019-05-28 广东欧珀移动通信有限公司 应用程序预测模型建立、预加载方法、装置、介质及终端
US10601937B2 (en) * 2017-11-22 2020-03-24 Spredfast, Inc. Responsive action prediction based on electronic messages among a system of networked computing devices
KR102424520B1 (ko) * 2017-11-29 2022-07-25 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법
US10891526B2 (en) 2017-12-22 2021-01-12 Google Llc Functional image archiving
CN112055955A (zh) * 2017-12-29 2020-12-08 得麦股份有限公司 用于个性化和自适应应用管理的系统和方法
US11504856B2 (en) 2017-12-29 2022-11-22 DMAI, Inc. System and method for selective animatronic peripheral response for human machine dialogue
US11024294B2 (en) 2017-12-29 2021-06-01 DMAI, Inc. System and method for dialogue management
US11222632B2 (en) 2017-12-29 2022-01-11 DMAI, Inc. System and method for intelligent initiation of a man-machine dialogue based on multi-modal sensory inputs
US11061900B2 (en) 2018-01-22 2021-07-13 Spredfast, Inc. Temporal optimization of data operations using distributed search and server management
US10594773B2 (en) 2018-01-22 2020-03-17 Spredfast, Inc. Temporal optimization of data operations using distributed search and server management
KR102540001B1 (ko) * 2018-01-29 2023-06-05 삼성전자주식회사 디스플레이 장치 및 디스플레이 장치의 화면 표시방법
US11331807B2 (en) 2018-02-15 2022-05-17 DMAI, Inc. System and method for dynamic program configuration
US20190260826A1 (en) * 2018-02-21 2019-08-22 Artem Gurtovoy P2p video communication with a third-parties
US10997258B2 (en) * 2018-02-28 2021-05-04 Fujitsu Limited Bot networks
US10652171B2 (en) * 2018-03-01 2020-05-12 American Express Travel Related Services Company, Inc. Multi-profile chat environment
JP7133634B2 (ja) * 2018-03-09 2022-09-08 ライン プラス コーポレーション ユーザフィードバックが可能なボットに基づいて映像を制作する方法、システム、および非一時的なコンピュータ読み取り可能な記録媒体
US10341742B1 (en) * 2018-03-28 2019-07-02 Rovi Guides, Inc. Systems and methods for alerting a user to missed content in previously accessed media
JP7087556B2 (ja) * 2018-03-29 2022-06-21 株式会社リコー 共用支援サーバ、共用システム、支援方法、及びプログラム
JP7149560B2 (ja) * 2018-04-13 2022-10-07 国立研究開発法人情報通信研究機構 リクエスト言換システム、リクエスト言換モデル及びリクエスト判定モデルの訓練方法、及び対話システム
US11310176B2 (en) * 2018-04-13 2022-04-19 Snap Inc. Content suggestion system
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US20190327330A1 (en) 2018-04-20 2019-10-24 Facebook, Inc. Building Customized User Profiles Based on Conversational Data
US10594635B2 (en) * 2018-04-20 2020-03-17 Oracle International Corporation Managing customer relationship using multiple chat servers designed to interface with service applications
US11676220B2 (en) 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11074284B2 (en) * 2018-05-07 2021-07-27 International Business Machines Corporation Cognitive summarization and retrieval of archived communications
DK180130B1 (da) 2018-05-07 2020-06-02 Apple Inc. Multi-participant live communication user interface
US11317833B2 (en) 2018-05-07 2022-05-03 Apple Inc. Displaying user interfaces associated with physical activities
DK180171B1 (en) 2018-05-07 2020-07-14 Apple Inc USER INTERFACES FOR SHARING CONTEXTUALLY RELEVANT MEDIA CONTENT
US10755717B2 (en) * 2018-05-10 2020-08-25 International Business Machines Corporation Providing reminders based on voice recognition
CN110472021A (zh) * 2018-05-11 2019-11-19 微软技术许可有限责任公司 会话中推荐新闻的技术
US10929155B2 (en) 2018-05-11 2021-02-23 Slack Technologies, Inc. System, method, and apparatus for building and rendering a message user interface in a group-based communication system
US10701003B2 (en) * 2018-05-21 2020-06-30 Slack Technologies, Inc. Systems and methods for initiating external actions via a group-based communication system
US10599538B2 (en) * 2018-05-31 2020-03-24 Dell Products L.P. Usage profile based recommendations
US20190390866A1 (en) 2018-06-22 2019-12-26 Honeywell International Inc. Building management system with natural language interface
US11436359B2 (en) 2018-07-04 2022-09-06 Monday.com Ltd. System and method for managing permissions of users for a single data type column-oriented data structure
US11698890B2 (en) 2018-07-04 2023-07-11 Monday.com Ltd. System and method for generating a column-oriented data structure repository for columns of single data types
CN109165050B (zh) * 2018-07-05 2020-10-13 腾讯科技(深圳)有限公司 程序的运行方法、装置、计算设备以及存储介质
US10460235B1 (en) 2018-07-06 2019-10-29 Capital One Services, Llc Data model generation using generative adversarial networks
US11474978B2 (en) 2018-07-06 2022-10-18 Capital One Services, Llc Systems and methods for a data search engine based on data profiles
US10678571B2 (en) * 2018-07-13 2020-06-09 Microsoft Technology Licensing, Llc Image-based skill triggering
US10721190B2 (en) * 2018-07-31 2020-07-21 Microsoft Technology Licensing, Llc Sequence to sequence to classification model for generating recommended messages
US11157694B2 (en) 2018-08-14 2021-10-26 Snap Inc. Content suggestion system
US11159459B2 (en) * 2018-08-28 2021-10-26 International Business Machines Corporation Managing content in a collaboration environment
US10666587B1 (en) 2018-08-29 2020-05-26 Snap Inc. Media enhancement system
JP6570715B1 (ja) * 2018-08-30 2019-09-04 株式会社ドワンゴ 配信サーバ、配信システム、配信方法及びプログラム
US11063887B2 (en) * 2018-09-13 2021-07-13 Sharp Kabushiki Kaisha Information processing apparatus, user terminal apparatus, and control method
US11354507B2 (en) * 2018-09-13 2022-06-07 International Business Machines Corporation Compared sentiment queues
US20200097499A1 (en) * 2018-09-26 2020-03-26 Rovi Guides, Inc. Systems and methods for generating query suggestions
US10880433B2 (en) 2018-09-26 2020-12-29 Rovi Guides, Inc. Systems and methods for curation and delivery of content for use in electronic calls
US10855834B2 (en) * 2018-09-26 2020-12-01 Rovi Guides, Inc. Systems and methods for curation and delivery of content for use in electronic calls
US11128792B2 (en) 2018-09-28 2021-09-21 Apple Inc. Capturing and displaying images with multiple focal planes
US10855657B2 (en) 2018-10-11 2020-12-01 Spredfast, Inc. Multiplexed data exchange portal interface in scalable data networks
US11052322B1 (en) 2018-10-31 2021-07-06 Snap Inc. In-game status bar
US10778623B1 (en) * 2018-10-31 2020-09-15 Snap Inc. Messaging and gaming applications communication platform
US20200142719A1 (en) * 2018-11-02 2020-05-07 International Business Machines Corporation Automatic generation of chatbot meta communication
WO2020102349A1 (en) * 2018-11-13 2020-05-22 Illumy, Inc. Methods, systems, and apparatus for email to persistent messaging and/or text to persistent messaging
US11087020B2 (en) * 2018-11-28 2021-08-10 Vmware, Inc. Providing transparency in private-user-data access
US11777874B1 (en) * 2018-12-14 2023-10-03 Carvana, LLC Artificial intelligence conversation engine
CN110209952B (zh) * 2018-12-18 2023-03-24 腾讯科技(深圳)有限公司 信息推荐方法、装置、设备及存储介质
US11580127B1 (en) 2018-12-21 2023-02-14 Wells Fargo Bank, N.A. User interfaces for database visualizations
CN111414732A (zh) * 2019-01-07 2020-07-14 北京嘀嘀无限科技发展有限公司 文本风格转换方法、装置、电子设备及存储介质
KR102319157B1 (ko) * 2019-01-21 2021-10-29 라인플러스 주식회사 메신저 내 플랫폼에 추가된 애플리케이션을 이용하여 대화방에서 정보를 공유하는 방법, 시스템, 및 비-일시적인 컴퓨터 판독가능한 기록 매체
US10817317B2 (en) * 2019-01-24 2020-10-27 Snap Inc. Interactive informational interface
US10956474B2 (en) 2019-03-14 2021-03-23 Microsoft Technology Licensing, Llc Determination of best set of suggested responses
US11065549B2 (en) * 2019-03-15 2021-07-20 Sony Interactive Entertainment Inc. AI modeling for video game coaching and matchmaking
WO2020190103A1 (en) 2019-03-20 2020-09-24 Samsung Electronics Co., Ltd. Method and system for providing personalized multimodal objects in real time
JP7275717B2 (ja) * 2019-03-22 2023-05-18 富士フイルムビジネスイノベーション株式会社 メッセージ提供装置、プログラム、及び表示制御方法
US11151381B2 (en) * 2019-03-25 2021-10-19 Verizon Patent And Licensing Inc. Proximity-based content sharing as an augmentation for imagery captured by a camera of a device
KR20200113750A (ko) * 2019-03-26 2020-10-07 라인플러스 주식회사 대화 스레드를 표시하기 위한 방법 및 시스템
WO2020202314A1 (ja) * 2019-03-29 2020-10-08 株式会社Aill コミュニケーション支援サーバ、コミュニケーション支援システム、コミュニケーション支援方法、及びコミュニケーション支援プログラム
US11113475B2 (en) * 2019-04-15 2021-09-07 Accenture Global Solutions Limited Chatbot generator platform
KR20200121064A (ko) * 2019-04-15 2020-10-23 라인플러스 주식회사 이벤트 메시지를 관리하기 위한 방법, 시스템, 및 비-일시적인 컴퓨터 판독가능한 기록 매체
US11521114B2 (en) 2019-04-18 2022-12-06 Microsoft Technology Licensing, Llc Visualization of training dialogs for a conversational bot
USD914049S1 (en) 2019-04-22 2021-03-23 Facebook, Inc. Display screen with an animated graphical user interface
USD913313S1 (en) 2019-04-22 2021-03-16 Facebook, Inc. Display screen with an animated graphical user interface
USD914051S1 (en) 2019-04-22 2021-03-23 Facebook, Inc. Display screen with an animated graphical user interface
USD914058S1 (en) 2019-04-22 2021-03-23 Facebook, Inc. Display screen with a graphical user interface
USD912697S1 (en) 2019-04-22 2021-03-09 Facebook, Inc. Display screen with a graphical user interface
USD912693S1 (en) 2019-04-22 2021-03-09 Facebook, Inc. Display screen with a graphical user interface
USD913314S1 (en) 2019-04-22 2021-03-16 Facebook, Inc. Display screen with an animated graphical user interface
USD930695S1 (en) 2019-04-22 2021-09-14 Facebook, Inc. Display screen with a graphical user interface
DK201970532A1 (en) 2019-05-06 2021-05-03 Apple Inc Activity trends and workouts
US20200364806A1 (en) * 2019-05-15 2020-11-19 Facebook, Inc. Systems and methods for initiating conversations within an online dating service
US10931540B2 (en) 2019-05-15 2021-02-23 Khoros, Llc Continuous data sensing of functional states of networked computing devices to determine efficiency metrics for servicing electronic messages asynchronously
US11972277B2 (en) 2019-05-16 2024-04-30 Lovingly, Llc Emotionally driven software interaction experience
US10817142B1 (en) 2019-05-20 2020-10-27 Facebook, Inc. Macro-navigation within a digital story framework
US10757054B1 (en) 2019-05-29 2020-08-25 Facebook, Inc. Systems and methods for digital privacy controls
US11388132B1 (en) * 2019-05-29 2022-07-12 Meta Platforms, Inc. Automated social media replies
US11405347B1 (en) * 2019-05-31 2022-08-02 Meta Platforms, Inc. Systems and methods for providing game-related content
US11792242B2 (en) * 2019-06-01 2023-10-17 Apple Inc. Sharing routine for suggesting applications to share content from host application
US11277485B2 (en) 2019-06-01 2022-03-15 Apple Inc. Multi-modal activity tracking user interface
US11556546B2 (en) 2019-06-01 2023-01-17 Apple Inc. People suggester using historical interactions on a device
USD912700S1 (en) 2019-06-05 2021-03-09 Facebook, Inc. Display screen with an animated graphical user interface
USD914739S1 (en) 2019-06-05 2021-03-30 Facebook, Inc. Display screen with an animated graphical user interface
USD924255S1 (en) 2019-06-05 2021-07-06 Facebook, Inc. Display screen with a graphical user interface
USD914705S1 (en) 2019-06-05 2021-03-30 Facebook, Inc. Display screen with an animated graphical user interface
USD917533S1 (en) 2019-06-06 2021-04-27 Facebook, Inc. Display screen with a graphical user interface
USD916915S1 (en) 2019-06-06 2021-04-20 Facebook, Inc. Display screen with a graphical user interface
USD918264S1 (en) 2019-06-06 2021-05-04 Facebook, Inc. Display screen with a graphical user interface
USD914757S1 (en) 2019-06-06 2021-03-30 Facebook, Inc. Display screen with an animated graphical user interface
WO2020246020A1 (ja) * 2019-06-07 2020-12-10 富士通株式会社 情報管理プログラム、情報管理方法および情報管理装置
US11531965B2 (en) * 2019-06-07 2022-12-20 Swarn Singh Dhaliwal Collaboration platform for facilitating conversations between users
US10860984B1 (en) * 2019-06-18 2020-12-08 Microsoft Technology Licensing, Llc Out of office email detection system
US11038830B2 (en) * 2019-06-28 2021-06-15 Nextiva, Inc. Creating and sharing customizable chat spaces
CN110334352B (zh) * 2019-07-08 2023-07-07 腾讯科技(深圳)有限公司 引导信息显示方法、装置、终端及存储介质
US10990416B2 (en) * 2019-07-30 2021-04-27 Ncr Corporation Location-based mobile application processing
WO2021025825A1 (en) 2019-08-05 2021-02-11 Ai21 Labs Systems and methods of controllable natural language generation
US11561936B2 (en) * 2019-08-21 2023-01-24 Salesforce, Inc. Building collaborative data processing flows
US11429839B2 (en) * 2019-08-22 2022-08-30 International Business Machines Corporation Adapting movie storylines
US10529067B1 (en) * 2019-08-23 2020-01-07 Alchephi LLC Method and graphic user interface for interactively displaying digital media objects across multiple computing devices
US11057330B2 (en) 2019-08-26 2021-07-06 International Business Machines Corporation Determination of conversation threads in a message channel based on conversational flow and semantic similarity of messages
US11863638B1 (en) * 2019-08-30 2024-01-02 Meta Platforms, Inc. Displaying supplemental content in messaging interfaces
US11303588B1 (en) * 2019-09-05 2022-04-12 Meta Platforms, Inc. Automating a response to a message communicated to a business entity via an online messaging application
US11288578B2 (en) 2019-10-10 2022-03-29 International Business Machines Corporation Context-aware conversation thread detection for communication sessions
CN110752984B (zh) * 2019-10-24 2021-10-15 北京字节跳动网络技术有限公司 一种显示在线文档的方法、装置、电子设备及存储介质
KR102282328B1 (ko) * 2019-11-15 2021-07-28 인천대학교 산학협력단 Lstm을 이용한 국가별 선호도 예측 시스템 및 방법
US11526661B2 (en) 2019-11-18 2022-12-13 Monday.com Ltd. Digital processing systems and methods for integrated communications module in tables of collaborative work systems
US20210158305A1 (en) * 2019-11-22 2021-05-27 Eventide Inc. Contagious Status Change
US11223582B2 (en) 2019-12-02 2022-01-11 Capital One Services, Llc Pre-chat intent prediction for dialogue generation
US11119759B2 (en) 2019-12-18 2021-09-14 Bank Of America Corporation Self-learning code conflict resolution tool
US11106863B1 (en) * 2019-12-30 2021-08-31 Snap Inc. User-specified replacement of terms in messaging
WO2021144723A1 (en) * 2020-01-14 2021-07-22 [24]7.ai, Inc. System for handling multi-party interactions with agents of an enterprise and method thereof
US10841251B1 (en) * 2020-02-11 2020-11-17 Moveworks, Inc. Multi-domain chatbot
DK202070616A1 (en) 2020-02-14 2022-01-14 Apple Inc User interfaces for workout content
CN111447074B (zh) 2020-03-22 2021-10-08 腾讯科技(深圳)有限公司 群组会话中的提醒方法、装置、设备及介质
US11335088B2 (en) 2020-03-30 2022-05-17 Snap Inc. Augmented reality item collections
US11550552B2 (en) * 2020-03-30 2023-01-10 Nuance Communications, Inc. Development system and method for a conversational application
US11757949B2 (en) * 2020-03-31 2023-09-12 Ricoh Company, Ltd. Event registration system, user terminal, and storage medium
KR20220161461A (ko) 2020-03-31 2022-12-06 스냅 인코포레이티드 메시징 시스템에서 물리적 제품들에 대한 증강 현실 경험들
US11468883B2 (en) * 2020-04-24 2022-10-11 Snap Inc. Messaging system with trend analysis of content
CN113595856B (zh) * 2020-04-30 2022-09-30 北京字节跳动网络技术有限公司 信息交互方法、装置、设备及介质
US11829953B1 (en) 2020-05-01 2023-11-28 Monday.com Ltd. Digital processing systems and methods for managing sprints using linked electronic boards
US11501255B2 (en) 2020-05-01 2022-11-15 Monday.com Ltd. Digital processing systems and methods for virtual file-based electronic white board in collaborative work systems
KR20210135683A (ko) * 2020-05-06 2021-11-16 라인플러스 주식회사 인터넷 전화 기반 통화 중 리액션을 표시하는 방법, 시스템, 및 컴퓨터 프로그램
US11513667B2 (en) 2020-05-11 2022-11-29 Apple Inc. User interface for audio message
US11507863B2 (en) 2020-05-21 2022-11-22 Apple Inc. Feature determination for machine learning to suggest applications/recipients
CN113709022B (zh) * 2020-05-22 2024-02-02 腾讯科技(深圳)有限公司 消息交互方法、装置、设备及存储介质
US11151195B1 (en) 2020-05-30 2021-10-19 CareerAmerica, LLC Method and system for predicative QandA and resource suggestions
CN115769298A (zh) * 2020-06-02 2023-03-07 谷歌有限责任公司 缺少自动化助理应用编程接口功能的外部应用的自动化助理控制
KR20230017348A (ko) * 2020-06-10 2023-02-03 스냅 인코포레이티드 컨텍스트 애플리케이션 메뉴
US11165734B1 (en) 2020-06-10 2021-11-02 Snap Inc. Messaging system share-to-chat
US11277359B2 (en) * 2020-06-11 2022-03-15 Servicenow, Inc. Integration of a messaging platform with a remote network management application
CN111738446B (zh) * 2020-06-12 2023-11-03 北京百度网讯科技有限公司 深度学习推理引擎的调度方法、装置、设备和介质
CN113821101B (zh) * 2020-06-18 2024-05-14 丰田自动车株式会社 机器学习装置
US11888790B2 (en) 2020-06-26 2024-01-30 Cisco Technology, Inc. Dynamic skill handling mechanism for bot participation in secure multi-user collaboration workspaces
US11663418B2 (en) * 2020-08-05 2023-05-30 Capital One Services, Llc Systems and methods for generating dynamic conversational responses using machine learning models
US20220058444A1 (en) * 2020-08-19 2022-02-24 Capital One Services, Llc Asymmetric adversarial learning framework for multi-turn dialogue response generation
US11595592B2 (en) * 2020-09-15 2023-02-28 Snap Inc. Recorded sound thumbnail
CN112051950A (zh) * 2020-09-17 2020-12-08 北京默契破冰科技有限公司 显示方法、装置、设备及计算机可读存储介质
US11438289B2 (en) 2020-09-18 2022-09-06 Khoros, Llc Gesture-based community moderation
US11128589B1 (en) 2020-09-18 2021-09-21 Khoros, Llc Gesture-based community moderation
US11405337B2 (en) * 2020-09-23 2022-08-02 Capital One Services, Llc Systems and methods for generating dynamic conversational responses using ensemble prediction based on a plurality of machine learning models
CN112148872B (zh) * 2020-09-28 2024-04-02 国家计算机网络与信息安全管理中心广东分中心 自然对话主题分析方法、装置、电子设备和存储介质
CN116235500A (zh) * 2020-09-30 2023-06-06 斯纳普公司 生成用于分享到外部应用的媒体内容项
CN116210226A (zh) * 2020-09-30 2023-06-02 斯纳普公司 基于轮次的协作播放列表
US11394792B2 (en) 2020-10-26 2022-07-19 Snap Inc. Context surfacing in collections
WO2022092889A1 (en) * 2020-10-29 2022-05-05 Seegene, Inc. Method, device, and terminal for managing community service
CN112270608A (zh) * 2020-10-30 2021-01-26 海腾保险代理有限公司 保险业务自助办理的方法、装置、系统及自助机器人
US11438282B2 (en) 2020-11-06 2022-09-06 Khoros, Llc Synchronicity of electronic messages via a transferred secure messaging channel among a system of various networked computing devices
US11627100B1 (en) 2021-10-27 2023-04-11 Khoros, Llc Automated response engine implementing a universal data space based on communication interactions via an omnichannel electronic data channel
US11621861B2 (en) * 2020-11-06 2023-04-04 Microsoft Technology Licensing, Llc Dynamic grouping of live video streams and content views
US11924375B2 (en) 2021-10-27 2024-03-05 Khoros, Llc Automated response engine and flow configured to exchange responsive communication data via an omnichannel electronic communication channel independent of data source
US11228644B1 (en) * 2020-11-10 2022-01-18 Capital One Services, Llc Systems and methods to generate contextual threads
US11429601B2 (en) * 2020-11-10 2022-08-30 Bank Of America Corporation System for generating customized data input options using machine learning techniques
US11714629B2 (en) 2020-11-19 2023-08-01 Khoros, Llc Software dependency management
KR102501460B1 (ko) * 2020-11-20 2023-02-23 김용환 음식 배달 서비스 제공 방법, 호스트 단말 및 메신저 서버
KR102560162B1 (ko) * 2020-11-30 2023-07-25 공미경 증강현실을 이용한 온라인 보드 게임 제공 시스템
CN112565061A (zh) * 2020-12-04 2021-03-26 上海航翼网络科技有限公司 一种应用于协同系统的ai机器人系统
US11412014B1 (en) * 2020-12-21 2022-08-09 Meta Platforms, Inc. Systems and methods for integrated audioconferencing
US20220224693A1 (en) * 2021-01-13 2022-07-14 Level 3 Communications, Llc Conference security for user groups
US11782582B2 (en) * 2021-01-14 2023-10-10 Monday.com Ltd. Digital processing systems and methods for detectable codes in presentation enabling targeted feedback in collaborative work systems
CN114816599B (zh) * 2021-01-22 2024-02-27 北京字跳网络技术有限公司 图像显示方法、装置、设备及介质
US11431891B2 (en) 2021-01-31 2022-08-30 Apple Inc. User interfaces for wide angle video conference
US11115353B1 (en) * 2021-03-09 2021-09-07 Drift.com, Inc. Conversational bot interaction with utterance ranking
US11778279B2 (en) 2021-04-02 2023-10-03 Sony Interactive Entertainment Inc. Social media crowd-sourced discussions
CN113300938B (zh) * 2021-04-02 2023-02-24 维沃移动通信有限公司 消息发送方法、装置及电子设备
CN115250259B (zh) * 2021-04-25 2024-03-01 北京字跳网络技术有限公司 信息交互方法、装置和电子设备
US11212129B1 (en) * 2021-04-27 2021-12-28 International Business Machines Corporation Profile virtual conference attendees to enhance meeting interactions
US11481236B1 (en) * 2021-05-14 2022-10-25 Slack Technologies, Llc Collaboration hub for a group-based communication system
WO2022245665A1 (en) * 2021-05-15 2022-11-24 Apple Inc. Shared-content session user interfaces
US11893214B2 (en) 2021-05-15 2024-02-06 Apple Inc. Real-time communication user interface
US11449188B1 (en) 2021-05-15 2022-09-20 Apple Inc. Shared-content session user interfaces
US11938376B2 (en) * 2021-05-15 2024-03-26 Apple Inc. User interfaces for group workouts
US11907605B2 (en) 2021-05-15 2024-02-20 Apple Inc. Shared-content session user interfaces
WO2023287181A1 (ko) * 2021-07-12 2023-01-19 이승진 채팅앱을 이용한 채굴시스템 및 채굴방법
CN113630400B (zh) * 2021-07-28 2023-04-18 上海纽盾科技股份有限公司 网络安全中联合防攻击的通信方法、装置及系统
US11989231B2 (en) * 2021-07-29 2024-05-21 Sony Group Corporation Audio recommendation based on text information and video content
KR20240037295A (ko) * 2021-08-05 2024-03-21 난트스튜디오즈 엘엘씨 다중-위치 스튜디오 환경에서의 분산형 명령 실행
US11677692B2 (en) 2021-09-15 2023-06-13 International Business Machines Corporation Conversational systems content related to external events
US11770600B2 (en) 2021-09-24 2023-09-26 Apple Inc. Wide angle video conference
US20230119527A1 (en) * 2021-10-18 2023-04-20 Pure Storage, Inc. Dynamic, Personality-Driven User Experience
US20230137153A1 (en) * 2021-10-29 2023-05-04 Snap Inc. Adding graphical representation of real-world object
CN117795968A (zh) * 2021-12-27 2024-03-29 三星电子株式会社 基于图像信息提供最佳聊天室用户界面的方法和设备
US20230205980A1 (en) * 2021-12-28 2023-06-29 Microsoft Technology Licensing, Llc Multidirectional generative editing
US11768837B1 (en) 2021-12-28 2023-09-26 Wells Fargo Bank, N.A. Semantic entity search using vector space
CN114527925B (zh) * 2022-02-18 2024-02-23 北京字跳网络技术有限公司 一种会话的方法、装置、电子设备和存储介质
CN116781716A (zh) * 2022-03-07 2023-09-19 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备及计算机可读存储介质
US20230344823A1 (en) * 2022-04-22 2023-10-26 Truist Bank Pre-authentication for fast interactive videoconference session access
US11880379B1 (en) 2022-04-28 2024-01-23 Wells Fargo Bank, N.A. Identity resolution in knowledge graph databases
US11977729B2 (en) 2022-06-05 2024-05-07 Apple Inc. Physical activity information user interfaces
US20230390626A1 (en) 2022-06-05 2023-12-07 Apple Inc. User interfaces for physical activity information
CN117319333A (zh) * 2022-06-24 2023-12-29 中兴通讯股份有限公司 chatbot菜单管理方法、装置、计算机设备及可读介质
JP2024017662A (ja) * 2022-07-28 2024-02-08 株式会社バンダイナムコエンターテインメント エンターテインメントシステム、プログラム、サーバ及び表示制御方法
KR102637984B1 (ko) * 2022-08-31 2024-02-16 에스케이증권 주식회사 메타버스와 메신저 채팅룸을 연동하여 사용자를 인증하고 동기화 하는 방법 및 장치
KR20240037571A (ko) 2022-09-15 2024-03-22 이승진 채팅앱을 이용한 채굴시스템 및 채굴방법
US11741071B1 (en) 2022-12-28 2023-08-29 Monday.com Ltd. Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en) 2022-12-30 2024-01-30 Monday.com Ltd Digital processing systems and methods for presenting board graphics
US11893381B1 (en) 2023-02-21 2024-02-06 Monday.com Ltd Digital processing systems and methods for reducing file bundle sizes
JP7440143B1 (ja) 2023-04-18 2024-02-28 チャットプラス株式会社 情報処理方法、プログラム、及び、情報処理装置
CN117258277B (zh) * 2023-10-11 2024-05-07 河南西瓜文化传媒有限公司 基于云计算的云游戏服务平台及游戏资源分配方法
KR102658901B1 (ko) * 2023-12-29 2024-04-18 주식회사 티맥스와플 복수의 사용자들에게 메시지를 전송하기 위한 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150302301A1 (en) * 2014-04-22 2015-10-22 Google Inc. Automatic actions based on contextual replies

Family Cites Families (250)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092102A (en) 1997-10-24 2000-07-18 University Of Pittsburgh Of The Commonwealth System Of Higher Education System and method for notifying users about information or events of an enterprise
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
JP2000298676A (ja) 1999-04-14 2000-10-24 Bandai Co Ltd 情報提供装置
JP2002132804A (ja) 2000-10-24 2002-05-10 Sanyo Electric Co Ltd ユーザ支援システム
US20050146621A1 (en) 2001-09-10 2005-07-07 Nikon Technologies, Inc. Digital camera system, image storage apparatus, and digital camera
US7636750B2 (en) 2001-10-24 2009-12-22 Sprint Spectrum L.P. Method and system for controlling scope of user participation in a communication session
US7283992B2 (en) 2001-11-30 2007-10-16 Microsoft Corporation Media agent to suggest contextually related media content
US20040001099A1 (en) 2002-06-27 2004-01-01 Microsoft Corporation Method and system for associating actions with semantic labels in electronic documents
US7234117B2 (en) 2002-08-28 2007-06-19 Microsoft Corporation System and method for shared integrated online social interaction
US20110107223A1 (en) 2003-01-06 2011-05-05 Eric Tilton User Interface For Presenting Presentations
CN1754147A (zh) 2003-02-25 2006-03-29 松下电器产业株式会社 应用程序的预测方法及移动终端
BRPI0410362B1 (pt) 2003-05-16 2017-06-20 Google Inc. Systems and methods of sharing network and network media
US20120322428A1 (en) 2004-09-30 2012-12-20 Motedata Inc. Network of tags
US10635723B2 (en) 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
US7363295B2 (en) * 2004-04-19 2008-04-22 Yahoo! Inc. Techniques for inline searching in an instant messenger environment
US20060029106A1 (en) 2004-06-14 2006-02-09 Semandex Networks, Inc. System and method for providing content-based instant messaging
US7464110B2 (en) 2004-06-30 2008-12-09 Nokia Corporation Automated grouping of image and other user data
US20060053194A1 (en) * 2004-09-03 2006-03-09 Schneider Ronald E Systems and methods for collaboration
US7720436B2 (en) 2006-01-09 2010-05-18 Nokia Corporation Displaying network objects in mobile devices based on geolocation
US20060150119A1 (en) 2004-12-31 2006-07-06 France Telecom Method for interacting with automated information agents using conversational queries
US7603413B1 (en) 2005-04-07 2009-10-13 Aol Llc Using automated agents to facilitate chat communications
US7860319B2 (en) 2005-05-11 2010-12-28 Hewlett-Packard Development Company, L.P. Image management
US7512580B2 (en) 2005-08-04 2009-03-31 Sap Ag Confidence indicators for automated suggestions
US7747785B2 (en) 2006-04-14 2010-06-29 Microsoft Corporation Instant messaging plug-ins
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US20080120371A1 (en) 2006-11-16 2008-05-22 Rajat Gopal Relational framework for non-real-time audio/video collaboration
EP2154675A4 (en) 2007-06-14 2011-06-22 Sharp Kk IMAGE DATA RECEIVING DEVICE, OPERATING DEVICE, OPERATING SYSTEM, IMAGE DATA STRUCTURE, CONTROL METHOD, OPERATING METHOD, PROGRAM, AND RECORDING MEDIUM
JP2009009334A (ja) 2007-06-27 2009-01-15 Ricoh Co Ltd 画像処理装置、画像処理方法及び画像処理プログラム
US20110145068A1 (en) 2007-09-17 2011-06-16 King Martin T Associating rendered advertisements with digital content
US20110035662A1 (en) 2009-02-18 2011-02-10 King Martin T Interacting with rendered documents using a multi-function mobile device, such as a mobile phone
US8082151B2 (en) 2007-09-18 2011-12-20 At&T Intellectual Property I, Lp System and method of generating responses to text-based messages
US20090119584A1 (en) 2007-11-02 2009-05-07 Steve Herbst Software Tool for Creating Outlines and Mind Maps that Generates Subtopics Automatically
CA2708757A1 (en) 2007-12-17 2009-06-25 Play Megaphone System and method for managing interaction between a user and an interactive system
US20090282114A1 (en) 2008-05-08 2009-11-12 Junlan Feng System and method for generating suggested responses to an email
US8166019B1 (en) 2008-07-21 2012-04-24 Sprint Communications Company L.P. Providing suggested actions in response to textual communications
US8805110B2 (en) 2008-08-19 2014-08-12 Digimarc Corporation Methods and systems for content processing
WO2010023647A1 (en) 2008-08-25 2010-03-04 France Telecom System and method to identify and transfer to a wireless device actionable items based on user selected content
US8391618B1 (en) 2008-09-19 2013-03-05 Adobe Systems Incorporated Semantic image classification and search
USD599363S1 (en) 2008-11-24 2009-09-01 Microsoft Corporation Transitional cursor user interface for a portion of a display screen
USD611053S1 (en) 2008-11-24 2010-03-02 Microsoft Corporation Transitional user interface for a portion of a display screen
US20100228590A1 (en) 2009-03-03 2010-09-09 International Business Machines Corporation Context-aware electronic social networking
US9195898B2 (en) 2009-04-14 2015-11-24 Qualcomm Incorporated Systems and methods for image recognition using mobile devices
US20120131520A1 (en) 2009-05-14 2012-05-24 Tang ding-yuan Gesture-based Text Identification and Selection in Images
US9782527B2 (en) 2009-05-27 2017-10-10 Tc1 Llc Monitoring of redundant conductors
USD651609S1 (en) 2009-06-26 2012-01-03 Microsoft Corporation Display screen with an animated image
CN102667754A (zh) 2009-07-02 2012-09-12 乐宅睦有限公司 用于增强数字内容的系统和方法
US8515957B2 (en) 2009-07-28 2013-08-20 Fti Consulting, Inc. System and method for displaying relationships between electronically stored information to provide classification suggestions via injection
US9128610B2 (en) 2009-09-30 2015-09-08 At&T Mobility Ii Llc Virtual predictive keypad
US8831279B2 (en) 2011-03-04 2014-09-09 Digimarc Corporation Smartphone-based methods and systems
US8121618B2 (en) 2009-10-28 2012-02-21 Digimarc Corporation Intuitive computing methods and systems
US8400548B2 (en) 2010-01-05 2013-03-19 Apple Inc. Synchronized, interactive augmented reality displays for multifunction devices
USD624927S1 (en) 2010-01-19 2010-10-05 Microsoft Corporation User interface for a portion of a display screen
US8650210B1 (en) 2010-02-09 2014-02-11 Google Inc. Identifying non-search actions based on a search query
US8655965B2 (en) 2010-03-05 2014-02-18 Qualcomm Incorporated Automated messaging response in wireless communication systems
US8266109B1 (en) 2010-03-09 2012-09-11 Symantec Corporation Performance of scanning containers for archiving
JP2011211696A (ja) 2010-03-10 2011-10-20 Nikon Corp 画像データ処理システム、画像データ処理プログラム、及び画像データ処理装置
JP5733907B2 (ja) 2010-04-07 2015-06-10 キヤノン株式会社 画像処理装置、画像処理方法、コンピュータプログラム
US9929982B2 (en) 2010-04-08 2018-03-27 Microsoft Technology Licensing, Llc Designating automated agents as friends in a social network service
US20110252207A1 (en) 2010-04-08 2011-10-13 Oracle International Corporation Dynamic content archiving
US20170098122A1 (en) 2010-06-07 2017-04-06 Affectiva, Inc. Analysis of image content with associated manipulation of expression presentation
USD648343S1 (en) 2010-06-24 2011-11-08 Microsoft Corporation Display screen with user interface
USD648735S1 (en) 2010-06-25 2011-11-15 Microsoft Corporation Display screen with animated user interface
US20120030289A1 (en) 2010-07-30 2012-02-02 Avaya Inc. System and method for multi-model, context-sensitive, real-time collaboration
US8781152B2 (en) 2010-08-05 2014-07-15 Brian Momeyer Identifying visual media content captured by camera-enabled mobile device
US9936333B2 (en) 2010-08-10 2018-04-03 Microsoft Technology Licensing, Llc Location and contextual-based mobile application promotion and delivery
KR101722687B1 (ko) 2010-08-10 2017-04-04 삼성전자주식회사 객체간 또는 객체와 유저간에 정보 제공 방법, 그 방법을 수행할 수 있는 유저 디바이스, 및 저장 매체
US9262517B2 (en) 2010-08-18 2016-02-16 At&T Intellectual Property I, L.P. Systems and methods for social media data mining
KR101753031B1 (ko) 2010-11-15 2017-06-30 엘지전자 주식회사 이동 단말기 및 이것의 메타데이터 설정 방법
KR101060753B1 (ko) 2011-01-04 2011-08-31 (주)올라웍스 입력 이미지에 포함된 객체에 대한 콜렉션을 수행할 수 있도록 지원하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체
US20120179717A1 (en) 2011-01-11 2012-07-12 Sony Corporation System and method for effectively providing entertainment recommendations to device users
US8688698B1 (en) 2011-02-11 2014-04-01 Google Inc. Automatic text suggestion
CA2824627C (en) 2011-02-23 2014-09-30 Bottlenose, Inc. System and method for analyzing messages in a network or across networks
US20130262574A1 (en) * 2011-03-15 2013-10-03 Gabriel Cohen Inline User Addressing in Chat Sessions
US8938669B1 (en) * 2011-03-15 2015-01-20 Google Inc. Inline user addressing in chat and document editing sessions
US8554701B1 (en) 2011-03-18 2013-10-08 Amazon Technologies, Inc. Determining sentiment of sentences from customer reviews
JP2012221480A (ja) 2011-04-06 2012-11-12 L Is B Corp メッセージ処理システム
US9049259B2 (en) 2011-05-03 2015-06-02 Onepatont Software Limited System and method for dynamically providing visual action or activity news feed
EP2523436A1 (en) 2011-05-11 2012-11-14 Alcatel Lucent Mobile device and method of managing applications for a mobile device
USD658678S1 (en) 2011-05-27 2012-05-01 Microsoft Corporation Display screen with animated user interface
USD658677S1 (en) 2011-05-27 2012-05-01 Microsoft Corporation Display screen with animated user interface
USD658201S1 (en) 2011-05-27 2012-04-24 Microsoft Corporation Display screen with animated user interface
US8832284B1 (en) * 2011-06-16 2014-09-09 Google Inc. Virtual socializing
US8589407B2 (en) 2011-06-17 2013-11-19 Google Inc. Automated generation of suggestions for personalized reactions in a social network
US8700480B1 (en) 2011-06-20 2014-04-15 Amazon Technologies, Inc. Extracting quotes from customer reviews regarding collections of items
US9588668B2 (en) 2011-07-21 2017-03-07 Imerj, Llc Methods of displaying a second view
US9245253B2 (en) 2011-08-19 2016-01-26 Disney Enterprises, Inc. Soft-sending chat messages
US8659667B2 (en) 2011-08-29 2014-02-25 Panasonic Corporation Recipe based real-time assistance for digital image capture and other consumer electronics devices
US9179278B2 (en) 2011-09-01 2015-11-03 Qualcomm Incorporated Systems and methods involving augmented menu using mobile device
US10102546B2 (en) 2011-09-15 2018-10-16 Stephan HEATH System and method for tracking, utilizing predicting, and implementing online consumer browsing behavior, buying patterns, social networking communications, advertisements and communications, for online coupons, products, goods and services, auctions, and service providers using geospatial mapping technology, and social networking
BR102012024861B1 (pt) 2011-09-30 2021-02-09 Apple Inc. sistema para desambiguar entrada de usuário para realizar uma tarefa
US20180032997A1 (en) 2012-10-09 2018-02-01 George A. Gordon System, method, and computer program product for determining whether to prompt an action by a platform in connection with a mobile device
KR101521332B1 (ko) * 2011-11-08 2015-05-20 주식회사 다음카카오 인스턴트 메시징 서비스 및 인스턴트 메시징 서비스로부터 확장된 복수의 서비스들을 제공하는 방법
USD673172S1 (en) 2011-11-21 2012-12-25 Microsoft Corporation Display screen with animated graphical user interface
KR101402506B1 (ko) 2011-12-01 2014-06-03 라인 가부시키가이샤 인스턴트 메시징 어플리케이션을 이용한 대화형 정보제공 시스템 및 방법
USD701228S1 (en) 2012-01-06 2014-03-18 Samsung Electronics Co., Ltd. Display screen or portion thereof with transitional graphical user interface
USD699744S1 (en) 2012-01-06 2014-02-18 Microsoft Corporation Display screen with an animated graphical user interface
AP00390S1 (en) 2012-01-09 2013-05-13 Samsung Electronics Co Ltd Set comprising a sequence of generated images for a display screen or portion thereof
USD705802S1 (en) 2012-02-07 2014-05-27 Microsoft Corporation Display screen with animated graphical user interface
USD705251S1 (en) 2012-02-09 2014-05-20 Microsoft Corporation Display screen with animated graphical user interface
GB2499395A (en) 2012-02-14 2013-08-21 British Sky Broadcasting Ltd Search method
US9330145B2 (en) 2012-02-22 2016-05-03 Salesforce.Com, Inc. Systems and methods for context-aware message tagging
USD699739S1 (en) 2012-02-22 2014-02-18 Microsoft Corporation Display screen with animated graphical user interface
USD701527S1 (en) 2012-02-23 2014-03-25 Htc Corporation Display screen with transitional graphical user interface
USD701528S1 (en) 2012-02-24 2014-03-25 Htc Corporation Display screen with transitional graphical user interface
US8620021B2 (en) 2012-03-29 2013-12-31 Digimarc Corporation Image-related methods and arrangements
USD705244S1 (en) 2012-06-20 2014-05-20 Microsoft Corporation Display screen with animated graphical user interface
US20130346235A1 (en) 2012-06-20 2013-12-26 Ebay, Inc. Systems, Methods, and Computer Program Products for Caching of Shopping Items
US9191786B2 (en) 2012-06-27 2015-11-17 At&T Intellectual Property I, L.P. Method and apparatus for generating a suggested message to be sent over a network
KR20140011073A (ko) 2012-07-17 2014-01-28 삼성전자주식회사 텍스트 추천 방법 및 장치
US9019415B2 (en) 2012-07-26 2015-04-28 Qualcomm Incorporated Method and apparatus for dual camera shutter
US9195645B2 (en) 2012-07-30 2015-11-24 Microsoft Technology Licensing, Llc Generating string predictions using contexts
KR101899817B1 (ko) 2012-08-01 2018-09-19 엘지전자 주식회사 이동단말기 및 그 제어 방법
USD695755S1 (en) 2012-08-06 2013-12-17 Samsung Electronics Co., Ltd. TV monitor with graphical user interface
US20140047413A1 (en) * 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications
US20140052540A1 (en) 2012-08-20 2014-02-20 Giridhar Rajaram Providing content using inferred topics extracted from communications in a social networking system
USD706802S1 (en) 2012-08-28 2014-06-10 Samsung Electronics Co., Ltd. Portable electronic device displaying transitional graphical user interface
KR102068604B1 (ko) 2012-08-28 2020-01-22 삼성전자 주식회사 휴대단말기의 문자 인식장치 및 방법
US9218333B2 (en) 2012-08-31 2015-12-22 Microsoft Technology Licensing, Llc Context sensitive auto-correction
JP6160996B2 (ja) 2012-09-12 2017-07-12 パナソニックIpマネジメント株式会社 撮像装置
US20140088954A1 (en) 2012-09-27 2014-03-27 Research In Motion Limited Apparatus and method pertaining to automatically-suggested emoticons
US10691743B2 (en) 2014-08-05 2020-06-23 Sri International Multi-dimensional realization of visual content of an image collection
US9299060B2 (en) * 2012-10-12 2016-03-29 Google Inc. Automatically suggesting groups based on past user interaction
KR20140052155A (ko) 2012-10-19 2014-05-07 삼성전자주식회사 디스플레이 장치, 디스플레이 장치 제어 방법 및 디스플레이 장치의 제어를 위한 정보처리장치
USD714821S1 (en) 2012-10-24 2014-10-07 Microsoft Corporation Display screen with animated graphical user interface
WO2014068573A1 (en) 2012-10-31 2014-05-08 Aniways Advertising Solutions Ltd. Custom emoticon generation
US20140156801A1 (en) 2012-12-04 2014-06-05 Mobitv, Inc. Cowatching and connected platforms using a push architecture
US9244905B2 (en) 2012-12-06 2016-01-26 Microsoft Technology Licensing, Llc Communication context based predictive-text suggestion
US20140164506A1 (en) * 2012-12-10 2014-06-12 Rawllin International Inc. Multimedia message having portions of networked media content
US20140171133A1 (en) 2012-12-18 2014-06-19 Google Inc. Query response
CN103067490B (zh) 2012-12-26 2015-11-25 腾讯科技(深圳)有限公司 移动终端通讯会话的通知方法、终端、服务器及系统
US8930481B2 (en) 2012-12-31 2015-01-06 Huawei Technologies Co., Ltd. Message processing method, terminal and system
US9020956B1 (en) 2012-12-31 2015-04-28 Google Inc. Sentiment and topic based content determination methods and systems
US20140189538A1 (en) 2012-12-31 2014-07-03 Motorola Mobility Llc Recommendations for Applications Based on Device Context
KR20140091633A (ko) 2013-01-11 2014-07-22 삼성전자주식회사 모바일 장치에서의 상황 인지에 따른 추천 항목을 제공하기 위한 방법 및 이를 위한 모바일 장치
KR101821358B1 (ko) 2013-01-22 2018-01-25 네이버 주식회사 다자간 메신저 서비스를 제공하는 방법 및 시스템
US20140237057A1 (en) 2013-02-21 2014-08-21 Genesys Telecommunications Laboratories, Inc. System and method for processing private messages in a contact center
USD704726S1 (en) 2013-03-04 2014-05-13 Roger Leslie Maxwell Display screen or portion thereof with animated graphical user interface
JP6255646B2 (ja) 2013-03-04 2018-01-10 株式会社L is B メッセージシステム
US8825474B1 (en) 2013-04-16 2014-09-02 Google Inc. Text suggestion output using past interaction data
US9177318B2 (en) 2013-04-22 2015-11-03 Palo Alto Research Center Incorporated Method and apparatus for customizing conversation agents based on user characteristics using a relevance score for automatic statements, and a response prediction function
US9923849B2 (en) * 2013-05-09 2018-03-20 Ebay Inc. System and method for suggesting a phrase based on a context
US10523454B2 (en) * 2013-06-13 2019-12-31 Evernote Corporation Initializing chat sessions by pointing to content
US10599765B2 (en) 2013-06-27 2020-03-24 Avaya Inc. Semantic translation model training
WO2015009770A1 (en) 2013-07-16 2015-01-22 Pinterest, Inc. Object based contextual menu controls
US9330110B2 (en) 2013-07-17 2016-05-03 Xerox Corporation Image search system and method for personalized photo applications using semantic networks
US10162884B2 (en) 2013-07-23 2018-12-25 Conduent Business Services, Llc System and method for auto-suggesting responses based on social conversational contents in customer care services
US9161188B2 (en) 2013-08-22 2015-10-13 Yahoo! Inc. System and method for automatically suggesting diverse and personalized message completions
CN104035947B (zh) 2013-09-16 2016-04-13 腾讯科技(深圳)有限公司 兴趣点推荐方法及装置、获取推荐兴趣点的方法及装置
US9329692B2 (en) 2013-09-27 2016-05-03 Microsoft Technology Licensing, Llc Actionable content displayed on a touch screen
US20150100537A1 (en) 2013-10-03 2015-04-09 Microsoft Corporation Emoji for Text Predictions
US8996639B1 (en) * 2013-10-15 2015-03-31 Google Inc. Predictive responses to incoming communications
KR20150071768A (ko) 2013-12-18 2015-06-29 에스케이하이닉스 주식회사 이미지 센서 및 그 제조방법
US10565268B2 (en) 2013-12-19 2020-02-18 Adobe Inc. Interactive communication augmented with contextual information
WO2015100362A1 (en) 2013-12-23 2015-07-02 24/7 Customer, Inc. Systems and methods for facilitating dialogue mining
US9519408B2 (en) 2013-12-31 2016-12-13 Google Inc. Systems and methods for guided user actions
US9817813B2 (en) 2014-01-08 2017-11-14 Genesys Telecommunications Laboratories, Inc. Generalized phrases in automatic speech recognition systems
US20150207765A1 (en) 2014-01-17 2015-07-23 Nathaniel Brantingham Messaging Service with Conversation Suggestions
WO2015116971A1 (en) 2014-01-31 2015-08-06 Heller Noah Raymond Determination of aesthetic preferences based on user history
CN106164934A (zh) 2014-02-10 2016-11-23 谷歌公司 智能相机用户界面
CN104836720B (zh) 2014-02-12 2022-02-25 北京三星通信技术研究有限公司 交互式通信中进行信息推荐的方法及装置
US10095748B2 (en) 2014-03-03 2018-10-09 Microsoft Technology Licensing, Llc Personalized information query suggestions
KR102106787B1 (ko) * 2014-03-17 2020-05-06 에스케이텔레콤 주식회사 메신저 프로그램과 어플리케이션 연동 방법, 이를 위한 장치 및 시스템
CN104951428B (zh) 2014-03-26 2019-04-16 阿里巴巴集团控股有限公司 用户意图识别方法及装置
US9544257B2 (en) 2014-04-04 2017-01-10 Blackberry Limited System and method for conducting private messaging
US10482163B2 (en) * 2014-04-23 2019-11-19 Klickafy, Llc Clickable emoji
US10445396B2 (en) 2014-05-31 2019-10-15 Apple Inc. Device, method, and graphical user interface for extending functionality of a host application to another application
WO2015200350A1 (en) 2014-06-24 2015-12-30 Google Inc. Ranking and selecting images for display from a set of images
EP3165012A1 (en) 2014-07-03 2017-05-10 Nuance Communications, Inc. System and method for suggesting actions based upon incoming messages
US9043196B1 (en) 2014-07-07 2015-05-26 Machine Zone, Inc. Systems and methods for identifying and suggesting emoticons
US9779307B2 (en) 2014-07-07 2017-10-03 Google Inc. Method and system for non-causal zone search in video monitoring
US9990105B2 (en) 2014-07-08 2018-06-05 Verizon Patent And Licensing Inc. Accessible contextual controls within a graphical user interface
US20160043817A1 (en) 2014-07-18 2016-02-11 RSS Technologies, LLC Methods and apparatus for locality based broadcasting
WO2016018111A1 (en) 2014-07-31 2016-02-04 Samsung Electronics Co., Ltd. Message service providing device and method of providing content via the same
US10218652B2 (en) * 2014-08-08 2019-02-26 Mastercard International Incorporated Systems and methods for integrating a chat function into an e-reader application
US9965559B2 (en) 2014-08-21 2018-05-08 Google Llc Providing automatic actions for mobile onscreen content
US10447621B2 (en) * 2014-09-04 2019-10-15 Microsoft Technology Licensing, Llc App powered extensibility of messages on an existing messaging service
US10146748B1 (en) * 2014-09-10 2018-12-04 Google Llc Embedding location information in a media collaboration using natural language processing
US20160140477A1 (en) 2014-11-13 2016-05-19 Xerox Corporation Methods and systems for assigning tasks to workers
US9569728B2 (en) 2014-11-14 2017-02-14 Bublup Technologies, Inc. Deriving semantic relationships based on empirical organization of content by users
US20160179816A1 (en) 2014-12-22 2016-06-23 Quixey, Inc. Near Real Time Auto-Suggest Search Results
US9727218B2 (en) 2015-01-02 2017-08-08 Microsoft Technology Licensing, Llc Contextual browser frame and entry box placement
KR20160089152A (ko) 2015-01-19 2016-07-27 주식회사 엔씨소프트 화행 분석을 통한 스티커 추천 방법 및 시스템
KR101634086B1 (ko) 2015-01-19 2016-07-08 주식회사 엔씨소프트 감정 분석을 통한 스티커 추천 방법 및 시스템
US20160224524A1 (en) 2015-02-03 2016-08-04 Nuance Communications, Inc. User generated short phrases for auto-filling, automatically collected during normal text use
US20160226804A1 (en) * 2015-02-03 2016-08-04 Google Inc. Methods, systems, and media for suggesting a link to media content
US9661386B2 (en) * 2015-02-11 2017-05-23 Google Inc. Methods, systems, and media for presenting a suggestion to watch videos
US10079785B2 (en) 2015-02-12 2018-09-18 Google Llc Determining reply content for a reply to an electronic communication
US10353542B2 (en) 2015-04-02 2019-07-16 Facebook, Inc. Techniques for context sensitive illustrated graphical user interface elements
US10965622B2 (en) 2015-04-16 2021-03-30 Samsung Electronics Co., Ltd. Method and apparatus for recommending reply message
US9703541B2 (en) 2015-04-28 2017-07-11 Google Inc. Entity action suggestion on a mobile device
US9883358B2 (en) 2015-05-08 2018-01-30 Blackberry Limited Electronic device and method of determining suggested responses to text-based communications
US10909329B2 (en) 2015-05-21 2021-02-02 Baidu Usa Llc Multilingual image question answering
US10504509B2 (en) 2015-05-27 2019-12-10 Google Llc Providing suggested voice-based action queries
KR20160148260A (ko) 2015-06-16 2016-12-26 삼성전자주식회사 전자 장치 및 이의 제어 방법
US10274911B2 (en) 2015-06-25 2019-04-30 Intel Corporation Conversational interface for matching text of spoken input based on context model
US9712466B2 (en) 2015-11-10 2017-07-18 Wrinkl, Inc. Integrating actionable objects into an on-line chat communications platform
EP3323056A1 (en) 2015-07-15 2018-05-23 Chappy, Inc. Systems and methods for screenshot linking
US20170031575A1 (en) 2015-07-28 2017-02-02 Microsoft Technology Licensing, Llc Tailored computing experience based on contextual signals
CN105183276A (zh) * 2015-08-19 2015-12-23 小米科技有限责任公司 在聊天界面实现游戏的方法、装置及终端设备
US10445425B2 (en) 2015-09-15 2019-10-15 Apple Inc. Emoji and canned responses
US11025569B2 (en) * 2015-09-30 2021-06-01 Apple Inc. Shared content presentation with integrated messaging
KR102393928B1 (ko) 2015-11-10 2022-05-04 삼성전자주식회사 응답 메시지를 추천하는 사용자 단말 장치 및 그 방법
US10129193B2 (en) 2015-11-17 2018-11-13 International Business Machines Corporation Identifying relevant content contained in message streams that appear to be irrelevant
US20170147202A1 (en) 2015-11-24 2017-05-25 Facebook, Inc. Augmenting text messages with emotion information
KR102427833B1 (ko) 2015-11-30 2022-08-02 삼성전자주식회사 사용자 단말장치 및 디스플레이 방법
US20170171117A1 (en) 2015-12-10 2017-06-15 International Business Machines Corporation Message Suggestion Using Dynamic Information
CN108476164B (zh) * 2015-12-21 2021-10-08 谷歌有限责任公司 在消息传送应用中自动地提供机器人服务的方法
EP3395018A1 (en) 2015-12-21 2018-10-31 Google LLC Automatic suggestions for message exchange threads
KR101712180B1 (ko) 2015-12-29 2017-03-06 라인 가부시키가이샤 메시지를 송수신하기 위한 컴퓨터로 읽을 수 있는 기록매체에 저장된 프로그램, 방법 및 장치
US9560152B1 (en) 2016-01-27 2017-01-31 International Business Machines Corporation Personalized summary of online communications
US11477139B2 (en) 2016-02-25 2022-10-18 Meta Platforms, Inc. Techniques for messaging bot rich communication
US20170250935A1 (en) 2016-02-25 2017-08-31 Facebook, Inc. Techniques for messaging bot app interactions
US20170250930A1 (en) * 2016-02-29 2017-08-31 Outbrain Inc. Interactive content recommendation personalization assistant
US10831802B2 (en) 2016-04-11 2020-11-10 Facebook, Inc. Techniques to respond to user requests using natural-language machine learning based on example conversations
US10452671B2 (en) 2016-04-26 2019-10-22 Facebook, Inc. Recommendations from comments on online social networks
US9866693B2 (en) 2016-05-06 2018-01-09 Genesys Telecommunications Laboratories, Inc. System and method for monitoring progress of automated chat conversations
US20170344224A1 (en) 2016-05-27 2017-11-30 Nuance Communications, Inc. Suggesting emojis to users for insertion into text-based messages
US10505872B2 (en) 2016-06-12 2019-12-10 Apple Inc. Messaging application interacting with one or more extension applications
US10554599B2 (en) 2016-06-12 2020-02-04 Apple Inc. Conversion of detected URL in text message
US20170359283A1 (en) 2016-06-12 2017-12-14 Apple Inc. Music creation app in messaging app
US9990128B2 (en) * 2016-06-12 2018-06-05 Apple Inc. Messaging application interacting with one or more extension applications
US11088973B2 (en) 2016-06-12 2021-08-10 Apple Inc. Conversion of text relating to media content and media extension apps
US10852912B2 (en) 2016-06-12 2020-12-01 Apple Inc. Image creation app in messaging app
US10785175B2 (en) 2016-06-12 2020-09-22 Apple Inc. Polling extension application for interacting with a messaging application
US10368208B2 (en) 2016-06-12 2019-07-30 Apple Inc. Layers in messaging applications
US10194288B2 (en) 2016-06-12 2019-01-29 Apple Inc. Sticker distribution system for messaging apps
US10595169B2 (en) 2016-06-12 2020-03-17 Apple Inc. Message extension app store
US10254935B2 (en) 2016-06-29 2019-04-09 Google Llc Systems and methods of providing content selection
US10515393B2 (en) 2016-06-30 2019-12-24 Paypal, Inc. Image data detection for micro-expression analysis and targeted data services
CN109792402B (zh) * 2016-07-08 2020-03-06 艾赛普公司 自动响应用户的请求
US20180032499A1 (en) 2016-07-28 2018-02-01 Google Inc. Automatically Generating Spelling Suggestions and Corrections Based on User Context
US10049310B2 (en) 2016-08-30 2018-08-14 International Business Machines Corporation Image text analysis for identifying hidden text
KR20180026983A (ko) 2016-09-05 2018-03-14 삼성전자주식회사 전자 장치 및 그 제어 방법
WO2018057536A1 (en) 2016-09-20 2018-03-29 Google Llc Bot requesting permission for accessing data
US10015124B2 (en) * 2016-09-20 2018-07-03 Google Llc Automatic response suggestions based on images received in messaging applications
WO2018057537A1 (en) 2016-09-20 2018-03-29 Google Llc Bot interaction
WO2018057541A1 (en) * 2016-09-20 2018-03-29 Google Llc Suggested responses based on message stickers
US11176931B2 (en) 2016-09-23 2021-11-16 Microsoft Technology Licensing, Llc Conversational bookmarks
CN106412712A (zh) * 2016-09-26 2017-02-15 北京小米移动软件有限公司 视频播放方法及装置
US10416846B2 (en) 2016-11-12 2019-09-17 Google Llc Determining graphical element(s) for inclusion in an electronic communication
US20180196854A1 (en) * 2017-01-11 2018-07-12 Google Inc. Application extension for generating automatic search queries
CN106708538B (zh) * 2017-01-23 2020-04-21 腾讯科技(深圳)有限公司 界面显示方法及装置
US10146768B2 (en) * 2017-01-25 2018-12-04 Google Llc Automatic suggested responses to images received in messages using language model
US10229427B2 (en) * 2017-04-10 2019-03-12 Wildfire Systems, Inc. Virtual keyboard trackable referral system
US20180316637A1 (en) * 2017-05-01 2018-11-01 Microsoft Technology Licensing, Llc Conversation lens for context
US11468344B2 (en) 2017-05-05 2022-10-11 Liveperson, Inc. Dynamic response prediction for improved bot task processing
US10891485B2 (en) 2017-05-16 2021-01-12 Google Llc Image archival based on image categories
US10827319B2 (en) 2017-06-02 2020-11-03 Apple Inc. Messaging system interacting with dynamic extension app
US10348658B2 (en) 2017-06-15 2019-07-09 Google Llc Suggested items for use with embedded applications in chat conversations
US10404636B2 (en) 2017-06-15 2019-09-03 Google Llc Embedded programs and interfaces for chat conversations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150302301A1 (en) * 2014-04-22 2015-10-22 Google Inc. Automatic actions based on contextual replies

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024090726A1 (ko) * 2022-10-24 2024-05-02 라인플러스 주식회사 메신저에서의 영상 추천 방법, 기록 매체 및 컴퓨팅 디바이스

Also Published As

Publication number Publication date
US20180367484A1 (en) 2018-12-20
CN110709869B (zh) 2024-05-10
US10348658B2 (en) 2019-07-09
US20190297039A1 (en) 2019-09-26
EP3580712A1 (en) 2019-12-18
JP2020510929A (ja) 2020-04-09
CN110709869A (zh) 2020-01-17
WO2018231306A1 (en) 2018-12-20
JP6718028B2 (ja) 2020-07-08
KR20190101492A (ko) 2019-08-30
US11050694B2 (en) 2021-06-29

Similar Documents

Publication Publication Date Title
KR102096799B1 (ko) 채팅 대화들에서 임베디드 애플리케이션들과 함께 사용하기 위한 제안된 아이템들
US11451499B2 (en) Embedded programs and interfaces for chat conversations
US11805091B1 (en) Social topical context adaptive network hosted system
US11595339B2 (en) System and method of embedding rich media into text messages
US10979373B2 (en) Suggested responses based on message stickers
CN107710197B (zh) 在通信网络上共享图像和图像相册
US8725826B2 (en) Linking users into live social networking interactions based on the users&#39; actions relative to similar content
US20170168692A1 (en) Dual-Modality Client Application
KR20180093040A (ko) 메시지 교환 스레드들에 대한 자동적인 제안들
US20080229215A1 (en) Interaction In A Virtual Social Environment
US11406896B1 (en) Augmented reality storytelling: audience-side
Deuze Life in Media: A Global Introduction to Media Studies
Chadha The Next Frontier–Expanding the Definition of Accessibility

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant