KR102361376B1 - 보안 디바이스 투 디바이스 통신 채널 - Google Patents

보안 디바이스 투 디바이스 통신 채널 Download PDF

Info

Publication number
KR102361376B1
KR102361376B1 KR1020207010959A KR20207010959A KR102361376B1 KR 102361376 B1 KR102361376 B1 KR 102361376B1 KR 1020207010959 A KR1020207010959 A KR 1020207010959A KR 20207010959 A KR20207010959 A KR 20207010959A KR 102361376 B1 KR102361376 B1 KR 102361376B1
Authority
KR
South Korea
Prior art keywords
electronic device
user
data
devices
communal
Prior art date
Application number
KR1020207010959A
Other languages
English (en)
Other versions
KR20200052953A (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 KR20200052953A publication Critical patent/KR20200052953A/ko
Application granted granted Critical
Publication of KR102361376B1 publication Critical patent/KR102361376B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network
    • H04L12/2809Exchanging configuration information on appliance services in a home automation network indicating that an appliance service is present in a home automation network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0869Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/50Secure pairing of devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • H04W76/14Direct-mode setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/005Discovery of network devices, e.g. terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)
  • Power Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

일 실시예는 커뮤널 전자 디바이스 상의 데이터 프로세싱 시스템을 제공하는데, 데이터 프로세싱 시스템은 명령어들을 저장하는 메모리 디바이스; 메모리 디바이스 상에 저장된 명령어들을 실행하는 하나 이상의 프로세서들을 포함하고, 명령어들은 하나 이상의 프로세서들로 하여금 커뮤널 전자 디바이스에서 커맨드들을 수신하는 가상 어시스턴트를 제공하게 하고 - 가상 어시스턴트는 하나 이상의 프로세서들을 통해 커뮤널 전자 디바이스에서 커맨드를 수신함 -; 커맨드가 커뮤널 전자 디바이스와 연관된 사용자의 개인 데이터에 액세스하는 것인지 여부를 결정하게 하고; 커맨드가 사용자의 개인 데이터에 액세스하는 것이라는 결정에 응답하여, 커맨드의 적어도 일부분을 프로세싱하라는 요청을 사용자의 개인 전자 디바이스에 전송하게 한다.

Description

