KR102423712B1 - 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송 - Google Patents

루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송 Download PDF

Info

Publication number
KR102423712B1
KR102423712B1 KR1020207033521A KR20207033521A KR102423712B1 KR 102423712 B1 KR102423712 B1 KR 102423712B1 KR 1020207033521 A KR1020207033521 A KR 1020207033521A KR 20207033521 A KR20207033521 A KR 20207033521A KR 102423712 B1 KR102423712 B1 KR 102423712B1
Authority
KR
South Korea
Prior art keywords
client device
routine
automated assistant
user
data
Prior art date
Application number
KR1020207033521A
Other languages
English (en)
Other versions
KR20210002598A (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 구글 엘엘씨
Priority to KR1020227024822A priority Critical patent/KR102621636B1/ko
Publication of KR20210002598A publication Critical patent/KR20210002598A/ko
Application granted granted Critical
Publication of KR102423712B1 publication Critical patent/KR102423712B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/28Constructional details of speech recognition systems
    • G10L15/30Distributed recognition, e.g. in client-server systems, for mobile phones or network applications
    • 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/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/088Word spotting
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/223Execution procedure of a spoken command
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Multimedia (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Acoustics & Sound (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

자동화 어시스턴트 루틴을 실행하는 동안 클라이언트 디바이스들사이의 자동화 어시스턴트 루틴을 (예를 들어, 자동으로) 전송한다. 자동화 어시스턴트 루틴은 하나 이상의 에이전트 및/또는 하나 이상의 디바이스에 의해 수행될 액션 세트에 대응할 수 있다. 루틴의 액션에 대응하는 컨텐츠가 특정 디바이스에서 렌더링되는 동안, 사용자는 특정 디바이스에서 멀어져 별도의 디바이스로 이동할 수 있다. 이에 응답하여 자동화 어시스턴트 루틴은 자동으로 전송될 수 있으며 별도의 디바이스는 사용자를 위해 계속 컨텐츠를 렌더링할 수 있다.

Description

루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송
사람은 본 명세서에서 "자동화 어시스턴트"("디지털 에이전트", "챗봇", "대화형 개인 비서", "지능형 개인 비서", "대화 에이전트"라고도 지칭됨)로 지칭되는 대화형 소프트웨어 애플리케이션을 사용하여 사람 대 컴퓨터 대화에 참여할 수 있다. 예를 들어, 사람(사람이 자동화 어시스턴트와 상호 작용할 때 "사용자"로 지칭됨)은 일부 경우 텍스트로 변환된 다음 처리될 수 있는 음성 자연어 입력(즉, 발화)을 사용하거나 (예를 들어, 타이핑된) 텍스트 자연어 입력을 제공하여 명령 및/또는 요청을 제공할 수 있다.
일부 자동화 어시스턴트는 특정 명령을 수신하는 것에 응답하여 다수의 액션의 루틴을 수행할 수 있다. 예를 들어, "good night"라는 음성 발화를 수신하는 것에 응답하여, 자동화 어시스턴트는 네트워크로 연결된 조명을 끄고 내일의 일기 예보가 사용자에게 렌더링되게 할 수 있고, 내일의 사용자 일정이 사용자에게 렌더링되도록 할 수 있다. 불행히도, 일단 자동화 어시스턴트가 이미 루틴과 관련된 다수의 액션 중 하나 이상의 수행을 지시하기 시작했다면 사용자는 그 루틴을 중지하지 못할 수 있다. 이것은 사용자가 루틴을 중지하려고 시도하거나 현재 루틴이 실행되는 동안 자동화 어시스턴트가 별도의 액션 또는 별도의 루틴을 수행하도록 하는 상황에서 문제가 될 수 있다. 그 결과, 실행중인 현재 루틴은 일반적으로 완료될 때까지 계속되어야 하며, 자동화 어시스턴트가 다른 액션 또는 루틴을 수행하라는 사용자 요청에 응답할 수 있기까지 지연이 발생한다. 또한, 현재 루틴을 계속 수행하는데 소비되는 모든 컴퓨팅 및/또는 네트워크 리소스가 낭비된다.
또한, 루틴을 수행할 때, 자동화 어시스턴트는 일반적으로 루틴이 개시된 클라이언트 디바이스 및/또는 루틴에서 명시적으로 수동으로 지정된 클라이언트 디바이스와 같은 하나 이상의 특정 클라이언트 디바이스에서만 루틴과 관련된 컨텐츠를 (예를 들어, 청각적으로 및/또는 그래픽적으로) 렌더링되도록 한다. 만약 사용자가 특정 클라이언트 디바이스(들)에서 멀어지면, 렌더링된 컨텐츠는 더 이상 사용자가 쉽게 인식하지 못할 수 있다. 이로 인해 사용자가 렌더링된 컨텐츠를 확인하지 못하게 되어 인식할 수 없는 컨텐츠를 불필요하게 렌더링하는데 계산 및/또는 네트워크 리소스가 낭비된다. 또한, 사용자가 자신이 확인하지 못한 컨텐츠를 나중에 확인하려면, 사용자는 다시 자동화 어시스턴트가 루틴 전체를 수행하도록 해야 하며, 결과적으로 사용자가 실제로 인식한 부분과 인식되지 않은 부분을 포함하여 루틴의 모든 컨텐츠를 다시 렌더링하는데 계산 및/또는 네트워크 리소스가 더 낭비된다.
본 명세서에 개시된 구현들은 자동화 어시스턴트에 의한 루틴의 실행 중에 클라이언트 디바이스들 사이에 자동화 어시스턴트 루틴을 전송하기 위한 방법, 장치 및 컴퓨터 판독 가능 매체(일시적 및 비-일시적)에 관한 것이다. 예시적인 루틴은 자동화 어시스턴트가 사용자의 하루를 준비하기 위해 아침에 다수의 상이한 액션을 순차적으로 수행하는 아침 루틴일 수 있다. 예를 들어, 아침 루틴은 특정 날(예를 들어, 오늘)에 대한 사용자의 일정이 클라이언트 디바이스를 통해 청각적으로 렌더링되도록 하는 자동화 어시스턴트를 포함할 수 있고, 자동화 어시스턴트는 (가정용) 기기(예를 들어, 커피 메이커)를 켜고 사용자가 준비하는 동안 클라이언트 디바이스를 통해 팟캐스트가 청각적으로 렌더링되도록 한다. 자동화 어시스턴트가 루틴을 촉진하기 위해 컨텐츠가 사용자에게 렌더링되도록 할 때, 이는 사용자가 컨텐츠를 렌더링하고 있는 어시스턴트 클라이언트 디바이스에서 멀어지고 자동화 어시스턴트를 적어도 부분적으로 호스팅하는 경우일 수 있다. 그 결과, 사용자는 어시스턴트 클라이언트 디바이스로부터 렌더링된 컨텐츠를 일시적으로 보지 못하거나 듣지 못할 수 있다. 또한, 아침 루틴의 수행 중에 사용자가 집 주위를 돌아 다니는 경우, 사용자는 루틴을 촉진하기 위해 컨텐츠를 렌더링하는 어시스턴트 클라이언트 디바이스를 포함하는 방을 떠날 때마다 아침 루틴이 중지되고 시작되도록 명시적으로 요청해야 할 수 있다. 이로 인해 루틴을 중지 및/또는 재시작하는데 필요한 음성 발화 처리에 계산 및/또는 네트워크 리소스가 낭비될 수 있다.
클라이언트 디바이스 사이의 루틴의 유동적 및/또는 자동 전환을 제공하고 컴퓨터 및/또는 네트워크 리소스 소비의 효율성을 개선하기 위해, 본 명세서에 설명된 구현들은 어시스턴트 디바이스들 사이에서 자동화 어시스턴트 루틴의 자동 전환을 허용한다. 이러한 방식으로 복잡한 루틴을 포함하는 루틴이 기술적으로 개선된 방식으로 구현될 수 있다. 예를 들어, 루틴이 적응형 방식으로 어시스턴트 디바이스사이에 분산되어 주어진 상황에서 디바이스 동작을 개선할 수 있다. 각 디바이스가 작동하는 방식은 루틴의 주어진 인스턴스화의 적응적 요구에 따라 조정될 수 있다. 루틴은 일정 기간에 걸쳐 구현될 수 있기 때문에, 디바이스들 간의 리소스 활용도의 최적 할당은 해당 기간 동안 조건 변경에 따라 달라질 수 있는데, 본 개시는 이 인자를 인식하여 디바이스 동작을 적응시킬 수 있다. 이러한 구현 중 일부에서, 루틴에 대한 컨텐츠의 렌더링은 사용 가능한 클라이언트 디바이스들의 초기 서브 세트(예를 들어, 단 하나)에서만 처음에 발생할 수 있다. 예를 들어, 루틴에 대한 컨텐츠 렌더링은 단일 클라이언트 디바이스에서 검출되는(또는 단일 클라이언트 디바이스에서 가장 강력하게 검출되는) 루틴에 대한 음성 단축(단축) 명령 구문(아래에 설명됨)의 결과로서 단일 클라이언트 디바이스에서 처음에 발생할 수 있다. 다른 예로서, 루틴에 대한 컨텐츠의 렌더링은 단일 클라이언트 디바이스 근처에서 사용자의 존재를 검출한 결과로 추가적으로 또는 대안적으로 단일 클라이언트 디바이스에서 처음에 발생할 수 있다. 사용자 검출은 (클라이언트 디바이스 및/또는 다른 네트워크 디바이스의) 하나 이상의 센서(로부터)의 센서 데이터에 기초할 수 있으며, 검출은 클라이언트 디바이스 및/또는 그 클라이언트 디바이스와 (예를 들어, 네트워크 토폴로지에서) 공간적으로 상관된 다른 네트워크 디바이스의 센서(들)에 기초하여 단일 클라이언트 디바이스 근처에 있는 것으로 결정될 수 있다. 또 다른 예로서, 루틴이 개시되어야 하는 단일 클라이언트 디바이스로 수동으로 지정되는 단일 클라이언트 디바이스의 결과로서 루틴에 대한 컨텐츠의 렌더링이 단일 클라이언트 디바이스에서 처음에 발생할 수 있다. 예를 들어, 아침 루틴은 특정 시간 및/또는 하나 이상의 트리거링 이벤트 검출시 자동으로 트리거될 수 있다. 예를 들어, 아침 루틴이 특정 타임프레임 동안 발생하는 하나 이상의 트리거링 이벤트에 응답하여 트리거될 수 있다. 트리거링 이벤트(들)는 예를 들어 기상 알람이 해제되었음을 나타내는 스마트 폰의 데이터, 커피가 추출되고 있음을 나타내는 네트워크 연결된 커피 메이커의 데이터 및/또는 사용자가 특정 위치에서 검출되었음을 나타내는 스마트 카메라의 데이터를 포함할 수 있다. 이 예를 계속하면, 아침 루틴은 루틴에 대한 컨텐츠를 처음에 렌더링해야 하는 특정 클라이언트 디바이스를 수동으로 지정할 수 있다.
또한, 클라이언트 디바이스들의 초기 서브 세트에서 루틴에 대한 컨텐츠를 렌더링하는 동안, 그 루틴은 초기 서브 세트에 없는 하나 이상의 추가 사용 가능한 클라이언트 디바이스로 전송될 수 있다. 루틴을 전송할 때, 추가 사용 가능한 클라이언트 디바이스(들)가 루틴에 대한 컨텐츠를 렌더링하도록 야기된다. 추가 사용 가능한 클라이언트 디바이스(들)에 의해 렌더링된 컨텐츠에는 초기 서브 세트의 클라이언트 디바이스(들)에 의해 아직 렌더링되지 않은 루틴에 대한 컨텐츠가 포함되고, 클라이언트 디바이스(들)에 의해 이미 렌더링된 일부 컨텐츠의 "리플레이"(예를 들어, 전송 전에 초기 서브 세트의 클라이언트 디바이스(들)에 의해 렌더링된 마지막 5초의 가청 컨텐츠의 리플레이)를 선택적으로 포함할 수 있다. 루틴을 전송할 때, 초기 서브 세트의 클라이언트 디바이스(들)에서 루틴에 대한 컨텐츠의 렌더링은 선택적으로 중지될 수 있다. 초기 서브 세트의 클라이언트 디바이스(들)에서 컨텐츠 렌더링의 중지는 추가 사용 가능한 클라이언트 디바이스(들)에서 컨텐츠의 렌더링을 초기화하기 전에 또는 그와 동시에 발생할 수 있다. 초기 서브 세트의 클라이언트 디바이스(들)에서의 컨텐츠 렌더링의 중지은 또한 추가 사용 가능한 클라이언트 디바이스(들)에서 컨텐츠의 렌더링 이후에 점차적으로 발생할 수 있다(예를 들어, 가청 컨텐츠의 볼륨은 점차적으로 줄어든 다음 사용 가능한 추가 클라이언트 디바이스(들)에서 컨텐츠 렌더링을 초기화한 후 중지될 수 있음). 초기 서브 세트의 클라이언트 디바이스(들)에서 컨텐츠의 렌더링이 중지되는 구현에서, 네트워크 및/또는 계산 리소스는 컨텐츠가 초기 서브 세트의 클라이언트 디바이스(들)로 전송되지 않거나 및/또는 이에 의해 렌더링되지 않은 결과로 보존될 수 있다.
다양한 구현에서, 초기 서브 세트에 없는 추가 사용 가능한 클라이언트 디바이스(들)로의 루틴의 전송은 추가 사용 가능한 클라이언트 디바이스(들) 근처의 사용자의 존재를 검출하는 것에 기초하여 발생할 수 있다. 예를 들어, 루틴의 컨텐츠는 그러한 존재를 검출하는 것에 응답하여 추가로 사용 가능한 클라이언트 디바이스(들)를 자동으로 렌더링되도록 할 수 있다. 다른 예로, 루틴을 전송하기 위한 청각적 및/또는 시각적 프롬프트가 추가 사용 가능한 클라이언트 디바이스(들)에서 자동으로 렌더링되도록 할 수 있으며, 프롬프트에 응답하여 수신되는 긍정적인 사용자 인터페이스 입력에 응답하여 루틴의 컨텐츠가 렌더링될 수 있다. 추가 사용 가능한 클라이언트 디바이스(들) 근처의 사용자 검출은 (추가 사용 가능한 클라이언트 디바이스(들) 및/또는 다른 네트워크 디바이스의) 하나 이상의 센서의 센서 데이터에 기초할 수 있으며, 검출은 추가 사용 가능한 클라이언트 디바이스(들) 및/또는 그 추가 사용 가능한 클라이언트 디바이스(들)과 (예를 들어, 네트워크 토폴로지에서) 공간적으로 상관된 다른 네트워크 디바이스의 센서(들)에 기초하여 추가 사용 가능한 클라이언트 디바이스(들) 근처에 있는 것으로 결정될 수 있다. 이러한 다양한 구현들 중 일부에서, 클라이언트 디바이스들의 초기 서브 세트에서 컨텐츠 렌더링의 중지는 추가 사용 가능한 클라이언트 디바이스(들) 근처에서 사용자의 존재를 검출하는 것에 응답하여 발생할 수 있다. 추가적으로 또는 대안적으로, 클라이언트 디바이스들의 초기 서브 세트에서 컨텐츠의 렌더링의 중지는 초기 서브 세트와 상관된 센서(들의 센서 데이터에 기초하여, 클라이언트 디바이스(들)의 초기 서브 세트 근처에서 사용자의 존재 결여(부재)를 검출하는 것에 응답하여 발생할 수 있다.
위에서 언급한 바와 같이, 일부 구현에서, 자동화 어시스턴트 루틴은 사용자의 음성 또는 타이핑된 자연어 입력에서 단축 문구 또는 명령을 검출하는 것에 응답하여 초기화될 수 있다. 단축 명령(shortcut command)은 자동화 어시스턴트가 선택적으로 특정 시퀀스로 액션 세트를 수행하게 하는 축약 명령을 제공한다. 축약 명령은 말하거나 타이핑해야 하는 명령보다 길이가 짧다는 점에서 "축약"되지만, 축약 명령의 경우 자동화 어시스턴트가 액션 세트를 수행하게 한다. 액션 세트에 대해 더 긴 명령 대신에 액션 세트를 수행하게 하는 축약 명령을 제공하면 사용자 입력이 더 적게 제공(및 전송 및/또는 처리)되어, 계산 및 네트워크 리소스를 절약할 수 있다. 자동화 어시스턴트 루틴에 대한 축약 명령의 일 예로서, 사용자가 아침에 일어나는 경우, 사용자는 주방 어시스턴트 디바이스(즉, 주방에 있는 클라이언트 컴퓨팅 디바이스)에 음성 발화를 제공하여 "굿 모닝" 루틴을 트리거할 수 있다. 음성 발화는 예를 들어, "굿 모닝"일 수 있으며, 이는 "굿 모닝" 루틴을 초기화하기 위한 어시스턴트 디바이스 및/또는 (어시스턴트 디바이스와 통신하는) 원격 어시스턴트 디바이스에 의해 처리될 수 있다. 예를 들어, 어시스턴트 디바이스 및/또는 원격 디바이스는 음성 발화에 해당하는 오디오 데이터를 처리하여 음성 발화를 텍스트로 변환할 수 있으며, 사용자에 대해 "굿 모닝"이라는 텍스트가 "굿 모닝"이라는 음성 발화에 응답하여 수행될 자동화 어시스턴트 액션 세트에 할당되었는지 추가로 결정할 수 있다.
다양한 자동화 어시스턴트 루틴이 음성 또는 타이핑된 단축 명령에 응답하여 초기화될 수 있지만, 일부 구현에서, 자동화 어시스턴트 루틴은 사용자가 클라이언트 디바이스 또는 주변 디바이스에서 가상 또는 하드웨어 엘리먼트를 누르고, 클라이언트 디바이스의 센서(들)를 통해 검출되는 제스처를 수행하고, 클라이언트 디바이스에서 다른 촉각 입력(들)을 제공하고 및/또는 다른 유형의 컴퓨터 판독 가능 사용자 인터페이스 입력을 제공하는 것에 응답하여 추가로 또는 대안적으로 초기화될 수 있다. 예를 들어, 그래픽 사용자 인터페이스(GUI)는 선택 가능한 아이콘과 함께 클라이언트 디바이스에 제시될 수 있는데, 여기서 선택 가능한 아이콘은 사용자가 자동화 어시스턴트 루틴을 초기화하기 위한 제안을 제공한다. 사용자가 선택 가능한 아이콘(예를 들어, "굿 모닝"이라고 말하는 GUI 버튼)을 선택하면, 자동화 어시스턴트는 응답으로 대응하는 자동화 어시스턴트 루틴을 초기화할 수 있다. 추가적으로 또는 대안적으로, 자동화 어시스턴트 루틴은 예를 들어 사용자의 존재를 검출(예를 들어, 음성 인증 및/또는 얼굴 인식을 사용하여 특정 사용자를 검출)하는 자동화 어시스턴트, 알람 울림(예를 들어, 관련 전화기 또는 다른 디바이스에 설정된 기상 알람), 애플리케이션 열기 및/또는 (예를 들어, 하나 이상의 클라이언트 디바이스의 신호에 기초하여) 자동화 어시스턴트에 의해 인식될 수 있는 다른 사용자 액션에 응답하여 자동으로 초기화될 수 있다.
예시적인 "굿 모닝" 루틴은 사용자의 일정이 렌더링되게 하고, 특정 기기가 켜지게 하고, 팟캐스트가 렌더링되게 하는 전솔한 액션들을 포함할 수 있다. 다시 말하지만 자동화 어시스턴트가 이러한 단축 명령에 응답할 수 있도록 함으로써, 사용자는 자동화 어시스턴트가 대응하는 액션을 수행하도록 하기 위해 반드시 일련의 명령을 제공할 필요가 없다(예를 들어, 사용자는 "어시스턴트, 내 일정을 읽어 주고, 내 기기를 켜주고 그리고 내 팟캐스트를 재생해 줘"와 같은 음성 발화를 인용할 필요가 없슴). 대신, 자동화 어시스턴트는 자동화 어시스턴트가 단축 명령에 대응하는 액션들을 식별하기 위해 처리할 수 있는 단축 명령에 응답할 수 있다. 일부 구현에서, 루틴은 개인화될 수 있으므로, 루틴의 수행을 야기하는 특정 단축 명령 또는 다른 입력은 한 사용자에 대해 자동화 어시스턴트에 의해 특정 액션 세트가 수행되도록 하는 반면, 동일한 입력은 다른 사용자에 대해 자동화 어시스턴트에 의해 다른 액션 세트가 수행되도록 할 수 있다. 예를 들어, 특정 사용자는 단축 명령에 응답하여 제1 액션 세트를 수행하도록 자동화 어시스턴트를 구체적으로 구성할 수 있고, 특정 사용자의 배우자는 동일한 단축 명령에 응답하여 제2 액션 세트를 수행하도록 자동화 어시스턴트를 구성할 수 있다. 자동화 어시스턴트는 하나 이상의 센서 입력 및/또는 음성 서명, 얼굴 인식, 이미지 피드, 모션 특성 및/또는 기타 데이터와 같은 하나 이상의 결정된 특성을 사용하여 단축 명령을 제공하는 사용자를 구별할 수 있다.
사용자가 주방 어시스턴트 디바이스와 같은 어시스턴트 디바이스에 "굿 모닝"과 같은 단축 명령을 제공할 때, 루틴의 하나 이상의 액션에 대응하는 컨텐츠는 처음에 음성 발화가 주방 어시스턴트 디바이스로 전송된 결과로 주방 어시스턴트 디바이스에 의해 렌더링될 수 있다. 예를 들어, 다른 디바이스들이 단축 명령을 수신 확인(acknowledge)했음에도 불구하고, 컨텐츠는 처음에 주방 어시스턴트 디바이스에서만(즉, 임의의 다른 클라이언트 디바이스에서 동시에 렌더링되지 않고) 오로지 렌더링될 수 있다. 예를 들어, 다수의 디바이스가 그들의 개별 자동화 어시스턴트 인터페이스에서 수신되는 단축 명령을 수신 확인할 수 있지만, 가장 큰 및/또는왜곡이 가장 적은 단축 명령을 수신하는 디바이스가 자동화 어시스턴트 루틴이 초기화될 디바이스로 지정될 수 있다. 그러나, 사용자가 하루를 준비하기 위해 집을 돌아 다닐 때, 루틴은 집에 있는 하나 이상의 다른 어시스턴트 디바이스에서 공유될 수 있다.
예를 들어, 사용자가 주방을 나와 홈 오피스에 들어가면, 주방 어시스턴트 디바이스는 사용자가 주방에서 나가고 있음을 검출할 수 있다. 자동화 어시스턴트가 일일의 일정을 청각적으로 렌더링할 때 사용자가 주방에서 나가는 것을 검출할 수 있다. 검출에 응답하여, 자동화 어시스턴트는 사용자가 주방 어시스턴트 디바이스 근처에서 다시 검출되거나 다른 어시스턴트 디바이스 근처에서 검출될 때까지 일정의 가청 렌더링을 일시 중지할 수 있다. 예를 들어, 사용자는 주방에서 오피스어시스턴트 디바이스가 포함될 수 있는 오피스로 이동할 수 있다. 오피스 어시스턴트 디바이스 근처의 사용자가 검출된 결과로서, 오피스 어시스턴트 디바이스는 일일의 사용자 일정을 청각적으로 렌더링하는 것을 재개하도록 야기될 수 있다. 더욱이, 오피스 어시스턴트 디바이스는 사용자가 오피스 어시스턴트 디바이스 근처에서 계속 검출되는 한 "굿 모닝" 루틴의 아직 수행되지 않은 다른 액션을 계속 수행할 수 있다.
사용자의 존재를 검출하기 위해, 사용자는 특히 사용자가 집을 돌아 다닐 때 자동화 어시스턴트가 자신의 루틴을 계속 실행하도록 요청할 수 있다. 이렇게 하면 자동화 어시스턴트가 디바이스간에 루틴을 전환할 목적으로 사용자의 존재를 검출할 수 있는 명시적인 권한을 가질 수 있다. 사용자 검출은 오디오, 비디오, 및/또는 사용자의 존재를 인식할 수 있는 다른 매체와 같은 다양한 모달리티(양식)를 통해 실행될 수 있다. 일부 구현에서, 어시스턴트 디바이스는 하나 이상의 마이크로폰을 포함하는 오디오 서브 시스템을 사용하여 사용자가 어시스턴트 디바이스에 근접하는지 여부를 확인할 수 있다. 추가적으로, 또는 대안적으로, 자동화 어시스턴트는 어시스턴트 디바이스 근처에서 임계양의 노이즈가 검출되는지 여부에 기초하여 사용자의 움직임 및/또는 존재를 검출할 수 있다. 예를 들어, 사용자가 굿모닝 루틴을 시작할 때 주방에 있지만 나중에 오피스에 들어가 그것에 의해 오피스에서 약간의 소음이 발생하는 경우, 오피스의 그 소음은 오피스의 어시스턴트 디바이스에 의해 검출될 수 있다. 그 결과, 자동화 어시스턴트는 발생된 소음의 양이 루틴을 전송하기 위한 임계값을 만족하는 것으로 결정하여, 그 루틴이 주방 어시스턴트 디바이스로부터 오피스 어시스턴트 디바이스로 전송되게 할 수 있다.
일부 구현에서, 루틴의 전송은 학습된 동작에 기초할 수 있으며, 그에 따라 사용자가 반드시 소음을 생성하지 않고도 디바이스간에 루틴의 전송을 유발하도록 허용할 수 있다. 예를 들어, 사용자는 주방에서 루틴의 초기화를 유발한 다음 루틴의 실행 중에, 특히 자동화 어시스턴트가 음성 발화를 사용하여 루틴을 오피스로 전송하도록 요청할 수 있다. 이 전송을 한 번 이상 명시적으로 요청한 후, 자동화 어시스턴트는 주방의 모션 센서 및/또는 오피스의 모션 센서와 같은 다른 센서 입력에 기초하여 사전에 전송을 유발하는 방법을 배울 수 있다. 예를 들어, 주방 디바이스에서 자동화 어시스턴트 루틴의 초기화는 사용자의 집 주방에 있는 조명용 모션 센서의 센서 출력을 통해 주방에서의 사용자가 검출에 응답하여 트리거될 수 있다. 이후, 사용자는 오피스로 들어갈 수 있으며, 오피스에서 사용자의 검출은 오피스에 있는 별도의 조명용 다른 모션 센서의 센서 출력을 통해 검출될 수 있다. 자동화 어시스턴트는 조명 및 모션 센서가 홈 네트워크를 통해 자동화 어시스턴트와 통신할 때 이 동작을 학습할 수 있으며, 따라서 루틴의 컨텐츠 렌더링이 모션 센서에 공간적으로 대응하는 클라이언트 디바이스들에 의해 수행되게 할 수 있다.
디바이스간에 루틴을 전송하는 일부 구현에서, 자동화 어시스턴트는 루틴 인스턴스들을 저장하는 하나 이상의 데이터베이스에 따라 작동할 수 있다. 루틴 인스턴스는 자동화 어시스턴트를 적어도 부분적으로 호스팅할 수 있는 하나 이상의 서버 디바이스 및/또는 클라이언트 디바이스에 저장될 수 있다. 예를 들어, 원격 서버 디바이스는 자동화 어시스턴트를 위한 자동화 어시스턴트 인터페이스를 제공하는 클라이언트 디바이스들에 선택적으로 액세스될 수 있는 루틴 인스턴스들을 저장할 수 있다. 루틴이 제1 클라이언트 디바이스에서 초기화되는 경우, 루틴이 제1 클라이언트 디바이스에서 초기화되었음을 나타내기 위해 루틴 인스턴스가 생성되거나 업데이트될 수 있다. 예를 들어, 루틴 인스턴스는 "modify morning_ routine.status.Active=1; modify morning_routine.device.DeviceID=3"과 같은 명령을 통해 초기화될 수 있다. "DeviceID" 슬롯은 루틴이 초기화된 위치 또는 디바이스(예를 들어, 주방 디바이스)를 나타낼 수 있으며, "Active" 슬롯은 루틴이 활성 상태인식 아닌지 여부를 나타낼 수 있다. "morning_routine"기능과 관련된 값들은 사용자의 집에 있는 다수의 상이한 디바이스뿐만 아니라 사용자 계정과 관련될 수 있는 임의의 다른 디바이스에서 액세스 가능할 수 있다.
사용자가 디바이스간에 루틴이 전송되도록 할 때, 제1 클라이언트 디바이스(즉, "DeviceID = 3")는 "morning_routine" 함수의 상태를 관리하는 원격 서버 디바이스로 신호를 전송할 수 있는데, 여기서 신호는 "morning_routine" 함수의 상태가 수정되도록 한다. 예를 들어, 제1 클라이언트 디바이스로부터의 신호는 원격 서버 클라이언트에서 "modify morning_routine.action.Read_Daily_Schedule.pause = 1"과 같은 명령이 실행되도록 하여, 그 루틴의 특정 액션(예를 들어, "Read_Daily_Schedule")이 일시 중지되도록 할 수 있다. 예를 들어, 루틴의 특정 액션이 일시 중지되도록 하면 제1 클라이언트 디바이스가 그 루틴에 해당하는 컨텐츠의 렌더링을 중지하도록 할 수 있다. 제1 클라이언트 디바이스는 예를 들어 원격 서버로부터 제1 클라이언트 디바이스로 전송된 중지 명령 또는 원격 서버에 의한 제1 클라이언트 디바이스로의 컨텐트 스트리밍 중단에 응답하여 컨텐트의 렌더링을 중지하도록 야기될 수 있다. 이후 사용자가 홈 오피스의 어시스턴트 디바이스와 같은 제2 클라이언트 디바이스 근처에서 검출되면, 제2 클라이언트 디바이스는 원격 서버 디바이스가 루틴과 관련된 위치 또는 디바이스를 수정하도록 할 수 있다. 예를 들어, 루틴이 여전히 활성 상태인 동안 사용자가 자신의 홈 오피스로 이동했다는 결정에 응답하여, 명령 "modify morning_routine.DeviceID = 2; modify morning_routine.action.Read_Daily_Schedule.pause = 0"이 실행될 수 있다. 앞서 언급한 명령은 "DeviceID" 슬롯값을 "2"(즉, 홈 오피스 디바이스 식별자)로 변경하고 "pause" 슬롯값을 "0"으로 변경되도록 할 수 있으므로, "Read_Daily_Schedule"의 액션이 제2 클라이언트 디바이스에서 일시 중지 해제되도록 할 수 있다. 그런 다음 자동화 어시스턴트는 사용자의 일일 일정이 제2 클라이언트 디바이스에서 렌더링되도록 진행할 수 있으며, 제1 클라이언트 디바이스는 대기 모드로 돌아갈 수 있다.
일부 구현에서, 디바이스 간의 루틴 전송에 제한이 있을 수 있다. 예를 들어, 배우자와 함께 사는 사용자는 사용자가 "굿 모닝" 루틴을 초기화했을 때 배우자를 방해하지 않기를 원할 수 있다. 예를 들어, 배우자는 일반적으로 "굿 모닝" 루틴이 자동화 어시스턴트에 의해 수행되는 동안 홈 짐(home gym)에서 명상중일 수 잇다. 자동화 어시스턴트가 배우자를 방해하지 않도록 보장하기 위해, 사용자는 "어시스턴트, '굿 모닝'루틴을 짐 어시스턴트 디바이스로 전송하지 말아 줘"와 같은 명시적인 명령을 제공할 수 있다. 이에 대한 응답으로, "굿 모닝" 루틴과 관련된 슬롯값은 "modify morning_routine.deny.DeviceID = 1"과 같은 명령으로 수정될 수 있다. 슬롯값 "DeviceID = 1"은 짐 어시스턴트 디바이스를 지칭할 수 있고, "deny"는 "굿 모닝" 루틴을 짐 어시스턴트 디바이스로 전송하는 기능을 자동화 어시스턴트자가 거부하는 제한을 지칭할 수 있다.
일부 구현에서, 제1 사용자는 제1 루틴이 주방 어시스턴트 디바이스에서 실행되도록 할 수 있고, 제2 사용자는 제2 루틴이 오피스 어시스턴트 디바이스에서 실행되도록 할 수 있는데, 여기서 주방 어시스턴트 디바이스 및 오피스 어시스턴트 디바이스 모두는 같은 집에 있다. 제1 사용자가 주방을 떠날 때, 제1 루틴이 일시 중지될 수 있지만, 사용자가 오피스에 들어가면 오피스 어시스턴트 디바이스는 오피스 어시스턴트 디바이스로의 제1 루틴의 전송 가능성을 제한할 수 있다. 이런 방식으로, 제1 루틴은 적어도 제2 루틴이 완료될 때까지 제2 루틴을 방해하지 않을 것이다. 제1 사용자가 오피스에 있는 동안 제2 루틴이 오피스 어시스턴트 디바이스에서 완료되면, 제1 루틴은 오피스 어시스턴트 디바이스에서 재개될 수 있다. 그 이외에, 제1 사용자가 제2 루틴 중에 오피스를 떠나 주방으로 돌아 오면, 제1 루틴은 주방 어시스턴트 디바이스에서 재개될 수 있다.
일부 구현에서, 루틴을 실행할 때 자동화 어시스턴트들은 하나 이상의 로컬 및/또는 원격 에이전트와 인터페이스한다. 예를 들어, 3개의 액션을 포함하는 루틴에 대해, 자동화 어시스턴트는 제1 액션을 수행할 때 제1 에이전트, 제2 액션을 수행할 때 제2 에이전트, 그리고 제3 액션을 수행할 때 제2 에이전트와 인터페이스할 수 있다. 본 명세서에서 사용되는 바와같이, "에이전트"는 자동화 어시스턴트에 의해 활용되는 하나 이상의 컴퓨팅 디바이스 및/또는 소프트웨어를 참조한다. 일부 상황에서, 에이전트는 자동화 어시스턴트와 분리될 수 있고 및/또는 하나 이상의 통신 채널을 통해 자동화 어시스턴트와 통신할 수 있다. 이러한 상황 중 일부에서, 자동화 어시스턴트는 제1 네트워크 노드로부터, 에이전트의 기능의 모든 또는 일부 양태를 구현하는 제2 네트워크 노드로 데이터(예를 들어, 에이전트 명령)를 전송할 수 있다. 일부 상황에서, 에이전트는 자동화 어시스턴트를 관리하는 당사자와 별도인 당사자에 의해 관리된다는 점에서 제3자(3P) 에이전트일 수 있다. 일부 다른 상황에서, 에이전트는 자동화 어시스턴트를 관리하는 동일한 당사자에 의해 관리된다는 점에서 제1자(first-party)(1P) 에이전트일 수 있다.
에이전트는 자동화 어시스턴트로부터 호출 요청 및/또는 다른 에이전트 명령을 (예를 들어, 네트워크를 통해 및/또는 API를 통해) 수신하도록 구성된다. 에이전트 명령을 수신하는 것에 응답하여, 에이전트는 에이전트 명령에 기초하여 응답 컨텐츠를 생성하고, 응답 컨텐츠에 기초하하는 사용자 인터페이스 출력을 제공하기 위해 응답 컨텐츠를 전송한다. 예를 들어, 에이전트는 자동화 어시스턴트에 의해, 응답 컨텐츠에 기초하는 출력을 제공하기 위해 응답 컨텐츠를 자동화 어시스턴트로 전송할 수 있다. 다른 예로, 에이전트는 자체적으로 출력을 제공할 수 있다. 예를 들어, 사용자는 클라이언트 디바이스를 통해 자동화 어시스턴트와 상호 작용할 수 있으며(예를 들어, 자동화 어시스턴트는 클라이언트 디바이스에서 구현될 수 있고 및/또는 클라이언트 디바이스와 네트워크 통신할 수 있음), 에이전트는 클라이언트에 설치된 애플리케이션이거나 클라이언트 디바이스로부터 원격으로 실행 가능하지만 클라이언트 디바이스에서 "스트리밍 가능한" 애플리케이션일 수 있다. 애플리케이션이 호출되면, 그것은 클라이언트 디바이스에 의해 실행될 수 있고 및/또는 클라이언트 디바이스에 의해 맨 앞으로 올 수 있다(예를 들어, 해당 컨텐츠가 클라이언트 디바이스의 디스플레이를 차지할 수 있다).
일부 상황에서, 본 명세서에 개시된 기술에 따른 특정 에이전트의 호출에 응답하여, 인간 대 자동화 어시스턴트 대화가 적어도 일시적으로 (실제로 또는 효과적으로) 특정 에이전트로 전송될 수 있다. 예를 들어, 특정 에이전트의 응답 컨텐츠에 기초한 출력은 그 대화를 촉진하기 위해 사용자에게 제공될 수 있고, 추가 사용자 입력이 출력에 응답하여 수신될 수 있다. 추가 사용자 입력(또는 그의 변환)은 특정 에이전트로 제공될 수 있다. 특정 에이전트는 대화를 촉진하기 위해 제공하기 위한 추가 출력을 생성하는데 사용될 수 있는 추가 응답 컨텐츠를 생성할 때 자체 시맨틱(의미) 엔진 및/또는 다른 컴포넌트를 사용할 수 있다. 이 일반 프로세스는 예를 들어 특정 에이전트가 특정 에이전트 대화를 종료하는 응답 컨텐츠(예를 들어, 프롬프트 대신 답변 또는 해결책)를 제공하고, 사용자의 추가 사용자 인터페이스 입력이 특정 에이전트 대화를 종료(예를 들어, 대신 자동화 어시스턴트 또는 다른 에이전트의 응답을 호출)할 때까지 계속될 수 있다
일부 상황에서, 자동화 어시스턴트는 대화가 특정 에이전트에게 효과적으로 전송될 때 여전히 중개자 역할을 할 수 있다. 예를 들어, 사용자의 자연어 입력이 음성 입력인 경우 중개자 역할을 할 때, 자동화 어시스턴트는 해당 음성 입력을 텍스트로 변환하고, 텍스트(및 선택적으로 텍스트의 주석)를 특정 에이전트에게 제공하고, 사용자에게 프리젠테이션하기 위해 특정 응답 컨텐츠에 기초하는 출력을 제공할 수 있다. 또한, 예를 들어, 중개자 역할을 할 때, 자동화 어시스턴트는 사용자 입력 및/또는 특정 에이전트의 응답 컨텐츠를 분석하여, 특정 에이전트와의 대화를 종료해야 하는지, 사용자가 대체 에이전트로 전송되어야 하는지, 특정 에이전트 대화에 기초하여 글로벌 파라미터 값들이 업데이트되어야 하는지 등을 결정할 수 있다. 일부 상황에서 대화는 실제로 특정 에이전트로 전송될 수 있으며(전송된 후에는 중개자 역할을 하는 자동화 어시스턴트 없이), 특정 에이전트에 의한 종료와 같은 하나 이상의 조건 발생시 (예를 들어, 응답 특정 에이전트를 통한 의도의 완료에 응답하여) 선택적으로 다시 자동화 어시스턴트로 전송될 수 있다.
위의 내용은 본 명세서에 개시된 다양한 구현의 개요로서 제공된다. 이러한 다양한 구현 및 추가 구현에 관한 추가 세부 사항들이 본 명세서에 제공된다.
일부 구현에서, 하나 이상의 프로세서에 의해 구현되는 방법은 자동화 어시스턴트 루틴이 초기화되었는지 결정하는 단계와 같은 동작들을 포함하는 것으로 설명된다. 자동화 어시스턴트 루틴은 자동화 어시스턴트에 액세스 가능한 하나 이상의 에이전트를 통해 수행될 액션 세트에 대응할 수 잇다. 자동화 어시스턴트 루틴의 초기화는 링크된 클라이언트 디바이스들의 생태계와 관련될 수 있다. 방법은 자동화 어시스턴트 루틴이 초기화되었다는 결정에 응답하여, 상기 링크된 클라이언트 디바이스들의 초기 서브 세트가 자동화 어시스턴트 루틴의 하나 이상의 액션 수행시에 생성된 초기 컨텐츠를 렌더링하게 하는 단계를 더 포함할 수 있다. 방법은 또한 링크된 클라이언트 디바이스들의 초기 서브 세트에 의해 초기 컨텐츠를 렌더링한 후 또는 렌더링하는 중에, 적어도 하나의 센서의 센서 데이터에 기초하여, 사용자가 상기 링크된 클라이언트 디바이스들의 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계를 포함할 수 있다. 추가 클라이언트 디바이스는 초기 서브 세트에서 제외될 수 있으며 초기 컨텐츠를 렌더링하지 않을 수 있다. 방법은 사용자가 추가 클라이언트 디바이스 근처에 존재한다는 결정에 응답하여, 추가 클라이언트 디바이스로 하여금 자동화 어시스턴트 루틴의 수행시에 생성된 추가 컨텐츠를 렌더링하게 하는 단계를 더 포함할 수 있다.
일부 구현에서, 방법은 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는 단계와; 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는다는 결정에 응답하여 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링이 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에서 중단되도록 하는 단계를 더 포함할 수 있다.
일부 구현에서, 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는 단계는 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하기 전에 발생할 수 있다. 또한, 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링이 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에서 중단되도록 하는 단계는 추가 클라이언트 디바이스에 의해, 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링 전에 발생할 수 잇다.
일부 구현에서, 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는 단계는 적어도 하나의 추가 센서의 추가 센서 데이터에 기초할 수 있다. 일부 구현에서, 적어도 하나의 추가 센서의 추가 센서 데이터는 초기 서브 세트의 상기 링크된 클라이언트 디바이스들 중 적어도 하나와 통합되는 적어도 하나의 추가 센서 및 디바이스 토폴로지에서, 초기 서브 세트의 상기 링크된 클라이언트 디바이스들 중 적어도 하나와 공간적으로 상관되는 적어도 하나의 추가 센서 중 하나 또는 둘 모두에 기초하여, 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는데 이용될 수 있다.
일부 구현에서, 사용자가 임의의 상기 링크된 클라이언트 디바이스들 근처에 존재하지 않는지 결정하는 단계는 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계를 포함할 수 잇다. 일부 구현에서, 방법은 루틴의 상태를 저장하는 단계를 더 포함할 수 있으며, 루틴의 상태는 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링이 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에서 중단되었을 때의 루틴의 상태를 나타낸다. 방법은 루틴의 상태에 기초하여 추가 클라이언트 디바이스에서 렌더링될 추가 컨텐츠를 결정하는 단계를 더 포함할 수 있다.
일부 구현에서, 방법은 저장된 루틴의 상태에 기초하여, 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에 의해 렌더링된 초기 컨텐츠의 일부를 결정하는 단계를 포함할 수 있다. 방법은 또한 사용자가 추가 클라이언트 디바이스 근처에 존재한다는 결정에 응답하여, 자동화 어시스턴트 루틴의 수행시에 생성된 추가 컨텐츠를 렌더링하기 전에 추가 클라이언트 디바이스로 하여금 초기 컨텐츠의 일부를 렌더링하게 하는 단계를 포함할 수 있다.
일부 구현에서, 링크된 클라이언트 디바이스들의 초기 서브 세트는 단일 클라이언트 디바이스이고, 방법은 단일 클라이언트 디바이스에 의해 검출된, 사용자의 사용자 인터페이스 입력에 응답하여 단일 클라이언트 디바이스에 의해 전송된 데이터를 수신하는 단계를 더 포함할 수 있다. 자동화 어시스턴트 루틴이 초기화되었는지 결정하는 단계는 사용자 인터페이스 입력이 자동화 어시스턴트 루틴을 준수하는지 결정하는 것에 기초할 수 있으며, 단일 클라이언트 디바이스는 단일 클라이언트 디바이스에 의해 전송되는 사용자 인터페이스 입력에 기초하여 데이터의 초기 서브 세트를 렌더링하도록 야기될 수 있다.
일부 구현에서, 사용자 인터페이스 입력은 자동화 어시스턴트 루틴에 대한 단축(shortcut) 문구를 포함하는 음성 발화를 포함하고, 데이터는 오디오 데이터를 포함한다. 방법은 또한 텍스트를 생성하도록 오디오 데이터의 음성-텍스트 변환 처리를 수행하는 단계를 포함할 수 있다. 사용자 인터페이스 입력이 자동화 어시스턴트 루틴을 준수하는지 결정하는 단계는 생성된 텍스트가 단축 문구를 포함하는지 결정하는 단계 및 단축 문구가 자동화 어시스턴트 루틴과 관련하여 저장되는지를 결정하는 단계를 포함할 수 있다.
일부 구현에서, 적어도 하나의 센서의 센서 데이터는 추가 클라이언트 디바이스와 통합되는 적어도 하나의 센서 또는 디바이스 토폴로지에서, 추가 클라이언트 디바이스와 공간적으로 상관되는 적어도 하나의 센서에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는데 이용될 수 있다.
일부 구현에서, 센서 데이터에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계는 사용자가 추가 클라이언트 디바이스의 임계 거리 내에 있는지 결정하는 단계를 포함할 수 있다. 일부 구현에서, 센서 데이터에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계는 센서 데이터가 임의의 사용자의 존재를 나타내는 적어도 하나의 특성을 포함하는지 결정하는 단계를 포함할 수 있다. 일부 구현에서, 자동화 어시스턴트 루틴은 사용자의 사용자 프로필과 관련하여 저장될 수 있고, 센서 데이터에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계는 센서 데이터가 사용자 프로필과 관련하여 또한 저장되는 적어도 하나의 특성을 포함하는지 결정하는 단계를 포함할 수 있다.
다른 구현에서, 하나 이상의 프로세서에 의해 수행되는 방법은 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 초기화되었다는 제1 전자 통지를 수신하는 단계와 같은 동작들을 포함하는 것으로 설명된다. 자동화 어시스턴트 루틴은 자동화 어시스턴트에 액세스 가능한 하나 이상의 에이전트에 의해 수행될 액션 세트에 대응할 수 있다. 방법은 하나 이상의 에이전트 중 하나의 에이전트가 자동화 어시스턴트 루틴을 촉진하기 위해 액션 세트의 액션의 수행을 초기화하게 하는 단계를 더 포함할 수 있다. 액션은 제1 클라이언트 디바이스로 하여금 사용자에게 프리젠테이션하기 위한 컨텐츠를 렌더링하게 할 수 있고, 컨텐츠는 액션 수행시 에이전트에 의해 생성된 데이터에 기초할 수 있다. 방법은 또한 사용자가 제1 클라이언트 디바이스로부터 멀어졌다는 제2 통지를 수신하는 단계와, 그리고 제2 통지를 수신하는 것에 응답하여, 제1 클라이언트 디바이스에서의 컨텐츠의 렌더링이 적어도 일시적으로 중지되도록 하는 단계를포함할 수 있다. 방법은 또한 사용자가 제2 클라이언트 디바이스 근처에서 검출되었다는 제3 통지를 수신하는 단계와, 그리고 제3 통지를 수신하는 것에 응답하여, 제2 클라이언트 디바이스로 하여금 자동화 어시스턴트 루틴을 촉진하기 위해, 사용자에게 프리젠테이션하기 위한 추가 컨텐츠를 렌더링하게 하는 단계를 포함할 수 있다.
일부 구현에서, 방법은 제1 통지 수신하는 것에 응답하여 루틴 인스턴스 데이터를 생성하는 단계를 포함할 수 있고, 루틴 인스턴스 데이터는 자동화 어시스턴트 루틴과 관련된 정보를 제공하고, 루틴 인스턴스 데이터는 에이전트에 의해 수행되는 액션의 상태 및 제1 클라이언트 디바이스를 식별한다.
일부 구현에서, 방법은 제2 통지를 수신하는 것에 응답하여, 에이전트가 적어도 일시적으로 액션의 수행을 중지시키도록 루틴 인스턴스 데이터를 수정하는 단계를 포함할 수 있다. 에이전트는 액션의 수행을 계속할지 여부를 결정하기 위해 액션의 수행 중에 루틴 인스턴스 데이터에 적어도 주기적으로 액세스한다.
일부 구현에서, 방법은 제3 통지를 수신하는 것에 응답하여, 에이전트가 액션의 수행을 재개하도록 루틴 인스턴스 데이터를 수정하는 단계 또는 에이전트가 액션의 수행을 재개하도록 명령을 에이전트로 전송하는 단계를 포함할 수 있다.
일부 구현에서, 제2 통지는 제1 클라이언트 디바이스와 통신하는 센서의 센서 데이터에 기초하여, 제1 클라이언트 디바이스가 사용자가 더 이상 제1 클라이언트 디바이스 근처에서 검출 가능하지 않다고 결정하는 것에 응답하여 제1 클라이언트 디바이스로부터 수신될 수 있다. 일부 구현에서, 센서는 제1 클라이언트 디바이스 및 제2 클라이언트 디바이스에 대해 공통 네트워크에 연결된 제3 디바이스에 통합된다.
일부 구현에서, 자동화 어시스턴트 루틴은 사용자가 제1 클라이언트 디바이스의 자동화 어시스턴트 인터페이스에 음성 발화를 제공하는 것에 응답하여 제1 클라이언트 디바이스에서 초기화될수 있고, 그리고 제1 클라이언트 디바이스가 사용자를 위해 컨텐츠를 렌더링하게 하는 단계는 제1 클라이언트 디바이스가 제1 클라이언트 디바이스의 자동화 어시스턴트 인터페이스로부터 가청 출력을 제공하게 하는 단계를 포함한다.
또 다른 구현에서, 하나 이상의 프로세서에 의해 구현되는 방법은 원격 서버 디바이스에서, 제1 클라이언트 디바이스로부터 전송된 데이터를 수신하는 단계 및 원격 서버 디바이스에서, 데이터가 자동화 어시스턴트 액션 세트에 대응하는 자동화 어시스턴트 루틴의 초기화 요청에 대응하는지 결정하는 단계와 같은 동작들을 포함하는 것으로 설명된다. 방법은 또한 데이터가 요청에 대응한다고 결정하는 것에 응답하여, 원격 서버 디바이스에서, 자동화 어시스턴트 액션 세트의 액션에 대한 컨텐츠를 생성하는 단계를 포함할 수 있다. 방법은 제1 클라이언트 디바이스로부터 수신되는 자동화 어시스턴트 루틴의 초기화 요청에 대응하는 데이터에 응답하여, 제1 클라이언트 디바이스가 액션에 대한 컨텐츠를 렌더링하도록 액션에 대한 컨텐츠를 제1 클라이언트 디바이스로 전송하는 단계; 및 제1 클라이언트 디바이스에 의해 액션에 대한 컨텐츠가 렌더링되는 동안 원격 서버 디바이스에서, 사용자가 제2 클라이언트 디바이스에서 계속되는 자동화 어시스턴트 루틴에 직접 또는 간접적으로 관심을 표시했는지 결정하는 단계를 더 포함할 수 있다. 방법은 또한 사용자가 제2 클라이언트 디바이스에서 계속되는 자동화 어시스턴트 루틴에 관심을 표시했다는 결정에 응답하여, 제2 클라이언트 디바이스에서, 자동화 어시스턴트 루틴을 촉진하는 추가 데이터를 렌더링하는 단계를 포함할 수 있다.
일부 구현에서, 방법은 제1 클라이언트 디바이스로부터 수신되는 자동화 어시스턴트 루틴의 초기화 요청에 대응하는 데이터에 응답하여, 원격 서버 디바이스는 자동화 어시스턴트 루틴의 상태를 제1 클라이언트 디바이스에서 활성(active)으로 식별하는 루틴 인스턴스 데이터를 저장하고; 제2 클라이언트 디바이스에서 자동화 어시스턴트 루틴을 계속하는 것에 대한 사용자의 관심을 결정하는 것에 응답하여, 원격 서버 디바이스는 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 비활성이거나 제2 클라이언트 디바이스에서 활성임을 나타내기 위해 루틴 인스턴스 데이터를 수정하는 것을 포함할 수 있다.
일부 구현에서, 방법은 제1 클라이언트 디바이스에서, 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 비활성이거나 제2 클라이언트 디바이스에서 활성임을 나타내기 위해 루틴 인스턴스 데이터가 원격 서버 디바이스에서 수정되었는지 결정하는 단계를 포함할 수 있다. 부가적으로, 방법은 루틴 인스턴스 데이터가 수정되었다는 결정에 응답하여, 제1 클라이언트 디바이스에서 데이터의 렌더링을 중지하는 단계를 포함할 수 있다.
일부 구현에서, 방법은 제1 클라이언트 디바이스 또는 원격 서버 디바이스에서, 루틴 인스턴스 데이터를 생성하는 단계를 포함할 수 있고, 루틴 인스턴스 데이터는 자동화 어시스턴트 루틴을 초기화한 사용자 또는 디바이스, 자동화 어시스턴트 루틴이 초기화된 시간 또는 액션 세트의 액션의 상태를 추가로 식별한다. 일부 구현에서, 추가 컨텐츠는 제1 클라이언트 디바이스에서 이전에 렌더링된 데이터의 적어도 일부를 포함할 수 있다.
일부 구현에서, 방법은 사용자가 제2 클라이언트 디바이스에서 계속되는 자동화 어시스턴트 루틴에 직접 또는 간접적으로 관심을 표시했다고 결정하는 것에 응답하여, 제2 클라이언트 디바이스가 근거리 통신망을 통해 제1 클라이언트 디바이스의 메모리 버퍼로부터 추가 컨텐츠를 수신하게 하는 단계를 포함할 수 있다.
또 다른 구현에서, 하나 이상의 프로세서에 의해 구현되는 방법은 제1 클라이언트 디바이스를 통해 자동화 어시스턴트 루틴을 수행하도록 자동화 어시스턴트를 초기화하는 단계와 같은 동작들을 포함하는 것으로 설명된다. 자동화 어시스턴트 루틴은 자동화 어시스턴트에 의해 수행되는 액션 세트에 대응될 수 있다. 방법은 또한 자동화 어시스턴트 루틴과 관련된 정보를 제공하는 루틴 인스턴스 데이터를 생성하는 단계를 포함할 수 있고, 정보는 자동화 어시스턴트 루틴에 대해 할당된 디바이스로서 제1 클라이언트 디바이스를 식별한다. 방법은 자동화 어시스턴트 루틴을 촉진하기 위해 제1 클라이언트 디바이스가 상기 액션 세트의 액션에 대응하는 컨텐츠를 렌더링하게 하는 단계를 더 포함할 수 있다. 방법은 또한, 사용자가 제1 클라이언트 디바이스에 덜 근접해 졌는지 결정하는 단계를 포함할 수 있고, 그 결정은 제1 클라이언트 디바이스와 통신하는 센서의 센서 데이터에 기초한다. 방법은 사용자가 제1 클라이언트 디바이스에 덜 근접해졌다는 결정에 응답하여 제1 클라이언트 디바이스에서 컨텐츠의 렌더링을 적어도 일시적으로 중지시키는 단계를 더 포함할 수 있다. 방법은 또한 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 적어도 일시적으로 중지되었음을 나타내도록 루틴 인스턴스 데이터를 수정하는 단계를 포함할 수 있다. 방법은 사용자가 자동화 어시스턴트에 액세스할 수 있는 제2 클라이언트 디바이스에 더 근접할 때, 자동화 어시스턴트로 하여금 루틴 인스턴스 데이터에 따라 제2 클라이언트 디바이스를 통해 자동화 어시스턴트 루틴의 수행을 재개하도록 하는 단계를 더 포함할 수 있다.
일부 구현에서, 루틴 인스턴스 데이터를 수정하는 단계는 루틴이 적어도 일시적으로 중지되었을 때 액션 세트의 하나 이상의 액션이 완료되었거나 진행중임을 나타내도록 루틴 인스턴스 데이터를 수정하는 단계를 포함한다.
일부 구현에서, 방법은 사용자가 제2 클라이언트 디바이스에 더 근접해 졌을 때, 자동화 어시스턴트 루틴과 관련된 루틴 허가에 액세스하는 단계 및 루틴 허가에 기초하여, 자동화 어시스턴트 루틴이 제2 클라이언트 디바이스로 전송되도록 허용되는지 결정하는 단계를 포함할 수 있다.
일부 구현에서, 방법은 자동화 어시스턴트 루틴이 제2 클라이언트 디바이스에서 재개되었을 때, 자동화 어시스턴트 루틴이 제2 클라이언트 디바이스에서 재개되었음을 나타내도록 루틴 인스턴스 데이터의 수정을 야기하는 단계를 포함할 수 있다.
일부 구현에서, 루틴 인스턴스 데이터를 생성하는 단계는 정보를 원격 서버 디바이스로 전송하는 단계를 포함하고, 그리고 루틴 인스턴스 데이터를 수정하는 단계는 루틴 인스턴스 데이터를 수정하라는 요청을 원격 서버 디바이스로 전송하는 단계를 포함한다. 일부 구현에서, 센서는 제1 클라이언트 디바이스 및 제2 클라이언트 디바이스와 다른 제3 클라이언트 디바이스에 통합된다.
일부 구현에서, 자동화 어시스턴트가 제2 클라이언트 디바이스를 통해 자동화 어시스턴트 루틴의 수행을 재개하게 하는 단계는 제2 클라이언트 디바이스가 액션 세트의 액션에 대응하는 추가 컨텐츠를 렌더링하게 하는 단계를 포함한다.
추가로, 일부 구현은 하나 이상의 컴퓨팅 디바이스의 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서는 관련 메모리에 저장된 명령들을 실행하도록 동작 가능하고, 명령들은 전술한 방법들 중 어느 하나의 수행을 유발하도록 구성된다. 일부 구현은 또한 전술한 방법 중 어느 하나를 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 컴퓨터 명령들을 저장하는 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 포함한다.
도 1은 디바이스들 사이에서 자동화 어시스턴트 루틴을 전환하기 위한 시스템을 도시한다.
도 2는 클라이언트 디바이스들 사이의 사용자 이동에 기초하여 클라이언트 디바이스들 사이에서 루틴을 전송하기 위한 상태도를 예시한다.
도 3은 자동화 어시스턴트 루틴이 클라이언트 디바이스들 사이에 전송되도록 하는 방법을 예시한다.
도 4는 예시적인 컴퓨터 시스템의 블록도이다.
도 1은 디바이스들 사이에서 자동화 어시스턴트 루틴을 전환하기 위한 시스템(100)을 도시한다. 시스템(100)은 적어도 하나의 원격 서버 디바이스(102)와 같은 하나 이상의 원격 자동화 어시스턴트 디바이스(112)를 포함할 수 있다. 많은 구현에서, 서버 디바이스(102)는 서로 협력하여 동작하는 "클라우드 기반" 서버 디바이스들의 클러스터를 포함한다. 자동화 어시스턴트(104)는 서버 디바이스(102)의 일부로서 도시되며, 서버 디바이스(102)는 다양한 구현에서 자동화 어시스턴트 (104)의 기능의 적어도 일부를 구현할 수 있다. 자동화 어시스턴트(104)가 서버 디바이스(102)의 일부로 도 1에 도시되어 있지만, 많은 구현에서 자동화 어시스턴트(104)는 부분적으로는 클라이언트 디바이스(116 및 128)와 같은 하나 이상의 클라이언트 디바이스에서 제공되는 어시스턴트 애플리케이션을 통해 동작하고, 부분적으로는 서버 디바이스(102)에 포함된 원격 자동화 어시스턴트 컴포넌트를 통해 동작할 수 있다. 예를 들어, 일부 구현에서 제1 클라이언트 디바이스(116)와 서버 디바이스(102)는 서로 인터페이스하여 제1 클라이언트 디바이스(116)의 어시스턴트 인터페이스를 통해 사용자(118)와 상호 작용할 수 있는 자동화 어시스턴트의 논리적 인스턴스를 형성할 수 있다. 또한, 제2 클라이언트 디바이스(128)와 서버 디바이스(102)는 서로 인터페이스하여 제2 클라이언트 디바이스(116)의 어시스턴트 인터페이스를 통해 사용자(118)와 상호 작용할 수 있는 자동화 어시스턴트의 다른 논리적 인스턴스를 형성할 수 있다.
또한, 많은 구현에서 제1 클라이언트 디바이스(116)와 서버 디바이스(102)를 통해 형성된 자동화 어시스턴트의 논리적 인스턴스 및 제2 클라이언트 디바이스(128)와 서버 디바이스(102)를 통해 형성된 자동화 어시스턴트의 논리적 인스턴스는 사용자(118)의 관점에서 볼 때 자동화 어시스턴트의 단일 논리적 인스턴스인 것처럼 보이는 것을 형성할 수 있다. 예를 들어, 많은 구현에서 사용자(118)는 클라이언트 디바이스(116 및 128) 중 하나를 통해 자동화 어시스턴트와 상호 작용할 때 동일 및/또는 유사한 자동화 어시스턴트 기능이 수행되도록 할 수 있다. 예를 들어, 클라이언트 디바이스(116 및 128)는 예를 들어 동일한 사용자 계정(예를 들어, 사용자(118) 및/또는 별도의 사용자의 사용자 계정)과 연관되고, 동일한 네트워크상에 있고, 저장된 디바이스 토폴로지에서 서로 연관되는 것을 통해 서로 관련될 수 있다. 그 결과, 클라이언트 디바이스(116 및 128) 중 어느 하나는 사용자 (118)와 상호 작용하여, 동일한 주변 디바이스 세트를 제어하고, 클라이언트 디바이스(116 및 128)에 개인화 및/또는 맞춤화된 컨텐츠에 액세스하고, 클라이언트 디바이스(116 및 128)와 연관된(및/또는 사용자(118)과 연관된) 자동화 어시스턴트 루틴의 수행을 개시할 수 있다.
더욱이, 본 명세서에 상세히 설명되는 바와 같이, 다양한 구현에서 자동화 어시스턴트 루틴은 클라이언트 디바이스(116 및 128) 중 하나에서 개시될 수 있다. 예를 들어, 제1 클라이언트 디바이스(116)에서의 자동화 어시스턴트 루틴의 시작에 응답하여, 자동화 어시스턴트 루틴의 적어도 일부에 대응하는 컨텐츠가 제1 클라이언트 디바이스(116)에서 렌더링(예를 들어, 해당 클라이언트 디바이스에서만 독점적으로 렌더링)될 수 있다. 또한, 사용자(118)가 더 이상 제1 클라이언트 디바이스(116) 근처에 있지 않거나 및/또는 사용자가 제2 클라이언트 디바이스(128) 근처에 있다는 결정에 응답하여, 자동화 어시스턴트 루틴에 대응하는 컨텐츠의 렌더링은 제1 클라이언트 디바이스(116)에서 중지될 수 있고 및/또는 제2 클라이언트 디바이스(128)에서 개시될 수 있다. 예를 들어, 사용자(118)가 더 이상 제1 클라이언트 디바이스(116) 근처에 있지 않다는 결정에 응답하여, 제1 클라이언트 디바이스(116)에서 임의의 자동화 어시스턴트 루틴 컨텐츠의 렌더링이 중지될 수 있다. 추가적으로 또는 대안적으로, 사용자(118)가 제2 클라이언트 디바이스(128) 근처에 있다는 결정에 응답하여, 제2 클라이언트 디바이스(128)에서 자동화 어시스턴트 루틴 컨텐츠의 렌더링이 개시될 수 있다. 예를 들어, 제1 클라이언트 디바이스(116)에서 컨텐츠의 렌더링이 중지되는 경우, 컨텐츠의 렌더링은 제2 클라이언트 디바이스(128)에서 재개될 수 있다. 제2 클라이언트 디바이스(128)에서의 컨텐츠의 렌더링은 제1 클라이언트 디바이스(116)에서 중지된 지점으로부터 재개되거나, 해당 지점 근처이지만 앞선 지점에서 재개(예를 들어, 중지되기 전 10초에서 재개)될 수 있다. 또한 예를 들어, 제1 클라이언트 디바이스(116)에서의 컨텐츠 렌더링이 중지되지 않는 경우, 제2 클라이언트 디바이스(128)에서의 컨텐츠 렌더링은 제1 클라이언트 디바이스(116)에서의 컨텐츠 렌더링과 동기화되도록 개시될 수 있다.
도 1에는 2개의 클라이언트 디바이스(116 및 128)만이 도시되어 있지만, 많은 구현에서 사용자(118)는 예를 들어, 집(130)에 있는 다른 디바이스(들), 사용자(118)의 차량에 있는 차량 기반 디바이스 및/또는 집(130) 이외의 다른 구조물에 있는 다른 디바이스(들)와 같은 추가 및/또는 대체 디바이스를 통해 자동화 어시스턴트(104)에 액세스할 수 있다. 임의의 이러한 디바이스들 사이의 자동화 어시스턴트 루틴의 전송(transfer)은 본 명세서에 개시된 구현들에 따라 실행될 수 있다. 더욱이, 클라이언트 디바이스(116 및 128) 및/또는 어시스턴트 인터페이스를 갖는 다른 디바이스들이 적어도 그 디바이스들 사이에서 루틴을 전송할 목적으로 서로 링크되는지를 결정하기 위해 다양한 기술이 이용될 수 있다. 이들 기술은 예를 들어 디바이스와 연관된 사용자 계정, 디바이스와 연관된 네트워크, 디바이스들을 서로 연관시키고 선택적으로 디바이스들을 (방 정의를 통해) 공간적으로 상관시키는 디바이스 토폴로지 등을 활용할 수 있다.
사용자(118)는 클라이언트 디바이스(116 및 128) 중 어느 하나의 어시스턴트 인터페이스를 통해 자동화 어시스턴트(104)와 상호 작용할 수 있다. 어시스턴트 인터페이스는 하나 이상의 모달리티(modalities, 양식)를 사용하여 사용자의 사용자 인터페이스 입력을 수신하고, 하나 이상의 모달리티를 사용하여 사용자 인터페이스 출력을 렌더링한다. 사용자 인터페이스 입력 모달리티는 예를 들어 입력/터치, 음성 및 제스처 모달리티를 포함하고, 모달리티에 대한 사용자 인터페이스 입력은 예를 들어 클라이언트 디바이스의 마이크로폰(들)(음성 모달리티), 클라이언트 디바이스의 터치 스크린 및/또는 의 키보드(입력 모달리티), 클라이언트 디바이스의 카메라(제스처 모달리티) 등을 통해 수신될 수 있다. 사용자 인터페이스 출력 모달리티는 예를 들어 가청, 그래픽 및/또는 햅틱을 포함하고, 모달리티에 대한 사용자 인터페이스 출력은 예를 들어 클라이언트 디바이스 스피커(들)(가청 모달리티), 클라이언트 디바이스 디스플레이 디바이스(들)(시각적 모달리티), 클라이언트 디바이스의 변환기(들)(햅틱 모달리티) 들을 통해 렌더링될 수 있다. 예를 들어, 사용자는 자동화 어시스턴트(104)가 기능(예를 들어, 데이터 제공, 주변 디바이스 제어, 에이전트 액세스)을 수행하도록 하기 위해 어시스턴트 인터페이스에 구두, 텍스트, 제스처 또는 그래픽 입력을 제공함으로써 자동화 어시스턴트(104)에 사용자 인터페이스 입력을 제공할 수 있다. 수행된 기능에 대응하는 응답 컨텐츠는 클라이언트 디바이스의 스피커(들), 디스플레이 스크린(들) 및/또는 다른 사용자 인터페이스 출력 디바이스(들)를 통해 렌더링될 수 있다. 일부 구현에서, 클라이언트 디바이스(116) 및/또는 클라이언트 디바이스(128)는 터치 입력을 수신하는 터치 인터페이스를 포함하고 자동화 어시스턴트 출력을 렌더링하도록 구동될 수도 있는 디스플레이 패널과 같은 디스플레이 디바이스를 포함할 수 있다. 일부 구현에서, 클라이언트 디바이스(116) 및/또는 클라이언트 디바이스(128)는 디스플레이 디바이스가 없을 수 있으므로, 그래픽 사용자 인터페이스 출력 모달리티를 제공하지 않고 가청 어시스턴트 인터페이스 출력 모달리티를 제공할 수 있다.
클라이언트 디바이스(116 및 128)는 각각 인터넷과 같은 네트워크를 통해 서버 디바이스(102)와 통신할 수 있다. 클라이언트 디바이스(116 및/또는 128)는 예를 들어 클라이언트 디바이스(116 및/또는 128)에서 계산 리소스를 보존하고 및/또는 원격 컴퓨팅 디바이스(102)에서 이용 가능한 더 강건한 리소스를 활용하기 위해 서버 디바이스(102)로 계산 작업을 오프로드할 수 있다. 예를 들어, 자동화 어시스턴트(104)의 양태는 제1 클라이언트 디바이스(116)의 로컬 어시스턴트 애플리케이션을 통해 구현될 수 있고 자동화 어시스턴트(104)의 다른 양태를 구현하는 서버 디바이스(102)와 인터페이스할 수 있다. 예를 들어, 로컬 어시스턴트 애플리케이션은 선택적으로 하나 이상의 로컬 음성-텍스트 변화 엔진, 하나 이상의 로컬 텍스트-음성 변환 엔진, 및/또는 서버 디바이스(102)의 엔진(들)을 보완하거나 대체하는 다른 로컬 엔진을 포함할 수 있다. 서버 디바이스(102)는 다중 스레드를 통해 복수의 사용자 및 그와 관련된 어시스턴트 애플리케이션을 선택적으로 서비스할 수 있다. 자동화 어시스턴트(104)의 양태가 클라이언트 디바이스의 로컬 어시스턴트 애플리케이션을 통해 구현되는 구현에서, 로컬 어시스턴트 애플리케이션은 클라이언트 디바이스의 운영 체제와 분리된(예를 들어, 운영 체제 "위에" 설치된) 애플리케이션일 수 있거나 또는 대안적으로 클라이언트 디바이스의 운영 체제에서 직접 구현(예를 들어, 운영 체제의 애플리케이션으로 간주되지만 통합)될 수 있다.
일부 구현에서, 서버 디바이스(102)는 클라이언트 디바이스에 의해 제공된 오디오 데이터가 그 오디오 데이터(예를 들어, 텍스트)의 시맨틱(의미) 표현으로 변환되는 자동 음성 인식을 수행할 수 있다. 예를 들어, 서버 디바이스(102)는 어시스턴트 인터페이스에서 수신된 오디오 데이터를 처리하여 오디오 데이터에 임베딩된 텍스트를 식별할 수 있는 음성-텍스트 변환 엔진(108)(음성-텍스트 변환 엔진 또는 STT 엔진이라고도 지칭됨)을 포함할 수 있다. 오디오 데이터를 텍스트로 변환하는 프로세스는 음성 인식 알고리즘을 포함할 수 있으며, 이는 단어 또는 구에 대응하는 오디오 데이터 그룹을 식별하기 위해 신경망 및/또는 통계 모델을 사용할 수 있다. 비-제한적인 예로서, 오디오 데이터는 하나 이상의 트레이닝된 음향 모델(예를 들어, 하나 이상의 장단기(LSTM) 계층이 있는 신경망 모델)을 사용하여 처리되어 오디오 데이터에 존재하는 음운 및/또는 음소를 생성할 수 있으며, 그 음운 및/또는 음소는 분석되어 음운 및/또는 음소에 대응하는 텍스트를 생성할 수 있다. 오디오 데이터로부터 변환된 텍스트는 오디오 데이터에 대한 적절한 자동화 어시스턴트 응답을 결정할 때 서버 디바이스(102)에서 추가 컴포넌트들에 의해 추가로 처리될 수 있다. 추가 처리는 텍스트 및/또는 하나 이상의 관련 값에 의해 표시된 시맨틱 의도를 결정하기 위해 자연어 이해 엔진에 의한 처리를 포함할 수 있으며, 그 시맨틱 의도는 응답(responsive) 컨텐츠를 생성하는데 사용될 수 있다. 예를 들어, 응답 컨텐츠는 의도 및 관련 값들의 표시를 포함하는 명령을 에이전트로 전송하고 응답으로 응답 컨텐츠를 수신하는 것에 기초하여 생성될 수 있다. 추가 처리는 추가적으로 또는 대안적으로 아래에서 더 상세히 설명되는 루틴 관리 엔진(124)에 의한 처리를 포함할 수 있다.
사용자(118)는 자동화 어시스턴트(104)가 대응하는 자동화 어시스턴트 루틴의 다양한 다른 액션을 수행하도록 하기 위해, 제1 클라이언트 디바이스(116) 또는 제2 클라이언트 디바이스(118)의 어시스턴트 인터페이스에서 제공되는 입력을 통해 자동화 어시스턴트 루틴을 초기화할 수 있다. 루틴 관리 엔진(124)은 대응하는 액션들에 대한 입력의 매핑을 포함하는 루틴 데이터(110)에 대한 입력을 비교할 수 있다. 대응하는 루틴의 수행을 개시하기 위해 그 루틴에 대한 축약 문구의 음성 입력, 축약 문구의 타이핑 입력, 루틴에 대한 그래픽 사용자 인터페이스 엘리먼트상의 사용자 탭핑, 루틴에 대한 제스처(예를 들어, 카메라 및/또는 다른 센서를 통해 검출된 사용자의 손 흔들기 및/또는 물리적 움직임)과 같은 다양한 유형의 입력이 제공될 수 있다. 일부 구현에서, 자동화 어시스턴트는 사용자로부터 명시적인 사용자 인터페이스 참여없이 루틴을 수행할 수 있다. 예를 들어, 자동화 어시스턴트는 클라이언트 디바이스가 특정 시간 기간 내에 사용자의 존재를 검출하거나 특정 시간 기간 내에 사용자의 음성을 검출하는 것에 응답하여 루틴을 수행할 수 있다(예를 들어, 오전 7-9사이에 사용자의 존재를 검출하는 것에 응답하여 "굿 모닝" 루틴을 수행함).
하나 이상의 사용자와 자동화 어시스턴트(104) 사이의 상호 작용은 루틴 데이터(110) 및/또는 사용자 데이터(106)로서 (예를 들어, 일시적으로) 저장될 수 있으며, 이는 각각 서버 디바이스(102), 제1 클라이언트 디바이스(116) 및/또는 제2 클라이언트 디바이스(128)에 저장될 수 있다. 루틴 데이터(110)는 예를 들어, 하나 이상의 사용자로부터 수신된 하나 이상의 입력 및 자동화 어시스턴트(104)에 의해 수행될 하나 이상의 루틴을 식별하는 대응 데이터를 제공할 수 있다. 루틴은 자동화 어시스턴트(104), 별도의 에이전트(들), 서버 디바이스(102)로부터 분리된 디바이스 및/또는 자동화 어시스턴트(104)와 상호 작용할 수 있는 임의의 다른 애플리케이션 및/또는 디바이스에 의해 수행될 액션 세트에 대응할 수 있다.
루틴은 자동화 어시스턴트(104)의 지시에 따라 수행될 수 있고 루틴의 수행 중에 하나 이상의 사용자에 의해 제어될 수 있다. 루틴의 상태는 루틴 데이터(110)를 저장하기 위한 데이터베이스를 포함할 수 있는 원격 디바이스(112)에 저장될 수 있다. 루틴 데이터(110)는 루틴 식별자, 상태 식별자, 위치 식별자, 디바이스 식별자, 및/또는 루틴의 특성을 특징화하는데 사용될 수 있는 임의의 다른 정보와 같은 루틴 인스턴스 데이터를 포함할 수 있다.
처음에, 사용자가 루틴의 초기화를 요청하면, 명령은 제1 클라이언트 디바이스(116)의 어시스턴트 인터페이스에 의해 수신될 수 있다. 자동화 어시스턴트(104)는 어시스턴트 인터페이스에서 수신되는 명령을 수신 확인하고 그 루틴에 대한 루틴 데이터(110)를 생성할 수 있다. 일부 구현에서, 자동화 어시스턴트(104)는 사용자로부터 명령을 수신하여, 명령에 대응하는 루틴을 식별하기 위해 질의를 수행할 수 있다. 루틴이 식별되면, 자동화 어시스턴트(104)는 루틴 관리 엔진(124)이 데이터베이스에 액세스하도록 하고, 루틴과 관련된 상태 식별자를 수정하여 루틴이 활성 상태임(예를 들어, "modify routine.current_routine.status = '1'")을 표시하도록 할 수 있다.
사용자가 어시스턴트 인터페이스에서 루틴을 초기화할 때, 자동화 어시스턴트(104)는 루틴과 관련된 액션 세트를 식별하고 그에 따라 액션 세트의 각 액션을 위임할 수 있다. 예를 들어, 액션 세트의 적어도 하나의 액션은 별도의 컴퓨팅 디바이스에서 호스팅되는 에이전트에 의해 적어도 부분적으로 수행될 수 있다. 따라서, 자동화 어시스턴트(104)는 에이전트와 통신하여 에이전트가 액션을 수행하기 시작하도록 할 수 있다. 액션을 수행할 때, 에이전트는 제1 클라이언트 디바이스(116)가 에이전트에 의해 생성된 컨텐츠를 렌더링하게 할 수 있다. 에이전트는 제1 클라이언트 디바이스(116)가 컨텐츠를 렌더링하도록 직접 제1 클라이언트 디바이스(116)와 인터페이스할 수 있거나, 자동화 어시스턴트(104)에 컨텐츠를 제공할 수 있으며, 이는 제1 클라이언트 디바이스(116)로 하여금 컨텐츠(또는 그것의 텍스트-음성 변환과 같은 그것의 변환)를 렌더링하게 한다. 자동화 어시스턴트(104)는 개별 액션 및/또는 루틴의 상태를 나타내기 위해, 액션의 수행 중에 한 번 이상(예를 들어, 주기적으로) 데이터베이스에 액세스하도록 에이전트를 선택적으로 태스크하여, 액션 및/또는 루틴과 관련된 하나 이상의 상태 식별자를 업데이트할 수 있다.
루틴에 대한 액션 세트의 액션을 수행하는 동안, 사용자(118)는 루틴이 초기화된 디바이스로부터 떨어져 재배치될 수 있다. 예를 들어, 사용자(118)가 집의 첫 번째 방(120)에서 루틴을 초기화한 경우, 사용자(118)는 집의 두 번째 방(122)으로 이동하도록 선택할 수 있다. 첫 번째 방(120)은 제1 클라이언트 디바이스(116)를 포함할 수 있고, 두 번째 방(122)은 제2 클라이언트 디바이스(128)를 포함할 수 있다. 일부 구현에서, 제1 클라이언트 디바이스(116)는 하나 이상의 센서로부터의 하나 이상의 신호를 사용하여 사용자(118)가 제1 클라이언트 디바이스(116)에 근접한 정도를 결정할 수 있다. 예를 들어, 제1 클라이언트 디바이스(116)는 오디오, 비디오, 촉각, 온도, 위치, 블루투스, 및/또는 사용자의 허가를 받아 사용자(118)의 위치 및/또는 사용자(118)가 센서 근처에 있는지 여부를 결정하는 사용될 수 있는 센서 데이터를 제공할 수 있는 임의의 다른 유형의 센서로 통신할 수 있다. 사용자(118)의 근접 정도가 제1 클라이언트 디바이스(116)에 비해 감소함에 따라, 자동화 어시스턴트(104)는 자동화 어시스턴트(104)에 의해 수행되는 액션 및/또는 루틴을 일시 중지함으로써 사용자(118) 근접의 변화에 응답할 수 있다. 예를 들어, 제1 클라이언트 디바이스(116)의 자동화 어시스턴트 애플리케이션 및/또는 서버 디바이스(102)의 원격 자동화 어시스턴트 컴포넌트는 센서 데이터를 이용하여, 제1 클라이언트 디바이스(116)의 임계 거리 내에서 사용자가 검출되지 않았고, 제1 클라이언트 디바이스(116) 근처에서 사용자가 전혀 검출되지 않았고, 및/또는 특정 사용자(118)가 제1 클라이언트 디바이스(116)의 임계 거리내에서 또는 전혀 근처에서 검출되지 않았음을 결정할 수 있다. 또한, 그러한 결정에 기초하여, 자동화 어시스턴트(104)는 루틴과 관련된 컨텐츠의 렌더링이 제1 클라이언트 디바이스(116)에서 일시 중지되도록 할 수 있다. 컨텐츠 렌더링의 일시 중지는 제1 클라이언트 디바이스(116)에서 자동화 어시스턴트 애플리케이션에 의해 (예를 들어, 임의의 버퍼링된 컨텐츠의 렌더링을 중지하고 및/또는 명령을 원격 서버 디바이스(102)에 전송하여 임의의 컨텐츠 스트리밍이 중지되게 함으로써) 수행될 수 있고, 및/또는 서버 디바이스(102)의 원격 자동화 어시스턴트 컴포넌트(들)에 의해 (예를 들어, 제1 클라이언트 디바이스(116)로 명령을 전송하여 임의의 버퍼링된 컨텐츠의 렌더링이 중지되게 하고 및/또는 제1 클라이언트 디바이스(116)로의 임의의 루틴 컨텐츠의 스트리밍 중단되게 함으로써) 수행될 수 있다. 또한, 자동화 어시스턴트(104)는 사용자 (118)가 제1 클라이언트 디바이스(116)에 덜 근접하게 되었음을 나타내고 및/또는 루틴 및/또는 액션이 일시 중지되었음을 나타내는 신호를 루틴 관리 엔진(124)에 제공할 수 있다.
루틴 관리 엔진(124)은 이에 따라 루틴 데이터(110)를 업데이트할 수 있다. 예를 들어, 루틴 관리 엔진(124)은 자동화 어시스턴트 루틴 및/또는 액션이 일시 중지되었음을 반영하도록 루틴 데이터(110)가 업데이트되도록 할 수 있다. 일부 구현에서, 루틴 관리 엔진(124)은 루틴 데이터(110)를 업데이트하여, 제1 클라이언트 디바이스(116)에서의 루틴의 컨텐츠 렌더링이 일시 중지되었음을 반영하고, 일시 중지되었을 때 루틴의 상태(예를 들어, 어떤 액션(들)이 수행되었는지, 어떤 컨텐츠가 렌더링되었는지 등)를 반영하고 및/또는 루틴이 일시 중지된 시간에 해당하는 타임 스탬프를 나타낼 수 있다. 만료 시기 또는 특정 일시 중지된 루틴이 재개될 수 없게 만드는 시기를 결정하기 위해 다수의 상이한 일시 중지된 루틴에 대한 타임 스탬프가 추적될 수 있다. 예를 들어, 일시 중지된 루틴에 대한 특정 타임 스탬프가 사전 결정된 임계값에 도달하면, 일시 중지된 루틴은 재개할 수 없음으로 지정될 수 있다. 이런한 방식으로, 임계 기간(예를 들어, 24 시간) 동안 일시 중지된 아침 루틴과 같은 루틴은 다음 날 재개되지 않을 것이며, 따라서 다른 데이터가 다른 날에 렌더링되도록 할 수 있는 액션(예를 들어, 사용자에게 일일 일정을 읽어 주는 액션)을 놓치는 것을 방지한다.
사용자(118)가 제1 클라이언트 디바이스(116)로부터 멀어지고 그로 인해 루틴이 일시 중지되도록 할 때, 사용자(118)는 도 1에 제공된 바와 같이 두 번째 방 (122)에 있는 제2 클라이언트 디바이스(128)에 더 근접하게 이동할 수 있다. 제2 클라이언트 디바이스(128) 근처의 사용자의 존재는 (사용자(118)가 제1 클라이언트 디바이스(116)에 덜 근접한지를 결정하기 위해 선택적으로 사용되는 것들에 추가되고 및/또는 동일한) 하나 이상의 센서로부터의 센서 데이터에 기초하여 자동화 어시스턴트(104)에 의해 결정될 수 있다. 예를 들어, 제2 클라이언트 디바이스(116)의 자동화 어시스턴트 애플리케이션 및/또는 서버 디바이스(102)의 원격 자동화 어시스턴트 컴포넌트는 센서 데이터를 사용하여 사용자가 제2 클라이언트 디바이스(128)의 임계 거리내에 있는지, 임의의 사용자가 제2 클라이언트 디바이스(128) 근처에서 모두 검출되는지, 및/또는 특정 사용자(118)가 제2 클라이언트 디바이스(128)의 임계 거리내에서 또는 근처에서 모두 검출되는지를 결정할 수 있다. 더욱이, 이러한 결정에 기초하여, 자동화 어시스턴트(104)는 루틴과 관련된 컨텐츠의 렌더링이 제2 클라이언트 디바이스(128)에서 재개되도록 할 수 있다. 예를 들어, 서버 디바이스는 렌더링을 위해 제공될 컨텐츠를 결정하기 위하여 일시 중지되었을 때의 저장된 루틴 상태에 선택적으로 의존하여, 루틴과 관련된 컨텐츠가 렌더링을 위해 제2 클라이언트 디바이스(128)로 전송되도록 할 수 있다(예를 들어, 이로 인해 컨텐츠가 중지된 지점 또는 중지된 지점 직전에 선택되도록 함).
다양한 구현에서, 사용자(118)가 제2 클라이언트 디바이스(128) 근처에 존재한다는 결정에 응답하여, 루틴 관리 엔진(124)은 루틴 데이터(110)의 질의를 수행하여, (사용자(118) 및/또는 클라이언트 디바이스(128)에 대응하는) 임의의 루틴의 상태가 일시 중지 또는 비활성(예를 들어, "modify routine.current_ routine.status = "0'")으로 표시되는지 여부를 결정할 수 있다. 루틴 관리 엔진(124)은 예를 들어 주어진 루틴이 일시 중지되었으며, 사용자(118)가 제2 클라이언트 디바이스(128) 근처에 존재하고 사용자(118) 및/또는 제2 디바이스가 주어진 루틴과 연관되어 있는지 결정한 결과로서, 자동화 어시스턴트(104)로 하여금 제2 클라이언트 디바이스(128)를 통해 루틴의 재개를 야기하게 한다. 예를 들어, 루틴 관리 엔진(124)은 자동화 어시스턴트(104)로 루틴이 일시 중지되었을 때의 상태 표시를 제공할 수 있고, 루틴이 일시 중지되었을 때의 상태에 기초하여 재개되도록 할 수 있다.
일 예로서, 루틴의 액션에 대해 현재 팟캐스트의 2 분 표시(mark)에서 루틴이 일시 중지된 경우, 자동화 어시스턴트(104)는 2 분 표시에서 또는 그 근처(예를 들어, 그 표시의 5, 10 또는 15 초)에서 시작하여 팟캐스트가 제2 클라이언트 디바이스(128)에서 렌더링되도록 할 수 있다. 자동화 어시스턴트(104)는 선택적으로 팟캐스트를 로컬에 저장하여 렌더링의 재개를 인에이블하거나 에이전트와 인터페이스하여 렌더링의 재개를 유발할 수 있다. 예를 들어, 자동화 어시스턴트(104)는 에이전트에 명령을 제공하여 에이전트가 (클라이언트 디바이스에 직접 또는 서버 디바이스(102)를 통해) 팟캐스트를 계속 제공하도록 할 수 있다. 또한, 예를 들어, 자동화 어시스턴트(104)는 팟캐스트 액션이 다시 활성화되었음을 반영하기 위해 루틴 관리 엔진(124)이 루틴 데이터(110)를 업데이트하도록 할 수 있으며, 에이전트는 (예를 들어, API를 통해) 루틴 데이터(110)에 액세스하여 팟캐스트가 다시 활성화되고 결과적으로 (클라이언트 디바이스로 직접 또는 서버 디바이스(102)를 통해)팟캐스트의 제공을 재개할 수 있다.
다른 예로서, 루틴의 제1 액션에 대응하는 제1 컨텐츠의 렌더링이 완료된 후, 루틴의 제2 액션에 대응하는 제2 컨텐츠의 임의의 렌더링 이전에 루틴이 일시 중지된 경우, 자동화 어시스턴트(104)는 제2 컨텐츠가 제2 클라이언트 디바이스 (128)에서 렌더링되도록 할 수 있다. 예를 들어, 자동화 어시스턴트(104)는 제2 액션과 관련된 에이전트에 명령을 제공하여 제2 컨텐츠를 생성 및/또는 제공하도록 할 수 있다. 또한, 예를 들어, 자동화 어시스턴트(104)는 루틴이 다시 활성화되고 제2 액션이 수행될 준비가 되었음을 반영하기 위해 루틴 관리 엔진(124)이 루틴 데이터(110)를 업데이트하도록 할 수 있으며, 에이전트는 (예를 들어, API를 통해) 루틴 데이터(110)에 액세스하여 제2 액션이 수행될 준비가 되었음을 결정하고 결과적으로 제2 컨텐츠를 생성 및/또는 제공할 수 있다. 또 다른 예로서, 제2 에이전트는 이미 제2 컨텐츠를 서버 디바이스(102)에 제공했을 수 있고, 서버 디바이스 (102)는 컨텐츠를 버퍼링했을 수 있으며, 자동화 어시스턴트(104)는 버퍼링된 컨텐츠에 액세스하여 제2 클라이언트 디바이스(128)를 통해 그 렌더링을 유발할 수 있다.
이러한 방식 및 다른 방식으로, 사용자(118)는 자신의 집(130) 주변 및/또는 클라이언트 디바이스(116 및 128)와 링크된 어시스턴트 디바이스(들)를 포함하는 다른 환경으로 이동할 수 있으며, 루틴의 컨텐츠는 다양한 어시스턴트 디바이스(들)간에 전송되어 사용자(118)는 전체 루틴에 속하는 컨텐츠를 인식한다. 이것은 사용자가 컨텐츠 전체를 인식할 수 있게 하여, 사용자(118)가 루틴의 추가적인 계산 집약적 성능을 다시 요청할 필요성을 완화할 수 있다. 추가적으로 또는 대안적으로, 루틴의 컨텐츠의 렌더링이 다른 어시스턴트 디바이스로 전송될 때 종래의 어시스턴트 디바이스에서 중단되는 구현에서, 종래의 어시스턴트 디바이스에서의 리소스 소비는 이러한 중단을 통해 감소될 수 있으며, 이는 종래의 어시스턴트 디바이스가 루틴의 컨텐츠를 계속해서 불필요하게 렌더링하는 것을 방지한다.
도 2는 클라이언트 디바이스들 사이의 사용자 이동에 기초하여 클라이언트 디바이스들 사이에서 루틴을 전송하는 일 예의 상태도(200)를 도시한다. 상태도 (200)는 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구현될 수 있다. 상태도(200)는 제1 클라이언트 디바이스(202), 제2 클라이언트 디바이스(204), 서버 자동화 어시스턴트(206) 및 제3자 에이전트(208) 간의 통신을 상세히 설명한다. 컴포넌트들 간의 특정 상호 작용이 도 2에 도시되어 있지만, 다양한 구현에서 개별 컴포넌트에 의해 수행되는 것으로 표시된 특정 동작들은 추가적으로 또는 대안적으로 대체 컴포넌트에 의해 수행될 수 있다. 예를 들어, 제1 클라이언트 디바이스(202)에 의해 수행되는 일부 동작들은 서버 자동화 어시스턴트(206)에 의해 대신 수행될 수 있으며 그 반대도 마찬가지이다. 서버 자동화 어시스턴트(206) 및 에이전트(208) 각각은 제1 원격 디바이스(210)(예를 들어, 클라우드 기반 서버들의 클러스터(들)) 및 제2 원격 디바이스(212)에서 각각 적어도 부분적으로 호스팅될 수 있다. 서버 자동화 어시스턴트(206)는 제1 클라이언트 디바이스(202), 제2 클라이언트 디바이스(204), 제1 원격 디바이스(210) 및/또는 에이전트(208) 각각에 액세스할 수 있다. 또한, 사용자는 제1 클라이언트 디바이스(202) 및/또는 제2 클라이언트 디바이스(204)에서 자동화 어시스턴트 인터페이스를 통해 자동화 어시스턴트와 상호 작용할 수 있다. 예를 들어, 사용자는 자동화 어시스턴트를 초기화하여, 제1 클라이언트 디바이스(202)의 자동화 어시스턴트 인터페이스를 통해 루틴을 수행할 수 있다. 루틴은 자동화 어시스턴트에 액세스할 수 있는 하나 이상의 에이전트와의 상호 작용을 통해 선택적으로 자동화 어시스턴트의 지시에 따라 수행될 수 있는 액션 세트일 수 있다.
상태도(200)의 동작(214)에서 루틴이 초기화되는 경우, 제1 클라이언트 디바이스(202)는 동작(216)에 따라 제1 원격 디바이스(210)로 제1 통지를 전송할 수 있다. 제1 통지는 사용자가 루틴을 초기화했다는 표시를 제공하고, 그에 의해 서버 자동화 어시스턴트(206)가 초기화된 그 특정 루틴을 식별할 수 있게 한다. 일부 구현에서, 제1 클라이언트 디바이스(202)는 사용자의 음성 발화에 대응하는 오디오 데이터를 전송할 수 있고, 제1 원격 디바이스(210)는 오디오 데이터를 처리하여 그 오디오 데이터가 사용자 및/또는 제1 클라이언트 디바이스(202)와 관련하여 저장된 루틴과 같은 루틴에 대응하는지 결정할 수 있다. 이러한 방식으로, 제1 클라이언트 디바이스(202)에서 사용자의 음성 발화는 제1 클라이언트 디바이스(202)에서 루틴을 초기화할 수 있다. 제1 클라이언트 디바이스(202)에서의 초기화에 기초하여 루틴을 식별하는 서버 자동화 어시스턴트(206)에 응답하여, 서버 자동화 어시스턴트(206)는 동작(218)에 따라 루틴 데이터를 생성할 수 있다. 특히, 루틴 데이터는 적어도 제1 클라이언트 디바이스(202) 및 초기화된 루틴을 식별할 수 있다. 일부 구현에서, 루틴 데이터는 루틴을 초기화한 사용자를 나타낼 수 있다. 예를 들어, 사용자와 관련된 식별자가 결정될 수 있고 그 식별자는 루틴 데이터에 포함된다. 사용자와 관련된 식별자는 예를 들어, 식별자와 관련하여 저장된 음성 서명과 제1 클라이언트 디바이스(202)에서 캡처된 오디오 데이터로 캡처된 음성 서명과의 매칭에 기초하고 및/또는 제1 클라이언트 디바이스(202)에서 캡처된 다른 센서 데이터(예를 들어, 카메라의 이미지(들))에 기초하여 결정될 수 있다.
제1 통지를 수신하는 것에 응답하여, 제1 원격 디바이스(210)는 동작(220)에 따라 에이전트(208)에게 액션 명령을 제공할 수 있다. 액션 명령은 제1 클라이언트 디바이스(202)에서 초기화된 루틴에 대응하는 액션 세트의 액션의 수행을 초기화하기 위한 에이전트(208)에 대한 요청을 포함할 수 있다. 예를 들어, 에이전트(208)는 특정 날짜에 대한 사용자의 스케줄과 관련된 정보를 제공하기 위한 스케줄링 에이전트일 수 있다. 액션 명령을 수신하는 것에 응답하여, 에이전트(208)는 그 액션 수행을 시작할 수 있다. 또한, 서버 자동화 어시스턴트(206)는 루틴이 초기화되었음을 반영하고 및/또는 에이전트(208)가 루틴의 대응하는 액션을 수행하기 시작했음을 반영하기 위해, 동작(222)에 따라 루틴 데이터를 업데이트할 수 있다. 또한, 액션의 일부로서, 에이전트(208)는 동작(224)에 따라 제1 클라이언트 디바이스 (202)에서 렌더링하기 위한 컨텐츠를 제공할 수 있다. 예를 들어, 에이전트(208)는 제1 클라이언트 디바이스(202)가 특정 날짜에 대한 사용자의 일정에 대응하는 오디오 출력을 제공하도록 할 수 있다. 일부 구현에서, 에이전트(208)는 서버 자동화 어시스턴트(206)로 데이터를 제공하고 그 다음 제1 클라이언트 디바이스(202)에 의한 렌더링을 위해 데이터(또는 그의 변환)를 제1 클라이언트 디바이스(202)로 제공한다.
제1 클라이언트 디바이스(202)가 액션에 대응하는 컨텐츠를 렌더링하는 동안, 제1 클라이언트 디바이스(202)는 동작(226)에 따라 사용자가 미존재함을 검출할 수 있다. 예를 들어, 제1 클라이언트 디바이스(202)는 사용자의 미존재를 검출할 수 있는 하나 이상의 센서를 포함하고 및/또는 그들과 통신할 수 있다. 제1 클라이언트 디바이스(202)는 하나 이상의 센서로부터의 센서 데이터에 기초하여 사용자의 미존재를 결정할 수 있다. 사용자의 미존재를 결정하는 것에 응답하여, 제1 클라이언트 디바이스(202)는 동작(228)에 따라 제1 원격 디바이스(210)로 제2 통지를 제공할 수 있다. 제2 통지는 사용자가 더 이상 렌더링된 데이터를 인식하지 못하고, 더 이상 제1 클라이언트 디바이스(202)에 근접하지 않으며, 및/또는 그들이 제1 클라이언트 디바이스(202)에서 일시적으로 사용할 수 없음을 직접 또는 간접적으로 나타냈다는 표시를 제공할 수 있다. 일부 다른 구현에서, 제1 원격 디바이스(210)는 제1 클라이언트 디바이스(202)로부터 및/또는 제1 클라이언트 디바이스(202) 근처에 있는 다른 센서로부터 수신된 센서 데이터에 기초하여 제1 클라이언트 디바이스(202) 근처의 사용자 미존재를 결정할 수 있다. 제1 클라이언트 디바이스(202) 근처에 있는 다른 센서는 예를 들어, IoT 디바이스의 센서(들)를 포함할 수 있으며, 센서들는 디바이스 토폴로지에 기초하여(예를 들어, 제1 클라이언트 디바이스(202)와 센서들이 동일한 방에 있는 것으로 식별하는 사용가 정의한 및/또는 자동 결정된 디바이스 토폴로지에 기초하여) 제1 클라이언트 디바이스(202) 근처에 있는 것으로 선택적으로 결정될 수 있다.
제2 통지를 수신하는 것에 응답하여, 제1 원격 디바이스(210)는 에이전트(208)에 의해 수행되는 루틴 및/또는 액션, 및/또는 루틴을 촉진하기 위해 액션을 수행하는 임의의 다른 애플리케이션 또는 디바이스를 적어도 일시적으로 중단하는 것을 초기화할 수 있다. 예를 들어, 서버 자동화 어시스턴트(206)는 동작(230)에 따라 루틴 데이터가 업데이트되도록 할 수 있다. 루틴 데이터는 루틴이 일시 중지되거나 일시 중지되었음을 반영하고 및/또는 액션 세트 중 하나 이상의 액션이 일시 중지되었거나 일시 중지될 것임을 식별하도록 업데이트될 수 있다. 일부 구현에서, 루틴 데이터는 루틴이 일시 중지되었을 때의 루틴의 상태, 제2 통지가 수신되거나 루틴이 일시 중지된 시간, 루틴이 일시 중지되도록 한 디바이스, 루틴이 일시 중지되도록 한 사용자 및/또는 자동화 어시스턴트 루틴과 연관될 수 있는 임의의 다른 정보 식별하도록 업데이트될 수 있다. 제1 원격 디바이스(210)는 에이전트(208)가 제1 클라이언트 디바이스(202)에 의한 렌더링을 위한 데이터의 프로비저닝을 적어도 일시적으로 일시 중지하게 하기 위해, 동작(232)에 따라 제2 원격 디바이스(212)로 일시 중지 명령을 전송할 수 있다. 추가적으로 또는 대안적으로, 제1 원격 디바이스(210)는 제1 클라이언트 디바이스(202)로 일시 중지 명령을 전송하여, 제1 클라이언트 디바이스(202)로 하여근 렌더링을 위해 제1 클라이언트 디바이스(202)에 이미 제공된 임의의 데이터의 렌더링을 중단(예를 들어, 임의의 아직 렌더링되지 않은 가청 컨텐츠의 가청 렌더링을 중단 및/또는 임의의 현재 렌더링된 시각적 컨텐츠의 렌더링을 중단)하게 할 수 있다.
루틴이 적어도 일시적으로 일시 중지되는 동안(예를 들어, 제1 클라이언트 디바이스에서 사용자 미존재를 결정한 후 기간 t 동안), 제2 클라이언트 디바이스(204)는 동작(234)에 따라 사용자의 존재를 검출할 수 있다. 제2 클라이언트 디바이스(204)는 사용자의 미존재를 검출할 수 있고 하나 이상의 센서의 센서 데이터에 기초하여 사용자의 존재를 결정할 수 있는 하나 이상의 센서를 포함하고 및/또는 그와 통신할 수 있다. 사용자의 존재를 결정하는 것에 응답하여, 제2 클라이언트 디바이스(204)는 동작(236)에 따라 제1 원격 디바이스(210)로 제3 통지를 제공할 수 있다. 예를 들어, 사용자는 제1 클라이언트 디바이스(202)를 포함하는 첫 번째 방에서 제2 클라이언트 디바이스(204)를 포함하는 두 번째 방으로 걸어갈 수 있다. 그 결과, 제2 클라이언트 디바이스(204)는 사용자의 허가를 받아 오디오, 비디오, 움직임, 온도 및/또는 임의의 다른 센서 모달리티와 같은 하나 이상의 센서를 사용하여 두 번째 방에서 사용자의 존재를 검출할 수 있다. 제3 통지는 사용자가 제2 클라이언트 디바이스(204)에 근접하고, 및/또는 제2 클라이언트 디바이스(204)에서 그들이 현재 이용 가능하다는 것을 직접 또는 간접적으로 나타내는 표시를 제공할 수 있다. 일부 다른 구현에서, 제1 원격 디바이스(210)는 제2 클라이언트 디바이스(204)로부터 및/또는 제2 클라이언트 디바이스(204) 근처에 있는 다른 센서로부터 수신된 센서 데이터에 기초하여 제2 클라이언트 디바이스(204) 근처의 존재를 결정할 수 있다.
제1 원격 디바이스(210)는 제3 통지를 수신하고, 이에 응답하여 동작(238)에 따라 루틴 데이터를 업데이트할 수 있다. 루틴 데이터는 루틴이 재개되었거나 재개될 것이며 및/또는 액션이 재개되었거나 재개될 것임을 나타내기 위해 업데이트될 수 있다. 또한, 제3 통지를 수신하는 것에 응답하여, 제1 원격 디바이스(210)는 동작(240)에 따라 재개 명령을 제2 원격 디바이스(212)로 전송할 수 있다. 재개 명령은 에이전트(208)가 루틴의 추진을 위해 에이전트(208)가 이전에 수행했던 액션의 수행을 재개하게 할 수 있다. 그러나, 사용자가 제2 클라이언트 디바이스(204)에서 검출되었기 때문에, 재개 명령은 제2 클라이언트 디바이스(204)에 대한 식별자를 포함할 수 있으며, 이에 따라 에이전트(208)는 동작(242)에 따라 제2 클라이언트 디바이스(204)에서 렌더링하기 위해 임의의 추가 데이터가 제공되어야 한다는 것을 통지한다. 이것은 제1 클라이언트 디바이스(202) 및 제2 클라이언트 디바이스(204)가 데이터를 제시하기 위한 상이한 모달리티를 가질 때 유용할 수 있다. 예를 들어, 만약 제1 클라이언트 디바이스(202)는 디스플레이 패널이 없는 어시스턴트 디바이스이고 제2 클라이언트 디바이스(204)는 태블릿 컴퓨팅 디바이스인 경우, 에이전트(208)는 제2 클라이언트 디바이스(204)에 대한 이미징 데이터를 포함하는 데이터를 렌더링할 수 있다. 추가적으로 또는 대안적으로, 제1 원격 디바이스(210)는 에이전트(208)에 임의의 명령을 먼저 전송하지 않고 제2 클라이언트 디바이스(204)에서 렌더링하기 위해 임의의 추가 데이터가 제공되도록 할 수 있다. 예를 들어, 추가 데이터는 이미 제1 원격 디바이스(210)에서 버퍼링될 수 있고(예를 들어, 처음에는 제1 클라이언트 디바이스(202)에 제공할 것으로 예상하였지만, 루틴의 일시 중지를 위해 버퍼링됨), 제1 원격 디바이스(210)는 버퍼링된 추가 데이터가 제2 클라이언트 디바이스(204)에 의한 렌더링을 위해 제2 클라이언트 디바이스(204)로 전송되도록 할 수 있다.
일부 구현에서, 다른 사용자는 제2 클라이언트 디바이스(204)에서 자동화 어시스턴트와 교감할 수 있고, 사용자는 제2 클라이언트 디바이스(204)에 의해 검출될 수 있다. 그러나, 다른 사용자가 이미 제2 클라이언트 디바이스(204)에서 자동화 어시스턴트와 교감하고 있기 때문에, 자동화 어시스턴트는 다른 사용자가 더 이상 자동화 어시스턴트와 교감하지 않거나 다른 사용자의 존재가 더 이상 제2 클라이언트 디바이스(204)에 의해 검출되지 않을 때까지 루틴을 재개하는 것을 바이패스할 수 있다. 다른 사용자가 더 이상 제2 클라이언트 디바이스(204)에서 검출되지 않는 경우, 동작(236)은 동작(236)과 관련된 후자의 동작들과 함께 수행될 수 있다. 예를 들어, 루틴 데이터는 초기에 다른 사용자가 제2 클라이언트 디바이스(204)에서 자동화 어시스턴트를 사용하고 있음을 나타낼 수 있다. 그러나, 다른 사용자가 자동화 어시스턴트와의 교감을 완료하고 사용자가 제2 클라이언트 디바이스(204)에 의해 검출되었을 때, 루틴 데이터는 이전에 일시 중지된 루틴이 재개될 것임을 나타내도록 업데이트될 수 있다.
일부 구현에서, 자동화 어시스턴트 루틴의 전송은 제1 클라이언트 디바이스(202) 근처에서 사용자의 미존재를 결정하는 것을 고려하지 않고(예를 들어, 제1 클라이언트 근처에서 사용자의 미존재가 발생하는지에 대한 어떠한 결정도 하지 않고), 제2 클라이언트 디바이스(204) 근처에서 사용자가 검출되는 것에 기초하여 수행될 수 있다. 이러한 방식으로, 제1 클라이언트 디바이스(202)(및/또는 제1 원격 디바이스(210))는 자동화 어시스턴트 루틴의 컨텐츠가 처음에 제1 클라이언트 디바이스(202)에서 렌더링되는 동안 반드시 사용자의 존재를 모니터링할 필요는 없다. 일부 구현에서, 제2 클라이언트 디바이스(204)는 루틴의 일부를 수행하는 제1 클라이언트 디바이스(202)와 동시에 루틴의 일부를 수행할 수 있다. 예를 들어, 루틴에 대한 액션 세트 중의 액션이 제1 클라이언트 디바이스(202)에서 사용자에 대한 오디오 데이터를 렌더링하는 것을 포함하고 사용자가 제2 클라이언트 디바이스(204) 근처에서 검출되는 경우, 오디오 데이터는 제1 클라이언트 디바이스(202) 및 제2 클라이언트 디바이스(204) 모두에서 동시에 렌더링될 수 있다. 추가적으로 또는 대안적으로, 제1 클라이언트 디바이스(202)에 의해 투사되는 오디오의 볼륨은 점차적으로 감소될 수 있고 제2 클라이언트 디바이스(204)에 의해 투사되는 오디오의 볼륨은 점차적으로 증가될 수 있다. 증가 및/또는 감소의 양은 선택적으로 제2 클라이언트 디바이스(204) 및/또는 제1 클라이언트 디바이스(202)로부터의 추정 거리에 각각 비례할 수 있다. 이러한 방식으로, 사용자는 사용자가 제2 클라이언트 디바이스(204)를 향해 이동할 때 제1 클라이언트 디바이스(202)에서 불연속적인 일시 중지가 아니라 오디오의 점진적인 변화를 인식할 것이다.
일부 구현에서, 사용자가 제1 클라이언트 디바이스(202) 근처 및/또는 제2 클라이언트 디바이스(204) 근처에 있는지 여부를 나타내는 센서 데이터를 제공하는 센서는 제3 클라이언트 디바이스와 통신하거나 그에 통합될 수 있다. 제3 클라이언트 디바이스는 제1 클라이언트 디바이스(202) 및 제2 클라이언트 디바이스(204)가 또한 연결된 공통 근거리 통신망에 연결될 수 있다. 예를 들어, 제3 클라이언트 디바이스는 온도를 모니터링하는 자동 온도 조절기 또는 움직임을 모니터링하는 보안 시스템과 같이 사용자 집의 특정 피처들(feature)을 모니터링할 수 있는 "사물 인터넷"(IoT) 디바이스일 수 있다. 이러한 방식으로, 자동화 어시스턴트 루틴의 전송을 트리거하는 신호는 자동화 어시스턴트 클라이언트 애플리케이션을 호스팅하는 디바이스들에서만 제공되는 것이 아니라 다수의 다른 디바이스로부터 제공될 수 있다.
일부 구현에서, 사용자, 사용자 그룹, 어시스턴트 클라이언트 디바이스 및/또는 어시스턴트 클라이언트 디바이스 그룹(예를 들어, 모두 집과 같은 구조 내에 있음)은 자동화 어시스턴트를 통해 IoT 디바이스와의 상호 작용(예를 들어, 그의 제어로)을 가능하게 하기 위해 복수의 이기종 IoT 디바이스와 링크(예를 들어, 하나 이상의 데이터베이스에)될 수 있다. 예를 들어, 가정의 다수의 어시스턴트 클라이언트 디바이스 각각은 가정의 다수의 이기종 IoT 디바이스 각각에 링크되어 임의의 사용자(또는 제한된 사용자 그룹)가 어시스턴트 클라이언트 디바이스들 중 어느 하나와 상호 작용하여 다수의 이기종 IoT 디바이스 중 어느 하나와 상호 작용할 수 있도록 할 수 있다.
이러한 링크 연결의 한 예는 사용자 생성 및/또는 자동 생성될 수 있고 다양한 어시스턴트 클라이언트 디바이스, 다양한 IoT 디바이스, 각각의 식별자(들) 및/또는 각각의 속성(들)을 정의할 수 있는 디바이스 토폴로지 표현이다. 예를 들어, 디바이스의 식별자(들)는 디바이스가 위치한 구조(예를 들어, 거실, 주방)의 방(및/또는 다른 영역)을 지정하고 및/또는 그 디바이스의 닉네임(들) 및/또는 별칭(들)(소파 램프, 현관문 잠금 장치, 침실 스피커, 주방 도우미 등)을 지정할 수 있다. 이러한 방식으로, 디바이스들의 식별자는 사용자가 개별 디바이스와 연관시킬 가능성이 있는 개별 디바이스의 이름, 별칭 및/또는 위치일 수 있다. 본 명세서에 설명된 바와 같이, 이러한 식별자(들)는 본 명세서에 개시된 다양한 구현에서 활용될 수 있다. 예를 들어, 주어진 어시스턴트 클라이언트 디바이스 근처의 존재는 주어진 어시스턴트 클라이언트 디바이스 및 주어진 IoT 디바이스에 기초하여 주어진 IoT 디바이스의 센서 데이터에 기초하여 결정될 수 있으며, 둘 모두는 그들이 동일한 방에 위치함을 나타내는 식별자와 연관된다.
일부 구현에서, 자동화 어시스턴트 루틴은 자동화 어시스턴트 루틴의 전송에 대한 제한을 식별하는 허가(permission)와 연관될 수 있다. 예를 들어 자동화 어시스턴트 루틴은 루틴의 전송을 유발할 수 있는 사용자 세트를 식별하는 허가와 연관될 수 있다. 이러한 방식으로, 자동화 어시스턴트 루틴이 초기화될 때 다수의 사람이 제1 클라이언트 디바이스(202) 근처에 있고 사용자 세트에서 식별되지 않은 사람이 제1 클라이언트 디바이스(202)로부터 멀어지면, 그 사람은 일시 중지 또는 전송 또는 자동화 어시스턴트 루틴을 트리거하지 않을 것이다. 추가적으로 또는 대안적으로, 자동화 어시스턴트 루틴은 자동화 어시스턴트 루틴이 전송될 수 있고 및/또는 전송될 수없는 하나 이상의 디바이스를 식별하는 허가와 연관될 수 있다. 이러한 방식으로, 자동화 어시스턴트 루틴은 자동화 어시스턴트 루틴의 수신자 (transferee)가 아닌 것으로 상기 허가에서 식별된 디바이스를 사용하는 사람을 방해하는 것을 방지할 수 있다.
일부 구현에서, 제1 클라이언트 디바이스(202)가 사용자를 위해 데이터를 렌더링하는 동안 자동화 어시스턴트 루틴이 전송될 때, 제1 클라이언트 디바이스 (202)는 제1 클라이언트 디바이스(202)의 메모리에 일정량의 데이터를 버퍼링할 수 있다. 버퍼링된 데이터는 제1 클라이언트 디바이스(202)에서 사용자에게 후속적으로 렌더링하기 위해 배열될 수 있다. 그러나, 사용자가 자동화 어시스턴트 루틴을 제2 클라이언트 디바이스(204)로 전송하게 하면, 버퍼링된 데이터는 제1 클라이언트 디바이스(202)로부터 제2 클라이언트 디바이스(204)로 근거리 통신망을 통해 전송될 수 있다. 이러한 방식으로, 제2 클라이언트 디바이스(204)는 자동화 어시스턴트 루틴을 촉진하기 위해 렌더링을 위해 반드시 데이터를 재 요청해야 한다. 오히려, 데이터가 제2 클라이언트 디바이스(204)에 대해 공통인 네트워크상의 로컬 디바이스로 이미 다운로드된 경우, 제2 클라이언트 디바이스(204)는 로컬 디바이스로부터 다운로드된 데이터를 수신할 수 있다.
도 3은 자동화 어시스턴트 루틴이 클라이언트 디바이스들사이에서 전송되게 하는 방법(300)을 도시한다. 방법(300)은 하나 이상의 컴퓨팅 디바이스, 애플리케이션 및/또는 자동화 어시스턴트와 상호 작용할 수 있는 임의의 다른 디바이스 또는 모듈에 의해 수행될 수 있다. 방법(300)은 제1 클라이언트 디바이스에서 자동화 어시스턴트 루틴을 수행하도록 자동화 어시스턴트를 초기화하는 단계의 동작(302)을 포함할 수 있다. 자동화 어시스턴트는 제1 클라이언트 디바이스, 및 선택적으로 제1 클라이언트 디바이스와 동일한 네트워크에 연결될 수 있는 제2 클라이언트 디바이스에 액세스할 수 있다. 자동화 어시스턴트는 제1 클라이언트 디바이스의 자동화 어시스턴트 인터페이스에서 자연어 입력을 수신하는 것에 응답하여 자동화 어시스턴트 루틴의 수행을 초기화할 수 있다. 예를 들어, 사용자는 제1 클라이언트 디바이스의 자동화 어시스턴트 인터페이스에 "어시스턴트, 내 청소 루틴 시작 해"과 같은 음성 발화를 제공할 수 있다. 이에 대한 응답으로, 자동화 어시스턴트는 음성 발화에서 식별된 루틴에 대응하는 루틴을 식별하기 위해 루틴 데이터베이스에 액세스할 수 있다.
방법(300)은 자동화 어시스턴트 루틴과 관련된 정보를 제공하는 루틴 인스턴스 데이터를 생성하는 단계의 동작(304)을 더 포함할 수 있다. 이 정보는 자동화 어시스턴트 루틴에 대해 할당된 디바이스로서 제1 클라이언트 디바이스를 식별할 수 있다. 일부 구현에서, 루틴 인스턴스 데이터는 제1 클라이언트 디바이스에서 생성되고 사용자의 계정과 연관된 다수의 상이한 클라이언트 디바이스에 액세스할 수 있는 데이터베이스로 전송될 수 있다. 루틴 인스턴스 데이터는 "Instance_Data: assistant.routine.active = '1'; assistant.routine.deviceID = '1'과 같은 제1 클라이언트 디바이스에 대한 식별자를 제공할 수 있는데, 여기서 "assistant.routine.active" 변수는 자동화 어시스턴트 루틴이 활성 상태임을 나타내고 "assistant.routine.deviceID"는 제1 클라이언트 디바이스 "1"에 대한 식별자를 나타낸다.
방법(300)은 또한 제1 클라이언트 디바이스로 하여금 자동화 어시스턴트 루틴을 촉진하기 위해 액션 세트의 액션에 대응하는 컨텐츠를 렌더링하게 하는 단계의 동작(306)을 포함할 수 있다. 자동화 어시스턴트 루틴은 사용자가 그의 집을 청소할 때 요청할 수 있는 "청소" 루틴에 해당할 수 있다. "청소" 루틴에는 음악 에이전트가 "청소" 재생 목록을 재생하도록 하고, 청소 기기(예를 들어, 로봇 청소기)를 초기화하는 것, 및 전화 호출을 어시스턴트 디바이스로 포워딩하는 것과 같은 액션들이 포함될 수 있다. 따라서, 액션 세트 중의 액션은 음악 에이전트가 가청 음악을 제공하는 클라이언트 디바이스에서 가청 음악이 렌더링되도록 할 수 있다.
방법(300)은 사용자가 제1 클라이언트 디바이스에 덜 근접해 있는지 결정하는 단계의 동작(308)을 더 포함할 수 있다. 동작(308)에서의 결정은 제1 클라이언트 디바이스와 통신하는 하나 이상의 센서의 하나 이상의 신호에 기초하여 수행될 수 있다. 예를 들어, 근접 센서는 제1 클라이언트 디바이스에 통합되거나 원격일 수 있고, 사용자의 검출된 움직임에 응답하여 신호를 제1 클라이언트 디바이스에 제공할 수 있다. 이 신호는 제1 클라이언트 디바이스에 의해 처리되어, 사용자가 사용자의 허가를 받아 제1 클라이언트 디바이스를 향해 이동하거나 또는 제1 클라이언트 디바이스에서 멀어지는지 여부를 결정할 수 있다. 일부 구현에서, 센서는 오디오, 비디오, 촉각, 온도 및/또는 사용자에게 반응할 수 있는 센서에 대한 임의의 다른 모달리티일 수 있다. 이러한 방식으로 자동화 어시스턴트는 특정 루틴을 계속 수행할지, 루틴이 다른 디바이스로 전송되도록 할지, 및/또는 사용자가 사용 가능할 때까지 적어도 일시적으로 루틴을 일시 중지할지 여부를 결정하기 위해 이러한 센서의 데이터에 액세스할 수 있다. .
방법(300)은 또한 사용자가 제1 클라이언트 디바이스에 덜 근접해 있다는 결정에 응답하여 제1 클라이언트 디바이스에서의 데이터 렌더링이 적어도 일시적으로 중지되도록 하는 단계의 동작(310)을 포함할 수 있다. 루틴은 또한 사용자가 제1 클라이언트 디바이스에 덜 근접해 있다는 결정에 응답하여 적어도 일시적으로 중지될 수 있다. 이러한 방식으로, 자동화 어시스턴트는 사용자가 임의의 렌더링된 데이터를 놓치지 않도록 보장할 수 있으며, 이는 루틴이 일일 일정을 렌더링하고, 수신된 메시지를 청각적으로 제공하고, 및/또는 임의의 다른 중요한 컨텐츠를 발행하는 것을 포함할 때 특히 중요할 수 있다. 일부 구현에서, 제1 클라이언트 디바이스는 사용자가 그 루틴이 재개되도록 할 때 가장 최근에 렌더링된 데이터가 반복될 수 있도록 가장 최근에 렌더링된 렌더링 데이터의 일부(예를 들어, 렌더링된 데이터의 가장 최근 t 초, 여기서 t는 임의의 양수)를 식별할 수 있다.
방법(300)은 또한 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 적어도 일시적으로 중지되었음을 나타내기 위해 루틴 인스턴스 데이터를 수정하는 단계의 동작(312)을 포함할 수 있다. 일부 구현에서, 루틴 인스턴스 데이터를 수정하는 것은 원격 서버 디바이스에 액세스할 수 있는 테이블이 자동화 어시스턴트 루틴이 일시 중지되었음을 나타내는 항목(entry)을 포함하게 하는 데이터를 원격 서버 디바이스로 전송하는 것을 포함할 수 있다. 원격 서버 디바이스는 루틴 인스턴스 데이터를 호스팅할 수 있으므로, 자동화 어시스턴트 루틴의 상태, 자동화 어시스턴트 루틴이 가장 최근에 활성화된 디바이스, 루틴을 수신 및/또는 전송할 권한이 있는 하나 이상의 디바이스, 자동화 어시스턴트 루틴이 초기화된 시간, 자동화 어시스턴트 루틴이 일시 중지된 시간, 자동화 어시스턴트 루틴을 초기화한 사용자, 자동화 어시스턴트 루틴을 일시 중지한 사용자 및/또는 자동화 어시스턴트 루틴과 연관될 수 있는 다른 데이터와 같은 정보를 제공할 수 있다.
방법(300)은 사용자가 자동화 어시스턴트 액세스 가능(한) 디바이스 근처로 재배치되었는지 여부를 결정하는 단계의 동작(314)을 더 포함할 수 있다. 동작(304)에서의 결정은 제1 클라이언트 디바이스, 원격 서버 디바이스, 제2 클라이언트 디바이스, 및/또는 자동화 어시스턴트와 상호 작용할 수 있는 임의의 다른 디바이스 또는 장치에 의해 수행될 수 있다. 예를 들어, 일부 구현에서, 제2 클라이언트 디바이스는 제2 클라이언트 디바이스가 제2 클라이언트 디바이스에서 또는 그 근처에서 검출되었음을 검출하는 것에 응답하여 표시를 원격 서버 디바이스로 제공할 수 있다. 제2 클라이언트 디바이스는 제2 클라이언트 디바이스와 통신하는 하나 이상의 센서로부터의 하나 이상의 신호를 사용하여 사용자가 제2 클라이언트 디바이스에 있거나 그 근처에 있는지 결정할 수 있다. 원격 서버 디바이스가 제2 클라이언트 디바이스로부터 표시를 수신하면, 원격 서버 디바이스는 임의의 일시 중지된 자동화 어시스턴트 루틴이 있는지 여부를 결정하기 위해 질의를 수행할 수 있다. 원격 서버 디바이스가 일시 중지된 자동화 어시스턴트 루틴이 있다고 결정하면, 원격 서버 디바이스는 루틴 인스턴스 데이터를 제2 클라이언트 디바이스로 푸시할 수 있다. 이에 응답하여, 제2 클라이언트 디바이스는 루틴 인스턴스 데이터를 처리하여 자동화 어시스턴트 루틴을 일시 중지 해제하기 위해 자동화 어시스턴트를 호출할 수 있다.
방법(300)은 또한 자동화 어시스턴트로 하여금 루틴 인스턴스 데이터에 따라 자동화 어시스턴트 루틴의 수행을 재개하도록 하는 단계의 동작(316)을 포함할 수 있다. 예를 들어, 루틴 인스턴스 데이터는 액션 세트 중의 액션에 대응하는 컨텐츠를 렌더링하는 동안 자동화 어시스턴트 루틴이 일시 중지되었음을 나타내기 때문에, 자동화 어시스턴트는 액션 세트중의 액션에 대응하는 추가 컨텐츠를 렌더링하는 단계로 진행할 수 있다. 일부 구현에서, 사용자가 제1 클라이언트 디바이스로부터 멀어졌기 때문에 이전에 렌더링된 컨텐츠의 일부가 사용자에 의해 수신되지 않은 경우, 자동화 어시스턴트는 제2 클라이언트 디바이스로 하여근 이전에 렌더링된 컨텐츠를 렌더링하게 할 수 있다. 그렇지 않으면, 제2 클라이언트 디바이스는 적어도 사용자가 다른 자동화 어시스턴트 디바이스 근처로 재배치되거나 그렇지 않으면 제2 클라이언트 디바이스에서 자동화 어시스턴트 루틴을 계속하기를 원하지 않음을 나타낼 때까지 액션에 대응하는 임의의 추가 컨텐츠를 렌더링하고, 그리고 액션 세트중의 임의의 다른 액션의 수행을 초기화할 수 있다.
도 4는 예시적인 컴퓨터 시스템(410)의 블록도이다. 컴퓨터 시스템(410)은 일반적으로 버스 서브 시스템(412)을 통해 다수의 주변 디바이스와 통신하는 적어도 하나의 프로세서(414)를 포함한다. 이러한 주변 디바이스들은 예를 들어 메모리(425) 및 파일 저장 서브 시스템(426), 사용자 인터페이스 출력 디바이스(420), 사용자 인터페이스 입력 디바이스(422) 및 네트워크 인터페이스 서브 시스템(416)을 포함하는 저장 서브 시스템(424)을 포함할 수 있다. 입력 및 출력 디바이스는 컴퓨터 시스템(410)과 사용자 상호 작용을 허용한다. 네트워크 인터페이스 서브 시스템(416)은 외부 네트워크에 대한 인터페이스를 제공하고 다른 컴퓨터 시스템의 대응하는 인터페이스 디바이스에 결합된다.
사용자 인터페이스 입력 디바이스(422)는 키보드, 포인팅 디바이스(예를 들어, 마우스, 트랙볼, 터치 패드 또는 그래픽 태블릿), 스캐너, 디스플레이에 통합된 터치 스크린, 음성 인식 시스템과 같은 오디오 입력 디바이스, 마이크 및/또는 기타 유형의 입력 디바이스가 포함될 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 컴퓨터 시스템(410) 또는 통신 네트워크에 정보를 입력하는 모든 가능한 유형의 디바이스 및 방법을 포함하도록 의도된다.
사용자 인터페이스 출력 디바이스(420)는 디스플레이 서브 시스템, 프린터, 팩스 기계, 또는 오디오 출력 디바이스와 같은 비-시각적 디스플레이를 포함할 수 있다. 디스플레이 서브 시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평판 디바이스, 프로젝션 디바이스 또는 가시적 이미지를 생성하기 위한 일부 다른 메커니즘을 포함할 수 있다. 디스플레이 서브 시스템은 또한 오디오 출력 디바이스를 통해 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨터 시스템(410)으로부터 사용자 또는 다른 기계 또는 컴퓨터 시스템으로 정보를 출력하는 모든 가능한 유형의 디바이스 및 방법을 포함하도록 의도된다.
저장 서브 시스템(424)은 본 명세서에 설명된 모듈의 일부 또는 전부의 기능을 제공하는 프로그래밍 및 데이터 구성을 저장한다. 예를 들어, 저장 서브 시스템(424)은 방법(300)의 선택된 양태, 본 명세서에서 논의된 임의의 동작(들)을 수행하고 및/또는 하나 이상의 서버 디바이스(102), 자동화 어시스턴트, 원격 디바이스(112), 제 1 클라이언트 디바이스(116), 제1 클라이언트 디바이스(202), 제2 클라이언트 디바이스(128), 제2 클라이언트 디바이스(204), 제3자 에이전트(208), 제1 원격 디바이스(210), 제2 원격 디바이스(212), 및/또는 본 명세서에서 논의되는 임의의 다른 디바이스 또는 애플리케이션을 구현하는 로직을 포함할 수 있다.
이러한 소프트웨어 모듈들은 일반적으로 프로세서(414)에 의해 단독으로 또는 다른 프로세서와 결합하여 실행된다. 저장 서브 시스템(424)에서 사용되는 메모리(425)는 프로그램 실행 동안 명령어 및 데이터를 저장하기 위한 메인 랜덤 액세스 메모리(RAM)(430) 및 고정 명령어가 저장되는 판독 전용 메모리(ROM)(432)를 포함하는 다수의 메모리를 포함할 수 있다. 파일 저장 서브 시스템(426)은 프로그램 및 데이터 파일에 대한 영구 저장을 제공할 수 있으며, 하드 디스크 드라이브, 플로피 디스크 드라이브, 관련된 이동식 미디어, CD-ROM 드라이브, 광학 드라이브 또는 이동식 미디어 카트리지를 포함할 수 있다. 특정 구현의 기능을 구현하는 모듈들은 저장 서브 시스템(424)의 파일 저장 서브 시스템(426)에 의해 또는 프로세서(들)(414)에 의해 액세스 가능한 다른 기계에 저장될 수 있다.
버스 서브 시스템(412)은 컴퓨터 시스템(410)의 다양한 컴포넌트 및 서브 시스템이 의도하는 대로 서로 통신하게 하는 메커니즘을 제공한다. 버스 서브 시스템(412)이 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브 시스템의 대안적인 구현은 다중 버스를 사용할 수 있다.
컴퓨터 시스템(410)은 워크 스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 처리 시스템 또는 컴퓨팅 디바이스를 포함하는 다양한 유형일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 4에 도시된 컴퓨터 시스템(410)의 설명은 일부 구현을 도시하기 위한 특정 예로서만 의도된다. 컴퓨터 시스템(410)의 많은 다른 구성은 도 4에 도시된 컴퓨터 시스템보다 더 많거나 적은 컴포넌트를 가질 수 있다.
본 명세서에 설명된 시스템이 사용자(또는 본 명세서에서 종종 "참가자"로 지칭됨)에 대한 개인 정보를 수집하거나 개인 정보를 사용할 수 있는 상황에서, 사용자는 프로그램 또는 기능이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 지리적 위치에 관한 정보)를 수집하는지 여부를 제어하거나 사용자와 더 관련이 있을 수 있는 컨텐츠를 컨텐츠 서버로부터 수신하는지 여부 및/또는 방법을 제어할 기회를 제공받을 수 있다. 또한 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대한 개인 식별 정보가 결정될 수 없도록 처리되거나 사용자의 지리적 위치는 사용자의 특정 지리적 위치가 결정될 수 없도록 지리적 위치 정보가 획득된 위치(예를 들어, 도시, 우편 번호 또는 주 수준)로 일반화될 수 있다. 따라서, 사용자는 사용자에 대한 정보 수집 및/또는 사용 방법을 제어할 수 있다.
여러 구현이 본 명세서에 설명되고 예시되었지만, 기능을 수행하고 및/또는 본 명세서에 설명된 결과 및/또는 하나 이상의 이점을 얻기 위한 다양한 다른 수단 및/또는 구조가 활용될 수 있으며, 이러한 변경 및/또는 수정은 각각은 본 명세서에 설명된 구현의 범위 내에 있는 것으로 간주된다. 보다 일반적으로, 본 명세서에 설명된 모든 파라미터, 치수, 재료 및 구성은 예시적인 것이며 실제 파라미터, 치수, 재료 및/또는 구성은 그 교시가 사용되는 특정 애플리케이션 또는 애플리케이션들에 따라 달라진다. 당업자는 단지 일상적인 실험을 사용하여 본 명세서에 설명된 특정 구현에 대한 많은 등가물을 인식하거나 확인할 수 있을 것이다. 따라서, 전술한 구현들은 단지 예로서 제시된 것이며, 첨부된 청구 범위 및 그 등가물의 범위 내에서 구현이 구체적으로 설명되고 청구된 것과 달리 실행될 수 있음을 이해해야 한다. 본 개시 내용의 구현들은 본 명세서에 기재된 각각의 개별적인 특징, 시스템, 물품, 재료, 키트 및/또는 방법에 관한 것이다. 또한, 이러한 특징, 시스템, 물품, 재료, 키트 및/또는 방법이 서로 일치하지 않는 경우, 이러한 특징, 시스템, 물품, 재료, 키트 및/또는 방법의 2개 이상의 조합은 상호 불일치하지 않으며, 본 개시 내용의 범위 내에 포함된다.

Claims (37)

  1. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    자동화 어시스턴트 루틴이 초기화되었는지 결정하는 단계와, 상기 자동화 어시스턴트 루틴은 자동화 어시스턴트에 액세스 가능한 하나 이상의 에이전트를 통해 수행될 액션 세트에 대응하고, 상기 자동화 어시스턴트 루틴의 초기화는 링크된 클라이언트 디바이스들의 생태계와 관련되고;
    자동화 어시스턴트 루틴이 초기화되었다는 결정에 응답하여, 상기 링크된 클라이언트 디바이스들의 초기 서브 세트가 자동화 어시스턴트 루틴의 하나 이상의 액션 수행시에 생성된 초기 컨텐츠를 렌더링하게 하는 단계와;
    상기 링크된 클라이언트 디바이스들의 초기 서브 세트에 의해 초기 컨텐츠를 렌더링한 후 또는 렌더링하는 중에, 적어도 하나의 센서의 센서 데이터에 기초하여, 사용자가 상기 링크된 클라이언트 디바이스들의 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계와, 상기 추가 클라이언트 디바이스는 초기 서브 세트에 포함되지 않고 초기 컨텐츠를 렌더링하지 않았으며; 그리고
    사용자가 추가 클라이언트 디바이스 근처에 존재한다는 결정에 응답하여, 추가 클라이언트 디바이스로 하여금 자동화 어시스턴트 루틴의 수행시에 생성된 추가 컨텐츠를 렌더링하게 하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  2. 제1항에 있어서,
    사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는 단계;
    사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는다는 결정에 응답하여 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링이 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에서 중단되도록 하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  3. 제2항에 있어서,
    상기 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는 단계는 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하기 전에 발생하고,
    상기 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링이 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에서 중단되도록 하는 단계는 추가 클라이언트 디바이스에 의해, 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링 전에 발생하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  4. 제2항에 있어서,
    상기 사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는 단계는,
    적어도 하나의 추가 센서의 추가 센서 데이터에 기초하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 적어도 하나의 추가 센서의 추가 센서 데이터는,
    초기 서브 세트의 상기 링크된 클라이언트 디바이스들 중 적어도 하나와 통합되는 적어도 하나의 추가 센서, 및
    디바이스 토폴로지에서, 초기 서브 세트의 상기 링크된 클라이언트 디바이스들 중 적어도 하나와 공간적으로 상관되는 적어도 하나의 추가 센서 중 하나 또는 둘 모두에 기초하여,
    사용자가 초기 서브 세트의 임의의 링크된 클라이언트 디바이스 근처에 존재하지 않는지 결정하는데 이용되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  6. 제2항에 있어서,
    상기 사용자가 임의의 상기 링크된 클라이언트 디바이스들 근처에 존재하지 않는지 결정하는 단계는,
    사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  7. 제2항에 있어서,
    루틴의 상태를 저장하는 단계와, 상기 루틴의 상태는 자동화 어시스턴트 루틴의 수행시에 생성된 임의의 컨텐츠의 렌더링이 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에서 중단되었을 때의 루틴의 상태를 나타내고; 및
    루틴의 상태에 기초하여 추가 클라이언트 디바이스에서 렌더링될 추가 컨텐츠를 결정하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  8. 제7항에 있어서,
    저장된 루틴의 상태에 기초하여, 상기 링크된 클라이언트 디바이스들의 초기 서브 세트에 의해 렌더링된 초기 컨텐츠의 일부를 결정하는 단계와; 그리고
    사용자가 추가 클라이언트 디바이스 근처에 존재한다는 결정에 응답하여, 자동화 어시스턴트 루틴의 수행시에 생성된 추가 컨텐츠를 렌더링하기 전에 추가 클라이언트 디바이스로 하여금 초기 컨텐츠의 일부를 렌더링하게 하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 링크된 클라이언트 디바이스들의 초기 서브 세트는 단일 클라이언트 디바이스이고, 그리고
    단일 클라이언트 디바이스에 의해 검출된, 사용자의 사용자 인터페이스 입력에 응답하여 단일 클라이언트 디바이스에 의해 전송된 데이터를 수신하는 단계를 더 포함하고;
    상기 자동화 어시스턴트 루틴이 초기화되었는지 결정하는 단계는 사용자 인터페이스 입력이 자동화 어시스턴트 루틴을 준수하는지 결정하는 것에 기초하고, 상기 단일 클라이언트 디바이스는 단일 클라이언트 디바이스에 의해 전송되는 사용자 인터페이스 입력에 기초하여 데이터의 초기 서브 세트를 렌더링하도록 야기되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  10. 제9항에 있어서,
    상기 사용자 인터페이스 입력은 자동화 어시스턴트 루틴에 대한 단축 (shortcut) 문구를 포함하는 음성 발화를 포함하고, 상기 데이터는 오디오 데이터를 포함하며, 그리고
    텍스트를 생성하도록 오디오 데이터의 음성-텍스트 변환 처리를 수행하는 단계를 더 포함하고;
    상기 사용자 인터페이스 입력이 자동화 어시스턴트 루틴을 준수하는지 결정하는 단계는 상기 생성된 텍스트가 단축 문구를 포함하는지 결정하는 단계 및 단축 문구가 자동화 어시스턴트 루틴과 관련하여 저장되는지를 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  11. 제1항에 있어서,
    상기 적어도 하나의 센서의 센서 데이터는,
    추가 클라이언트 디바이스와 통합되는 적어도 하나의 센서, 또는
    디바이스 토폴로지에서, 추가 클라이언트 디바이스와 공간적으로 상관되는 적어도 하나의 센서에 기초하여,
    사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는데 이용되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  12. 제1항에 있어서,
    상기 센서 데이터에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계는,
    사용자가 추가 클라이언트 디바이스의 임계 거리 내에 있는지 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  13. 제1항에 있어서,
    상기 센서 데이터에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계는,
    센서 데이터가 임의의 사용자의 존재를 나타내는 적어도 하나의 특성을 포함하는지 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  14. 제1항에 있어서,
    상기 자동화 어시스턴트 루틴은 사용자의 사용자 프로필과 관련하여 저장되고, 그리고
    상기 센서 데이터에 기초하여, 사용자가 추가 클라이언트 디바이스 근처에 존재하는지 결정하는 단계는,
    센서 데이터가 사용자 프로필과 관련하여 또한 저장되는 적어도 하나의 특성을 포함하는지 결정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  15. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 초기화되었다는 제1 전자 통지를 수신하는 단계와, 상기 자동화 어시스턴트 루틴은 자동화 어시스턴트에 액세스 가능한 하나 이상의 에이전트에 의해 수행될 액션 세트에 대응하고;
    하나 이상의 에이전트 중 하나의 에이전트가 자동화 어시스턴트 루틴을 촉진하기 위해 상기 액션 세트의 액션의 수행을 초기화하게 하는 단계와, 상기 액션은 제1 클라이언트 디바이스로 하여금 사용자에게 프리젠테이션하기 위한 컨텐츠를 렌더링하게 하고, 상기 컨텐츠는 액션 수행시 에이전트에 의해 생성된 데이터에 기초하고;
    사용자가 제1 클라이언트 디바이스로부터 멀어졌다는 제2 통지를 수신하는 단계와;
    제2 통지를 수신하는 것에 응답하여, 제1 클라이언트 디바이스에서의 컨텐츠의 렌더링이 적어도 일시적으로 중지되도록 하는 단계와;
    사용자가 제2 클라이언트 디바이스 근처에서 검출되었다는 제3 통지를 수신하는 단계와; 그리고
    제3 통지를 수신하는 것에 응답하여, 제2 클라이언트 디바이스로 하여금 자동화 어시스턴트 루틴을 촉진하기 위해, 사용자에게 프리젠테이션하기 위한 추가 컨텐츠를 렌더링하게 하는 단계를 포함하는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  16. 제15항에 있어서,
    제1 통지 수신하는 것에 응답하여 루틴 인스턴스 데이터를 생성하는 단계를 더 포함하고, 상기 루틴 인스턴스 데이터는 자동화 어시스턴트 루틴과 관련된 정보를 제공하고, 상기 루틴 인스턴스 데이터는 에이전트에 의해 수행되는 액션의 상태 및 제1 클라이언트 디바이스를 식별하는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  17. 제16항에 있어서,
    제2 통지를 수신하는 것에 응답하여:
    에이전트가 적어도 일시적으로 액션의 수행을 중지시키도록 루틴 인스턴스 데이터를 수정하는 단계를 더 포함하고, 상기 에이전트는 액션의 수행을 계속할지 여부를 결정하기 위해 액션의 수행 중에 루틴 인스턴스 데이터에 적어도 주기적으로 액세스하는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  18. 제17항에 있어서,
    제3 통지를 수신하는 것에 응답하여:
    에이전트가 액션의 수행을 재개하도록 루틴 인스턴스 데이터를 수정하는 단계; 또는
    에이전트가 액션의 수행을 재개하도록 명령을 에이전트로 전송하는 단계를 더 포함하는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  19. 제15항에 있어서,
    상기 제2 통지는,
    제1 클라이언트 디바이스와 통신하는 센서의 센서 데이터에 기초하여, 제1 클라이언트 디바이스가 사용자가 더 이상 제1 클라이언트 디바이스 근처에서 검출 가능하지 않다고 결정하는 것에 응답하여 제1 클라이언트 디바이스로부터 수신되는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  20. 제19항에 있어서,
    상기 센서는 제1 클라이언트 디바이스 및 제2 클라이언트 디바이스에 대해 공통 네트워크에 연결된 제3 디바이스에 통합되는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  21. 제15항에 있어서,
    상기 자동화 어시스턴트 루틴은 사용자가 제1 클라이언트 디바이스의 자동화 어시스턴트 인터페이스에 음성 발화를 제공하는 것에 응답하여 제1 클라이언트 디바이스에서 초기화되고, 그리고
    상기 제1 클라이언트 디바이스가 사용자를 위해 컨텐츠를 렌더링하게 하는 단계는 제1 클라이언트 디바이스가 제1 클라이언트 디바이스의 자동화 어시스턴트 인터페이스로부터 가청 출력을 제공하게 하는 단계를 포함하는 것을 특징으로 하나 이상의 프로세서에 의해 구현되는 방법.
  22. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    원격 서버 디바이스에서, 제1 클라이언트 디바이스로부터 전송된 데이터를 수신하는 단계;
    원격 서버 디바이스에서, 데이터가 자동화 어시스턴트 액션 세트에 대응하는 자동화 어시스턴트 루틴의 초기화 요청에 대응하는지 결정하는 단계;
    데이터가 요청에 대응한다고 결정하는 것에 응답하여, 원격 서버 디바이스에서, 자동화 어시스턴트 액션 세트의 액션에 대한 컨텐츠를 생성하는 단계;
    제1 클라이언트 디바이스로부터 수신되는 자동화 어시스턴트 루틴의 초기화 요청에 대응하는 데이터에 응답하여, 제1 클라이언트 디바이스가 액션에 대한 컨텐츠를 렌더링하도록 액션에 대한 컨텐츠를 제1 클라이언트 디바이스로 전송하는 단계;
    제1 클라이언트 디바이스에 의해 액션에 대한 컨텐츠가 렌더링되는 동안 원격 서버 디바이스에서, 사용자가 제2 클라이언트 디바이스에서 계속되는 자동화 어시스턴트 루틴에 직접 또는 간접적으로 관심을 표시했는지 결정하는 단계; 및
    사용자가 제2 클라이언트 디바이스에서 계속되는 자동화 어시스턴트 루틴에 관심을 표시했다는 결정에 응답하여, 제2 클라이언트 디바이스에서, 자동화 어시스턴트 루틴을 촉진하는 추가 데이터를 렌더링하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  23. 제22항에 있어서,
    제1 클라이언트 디바이스로부터 수신되는 자동화 어시스턴트 루틴의 초기화 요청에 대응하는 데이터에 응답하여, 원격 서버 디바이스는 자동화 어시스턴트 루틴의 상태를 제1 클라이언트 디바이스에서 활성으로 식별하는 루틴 인스턴스 데이터를 저장하고; 그리고
    제2 클라이언트 디바이스에서 자동화 어시스턴트 루틴을 계속하는 것에 대한 사용자의 관심을 결정하는 것에 응답하여, 원격 서버 디바이스는 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 비활성이거나 제2 클라이언트 디바이스에서 활성임을 나타내기 위해 루틴 인스턴스 데이터를 수정하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  24. 제23항에 있어서,
    제1 클라이언트 디바이스에서, 자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 비활성이거나 제2 클라이언트 디바이스에서 활성임을 나타내기 위해 루틴 인스턴스 데이터가 원격 서버 디바이스에서 수정되었는지 결정하는 단계; 및
    루틴 인스턴스 데이터가 수정되었다는 결정에 응답하여, 제1 클라이언트 디바이스에서 데이터의 렌더링을 중지하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  25. 제23항에 있어서,
    제1 클라이언트 디바이스 또는 원격 서버 디바이스에서, 루틴 인스턴스 데이터를 생성하는 단계를 더 포함하고, 상기 루틴 인스턴스 데이터는 자동화 어시스턴트 루틴을 초기화한 사용자 또는 디바이스, 자동화 어시스턴트 루틴이 초기화된 시간 또는 액션 세트의 액션의 상태를 추가로 식별하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  26. 제22항에 있어서,
    상기 추가 컨텐츠는 제1 클라이언트 디바이스에서 이전에 렌더링된 데이터의 적어도 일부를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  27. 제22항에 있어서,
    사용자가 제2 클라이언트 디바이스에서 계속되는 자동화 어시스턴트 루틴에 직접 또는 간접적으로 관심을 표시했다고 결정하는 것에 응답하여, 제2 클라이언트 디바이스가 근거리 통신망을 통해 제1 클라이언트 디바이스의 메모리 버퍼로부터 추가 컨텐츠를 수신하게 하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  28. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    제1 클라이언트 디바이스를 통해 자동화 어시스턴트 루틴을 수행하도록 자동화 어시스턴트를 초기화하는 단계와, 상기 자동화 어시스턴트 루틴은 자동화 어시스턴트에 의해 수행되는 액션 세트에 대응하고;
    자동화 어시스턴트 루틴과 관련된 정보를 제공하는 루틴 인스턴스 데이터를 생성하는 단계와, 상기 정보는 자동화 어시스턴트 루틴에 대해 할당된 디바이스로서 제1 클라이언트 디바이스를 식별하고;
    자동화 어시스턴트 루틴을 촉진하기 위해 제1 클라이언트 디바이스가 상기 액션 세트의 액션에 대응하는 컨텐츠를 렌더링하게 하는 단계와;
    사용자가 제1 클라이언트 디바이스에 덜 근접해 졌는지 결정하는 단계와, 상기 결정은 제1 클라이언트 디바이스와 통신하는 센서의 센서 데이터에 기초하고;
    사용자가 제1 클라이언트 디바이스에 덜 근접해졌다는 결정에 응답하여 제1 클라이언트 디바이스에서 컨텐츠의 렌더링을 적어도 일시적으로 중지시키는 단계와;
    자동화 어시스턴트 루틴이 제1 클라이언트 디바이스에서 적어도 일시적으로 중지되었음을 나타내도록 루틴 인스턴스 데이터를 수정하는 단계와;
    사용자가 자동화 어시스턴트에 액세스할 수 있는 제2 클라이언트 디바이스에 더 근접할 때, 자동화 어시스턴트로 하여금 루틴 인스턴스 데이터에 따라 제2 클라이언트 디바이스를 통해 자동화 어시스턴트 루틴의 수행을 재개하도록 하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  29. 제28항에 있어서,
    상기 루틴 인스턴스 데이터를 수정하는 단계는,
    루틴이 적어도 일시적으로 중지되었을 때 액션 세트의 하나 이상의 액션이 완료되었거나 진행중임을 나타내도록 루틴 인스턴스 데이터를 수정하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  30. 제28항에 있어서,
    사용자가 제2 클라이언트 디바이스에 더 근접해 졌을 때:
    자동화 어시스턴트 루틴과 관련된 루틴 허가에 액세스하는 단계; 및
    루틴 허가에 기초하여, 자동화 어시스턴트 루틴이 제2 클라이언트 디바이스로 전송되도록 허용되는지 결정하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  31. 제28항에 있어서,
    자동화 어시스턴트 루틴이 제2 클라이언트 디바이스에서 재개되었을 때:
    자동화 어시스턴트 루틴이 제2 클라이언트 디바이스에서 재개되었음을 나타내도록 루틴 인스턴스 데이터의 수정을 야기하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  32. 제31항에 있어서,
    상기 루틴 인스턴스 데이터를 생성하는 단계는 정보를 원격 서버 디바이스로 전송하는 단계를 포함하고, 그리고
    상기 루틴 인스턴스 데이터를 수정하는 단계는 루틴 인스턴스 데이터를 수정하라는 요청을 원격 서버 디바이스로 전송하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  33. 제28항에 있어서,
    상기 센서는 제1 클라이언트 디바이스 및 제2 클라이언트 디바이스와 다른 제3 클라이언트 디바이스에 통합되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  34. 제28항에 있어서,
    상기 자동화 어시스턴트가 제2 클라이언트 디바이스를 통해 자동화 어시스턴트 루틴의 수행을 재개하게 하는 단계는,
    제2 클라이언트 디바이스가 액션 세트의 액션에 대응하는 추가 컨텐츠를 렌더링하게 하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  35. 삭제
  36. 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 제1항 내지 제34항 중 어느 한 항의 방법을 수행하게 하는 명령들을 포함하는 컴퓨터 판독 가능 저장 매체.
  37. 제1항 내지 제34항 중 어느 한 항의 방법을 수행하기 위한 하나 이상의 프로세서를 포함하는 시스템.
KR1020207033521A 2018-04-23 2018-04-23 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송 KR102423712B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227024822A KR102621636B1 (ko) 2018-04-23 2018-04-23 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/028924 WO2019209255A1 (en) 2018-04-23 2018-04-23 Transferring an automated assistant routine between client devices during execution of the routine

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227024822A Division KR102621636B1 (ko) 2018-04-23 2018-04-23 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송

Publications (2)

Publication Number Publication Date
KR20210002598A KR20210002598A (ko) 2021-01-08
KR102423712B1 true KR102423712B1 (ko) 2022-07-21

Family

ID=62235995

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227024822A KR102621636B1 (ko) 2018-04-23 2018-04-23 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송
KR1020207033521A KR102423712B1 (ko) 2018-04-23 2018-04-23 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227024822A KR102621636B1 (ko) 2018-04-23 2018-04-23 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송

Country Status (6)

Country Link
US (3) US11133003B2 (ko)
EP (2) EP4343757A2 (ko)
JP (1) JP7313378B2 (ko)
KR (2) KR102621636B1 (ko)
CN (1) CN112119379B (ko)
WO (1) WO2019209255A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102621636B1 (ko) 2018-04-23 2024-01-05 구글 엘엘씨 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송
EP3620909B1 (en) * 2018-09-06 2022-11-02 Infineon Technologies AG Method for a virtual assistant, data processing system hosting a virtual assistant for a user and agent device for enabling a user to interact with a virtual assistant
US11368579B1 (en) * 2019-12-12 2022-06-21 Amazon Technologies, Inc. Presence-based notification system
WO2021130803A1 (ja) * 2019-12-23 2021-07-01 富士通株式会社 会話制御プログラム、会話制御方法および情報処理装置
KR20210089295A (ko) * 2020-01-07 2021-07-16 엘지전자 주식회사 인공지능 기반의 정보 처리 방법
EP4091044A1 (en) * 2020-01-17 2022-11-23 Google LLC Selectively invoking an automated assistant based on detected environmental conditions without necessitating voice-based invocation of the automated assistant
US11445068B1 (en) 2020-02-21 2022-09-13 Express Scripts Strategic Development, Inc. Virtual caller system
US11711638B2 (en) 2020-06-29 2023-07-25 The Nielsen Company (Us), Llc Audience monitoring systems and related methods
US20220400093A1 (en) * 2021-06-14 2022-12-15 LiveChat Software S.A. System and method for asynchronous messaging combined with a real-time communication
US11860704B2 (en) * 2021-08-16 2024-01-02 The Nielsen Company (Us), Llc Methods and apparatus to determine user presence
US11758223B2 (en) 2021-12-23 2023-09-12 The Nielsen Company (Us), Llc Apparatus, systems, and methods for user presence detection for audience monitoring

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140244266A1 (en) 2013-02-22 2014-08-28 Next It Corporation Interaction with a Portion of a Content Item through a Virtual Assistant
US20150058409A1 (en) 2013-03-22 2015-02-26 Frank C. Wang Enhanced content delivery system and method spanning multiple data processing systems
WO2016054230A1 (en) 2014-10-01 2016-04-07 XBrain, Inc. Voice and connection platform
US20170025124A1 (en) 2014-10-09 2017-01-26 Google Inc. Device Leadership Negotiation Among Voice Interface Devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9491033B1 (en) * 2013-04-22 2016-11-08 Amazon Technologies, Inc. Automatic content transfer
US10194189B1 (en) * 2013-09-23 2019-01-29 Amazon Technologies, Inc. Playback of content using multiple devices
US9767794B2 (en) 2014-08-11 2017-09-19 Nuance Communications, Inc. Dialog flow management in hierarchical task dialogs
JP2017215639A (ja) * 2016-05-30 2017-12-07 シャープ株式会社 ネットワークシステム、音声出力方法、サーバおよび電気機器
CN107490971B (zh) 2016-06-09 2019-06-11 苹果公司 家庭环境中的智能自动化助理
US10992795B2 (en) * 2017-05-16 2021-04-27 Apple Inc. Methods and interfaces for home media control
US10380852B2 (en) * 2017-05-12 2019-08-13 Google Llc Systems, methods, and devices for activity monitoring via a home assistant
US11436417B2 (en) * 2017-05-15 2022-09-06 Google Llc Providing access to user-controlled resources by automated assistants
DK179549B1 (en) * 2017-05-16 2019-02-12 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
KR102621636B1 (ko) * 2018-04-23 2024-01-05 구글 엘엘씨 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140244266A1 (en) 2013-02-22 2014-08-28 Next It Corporation Interaction with a Portion of a Content Item through a Virtual Assistant
US20150058409A1 (en) 2013-03-22 2015-02-26 Frank C. Wang Enhanced content delivery system and method spanning multiple data processing systems
WO2016054230A1 (en) 2014-10-01 2016-04-07 XBrain, Inc. Voice and connection platform
US20170025124A1 (en) 2014-10-09 2017-01-26 Google Inc. Device Leadership Negotiation Among Voice Interface Devices

Also Published As

Publication number Publication date
EP3769210A1 (en) 2021-01-27
KR102621636B1 (ko) 2024-01-05
US11133003B2 (en) 2021-09-28
CN112119379B (zh) 2024-04-12
CN112119379A (zh) 2020-12-22
KR20220104304A (ko) 2022-07-26
WO2019209255A1 (en) 2019-10-31
EP3769210B1 (en) 2024-01-10
JP7313378B2 (ja) 2023-07-24
EP4343757A2 (en) 2024-03-27
JP2021520558A (ja) 2021-08-19
US11682397B2 (en) 2023-06-20
US20200265835A1 (en) 2020-08-20
US20220013121A1 (en) 2022-01-13
US20230298584A1 (en) 2023-09-21
KR20210002598A (ko) 2021-01-08

Similar Documents

Publication Publication Date Title
KR102423712B1 (ko) 루틴 실행 중에 클라이언트 디바이스간 자동화 어시스턴트 루틴 전송
US11693533B2 (en) Providing composite graphical assistant interfaces for controlling various connected devices
US20240013783A1 (en) Regulating assistant responsiveness according to characteristics of a multi-assistant environment
JP6335139B2 (ja) 手動始点/終点指定及びトリガフレーズの必要性の低減
JP7250887B2 (ja) IoTベースの通知の生成、およびクライアントデバイスの自動化アシスタントクライアントによるIoTベースの通知の自動レンダリングを引き起こすコマンドの提供
CN113168304A (zh) 有条件地将各种自动助理功能分配给与外围助理控制设备的交互
CN112313606A (zh) 为自动助理扩展物理运动手势词典

Legal Events

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