보안 디바이스 투 디바이스 통신 채널
본 출원은 2017년 10월 21일자로 출원된 미국 가특허 출원 제62/575,373호에 대한 우선권을 주장하며, 이는 이로써 본 명세서에 참고로 포함된다.
본 기술분야에 알려진 전자 디바이스들은 전자 디바이스의 사용자와 결합할 수 있는 지능형 자동화 어시스턴트 시스템을 포함할 수 있다. 일반적으로, 지능형 자동화 어시스턴트 시스템들은 전자 디바이스 상에서 액션들을 수행할 수 있거나 사용자에게 요청된 정보를 제공할 수 있는 디지털 또는 가상 어시스턴트를 제공한다. 이러한 자동화 어시스턴트들은 전화 번호를 다이얼링하고, 텍스트 메시지를 전송하고, 리마인더들을 설정하고, 이벤트들을 캘린더에 추가하고, 사용자를 대신하여 다양한 다른 동작들을 수행하는 것과 같은 전자 디바이스의 많은 동작들 및 기능들을 제어할 수 있다. 자동화 어시스턴트 시스템들은 사용자로부터 음성 자연 언어 커맨드들을 수신할 수 있고, 스피치 합성 엔진을 사용하여 생성되는 응답들을 사용자에게 말할 수 있다.
자동화 어시스턴트들에 대한 서비스들 및 동작들은 자동화 어시스턴트에 대한 서비스 영역을 기술하는 다양한 도메인들로 분류될 수 있다. 특정 도메인들 내의 완전한 기능성을 인에이블하는 것은 전자 디바이스의 사용자와 연관된 개인 또는 비밀 데이터에 대한 액세스를 요구할 수 있다. 그러한 데이터는 개인 사용자 디바이스 상에 저장되거나 사용자 디바이스에 액세스가능한 원격 위치에 저장될 수 있다. 그러나, 자동화 어시스턴트의 일부 구현예들은 하나 초과의 사용자에 의해 사용될 수 있는 커뮤널(communal) 디바이스들 상에 포함될 수 있다. 프라이버시 목적을 위해, 개인 또는 비밀 사용자 정보를 커뮤널 디바이스들에 저장하는 것을 피하는 것이 유리할 수 있다. 따라서, 사용자를 위한 개인 정보에 대한 액세스를 요구하는 자동화 어시스턴트 서비스들은 커뮤널 디바이스들 상에서 이용가능하지 않을 수 있다.
본 명세서에 기술된 실시예들은 스마트 스피커 디바이스 또는 다른 스마트 홈 디바이스와 같은 커뮤널 전자 디바이스가 개인 사용자 데이터를 수반하는 가상 어시스턴트 요청들을 프로세싱을 위해 개인 사용자 디바이스로 중계 또는 재지향시키는 것을 인에이블하는 통신 메커니즘을 제공한다. 통신 메커니즘은 또한 스마트 홈 디바이스가 구성 데이터를 포함하는 데이터를 교환하는 것을 인에이블하는 범용 통신 메커니즘으로서 사용될 수 있다.
일 실시예는 전자 디바이스 상의 데이터 프로세싱 시스템을 제공하는데, 데이터 프로세싱 시스템은 명령어들을 저장하는 메모리 디바이스 및 메모리 디바이스 상에 저장된 명령어들을 실행하는 하나 이상의 프로세서들을 포함한다. 명령어들은, 실행될 때, 하나 이상의 프로세서들로 하여금 전자 디바이스들 사이의 암호화된 데이터 채널을 인에이블하게 한다. 암호화된 데이터 채널을 인에이블하기 위해, 하나 이상의 프로세서들은 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하도록 구성되고, 제1 전자 디바이스 및 제2 전자 디바이스는 각각 클라우드 서비스 계정과 연관된다. 하나 이상의 프로세서들은 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하고, 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하고, 신뢰 관계를 검증한 후에 제1 전자 디바이스와 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하도록 추가로 구성된다. 이어서, 암호화된 통신 세션은 암호화된 통신 세션에 걸쳐 제1 전자 디바이스와 제2 전자 디바이스 사이에서 데이터를 교환하기 위해 사용될 수 있다.
일 실시예는 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 기계 판독가능 매체를 제공하며, 동작들은, 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계를 포함하고, 제1 전자 디바이스 및 제2 전자 디바이스는 각각 클라우드 서비스 계정과 연관된다. 명령어들은 추가적으로 하나 이상의 프로세서들로 하여금, 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하는 단계, 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계, 신뢰 관계를 검증한 후에 제1 전자 디바이스와 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하는 단계, 및 암호화된 통신 세션에 걸쳐 제1 전자 디바이스와 제2 전자 디바이스 사이에서 데이터를 교환하는 단계를 포함하는 추가적인 동작들을 수행하게 할 수 있다.
일 실시예는 본 명세서에 기술된 컴퓨팅 디바이스 또는 데이터 프로세싱 시스템 상에서 실행되는 방법을 제공한다. 방법은 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계 - 제1 전자 디바이스 및 제2 전자 디바이스는 각각 클라우드 서비스 계정과 연관됨 -, 무선 라디오 디바이스를 통해 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하는 단계, 및 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계 - 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계는 이전에 확립된 신뢰 관계를 검증하는 단계를 포함함 - 를 포함한다. 방법은 추가적으로 무선 네트워크 접속을 통해 네트워크 계층 프로토콜을 통해 제1 전자 디바이스와 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하는 단계 - 암호화된 통신 세션은 신뢰 관계를 검증한 후에 확립됨 -, 및 암호화된 통신 세션에 걸쳐 제1 전자 디바이스와 제2 전자 디바이스 사이에서 데이터를 교환하는 단계를 포함한다. 데이터는, 예를 들어, 제1 전자 디바이스와 제2 전자 디바이스 사이의 디바이스 데이터를 동기화하기 위해 교환될 수 있으며, 여기서 디바이스 데이터는 클라우드 서비스 계정과 연관된다.
본 실시예들의 다른 특징들이 첨부 도면 및 다음의 상세한 설명으로부터 자명할 것이다.
본 발명의 실시예들은 첨부 도면의 도면들에 제한이 아닌 예로서 예시되며, 도면에서 참조 번호들은 원본 도면을 나타내고, 유사한 참조들은 유사한 요소들을 나타낼 수 있다.
도 1a 및 도 1b는 실시예들에 따른 가상 어시스턴트들 및 개인 데이터 도메인들을 인에이블하기 위한 전자 디바이스 시스템들의 블록도들을 예시한다.
도 2는 실시예들에 따른 다수의 스마트 홈 디바이스들을 포함하는 홈 네트워크 환경을 예시한다.
도 3은 실시예들에 따른 커뮤널 디바이스를 발견하고 컴패니언(companion) 디바이스와 페어링하기 위해 사용되는 발견 프로세스의 동작들의 흐름도이다.
도 4a 내지 도 4c는 커뮤널 디바이스 상의 가상 어시스턴트 클라이언트가 프라이버시 보존 방식으로 질의들을 프로세싱하는 것을 인에이블하는 프로세스들의 흐름도들이다.
도 5는 본 명세서에 기술된 실시예들에 따른 페어링된 디바이스와 컴패니언 링크 접속을 확립하기 위한 프로세스를 예시한다.
도 6은 본 명세서에 기술된 실시예들에 따른 컴패니언 디바이스 상의 개인 데이터에 대한 액세스를 허용하기 위한 프로세스를 예시한다.
도 7은 일 실시예에 따른 스마트 홈 디바이스 내에서 사용하기 위한 컴퓨팅 디바이스의 블록도이다.
도 8은 본 발명의 일부 실시예들에서 사용될 수 있는 예시적인 API 아키텍처를 예시하는 블록도이다.
도 9a 및 도 9b는 실시예들에 따른 예시적인 API 소프트웨어 스택들의 블록도들이다.
도 10은 일 실시예에 따른 모바일 디바이스 아키텍처의 블록도이다.
도 11은 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
도 12는 일 실시예에 따른 가상 어시스턴트의 블록도이다.
접속된 스마트 홈 디바이스의 네트워크는 가정 내의 다수의 사용자들에 의해 사용되는 커뮤널 디바이스를 포함할 수 있다. 디바이스가 다수의 사용자들을 갖는 커뮤널 디바이스이기 때문에, 디바이스의 임의의 주어진 사용자에 대한 개인 정보를 저장하는 것을 피하는 것이 유리할 수 있다. 또한, 사용자가 커뮤널 디바이스의 다른 사용자들의 개인 데이터에 관한 인가되지 않은 질의들을 발향하는 것을 방지하는 것이 유리할 수 있다. 커뮤널 디바이스의 각각의 사용자와 연관된 예시적인 개인 또는 비밀 사용자 정보는, 연락처 리스트들, 캘린더 엔트리들, 텍스트 메시지들, 이메일들, 통화 이력, 알람들, 리마인더들, 및 개인 또는 비밀 사용자 데이터로 간주될 수 있는 다른 전자 데이터를 포함할 수 있지만, 이에 제한되지 않는다. 다양한 실시예들에서, 추가적인 개인 또는 비밀 정보는 위치 정보, 가족 관계들, 사용자 선호도들, 애플리케이션 정보, 개인 디바이스 상에 저장된 데이터, 디바이스 위치, 가족 디바이스 위치들, 의료 정보, 또는 건강 정보를 포함할 수 있지만, 이에 제한되지 않는다. 일부 실시예들에서, 일부 사용자 데이터는 고유하게 개인적 또는 비밀인 것으로 간주되는 반면, 다른 정보는 사용자에 의한 개인 또는 비밀 정보로 지정될 수 있다.
본 명세서에 기술된 실시예들은 커뮤널 디바이스 상의 가상 어시스턴트가 페어링된 사용자 디바이스를 통해 개인 도메인 기능성에 액세스하는 것을 인에이블하는 시스템들 및 방법들을 제공한다. 페어링된 사용자 디바이스는 커뮤널 디바이스에 대한 컴패니언 디바이스로서 사용될 수 있다. 커뮤널 디바이스와 컴패니언 디바이스 사이의 페어링은 디바이스들이 보안 데이터 채널을 통해 신뢰되고 안전한 통신을 확립하는 것을 인에이블할 수 있다. 커뮤널 디바이스 상의 가상 어시스턴트가 커뮤널 디바이스 상에 저장되지 않거나 그에 액세스가능하지 않은 개인 사용자 정보에 대한 액세스를 요구하는 질의를 수신하는 경우, 커뮤널 디바이스는 컴패니언 디바이스에 접속할 수 있고, 개인 사용자 데이터와 관련된 동작들을 수행하도록 컴패니언 디바이스에 요청할 수 있다.
커뮤널 디바이스와 컴패니언 디바이스 사이의 통신은 컴패니언 링크로 지칭되는 보안 데이터 채널 상에서 수행될 수 있다. 컴패니언 링크는 홈 네트워크 환경 내의 접속된 디바이스들에 대한 지속적이고 낮은 레이턴시 메시징 시스템을 제공한다. 일부 실시예들에서, 컴패니언 링크는 홈 내의 또는 인터넷을 통해 도달가능한 개인 모바일 디바이스들과 홈 내의 스피커 디바이스들과 같은 정적 커뮤널 디바이스들의 링크를 지원한다. 컴패니언 링크는, 커뮤널 디바이스들이 개인 요청들을 재지향시키는 것을 인에이블하는데, 그렇지 않으면, 커뮤널 디바이스는 프라이버시 문제들로 인해 이를 하나 이상의 개인 디바이스들로 처리할 수 없다. 사용자와 연관된 개인 디바이스에 대한 개인 요청들의 재지향은 커뮤널 디바이스 상의 가상 어시스턴트가 프라이버시-보존 방식으로 수신 및 요청하는 것을 인에이블할 수 있다.
컴패니언 디바이스들로의 개인 질의들의 재지향을 인에이블하는 것에 더하여, 일 실시예에서, 컴패니언 링크는 또한 홈 네트워크 환경 내의 디바이스들에 대한 범용 메시징 시스템을 제공한다. 범용 메시징 시스템은 컴패니언 링크를 통해 메시지들을 교환함으로써 다수의 홈 디바이스들이 협력하여 동작하는 것을 인에이블한다. 예를 들어, 다수의 스마트 스피커 디바이스들 사이의 오디오 재생은 디바이스들이 미디어 항목들의 재생을 조정하는 것, 사용자에게 가장 가까운 스피커를 통해 사용자에게 오디오 통지들을 선택적으로 제공하는 것, 다수의 스피커들을 다채널 오디오 시스템으로 구성하는 것, 또는 음성 요청 및 응답의 지속기간 동안 스피커에서 오디오 더킹을 조정하는 것과 같은, 그러나 이에 제한되지 않는 동작들을 수행하는 것을 인에이블하도록 조정될 수 있다.
커뮤널 디바이스들은 발견 프로토콜을 통해 컴패니언 링크 서비스에 대한 지지를 광고할 수 있다. 커뮤널 디바이스와 동일한 네트워크 상의 개인 사용자 디바이스들은 커뮤널 디바이스에 의해 광고된 컴패니언 링크 서비스를 발견하고 광고된 정보를 사용하여 커뮤널 디바이스와 접속할 수 있다. 개인 디바이스는 커뮤널 디바이스와 페어링 프로세스를 수행하여 사용자에 대한 컴패니언 디바이스가 될 수 있다. 일 실시예에서, 페어링 프로세스는 사용자 디바이스가 단거리 무선 통신 메커니즘을 통해 컴패니언 디바이스와 식별자들, 키들, 또는 비밀들을 교환하는 근접 요소를 포함한다. 페어링 프로세스는 또한 컴패니언 링크를 통한 커뮤널 디바이스와 컴패니언 디바이스 사이의 후속 접속들을 용이하게 할 수 있는 존재 및 도달가능성 정보의 교환을 포함할 수 있다.
도면들 및 후술하는 설명에서, 참조 번호들은 N00의 참조 번호를 갖는 요소가 도 N에 먼저 소개되도록, 참조된 요소가 소개되는 도면을 나타낸다. 예를 들어, 100 내지 199의 참조 번호를 갖는 요소는 도 1에 먼저 도시되는 반면, 200 내지 299의 참조 번호를 갖는 요소는 도 2에 먼저 도시되는 등이다. 주어진 도면의 설명 내에서, 이전에 소개된 요소들은 참조될 수 있거나 참조되지 않을 수 있다.
뒤따르는 도면에 묘사된 프로세스들 및 동작들은 하드웨어(예를 들어, 회로부, 전용 로직 등), (비일시적 기계 판독가능 매체 상의 명령어들과 같은) 소프트웨어, 또는 하드웨어와 소프트웨어 둘 모두의 조합을 포함하는 프로세싱 로직을 통해 수행될 수 있다. 프로세스들의 일부가 일부 순차적 동작들의 관점에서 하기에 기술되지만, 기술된 동작들 중 일부는 상이한 순서로 수행될 수 있음이 이해되어야 한다. 또한, 일부 동작들은 순차적인 대신에 동시에 수행될 수 있다. 추가적으로, 일부 동작들은 선택적으로 표시될 수 있고, 모든 실시예들에 의해 수행되지는 않는다.
시스템 및 환경
도 1a 및 도 1b는 실시예들에 따른 가상 어시스턴트들 및 개인 데이터 도메인들을 인에이블하기 위한 전자 디바이스 시스템들의 블록도들을 예시한다. 도 1a는 본 명세서에 기술된 실시예들에 따른 가상 어시스턴트 시스템(100)의 블록도를 예시한다. 도 1b는 실시예들에 따른 가상 어시스턴트 시스템(100) 내의 디바이스들 사이의 통신을 인에이블하기 위한 컴패니언 링크 시스템(130)의 블록도를 예시한다. 도 1b의 컴패니언 링크 시스템(130)은 커뮤널 디바이스 상의 가상 어시스턴트가 커뮤널 디바이스 상에 저장되지 않은 개인 사용자 데이터에 대한 액세스를 요구하는 질의들에 응답하는 것을 인에이블하기 위해 가상 어시스턴트 시스템 내의 개인 데이터 도메인을 확립하는 데 사용될 수 있다. 도 1a 및 도 1b의 블록도들은 예시된 일부 컴포넌트들이 동일한 물리적 서버 또는 디바이스 내에 존재하는 로직 컴포넌트들을 분리할 수 있다는 점에서, 부분적으로 논리적이다.
도 1a는 사용자 의도를 추론하기 위해 음성 및/또는 텍스트 형태로 수신되는 자연 언어 입력을 해석하는 프로세싱 시스템을 제공하는 가상 어시스턴트 시스템(100)을 예시한다. 이어서, 가상 어시스턴트 시스템(100)은 추론된 사용자 의도에 기초하여 액션들을 수행할 수 있다. 다양한 실시예들에서, 시스템은 추론된 사용자 의도를 확립하도록 설계된 단계들 및 파라미터들을 갖는 태스크 흐름을 식별하는 것, 추론된 사용자 의도로부터의 특정 요건들을 태스크 흐름 내에 입력하는 것; 프로그램들, 방법들, 서비스들, API들 등을 호출(invoke)함으로써 태스크 흐름을 실행하는 것; 및 청각적(예컨대, 스피치) 및/또는 시각적 형태로 사용자에 대한 출력 응답들을 생성하는 것을 포함하지만 이에 제한되지 않는 동작들의 세트를 수행할 수 있다. 본 명세서에 사용되는 바와 같이, 용어 가상 어시스턴트는 용어들 "디지털 어시스턴트", "지능형 자동화 어시스턴트" 또는 "자동화 디지털 어시스턴트"와 상호교환가능하게 사용될 수 있고, 일반적으로 음성 및/또는 텍스트 형태의 자연 언어 입력을 해석하여 사용자를 대신하여 액션들을 수행하는 임의의 정보 프로세싱 시스템을 지칭한다.
가상 어시스턴트는 적어도 부분적으로 자연 언어 커맨드, 요청, 진술, 서술, 및/또는 질문의 형태로 사용자 요청을 수용할 수 있다. 전형적으로, 사용자 요청은 가상 어시스턴트에 의해 정보제공형 답변 또는 태스크의 수행 중 어느 하나를 구할 수 있다. 사용자 요청에 대한 만족스러운 응답은 요청된 정보제공형 답변의 제공, 요청된 태스크의 수행, 또는 이 둘의 조합일 수 있다. 예를 들어, 사용자는 가상 어시스턴트에게, "내가 지금 어디에 있지?"와 같은 질문을 할 수 있다. 사용자의 현재 위치에 기초하여, 가상 어시스턴트는 "당신은 골든 게이트 파크 서쪽 입구에 있습니다"라고 답변할 수 있다. 사용자는 또한 태스크의 수행, 예를 들어 "다음주 내 여자친구의 생일 파티에 내 친구들을 초대해 줘"를 요청할 수 있다. 이에 응답하여, 가상 어시스턴트는 "네, 바로 처리하겠습니다"라고 말함으로써 요청을 확인응답(acknowledge)할 수 있고, 이어서 사용자의 전자 주소록에 열거된 사용자의 친구들 각각에게 사용자를 대신하여 적절한 행사 예정 초대장(calendar invite)을 전송할 수 있다. 요청된 태스크의 수행 동안, 가상 어시스턴트는 때때로 연장된 기간 내내 다수의 정보 교환을 수반하는 연속 대화로 사용자와 상호작용할 수 있다. 가상 어시스턴트와 상호작용하여 정보 또는 다양한 태스크들의 수행을 요청하는 수많은 다른 방식이 있다. 구두 응답들을 제공하는 것 및 프로그래밍된 동작들을 취하는 것에 부가하여, 가상 어시스턴트는 또한 다른 시각적 또는 청각적 형태들로, 예컨대, 텍스트, 경고들, 음악, 비디오들, 애니메이션들 등으로서 응답들을 제공할 수 있다.
도 1a에 도시된 바와 같이, 가상 어시스턴트 시스템(100)은 하나 이상의 서버 디바이스들을 갖는 서버 시스템(108)을 포함할 수 있다. 일 실시예에서, 서버 시스템(108)은 다수의 가상 어시스턴트 클라이언트들(VAC)(예컨대, VAC(101), VAC(102))과 통신할 수 있는 가상 어시스턴트 서버(106)를 포함한다. 가상 어시스턴트 클라이언트들은 서버 시스템(108)과 접속하고 통신할 수 있는 다수의 전자 디바이스들 상에서 실행될 수 있다. 제1 가상 어시스턴트 클라이언트(예컨대, VAC(101))는 스마트 스피커 디바이스와 같은 스마트 홈 디바이스(103) 상에서 실행될 수 있다. 제2 가상 어시스턴트 클라이언트(예컨대, VAC(102))는 스마트폰 디바이스와 같은 사용자 디바이스(104) 상에서 실행될 수 있다. 가상 어시스턴트 클라이언트들은 로컬 및 광역 네트워크들의 조합을 포함할 수 있는 하나 이상의 네트워크들(110)을 통해 가상 어시스턴트 서버(106)와 통신할 수 있다. 다양한 가상 어시스턴트 클라이언트들은 사용자 대면 입력 및 출력 프로세싱과 같은 클라이언트 측 기능성을 제공할 수 있고, 가상 어시스턴트 서버(106)와 통신할 수 있다. 가상 어시스턴트 서버(106)는 하나 이상의 네트워크들(110)을 통해 접속된 임의의 수의 사용자 디바이스들 상에 존재하는 다수의 가상 어시스턴트 클라이언트들에 서버 측 기능성들에 제공할 수 있다.
일 실시예에서, 가상 어시스턴트 서버(106)는 VA 클라이언트들에 대한 I/O 인터페이스(112), 하나 이상의 프로세싱 모듈들(114), 데이터 및 모델들을 포함하는 저장 디바이스들(116), 및 외부 서비스들에 대한 I/O 인터페이스(118)를 포함한다. VA 클라이언트들에 대한 I/O 인터페이스(112)는 가상 어시스턴트 서버(106)에 대한 클라이언트 대면 입력 및 출력 처리를 용이하게 할 수 있다. 하나 이상의 프로세싱 모듈들(114)은 데이터 및 프로세싱 모델들(116)을 활용하여 스피치 입력에 대한 자연 언어 프로세싱을 수행하여 사용자의 의도를 추론할 수 있다. 이이서, 하나 이상의 프로세싱 모듈들(114)은 추론된 사용자 의도에 기초하여 태스크 실행을 수행할 수 있다. 외부 서비스들에 대한 I/O 인터페이스(118)는 하나 이상의 네트워크(110)를 통해 가상 어시스턴트 서버(106)와 외부 서비스들(120) 사이의 통신을 용이하게 할 수 있다. 일 실시예에서, 가상 어시스턴트 서버(106)는 사용자 디바이스(104) 상의 VAC(102)가 요청들을 수신한 것에 응답하여 태스크들을 완료하거나, VAC(102)에서 수신된 질의에 응답하여 정보를 획득하기 위해 외부 서비스들(120)과 통신할 수 있다. 외부 서비스들(120)은 내비게이션 서비스(들), 메시징 서비스(들), 정보 서비스(들), 캘린더 서비스(들), 및/또는 전화 서비스(들) 등을 포함할 수 있지만, 이에 제한되지 않는다. 예를 들어, 하나 이상의 내비게이션 서비스들은 사용자 디바이스 상의 VAC(102)에서 수신된 요청에 응답하여 사용자 디바이스(104) 상의 턴-바이-턴(turn-by-turn) 내비게이션을 인에이블하기 위해 사용될 수 있다. 외부 서비스들은 위치 정보, 날씨, 금융 정보, 또는 계정 정보를 추가로 포함할 수 있다. 다양한 실시예들에서, 외부 서비스들(120) 중 일부를 인에이블하는 로직이 서버 시스템(108) 내에 존재할 수 있는 반면, 로직의 일부 부분들은 사용자 디바이스(104) 내에 존재할 수 있다.
가상 어시스턴트 서버(106)는 가상 어시스턴트 클라이언트로부터 수신된 스피치 입력에 응답하여 메시지들을 전송하기 위해 하나 이상의 메시징 서비스들과 통신할 수 있다. 인터넷 검색 엔진들 또는 정보 데이터베이스들과 같은 정보 서비스(들)는 정보 질의에 응답하여 사용자에게 정보를 제공하기 위해 가상 어시스턴트 서버(106)에 의해 액세스될 수 있다. 일 실시예에서, 가상 어시스턴트 서버(106)는 하나 이상의 캘린더 서비스들에 액세스하여 태스크 또는 이벤트를 스케줄링하거나, 태스크 또는 이벤트에 대해 질의들을 만족시킬 수 있다. 가상 어시스턴트 서버(106)는 또한 사용자를 위한 전화 호출들을 개시하기 위해 하나 이상의 전화 서비스들에 액세스할 수 있다.
다양한 실시예들에서, 가상 어시스턴트 서버(106)는 사용자에 의해 클라이언트에 제공되는 스피치 입력의 프로세싱에 의해 VAC(101, 102)를 도울 수 있다. 일 실시예에서, 텍스트 대 스피치 프로세싱 및 자연 언어 프로세싱은 VAC(101, 102)에 의해 부분적으로 그리고 부분적으로 가상 어시스턴트 서버(106) 상에서 수행될 수 있다. 가상 어시스턴트 서버(106)의 데이터 및 프로세싱 모델들(116)은 VAC(101, 102)에 국부적으로 액세스가능한 대응하는 모델들보다 더 복잡하고 더 높은 성능일 수 있다. 따라서, 가상 어시스턴트 서버(106)는 일부 커맨드들을 프로세싱하는 데 더 적합할 수 있고, 프로세싱된 커맨드들의 결과들을 하나 이상의 네트워크들(110)을 통해 VAC(101, 102)로 다시 전송할 수 있다. 사용자에게 제시되는 가상 어시스턴트 상호작용 흐름을 구성하는 동작들은 가상 어시스턴트 서버(106)와 VAC(101, 102) 사이에서 공유될 수 있다. 일 실시예에서, 사용자 입력의 초기 프로세싱, 스피치 출력의 제시, 및 대부분의 사용자 데이터에 대한 액세스는 VAC(101, 102)에 의해 수행될 수 있다. 그러한 실시예에서, 스피치 인식 및 자연 언어 프로세싱은 가상 어시스턴트 서버(106)에 의해 적어도 부분적으로 수행될 수 있다.
스마트 홈 디바이스(103) 및 사용자 디바이스(104)는 하나 이상의 네트워크들(110) 로컬 영역 네트워크들(LAN) 및/또는 광역 네트워크들(WAN), 예컨대 인터넷을 통해 서로 및 서버 시스템(108)과 통신할 수 있다. 하나 이상의 네트워크들은 다양한 유선 또는 무선 프로토콜들을 포함하는 임의의 공지된 상호접속 또는 네트워크 프로토콜을 사용하여 구현될 수 있다. 예시적인 상호접속 및/또는 네트워크 프로토콜들은 이더넷, 범용 직렬 버스(USB), 파이어와이어, GSM(Global System for Mobile Communications), EDGE(Enhanced Data GSM Environment), 코드 분할 다중 액세스(CDMA), 시분할 다중 액세스(TDMA), 롱 텀 에볼루션(LONG Term Evolution, LTE), 블루투스, Wi-Fi, VoIP(voice over Internet Protocol), Wi-MAX, 또는 임의의 다른 적합한 통신 프로토콜을 포함한다.
다양한 실시예들에서, 서버 시스템(108)은 독립형 데이터 프로세싱 장치 및/또는 컴퓨터들의 분산형 네트워크 상에 구현될 수 있다. 일부 예들에서, 서버 시스템(108)은 서버 시스템(108)의 기본 컴퓨팅 리소스들 및/또는 인프라구조 리소스들을 제공하기 위해 제3자 서비스 제공자들(예컨대, 제3자 클라우드 서비스 제공자들)의 다양한 가상 디바이스들 및/또는 서비스들을 또한 채용할 수 있다.
스마트 홈 디바이스(103)는, 다양한 실시예들에서, 스마트 스피커 디바이스, 스마트 홈 허브 디바이스, 또는 다른 유형의 지능형 전자 기기일 수 있다. 예를 들어, 그리고 일 실시예에서 스마트 홈 디바이스(103)는 분산형 미디어 재생 시스템의 일부이도록 구성될 수 있는 스마트 스피커 디바이스이다. 스마트 스피커 디바이스의 특정 예는 미국 캘리포니아주 쿠퍼티노 소재의 애플 사로부터의 HomePod® 스마트 스피커 디바이스이다. 일 실시예에서, 스마트 홈 디바이스(103)는 스마트 온도조절기 또는 스마트 조명 시스템과 같은 지능형 및/또는 디지털 접속된 디바이스들을 포함하지만 이에 제한되지 않는 디지털 접속된 스마트 홈 시스템 내의 하나 이상의 다른 디바이스들을 관리하도록 구성된 스마트 홈 허브 디바이스일 수 있다. 스마트 홈 디바이스(103)는 데이터를 교환하기 위해 사용자 디바이스(104)와 접속할 수 있다. 스마트 홈 디바이스(103)와 사용자 디바이스(104) 사이의 접속은 하나 이상의 네트워크들(110)을 통해 수행될 수 있다. 일 실시예에서, 스마트 홈 디바이스(103) 및 사용자 디바이스(104)는 사용자 디바이스(104)가 LAN과 인터넷 접속들 사이에서 전환함에 따라 지속적 접속을 동적으로 유지할 수 있다.
사용자 디바이스(104)는 임의의 적합한 전자 디바이스일 수 있다. 예를 들어, 그리고 일 실시예에서, 사용자 디바이스(104)는 휴대용 다기능 디바이스, 다기능 디바이스, 또는 개인 전자 디바이스일 수 있다. 휴대용 다기능 디바이스는, 예를 들어, 개인 데이터 어시스턴트, 음악 플레이어, 및/또는 애플리케이션들(예컨대, 앱들 등)을 실행할 수 있는 애플리케이션 프로세서와 같은 다른 기능들을 또한 포함하는 모바일 전화일 수 있다. 휴대용 다기능 디바이스들의 특정 예들은 미국 캘리포니아주 쿠퍼티노 소재의 애플 사(Apple Inc.)로부터의 아이폰(iPhone)®, 아이팟 터치(iPod Touch)®, 및 아이패드(iPad)® 디바이스들을 포함할 수 있다. 휴대용 다기능 디바이스들의 다른 예들은 랩톱 또는 태블릿 컴퓨터들, 또는 스마트 시계 디바이스와 같은 웨어러블 전자 디바이스를 제한 없이 포함할 수 있다. 일부 실시예들에서, 사용자 디바이스(104)는 데스크톱 컴퓨터, 게임 콘솔, 텔레비전, 또는 텔레비전 셋톱 박스와 같은, 그러나 이에 제한되지 않는, 비휴대용 다기능 디바이스일 수 있다. 일 실시예에서, 사용자 디바이스(104)는 홈, 차량, 모터 홈 등의 고정구일 수 있다. 일부 실시예들에서, 사용자 디바이스(104)는 차량, 집, 또는 모바일 홈에 대한 도어 또는 다른 진입 포인트일 수 있거나 그와 함께 작동할 수 있다.
사용자 디바이스(104)는 터치 감응형 표면(예컨대, 터치 스크린 디스플레이들 및/또는 터치패드 인터페이스들), 또는 물리적 키보드, 마우스, 및/또는 조이스틱과 같은 하나 이상의 물리적 사용자 인터페이스 디바이스들을 포함할 수 있다.
일 실시예에서, 스마트 홈 디바이스(103) 상의 VAC(101)는 사용자 디바이스(104) 상의 VAC(102)와 통신하여 스피치 입력의 프로세싱을 용이하게 하거나 스마트 홈 디바이스(103)에서 수신된 커맨드의 의도를 추론할 수 있다. 예를 들어, 일 실시예에서, 스마트 홈 디바이스(103)는 가정 내의 다수의 사용자들에 의해 사용되는 커뮤널 디바이스일 수 있다. 연락처 정보, 캘린더 정보, 메시지 데이터 등과 같은, 커뮤널 디바이스의 사용자들에 대한 소정의 개인 또는 비밀 정보는 주어진 사용자에 대해 비밀인 것으로 분류될 수 있다. 커뮤널 디바이스인 스마트 홈 디바이스(103) 상에 그러한 비밀 정보를 저장하는 것 또는 커뮤널 디바이스가 그러한 정보를 포함하거나 그에 대한 액세스를 갖는 서버들(예컨대, 가상 어시스턴트 서버(106))에 액세스할 수 있게 하는 것을 회피하기 위해, 스마트 홈 디바이스(103) 상의 VAC(101)는 그러한 정보에 대한 액세스를 용이하게 할 수 있는 사용자 디바이스(104)와 연관될 수 있다. 스마트 홈 디바이스(103) 상의 VAC(101)가 사용자와 연관된 비밀 정보로의 액세스를 요구하는 커맨드 또는 액션을 수행할 때, 스마트 홈 디바이스(103) 상의 VAC(101)는 사용자 디바이스(104) 및/또는 사용자 디바이스(104) 상의 VAC(102)와 통신하여, 요청된 커맨드 또는 액션을 수행하는 데 사용되는 정보를 획득할 수 있다.
단일 사용자가 다수의 사용자 디바이스들(104)과 연관될 수 있다. 그러한 상황에서, 사용자 디바이스(104)의 단일 인스턴스는 컴패니언 디바이스로서 지정될 수 있다. 이어서, 스마트 홈 디바이스(103)는 소정 요청들의 프로세싱을 인에이블하기 위해 컴패니언 디바이스와 통신할 것이다. 예를 들어, 사용자는 하나 이상의 스마트폰 디바이스들, 하나 이상의 태블릿 디바이스들, 또는 랩톱 디바이스와 같은 사용자 디바이스(104)의 다수의 인스턴스들을 가질 수 있다. 사용자는 그러한 사용자 디바이스들(104) 중 하나를, 스마트 홈 디바이스(103)가 통신하여 비밀 사용자 정보에 대한 액세스를 획득하게 할 컴패니언 디바이스로서 지정할 수 있다.
일부 실시예들에서, 스마트 홈 디바이스(103) 및 사용자 디바이스(104)는, 스마트 홈 디바이스(103) 상의 VAC(101)가 비밀 정보를 위해 사용자 디바이스(104) 및/또는 사용자 디바이스(104) 상의 VAC(102)에 질의할 수 있게 하는 지속적 또는 반-지속적 접속인 컴패니언 링크(105)를 확립 및 유지할 수 있다. 일 실시예에서, 컴패니언 링크(105)는 홈 내의 디바이스들 사이의 통신을 인에이블하는 상시-접속된, 저-레이턴시 메시징 시스템이다. 이러한 접속은 LAN을 통해 국부적으로 유지될 수 있거나 인터넷과 같은 광역 네트워크를 통해 확립될 수 있다. 컴패니언 링크(105)는 커뮤널 디바이스들이 개인 요청들을 사용자 디바이스로 재지향시킬 수 있게 하여, 요청들이 프라이버시-보존 방식으로 프로세싱될 수 있게 할 수 있다.
도 1b는 가상 어시스턴트 시스템(100) 내의 디바이스들 사이의 통신을 인에이블하는 도 1b의 컴패니언 링크 시스템(130)을 예시한다. 다양한 실시예들에서, 컴패니언 링크 시스템(130)은 다수의 디바이스들 사이의 보안 및 인증된 메시지 교환을 인에이블할 수 있다. 다수의 디바이스들은, 각각 휴대용 다기능 디바이스일 수 있는 하나 이상의 사용자 디바이스들(예컨대, 사용자 디바이스(104), 사용자 디바이스(115))을 포함할 수 있다. 다수의 디바이스들은 또한 다수의 사용자들에 의해 사용될 수 있는 하나 이상의 커뮤널 스마트 홈 디바이스들(예컨대, 스마트 홈 디바이스(103), 스마트 홈 디바이스(133))과 같은 하나 이상의 고정 디바이스들을 포함할 수 있다. 일 실시예에서, 컴패니언 링크들(105a 및 105b)의 세트는 사용자 디바이스와 하나 이상의 커뮤널 스마트 홈 디바이스들 사이의 메시지-기반 통신을 인에이블할 수 있다. 컴패니언 링크(105c)는 또한 이들 디바이스들 사이의 통신을 인에이블하도록 커뮤널 스마트 홈 디바이스들 사이에 확립될 수 있다. 일 실시예에서, 디바이스 데이터의 피어-투-피어 교환을 인에이블하기 위해 사용자 디바이스들 사이에 컴패니언 링크(105d)가 또한 확립될 수 있다.
일 실시예에서, 컴패니언 링크들(105a 및 105b)의 세트는, 프라이버시-보존 방식으로 프로세싱되도록 그러한 요청을 인에이블하기 위해, 커뮤널 정지 디바이스들이 개인 요청들을 사용자와 연관된 개인 디바이스로 재지향시키는 것을 인에이블하는 데 사용될 수 있다. 예를 들어, 그리고 일 실시예에서, 사용자는 "내 다음 회의는 언제인가?"와 같은, 개인 질의를 커뮤널 디바이스에 말할 수 있다. 개인 질의는 스마트 홈 디바이스(103) 또는 스마트 홈 디바이스(133) 상의 VAC(101) 또는 VAC(131)에 의해 수신될 수 있다. 그러한 요청이 발언 사람의 달력을 사용함에 따라, 커뮤널 디바이스는 그러한 개인 데이터에 대한 직접 액세스를 갖지 않을 수 있다. 그러한 요청을 만족시키기 위해, 커뮤널 디바이스는 질의를 사용자 디바이스(104)와 같은 지정된 컴패니언 디바이스로 재지향시켜, 질의의 분석을 수행하고, 사용자에게 재생을 위해 커뮤널 디바이스로 다시 전송될 수 있는 오디오 응답을 생성할 수 있다.
다양한 실시예들에서, 재지향은 명시적 또는 암시적 방식으로 수행될 수 있다. 명시적 재지향을 위해, 스마트 홈 디바이스(103) 상의 VAC(101) 또는 스마트 홈 디바이스(133) 상의 VAC(131)는 요청을 수신하고, 프로세싱을 위해 적어도 부분적으로 가상 어시스턴트 서버(106)에 요청을 제출할 수 있다. 가상 어시스턴트 서버(106)는 요청을 만족시키기 위해 적어도 일부 정보가 컴패니언 디바이스(예컨대, 사용자 디바이스(104))로부터 요구될 수 있다고 결정할 수 있다. 일 실시예에서, 가상 어시스턴트 서버(106)가 하나 이상의 네트워크들(110)을 통해 사용자 디바이스(104)에 요청을 전송하여 요청을 프로세싱하는 데 사용될 개인 정보를 검색할 수 있는 그러한 결정에 응답하여 명시적 방향전환이 수행될 수 있다. 일 실시예에서, 커뮤널 스마트 홈 디바이스는 스마트 홈 디바이스(103) 상의 가상 어시스턴트 클라이언트가 사용자 디바이스(104) 상의 VAC(102)로 가상 어시스턴트 요청을 재지향할 수 있는 암시적 재지향을 사용할 수 있다. 이어서, 사용자 디바이스(104) 상의 VAC(102)는 요청이 사용자 디바이스(104)에서 직접 수신되었던 것처럼 요청을 프로세싱할 수 있다. 이어서, 사용자 디바이스(104)는 커뮤널 디바이스 상에서의 재생을 위한 오디오 응답을 포뮬레이트할 수 있다.
프라이버시 보존 방식으로 질의들의 프로세싱을 인에이블하는 것에 더하여, 일 실시예에서, 컴패니언 링크(105c)는 스마트 홈 디바이스(103) 및 스마트 홈 디바이스(133)와 같은 커뮤널 디바이스들 사이의 통신을 인에이블하는 범용 메시징을 인에이블할 수 있다. 그러한 링크는 커뮤널 디바이스들이 좌표 동작과 협력하여 작동하는 것을 인에이블한다. 예를 들어, 스마트 홈 디바이스(103) 및 스마트 홈 디바이스(133)는 음악 또는 다른 미디어를 재생할 수 있는 분산 미디어 재생 시스템의 일부로서 구성될 수 있다. 스마트 홈 디바이스(103)와 스마트 홈 디바이스(133) 사이에 확립된 컴패니언 링크(105c)는 미디어 재생을 조정하거나 다수의 디바이스들을 통한 다채널 오디오 재생을 조정하기 위해 사용될 수 있다. 사용자가 스마트 홈 디바이스들 중 하나에 질의를 말할 때, 디바이스들은 메시지들을 교환하여 음성 요청의 지속기간 및 임의의 연관된 오디오 응답들에 대한 오디오 재생의 더킹을 조정할 수 있다. 컴패니언 링크 시스템(130)을 사용하여, 임의의 수의 커뮤널 스마트 홈 디바이스들 및 사용자 디바이스들은 오디오 데이터, 미디어 재생목록, 구성 데이터, 및 접속된 디지털 홈 시스템을 인에이블하는 데 사용되는 다른 정보를 교환하도록 통신할 수 있다.
일 실시예에서, 컴패니언 링크들(105a 내지 105d)은 로컬 유선 및/또는 무선 네트워크 접속을 통한 로컬 네트워크 접속(예를 들어, LAN)을 통해 확립될 수 있다. 일 실시예에서, 컴패니언 링크들(105a 내지 105d)은 또한 인터넷 접속과 같은 WAN 접속을 통해 확립될 수 있지만, 정책 및 구성 결정들은 선택적으로 스마트 홈 디바이스들(103, 133) 사이의 컴패니언 링크(105c)를 단일 네트워크로 제한하도록 구성될 수 있다. 일 실시예에서, 가상 어시스턴트 서버(106)에 더하여, 서버 시스템(108)은, 사용자 디바이스들(104, 115) 및 스마트 홈 디바이스들(103, 133)이 하나 이상의 네트워크들(110)을 통해 접속할 수 있는 온라인 계정 서버(136)를 포함할 수 있다. 온라인 계정 서버(136)는 다양한 디바이스들과 연관된 사용자의 온라인 계정과 연관된 정보를 포함할 수 있다. 일부 실시예들에서, 온라인 계정 서버(136)는 또한 온라인 저장, 메시징, 이메일, 미디어 및 스트리밍 서비스들, 또는 내비게이션 서비스들을 포함하는 온라인 서비스들을 제공하기 위해 서버 하드웨어 및 소프트웨어 로직을 포함하거나 그와 연관될 수 있다. 일 실시예에서, 온라인 계정 서버(136)는 또한 도 1b의 외부 서비스들(120) 중 하나 이상에 대한 액세스를 제공하거나 용이하게 할 수 있다. 일 실시예에서, 온라인 계정 서버(136)는 또한 온라인 애플리케이션 스토어(예컨대, 앱 스토어) 및/또는 온라인 미디어 스토어, 예컨대 음악, 비디오, 또는 e-북 스토어와 같은 온라인 스토어에 대한 액세스를 제공 또는 용이하게 할 수 있다.
일 실시예에서, 피어-투-피어 데이터 교환을 인에이블하기 위해 사용자 디바이스들(104, 115) 사이의 컴패니언 링크(105d)가 사용될 수 있다. 일 실시예에서, 디바이스들 사이의 자동 데이터 교환은 컴패니언 링크(105d)를 통해 수행되도록 구성될 수 있다. 예를 들어, 사용자 디바이스(104) 및 사용자 디바이스(115)가 각각 온라인 계정 서버(136) 상의 동일한 계정과 연관되는 경우, 크리덴셜 교환은, 디바이스들이 직접 통신 범위 내에 있을 때마다 디바이스들 사이의 암호화된 통신 채널의 자동 설정을 인에이블하기 위해 온라인 계정 서버를 통해 수행될 수 있다. 일 실시예에서, 온라인 계정 서버(136)와 연관된 클라우드 서비스들에 대한 데이터는 하나 이상의 네트워크들(110)을 통하는 대신에 컴패니언 링크(105d)를 통해 디바이스들 사이에서 교환될 수 있다. 일 실시예에서, 온라인 계정 서버(136)는 단일 계정과 연관된 디바이스들의 리스트 또는 연관된 계정들의 패밀리와 연관된 디바이스들의 리스트를 유지할 수 있다. 계정들의 패밀리의 계정과 연관된 디바이스들의 리스트는 디바이스 발견 및 디바이스들 사이의 컴패니언 링크 접속들의 확립을 용이하게 하는 데 사용될 수 있다. 온라인 계정 서버 상의 계정들은 인증 크리덴셜들의 교환을 통해 전자 디바이스들 사이의 상호 인증을 인에이블할 수 있다.
일 실시예에서, 온라인 계정 서버(136)는 사용자와 연관된 온라인 계정에 각각의 디바이스와 연관된 고유 디바이스 식별자를 등록하기 위한 등록 서버를 포함하거나 그와 연관된다. 일단 디바이스가 사용자의 온라인 계정에 등록되면, 디바이스가 네트워크들(110)을 통해 위치 및 식별되는 것을 인에이블하는 식별자 토큰이 생성될 수 있다. 식별자 토큰은 하나 이상의 암호화 키들, 토큰들, 인증서들, 또는 가상 어시스턴트 서버(106), 온라인 계정 서버(136), 및 서버 시스템(108) 내의 다른 서버들이 하나 이상의 네트워크들(110)에 걸쳐 디바이스를 찾아내고 식별할 수 있게 하는 다른 데이터를 포함할 수 있다. 일부 실시예들에서, 스마트 홈 디바이스(103, 133)는 사용자 디바이스가 집 밖에 있거나 스마트 홈 디바이스들의 홈 네트워크에 접속되지 않으면 사용자 디바이스(104)와의 원격 접속을 확립하기 위해 식별자 토큰을 사용할 수 있다. 스마트 홈 디바이스들(103, 133)은 식별자 토큰을 사용하여 사용자 디바이스(104)를 모바일 무선 네트워크 상에서 찾아내고 사용자 디바이스(104)와의 보안 원격 컴패니언 링크 접속을 확립할 수 있다. 사용자 디바이스(104)를 찾아내고 사용자 디바이스에의 접속을 확립하는 것은 가상 어시스턴트 서버(106) 및 온라인 계정 서버(136)를 통해 부분적으로 용이하게 될 수 있다. 그러한 실시예들에서, 사용자 디바이스(104)의 컴패니언 디바이스 기능들의 적어도 서브세트는, 사용자 디바이스(104)가 집으로부터 멀리 떨어져 있을 때, 또는 사용자가 집에 있지만 홈 네트워크에 접속되지 않는 경우에 계속해서 동작할 수 있다.
일부 실시예들에서, 디바이스 상에서 실행되는 각각의 가상 어시스턴트 클라이언트(VAC(101), VAC(102), VAC(131))는 가상 어시스턴트 식별자와 연관될 수 있다. 다양한 실시예들에서, 가상 어시스턴트 식별자는 호스트 디바이스에 대한 식별자 토큰, 디바이스의 사용자의 온라인 계정과 연관된 계정 식별자, 및/또는 계정 또는 디바이스 식별자와 연관되거나 그로부터 도출된 다른 토큰과 연관될 수 있거나 그로부터 도출될 수 있다. 가상 어시스턴트 클라이언트의 가상 어시스턴트 식별자는 가상 어시스턴트 클라이언트들이 서로 또는 가상 어시스턴트 서버(106)와 통신할 때 다양한 디바이스들 상에서 VAC(101, 102, 131)를 고유하게 또는 준-고유하게 식별할 수 있다. 가상 어시스턴트 식별자는 호스트 디바이스의 식별 토큰과 같은 가상 어시스턴트의 호스트 디바이스의 식별 또는 위치 정보와 연관될 수 있다. 스마트 홈 디바이스(103, 133)와 사용자 디바이스(104) 사이에 페어링 관계가 생성된 후에, 스마트 홈 디바이스 상의 가상 어시스턴트 클라이언트들(VAC(101), VAC(131))은 가상 어시스턴트 식별자를 저장하고 가상 어시스턴트 식별자를 사용하여 사용자 디바이스(104) 상의 VAC(102)를 찾아내고, 식별하고, 그와 통신할 수 있다. VAC(102)에 대한 가상 어시스턴트 식별자는 또한 가상 어시스턴트 서버(106)로 전송되고 컴패니언 가상 어시스턴트 식별자로서 저장될 수 있다. 가상 어시스턴트 서버(106)가 스마트 홈 디바이스(103, 133)의 VAC(101, 131)에서 수신된 요청에 대한 프로세싱 동작들을 수행하기 위해 사용자의 비밀 정보에 대한 액세스를 요구해야 하면, 가상 어시스턴트 서버(106)는 VAC(101, 131)를 대신하여 사용자 디바이스(104)의 VAC(102)와 접촉할 수 있다. 이어서, 가상 어시스턴트 서버(106)는 사용자 디바이스(104) 상의 VAC(102)로부터, 다양한 실시예들에서, 사용자 디바이스(104)로부터의 비밀 정보, 사용자 디바이스(104)에 디스패칭된 정보 프로세싱 태스크의 프로세싱 결과들, 또는 사용자 디바이스(104)를 대신하여 비밀 데이터에 액세스하기 위한 허가 및/또는 액세스 크리덴셜들을 수신할 수 있다.
일부 실시예들에서, 서버 시스템(108)은 스마트 홈 디바이스(103, 133)와 사용자 디바이스(104) 사이의 원격 접속들을 용이하게 하는 데 사용될 수 있는 중계 서버(126)를 포함한다. 중계 서버(126)는 로컬 접속 또는 원격 피어-투-피어 접속과 같은 다른 형태의 원격 접속이 확립될 수 없는 경우에 디바이스들 사이에 컴패니언 링크 메시지들을 중계할 수 있는 중계 서비스를 인에이블할 수 있다. 중계 서버(126)는 스마트 홈 디바이스들(103, 133)과 사용자 디바이스(104) 사이에 확립된 중계 페어링에 기초하여 원격 컴패니언 링크 메시지가 통과하는 것을 인에이블할 수 있다. 다양한 디바이스들과 연관된 키들, 인증서, 및 다른 식별 및 검증 데이터는 디바이스들 사이의 중계 페어링을 확립하는 데 사용될 수 있는 로컬 페어링 프로세스 동안 교환될 수 있다. 디바이스들 사이에 중계 페어링이 확립되면, 스마트 홈 디바이스들(103, 133)은 사용자 디바이스(104)와 연관된 고유 중계 식별자를 갖는 메시지들을 중계 서버(126)에 전송할 수 있다.
중계 서버(126)와 접속할 수 있는 각각의 디바이스는 연관된 중계 식별자를 가질 수 있고, 이는, 접속 디바이스들을 식별하고 인증하는 데 사용될 수 있는 지속적인 페어링 토큰이다. 중계 식별자는 디바이스를 고유하게 식별하는 디바이스 식별자 또는 식별자 토큰일 수 있거나, 이를 포함하거나, 그로부터 도출될 수 있고, 중계 토큰의 검증을 인에이블하는 인증서들 및/또는 서명들을 포함할 수 있다. 이어서, 중계 서버(126)는 메시지들을 사용자 디바이스(104)에 중계할 수 있다. 일 실시예에서, 지속적 및 양방향 접속이 확립되어, 사용자 디바이스(104)가 중계 서버(126)를 통해 스마트 홈 디바이스(103, 133)로 복귀 메시지들을 전송하는 것을 인에이블할 수 있다. 일 실시예에서, 사용자 디바이스(104)는 또한 디바이스와 연관된 중계 식별자를 사용하여 스마트 홈 디바이스(103, 133)와의 접속을 개시할 수 있다. 일 실시예에서, 중계 식별자들은 중계 서버(126)를 통해 교환되는 각각의 메시지에 대해 사용되어, 중계 서버(126)가 서버를 통해 중계된 각각의 메시지의 진본성을 검증하는 것 및 인가되지 않은 디바이스들이 확립된 중계 서버 접속을 통해 메시지들을 송신하는 것을 방지하는 것을 인에이블한다.
도 2는 실시예들에 따른 다수의 스마트 홈 디바이스들을 포함하는 홈 네트워크 환경(200)을 예시한다. 홈 네트워크 환경(200)은 홈 네트워크 환경을 서비스하는 무선 네트워크에 대한 액세스를 제공하는 무선 액세스 포인트(212)를 포함할 수 있다. 다수의 스마트 홈 디바이스들(204, 206, 214, 216, 222A 및 222B)은 무선 네트워크 또는 선택적으로 유선 네트워크 접속을 통해 홈 네트워크 환경(200)에 접속될 수 있다. 다양한 실시예들에서, 홈 네트워크 환경은 다양한 유형들의 스마트 홈 디바이스들을 포함할 수 있다. 예를 들어, 스마트 홈 디바이스(204, 206, 214)는 분산형 미디어 재생을 위해 구성된 스마트 스피커 디바이스들일 수 있다. 또한, 스마트 홈 디바이스(216)는 스마트 냉장고 디바이스와 같은 스마트 기기 디바이스일 수 있다. 스마트 홈 디바이스들(204, 206, 214, 216, 222A 내지 222B) 각각은 디바이스들이 구성 정보를 교환하는 것을 인에이블하기 위해 상호접속 컴패니언 링크들을 확립하기 위해 홈 네트워크 환경(200)의 네트워크를 사용할 수 있다. 예를 들어, 스마트 홈 디바이스들(222A 및 222B)은 다중 채널 스마트 스피커 디바이스들로서 구성될 수 있으며, 이는 다중 채널(예컨대, 스테레오, 서라운드 등) 오디오 재생을 구성하기 위해 컴패니언 링크를 사용할 수 있다. 또한, 스마트 홈 디바이스들(204, 206, 214, 216, 222A 및 222B) 각각은, 비밀 사용자 정보에 대한 액세스를 요구하는 요청의 경우에, 요청의 프로세싱을 용이하게 하기 위해 컴패니언 링크를 통해 지정된 컴패니언 디바이스와 상호작용할 수 있는 가상 어시스턴트 클라이언트들을 포함할 수 있다. 사용자 디바이스(104) 또는 접속된 차량 인포테인먼트 시스템의 모바일 인스턴스와 같은 사용자 디바이스들은 또한 무선 액세스 포인트(212)에 근접할 때 홈 네트워크 환경에 접속하도록 구성될 수 있다. 일 실시예에서, 사용자 디바이스(104)는 또한 홈 네트워크 환경(200)에, 또는 사용자 디바이스(104)의 직접 라디오 범위 내에 접속될 수 있는 임의의 다른 사용자 디바이스들에 대한 컴패니언 링크 접속을 생성할 수 있다.
디바이스 및 컴패니언 발견
사용자 디바이스(104)와 스마트 홈 디바이스(204, 206, 214, 216, 222A 및 222B) 사이에 컴패니언 링크 통신 채널이 확립되기 전에, 컴패니언 발견 및 페어링 프로세스가 수행된다. 컴패니언 발견 프로세스는 스마트 홈 디바이스 상의 가상 어시스턴트 클라이언트(예컨대, 도 1a 및 도 1b에서와 같은 VAC(101, 131))가 사용자 요청을 프로세싱하고/하거나 그에 응답하기 위해 사용될 수 있는 비밀 사용자 정보에 액세스하게 하는 컴패니언 디바이스를 스마트 홈 디바이스가 찾아낼 수 있게 한다. 일부 인스턴스들에서, 컴패니언 발견 프로세스는 또한 스마트 홈 디바이스와 컴패니언 디바이스 사이의 통신이 발생해야 한다는 사용자 검증을 포함할 수 있다. 일부 실시예들에서, 컴패니언 발견은, 무선 또는 다른 네트워크 상에서 디바이스들 및/또는 서비스들의 위치를 찾아내는 것을 용이하게 하는 기존의 서비스 발견 프로토콜들, 예컨대 UPnP 포럼에 의해 개발된 SSDP(Simple Service Discovery Protocol) 또는 애플 사에 의해 개발된 Bonjour 네트워킹 기술(IETF RFC 6762 및 IETF RFC 6763으로서 출판되고, 본 명세서에서 "Bonjour"로 지칭됨)을 활용할 수 있다. 디바이스 발견 서비스에서, 디바이스는 그것의 존재, 어드레스, 및 선택적으로 그것의 능력들에 대한 추가적인 정보를 나타내는 정보를 광고할 수 있다. 다른 스마트 홈 디바이스들 또는 사용자 디바이스들을 포함하는 다른 디바이스들은 광고들을 브라우징하고 브로드캐스트 정보에 기초하여 관심 디바이스들을 식별할 수 있다. 광고된 주소를 사용하여, 브라우징 디바이스는 광고자와의 통신을 개시할 수 있다.
네트워크 및 발견 서비스에 따라, 광고는, 선택적으로 (예를 들어, 멀티캐스트 또는 비콘 신호를 통한) 정보의 실시간 브로드캐스팅, 및/또는 다른 디바이스들이 정보를 검색할 수 있는 중앙 저장소(예를 들어, 네트워크 액세스 포인트에 있음)로 광고 정보를 제공하는 것을 포함할 수 있다. 광고들의 브라우징은 브로드캐스트 광고들을 검출하는 것 및/또는 중앙 저장소로부터 광고 정보를 검색하는 것을 포함할 수 있다. 일부 실시예들에서, 전기 콘센트와 같은 전원에 정적으로 부착된 커뮤널 스마트 홈 디바이스들은 컴패니언 링크 서비스에 대한 광고 및 발견을 연속적으로 수행할 수 있다. 모바일 사용자 디바이스들은 사용자 디바이스의 위치에 기초하여 컴패니언 링크 서비스의 발견을 인에이블할 수 있다. 예를 들어, 그리고 일 실시예에서, 지오펜스 경계(203)가 모바일 디바이스 상에 구성되어, 모바일 디바이스가 사용자 디바이스(104)의 홈 위치로서 지정된 위치에 대한 지리적 근접 내에 있을 때 동반 링크 발견이 인에이블된다.
커뮤널 스마트 홈 디바이스가 컴패니언 디바이스(예컨대, 사용자 디바이스(104))로서 작용하는 사용자 디바이스에 의해 발견될 때, 네트워크 데이터 접속(예컨대, TCP, UDP 등)이 커뮤널 스마트 홈 디바이스와 컴패니언 디바이스 사이에 확립될 수 있다. 네트워크 데이터 접속은 임의의 네트워크 계층(예를 들어, 계층 3) 프로토콜을 사용하여 확립될 수 있다. 광고하고 발견하는 것 둘 모두를 행하는 디바이스들 사이의 접속 레이스들을 피하기 위해, 사전편찬상 더 낮은 영구 식별자를 갖는 디바이스는 디바이스들 사이의 접속을 개시한다. 디바이스의 영구 식별자는 발견 서비스를 통해 광고되는 익명화된 식별자로부터 도출된다. 일 실시예에서, 광고된 정보에 기초하여 영구 식별자를 도출하는 것은, 이전에 수행된 페어링 프로세스를 통해 교환되는 데이터를 사용한다. 그러한 실시예에서, 스마트 홈 디바이스가 사용자 디바이스와 페어링될 때까지 스마트 홈 디바이스와 데이터 접속이 설정될 수 없는데, 그 이유는 그렇지 않으면 커뮤널 스마트 홈 디바이스와 접속하는 데 사용되는 영구 식별자가 알려져 있지 않기 때문이다. 일단 데이터 접속이 확립되면, 보안 통신 세션이 커뮤널 스마트 홈 디바이스와 컴패니언 디바이스 사이에 확립될 수 있다. 이어서, 커뮤널 스마트 홈 디바이스 및 접속된 컴패니언 디바이스는 존재 및 도달가능성 정보를 교환할 수 있다. 컴패니언 디바이스가 모바일 디바이스인 경우, 컴패니언 디바이스는 이어서, 데이터가 컴패니언 링크를 통해 교환되지 않을 때, 필요한 대로 웨이크-온-무선(wake on-wireless, WoW) 상태로 진입할 수 있는 반면, 전원에 접속되는 커뮤널 디바이스들은 제1 메시지 레이턴시를 감소시키기 위해 활성으로 유지될 수 있다.
접속성이 디바이스들 사이에서 손실되는 경우에, 발견 서비스는 재인에이블되고 로컬 네트워크 상에서 디바이스를 검색하는 데 사용될 수 있다. 누락 디바이스가 재발견되면, 디바이스들 사이의 데이터 접속이 재확립될 수 있다. 누락 디바이스가 발견될 수 없는 경우, 누락 디바이스의 기록들에서의 상태 발견 서비스 정보가 재확인되고 클린된다. 검색 디바이스는 이어서 보안 인터넷 세션을 통해 누락 디바이스와의 통신을 확립하려고 시도할 수 있다. 일 실시예에서, 데이터 접속을 확립할 때 교환되는 존재 및 도달가능성 정보의 일부는 디바이스 식별자, 식별자 토큰, 중계 식별자, 또는 예를 들어 피어-투-피어 또는 중계된 인터넷 접속을 통해, 누락 디바이스와의 메시지 교환에 도달하거나 이를 인에이블하는 데 사용될 수 있는 다른 형태의 식별 토큰을 포함한다. 보안 인터넷 접속이 이전에 누락된 디바이스와 성공적으로 확립될 수 있는 경우, 컴패니언 링크 메시지들이 보안 인터넷 접속을 통해 교환될 수 있다.
인터넷 기반 접속 및 로컬 접속을 통해 컴패니언 디바이스가 스마트 홈 디바이스에 접속되는 경우에, 컴패니언 링크 접속은 로컬 접속으로 스위칭될 수 있다. 예를 들어, 사용자 디바이스(104)는 지오펜스 경계(203)를 가로질러서 디바이스들(예컨대, 스마트 홈 디바이스들(204, 206, 214, 216, 222A 및 222B))을 검색하기 위한 발견 프로토콜(예를 들어, SSDP, Bonjour 등)을 인에이블할 수 있다. 사용자 디바이스(104)가 인터넷 접속을 통해 접속된 스마트 홈 디바이스로의 로컬 접속의 이용가능성을 사용자 디바이스(104)가 발견해야 하면, 사용자 디바이스는 인터넷 접속을 로컬(예를 들어, Wi-Fi) 접속으로 전환시킬 수 있다. 일 실시예에서, 접속 스위칭은 접속된 디바이스들 사이에서 접속성이 손실될 때마다(예컨대, 사용자 디바이스(104)가 홈 네트워크 환경(200)을 떠남) 또는 더 양호한 접속이 이용가능하다고 디바이스들이 결정하는 경우(예컨대, 사용자 디바이스(104)가 홈 네트워크 환경(200)으로 복귀함) 접속 스위칭이 수행될 수 있다. 로컬 접속들은, 로컬 접속들이 아마도 더 낮은 레이턴시이기 때문에, 인터넷 접속들에 비해 바람직할 수 있다. 또한, 이는 인터넷 접속 대신에 로컬 접속을 유지하기 위한 디바이스 및 인프라구조 관점에서 덜 리소스 집약적일 수 있다.
도 3은 본 명세서에 기술된 실시예들에 따른 커뮤널 디바이스를 발견하고 컴패니언 디바이스와 페어링하기 위해 사용되는 발견 프로세스(300)의 동작들의 흐름도이다. 예시된 발견 프로세스(300)는 커뮤널 디바이스(302) 및 개인 디바이스(304) 상에서 수행되는 동작들을 포함한다. 커뮤널 디바이스(302)는 본 명세서에 기술된 임의의 스마트 홈 디바이스(예컨대, 도 1에서와 같은 스마트 홈 디바이스(103, 133), 도 2에서와 같은 스마트 홈 디바이스(204, 206, 214, 216, 222A 및 222B))일 수 있다. 개인 디바이스(304)는, 스마트폰 디바이스, 태블릿 컴퓨터 디바이스, 또는 컴패니언 링크를 통해 커뮤널 디바이스(302)에 의해 액세스가능할 수 있는 개인 데이터를 저장하는 다른 사용자 디바이스와 같은, 그러나 이에 제한되지 않는, 본 명세서에 기술된 임의의 개인 사용자 디바이스(예컨대, 사용자 디바이스(104))일 수 있다. 발견 프로세스(300)가 커뮤널 디바이스(302)와 개인 디바이스(304) 사이에서 수행되는 것으로 예시되고 설명되지만, 예시된 프로세스의 변형은 또한 커뮤널 디바이스(302)의 다수의 인스턴스들 사이에서 또는 개인 디바이스(304)의 다수의 인스턴스들 사이에서 수행될 수 있다.
일 실시예에서, 블록(310)에 도시된 바와 같이, 커뮤널 디바이스(302)는, 디바이스가 현재 페어링되지 않았거나 그렇지 않으면 페어링할 컴패니언 디바이스를 찾고 있음을 나타내기 위해 상태 비트를 설정할 수 있다. 상태 비트는 커뮤널 디바이스(302)에 의해 광고된 상태 정보에 나열된 상태 플래그 표시자 내의 비트일 수 있다. 블록(312)에서, 커뮤널 디바이스(302)는 컴패니언 링크 서비스에 대한 지원을 갖는 것으로서 발견 프로토콜(예컨대, SSDP, Bonjour 등)을 통해 자신의 존재를 광고할 수 있다. 예를 들어, Bonjour를 사용하여, 커뮤널 디바이스(302)는 이름 및 서비스 유형으로 자신을 광고할 수 있다. 이름은 컴패니언 발견을 위한 사용자 판독가능 이름(예컨대, "스피커")일 수 있고; 일부 경우들에서, 광고된 이름은 디바이스 정의 기록의 컴패니언 발견 정보 서비스 인스턴스에 특정된 이름일 수 있다. 서비스 유형은 균일한 액세서리 프로토콜에 대해 정의될 수 있다(예를 들면, 서비스 유형 "_companion-link._tcp"). 광고는 또한 추가 정보를 포함할 수 있다. 유사한 정보가 다른 서비스 발견 프로토콜들 및 기술들을 사용하여 분배될 수 있다. 예를 들어, SSDP를 사용하면, 컴패니언 발견은 멀티캐스트 HTTP 통지 메시지를 사용하여 이름 및 서비스 유형 URI를 광고하는 것을 포함할 수 있다. 커뮤널 디바이스(302)에 대한 유니캐스트 요청을 통해 추가적인 정보를 검색하기 위해 개인 디바이스(304)에 의해 URI가 사용될 수 있다.
커뮤널 디바이스(302)가 서비스 발견 프로토콜을 통해 컴패니언 링크 서비스를 광고하기 시작한 후, 개인 디바이스(304)는 블록(314)에 도시된 바와 같이 페어링되지 않은 디바이스들을 브라우징할 때 커뮤널 디바이스를 발견할 수 있다. 광고의 시작과 서비스 브라우징의 시작 사이에 어떠한 특정 타이밍도 요구되지 않지만, 개인 디바이스(304)는 개인 디바이스(304)가 브라우징할 때 커뮤니얼 디바이스(302) 발견 광고가 검출가능하지 않는 한 커뮤널 디바이스(302)를 발견하지 못할 것이다.
일 실시예에서, 개인 디바이스(304)는 개인 디바이스(304) 상의 애플리케이션 실행에 의해 제공되는 트리거와 같은 트리거에 응답하여 페어링되지 않은 디바이스들을 브라우징할 수 있다. 일 실시예에서, 개인 디바이스(304)가 페어링되지 않은 디바이스에 물리적으로 근접하게 배치될 때, 개인 디바이스(304)는 페어링되지 않은 디바이스들을 브라우징할 수 있다. 예를 들어, 커뮤널 디바이스에 대한 아웃 오브 박스 근접 셋업은 (예컨대, 블루투스 및/또는 블루투스 저에너지, NFC 등을 사용하여) 단거리 무선 통신 메커니즘을 통한 데이터 교환을 포함할 수 있으며, 이는 페어링 디바이스(304)가 페어링되지 않은 디바이스들을 브라우징하도록 트리거링할 수 있다.
블록(316)에서, 개인 디바이스(304)는 예를 들어 블록(312)에서 수행되는 광고를 검출함으로써 발견 서비스 광고를 통해 디바이스를 찾을 수 있다. 블록(318)에서, 개인 디바이스(304)는, 광고에 기초하여, 발견된 디바이스가 페어링되지 않은 커뮤널 디바이스(302)와 같은 접속 후보인지 여부를 결정할 수 있다. 일 실시예에서, 개인 디바이스(304)는 발견된 디바이스가 컴패니언 링크 서비스를 광고하고 있을 때, 발견된 디바이스가 접속 후보라고 결정할 수 있다. 개인 디바이스(304)는 발견 상태 플래그들을 체크하여, 커뮤널 디바이스(302)가 컴패니언 디바이스와 이미 구성되거나 페어링되어 있는지 여부를 결정할 수 있다. 다른 예로서, 개인 디바이스(304)는 광고된 프로토콜 버전을 체크하여, 커뮤널 디바이스(302)의 컴패니언 링크 프로토콜 버전이 개인 디바이스(304)에 의해 지원되는 컴패니언 링크 프로토콜과 호환가능한지 여부를 결정할 수 있다. 컴패니언 링크를 확립할 컴패니언 디바이스에 대해 액세서리가 광고하지 않는다고 개인 디바이스(304)가 결정하면, 개인 디바이스(304)는 블록(314)으로 복귀하여 계속해서 브라우징할 수 있다. 일 실시예에서, 커뮤널 디바이스가 발견되지 않는 기간 후에, 브라우징 동작들은 타임아웃될 수 있고, 미지불 디바이스들에 대한 브라우징은 소정 시간 동안 중단될 수 있다.
블록(322)에서, 개인 디바이스(304)는 개인 디바이스(304)의 디스플레이 디바이스와 같은 사용자 인터페이스를 통해 커뮤널 디바이스(302)에 관한 정보를 사용자에게 제시할 수 있다. 블록(324)에서, 개인 디바이스(304)는 검출된 디바이스로 수행하기 위한 액션들에 관한 입력을 사용자 인터페이스를 통해 사용자로부터 수신할 수 있다. 예를 들어, 사용자는 개인 디바이스(304)가 커뮤널 디바이스와의 페어링을 확립해야 하는지 여부를 나타내는 입력을 제공할 수 있다. 개인 디바이스(304)는 커뮤널 디바이스에 의해 제공된 광고 데이터로부터 획득된 정보 중 임의의 것 또는 전부를 제시할 수 있고, 개인 디바이스(304)가 커뮤널 디바이스(302)에 접속되어야 하는지 여부를 나타내도록 사용자에게 프롬프트할 수 있다. 사용자 확인을 요청하는 것은 커뮤널 디바이스와 개인 디바이스 사이의 스퓨리어스(spurious) 또는 원하지 않는 페어링들을 피하는 것을 도울 수 있다. 블록(326)에서, 개인 디바이스(304)는 블록(324)에서 수신된 사용자 입력을 해석하고, 커뮤널 디바이스(302)와 페어링할지 여부를 결정할 수 있다. 페어링 동작을 개시하기 위한 사용자 승인 외에도, 개인 디바이스(304)의 정당한 소유자/조작자의 승인 없이 발생하는 페어링의 위험을 최소화하기 위해 다른 동작들이 페어링 동작을 완료하도록 수행될 수 있는데, 이는, 페어링 절차를 완료하는 것은 커뮤널 디바이스(302)가 개인 디바이스(304)의 사용자에 관한 개인 성질의 질의들을 수용할 수 있게 할 수 있기 때문이다. 예를 들어, 개인 디바이스(304) 및/또는 커뮤널 디바이스(302)는 개인 디바이스(304)의 사용자에게 알려진 패스코드의 입력을 요청할 수 있다. 일 실시예에서, 블록(326)에서 페어링 동작을 완료하기 위해, 생체인식 검증(예컨대, 지문, 안면 인식 등)이 커뮤널 디바이스(302) 및/또는 개인 디바이스(304)에 의해 요청될 수 있다.
페어링 또는 사용자 검증 동작이 실패하도록 사용자가 개인 디바이스(304)를 지시하는 경우, 개인 디바이스(304)는 다른 액세서리들 또는 디바이스들을 찾기 위해 블록(314)으로 복귀할 수 있다. 개인 디바이스(304) 및 커뮤널 디바이스(302)가 블록(328) 및 블록(330)에서 페어링하는 경우, 개인 디바이스(304) 및 커뮤널 디바이스(302)는 페어 셋업 프로세스를 각각 실행할 수 있다. 일부 실시예들에서, 페어 셋업 프로세스는 개인 디바이스(304)와 커뮤널 디바이스(302) 사이의 보안 통신을 용이하게 하기 위해 암호화 키들을 확립하는 데 사용될 수 있다. 일부 실시예들에서, 사용자 확인은 페어 셋업 프로세스에 통합될 수 있고, 페어 셋업을 개시하기 이전에 별도의 사용자 확인은 요구되지 않는다. 일 실시예에서, 페어 셋업 프로세스는 커뮤널 디바이스(302)와 개인 디바이스(304) 사이의 신뢰된 관계의 확립을 인에이블한다. 확립된 신뢰 관계는 나중에 보안 통신 세션의 셋업 동안 검증될 수 있다.
페어 셋업 프로세스가 성공적으로 완료하면, 블록(331)에서, 커뮤널 디바이스(302)는, 예를 들어, 광고된 디바이스 데이터 내의 상태 플래그 표시자를 업데이트함으로써 이제 액세서리와 통신하기 위해 인가가 요구된다는 것 및/또는 이제 액세서리가 적어도 하나의 개인 디바이스와 페어링된다는 것을 나타내기 위해 디바이스 상태 정보를 업데이트할 수 있다.
블록(332)에서, 개인 디바이스(304)는 커뮤널 디바이스(302)로부터 디바이스 정의 기록을 획득 및 캐싱(cache)할 수 있으며, 커뮤널 디바이스(302)는 블록(334)에서 요청 시 기록을 제공할 수 있다. 디바이스 정의 기록은, 디바이스에 의해 지원되는 서비스들의 세트, 및/또는 커뮤널 디바이스(302)를 제어하거나, 그와 접속되거나 또는 달리 상호작용하는 방법을 결정하기 위해, 다른 개인 디바이스(304)뿐만 아니라 다른 접속된 디바이스들을 인에이블할 수 있는 다른 관련 특성들을 포함할 수 있다. 개인 디바이스(304)가 액세서리의 정의 기록을 캐싱하는 경우, 정보는 커뮤널 디바이스(302) 내의 상태 변화들을 검출하는 것을 용이하게 하기 위해 사용될 수 있다. 일부 실시예들에서, 개인 디바이스(304)는, 또한, 커뮤널 디바이스(302)에 의해 제공되는 광고 데이터로부터 정보를 캐싱할 수 있는데, 이는 또한 커뮤널 디바이스의 상태 변화들을 검출하는 데 사용될 수 있다.
블록들(336 및 338)에서, 개인 디바이스(304) 및 커뮤널 디바이스(302)는 보안 통신 채널을 확립하기 위해 사용되는 데이터를 교환하기 시작할 수 있다. 데이터 교환은 디바이스들 사이의 키 또는 인증서 교환을 포함할 수 있다. 키 교환은 디바이스들 사이에서 교환되는 공유 비밀을 통해 보호될 수 있으며, 여기서 공유 비밀은 대역외 통신 방법을 사용하여 교환될 수 있다. 추가적으로, 데이터 교환은 디바이스들 사이의 하나 이상의 장기 키의 교환을 포함할 수 있으며, 이는 그 자체가 하나 이상의 단기 키에 의해 보호될 수 있다. 페어링이 확립되면, 페어링은 단대단(end-to-end) 메시지 암호화를 제공하기 위해 활용될 수 있어서, 페어링된 제어기들만이 디바이스들 사이에서 교환된 메시지들을 판독할 수 있다. 일 실시예에서, 보안 통신 채널은 양방향 채널이며, 이는 어느 하나의 디바이스가 채널을 통신하지 않고 메시지 교환을 개시하는 것을 인에이블한다. 메시지 교환 동안, 통신 세션을 개시하는 디바이스가 클라이언트 디바이스로 지칭되는 반면, 세션을 수용하는 디바이스가 서버 디바이스로 지칭된다. 일 실시예에서, 디바이스들 사이에서 교환되는 제1 메시지는 정보 교환 메시지이다. 클라이언트 디바이스는 특징 플래그들 또는 다른 디바이스 정보를 포함하는 초기 정보 메시지를 전송할 수 있다. 이어서, 서버 디바이스는 지원되는 특징들에 대한 정보 메시지로 응답할 수 있다. 일단 보안 통신 채널이 확립되고 정보 교환이 발생하면, 통신 디바이스들은 어떠한 즉각적인 동작도 계류중이 아닌 경우 유휴 상태에 진입할 수 있다.
일 실시예에서, 커뮤널 디바이스(302)는 블록(340)에서 추가적인 동작을 수행하여, 접속된 개인 디바이스(304)를 컴패니언 디바이스로서 검증할 수 있다. 그러한 실시예에서, 발견 프로세스(300)는 사용자의 적법한 개인 디바이스들이지만 커뮤널 디바이스(302)와 함께 사용하기 위한 컴패니언 디바이스로서 지정된 개인 디바이스가 아닐 수 있는 다수의 디바이스들로 수행될 수 있다. 일 실시예에서, 다수의 가능한 개인 디바이스들의 세트 중 하나만이 커뮤널 디바이스(302)에 대한 컴패니언 디바이스로서 지정될 것이다. 컴패니언 디바이스로서 지정되는 사용자의 개인 디바이스(304)는 다양한 메커니즘들을 통해 결정될 수 있다. 일부 실시예들에서, 사용자는 개인 디바이스가 컴패니언 디바이스로서 구성될 수 있음을 나타내는 개인 디바이스(304) 상의 설정을 인에이블할 수 있다. 일 실시예에서, 설정은 사용자가 접속된 스마트 홈 디바이스들에 대한 컴패니언 디바이스로서 사용하기 위한 이러한 특정 개인 디바이스를 지정했음을 나타내는 특정 컴패니언 디바이스 설정일 수 있다. 일 실시예에서, 컴패니언 디바이스 선택은 개인 디바이스(304) 상의 다른 설정들에 기초하여 간접적으로 결정될 수 있다. 예를 들어, 개인 디바이스가 사용자에 대한 위치 정보의 소스이도록 구성되는 경우, 커뮤널 디바이스(302)는 개인 디바이스(304)가 컴패니언 디바이스로서 지정된다고 결정할 수 있다.
본 명세서에서 기술되는 발견 및 페어링 프로세스는 예시적이며, 변형들 및 수정들이 가능하다는 것이 이해될 것이다. 순차적인 것으로서 설명되는 동작들은 동시에 실행될 수 있고, 단계들의 순서가 변할 수 있으며, 단계들이 수정, 조합, 추가 또는 생략될 수 있다. 또한, SSDP 및 Bonjour 서비스들이 디바이스 발견 서비스의 예들로서 사용되지만 유사한 개념들이 다른 디바이스 검색 서비스들의 콘텍스트에서 적용될 수 있다. 일부 실시예들에서, 커뮤널 디바이스(302) 또는 임의의 다른 발견된 디바이스와 페어링할지 여부를 결정하기 전에, 개인 디바이스(304)는 예를 들어, HTTP 요청을 통해 요청될 수 있는 페어링 후보 디바이스로부터 정의 기록(또는 그의 일부분)을 요청할 수 있다. 구성에 따라, 페어링 후보 디바이스는 페어링되지 않은 개인 디바이스로부터의 요청에 응답하여 그것의 액세서리 정의 기록의 전부 또는 일부를 제공하거나 그 중 아무 것도 제공하지 않을 수 있다. 대안적으로, 정의 기록들은 페어링이 확립되기 전에 액세스가능할 수 있고, 페어링할지 여부에 대한 판정은 페어링 후보 디바이스에 의해 제공되는 광고 정보에 기초할 수 있다. 광고 데이터는, 예를 들어, 디바이스에 대한 로컬 이름; 고유의 액세서리 식별자; 액세서리가 발견가능함을 나타내는 플래그들; 서비스들 중 적어도 일부에 대한 범용 고유 식별자(UUID); 디바이스 상태의 표시자; 및 디바이스가 임의의 다른 개인 디바이스들과 페어 셋업을 수행했는지 여부의 표시를 포함할 수 있다.
일부 실시예들에서, 발견 프로세스(300) 또는 유사한 프로세스는 페어링된 디바이스들에서 상태 변화들을 검출하는데 사용될 수 있다. 예를 들어, 디바이스에 의해 광고되는 상태 번호 값은 디바이스 상태가 변화할 때 증분될 수 있다. 디바이스(예컨대, 커뮤널 디바이스(302))가 상태 변화를 광고할 때, 다른 페어링된 디바이스들(예컨대, 개인 디바이스(304))은 예를 들어, 업데이트된 Bonjour TXT 기록을 브로드캐스팅함으로써 상태 변화를 광고할 수 있고, 이전에 디바이스 기록을 캐싱한 페어링된 개인 디바이스는 상태 번호의 브로드캐스트 값들을 캐싱된 값과 비교함으로써 변화를 검출할 수 있다.
블록(336) 및 블록(338)에서 디바이스들 사이에 확립된 보안 통신 채널은 컴패니언 링크 메시지들을 교환하는 데 사용될 수 있다. 일 실시예에서, 컴패니언 링크 메시지들이 컴패니언 링크를 통해 교환되기 전에, 보안 세션이 커뮤널 디바이스(302)와 개인 디바이스(304) 사이에 확립되거나 재확립된다. 일 실시예에서, 세션을 확립하는 것은 디바이스들 사이의 페어링을 검증하기 위해 페어 검증 프로세스를 수행하는 것을 포함한다. 페어 검증 프로세스는 커뮤널 디바이스(302)와 개인 디바이스(304) 사이의 이전에 확립된 페어링 관계에 의존한다. 예를 들어, 그리고 일 실시예에서, 디바이스들 사이에 컴패니언 링크 세션을 확립하는 것은 디바이스들의 영구 식별자를 요구할 수 있는데, 이는 발견 서비스를 통해 광고되는 익명화된 식별자로부터 도출될 수 있다. 그러나, 광고된 정보에 기초하여 영구 식별자를 도출하는 것은 디바이스들 사이의 페어링 프로세스 동안 교환되었던 데이터의 하나 이상의 요소들을 사용할 수 있다. 일 실시예에서, 페어 검증 프로세스는 검증 프로세스 동안 교환되는 메시지들을 암호화 또는 서명하는 데 사용되는 단기 공개 키 쌍들의 생성뿐만 아니라, 디바이스들의 초기 페어링 동안 교환되었던 이전에 교환된 장기 키 쌍들의 검증을 포함할 수 있다. 페어 검증 프로세스는 컴패니언 링크 접속을 사용하여 디바이스들 사이에 보안 세션이 확립될 때마다 수행될 수 있다.
도 4a 내지 도 4c는 커뮤널 디바이스 상의 가상 어시스턴트 클라이언트가 프라이버시 보존 방식으로 질의들을 프로세싱하는 것을 인에이블하는 프로세스들(400, 430, 460)의 동작들의 흐름도들이다. 도 4a 내지 도 4c는 커뮤널 디바이스(402) 및 컴패니언 디바이스(404) 상에서 수행되는 동작들을 예시한다. 다양한 실시예들에서, 커뮤널 디바이스(402)는 도 3에서와 같이 커뮤널 디바이스(302)의 변형일 수 있다. 컴패니언 디바이스(404)는 커뮤널 디바이스(402)와의 페어링 프로세스를 겪은 도 3에서와 같은 개인 디바이스(304)일 수 있다.
도 4a는 본 명세서에 기술된 일부 실시예들에 따른, 개인 사용자 데이터로서 분류되는 데이터에 액세스하는 가상 어시스턴트 요청의 프로세싱을 용이하게 하기 위해 커뮤널 디바이스(402) 상의 가상 어시스턴트 클라이언트가 컴패니언 디바이스(404)와 접속할 수 있는 프로세스(400)를 예시한다. 도 4b는 본 명세서에 기술된 일부 실시예들에 따른, 커뮤널 디바이스(402) 상의 가상 어시스턴트 클라이언트가 가상 어시스턴트 질의를 컴패니언 디바이스(404)로 암시적으로 재지향시킬 수 있는 프로세스(450)를 예시한다. 도 4c는 본 명세서에 기술된 일부 실시예들에 따른, 음성 요청을 통해 연락처에 대한 메시지들을 커뮤널 디바이스에 전송하기 위한 프로세스(460)를 예시한다. 특정 프로세스가 사용되는 상황은 정책, 구성, 및 네트워크 상태에 기초하여 변할 수 있다. 일 실시예에서, 특정 프로세스가 선택되는 상황들은 수행될 동작의 유형에 기초하여 결정될 수 있다. 예를 들어, 수신된 메시지를 판독하라는 요청은 도 4a의 프로세스(400)에 기초하여 수행될 수 있는 반면, 메시지를 전송하라는 요청(예컨대, 도 4c의 프로세스(460))은 도 4b의 프로세스(430)에 기초하여 수행될 수 있다.
도 4a에 도시된 바와 같이, 커뮤널 디바이스(402)는 블록(410)에 도시된 바와 같이, 커뮤널 디바이스 상에서 실행되는 가상 어시스턴트 클라이언트에서 요청을 수신할 수 있다. 블록(412)에서, 커뮤널 디바이스(402)는 요청이 사용자를 위한 비밀 데이터에 액세스하라는 것인지 여부를 결정하기 위해 요청을 적어도 부분적으로 프로세싱할 수 있다. 요청은 텍스트 기반 요청, 또는 자연 언어 프로세싱을 통해 해석되는 음성 구두 요청일 수 있다. 다양한 실시예들에서, 자연 언어 프로세싱은 부분적으로 커뮤널 디바이스(402) 상에서, 전체적으로 커뮤널 디바이스 상에서, 또는 가상 어시스턴트 서버(예컨대, 도 1a 및 도 1b에서와 같은 가상 어시스턴트 서버(106)) 상에서 수행될 수 있다. 요청이 적어도 부분적으로 프로세싱된 후, 블록(414)에 도시된 바와 같이, 커뮤널 디바이스(402)(또는 프로세싱이 분담된 경우, 가상 어시스턴트 서버)는 요청이 비밀 데이터에 대한 액세스를 요구하는지 여부를 결정할 수 있다.
요청이 개인 사용자 데이터를 사용하는지 여부에 대한 블록(414)에서의 결정은 요청이 프로세싱되고 요청의 의도가 결정된 후에 수행될 수 있다. 예를 들어, 커뮤널 디바이스(402)의 위치에 대한 현재 날씨 예보에 대한 요청은 개인 사용자 데이터로서 분류되는 데이터에 대한 액세스를 요구하지 않을 수 있다. 그러한 요청은, 적어도 부분적으로, 커뮤널 디바이스(402)에 의해 추가로 프로세싱될 수 있는데, 이는 418에 도시된 바와 같이 요청 프로세싱을 완료할 수 있고 요청에 대한 응답을 포뮬레이트할 수 있다.
블록(414)에서, 요청의 추가적 프로세싱이 개인 사용자 데이터에 대한 액세스를 요구할 것이라고 커뮤널 디바이스(402)가 결정하는 경우, 블록(415)에 도시된 바와 같이, 커뮤널 디바이스(402)는 프로세싱을 위해 컴패니언 디바이스에 요청과 연관된 태스크를 제출할 수 있다. 컴패니언 디바이스(404)는 블록(422)에서 프로세싱 요청을 수신할 수 있다. 블록(415)에서 커뮤널 디바이스(402)에 의해 제출되고 블록(422)에서 컴패니언 디바이스에 의해 수신된 태스크는 커뮤널 디바이스(402)와 컴패니언 디바이스(404) 사이에 확립된 컴패니언 링크를 통해 송신될 수 있다. 예를 들어, 그리고 일 실시예에서, 커뮤널 디바이스(402) 및 컴패니언 디바이스(404) 상에서 실행되는 가상 어시스턴트 클라이언트들은 데이터를 교환하기 위해 애플리케이션 프로그래밍 인터페이스(API)를 통과하는 공통 컴패니언 링크 메시지를 사용할 수 있다.
일 실시예에서, 요청이 개인 사용자 데이터를 사용하는지 여부에 대한 블록(414)에서의 결정은 커뮤널 디바이스와 통신하는 가상 어시스턴트 서버(예컨대, 도 1에서와 같은 가상 어시스턴트 서버(106))에 의해 수행될 수 있다. 커뮤널 디바이스(402)는, 커뮤널 디바이스에 대한 프로세싱 동작들을 수행할 때 컴패니언 디바이스(404)의 가상 어시스턴트 식별자를 제공할 수 있다. 가상 어시스턴트 서버가 사설 데이터에 대한 액세스를 요구할 경우, 가상 어시스턴트 서버는 컴패니언 디바이스의 가상 어시스턴트 식별자를 사용하여 커뮤널 디바이스(402)를 대신하여 컴패니언 디바이스(404)와 접촉할 수 있다.
블록(424)에서, 컴패니언 디바이스(404)는 커뮤널 디바이스(402)로부터의 요청에 응답하여 개인 사용자 데이터에 액세스할 수 있다. 컴패니언 디바이스(404)에 의해 용이하게 될 수 있는 예시적인 요청은, 예를 들어, 이벤트를 추가하거나 다음 캘린더 이벤트의 발생에 질의하기 위해, 사용자의 캘린더에 액세스하라는 요청을 포함한다. 컴패니언 디바이스(404)는 또한, 예를 들어 사용자의 연락처들 중 하나에 대한 연락처 정보를 검색하기 위해 사용자의 연락처들 내의 데이터에 액세스할 수 있다. 컴패니언 디바이스(404)는 디바이스 상에 국부적으로 저장된 개인 사용자 데이터에 액세스할 수 있다. 일 실시예에서, 컴패니언 디바이스(404)는 컴패니언 디바이스 상에 저장되거나 그와 연관된 온라인 계정 크리덴셜들에 기초하여 컴패니언 디바이스에 의해 원격으로 액세스가능한 비밀 데이터에 액세스하기 위해 하나 이상의 서버들(예컨대, 도 1b에서와 같은 온라인 계정 서버(136))와 통신할 수 있다. 일 실시예에서, 개인 사용자 데이터에 대한 액세스
블록(426)에서, 컴패니언 디바이스(404)는 요청의 개인 데이터 부분을 프로세싱할 수 있다. 예를 들어, 컴패니언 디바이스(404)는 사용자에 대한 캘린더 상의 스케줄링된 태스크들 또는 이벤트들의 세트 내의 룩업을 수행할 수 있거나, 사용자에 대한 캘린더에 태스크 또는 이벤트를 추가할 수 있다. 컴패니언 디바이스(404)는 또한 커뮤널 디바이스(402)에서 수신된 요청에 응답하여 사용자에 대한 텍스트 또는 이메일 메시지를 전송할 수 있다. 예를 들어, 컴패니언 디바이스(404)는 사용자에 대한 스케줄링된 태스크들 또는 이벤트들의 세트를 판독하거나 기록하라는 요청에 응답하여 사용자에 대한 캘린더 데이터에 액세스할 수 있다. 컴패니언 디바이스(404)는 또한, 예를 들어, 연락처의 전화 번호, 이메일 주소, 또는 메시징 식별자를 검색하고 텍스트 또는 이메일 메시지를 연락처에 전송하기 위해 사용자의 연락처들 내의 데이터에 액세스할 수 있다.
요청의 개인 데이터 부분을 프로세싱하는 것은 또한 컴패니언 디바이스(404) 상의 하나 이상의 애플리케이션들, 또는 그러한 하나 이상의 애플리케이션들에 백 엔드 서비스들을 제공하는 하나 이상의 기본 프레임워크들과 상호작용하는 것을 포함할 수 있다. 일 실시예에서, 컴패니언 디바이스(404)는 가상 어시스턴트 서버(예컨대, 도 1a 및 도 1b에서와 같은 가상 어시스턴트 서버(106))에 허가 및/또는 크리덴셜들을 제공하여, 가상 어시스턴트 서버가 개인 사용자 데이터를 사용하여 컴패니언 디바이스(404)를 대신하여 프로세싱 태스크들을 수행하는 것을 인에이블할 수 있다.
블록(428)에서, 컴패니언 디바이스(404)는 요청된 프로세싱 태스크의 출력을 디바이스들 사이에 확립된 컴패니언 링크를 통해 커뮤널 디바이스(402)에 제공할 수 있다. 커뮤널 디바이스(402)에 제공되는 출력은 구현들에 걸쳐 그리고/또는 커뮤널 디바이스(402)에서 수신된 요청의 유형에 기초하여 변할 수 있다. 일 실시예에서, 요청된 프로세싱 태스크의 출력은 다음 캘린더 이벤트의 시간 및 날짜, 또는 다른 유형의 구체적으로 요청된 데이터와 같은 원시 정보일 수 있다. 일 실시예에서, 출력은 커뮤널 디바이스(402)를 통해 출력될 스피치 데이터의 서브세트, 예컨대 커뮤널 디바이스(402)에 의해 제공되는 최종 출력으로 통합될 수 있는 스피치 출력일 수 있다.
블록(416)에서, 커뮤널 디바이스(402)는 컴패니언 디바이스(404)로부터 디바이스들 사이에 확립된 컴패니언 링크를 통해 요청된 프로세싱 태스크의 출력을 수신할 수 있다. 일 실시예에서, 컴패니언 디바이스(404)로부터 수신된 개인 데이터는 커뮤널 디바이스(402) 상에 지속적으로 저장 또는 캐싱되지 않고, 개인 데이터가 사용된 후에 폐기될 수 있다. 커뮤널 디바이스(402)는 개인 데이터를 사용하여 가상 어시스턴트 요청의 프로세싱을 완료하고 블록(418)에서 요청에 대한 응답을 포뮬레이트할 수 있다.
일 실시예에서, 블록(418)에서 요청 프로세싱을 완료하는 것은 커뮤널 디바이스(402)와 가상 어시스턴트 서버 사이의 데이터 교환을 포함할 수 있다. 도 1a를 추가로 참조하면, 일 실시예에서, 도 4a의 커뮤널 디바이스(402)는 가상 어시스턴트 클라이언트(예컨대, VAC(101))를 갖는 스마트 홈 디바이스(103)이다. VAC(101)는 VA 클라이언트(112)에 대한 I/O 인터페이스를 통해 가상 어시스턴트 서버(106)와 통신할 수 있다. 프로세싱 모듈들(114)은 데이터 및 프로세싱 모델들(116)을 사용하여, 수신된 요청이 스마트 홈 디바이스의 영역에 대한 로컬 날씨 예보에 대한 것이라고 결정할 수 있다. 가상 어시스턴트 서버(106)는 이어서 하나 이상의 네트워크들(110)을 통해 외부 서비스들(120)에 액세스하기 위해 외부 서비스들(118)에 대한 I/O 인터페이스를 활용할 수 있다. 예를 들어, 외부 서비스들(120)(예컨대, 정보 서비스(들))은 요청된 날씨 예보를 검색하기 위해 액세스될 수 있다. 요청에 대한 응답을 포뮬레이트하는 데 사용될 수 있는 정보는 I/O 인터페이스를 통해 VA 클라이언트(112)로 출력될 수 있고, 스마트 홈 디바이스(103) 상의 VAC(101)는 요청에 대한 응답을 포뮬레이트할 수 있다. 대안적으로, 일부 경우들에서, 가상 어시스턴트 서버(106)는 수신된 요청에 대한 응답을 포뮬레이트하고 I/O 인터페이스를 통해 출력에 대한 응답을 VA 클라이언트(112)로 제공할 수 있다. 스마트 홈 디바이스(103) 상의 VAC(101)는 출력을 최종 응답으로 통합할 수 있다.
도 4a로 돌아가면, 일 실시예에서, 커뮤널 디바이스(402)는 커뮤널 디바이스 상에 캐싱된 공중 정보에 기초하여 가상 어시스턴트 클라이언트에서 수신되거나, 커뮤널 디바이스(402)와 연관된 가상 어시스턴트 서버로부터 검색되거나 또는 컴패니언 디바이스(404)로부터 수신된 개인 정보에 기초하는 요청에 대한 응답을 포뮬레이트할 수 있다. 출력이 스피치 출력인 경우, 스피치 출력은 커뮤널 디바이스(402)에 국부적인 텍스트-스피치 엔진을 사용하여 전적으로 커뮤널 디바이스(402) 상에서 생성될 수 있다. 일 실시예에서, 스피치 출력의 서브세트가 컴패니언 디바이스(404)에 의해 생성되고, 커뮤널 디바이스(402)에 의해 포뮬레이트된 응답 내로 통합될 수 있다.
블록(420)에서, 커뮤널 디바이스(402)는 요청에 대한 응답을 출력할 수 있다. 응답은 커뮤널 디바이스(402) 상의 스피커들을 통해 출력되는 음성 컴포넌트를 포함할 수 있다. 일부 실시예들에서, 출력은 애니메이션, 색상 변화, 또는 커뮤널 디바이스(402)에 의해 표시될 수 있는 다른 시각적 표시와 같은 시각적 컴포넌트를 포함할 수 있다. 일부 구현예들에서, 텍스트 정보 또는 다른 시각적 데이터는 커뮤널 디바이스(402)와 연관된 디스플레이 상에 디스플레이될 수 있지만, 커뮤널 디바이스(402)의 일부 구현예들은 디스플레이가 없을 수 있다.
도 4b에 도시된 바와 같이, 일부 실시예들에서, 커뮤널 디바이스(402) 및 컴패니언 디바이스(404)는 커뮤널 디바이스가 착신 가상 어시스턴트 클라이언트 요청들을 프로세싱을 위해 컴패니언 디바이스로 재지향시키는 프로세스(430)를 수행할 수 있다. 일 실시예에서, 커뮤널 디바이스(402)는 개인 사용자 데이터에 액세스하는 것처럼 보이는 반면, 하나 이상의 가상 어시스턴트 클라이언트 요청들 전체의 프로세싱을 컴패니언 디바이스(404)로 암시적으로 재지향시키도록 구성될 수 있다. 블록(440)에서, 커뮤널 디바이스(402)는 개인 사용자 데이터에 대한 액세스를 요구하는 디바이스의 가상 어시스턴트 클라이언트에서 요청을 수신할 수 있다. 블록(442)에서, 커뮤널 디바이스(402)는 이어서 컴패니언 디바이스와 확립된 컴패니언 링크를 통해 컴패니언 디바이스(404)로 요청을 재지향시킬 수 있다. 일 실시예에서, 가상 어시스턴트 요청의 프로세싱의 전부 또는 실질적으로 전부는 커뮤널 디바이스의 사용자에게 투명한 방식으로 컴패니언 디바이스(404) 상에서 수행될 수 있다. 컴패니언 디바이스 상의 가상 어시스턴트 요청의 프로세싱은 또한 본 명세서에 기술된 바와 같이 가상 어시스턴트 서버(예컨대, 도 1a 및 도 1b에서와 같은 가상 어시스턴트 서버(106)) 상에서 부분적으로 수행될 수 있다. 예를 들어, 스피치 인식 및 자연 언어 프로세싱은 가상 어시스턴트 서버에 의해 적어도 부분적으로 수행될 수 있다.
블록(452)에서, 컴패니언 디바이스(404)는 컴패니언 디바이스 상에서 실행되는 가상 어시스턴트 클라이언트에서 커뮤널 디바이스로부터 요청을 수신할 수 있다. 이어서, 컴패니언 디바이스(404)는 블록(454)에서 커뮤널 디바이스를 대신하여 요청을 프로세싱하고 블록(456)에서 커뮤널 디바이스 상의 가상 어시스턴트 클라이언트에 의한 출력을 위한 응답을 포뮬레이트할 수 있다. 일 실시예에서, 컴패니언 디바이스(404) 상의 프로세싱 및 응답 생성은, 요청이 컴패니언 디바이스가 아닌 가상 어시스턴트 클라이언트에서 직접 수신된 것처럼 수행될 수 있다. 블록(458)에서, 컴패니언 디바이스는 이어서 출력을 위해 커뮤널 디바이스(402)에 대한 응답을 제공할 수 있다. 일 실시예에서, 커뮤널 디바이스(402)에 제공되는 응답은 커뮤널 디바이스(402)에 의해 전달될 특정 스피치 출력을 포함할 수 있다. 대안적으로, 제공된 응답은 커뮤널 디바이스 상의 스피치 엔진을 통해 커뮤널 디바이스에 의해 출력되는 스피치로 렌더링될 수 있는 다른 데이터일 수 있다.
블록(459)에서, 컴패니언 디바이스(404)는 요청이 그러한 데이터의 수정을 포함하면 개인 사용자 데이터에 대한 하나 이상의 가상 어시스턴트 동작들을 수행할 수 있다. 예를 들어, 사용자에 대한 캘린더, 알람, 또는 리마인더 데이터는 요청에 기초하여 컴패니언 디바이스 상에서 업데이트될 수 있거나, 애플리케이션들은 컴패니언 디바이스 상에서 열릴 수 있거나, 컴패니언 디바이스 상에서 구성 설정이 조정될 수 있거나, 또는 요청이 컴패니언 디바이스(404) 상의 가상 어시스턴트에 의해 직접 수신된 것처럼 임의의 다른 가상 어시스턴트 동작이 수행될 수 있다. 블록(459)이 블록(478) 이후에 수행되는 것으로 예시되어 있지만, 요청된 가상 어시스턴트 동작들은 블록(458)에서 출력을 위해 커뮤널 디바이스에 대한 응답을 제공하는 것에 대해 임의의 순서로 수행될 수 있다. 예를 들어, 애플리케이션을 열라는 요청은 요청을 확인응답하는 오디오 응답이 재생을 위해 커뮤널 디바이스에 제공된 후에 수행될 수 있다. 대안적으로, 스케줄링 및 이벤트 또는 알람에 대한 요청은 커뮤널 디바이스로의 출력을 위한 확인응답 응답을 제공하는 것 전에 또는 그와 병렬로 수행될 수 있다.
블록(444)에서, 커뮤널 디바이스(402)는 재지향된 요청에 대한 응답을 수신할 수 있다. 커뮤널 디바이스(402)는 이어서 블록(446)에서 요청에 대한 응답을 출력할 수 있다. 응답의 출력은 도 4a의 블록(420)에서 수행되는 출력과 유사한 방식으로 수행될 수 있고, 컴패니언 디바이스(404)에 의해 생성되는 스피치 데이터의 출력 또는 컴패니언 디바이스(404)로부터 수신된 출력에 기초하여 커뮤널 디바이스(402) 상에서 국부적으로 생성된 스피치 데이터의 출력을 포함할 수 있다. 요청이 요청들을 완료하기 위해 다수의 상호작용들의 상호작용을 요구하는 경우에, 디바이스들 사이에 확립된 컴패니언 링크를 사용하여 커뮤널 디바이스(402)와 컴패니언 디바이스(404) 사이에서 다수의 요청 재지향이 수행될 수 있다.
도 4c에 도시된 바와 같이, 일부 실시예들에서, 커뮤널 디바이스(402) 및 컴패니언 디바이스(404)는, 컴패니언 디바이스에 메시지(예컨대, 텍스트 메시지, 이메일 메시지, 또는 다른 직접 메시지)를 전송하기 위해 커뮤널 디바이스가 가상 어시스턴트 클라이언트 요청을 재지향시키는 프로세스(460)를 수행할 수 있다. 커뮤널 디바이스(402)는 연락처에 메시지를 송신하기 위해 커뮤널 디바이스 상의 가상 어시스턴트 클라이언트에서 음성 요청을 수신할 수 있다. 메시지는 텍스트 메시지, 이메일 메시지, 또는 사용자 디바이스들 사이에서 전송될 수 있는 다른 유형의 직접 메시지일 수 있다. 다양한 실시예들에서, 텍스트 메시지는 단문 메시징 서비스(SMS) 메시지 및/또는 미국 캘리포니아주 쿠퍼티노 소재의 애플 사에 의해 제공된 iMessage® 시스템을 통해 전송되는 메시지와 같은 다른 유형의 텍스트 기반 메시지일 수 있다. 일부 실시예들은 텍스트 메시지들이 다른 유형들의 비-SMS 텍스트 메시징 서비스들에 걸쳐 전송되는 것을 인에이블한다. 일 실시예에서, 메시지는 기록된 음성 메시지일 수 있다. 메시지가 전송될 연락처는 연락처 리스트에 나열된 연락처일 수 있으며, 여기서 연락처 리스트는 사용자의 개인 도메인의 일부로 간주될 수 있다. 다양한 실시예들에서, 커뮤널 디바이스(402)는 음성 요청을 적어도 부분적으로 프로세싱할 수 있고, 또한 도 4a의 블록(412)에서의 동작과 유사한 방식으로 프로세싱의 적어도 일부분을 가상 어시스턴트 서버(예컨대, 도 1에서와 같은 가상 어시스턴트 서버(106))에 분담시킬 수 있다. 일 실시예에서, 가상 어시스턴트 서버 상의 자연 언어 프로세싱 동작들은 개인 사용자 데이터가 블록(470)에서 수신된 음성 요청을 프로세싱하는 데 사용될 것인지 여부를 결정할 수 있다. 예를 들어, 가상 어시스턴트 서버는 음성 요청을 프로세싱하는 것이 사용자의 개인 도메인 내에 있는 데이터 또는 서비스들, 예컨대 사용자에 대한 연락처 정보 및 연관된 메시징 서비스에 액세스할 것이라고 결정할 수 있다. 사용자를 위한 메시징 서비스에 액세스하는 것은 사용자와 연관된 메시징 서비스 계정에 액세스하는 것을 포함할 수 있다. 블록(470)에서 수신된 음성 요청의 프로세싱을 용이하게 하기 위해, 블록(472)에서 커뮤널 디바이스(402)는 메시징 요청을 컴패니언 디바이스(404)에 전송할 수 있다. 블록(480)에서, 컴패니언 디바이스(404)는 디바이스의 가상 어시스턴트 클라이언트에서 메시징 요청을 수신할 수 있다. 일 실시예에서, 메시징 요청은 음성 요청의 일부에서 프로세싱되는 가상 어시스턴트 서버를 통해 커뮤널 디바이스(402)로부터 간접적으로 블록(482)에서 수신될 수 있다.
커뮤널 디바이스(402)로부터 직접 또는 간접적으로 메시징 요청을 수신한 컴패니언 디바이스(404)는 컴패니언 디바이스(404) 상의 가상 어시스턴트 클라이언트를 통해 메시징 요청을 프로세싱할 수 있다. 메시징 요청을 프로세싱하는 것은, 블록(482)에 도시된 바와 같이, 커뮤널 디바이스를 대신하여 식별된 연락처에 메시지를 전송하는 것을 포함할 수 있다. 컴패니언 디바이스(404) 상에서 메시지를 전송하는 것은 SMS 서비스를 통해 텍스트 메시지를 전송하는 것, 이메일 클라이언트를 통해 메시지를 전송하는 것, 또는 컴패니언 디바이스(404) 상의 다른 메시징 서비스 또는 애플리케이션을 통해 메시지를 전송하는 것을 포함할 수 있다. 일 실시예에서, 전송할 메시지의 유형은 블록(470)에서 커뮤널 디바이스(402)에 의해 수신된 음성 요청 내에서 특정될 수 있다. 일 실시예에서, 메시지를 송신하는 것은 사용자의 온라인 계정, 예를 들어, 도 1b에서와 같은 온라인 계정 서버(136)와 연관된 온라인 계정에 기초하여 용이하게 될 수 있다. 예를 들어, 메시지가 연락처에 전송되는 메시징 서비스는 사용자의 온라인 계정과 연관된 메시징 서비스일 수 있다.
컴패니언 디바이스(404)는 블록(484)에서 전송된 메시지에 대한 응답을 수신할 수 있다. 일 실시예에서, 블록(484)에 도시된 바와 같이, 메시지에 대한 응답이 일정 기간 내에 수신되어야 하는 경우, 컴패니언 디바이스(404)는 블록(486)에서 커뮤널 디바이스(402)에 대한 응답의 통지를 전송할 수 있다. 수신된 메시지에 대해 통지가 전송될 기간은 가상 어시스턴트 시스템과 연관된 구성 또는 정책 내에서 특정될 수 있거나, 사용자, 커뮤널 디바이스(402), 또는 컴패니언 디바이스(404)와 연관된 선호도들의 사용자 설정들에 기초하여 구성될 수 있다.
일 실시예에서, 컴패니언 디바이스(404)는 블록(486)에서 메시징 요청이 수신된 커뮤널 디바이스(402)로 통지를 전송할 것이다. 일 실시예에서, 컴패니언 디바이스(404)가 커뮤널 디바이스(402)의 다수의 인스턴스들과 접속되는 경우, 블록(486)에서 통지가 전송되는 특정 커뮤널 디바이스는 다수의 기술들 중 하나를 사용하여 결정될 수 있다. 전술된 바와 같이, 하나의 기술은 메시지 요청이 수신되는 커뮤널 디바이스에 통지를 전송하는 것이다. 추가적인 기술은 사용자가 가장 최근에 상호작용한 커뮤널 디바이스에 통지를 전송하는 것이다. 예를 들어, 사용자는 연락처에 메시지를 전송하도록 제1 위치 내의 제1 커뮤널 디바이스에 요청할 수 있다. 이어서, 사용자는 제2 위치로 이동하고 제2 커뮤널 디바이스와 상호작용할 수 있다. 메시지에 대한 응답이 기간 내에 수신되어야 하고 사용자가 가장 최근에 제2 커뮤널 디바이스와 상호작용했어야 하면, 통지는 제2 커뮤널 디바이스로 전송될 수 있다. 사용될 수 있는 추가적인 기술은 사용자가 가장 가까운 커뮤널 디바이스에 통지를 전송하는 것이다. 일 실시예에서, 컴패니언 디바이스(404)와 커뮤널 디바이스(402) 사이의 범위를 주기적으로 결정하기 위해 하나 이상의 레인징 기술들이 사용될 수 있다. 최근에 전송된 메시지에 대한 응답이 수신될 때, 컴패니언 디바이스(404)는, 컴패니언 디바이스 또는 연관된 웨어러블 전자 디바이스가 하나 이상의 레인징 기술들에 따라 가장 가까운 커뮤널 디바이스(402)에 통지를 전송할 수 있다.
블록(476)에서, 블록(474)에서 응답 통지를 수신한 커뮤널 디바이스(402)는 블록(476)에서 수신된 응답의 통지를 출력할 수 있다. 일 실시예에서, 통지의 출력은 커뮤널 디바이스(402)의 하나 이상의 스피커 디바이스들을 통해 재생되는 음성 통지를 통해 제공될 수 있다. 일 실시예에서, 시각적 통지 기술을 포함하는 다른 통지 기술들이 사용될 수 있다. 일 실시예에서, 음성 통지는 음성 연락처 이름과 같은, 수신된 메시지의 하나 이상의 컴포넌트들의 텍스트-스피치 변환을 포함할 수 있다. 일 실시예에서, 음성 통지는 수신된 메시지의 음성 콘텐츠를 포함할 수 있다. 일 실시예에서, 수신된 메시지가 기록된 미디어를 포함하는 경우, 수신된 메시지와 연관된 기록된 미디어(예컨대, 오디오, 비디오)가 출력될 수 있다. 일부 실시예들에서, 수신된 텍스트 메시지의 음성 콘텐츠 또는 기록된 미디어의 재생은 단지 사용자에 의해 제공된 요청에 응답하여 수행될 수 있다. 그러한 실시예들에서, 응답의 콘텐츠를 재생하라는 음성 요청은 도 4a에서와 같은 프로세스(400) 또는 도 4b 에서와 같은 프로세스(430)에 따라 요청을 프로세싱할 수 있는 컴패니언 디바이스로 송신될 수 있다.
도 5는 본 명세서에 기술된 실시예들에 따른 페어링된 디바이스와 컴패니언 링크 접속을 확립하기 위한 프로세스(500)를 예시한다. 프로세스(500)는 커뮤널 디바이스가 컴패니언 링크(예컨대, 도 4에서와 같은 커뮤널 디바이스(402) 및 컴패니언 디바이스(404))를 통해 컴패니언 디바이스와의 접속을 개시하는 동작들을 예시한다. 그러나, 컴패니언 디바이스가 커뮤널 디바이스와의 접속을 개시하는 유사한 동작들이 수행될 수 있다. 일 실시예에서, 컴패니언 링크를 통한 메시지 교환 동안, 통신 세션을 개시하는 디바이스가 컴패니언 링크에 대한 클라이언트 디바이스인 한편, 세션을 수용하는 디바이스가 컴패니언 링크에 대한 서버 디바이스이고, 따라서, 커뮤널 디바이스(402) 및 컴패니언 디바이스(404)는 각각 컴패니언 링크 접속을 개시하거나 수용할 수 있다. 또한, 일 실시예에서, 홈 네트워크 환경(예컨대, 도 2에서와 같은 홈 네트워크 환경(200)) 내의 다수의 커뮤널 디바이스들 사이에 컴패니언 링크 접속이 확립될 수 있다. 추가적으로, 도 1에서와 같이, 사용자 디바이스(104)와 사용자 디바이스(114) 사이와 같은, 다수의 컴패니언 디바이스들 사이에 컴패니언 링크 접속이 확립될 수 있다.
블록(502)에서, 통신 세션이 컴패니언 링크를 통해 커뮤널 디바이스와 컴패니언 디바이스 사이에 확립되어야 한다는 결정이 이루어질 수 있다. 결정은 커뮤널 디바이스 또는 컴패니언 디바이스에 의해 이루어질 수 있다. 예시적인 목적을 위해, 프로세스(500)는 클라이언트로서의 커뮤널 디바이스 및 서버로서의 컴패니언 디바이스를 갖는 것으로 예시하지만, 실시예들은 그렇게 제한되지 않는다.
블록(504)에서, 커뮤널 디바이스는 로컬 네트워크를 통해 컴패니언 디바이스의 발견을 시도할 수 있다. 발견은 Bonjour 또는 SSDP를 포함하지만 이로 제한되지 않는 본 명세서에 기술된 바와 같은 발견 서비스를 사용하여 수행될 수 있다. 디바이스가 블록(506)에서 국부적으로 발견되면, 프로세스(500)는 블록(516)에서 계속되고, 여기서 커뮤널 디바이스는 컴패니언 디바이스와의 로컬 네트워크 접속을 확립하려고 시도할 수 있다. 로컬 네트워크 접속은 송신 제어 프로토콜(TCP)과 같은, 그러나 이에 제한되지 않는 네트워크 프로토콜을 통해 확립될 수 있다. 디바이스가 국부적으로 발견되지 않는 경우, 커뮤널 디바이스는 블록(508)에서 원격 식별자가 이용가능한지 여부를 결정할 수 있다. 원격 식별자는, 커뮤널 디바이스, 또는 다른 컴패니언 링크 클라이언트가 동일한 네트워크에 존재하지 않거나 발견 서비스 프로토콜을 통해 달리 발견될 수 없는 페어링된 디바이스와 컴패니언 링크 세션을 찾아내고, 접속하고, 확립하는 것을 인에이블하는 식별자 또는 식별 토큰일 수 있다. 하나 이상의 원격 식별자들은 로컬 디바이스 발견 및/또는 페어링 프로세스(예컨대, 도 3에서와 같은 발견 프로세스(300)) 동안 발생하는 존재 및 도달가능성 정보 교환 동안 컴패니언 링크 디바이스들 사이에서 교환될 수 있다. 예시적인 원격 식별자들은 가상 어시스턴트 서버(예컨대, 도 1b에서와 같은 가상 어시스턴트 서버(106))를 통해 통신하는 데 사용될 수 있는, 컴패니언 디바이스 상의 가상 어시스턴트 클라이언트와 연관된 가상 어시스턴트 식별자; 온라인 계정 서버(예컨대, 도 1b에서와 같은 온라인 계정 서버(136))와의 등록을 통해 확립된 식별자 토큰; 및 중계 서버(예를 들어, 도 1b에서와 같은 중계 서버(126))와 연관된 중계 식별자를 포함한다. 커뮤널 디바이스는 이용가능한 원격 식별자를 사용하여, 컴패니언 디바이스에 접속하기 위해 사용될 수 있는 인터넷 IP 어드레스와 같은 네트워크 어드레스에 대해 질의하거나 중계 서비스를 통해 컴패니언 디바이스와 중계된 메시지 교환을 인에이블할 수 있다. 블록(518)에서, 커뮤널 디바이스는 원격 식별자를 사용하여 컴패니언 디바이스와의 원격 네트워크 접속을 확립할 수 있다.
접속이 블록(516)에서 로컬 네트워크 접속을 통해 확립
되든 또는 블록(518)에서의 원격 네트워크 접속을 통해 확립되든, 커뮤널 디바이스는 블록(520)에서 컴패니언 디바이스와의 페어링을 검증할 수 있다. 페어링을 검증하는 것은, 컴패니언 링크를 통해 시작하는 디바이스들 사이에 진정한 페어 관계가 존재하고 이전 로컬 페어링 동안 교환되는 데이터의 사용을 행한다는 것을 확립한다. 일 실시예에서, 각각의 디바이스가 페어 셋업 동안 교환되었던 장기 공개 키에 대응하는 장기 비밀 키의 소유를 입증하는 페어 검증 프로세스가 수행된다. 페어 검증 프로세스는, 페어 검증된 세션 동안 발생하는 통신들을 암호화하는 데 사용될 수 있는 새로운 공유 비밀 또는 세션 키를 확립하는 것을 추가로 포함할 수 있다.
블록(522)에서, 컴패니언 디바이스는 페어 검증 프로세스가 성공적이었는지 여부를 결정할 수 있다. 블록(520)에서의 페어 검증 프로세스가 커뮤널 디바이스와 컴패니언 디바이스 사이의 페어 관계를 검증하지 못하는 경우, 컴패니언 디바이스는, 적어도 컴패니언 디바이스와 연관된 사용자에 대한, 개인 정보에 대한 가상 어시스턴트 액세스가 이용가능하지 않을 블록(510)으로 지향될 것이다.
블록(508)에서 결정된 바와 같이, 컴패니언 디바이스에 액세스하기 위해 사용할 원격 식별자가 커뮤널 디바이스에 이용가능하지 않으면, 개인 정보에 대한 가상 어시스턴트 액세스가 또한 이용가능하지 않을 것이다. 그러한 상황들 하에서, 페어링된 및/또는 유효한 컴패니언 디바이스 없이 사용자의 개인 정보에 대한 액세스를 요구하는 질의가 제공되면, 커뮤널 디바이스 상의 가상 어시스턴트는 질의를 프로세싱하지 못할 것이다.
블록(522)에서, 페어링이 성공적으로 검증되었다고 커뮤널 디바이스가 결정하면, 커뮤널 디바이스는 블록(524)에서 컴패니언 디바이스의 사용자에 대한 비밀 데이터에 액세스하는 질의들을 서비스하기 위해 커뮤널 디바이스 상의 가상 어시스턴트 클라이언트에 대한 컴패니언 디바이스와의 검증된 컴패니언 링크 세션을 확립할 수 있다. 검증된 세션은 디바이스들 사이의 단대단 암호화된 메시지 교환을 인에이블할 수 있어서, 메시지들 및 데이터가 프라이버시-보존 방식으로 디바이스들 사이에서 교환될 수 있다. 암호화된 메시지 교환은 예를 들어 개인 또는 비밀 사용자 데이터에 대한 가상 어시스턴트에 대한 커맨드들 또는 응답들의 중계를 인에이블하도록 수행될 수 있다. 암호화된 메시지 교환은 또한 디바이스 데이터, 애플리케이션 데이터, 또는 클라우드 서비스 계정과 연관된 구성 데이터와 같은 디바이스 데이터를 전자 디바이스들 사이에서 동기화하도록 수행될 수 있다.
전술한 바와 같이, 접속을 개시하는 디바이스로서 커뮤널 디바이스를 갖는 것으로 예시된 프로세스(500)가 설명되지만, 컴패니언 디바이스는 또한 커뮤널 디바이스와 로컬 또는 원격 세션을 개시할 수 있다. 일 실시예에서, 검증된 컴패니언 링크 세션은, 일단 확립되어, 디바이스들 사이의 양방향 메시지 교환을 인에이블하는 양방향 접속이다. 또한, 세션에 참여하는 임의의 모바일 디바이스들은 데이터가 컴패니언 링크를 통해 교환되지 않을 때 웨이크-온-무선 상태로 진입할 수 있어서, 디바이스는 무선 라디오 및 연관된 프로세서들이 세션과 연관된 접속을 유지하는 동안 저전력 상태로 진입할 수 있다.
일부 실시예들에서, 본 명세서에 기술된 바와 같은 컴패니언 디바이스는, 디폴트로, 개인 데이터의 하나 이상의 요소들에의 액세스를 제한하도록 구성될 수 있다. 일 실시예에서, 제한은 가상 어시스턴트의 사용이 컴패니언 디바이스 상에서 인에이블될 때까지 개인 데이터의 특정 요소들 상에 배치되지 않을 수 있다. 일 실시예에서, 디바이스가 잠금 상태에 있는 동안 특정 요소 개인 데이터에 대한 제한이 있을 수 있다. 일 실시예에서, 디바이스 파워-온 이후 적어도 하나의 성공적인 잠금해제 인가가 발생했을 때까지 제한이 있을 수 있다. 예를 들어, 일 실시예에서, 사용자 디바이스 상의 개인 데이터는 암호화될 수 있고, 그러한 개인 데이터에 액세스하는 키들에 대한 액세스는 디바이스가 잠금된 동안 제한될 수 있다. 따라서, 컴패니언 디바이스의 구성에 따라, 컴패니언 디바이스는, 컴패니언 디바이스가 잠금된 동안 요청이 수신되어야 하면 커뮤널 디바이스로부터 요청을 프로세싱하는 데 사용될 개인 데이터에 액세스하지 않을 수 있다. 일 실시예에서, 개인 데이터에 대한 액세스는 도 6에 예시된 프로세스를 사용하여 컴패니언 디바이스 상에서 인에이블될 수 있다.
도 6은 본 명세서에 기술된 실시예들에 따른 컴패니언 디바이스 상의 개인 데이터에 대한 액세스를 허용하기 위한 프로세스(600)를 예시한다. 프로세스(600)는 본 명세서에 기술된 바와 같은 컴패니언 디바이스 내의 로직에 의해 수행될 수 있는데, 여기서 컴패니언 디바이스는 본 명세서에 기술된 임의의 지정된 개인 사용자 디바이스일 수 있다. 컴패니언 디바이스는 블록(602)에 도시된 바와 같이, 개인 사용자 데이터에 대한 액세스를 요구하는 요청을 프로세싱하기 위해 커뮤널 디바이스로부터 요청을 수신할 수 있다. 컴패니언 디바이스는 개인 디바이스 상에서 개인 데이터 액세스가 인에이블되는지 여부를 결정할 수 있다. 다양한 실시예들에서, 컴패니언 디바이스 상에서의 개인 데이터 액세스는 다양한 방식들로 제한될 수 있다. 일 실시예에서, 디바이스는 디바이스가 잠금 상태에 있는 동안 개인 사용자 데이터에 대한 프로그램 액세스를 제한하도록 구성될 수 있다. 블록(603)에서 결정된 바와 같이, 개인 데이터 액세스가 제한되는 경우(예컨대, 인에이블되지 않음), 컴패니언 디바이스는 블록(604)에 도시된 바와 같이, 개인 데이터에 대한 액세스를 사용자에게 프롬프트할 수 있다. 개인 데이터에 대한 액세스에 대한 프롬프트는 액세스에 대한 블랭킷 프롬프트일 수 있거나 액세스될 개인 데이터의 유형에 특정적일 수 있다. 다양한 실시예들에서, 블록(604)에서의 프롬프트는 다양한 형태들로 제시될 수 있다. 일 실시예에서, 프롬프트는 컴패니언 디바이스의 사용자 인터페이스 상에 제시되는 팝업 통지 또는 다른 유형의 통지이다. 일 실시예에서, 프롬프트는 컴패니언 디바이스에 의해 말해질 수 있는 구두 프롬프트이다.
개인 데이터 액세스가 블록(605)에서 사용자에 의해 허용되는 경우, 컴패니언 디바이스는 개인 데이터에 액세스할 수 있고 블록(608)에서 커뮤널 디바이스로부터의 요청을 프로세싱할 수 있다. 개인 데이터 액세스가 사용자에 의해 허용되는 방식은 액세스 프롬프트의 성질에 의존할 수 있다. 예를 들어, 그리고 일 실시예에서, 사용자는 제시된 사용자 인터페이스 요소의 선택을 통해 액세스를 허용할 수 있거나 또는 컴패니언 디바이스에 대한 요청의 구두 확인응답을 제공할 수 있다. 사용자가 개인 데이터에 대한 액세스를 허용하지 않으려면, 컴패니언 디바이스는 블록(606)에서 커뮤널 디바이스로부터의 요청을 거부할 수 있다.
도 7은 일 실시예에 따른 분산형 미디어 재생 시스템을 사용하기 위한 컴퓨팅 디바이스(700)의 블록도이다. 일 실시예에서, 컴퓨팅 디바이스(700)는 본 명세서에 기술된 바와 같은 사용자 디바이스 또는 스마트 홈 디바이스, 예컨대 커뮤널 스마트 스피커 디바이스 또는 미디어 재생 능력을 갖는 스마트 기기 내에서 사용하기에 적합할 수 있는 하드웨어 및 소프트웨어를 포함한다. 컴퓨팅 디바이스(700)는 미디어 재생을 인에이블하는 하나 이상의 스피커 디바이스(들)(701)를 포함한다. 컴퓨팅 디바이스(700)가 스마트 스피커 디바이스로서 구현되는 경우, 스피커 디바이스(들)(701)는 컴퓨팅 디바이스가 사용자 디바이스 또는 스마트 기기로서 구현되는 경우에 비해 더 높은 품질의 것일 수 있다.
컴퓨팅 디바이스(700)는 네트워크 통신 기능성을 인에이블하는 네트워크 인터페이스(702)를 포함한다. 네트워크 인터페이스(702)는 하나 이상의 무선 라디오(들)(703)과 결합하여, Wi-Fi 및 블루투스와 같은, 그러나 그로 제한되지 않는 하나 이상의 무선 네트워킹 기술들을 통한 무선 통신을 인에이블할 수 있다. 일부 구현예들에서, 네트워크 인터페이스(702)는 또한 유선 네트워크 접속을 지원할 수 있다. 컴퓨팅 디바이스는 또한 다수의 프로세서 디바이스들을 갖는 프로세싱 시스템(704)뿐만 아니라, 휘발성 및 비휘발성 메모리를 포함하는 어드레스 공간을 갖는 가상 메모리 시스템일 수 있는 시스템 메모리(710)를 포함한다.
일 실시예에서, 프로세싱 시스템(704)은 컴퓨팅 디바이스 상에서 실행되는 사용자 및 시스템 애플리케이션들에 대한 명령어들을 실행하기 위한 하나 이상의 애플리케이션 프로세서(들)(705)를 포함한다. 프로세싱 시스템은 또한 모션 센서들, 광 센서들, 근접 센서들, 생체인식 센서들, 오디오 센서들(예컨대, 마이크로폰들), 및 이미지 센서들(예컨대, 카메라들)을 포함하지만 이로 제한되지 않는 센서들을 갖는 센서 디바이스(708)들의 스위트(suite)를 프로세싱 및 모니터링하기 위한 센서 프로세서를 포함할 수 있다. 센서 프로세서(706)는 센서 디바이스(708)의 스위트 내의 상시-온 센서들의 저전력 모니터링을 인에이블할 수 있다. 센서 프로세서(706)는 컴퓨팅 디바이스(700)가 음성 또는 제스처 입력을 통해 가상 어시스턴트(720)로 액세스가능한 채로 유지될 수 있게 하면서, 컴퓨팅 디바이스(700)가 활성 사용중이 아닐 때 애플리케이션 프로세서(들)(705)가 저전력 상태로 유지하도록 할 수 있다. 일 실시예에서, 프로세서 시스템 내의 센서 프로세서(706) 또는 유사한 저전력 프로세서는 미디어 플레이어(725)에 의해 제공되는 미디어 명령어들의 저전력 프로세싱을 인에이블할 수 있다. 미디어 플레이어(725)는 MPEG-2, MPEG-4, H.264, 및 H.265/HEVC를 포함하지만 이들로 제한되지 않는 다양한 상이한 오디오 및/또는 비디오 미디어 유형들의 재생이 가능한 모듈형 미디어 플레이어일 수 있다. 일 실시예에서, 다른 포맷들이 추가적인 코덱 플러그인들을 통해 지원될 수 있다.
가상 어시스턴트(720)는 컴퓨팅 디바이스(700) 상에서 실행되어 본 명세서에 기술된 지능형 자동화 어시스턴트 시스템을 제공하는 로직이다. 가상 어시스턴트(720)는 네트워크를 통해 데이터를 검색하기 위한 네트워크 인터페이스(702), 미디어 파일들의 재생을 개시 또는 중지하기 위한 미디어 재생 애플리케이션들, 또는 캘린더 이벤트들, 태스크들, 리마인더들 또는 알람들을 스케줄링하기 위한 사용자 캘린더 데이터를 포함하지만 이로 제한되지 않는, 컴퓨팅 디바이스 내의 다양한 소프트웨어 및 하드웨어 컴포넌트들에 대한 액세스를 선택적으로 부여받을 수 있다. 가상 어시스턴트(720)가 본 명세서에 기술된 바와 같이 커뮤널 디바이스 상에서 실행되는 경우, 가상 어시스턴트는 컴패니언 링크 모듈(722)과 상호작용하여, 사용자의 개인 도메인 데이터에 액세스하도록 요청이 수신되는 경우 컴패니언 디바이스 또는 컴패니언 디바이스 상에서 실행되는 가상 어시스턴트를 찾아내고 접속할 수 있다.
컴퓨팅 디바이스(700)가 분산형 재생 시스템에 참여할 수 있는 스마트 스피커 디바이스 내에 있는 경우, 분산형 재생 모듈(712)은 분산형 재생 시스템을 통해 재생될 미디어의 리스트를 관리하기 위한 재생 큐 관리자(714) 및 분산형 재생 시스템의 특정 요소들로 미디어 재생을 라우팅하기 위한 재생 라우팅 관리자(716)를 포함하지만 이로 제한되지 않는, 미디어 재생의 다양한 양태들을 관리하기 위한 동작들을 수행할 수 있다. 일 실시예에서, 재생 라우팅 관리자(716)는 컴패니언 링크 모듈(722)을 사용하여 확립된 접속을 통해 분산형 재생 시스템의 상이한 요소들과 접속될 수 있다. 컴패니언 링크 모듈(722)은 다중 채널 재생 시스템에 대한 채널 출력을 구성하거나 다수의 접속된 스피커들에 걸쳐 볼륨 조절들을 조정하는 것과 같은 동작들을 수행하기 위해 분산형 재생 시스템의 디바이스들과 스피커들 사이에 확립된 컴패니언 링크를 통한 접속 확립 및 메시지 중계를 용이하게 할 수 있다.
일 실시예에서, 이벤트 스케줄러(730)는 분산형 재생 모듈(712)과 데이터를 교환할 수 있다. 데이터 교환은 컴퓨팅 디바이스(700)의 사용자 인터페이스 또는 분산형 재생 시스템 내에 참여하는 상이한 컴퓨팅 디바이스를 통해 수신된 입력에 응답하여 수행될 수 있다. 데이터 교환은 또한 가상 어시스턴트(720)를 통해 요청된 활동에 응답하여 수행될 수 있다. 예를 들어, 그리고 일 실시예에서, 이벤트 스케줄러(730)를 통해 스케줄링된 이벤트는 미디어 재생목록과 연관될 수 있어서, 스케줄링된 이벤트의 발생 시 재생목록이 재생 큐 관리자(714)를 통해 재생될 수 있다. 예를 들어, 특정 시간에 사용자를 웨이크하도록 알람이 스케줄링될 수 있다. 알람은 재생목록과 연관될 수 있어서, 하나 이상의 미디어 요소들이 알람 사운드와 연관되어 또는 그에 대한 대안으로 재생될 것이다. 일 실시예에서, 재생목록은 리마인더 또는 타이머 만료 이벤트들을 포함하는 이벤트 스케줄러(730)를 통해 스케줄링된 임의의 이벤트와 연관될 수 있다.
일 실시예에서, 재생 큐 관리자(714)는 다수의 동시 재생 큐들을 관리할 수 있으며, 여기서 재생 큐들은 컴퓨팅 디바이스(700)를 통해 재생될 하나 이상의 과거, 현재 또는 미래의 미디어 요소들을 포함한다. 재생 큐들은 다수의 미디어 요소들을 특정하는 개별적인 미디어 요소들 또는 재생목록들로 로딩될 수 있다. 재생 큐들은 국부적으로 저장된 미디어, 로컬 또는 원격 미디어 스트리밍 서버로부터 스트리밍될 미디어 서버 또는 미디어를 통해 재생을 위해 검색될 미디어를 포함할 수 있다. 예를 들어, 오디오 또는 비디오 팟캐스트들, 또는 현재 뉴스, 날씨 또는 스포츠 이벤트들의 오디오 및/또는 비디오 클립들을 포함하는 음악, 음악 비디오들, 및 팟캐스트들을 포함하지만 이들로 제한되지 않는 멀티미디어 파일들을 포함하는 다수의 유형들의 미디어 요소들이 재생 큐 관리자를 통해 분산형 재생 시스템에 걸쳐 재생될 수 있다.
스케줄링된 이벤트의 발생에 응답하여 재생을 위해 하나 이상의 팟캐스트들이 선택되는 경우, 팟캐스트 선택 로직은 재생을 위한 팟캐스트의 특정 에피소드, 예컨대 팟캐스트 또는 가장 최근에 이용가능한 재생되지 않은 팟캐스트의 가장 최근의 이용가능한 에피소드를 선택할 수 있다. 이러한 선택은 명시적 사용자 선호도들로부터 또는 학습된 사용자 선호도 정보에 기초하여 결정될 수 있다. 선택은 또한 현재 날짜에 대한 이용가능한 재생되지 않은 팟캐스트들의 수명에 기초하여 수행될 수 있다. 일 실시예에서, 팟캐스트 피드는 팟캐스트 피드가 시리얼 팟캐스트 또는 뉴스-스타일 팟캐스트와 연관되는지 여부를 나타내는 메타데이터를 포함한다. 가장 먼저 재생되지 않은 에피소드를 재생할지 또는 가장 최근의 에피소드를 재생할지 여부는 그러한 메타데이터에 적어도 부분적으로 기초하여 결정될 수 있다.
일 실시예에서, 예를 들어, 웨이크 알람을 설정할 때, 뉴스 프로그램 또는 뉴스 채널이 재생을 위해 선택될 수 있다. 사용자는 웨이크 알람에 응답하여 재생을 위한 특정 프로그램 또는 채널을 선택할 수 있다. 대안적으로, 사용자는 선택된 사용자 선호도들에 기초하여 재생할 뉴스 프로그램 또는 뉴스 채널을 선택할 수 있는 재생 큐 관리자(714)와 연관된 일반 뉴스 카테고리 및 로직을 선택할 수 있다. 일 실시예에서, 뉴스 프로그램 선호도는 사용자 디바이스 상의 뉴스 프로그램에서 선택된 뉴스 토픽 선호도들에 기초하여 결정될 수 있다.
일 실시예에서, 기존의 재생 큐가 상이한 재생 큐의 재생을 야기하는 스케줄링된 이벤트 동안 효과가 있는 경우, 재생 큐 관리자(714)는 사용자에 의해 선택된 선호도들에 기초하여 큐들을 관리할 수 있다. 하나의 경우에서, 재생 큐 관리자(714)는 기존의 재생 큐를 새로운 재생 큐로 대체하여, 기존의 재생 큐의 큐잉된 항목들을 제거하고 이들을 새로운 재생 큐의 항목들로 대체하도록 구성될 수 있다. 그러한 경우에, 알람 또는 다른 스케줄링된 이벤트에 응답하여 재생을 위해 선택된 항목들은 이전의 큐 항목들을 대체하고 포함한다. 대안적으로, 재생 큐 관리자(714)는 스케줄링된 이벤트가 무시될 때에만 효과가 있는 과도 재생 큐를 구현하도록 구성될 수 있다. 스케줄링된 이벤트가 무시된 후, 이전의 기존 재생 큐의 재생 항목들은 활성 큐에 복구되고 이전의 기존 큐의 재생이 재개될 수 있다. 스케줄링된 이벤트는 컴퓨팅 디바이스(700) 상의 사용자 인터페이스, 또는 컴퓨팅 디바이스(700)에 접속된 사용자 디바이스의 사용자 인터페이스를 통해, 가상 어시스턴트로의 음성 또는 텍스트 커맨드를 통해 무시될 수 있다.
일 실시예에서, 재생 라우팅 관리자(716)는 재생 큐를 재생하기 위해 사용할 분산형 재생 시스템 내의 재생 디바이스를 선택하는 데 사용될 수 있다. 분산형 재생 시스템 내의 재생 디바이스들의 수에 따라, 다수의 상이한 큐들이 다수의 상이한 재생 디바이스들 상에서 활성일 수 있거나, 분산형 재생 시스템 내의 다수의 상이한 재생 디바이스들이 그룹화될 수 있다. 그룹화된 재생 디바이스들은 공통 재생 큐를 공유하고 동시에 동일한 미디어를 재생할 수 있다. 스마트 재생 디바이스가 프로비저닝되는 경우, 재생 디바이스는 하나 이상의 사용자들 및/또는 하나 이상의 사용자 계정들과 연관될 수 있다. 스마트 재생 디바이스는 또한 위치 및/또는 디바이스 유형을 할당받을 수 있다. 일 실시예에서, 다수의 사용자 디바이스들이 주거 내의 하나 이상의 스마트 재생 디바이스들을 통해 미디어를 재생하는 주거용 분산형 재생 네트워크가 구성될 수 있다. 스마트 재생 디바이스가 주거 네트워크에 추가될 때, 각각의 재생 디바이스의 방 또는 위치가 특정될 수 있다. 또한, 스마트 재생 디바이스가 단일 사용자와 연관되는지 여부 또는 스마트 재생 디바이스가 다수의 사용자들과 연관된 커뮤널 디바이스인지 여부를 나타내는 소유권이 각각의 스마트 재생 디바이스에 대해 또한 특정될 수 있다.
본 개시내용은 본 기술에서 생체인식 데이터를 포함하는 개인 정보 데이터가 사용자들에게 이득을 주기 위해 사용될 수 있음을 인식한다. 예를 들어, 생체인식 인증 데이터의 사용은 패스워드들의 사용 없이 디바이스 특징부들에의 편리한 액세스를 위해 사용될 수 있다. 다른 예들에서, 사용자 생체인식 데이터를 수집하여 사용자들의 건강 또는 피트니스 레벨에 관한 피드백을 사용자들에게 제공한다. 추가로, 사용자에 이득을 주는 생체인식 데이터를 포함하는 개인 정보 데이터에 대한 다른 사용들이 또한 본 개시내용에 의해 고려된다.
본 개시내용은 그러한 개인 정보 데이터의 수집, 분석, 공개, 전달, 저장, 또는 다른 이용을 책임지고 있는 엔티티들이 잘 확립된 프라이버시 정책들 및/또는 프라이버시 관례들을 준수할 것이라는 것을 추가로 고려한다. 특히, 이러한 엔티티들은, 대체로 개인 정보 데이터를 사적이고 안전하게 유지시키기 위한 산업적 또는 행정적 요건들을 충족시키거나 넘어서는 것으로 인식되는 프라이버시 정책들 및 관례들을 구현하고 지속적으로 사용해야 한다. 예를 들어, 사용자들로부터의 개인 정보는 엔티티의 적법하며 적정한 사용들을 위해 수집되어야 하고, 이들 적법한 사용들을 벗어나서 공유되거나 판매되지 않아야 한다. 또한, 그러한 수집은 단지 사용자들의 고지에 입각한 동의를 수신한 후에만 발생해야 한다. 부가적으로, 그러한 엔티티들은 그러한 개인 정보 데이터에 대한 액세스를 보호하고 안전하게 하며 개인 정보 데이터에 대한 액세스를 갖는 다른 사람들이 그들의 프라이버시 정책들 및 절차들을 고수한다는 것을 보장하기 위한 임의의 필요한 단계들을 취할 것이다. 게다가, 이러한 엔티티들은 널리 인정된 프라이버시 정책들 및 관례들에 대한 그들의 고수를 증명하기 위해 제3자들에 의해 그들 자신들이 평가를 받을 수 있다.
전술한 것에도 불구하고, 본 발명은 또한 사용자가 개인 정보 데이터의 사용, 또는 그에 대한 액세스를 선택적으로 차단하는 실시예들을 고려한다. 즉, 본 발명은 그러한 개인 정보 데이터에 대한 액세스를 방지하거나 차단하기 위해 하드웨어 및/또는 소프트웨어 요소들이 제공될 수 있다는 것을 고려한다. 예를 들어, 광고 전달 서비스들의 경우에, 본 기술은 사용자들이 서비스를 위한 등록 중에 개인 정보 데이터의 수집 시의 참여의 "동의함(opt in)" 또는 "동의하지 않음(opt out)"을 선택하는 것을 허용하도록 구성될 수 있다. 다른 예에서, 사용자들은 타깃 콘텐츠 전달 서비스들을 위한 위치 정보를 제공하지 않도록 선택할 수 있다. 또 다른 예에서, 사용자들은 정확한 위치 정보를 제공하지 않지만 위치 구역 정보의 전달을 허용하도록 선택할 수 있다.
본 명세서에 기술된 실시예들은, 호출 프로그램 코드가 하나 이상의 프로그래밍 인터페이스들을 통해 호출되는 다른 프로그램 코드와 상호작용하는 환경에서의 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)들을 포함한다. 다양한 종류의 파라미터들을 추가로 포함할 수 있는 다양한 함수 호출들, 메시지들 또는 다른 유형들의 인보케이션(invocation)들은 API들을 통해 호출 프로그램과 호출되는 코드 사이에서 전달될 수 있다. 또한, API는, API에서 정의되고, 호출된 프로그램 코드에서 구현되는 데이터 유형들 또는 클래스들을 사용하는 능력을 호출 프로그램 코드에 제공할 수 있다.
API는 API 호출 컴포넌트의 개발자(제3자의 개발자일 수 있음)가 API 구현 컴포넌트에 의해 제공되는 규정된 특징부에 영향을 주게 한다. 하나의 API 호출 컴포넌트가 있을 수 있거나, 하나 초과의 그러한 컴포넌트가 있을 수 있다. API는 애플리케이션으로부터의 서비스 요청을 지원하기 위하여 컴퓨터 시스템 또는 프로그램 라이브러리가 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(OS)는 다수의 API들을 가져서 OS 상에서 실행되는 애플리케이션이 그 API들 중 하나 이상을 호출하게 할 수 있으며, (프로그램 라이브러리와 같은) 서비스는 다수의 API들을 가져서 그 서비스를 사용하는 애플리케이션이 그 API들 중 하나 이상을 호출하게 할 수 있다. API는 애플리케이션이 구축될 때 인터프리팅(interpreting)되거나 컴파일링(compiling)될 수 있는 프로그래밍 언어에 의해 규정될 수 있다.
일부 실시예들에서, API 구현 컴포넌트는 하나 초과의 API를 제공할 수 있고, API는 각각 API 구현 컴포넌트에 의해 구현되는 기능의 상이한 측면들에 액세스하는 상이한 측면들의 상이한 뷰 또는 상이한 측면들을 갖는 상이한 뷰를 제공한다. 예를 들어, API 구현 컴포넌트 중 하나의 API는 제1 기능 세트를 제공할 수 있고 제3자의 개발자에게 노출될 수 있으며, API 구현 컴포넌트 중 다른 API는 숨겨질(노출되지 않을) 수 있고 제1 기능 세트의 하위세트(subset)를 제공하고 또한 제1 기능 세트에는 없는 테스팅 및 디버깅 기능과 같은 다른 기능 세트를 제공할 수 있다. 다른 실시예들에서, API 구현 컴포넌트 자체는 기본 API를 통해 하나 이상의 다른 컴포넌트를 호출할 수 있고, 따라서 API 호출 컴포넌트와 API 구현 컴포넌트 둘 모두가 될 수 있다.
API는 API 호출 컴포넌트들이 API 구현 컴포넌트의 규정된 특징부들에 액세스하여 이를 사용할 때 API 호출 컴포넌트가 사용하는 언어와 파라미터를 정의한다. 예를 들면, API 호출 컴포넌트는 API에 의해 노출된 하나 이상의 API 호출들 또는 (예를 들면, 기능 또는 메소드 호출들에 의하여 구현된) 인보케이션(invocation)들을 통해 API 구현 컴포넌트의 특정 특징부들에 액세스하고, API 호출들 또는 인보케이션들을 통해 파라미터들을 사용하여 데이터 및 제어 정보를 전달한다. API 구현 컴포넌트는 API 호출 컴포넌트로부터의 API 호출에 응답하여 API를 통해 값을 반환할 수 있다. API는 API 호출의 신택스(syntax)와 결과(예컨대, API 호출을 어떻게 작동시키는지 그리고 API 호출이 무엇을 하는지)를 정의하지만, API는 API 호출이 API 호출에 의하여 규정된 기능을 어떻게 성취하는지 드러내지 않을 수 있다. 호출(API 호출 컴포넌트)과 API 구현 컴포넌트 사이에서 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통하여 다양한 API 호출들이 전달된다. API 호출들의 전달은 함수 호출 또는 메시지에 대한 발행, 개시, 작동, 호출, 수신, 반환 또는 응답을 포함하는데, 다시 말하면, 전달은 API 호출 컴포넌트 또는 API 구현 컴포넌트 중 어느 하나에 의한 작용들을 설명할 수 있다. API의 함수 호출들 또는 다른 인보케이션들은 파라미터 리스트 또는 다른 구조를 통하여 하나 이상의 파라미터들을 주고 받을 수 있다. 파라미터는 상수, 키(key), 데이터 구조, 객체, 객체 클래스, 변수, 데이터 유형, 포인터, 배열, 리스트 또는 함수 또는 메소드에 대한 포인터, 또는 API를 통해 전달될 데이터 또는 다른 항목을 참조하기 위한 다른 방법일 수 있다.
또한, 데이터 유형 또는 클래스가 API에 의하여 제공되고 API 구현 컴포넌트에 의하여 구현될 수 있다. 따라서, API 호출 컴포넌트는 API에서 제공되는 정의들을 사용함으로써 그러한 유형들 또는 클래스들의 변수들을 선언하거나, 이들에 대한 포인터들을 사용하거나, 이들의 상수 값을 사용 또는 인스턴스화할(instantiate) 수 있다.
일반적으로, API를 사용하여 API 구현 컴포넌트에 의하여 제공되는 서비스 또는 데이터에 액세스하거나 API 구현 컴포넌트에 의하여 제공되는 동작 또는 연산의 수행을 개시할 수 있다. 예로서, API 구현 컴포넌트 및 API 호출 컴포넌트는 각각 운영 체제, 라이브러리, 디바이스 구동기, API, 애플리케이션 프로그램, 또는 다른 모듈 중에서 임의의 것일 수 있다(API 구현 컴포넌트 및 API 호출 컴포넌트가 서로 동일하거나 상이한 유형의 모듈일 수 있음이 이해되어야 한다). API 구현 컴포넌트들은 일부 경우에 적어도 부분적으로 펌웨어, 마이크로코드 또는 다른 하드웨어 로직으로 실시될 수 있다. 일부 실시예들에서, API는 클라이언트 프로그램이 소프트웨어 개발 도구(Software Development Kit; SDK) 라이브러리에 의해 제공된 서비스들을 사용하도록 허용할 수 있다. 다른 실시예들에서, 애플리케이션 또는 다른 클라이언트 프로그램은 애플리케이션 프레임워크에 의해 제공되는 API를 사용할 수 있다. 이 실시예들에서, 애플리케이션 또는 클라이언트 프로그램은 호출들을 SDK에 의해 제공되고 API에 의해 제공되는 함수들 또는 메소드들에 통합시킬 수 있거나 SDK에서 정의되고 API에 의해 제공되는 데이터 유형들 또는 객체들을 사용할 수 있다. 애플리케이션 프레임워크는 이 실시예들에서, 프레임워크에 의해 정의된 다양한 이벤트들에 응답하는 프로그램에 대한 메인 이벤트 루프(main event loop)를 제공할 수 있다. API는 애플리케이션이 애플리케이션 프레임워크를 사용하여 이벤트들 및 이벤트들에 대한 응답들을 명시하게 할 수 있다. 일부 구현들에서, API 호출은 입력 능력 및 상태, 출력 능력 및 상태, 처리 능력, 전원 상태, 저장 용량 및 상태, 통신 능력 등과 같은 측면들에 관계되는 것들을 비롯한 하드웨어 디바이스의 능력 또는 상태를 애플리케이션에 보고할 수 있고, API는 펌웨어, 마이크로코드, 또는 하드웨어 컴포넌트 상에서 부분적으로 실행되는 다른 저레벨 로직에 의하여 부분적으로 구현될 수 있다.
API 호출 컴포넌트는 로컬 컴포넌트(즉, API 구현 컴포넌트와 동일한 데이터 프로세싱 시스템 상의) 또는 네트워크에 걸쳐 API를 통해 API 구현 컴포넌트와 통신하는 원격 컴포넌트(즉, API 구현 컴포넌트와 상이한 데이터 프로세싱 시스템 상의)일 수 있다. API 구현 컴포넌트가 또한 API 호출 컴포넌트로서의 역할을 할 수도 있고(즉, 그것은 상이한 API 구현 컴포넌트에 의해 노출된 API에 API 호출을 행할 수 있다), 상이한 API 호출 컴포넌트에 노출되는 API를 구현함으로써 API 호출 컴포넌트가 또한 API 구현 컴포넌트로서의 역할을 할 수 있음이 이해되어야 한다.
API는 상이한 프로그래밍 언어들로 기록된 다수의 API 호출 컴포넌트들이 API 구현 컴포넌트와 통신하도록 허용할 수 있다(따라서, API는 호출들을 해석하기 위한 특징부들을 포함할 수 있고 API 구현 컴포넌트와 API 호출 컴포넌트 사이에 리턴한다); 그러나, API는 특정 프로그래밍 언어에 의해 구현될 수 있다. 일 실시예에서, API 호출 컴포넌트는 OS 공급자로부터의 API 세트, 플러그인 공급자로부터의 다른 API 세트, 다른 API 세트의 다른 공급자(예컨대, 소프트웨어 라이브러리의 공급자) 또는 생성자로부터의 다른 API 세트와 같은, 상이한 공급자들로부터의 API들을 호출할 수 있다.
도 8은 본 발명의 일부 실시예들에서 사용될 수 있는 예시적인 API 아키텍처를 예시하는 블록도이다. 도 8에 도시된 바와 같이, API 아키텍처(800)는 API(820)를 구현하는 API-구현 컴포넌트(810)(예컨대, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)를 포함한다. API(820)는 하나 이상의 함수, 메소드, 클래스, 객체, 프로토콜, 데이터 구조, 포맷, 및/또는 API 호출 컴포넌트(830)에 의해 사용될 수 있는 API 구현 컴포넌트의 다른 특징부들을 규정한다. API(820)는 API 구현 컴포넌트 내의 함수가 어떻게 API 호출 컴포넌트로부터 파라미터들을 받는지, 그리고 이 함수가 어떻게 API 호출 컴포넌트로 결과를 반환하는지를 규정하는 적어도 하나의 호출 규약(calling convention)을 규정할 수 있다. API 호출 컴포넌트(830)(예컨대, 운영 체제, 라이브러리, 디바이스 구동기, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)는 API(820)를 통해 API 호출을 하여 API(820)에 의해 규정되는 API 구현 컴포넌트(810)의 특징부들에 액세스하여 이를 사용한다. API 구현 컴포넌트(810)는 API 호출에 응답하여 API(820)를 통하여 API 호출 컴포넌트(830)로 값을 반환할 수 있다.
API 구현 컴포넌트(810)가 API(820)를 통해 특정되지 않고 API 호출 컴포넌트(830)가 이용가능하지 않은 추가 함수, 메소드, 클래스, 데이터 구조, 및/또는 다른 특징을 포함할 수 있음이 인식될 것이다. API 호출 컴포넌트(830)가 API 구현 컴포넌트(810)와 동일한 시스템 상에 있을 수 있거나, 원격으로 위치되어 네트워크를 통해 API(820)를 이용하여 API 구현 컴포넌트(810)에 액세스할 수 있다는 것을 이해해야 한다. 도 8은 API(820)와 상호작용하는 단일 API-호출 컴포넌트(830)를 도시하지만, API-호출 컴포넌트(830)와는 상이한 언어(또는 동일한 언어)로 작성될 수 있는 다른 API-호출 컴포넌트들이 API(820)를 사용할 수 있다는 것을 이해할 것이다.
API 구현 컴포넌트(810), API(820) 및 API 호출 컴포넌트(830)는 기계(예컨대, 컴퓨터 또는 다른 데이터 프로세싱 시스템)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함하는 기계 판독가능한 매체에 저장될 수 있다. 예를 들어, 기계-판독가능한 매체는 자기 디스크, 광 디스크, RAM(randomaccess memory), ROM(read only memory), 플래시 메모리 디바이스 등을 포함한다.
도 9a 및 도 9b는 실시예들에 따른 예시적인 API 소프트웨어 스택들(900, 910)의 블록도들이다. 도 9a는 애플리케이션들(902)이 서비스 API를 사용하여 서비스 A 또는 서비스 B를 호출하고 OS API를 사용하여 운영 체제(904)를 호출할 수 있는 예시적인 API 소프트웨어 스택(900)을 도시한다. 추가적으로, 서비스 A 및 서비스 B는 몇몇 OS API들을 사용하여 운영 체제(904)를 호출할 수 있다.
도 9b는 애플리케이션 1, 애플리케이션 2, 서비스 1, 서비스 2, 및 운영 체제(904)를 포함하는 예시적인 API 소프트웨어 스택(910)을 도시한다. 예시된 바와 같이, 서비스 2는 2개의 API를 갖는데, 그 중 하나(서비스 2 API 1)는 애플리케이션 1로부터 호출을 수신하고 그것에 값을 반환하며, 다른 것(서비스 2 API 2)은 애플리케이션 2로부터 호출을 수신하고 그것에 값을 반환한다. 서비스 1(예를 들어, 소프트웨어 라이브러리일 수 있음)은 OS API 1로의 호출을 행하고 그로부터 반환 값을 수신하며, 서비스 2(예를 들어, 소프트웨어 라이브러리일 수 있음)는 OS API 1 및 OS API 2 둘 모두로의 호출을 행하고 그들로부터 반환 값을 수신한다. 애플리케이션 2는 OS API 2로의 호출을 행하고 그로부터 반환 값을 수신한다.
추가적 예시적인 컴퓨팅 디바이스들
도 10은 일 실시예에 따른 모바일 또는 임베디드 디바이스에 대한 디바이스 아키텍처(1000)의 블록도이다. 디바이스 아키텍처(1000)는 메모리 인터페이스(1002), 하나 이상의 데이터 프로세서들, 이미지 프로세서들 및/또는 그래픽 프로세싱 유닛들을 포함하는 프로세싱 시스템(1004), 및 주변기기들 인터페이스(1006)를 포함한다. 다양한 컴포넌트들은 하나 이상의 통신 버스 또는 신호 라인에 의해 결합될 수 있다. 다양한 컴포넌트들은 별개의 논리 컴포넌트들 또는 디바이스들일 수 있거나, 시스템 온 어 칩 집적 회로(system on a chip integrated circuit)에서와 같이 하나 이상의 집적 회로들 내에 통합될 수 있다.
메모리 인터페이스(1002)는 메모리(1050)에 결합될 수 있는데, 메모리(1050)는 플래시 메모리(예컨대, NAND 플래시, NOR 플래시 등)와 같은 그러나 이로 제한되지 않는, 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM) 및/또는 비휘발성 메모리와 같은 고속 랜덤 액세스 메모리를 포함할 수 있다.
센서들, 디바이스들 및 서브시스템들은 다수의 기능성들을 용이하게 하기 위해 주변기기들 인터페이스(1006)에 결합될 수 있다. 예를 들어, 모션 센서(1010), 광 센서(1012) 및 근접 센서(1014)는 모바일 디바이스 기능성을 용이하게 하기 위하여 주변기기 인터페이스(1006)에 결합될 수 있다. 지문 인식을 위한 지문 스캐너 또는 얼굴 인식을 위한 이미지 센서와 같은 하나 이상의 생체인식 센서(들)(1015)가 또한 존재할 수 있다. 다른 센서들(1016)이 또한 위치확인 시스템(예를 들어, GPS 수신기), 온도 센서, 또는 다른 감지 디바이스와 같은 주변기기 인터페이스(1006)와 접속되어 관련 기능성들을 용이하게 할 수 있다. 카메라 서브시스템(1020) 및 광학 센서(1022), 예컨대, CCD(charged coupled device) 또는 CMOS(complementary metal-oxide semiconductor) 광학 센서는, 사진들 및 비디오 클립들을 기록하는 것과 같은, 카메라 기능들을 용이하게 하기 위해 이용될 수 있다.
통신 기능들은 라디오 주파수 수신기들과 송신기들 및/또는 광학(예컨대, 적외선) 수신기들과 송신기들을 포함할 수 있는, 하나 이상의 무선 통신 서브시스템(1024)들을 통하여 용이하게 될 수 있다. 통신 서브-시스템(1024)의 구체적인 설계 및 구현은 모바일 디바이스가 동작하도록 의도되어 있는 통신 네트워크(들)에 의존할 수 있다. 예를 들어, 예시된 디바이스 아키텍처(1000)를 포함하는 모바일 디바이스는 GSM 네트워크, CDMA 네트워크, LTE 네트워크, Wi-Fi 네트워크, 또는 임의의 다른 무선 네트워크를 통해 동작하도록 설계된 무선 통신 서브-시스템들(1024)을 포함할 수 있다. 특히, 무선 통신 서브시스템들(1024)은 미디어 재생 애플리케이션이 원격 미디어 서버로부터의 리소스들 또는 원격 캘린더 또는 이벤트 서버로부터 스케줄링된 이벤트들을 검색할 수 있는 통신 메커니즘을 제공할 수 있다.
오디오 서브-시스템(1026)은 음성 인식, 음성 복제, 디지털 녹음, 및 전화통신 기능과 같은 음성 지원 기능들을 용이하게 하기 위해 스피커(1028) 및 마이크로폰(1030)에 결합될 수 있다. 본 명세서에 기술된 스마트 미디어 디바이스들에서, 오디오 서브시스템(1026)은 가상 서라운드 사운드를 위한 지지를 포함하는 고품질 오디오 시스템일 수 있다.
I/O 서브-시스템(1040)은 터치 스크린 제어기(1042) 및/또는 다른 입력 제어기(들)(1045)를 포함할 수 있다. 디스플레이 디바이스를 포함하는 컴퓨팅 디바이스들의 경우, 터치 스크린 제어기(1042)는 터치 감응형 디스플레이 시스템(1046)(예컨대, 터치 스크린)에 결합될 수 있다. 터치 감응형 디스플레이 시스템(1046)과 터치 스크린 제어기(1042)는, 예를 들어, 용량성, 저항성, 적외선, 및 표면 탄성파(surface acoustic wave) 기술들 뿐만 아니라, 터치 감응형 디스플레이 시스템(1046)과의 하나 이상의 접촉점들을 결정하기 위한 다른 근접 센서 어레이들 또는 다른 요소들을 포함하지만 이들로 제한되지 않는 복수의 터치 및 압력 감응성 기술들 중 임의의 기술을 사용하여 접촉 및 이동 및/또는 압력을 검출할 수 있다. 터치 감응형 디스플레이 시스템(1046)에 대한 디스플레이 출력은 디스플레이 제어기(1043)에 의해 생성될 수 있다. 하나의 실시예에서, 디스플레이 제어기(1043)는 터치 감응형 디스플레이 시스템(1046)에 가변 프레임 레이트로 프레임 데이터를 제공할 수 있다.
하나의 실시예에서, 모션 센서(1010), 광 센서(1012), 근접 센서(1014), 또는 다른 센서들(1016) 중 하나 이상으로부터 수신된 데이터를 모니터링, 제어, 및/또는 프로세싱하도록 센서 제어기(1044)가 포함된다. 센서 제어기(1044)는 센서들로부터의 센서 데이터의 분석에 의해 하나 이상의 모션 이벤트들 또는 활동들의 발생을 결정하도록 센서 데이터를 해석하기 위한 로직을 포함할 수 있다.
하나의 실시예에서, I/O 서브-시스템(1040)은 하나 이상의 버튼들, 로커 스위치(rocker switch)들, 지동륜(thumb-wheel)들, 적외선 포트, USB 포트, 및/또는 스타일러스와 같은 포인터 디바이스, 또는 스피커(1028) 및/또는 마이크로폰(1030)의 볼륨 제어를 위한 업/다운 버튼과 같은 제어 디바이스들(1048)에 결합될 수 있는 다른 입력 제어기(들)(1045)를 포함한다.
하나의 실시예에서, 메모리 인터페이스(1002)에 결합된 메모리(1050)는 휴대용 운영 체제 인터페이스(POSIX) 호환 및 비호환 운영 체제 또는 임베디드 운영 체제를 포함하는 운영 체제(1052)에 대한 명령어들을 저장할 수 있다. 운영 체제(1052)는 기본 시스템 서비스들을 취급하고 하드웨어 의존형 태스크들을 수행하기 위한 명령어들을 포함할 수 있다. 일부 구현예들에서, 운영 체제(1052)는 커널일 수 있다.
메모리(1050)는 또한 예를 들어, 원격 웹 서버들로부터 웹 리소스들을 검색하기 위해 하나 이상의 추가 디바이스들, 하나 이상의 컴퓨터들 및/또는 하나 이상의 서버들과의 통신을 용이하게 하기 위한 통신 명령어들(1054)을 저장할 수 있다. 메모리(1050)는 또한 그래픽 사용자 인터페이스 프로세싱을 용이하게 하기 위한 그래픽 사용자 인터페이스 명령어들을 포함한 사용자 인터페이스 명령어들(1056)을 포함할 수 있다.
추가적으로, 메모리(1050)는 센서 관련 프로세싱 및 기능들을 용이하게 하기 위한 센서 프로세싱 명령어들(1058); 전화 관련 프로세스들 및 기능들을 용이하게 하기 위한 전화통신 명령어들(1060); 전자 메시징 관련 프로세스들 및 기능들을 용이하게 하기 위한 메시징 명령어들(1062); 웹 브라우징 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 브라우저 명령어들(1064); 미디어 프로세싱 관련 프로세스들 및 기능들을 용이하게 하기 위한 미디어 프로세싱 명령어들(1066); 위치 기반 기능성을 용이하게 하기 위한 GPS 및/또는 내비게이션 명령어들(1068) 및 Wi-Fi 기반 위치 명령어들을 포함한 위치 서비스 명령어들; 카메라 관련 프로세스들 및 기능들을 용이하게 하는 카메라 명령어들(1070); 및/또는 다른 프로세스들 및 기능들, 예를 들어, 보안 프로세스들 및 기능들, 및 시스템들에 관련된 프로세스들 및 기능들을 용이하게 하기 위한 다른 소프트웨어 명령어들(1072)을 저장할 수 있다. 메모리(1050)는 또한 웹 비디오 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 비디오 명령어들과 같은 기타 소프트웨어 명령어들; 및/또는 웹 쇼핑 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 쇼핑 명령어들을 저장할 수 있다. 일부 구현들에서, 미디어 프로세싱 명령어들(1066)은 오디오 프로세싱 관련 프로세스들 및 기능들과 비디오 프로세싱 관련 프로세스들 및 기능들을, 제각기, 용이하게 하기 위한 오디오 프로세싱 명령어들과 비디오 프로세싱 명령어들로 나뉜다. IMEI(International Mobile Equipment Identity)(1074)와 같은 모바일 장비 식별자 또는 유사한 하드웨어 식별자가 또한 메모리(1050)에 저장될 수 있다.
위에 식별된 명령어들 및 애플리케이션들 각각은 위에서 설명된 하나 이상의 기능을 수행하기 위한 명령어들의 세트에 대응할 수 있다. 이러한 명령어들은 별개의 소프트웨어 프로그램들, 절차들, 또는 모듈들로서 구현될 필요는 없다. 메모리(1050)는 부가 명령어들 또는 더 적은 명령어들을 포함할 수 있다. 또한, 다양한 기능들은, 하나 이상의 신호 프로세싱 및/또는 ASIC(application specific integrated circuit)들을 포함하여, 하드웨어로 그리고/또는 소프트웨어로 구현될 수 있다.
도 11은 컴퓨팅 시스템(1100)의 하나의 실시예의 블록도이다. 도 11에 도시된 컴퓨팅 시스템은, 예를 들어, 데스크톱 컴퓨터 시스템, 랩톱 컴퓨터 시스템, 태블릿 컴퓨터 시스템, 셀룰러 전화기, 셀룰러-가능 PDA를 포함하는 개인 휴대 정보 단말기(PDA), 셋톱 박스, 엔터테인먼트 시스템 또는 다른 소비자 전자 디바이스들, 스마트 기기 디바이스들 또는 스마트 미디어 재생 디바이스의 하나 이상의 구현들을 포함하는 (유선 또는 무선 중 어느 하나인) 컴퓨팅 시스템들의 범위를 나타내도록 의도된다. 대안적인 컴퓨팅 시스템들은 더 많은, 더 적은 그리고/또는 상이한 컴포넌트들을 포함할 수 있다. 도 11의 컴퓨팅 시스템은 컴퓨팅 디바이스 및/또는 컴퓨팅 디바이스가 접속할 수 있는 서버 디바이스를 제공하는 데 사용될 수 있다.
컴퓨팅 시스템(1100)은, 정보를 전달하기 위한 버스(1135) 또는 다른 통신 디바이스, 및 버스(1135)에 결합되고 정보를 프로세싱할 수 있는 프로세서(들)(1110)를 포함한다. 컴퓨팅 시스템(1100)이 단일 프로세서를 갖는 것으로 예시되지만, 컴퓨팅 시스템(1100)은 다수의 프로세서들 및/또는 코프로세서들을 포함할 수 있다. 컴퓨팅 시스템(1100)은 추가로 메모리(1120), 예컨대 랜덤 액세스 메모리(RAM) 또는 버스(1135)에 결합된 다른 동적 저장 디바이스를 포함할 수 있다. 메모리(1120)는 프로세서(들)(1110)에 의해 실행될 수 있는 정보 및 명령어들을 저장할 수 있다. 메모리(1120)는 또한, 프로세서(들)(1110)에 의한 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는 데 사용될 수 있다.
컴퓨팅 시스템(1100)은 또한, 버스(1135)에 결합되고, 프로세서(들)(1110)에 대한 정보 및 명령어들을 저장할 수 있는 판독 전용 메모리(ROM)(1130) 및/또는 다른 정적 저장 디바이스(1140)를 포함할 수 있다. 데이터 저장 디바이스(1140)는 플래시 메모리 디바이스, 자기 디스크, 또는 광학 디스크와 같은 다양한 저장 디바이스들일 수 있거나 그를 포함할 수 있고, 버스(1135)를 통해 또는 원격 주변기기 인터페이스를 통해 컴퓨팅 시스템(1100)에 결합될 수 있다.
컴퓨팅 시스템(1100)은 또한 버스(1135)를 통해 디스플레이 디바이스(1150)에 결합되어 사용자에게 정보를 디스플레이할 수 있다. 컴퓨팅 시스템(1100)은 또한, 정보 및 커맨드 선택들을 프로세서(들)(1110)에 전달하도록 버스(1135)에 결합될 수 있고, 영숫자 및 다른 키들을 포함하는 영숫자 입력 디바이스(1160)를 포함할 수 있다. 다른 유형의 사용자 입력 디바이스는 방향 정보 및 커맨드 선택들을 프로세서(들)(1110)에 통신하고 디스플레이(1150) 상에서의 커서 움직임을 제어하는 터치패드, 마우스, 트랙볼, 또는 커서 방향 키들과 같은 커서 제어(1170) 디바이스를 포함한다. 컴퓨팅 시스템(1100)은 또한 하나 이상의 네트워크 인터페이스들(1180)을 통해 통신가능하게 결합되는 원격 디바이스로부터 사용자 입력을 수신할 수 있다.
컴퓨팅 시스템(1100)은 로컬 영역 네트워크와 같은 네트워크로의 액세스를 제공하기 위한 하나 이상의 네트워크 인터페이스(들)(1180)를 추가로 포함할 수 있다. 네트워크 인터페이스(들)(1180)는, 예를 들어, 하나 이상의 안테나(들)를 나타낼 수 있는 안테나(1185)를 갖는 무선 네트워크 인터페이스를 포함할 수 있다. 컴퓨팅 시스템(1100)은 Wi-Fi, Bluetooth®근거리 통신(NFC), 및/또는 셀룰러 전화통신 인터페이스들의 조합과 같은 다수의 무선 네트워크 인터페이스들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(들)(1180)는 또한, 예를 들어, 이더넷 케이블, 동축 케이블, 광섬유 케이블, 직렬 케이블, 또는 병렬 케이블일 수 있는 네트워크 케이블(1187)을 통해 원격 디바이스들과 통신하기 위한 유선 네트워크 인터페이스를 포함할 수 있다.
일 실시예에서, 네트워크 인터페이스(들)(1180)는, 예를 들어, IEEE 802.11b 및/또는 IEEE 802.11g 표준들을 준수함으로써 로컬 영역 네트워크로의 액세스를 제공할 수 있고, 그리고/또는, 무선 네트워크 인터페이스는, 예를 들어, 블루투스 표준들을 준수함으로써 개인 영역 네트워크로의 액세스를 제공할 수 있다. 다른 무선 네트워크 인터페이스들 및/또는 프로토콜들이 또한 지원될 수 있다. 무선 LAN 표준들을 통한 통신에 추가하여 또는 그 대신, 네트워크 인터페이스(들)(1180)는, 예를 들어, 시분할 다중 액세스(TDMA) 프로토콜들, 모바일 통신들을 위한 글로벌 시스템(GSM) 프로토콜들, 코드 분할 다중 액세스(CDMA) 프로토콜들, 롱 텀 에볼루션(LTE) 프로토콜들, 및/또는 임의의 다른 유형의 무선 통신 프로토콜을 사용하여 무선 통신들을 제공할 수 있다.
컴퓨팅 시스템(1100)은 하나 이상의 에너지원들(1105) 및 하나 이상의 에너지 측정 시스템들(1145)을 더 포함할 수 있다. 에너지원들(1105)은 외부 전원에 결합된 AC/DC 어댑터, 하나 이상의 배터리들, 하나 이상의 전하 저장 디바이스들, USB 충전기, 또는 다른 에너지원을 포함할 수 있다. 에너지 측정 시스템들은 미리결정된 기간 동안 컴퓨팅 시스템(1100)에 의해 소비된 에너지를 측정할 수 있는 적어도 하나의 전압 또는 암페어수 측정 디바이스를 포함할 수 있다. 추가적으로, 예를 들어, 디스플레이 디바이스, 냉각 서브시스템, Wi-Fi 서브시스템, 또는 다른 자주 사용되거나 고에너지 소비 서브시스템에 의해 소비된 에너지를 측정하는 하나 이상의 에너지 측정 시스템들이 포함될 수 있다.
도 12는 본 명세서에 기술된 실시예들에 따른 가상 어시스턴트 시스템(1200)의 블록도를 예시한다. 예시된 가상 어시스턴트 시스템(1200)은 일 실시예의 예시이며, 본 명세서에 기술된 모든 실시예들로의 제한은 아니다. 본 명세서에 기술된 다양한 실시예에 의해 이용되는 가상 어시스턴트들은 예시된 것들보다 추가적인, 더 적은 그리고/또는 상이한 컴포넌트들 또는 특징부들을 포함할 수 있다. 가상 어시스턴트 시스템(1200)은 음성 또는 타이핑 언어와 같은 사용자 입력(1204)을 수용하고, 입력을 프로세싱하고, 사용자에게 출력(1208)을 생성하고/하거나 사용자를 대신하여 행동들을 수행(1210)할 수 있는 가상 어시스턴트(1202)를 포함한다. 가상 어시스턴트(1202)는 사용자로부터의 자연 언어 또는 제스처 입력을 보완하기 위해 콘텍스트 정보를 사용할 수 있다. 콘텍스트 정보는 사용자의 의도를 명확하게 하고 사용자의 입력의 후보 해석들의 수를 감소시키는 데 사용될 수 있다. 콘텍스트 정보는 또한 사용자가 과도한 해명 입력을 제공할 필요성을 감소시킬 수 있다. 콘텍스트는 정보 프로세싱 문제를 제한하기 위해 그리고/또는 결과를 개인화하기 위해 명시적 사용자 입력을 보완하도록 어시스턴트에 의해 사용가능한 임의의 이용가능한 정보를 포함할 수 있다. 콘텍스트는, 예를 들어, 스피치 인식, 자연 언어 프로세싱, 태스크 흐름 프로세싱, 및 다이얼로그 생성을 포함하는 다양한 프로세싱 단계들 동안 솔루션들을 제한하기 위해 사용될 수 있다.
가상 어시스턴트(1202)는 사전들, 도메인 모델들, 및/또는 태스크 모델들과 같은, 지식 및 데이터의 다수의 상이한 백그라운드 소스들 중 임의의 것을 인출할 수 있다. 현재 기술된 실시예들의 관점에서, 그러한 배경 소스들은 가상 어시스턴트(1202) 내부에 있을 수 있거나, 하나 이상의 원격 데이터베이스들로부터 수집될 수 있다. 사용자 입력(1204) 및 배경 소스들 외에도, 가상 어시스턴트(1202)는 또한, 예를 들어, 디바이스 센서 데이터(1256), 애플리케이션 선호도들 및 사용 이력(1272), 다이얼로그 이력 및 어시스턴트 메모리(1252), 개인 데이터베이스들(1258), 개인 음향 콘텍스트 데이터(1280), 현재 애플리케이션 콘텍스트(1260), 및 이벤트 콘텍스트(1206)를 포함하는 몇몇 콘텍스트 소스들부터 정보를 인출할 수 있다.
일 실시예에서, 본 명세서에 기술된 바와 같은 사용자 디바이스, 재생 디바이스, 또는 스마트 미디어 재생 디바이스와 같은 가상 어시스턴트(1202)를 실행하는 물리적 디바이스는 하나 이상의 센서 디바이스들을 갖는다. 그러한 센서들은 디바이스 센서 데이터(1256)의 형태로 콘텍스트 정보의 소스들을 제공할 수 있다. 센서 정보의 예는, 제한 없이, 사용자의 현재 위치; 사용자의 현재 위치에서의 로컬 시간; 사용자가 상호작용하는 디바이스의 위치, 배향, 및 움직임; 현재 광 레벨, 온도 및 다른 환경 측정치들; 사용 중인 마이크로폰들 및 카메라들의 속성들; 사용되는 현재 네트워크들, 및 이더넷, Wi-Fi 및 블루투스를 포함하는 접속된 네트워크들의 서명들을 포함한다. 서명들은 네트워크 액세스 포인트들의 MAC 어드레스들, 할당된 IP 어드레스들, 블루투스 이름들과 같은 디바이스 식별자들, 주파수 채널들 및 무선 네트워크들의 다른 속성들을 포함한다. 센서는 예를 들어 가속도계, 나침반, GPS 유닛, 고도 검출기, 광 센서, 온도계, 기압, 클록, 네트워크 인터페이스, 배터리 테스트 회로 등을 포함하는 임의의 유형의 것일 수 있다.
현재 애플리케이션 콘텍스트(1260)는 사용자의 현재 활동과 관련된 애플리케이션 상태 또는 유사한 소프트웨어 상태를 지칭한다. 예를 들어, 사용자는 텍스트 메시징 애플리케이션을 사용하여 특정 사람과 채팅할 수 있다. 가상 어시스턴트(1202)는 텍스트 메시징 애플리케이션의 사용자 인터페이스에 특정적이거나 그의 일부일 필요가 없다. 대신에, 가상 어시스턴트(1202)는 임의의 수의 애플리케이션들로부터 콘텍스트를 수신할 수 있으며, 이때 각각의 애플리케이션은 자신의 콘텍스트를 가상 어시스턴트(1202)에 통지한다. 가상 어시스턴트(1202)가 호출될 때 사용자가 현재 애플리케이션을 사용하고 있는 경우, 그 애플리케이션의 상태는 유용한 콘텍스트 정보를 제공할 수 있다. 예를 들어, 가상 어시스턴트(1202)가 이메일 애플리케이션 내에서 호출되는 경우, 콘텍스트 정보는 전송자 정보, 수신자 정보, 전송된 날짜 및/또는 시간, 대상, 이메일 콘텐츠로부터 추출된 데이터, 메일함 또는 폴더 이름 등을 포함할 수 있다.
일 실시예에서, 사용자의 애플리케이션 선호도들 및 사용 이력(1272)을 설명하는 정보는 다양한 애플리케이션들에 대한 선호도 및 설정들뿐만 아니라, 그러한 애플리케이션들과 연관된 사용 이력을 포함한다. 애플리케이션 선호도들 및 사용 이력(1272)은 가상 어시스턴트(1202)의 사용자의 의도 또는 다른 기능들을 해석하고/하거나 조작하기 위한 콘텍스트로서 사용된다. 그러한 애플리케이션 선호도들 및 사용 이력(1272)의 예는 제한 없이, 단축키들, 즐겨찾기, 북마크들, 친구 리스트들, 또는 사람들, 회사들, 어드레스들, 전화 번호들, 장소들, 웹사이트들, 이메일 메시지들, 또는 임의의 다른 참조들에 관한 사용자 데이터의 임의의 다른 컬렉션들; 디바이스에서 행해진 최근의 통화들; 대화들에 대한 당사자들을 포함하는 최근의 텍스트 메시지 대화들; 지도들 또는 방향들에 대한 최근 요청들; 최근의 웹 검색들 및 URL들; 주식 애플리케이션에 나열된 주식들; 재생된 최근의 노래들 또는 비디오 또는 다른 미디어; 경고 애플리케이션들에 설정된 알람들의 이름들; 디바이스 상의 애플리케이션들 또는 다른 디지털 객체들의 이름들; 및 사용자의 선호 언어 또는 사용자의 위치에서 사용 중인 언어를 포함한다.
콘텍스트 데이터의 다른 소스는, 예를 들어 이름들 및 전화번호들을 포함하는 주소록과 같은, 전화기와 같은 디바이스 상의 사용자의 개인 데이터베이스(1258)이다. 일 실시예에서, 개인 데이터베이스들(1258)로부터 획득된 사용자의 개인 정보는 가상 어시스턴트(1202)의 사용자의 의도 또는 다른 기능들을 해석하고/하거나 조작하기 위한 콘텍스트로서 사용된다. 예를 들어, 사용자의 연락처 데이터베이스 내의 데이터는 사용자가 단지 첫 이름만으로 누군가를 참조했을 때 사용자의 커맨드를 해석하는 데 있어서의 불명료성을 감소시키는 데 사용될 수 있다. 개인 데이터베이스들(1258)로부터 획득될 수 있는 콘텍스트 정보의 예들은, 제한 없이, 사람들, 회사들, 조직들, 장소들, 웹 사이트들 및 사용자가 참조할 수 있는 다른 엔티티들에 대한 사용자의 연락처 데이터베이스(주소록) - 이름들, 전화 번호들, 물리적 어드레스들, 네트워크 어드레스들, 계정 식별자들, 중요한 날짜들을 포함함 -; 사용자 자신의 이름들, 선호되는 발음들, 어드레스들, 전화 번호들 등; 사용자의 명명된 관계들, 예를 들어, 어머니, 아버지, 여동생, 보스 등; 캘린더 이벤트들, 특수 날들의 이름들, 또는 사용자가 참조할 수 있는 임의의 다른 명명된 엔트리들을 포함하는 사용자의 캘린더 데이터; 사용자가 참조할 수 있는 해야 할 것, 기억할 것 또는 얻은 것의 리스트들을 포함하는 사용자의 리마인더들 또는 태스크; 사용자가 참조할 수 있는 노래들의 이름, 장르, 재생목록들, 및 사용자의 음악 라이브러리와 연관된 다른 데이터; 사용자의 미디어 라이브러리 내의 사진들 또는 비디오들 또는 다른 미디어 상의 사람, 장소들, 카테고리들, 태그들, 라벨들, 또는 다른 기호 이름들; 사용자의 개인 라이브러리 내의 책 또는 다른 문헌에서의 제목들, 저자들, 장르, 또는 다른 기호 이름들을 포함한다.
콘텍스트 데이터의 다른 소스는 가상 어시스턴트(1202)와의 사용자 다이얼로그 이력이다. 그러한 이력은, 예를 들어, 도메인, 사람들, 장소들 등에 대한 참조들을 포함할 수 있다. 예를 들어, 사용자는 "뉴욕이 몇 시지?" 라고 질문할 수 있다. 가상 어시스턴트(1202)는 뉴욕 시티의 현재 시간을 제공함으로써 응답할 수 있다. 이어서, 사용자는 "날씨는 어때?" 라고 질문할 수 있다. 가상 어시스턴트(1202)는 이전 다이얼로그 이력을 사용하여, 날씨 질의에 대해 의도된 위치가 다이얼로그 이력에 언급된 마지막 위치임을 추론할 수 있다.
다이얼로그 이력 및 가상 어시스턴트 메모리로부터의 콘텍스트 정보의 예들은, 제한 없이, 다이얼로그에 언급된 사람들; 다이얼로그에 언급된 장소들 및 위치들; 관심있는 현재 시간 프레임; 이메일 또는 캘린더와 같은 관심있는 현재 애플리케이션 도메인; 이메일을 읽거나 캘린더 엔트리를 생성하는 것과 같은 관심있는 현재 태스크; 방금 읽었던 이메일 메시지 또는 방금 생성된 캘린더 엔트리와 같은, 관심있는 현재 도메인 객체들; 질문이 요청되고 있는지 여부 및 어떤 가능한 답변들이 예상되는지와 같은, 다이얼로그 또는 트랜잭션 흐름의 현재 상태; 사용자 요청들의 이력; 사용자 요청들의 결과들의 이력, 예컨대 레스토랑들의 세트들이 반환됨; 다이얼로그에서 어시스턴트에 의해 사용된 구문들의 이력; 및 사용자에 의해 어시스턴트로 말했던 사실들을 포함한다.
일 실시예에서, 개인 음향 콘텍스트 데이터(1280)는 사용자 스피치를 이해하기 위해 사용될 수 있는 가능한 통계적 언어 모델들로부터 선택하는 데, 또는 달리 인식된 음향 콘텍스트들에 대해 최적화하기 위해 스피치 인식을 튜닝하는 데 사용될 수 있다. 스피치 입력을 해석할 때, 가상 어시스턴트(1202)는 스피치가 입력되는 음향 환경들을 고려하기 위해 스피치를 텍스트 서비스로 튜닝할 수 있다. 예를 들어, 조용한 사무실의 소음 프로파일들은 자동차들 또는 공공 장소들의 소음 프로파일들과는 상이하다. 스피치 인식 시스템이 음향 프로파일 데이터를 식별 및 저장할 수 있는 경우, 이들 데이터는 또한 콘텍스트 정보로서 제공될 수 있다. 사용 중인 마이크로폰들의 속성들, 현재 위치, 및 현재 다이얼로그 상태와 같은 다른 콘텍스트 정보와 조합될 때, 음향 콘텍스트는 입력의 인식 및 해석에 도움을 줄 수 있다.
전술한 명세서에서, 본 발명은 본 발명의 특정 실시예들에 관하여 설명되었다. 그러나, 본 발명의 더 넓은 사상 및 범주를 벗어나지 않으면서 다양한 수정들 및 변화들이 본 발명에 행해질 수 있다는 것은 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다. 제공된 설명들 및 예들의 세부 사항은 하나 이상의 실시예들에서 어디에서나 사용될 수 있다. 상이한 실시예들 또는 예들의 다양한 특징들은 포함된 일부 특징들과 다양하게 조합될 수 있고, 다른 것들은 다양한 상이한 애플리케이션들에 적합하도록 배제될 수 있다. 예들은 방법, 방법의 액션들을 수행하기 위한 수단, 기계에 의해 수행될 때 기계로 하여금 본 명세서에 기술된 실시예들 및 예들에 따른 방법 또는 장치 또는 시스템의 액션들을 수행하게 하는 명령어들을 포함하는 적어도 하나의 기계 판독가능 매체와 같은 주제를 포함할 수 있다. 또한, 본 명세서에 기술된 다양한 컴포넌트들은 일 실시예에 따라 기술된 동작들 또는 기능들을 수행하기 위한 수단일 수 있다.
본 명세서에 기술된 실시예들은 스마트 스피커 디바이스 또는 다른 스마트 홈 디바이스와 같은 커뮤널 전자 디바이스가 개인 사용자 데이터를 수반하는 가상 어시스턴트 요청들을, 비밀 데이터에 대한 액세스가 요청되는 사용자와 연관된 개인 사용자 디바이스인 컴패니언 디바이스에 중계 또는 재지향시키는 것을 인에이블하는 통신 메커니즘을 제공한다. 통신 메커니즘은 또한 스마트 홈 디바이스가 구성 데이터를 포함하는 데이터를 교환하는 것을 인에이블하는 범용 통신 메커니즘으로서 사용될 수 있다.
커뮤널 디바이스와 컴패니언 디바이스 사이의 통신은 컴패니언 링크로 지칭되는 보안 데이터 채널 상에서 수행될 수 있다. 컴패니언 링크는 홈 네트워크 환경 내의 접속된 디바이스들에 대한 지속적이고 낮은 레이턴시 메시징 시스템을 제공한다. 일부 실시예들에서, 컴패니언 링크는 홈 내의 또는 인터넷을 통해 도달가능한 개인 모바일 디바이스들과 홈 내의 스피커 디바이스들과 같은 정적 커뮤널 디바이스들의 링크를 지원한다. 컴패니언 링크는, 커뮤널 디바이스들이 개인 요청들을 재지향시키는 것을 인에이블하는데, 그렇지 않으면, 커뮤널 디바이스는 프라이버시 문제들로 인해 이를 하나 이상의 개인 디바이스들로 처리할 수 없다. 사용자와 연관된 개인 디바이스에 대한 개인 요청들의 재지향은 커뮤널 디바이스 상의 가상 어시스턴트가 프라이버시-보존 방식으로 수신 및 요청하는 것을 인에이블할 수 있다.
컴패니언 디바이스들로의 개인 질의들의 재지향을 인에이블하는 것에 더하여, 일 실시예에서, 컴패니언 링크는 또한 홈 네트워크 환경 내의 디바이스들에 대한 범용 메시징 시스템을 제공한다. 범용 메시징 시스템은 컴패니언 링크를 통해 메시지들을 교환함으로써 다수의 홈 디바이스들이 협력하여 동작하는 것을 인에이블한다. 예를 들어, 다수의 스마트 스피커 디바이스들 사이의 오디오 재생은 디바이스들이 미디어 항목들의 재생을 조정하는 것, 사용자에게 가장 가까운 스피커를 통해 사용자에게 오디오 통지들을 선택적으로 제공하는 것, 다수의 스피커들을 다채널 오디오 시스템으로 구성하는 것, 또는 음성 요청 및 응답의 지속기간 동안 스피커에서 오디오 더킹을 조정하는 것과 같은, 그러나 이에 제한되지 않는 동작들을 수행하는 것을 인에이블하도록 조정될 수 있다.
커뮤널 디바이스들은 발견 프로토콜을 통해 컴패니언 링크 서비스에 대한 지지를 광고할 수 있다. 커뮤널 디바이스와 동일한 네트워크 상의 개인 사용자 디바이스들은 커뮤널 디바이스에 의해 광고된 컴패니언 링크 서비스를 발견하고 광고된 정보를 사용하여 커뮤널 디바이스와 접속할 수 있다. 개인 디바이스는 커뮤널 디바이스와 페어링 프로세스를 수행하여 사용자에 대한 컴패니언 디바이스가 될 수 있다. 일 실시예에서, 페어링 프로세스는 사용자 디바이스가 단거리 무선 통신 메커니즘을 통해 컴패니언 디바이스와 식별자들, 키들, 또는 비밀들을 교환하는 근접 요소를 포함한다. 페어링 프로세스는 또한 컴패니언 링크를 통한 커뮤널 디바이스와 컴패니언 디바이스 사이의 후속 접속들을 용이하게 할 수 있는 존재 및 도달가능성 정보의 교환을 포함할 수 있다.
본 명세서에 기술된 실시예들은 스마트 스피커 디바이스 또는 다른 스마트 홈 디바이스와 같은 커뮤널 전자 디바이스가 개인 사용자 데이터를 수반하는 가상 어시스턴트 요청들을 프로세싱을 위해 개인 사용자 디바이스로 중계 또는 재지향시키는 것을 인에이블하는 통신 메커니즘을 제공한다. 통신 메커니즘은 또한 스마트 홈 디바이스가 구성 데이터를 포함하는 데이터를 교환하는 것을 인에이블하는 범용 통신 메커니즘으로서 사용될 수 있다. 그러나, 본 발명의 더 넓은 사상 및 범주를 벗어나지 않으면서 다양한 수정들 및 변화들이 본 발명에 행해질 수 있다는 것은 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다. 제공된 설명들 및 예들의 세부 사항은 하나 이상의 실시예들에서 어디에서나 사용될 수 있다. 상이한 실시예들 또는 예들의 다양한 특징들은 포함된 일부 특징들과 다양하게 조합될 수 있고, 다른 것들은 다양한 상이한 애플리케이션들에 적합하도록 배제될 수 있다. 예들은 방법, 방법의 액션들을 수행하기 위한 수단, 기계에 의해 수행될 때 기계로 하여금 본 명세서에 기술된 실시예들 및 예들에 따른 방법 또는 장치 또는 시스템의 액션들을 수행하게 하는 명령어들을 포함하는 적어도 하나의 기계 판독가능 매체와 같은 주제를 포함할 수 있다. 또한, 본 명세서에 기술된 다양한 컴포넌트들은 일 실시예에 따라 기술된 동작들 또는 기능들을 수행하기 위한 수단일 수 있다.
일 실시예는 커뮤널 전자 디바이스 상의 데이터 프로세싱 시스템을 제공하는데, 데이터 프로세싱 시스템은 명령어들을 저장하는 메모리 디바이스 및 메모리 디바이스 상에 저장된 명령어들을 실행하는 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들로 하여금 커뮤널 전자 디바이스에서 커맨드들을 수신하기 위한 가상 어시스턴트를 제공하게 하는 명령어들, 여기서 가상 어시스턴트는 하나 이상의 프로세서들을 통해, 커뮤널 전자 디바이스에서 커맨드를 수신하고 커맨드가 커뮤널 전자 디바이스와 연관된 사용자의 개인 데이터에 액세스하라는 것인지 여부를 결정하도록 구성된다. 커맨드가 사용자의 개인 데이터에 액세스하라는 것이라는 결정에 응답하여, 가상 어시스턴트는 커맨드의 적어도 일부분을 프로세싱하라는 요청을 사용자의 개인 전자 디바이스에 전송할 수 있다.
본 명세서에 기술된 실시예들에서, 사용자의 개인 데이터는 연락처 리스트, 텍스트 메시지, 이메일, 통화 이력, 알람, 리마인더, 통신 이력, 설정, 선호도, 또는 위치 이력을 포함하고, 커뮤널 전자 디바이스는 스마트 스피커 디바이스를 포함한다. 개인 데이터는 사용자의 개인 전자 디바이스 상에 저장될 수 있고, 가상 어시스턴트는 개인 전자 디바이스가 커뮤널 전자 디바이스를 대신하여 개인 데이터에 액세스하도록 요청할 수 있다. 이어서, 가상 어시스턴트는 사용자의 개인 전자 디바이스로 전송된 요청의 출력을 수신하고, 출력에 기초하여 커맨드의 프로세싱을 완료할 수 있다. 커맨드는 사용자에 의해 말해지는 음성 커맨드 또는 커뮤널 디바이스로 전송된 텍스트 커맨드일 수 있다. 일 실시예에서, 사용자의 개인 전자 디바이스로 요청을 전송하는 것은, 사용자의 개인 전자 디바이스로 커맨드를 재지향하는 것을 포함하며, 여기서 개인 전자 디바이스는 커뮤널 전자 디바이스를 대신하여 커맨드를 프로세싱하는 것이다. 가상 어시스턴트는 개인 전자 디바이스에 의해 생성된 오디오 응답을 수신하고 커맨드에 대한 응답으로서 오디오 응답을 재생할 수 있다. 커맨드가 사용자의 연락처에 메시지를 전송하라는 커맨드인 경우, 오디오 응답은 메시지에 대한 수신된 응답의 통지일 수 있다.
일 실시예에서, 커뮤널 전자 디바이스는 커뮤널 전자 디바이스가 개인 전자 디바이스로 요청을 송신하도록 인에이블되기 전에 개인 전자 디바이스와 페어 및/또는 신뢰 관계를 확립할 수 있다. 가상 어시스턴트는 개인 전자 디바이스와의 검증된 데이터 접속을 통해 사용자의 개인 전자 디바이스에 요청을 전송할 수 있다. 검증된 데이터 접속은 개인 전자 디바이스와의 신뢰 관계에 기초하여 확립될 수 있는데, 여기서 검증된 데이터 접속은 신뢰 관계의 확립 동안 교환되는 데이터를 통해 검증된다. 일 실시예에서, 검증된 데이터 접속은 인터넷과 같은 광역 네트워크를 통해 확립된 원격 데이터 접속을 통해 확립된다.
일 실시예는 하나 이상의 프로세서들로 하여금, 통신 세션이 커뮤널 전자 디바이스와 컴패니언 디바이스 사이에 확립되어야 한다고 결정하는 것을 포함하는 동작들을 수행하게 하기 위한 명령어를 저장하는 비일시적 기계 판독가능 매체를 제공하고, 여기서 컴패니언 디바이스는 사용자와 연관된 개인 데이터에 대한 액세스를 갖는 전자 디바이스이다. 동작들을 추가적으로 컴패니언 디바이스와 데이터 접속을 확립하는 단계, 커뮤널 전자 디바이스와 컴패니언 디바이스 사이의 신뢰 관계를 검증하는 단계, 신뢰 관계를 검증한 후에 커뮤널 전자 디바이스와 컴패니언 디바이스 사이에 암호화된 통신 세션을 확립하는 단계, 및 암호화된 통신 세션을 통해 커뮤널 전자 디바이스에서 수신된 커맨드를 컴패니언 디바이스에 중계하는 단계를 포함한다.
일 실시예는 하나 이상의 네트워크들에 접속하기 위한 네트워크 인터페이스, 및 전자 디바이스의 사용자와 연관된 개인 데이터 및 명령어들을 저장하는 메모리 디바이스를 포함하는 전자 디바이스를 제공한다. 전자 디바이스는 메모리 디바이스 상에 저장된 명령어들을 실행하는 하나 이상의 프로세서들을 포함하며, 여기서 명령어들은 하나 이상의 프로세서들로 하여금 커맨드들을 수신하기 위한 가상 어시스턴트를 제공하게 한다. 가상 어시스턴트는, 하나 이상의 프로세서들을 통해, 네트워크 인터페이스를 통해, 커뮤널 전자 디바이스로부터 재지향되는 커맨드를 수신할 수 있다. 커맨드는 전자 디바이스의 사용자와 연관된 개인 데이터에 액세스하기 위한 요청을 포함하거나 특정할 수 있다. 이어서, 가상 어시스턴트는 커뮤널 전자 디바이스를 대신하여 커맨드의 적어도 일부분을 프로세싱할 수 있고, 네트워크 인터페이스를 통해, 커뮤널 전자 디바이스를 대신하여 수행되는 프로세싱의 출력을 커뮤널 전자 디바이스로 송신할 수 있다.
스마트 스피커 디바이스와 같은 커뮤널 전자 디바이스와 스마트폰 디바이스와 같은 컴패니언 디바이스 사이의 컴패니언 링크 접속이 기술되어 있지만, 컴패니언 링크 접속은 또한 다수의 스마트폰 디바이스들, 테이블 컴퓨팅 디바이스들과 같은 다수의 컴패니언 디바이스들 사이, 또는 스마트폰 디바이스와 테이블 컴퓨팅 디바이스 사이에 확립될 수 있다.
일 실시예는 전자 디바이스 상의 데이터 프로세싱 시스템을 제공하는데, 데이터 프로세싱 시스템은 명령어들을 저장하는 메모리 디바이스 및 메모리 디바이스 상에 저장된 명령어들을 실행하는 하나 이상의 프로세서들을 포함한다. 명령어들은, 실행될 때, 하나 이상의 프로세서들로 하여금 전자 디바이스들 사이의 암호화된 데이터 채널을 인에이블하게 한다. 암호화된 데이터 채널을 인에이블하기 위해, 하나 이상의 프로세서들은 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하도록 구성되고, 제1 전자 디바이스 및 제2 전자 디바이스는 각각 클라우드 서비스 계정과 연관된다. 하나 이상의 프로세서들은 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하고, 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하고, 신뢰 관계를 검증한 후에 제1 전자 디바이스와 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하도록 추가로 구성된다. 이어서, 암호화된 통신 세션은 암호화된 통신 세션에 걸쳐 제1 전자 디바이스와 제2 전자 디바이스 사이에서 데이터를 교환하기 위해 사용될 수 있다.
추가의 실시예에서, 데이터 프로세싱 시스템의 하나 이상의 프로세서들은 제1 전자 디바이스와 제2 전자 디바이스 사이의 단거리 무선 접속을 통해 피어-투-피어 데이터 접속을 확립하고/하거나 무선 네트워크 접속을 통한 네트워크 계층 프로토콜을 통해 암호화된 통신 세션을 확립할 수 있다. 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 것은 이전에 확립된 신뢰 관계를 검증하는 것을 포함할 수 있고, 이는, 단거리 무선 접속을 통한 제1 전자 디바이스와 제2 전자 디바이스 사이의 크리덴셜들의 교환 및/또는 제1 전자 디바이스 및 제2 전자 디바이스와 연관된 클라우드 서비스 계정을 통한 크리덴셜들의 교환 중 하나 이상을 통해 확립될 수 있고, 크리덴셜들은 제1 전자 디바이스와 제2 전자 디바이스 사이의 상호 인증을 인에이블한다.
추가의 실시예에서, 하나 이상의 프로세서들은 디바이스 발견 프로토콜을 통해 제1 전자 디바이스에서 제2 전자 디바이스를 발견하는 것에 응답하여 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립될 것이라고 결정하고, 제2 전자 디바이스를 발견한 후 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하도록 구성될 수 있다. 통신 세션은 또한 제1 디바이스 및 제2 디바이스가 연관되는 클라우드 서비스 계정과 연관된 디바이스들의 리스트에 기초하여 확립될 수 있다. 일 실시예에서, 통신 세션은 클라우드 서비스 계정들의 패밀리와 연관된 디바이스들의 리스트에 기초하여 확립될 수 있는데, 여기서 제1 전자 디바이스는 제1 계정과 연관되고, 제2 전자 디바이스는 제2 계정과 연관되고, 클라우드 서비스 계정들의 패밀리는 제1 계정 및 제2 계정을 포함한다. 일 실시예에서, 제1 전자 디바이스가 제2 전자 디바이스로의 데이터 교환을 위한 요청을 전송하도록 인에이블되기 전에 제1 전자 디바이스가 제2 전자 디바이스와 신뢰 관계를 확립한다.
일 실시예는 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 기계 판독가능 매체를 제공하며, 동작들은, 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계를 포함하고, 제1 전자 디바이스 및 제2 전자 디바이스는 각각 클라우드 서비스 계정과 연관된다. 명령어들은 추가적으로 하나 이상의 프로세서들로 하여금, 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하는 단계, 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계, 신뢰 관계를 검증한 후에 제1 전자 디바이스와 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하는 단계, 및 암호화된 통신 세션에 걸쳐 제1 전자 디바이스와 제2 전자 디바이스 사이에서 데이터를 교환하는 단계를 포함하는 추가적인 동작들을 수행하게 할 수 있다.
일 실시예는 본 명세서에 기술된 컴퓨팅 디바이스 또는 데이터 프로세싱 시스템 상에서 실행되는 방법을 제공한다. 방법은 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계 - 제1 전자 디바이스 및 제2 전자 디바이스는 각각 클라우드 서비스 계정과 연관됨 -, 무선 라디오 디바이스를 통해 제1 전자 디바이스와 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하는 단계, 및 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계 - 제1 전자 디바이스와 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계는 이전에 확립된 신뢰 관계를 검증하는 단계를 포함함 - 를 포함한다. 방법은 추가적으로 무선 네트워크 접속을 통해 네트워크 계층 프로토콜을 통해 제1 전자 디바이스와 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하는 단계 - 암호화된 통신 세션은 신뢰 관계를 검증한 후에 확립됨 -, 및 암호화된 통신 세션에 걸쳐 제1 전자 디바이스와 제2 전자 디바이스 사이에서 데이터를 교환하는 단계를 포함한다. 데이터는, 예를 들어, 제1 전자 디바이스와 제2 전자 디바이스 사이의 디바이스 데이터를 동기화하기 위해 교환될 수 있으며, 여기서 디바이스 데이터는 클라우드 서비스 계정과 연관된다.
추가적 실시예에서, 방법은 추가적으로 클라우드 서비스 계정들의 패밀리와 연관된 디바이스들의 리스트에 기초하여 제1 전자 디바이스와 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계를 포함하고, 여기서 제1 전자 디바이스는 제1 계정과 연관되고, 제2 전자 디바이스는 제2 계정과 연관되고, 클라우드 서비스 계정들의 패밀리는 제1 계정 및 제2 계정을 포함한다. 제1 전자 디바이스는 디바이스 발견 프로토콜을 통해 제2 전자 디바이스를 발견하고, 제2 전자 디바이스를 발견한 후에 제2 전자 디바이스와의 피어-투-피어 데이터 접속을 확립할 수 있다.
본 실시예들의 다른 특징들이 첨부 도면 및 상기 상세한 설명으로부터 자명할 것이다. 따라서, 본 발명의 진정한 범주는 도면, 명세서, 및 하기의 청구의 범위의 연구 시에 숙련자에게 명백해질 것이다.

Claims (20)

  1. 전자 디바이스 상의 데이터 프로세싱 시스템으로서,
    명령어들을 저장하는 메모리 디바이스;
    상기 메모리 디바이스 상에 저장된 상기 명령어들을 실행하는 하나 이상의 프로세서들을 포함하고, 상기 명령어들은 상기 하나 이상의 프로세서들로 하여금, 전자 디바이스들 사이에 암호화된 데이터 채널을 인에이블하게 하고, 상기 하나 이상의 프로세서들은,
    계정 서버로부터, 사용자의 제1 전자 디바이스와 상기 사용자의 제2 전자 디바이스가 연관된 클라우드 서비스 계정과 연관된 디바이스들의 리스트를 수신하고;
    상기 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하고;
    상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하고;
    상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 신뢰 관계를 검증하고;
    상기 신뢰 관계를 검증한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하고;
    상기 암호화된 통신 세션에 걸쳐 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에서 데이터를 교환하는, 데이터 프로세싱 시스템.
  2. 제1항에 있어서, 상기 하나 이상의 프로세서들은 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 단거리 무선 접속을 통해 상기 피어-투-피어 데이터 접속을 확립하는, 데이터 프로세싱 시스템.
  3. 제2항에 있어서, 상기 하나 이상의 프로세서들은 무선 네트워크 접속을 통해 네트워크 계층 프로토콜을 통해 상기 암호화된 통신 세션을 확립하는, 데이터 프로세싱 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 상기 신뢰 관계를 검증하는 것은, 이전에 확립된 신뢰 관계를 검증하는 것을 포함하는, 데이터 프로세싱 시스템.
  5. 제4항에 있어서, 상기 이전에 확립된 신뢰 관계는,
    단거리 무선 접속을 통해 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 크리덴셜(credential)들의 교환; 및
    상기 제1 전자 디바이스 및 상기 제2 전자 디바이스와 연관된 상기 클라우드 서비스 계정을 통한 크리덴셜들의 교환 중 하나 이상을 통해 확립되고, 상기 크리덴셜들은 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 상호 인증을 인에이블하는, 데이터 프로세싱 시스템.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 하나 이상의 프로세서들은 추가적으로,
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하는 것에 응답하여 상기 통신 세션이 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 확립되어야 한다고 결정하고;
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는, 데이터 프로세싱 시스템.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 하나 이상의 프로세서들은 추가적으로,
    상기 클라우드 서비스 계정과 연관된 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하고;
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하고;
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는, 데이터 프로세싱 시스템.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서, 하나 이상의 프로세서들은 추가적으로,
    클라우드 서비스 계정들의 패밀리와 연관된 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하고 - 상기 제1 전자 디바이스는 제1 계정과 연관되고, 상기 제2 전자 디바이스는 제2 계정과 연관되고, 상기 클라우드 서비스 계정들의 패밀리는 상기 제1 계정 및 상기 제2 계정을 포함함 -;
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하고;
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는, 데이터 프로세싱 시스템.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제1 전자 디바이스가 상기 제2 전자 디바이스로의 데이터 교환을 위한 요청을 전송하도록 인에이블되기 전에 상기 제1 전자 디바이스가 상기 제2 전자 디바이스와 신뢰 관계를 확립하는, 데이터 프로세싱 시스템.
  10. 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 기계 판독가능 매체로서, 상기 동작들은,
    사용자의 제1 전자 디바이스와 상기 사용자의 제2 전자 디바이스가 연관된 클라우드 서비스 계정과 연관된 디바이스들의 리스트를 수신하는 단계;
    상기 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계;
    상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하는 단계;
    상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계;
    상기 신뢰 관계를 검증한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하는 단계; 및
    상기 암호화된 통신 세션에 걸쳐 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에서 데이터를 교환하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  11. 제10항에 있어서, 상기 동작들은 추가적으로, 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 단거리 무선 접속을 통해 상기 피어-투-피어 데이터 접속을 확립하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  12. 제11항에 있어서, 상기 동작들은 추가적으로, 무선 네트워크 접속을 통해 네트워크 계층 프로토콜을 통해 상기 암호화된 통신 세션을 확립하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 상기 신뢰 관계를 검증하는 단계는, 이전에 확립된 신뢰 관계를 검증하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  14. 제13항에 있어서, 상기 이전에 확립된 신뢰 관계는,
    단거리 무선 접속을 통해 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에서 크리덴셜들을 교환하는 단계; 및
    상기 제1 전자 디바이스 및 상기 제2 전자 디바이스와 연관된 상기 클라우드 서비스 계정을 통해 크리덴셜들을 교환하는 단계 중 하나 이상을 포함하는 동작들을 통해 확립되고, 상기 크리덴셜들은 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 상호 인증을 인에이블하는, 비일시적 기계 판독가능 매체.
  15. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 동작들은 추가적으로,
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하는 것에 응답하여 상기 통신 세션이 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 확립되어야 한다고 결정하는 단계;
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  16. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 동작들은 추가적으로,
    상기 클라우드 서비스 계정과 연관된 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계;
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하는 단계; 및
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  17. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 동작들은 추가적으로,
    클라우드 서비스 계정들의 패밀리와 연관된 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계 - 상기 제1 전자 디바이스는 제1 계정과 연관되고, 상기 제2 전자 디바이스는 제2 계정과 연관되고, 상기 클라우드 서비스 계정들의 패밀리는 상기 제1 계정 및 상기 제2 계정을 포함함 -;
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하는 단계; 및
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는 단계를 포함하는, 비일시적 기계 판독가능 매체.
  18. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 전자 디바이스가 상기 제2 전자 디바이스로의 데이터 교환을 위한 요청을 전송하도록 인에이블되기 전에 상기 제1 전자 디바이스가 상기 제2 전자 디바이스와 신뢰 관계를 확립하는, 비일시적 기계 판독가능 매체.
  19. 방법으로서,
    사용자의 제1 전자 디바이스와 상기 사용자의 제2 전자 디바이스가 연관된 클라우드 서비스 계정과 연관된 디바이스들의 리스트를 수신하는 단계;
    상기 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계;
    무선 라디오 디바이스를 통해 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 피어-투-피어 데이터 접속을 확립하는 단계;
    상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 신뢰 관계를 검증하는 단계 - 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 상기 신뢰 관계를 검증하는 단계는 이전에 확립된 신뢰 관계를 검증하는 단계를 포함함 -;
    무선 네트워크 접속을 통해 네트워크 계층 프로토콜을 통해 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 암호화된 통신 세션을 확립하는 단계 - 상기 암호화된 통신 세션은 상기 신뢰 관계를 검증한 후에 확립됨 -; 및
    상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이의 디바이스 데이터를 동기화하기 위해 상기 암호화된 통신 세션을 통해 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에서 데이터를 교환하는 단계 - 상기 디바이스 데이터는 상기 클라우드 서비스 계정과 연관됨 - 를 포함하는, 방법.
  20. 제19항에 있어서, 추가적으로,
    클라우드 서비스 계정들의 패밀리와 연관된 디바이스들의 리스트에 기초하여 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 통신 세션이 확립되어야 한다고 결정하는 단계 - 상기 제1 전자 디바이스는 제1 계정과 연관되고, 상기 제2 전자 디바이스는 제2 계정과 연관되고, 상기 클라우드 서비스 계정들의 패밀리는 상기 제1 계정 및 상기 제2 계정을 포함함 -;
    디바이스 발견 프로토콜을 통해 상기 제1 전자 디바이스에서 상기 제2 전자 디바이스를 발견하는 단계; 및
    상기 제2 전자 디바이스를 발견한 후에 상기 제1 전자 디바이스와 상기 제2 전자 디바이스 사이에 상기 피어-투-피어 데이터 접속을 확립하는 단계를 포함하는, 방법.
KR1020207010959A 2017-10-21 2018-09-28 보안 디바이스 투 디바이스 통신 채널 KR102361376B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762575373P 2017-10-21 2017-10-21
US62/575,373 2017-10-21
PCT/US2018/053371 WO2019079017A1 (en) 2017-10-21 2018-09-28 SECURE DEVICE COMMUNICATION CHANNEL

Publications (2)

Publication Number Publication Date
KR20200052953A KR20200052953A (ko) 2020-05-15
KR102361376B1 true KR102361376B1 (ko) 2022-02-10

Family

ID=63915119

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207011028A KR102299239B1 (ko) 2017-10-21 2018-09-27 공동 디바이스 상의 가상 어시스턴트 시스템에 대한 개인 도메인
KR1020207010959A KR102361376B1 (ko) 2017-10-21 2018-09-28 보안 디바이스 투 디바이스 통신 채널

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207011028A KR102299239B1 (ko) 2017-10-21 2018-09-27 공동 디바이스 상의 가상 어시스턴트 시스템에 대한 개인 도메인

Country Status (7)

Country Link
US (2) US20190124049A1 (ko)
EP (2) EP3679735A1 (ko)
JP (1) JP7063990B2 (ko)
KR (2) KR102299239B1 (ko)
CN (2) CN114630302A (ko)
AU (3) AU2018351962B2 (ko)
WO (2) WO2019079015A1 (ko)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US20120311585A1 (en) 2011-06-03 2012-12-06 Apple Inc. Organizing task items that represent tasks to perform
EP4344163A3 (en) 2011-06-05 2024-04-24 Apple Inc. Systems and methods for displaying notifications received from multiple applications
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
DE212014000045U1 (de) 2013-02-07 2015-09-24 Apple Inc. Sprach-Trigger für einen digitalen Assistenten
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
EP3149728B1 (en) 2014-05-30 2019-01-16 Apple Inc. Multi-command single utterance input method
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK201770427A1 (en) 2017-05-12 2018-12-20 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US20190098004A1 (en) * 2017-09-26 2019-03-28 Proxy Technologies, Inc. Universal id system and methods and biometric information
US11470078B2 (en) * 2017-11-29 2022-10-11 Google Llc Structure-based access control
US11310649B2 (en) * 2018-02-20 2022-04-19 Lg Electronics Inc. Method for wireless connection in wireless LAN system and wireless device using same
KR102508677B1 (ko) * 2018-03-08 2023-03-13 삼성전자주식회사 사용자 발화를 처리하는 시스템 및 그 시스템의 제어 방법
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US10839811B2 (en) * 2018-06-08 2020-11-17 The Toronto-Dominion Bank System, device and method for enforcing privacy during a communication session with a voice assistant
US10831923B2 (en) 2018-06-08 2020-11-10 The Toronto-Dominion Bank System, device and method for enforcing privacy during a communication session with a voice assistant
US11109234B2 (en) 2018-06-15 2021-08-31 Proxy, Inc. Reader device with sensor streaming data and methods
US20200028841A1 (en) 2018-06-15 2020-01-23 Proxy, Inc. Method and apparatus for providing multiple user credentials
US11546728B2 (en) 2018-06-15 2023-01-03 Proxy, Inc. Methods and apparatus for presence sensing reporting
US11411735B2 (en) 2018-06-15 2022-08-09 Proxy, Inc. Methods and apparatus for authorizing and providing of distributed goods or services
US11462095B2 (en) 2018-06-15 2022-10-04 Proxy, Inc. Facility control methods and apparatus
US11438767B2 (en) 2018-06-15 2022-09-06 Proxy, Inc. Methods and apparatus for preauthorizing reader devices
US11651043B2 (en) 2018-07-24 2023-05-16 MachEye, Inc. Leveraging analytics across disparate computing devices
US11282020B2 (en) 2018-07-24 2022-03-22 MachEye, Inc. Dynamic playback of synchronized narrated analytics playlists
US11853107B2 (en) 2018-07-24 2023-12-26 MachEye, Inc. Dynamic phase generation and resource load reduction for a query
US11816436B2 (en) 2018-07-24 2023-11-14 MachEye, Inc. Automated summarization of extracted insight data
US11841854B2 (en) 2018-07-24 2023-12-12 MachEye, Inc. Differentiation of search results for accurate query output
US11341126B2 (en) * 2018-07-24 2022-05-24 MachEye, Inc. Modifying a scope of a canonical query
US10924933B2 (en) * 2018-08-23 2021-02-16 Motorola Solutions, Inc. System and method for monitoring the integrity of a virtual assistant
US11516211B2 (en) * 2018-09-11 2022-11-29 Citrix Systems, Inc. System for providing a service based upon authorization token and virtual assistant and related methods
US11023200B2 (en) 2018-09-27 2021-06-01 The Toronto-Dominion Bank Systems, devices and methods for delivering audible alerts
US10978063B2 (en) * 2018-09-27 2021-04-13 The Toronto-Dominion Bank Systems, devices and methods for delivering audible alerts
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
TWI684874B (zh) * 2018-10-18 2020-02-11 瑞軒科技股份有限公司 智慧型音箱及其操作方法
WO2020102620A1 (en) * 2018-11-16 2020-05-22 Facet Labs, Llc Interactive group session computing systems and related methods
FR3089084A1 (fr) * 2018-11-28 2020-05-29 Orange Procédé d’accès à distance à un assistant personnel vocal
EP3698224A1 (en) * 2018-12-03 2020-08-26 Google LLC. Efficient control and/or linking of smart devices
KR20200085593A (ko) * 2019-01-07 2020-07-15 삼성전자주식회사 전자 장치 및 그 제어 방법.
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
DK201970510A1 (en) 2019-05-31 2021-02-11 Apple Inc Voice identification in digital assistant systems
US11010121B2 (en) 2019-05-31 2021-05-18 Apple Inc. User interfaces for audio media control
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
US10867608B1 (en) 2019-05-31 2020-12-15 Apple Inc. Multi-user configuration
CN117170620A (zh) 2019-05-31 2023-12-05 苹果公司 用于音频媒体控件的用户界面
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
WO2020246975A1 (en) * 2019-06-05 2020-12-10 Google Llc Action validation for digital assistant-based applications
US20200388280A1 (en) 2019-06-05 2020-12-10 Google Llc Action validation for digital assistant-based applications
KR20220043135A (ko) * 2019-07-12 2022-04-05 삼성전자주식회사 텍스트 입력에 기초하여 구조화된 관계 정보를 생성하기 위한 방법과 장치
US11676589B2 (en) * 2019-09-17 2023-06-13 Global Strategies International LLC Systems and methods for voice search and response retrieval
CN117014859A (zh) 2019-09-19 2023-11-07 华为技术有限公司 基于通讯录的设备发现方法、音视频通信方法及电子设备
WO2021056255A1 (en) 2019-09-25 2021-04-01 Apple Inc. Text detection using global geometry estimators
US11627462B2 (en) * 2019-10-14 2023-04-11 Google Llc Providing network access via communal device
US11995116B2 (en) 2019-10-27 2024-05-28 Apple Inc. Multi-user content queue
US11038934B1 (en) 2020-05-11 2021-06-15 Apple Inc. Digital assistant hardware abstraction
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
US11330427B2 (en) 2020-05-22 2022-05-10 K4Connect Inc. Home automation (HA) system communicating a network address request and network address using first and second wireless protocols and related methods
US11233670B2 (en) 2020-05-22 2022-01-25 K4Connect Inc. Home automation (HA) system communicating a network address using first and second wireless protocols and related methods
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
US11700226B2 (en) * 2020-08-03 2023-07-11 Google Llc Sending messages from smart speakers and smart displays via smartphones
WO2022079647A1 (en) * 2020-10-15 2022-04-21 Life Ready Pty Ltd Secure cloud storage and retrieval of client-side encrypted data
US20220129144A1 (en) * 2020-10-26 2022-04-28 Apple Inc. Methods and user interfaces for handling user requests
US11658969B2 (en) * 2020-11-20 2023-05-23 At&T Intellectual Property I, L.P. Apparatuses and methods for facilitating port discernment driven mutual authentication and service access authorization
US11960615B2 (en) 2021-06-06 2024-04-16 Apple Inc. Methods and user interfaces for voice-based user profile management
US20230224984A1 (en) * 2022-01-12 2023-07-13 At&T Intellectual Property I, L.P. Split input/output system and method for multimedia communications
WO2024019755A1 (en) * 2022-07-20 2024-01-25 Innopeak Technology, Inc. Support remote application extensions or plugins
CN116744267B (zh) * 2022-11-16 2024-05-21 荣耀终端有限公司 数据处理方法、系统、电子设备和存储介质
CN116319119B (zh) * 2023-05-26 2023-09-26 广东广宇科技发展有限公司 一种伴随式迭代通信验证方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150222517A1 (en) 2014-02-05 2015-08-06 Apple Inc. Uniform communication protocols for communication between controllers and accessories
US20160358598A1 (en) 2015-06-07 2016-12-08 Apple Inc. Context-based endpoint detection
WO2017131887A1 (en) * 2016-01-29 2017-08-03 Google Inc. Local device authentication

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832055B1 (en) * 2005-06-16 2014-09-09 Gere Dev. Applications, LLC Auto-refinement of search results based on monitored search activities of users
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8116749B2 (en) * 2008-09-08 2012-02-14 Proctor Jr James Arthur Protocol for anonymous wireless communication
US20100278345A1 (en) * 2009-05-04 2010-11-04 Thomas Matthieu Alsina Method and apparatus for proximity based pairing of mobile devices
WO2011149558A2 (en) * 2010-05-28 2011-12-01 Abelow Daniel H Reality alternate
US9589266B2 (en) * 2011-04-01 2017-03-07 Visa International Service Association Restricted-use account payment administration apparatuses, methods and systems
US9054919B2 (en) * 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9674331B2 (en) * 2012-06-08 2017-06-06 Apple Inc. Transmitting data from an automated assistant to an accessory
CN104603813A (zh) 2012-06-11 2015-05-06 英特托拉斯技术公司 数据收集和分析的系统和方法
US9053304B2 (en) * 2012-07-13 2015-06-09 Securekey Technologies Inc. Methods and systems for using derived credentials to authenticate a device across multiple platforms
CA3126471A1 (en) * 2012-10-17 2014-04-17 Royal Bank Of Canada Virtualization and secure processing of data
US9733821B2 (en) * 2013-03-14 2017-08-15 Apple Inc. Voice control to diagnose inadvertent activation of accessibility features
US20140287687A1 (en) 2013-03-20 2014-09-25 Elbrys Networks, Inc. Method and system for managing bluetooth bonding for pre-pairing and impersonation
JP2014228912A (ja) 2013-05-20 2014-12-08 三菱電機株式会社 情報管理システム
US9729592B2 (en) * 2013-08-27 2017-08-08 Persais, Llc System and method for distributed virtual assistant platforms
US10181985B1 (en) * 2013-12-04 2019-01-15 Amazon Technologies, Inc. Cloud-based device discovery
CA2932273C (en) * 2013-12-06 2022-08-30 Adt Us Holdings, Inc. Voice activated application for mobile devices
KR102210748B1 (ko) * 2013-12-20 2021-02-02 삼성전자주식회사 홈 네트워크 시스템에서 홈 디바이스를 서버에 등록하는 장치 및 방법
US9778817B2 (en) * 2013-12-31 2017-10-03 Findo, Inc. Tagging of images based on social network tags or comments
US9432472B2 (en) * 2014-02-24 2016-08-30 Microsoft Technology Licensing, Llc Accelerated training of personal daemons
WO2015135166A1 (en) * 2014-03-12 2015-09-17 Tencent Technology (Shenzhen) Company Limited Method and device for controlling peripheral devices via a social networking platform
US9510083B2 (en) * 2014-03-14 2016-11-29 Apple Inc. Managing connections of a user device
US9392104B2 (en) * 2014-04-15 2016-07-12 Google Inc. Limiting user interaction with a computing device based on proximity of a user
US10289433B2 (en) * 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
AU2015207842B2 (en) * 2014-07-29 2020-07-02 Samsung Electronics Co., Ltd. Method and apparatus for sharing data
US10943455B2 (en) * 2014-08-14 2021-03-09 Joseph J. Bango System for geolocation awareness for voice activated digital assistants
US9614915B2 (en) * 2014-08-18 2017-04-04 Google Inc. Seamless peer to peer internet connectivity
US9872178B2 (en) * 2014-08-25 2018-01-16 Smart Technologies Ulc System and method for authentication in distributed computing environments
US20160241660A1 (en) * 2014-08-26 2016-08-18 Hoang Nhu Sensors and systems for iot and ifttt applications and related methods
US10085211B2 (en) * 2014-09-02 2018-09-25 Apple Inc. Communication of processor state information
US9812128B2 (en) 2014-10-09 2017-11-07 Google Inc. Device leadership negotiation among voice interface devices
US10122723B1 (en) * 2014-11-06 2018-11-06 Google Llc Supervised contact list for user accounts
US10567477B2 (en) * 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9842062B2 (en) * 2015-05-31 2017-12-12 Apple Inc. Backup accessible by subset of related devices
US9872150B2 (en) * 2015-07-28 2018-01-16 Microsoft Technology Licensing, Llc Inferring logical user locations
US20170126676A1 (en) * 2015-10-30 2017-05-04 Microsoft Technology Licensing, Llc Protection of Content Displayed on a Communal Device
US10857399B2 (en) * 2016-06-22 2020-12-08 Lucca Ventures, Inc. Patient respiratory mask with integrated microphone and method of patient communication utilizing the same
CN105959111B (zh) * 2016-07-01 2017-03-15 广西电网有限责任公司 基于云计算和可信计算的信息安全大数据资源访问控制系统
US10027616B2 (en) * 2016-07-18 2018-07-17 Plexus Meet, Inc. Proximity discovery system and method
CN106341459A (zh) * 2016-08-26 2017-01-18 刘翔 电子设备远程控制系统
CN106453032B (zh) 2016-08-30 2019-09-10 北京小米移动软件有限公司 信息推送方法及装置、系统
CN106534102A (zh) * 2016-10-31 2017-03-22 北京小米移动软件有限公司 设备访问的方法及装置、电子设备
US10524119B2 (en) * 2016-11-23 2019-12-31 Afero, Inc. Apparatus and method for sharing credentials in an internet of things (IoT) system
US20180204204A1 (en) * 2017-01-19 2018-07-19 Key 2 Mobile Llc System and Method for Location-Based Transaction
US10455418B2 (en) * 2017-04-27 2019-10-22 Afero, Inc. Securely providing a password using an internet of things (IOT) system
DK179496B1 (en) * 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US11182349B2 (en) * 2017-06-04 2021-11-23 Apple Inc. Synchronizing content
US10970385B2 (en) * 2017-06-04 2021-04-06 Apple Inc. Multiple device credential sharing
US11907990B2 (en) * 2017-09-28 2024-02-20 International Business Machines Corporation Desirability of product attributes
TWI719385B (zh) * 2019-01-11 2021-02-21 緯創資通股份有限公司 電子裝置及其語音指令辨識方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150222517A1 (en) 2014-02-05 2015-08-06 Apple Inc. Uniform communication protocols for communication between controllers and accessories
US20160358598A1 (en) 2015-06-07 2016-12-08 Apple Inc. Context-based endpoint detection
WO2017131887A1 (en) * 2016-01-29 2017-08-03 Google Inc. Local device authentication

Also Published As

Publication number Publication date
AU2018351962A1 (en) 2020-04-23
US20190122001A1 (en) 2019-04-25
CN109698856B (zh) 2022-04-01
WO2019079017A1 (en) 2019-04-25
AU2023285970A1 (en) 2024-01-25
EP3679735A1 (en) 2020-07-15
JP2020537793A (ja) 2020-12-24
AU2018351962B2 (en) 2021-11-04
EP3679734A1 (en) 2020-07-15
KR20200052954A (ko) 2020-05-15
CN109698856A (zh) 2019-04-30
US20190124049A1 (en) 2019-04-25
WO2019079015A1 (en) 2019-04-25
CN114630302A (zh) 2022-06-14
KR102299239B1 (ko) 2021-09-06
AU2022200714A1 (en) 2022-02-24
KR20200052953A (ko) 2020-05-15
JP7063990B2 (ja) 2022-05-09

Similar Documents

Publication Publication Date Title
KR102361376B1 (ko) 보안 디바이스 투 디바이스 통신 채널
EP3841500B1 (en) Media intercom over a secure device to device communication channel
US11070676B2 (en) Embedded audio passcode in ringtone to establish secure connection for arbitrary phone relay
US11102259B2 (en) Network system for content playback on multiple devices
US11949725B2 (en) Alarms for a system of smart media playback devices
EP3437262B1 (en) Multi-modal conversational intercom
KR102612883B1 (ko) 다수의 디바이스들에 걸친 데이터 동기화

Legal Events

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