KR20230006025A - 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트 - Google Patents

기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트 Download PDF

Info

Publication number
KR20230006025A
KR20230006025A KR1020227044715A KR20227044715A KR20230006025A KR 20230006025 A KR20230006025 A KR 20230006025A KR 1020227044715 A KR1020227044715 A KR 1020227044715A KR 20227044715 A KR20227044715 A KR 20227044715A KR 20230006025 A KR20230006025 A KR 20230006025A
Authority
KR
South Korea
Prior art keywords
event
assistant
user
notification
computing device
Prior art date
Application number
KR1020227044715A
Other languages
English (en)
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 KR20230006025A publication Critical patent/KR20230006025A/ko

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06312Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/109Time management, e.g. calendars, reminders, meetings or time accounting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Resources & Organizations (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행되는 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하는 시스템이 기술된다. 시스템은 이벤트에 기초하여 어시스턴트에 의해 수행된 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택한다. 시스템은 적어도 하나의 액션에 기초하여, 이벤트의 통지 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함하는 이벤트의 통지를 출력할지 여부를 결정한다. 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 시스템은 어시스턴트로, 사용자와 어시스턴트 사이의 상호 작용 동안 출력을 위한 이벤트의 통지를 전송한다.

Description

기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트{A VIRTUAL ASSISTANT CONFIGURED TO RECOMMENDED ACTIONS IN FURTHERANCE OF AN EXISTING CONVERSATION}
일부 컴퓨팅 플랫폼은 사용자가 가상의 컴퓨팅 어시스턴트(예를 들어, "지능형 개인 어시스턴트" 또는 단순히 "어시스턴트"라고도 칭함)와 채팅, 말하기 또는 통신할 수 있도록 하여, 그 어시스턴트가 정보를 출력하거나, 사용자의 요구에 응답하거나 또는 사용자가 태스크를 완료하도록 돕는 특정 동작을 수행하게 하는 사용자 인터페이스를 제공할 수 있다. 일부 어시스턴트은 매우 정교하고 다양한 실제 또는 가상 태스크를 수행하도록 구성되어 있지만, 사용자는 어시스턴트가 제공하는 모든 기능을 항상 인식하지 못할 수 있다. 사용자는 단지 정보를 요청하여, 어시스턴트로 하여금 그 어시스턴트가 처리할 수 있음을 사용자가 알고 있는 특정 태스크를 수행하도록 할 수 있다.
일반적으로, 본 발명의 기술은 어시스턴트가 사용자에게 이러한 정보를 요청하도록 요구하지 않으면서 어시스턴트가 사용자와의 기존 대화를 증진하기 위해 개시할 수 있는 하나 이상의 추가 액션에 관한 정보를 어시스턴트가 출력할 수 있게할 수 있다. 즉, 어시스턴트는 이러한 정보에 대한 명시적인 사용자 요청이 없는 경우에도 사용자와의 기존 대화와 관련된 어시스턴트의 추가 기능(capabilities)을 사용자에게 사전에 가이드할 수 있다. 예를 들어, 일단 어시스턴트가 사용자와 관련된 정보를 유지하거나 액세스할 수 있는 권한을 수신하면, 어시스턴트는 사용자 정보에 기초하여, 사용자에 대한 비행 예약의 출발 시간이 지연된 것으로 결정할 수 있다. 어시스턴트는 비행 지연에 관해 사용자에게 통지하는 출력을 생성하는 것 외에도, 사용자 입력을 수신하지 않고, 그 지연을 수용하기 위해 저녁 식사 예약 또는 지상 교통 일정을 재스케줄링하도록 제안하는 추가 출력을 생성할 수 있다. 이러한 방식으로, 어시스턴트는 사용자와의 기존 대화를 증진하기 위해 추가 액션(예를 들어, 저녁 식사 또는 지상 교통 일정 재스케줄링)을 수행하기 위해 대화를 개시하거나, 추가 정보를 출력하거나 또는 관련 제안(offers)을 출력하도록 구성된다. 따라서, 설명된 기술은 사용자가 다양한 액션을 발견하고 어시스턴트로 하여금 수행하도록 요구하는 사용자 입력의 양을 감소시킴으로써 어시스턴트와의 사용성을 향상시킬 수 있다.
일 예에서, 본 발명은 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행되는 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하는 단계와, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하는 단계와; 적어도 하나의 액션에 기초하여, 그 이벤트의 통지를 출력할지 여부를 결정하는 단계를 포함하는 방법에 관한 것으로, 상기 통지는 이벤트의 표시 및 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함한다. 상기 방법은 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 어시스턴트로, 사용자와 어시스턴트 사이의 상호 작용 동안 출력을 위해 이벤트의 통지를 전송하는 단계를 더 포함한다.
다른 예에서, 본 발명은 출력 디바이스, 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하는 컴퓨팅 디바이스에 관한 것이다. 상기 메모리는 실행될 때, 적어도 하나의 프로세서로 하여금: 어시스턴트를 실행하게 하는 명령들을 포함하고, 상기 어시스턴트는, 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하고, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하고; 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하도록 구성되고, 상기 통지는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함하고; 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 출력 디바이스를 통해, 사용자와 어시스턴트 사이의 상호 작용 동안 이벤트의 통지를 출력하도록 구성된다.
다른 예에서, 본 발명은 명령들을 포함하는 컴퓨터-판독 가능 저장 매체에 관한 것으로, 상기 명령들은 실행될 때 디지털 어시스턴트 시스템의 적어도 하나의 프로세서로 하여금: 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행하는 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하고, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하고; 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하게 하고, 상기 통지는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함한다. 상기 명령들은 실행될 때 디지털 어시스턴트 시스템의 적어도 하나의 프로세서로 하여금 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 어시스턴트로, 사용자와 어시스턴트 사이의 상호 작용 동안 출력을 위해 이벤트의 통지를 전송하게 한다.
다른 예에서, 본 발명은 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행되는 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하는 수단과, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하는 수단과; 적어도 하나의 액션에 기초하여, 그 이벤트의 통지를 출력할지 여부를 결정하는 수단을 포함하는 시스템에 관한 것으로, 상기 통지는 이벤트의 표시 및 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함한다. 상기 시스템은 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 어시스턴트로, 사용자와 어시스턴트 사이의 상호 작용 동안 출력을 위해 이벤트의 통지를 전송하는 수단을 더 포함한다.
하나 이상의 예의 세부 사항은 첨부 도면 및 이하의 설명에 기재되어 있다. 본 발명의 다른 특징, 목적 및 이점은 상세한 설명 및 도면 및 청구 범위로부터 명백할 것이다.
도 1은 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하는 예시적인 시스템을 도시하는 개념도이다.
도 2는 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 디바이스를 도시하는 블록도이다.
도 3은 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하는 하나 이상의 프로세서에 의해 수행된 예시적인 동작들을 도시하는 흐름도이다.
도 4는 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 디지털 어시스턴트 서버를 도시하는 블록도이다.
도 1은 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하는 예시적인 시스템을 도시하는 개념도이다. 도 1의 시스템(100)은 네트워크(130)를 통해 검색 서버 시스템(180) 및 컴퓨팅 디바이스(110A 및 HOB)(통칭하여, 컴퓨팅 디바이스(110))와 통신하는 디지털 어시스턴트 서버(160)를 포함한다. 시스템(100)이 디지털 어시스턴트 서버(160), 검색 서버 시스템(180) 및 컴퓨팅 디바이스(110) 사이에 배포되는 것으로 도시되어 있지만, 다른 예에서, 시스템(100)에 귀속된 특징 및 기술은 컴퓨팅 디바이스(110)의 로컬 구성 요소에 의해 내부적으로 수행될 수 있다. 유사하게, 디지털 어시스턴트 서버(160)는 특정 컴포넌트를 포함할 수 있고, 이하의 설명에서 검색 서버 시스템(180) 및/또는 컴퓨팅 디바이스(110)에 귀속되는 다양한 기술을 수행할 수 있다. 도 1은 2개의 컴퓨팅 디바이스(110)를 도시하지만, 임의의 적절한 수의 하나 이상의 컴퓨팅 디바이스(110)가 사용될 수 있다.
네트워크(130)는 컴퓨팅 시스템, 서버 및 컴퓨팅 디바이스들 사이에서 데이터를 전송하기 위한 임의의 공용 또는 사설 통신 네트워크, 예를 들어 셀룰러, Wi-Fi 및/또는 다른 유형의 네트워크를 나타낸다. 디지털 어시스턴트 서버(160)는 컴퓨팅 디바이스들(110)이 네트워크(130)에 연결될 때 컴퓨팅 디바이스(110)에 액세스 가능한 가상 어시스턴트 서비스를 제공하기 위해 네트워크(130)를 통해 컴퓨팅 디바이스들(110)과 데이터를 교환할 수 있다. 디지털 어시스턴트 서버(160)는 검색 서버 시스템(180)에 의해 제공된 검색 서비스에 액세스하기 위해 네트워크(130)를 통해 검색 서버 시스템(180)과 데이터를 교환할 수 있다. 컴퓨팅 디바이스들(110)은 네트워크(130)를 통해 검색 서버 시스템(180)에 의해 제공되는 검색 서비스에 액세스하기 위해 검색 서버 시스템(180)과 데이터를 교환할 수 있다.
네트워크(130)는 동작적으로 상호 연결되어 서버 시스템(160, 180)과 컴퓨팅 디바이스들(110) 사이에 정보의 교환을 제공하는 하나 이상의 네트워크 허브, 네트워크 스위치, 네트워크 라우터 또는 임의의 다른 네트워크 장비를 포함할 수 있다. 컴퓨팅 디바이스(110), 디지털 어시스턴트 서버(160) 및 검색 서버 시스템(180)은 임의의 적절한 통신 기술을 사용하여 네트워크(130)를 통해 데이터를 송수신할 수 있다. 네트워크(130)에 컴퓨팅 디바이스(110), 디지털 어시스턴트 서버(160) 및 검색 서버 시스템(180)은 개별 네트워크 링크를 사용하여 네트워크(130)에 동작 가능하게 각각 연결될 수 있다. 네트워크(130)에 컴퓨팅 디바이스(110), 디지털 어시스턴트 서버(160) 및 검색 서버 시스템(180)을 연결하는 링크는 이더넷 또는 다른 유형의 네트워크 연결일 수 있고, 이러한 연결은 무선 및/또는 유선 연결일 수 있다.
디지털 어시스턴트 서버(160) 및 검색 서버 시스템(180)은 네트워크(130)와 같은 네트워크로/로부터 정보를 송수신할 수 있는 하나 이상의 데스크탑 컴퓨터, 랩탑 컴퓨터, 메인 프레임, 서버, 클라우드 컴퓨팅 시스템 등과 같은 임의의 적절한 원격 컴퓨팅 시스템을 나타낸다. 디지털 어시스턴트 서버(160)는 가상 어시스턴트 서비스를 호스팅(또는 적어도 액세스를 제공)한다. 검색 서버 시스템(180)은 검색 서비스를 호스팅(또는 적어도 액세스를 제공)한다. 일부 예에서, 디지털 어시스턴트 서버(160)와 검색 서버 시스템(180)은 클라우드를 통해 그들의 각각의 서비스에 대한 액세스를 제공하는 클라우드 컴퓨팅 시스템을 나타낸다.
컴퓨팅 디바이스(110)는 네트워크(130)를 통해 제공된 가상 어시스턴트 서비스에 액세스하도록 구성된 개별 모바일 또는 비-모바일 컴퓨팅 디바이스를 나타낸다. 컴퓨팅 디바이스(110)의 예는 모바일 폰, 태블릿 컴퓨터, 랩탑 컴퓨터, 데스크탑 컴퓨터, 서버, 메인 프레임, 셋-톱 박스, 텔레비전, 웨어러블 디바이스(예를 들어, 컴퓨터화된 시계, 컴퓨터화된 안경, 컴퓨터화된 장갑 등), 홈 자동화 디바이스 또는 시스템(예를 들어, 지능형 온도 조절기 또는 보안 시스템), 음성-인터페이스 또는 카운터탑 홈 어시스턴트 디바이스, 개인용 정보 단말기(PDA), 게임 시스템, 미디어 플레이어, 전자책 리더, 모바일 텔레비전 플랫폼, 자동차 네비게이션 또는 인포테인먼트 시스템, 또는 가상 어시스턴트를 실행 또는 액세스하고 네트워크(130)와 같은 네트워크를 통해 정보를 수신하도록 구성된 임의의 다른 유형의 모바일, 비-모바일, 웨어러블 및 비-웨어러블 컴퓨팅 디바이스를 포함한다.
컴퓨팅 디바이스(110)는 네트워크(130)를 통해 디지털 어시스턴트 서버(160) 및/또는 검색 서버 시스템(180)과 통신하여, 디지털 어시스턴트 서버(160)에 의해 제공되는 가상 어시스턴트 서비스에 액세스하고 및/또는 검색 서버 시스템(180)에 의해 제공되는 검색 서비스에 액세스할 수 있다. 가상 어시스턴트 서비스를 제공하는 과정에서, 디지털 어시스턴트 서버(160)는 태스크 완료에 필요한 정보를 획득하기 위해 검색 서버 시스템(180)과 통신할 수 있다.
도 1의 예에서, 디지털 어시스턴트 서버(160)는 어시스턴트 모듈(122B) 및 사용자 정보 데이터 저장소(124B)를 포함한다. 컴퓨팅 디바이스(110A)는 사용자 인터페이스 컴포넌트(UIC)(112), 사용자 인터페이스(UI) 모듈(120), 어시스턴트 모듈(122) 및 사용자 정보 데이터 저장소(124A)를 포함한다. 검색 서버 시스템(180)은 검색 모듈(182)을 포함한다. 도시되지는 않았지만, 컴퓨팅 디바이스(HOB)는 컴퓨팅 디바이스(110A)와 유사한 컴포넌트 및/또는 모듈을 포함할 수 있다.
모듈(120, 122A, 122B 및 182)은 소프트웨어, 하드웨어, 펌웨어, 또는 컴퓨팅 디바이스(110A), 디지털 어시스턴트 서버(160) 또는 검색 서버 시스템(180) 중 하나에 상주하는 및/또는 실행하는 하드웨어, 소프트웨어 및 펌웨어의 혼합을 사용하여 기술된 동작들을 수행할 수 있다. 컴퓨팅 디바이스(110A), 디지털 어시스턴트 서버(160) 및 검색 서버 시스템(180)은 다수의 프로세서 또는 다수의 디바이스로 모듈(120, 122A, 122B 및 182)을 실행할 수 있다. 컴퓨팅 디바이스(110A), 디지털 어시스턴트 서버(160) 및 검색 서버 시스템(180)은 기본 하드웨어상에서 실행되는 가상 머신으로서 모듈(120, 122A, 122B 및 182)을 실행할 수 있다. 모듈(120, 122A, 122B 및 182)은 운영 체제 또는 컴퓨팅 플랫폼의 하나 이상의 서비스로서 실행될 수 있다. 모듈(120, 122A, 122B 및 182)은 컴퓨팅 플랫폼의 애플리케이션 계층에서 하나 이상의 실행 가능한 프로그램으로서 실행될 수 있다.
컴퓨팅 디바이스들(110)의 UIC(112)는 컴퓨팅 디바이스(110A)를 위한 입력 및/또는 출력 디바이스로서 기능할 수 있다. UIC(112)는 다양한 기술을 사용하여 구현될 수 있다. 예를 들어, UIC(112)는 존재 감지 입력 스크린, 마이크로폰 기술, 적외선 센서 기술, 카메라, 또는 사용자 입력을 수신하는데 사용하기 위한 다른 입력 디바이스 기술을 사용하여 입력 디바이스로서 기능할 수 있다. UIC(112)는 사용자에게 정보를 출력하는데 사용하기 위한 임의의 하나 이상의 디스플레이 디바이스, 스피커 기술, 햅틱 피드백 기술 또는 다른 출력 디바이스 기술을 사용하여 사용자에게 출력을 제공하도록 구성된 출력 디바이스로서 기능할 수 있다.
UI 모듈(120)은 UIC(112) 및 컴퓨팅 디바이스(110A)의 다른 컴포넌트와의 사용자 상호 작용을 관리할 수 있고, UIC(112)를 통해 어시스턴트 서비스를 제공하기 위해 디지털 어시스턴트 서버(160)와 상호 작용할 수 있다. UI 모듈(120)은 컴퓨팅 디바이스(110A)의 사용자가 출력을 보고 및/또는 UIC(112)에서 입력을 제공함에 따라 UIC(112)가 사용자 인터페이스를 출력하게 할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, UI 모듈(120)은 UIC(112)가 UIC(112)의 디스플레이 스크린에서 사용자 인터페이스(114)를 디스플레이하게 하는 명령을 UIC(112)에 전송할 수 있다.
사용자 인터페이스(114)는 컴퓨팅 디바이스(110A)의 사용자와 어시스턴트 모듈(122A)에 의해 제공되는 어시스턴트 간의 대화의 텍스트를 포함한다. 도 1의 예에서, 사용자 인터페이스(114)는 그래픽 사용자 인터페이스이다. 사용자 인터페이스(114)는 일부 예에서 가청 사용자 인터페이스일 수 있다. 사용자 인터페이스(114)는 가청 사운드, 진동, 텍스트, 그래픽, 컨텐츠 카드, 이미지 등과 같은 다양한 형태의 가상 어시스턴트 정보를 포함할 수 있다.
UI 모듈(120)과 UIC(112)는 상이한 시간에 그리고 사용자 및 컴퓨팅 디바이스(110A)가 상이한 위치에 있을 때, 사용자가 사용자 인터페이스(114)와 상호 작용할 때 사용자로부터 하나 이상의 입력(예를 들어, 음성 입력, 터치 입력, 비-터치 또는 존재 감지 입력, 비디오 입력, 오디오 입력 등)의 표시(indications)를 수신할 수 있다. UI 모듈(120)과 UIC(112)는 UIC(112)에서 검출된 입력을 해석할 수 있고, UIC(112)에서 검출된 입력에 관한 정보를 어시스턴트 모듈(122A) 및/또는 컴퓨팅 디바이스(110A)에서 실행되는 하나 이상의 다른 관련 플랫폼, 운영 체제, 애플리케이션, 및/또는 서비스들로 중계하여, 예를 들어, 컴퓨팅 디바이스(110A)가 기능들을 수행하게 할 수 있다.
UI 모듈(120)은 컴퓨팅 디바이스(110A) 및/또는 서버 시스템(160 및 180)과 같은 하나 이상의 원격 컴퓨팅 시스템에서 실행되는 하나 이상의 관련 플랫폼, 운영 체제, 애플리케이션 및/또는 서비스로부터 정보 및 명령을 수신할 수 있다. 또한, UI 모듈(120)은 컴퓨팅 디바이스(110A)에서 실행되는 하나 이상의 관련 플랫폼, 운영 체제, 애플리케이션 및/또는 서비스와 컴퓨팅 디바이스(110A)의 다양한 출력 디바이스(예를 들어, 스피커, LED 표시기, 오디오 또는 햅틱 출력 디바이스 등)간의 중개자로 작용하여, 컴퓨팅 디바이스(110A)를 이용하여 출력(예를 들어, 그래픽, 광의 플래시, 사운드, 햅틱 응답 등)을 생성할 수 있다. 예를 들어, UI 모듈(120)은 UIC(112)가 디지털 어시스턴트 서버(160)로부터 네트워크(130)를 통해 수신하는 데이터 UI 모듈(120)에 기초하여 사용자 인터페이스(114)를 출력하게 할 수 있다. UI 모듈(120)은 디지털 어시스턴트 서버(160) 및/또는 어시스턴트 모듈(122A)로부터 입력으로서, 사용자 인터페이스(114)로서 제시하기 위한 정보(예를 들어, 오디오 데이터, 텍스트 데이터, 이미지 데이터 등) 및 명령을 수신할 수 있다.
어시스턴트 모듈(122A)과 어시스턴트 모듈(122B)은 컴퓨팅 디바이스(110)를 통해 액세스된 가상 어시스턴트 서비스의 일부로서 사용자 정보 데이터 저장소(124A 및 124B)를 협력적으로 유지할 수 있다. 어시스턴트 모듈(122B)과 사용자 정보 데이터 저장소(124B)는 예시적인 어시스턴트의 서버 측 또는 클라우드 구현을 나타내는 반면, 어시스턴트 모듈(122A)과 사용자 정보 데이터 저장소(124A)는 예시적인 어시스턴트의 클라이언트 측 또는 로컬 구현을 나타낸다. 일부 예에서, 어시스턴트 모듈(122A)에 귀속되는 일부 또는 모든 기능은 어시스턴트 모듈(122B)에 의해 수행될 수 있으며, 그 반대로 마찬가지이다.
어시스턴트 모듈(122), 어시스턴트 모듈(122A) 및 어시스턴트 모듈(122B)은 자동으로 그리고 사용자 상호 작용을 요구하지 않고, 컴퓨팅 디바이스의 사용자에게 사용자가 현재 시간에 관심이 있을 수 있는 의미있거나 유용한 정보를 사전에 안내(direct)하도록 구성된 어시스턴트를 실행할 수 있다고 통칭한다. 어시스턴트 모듈(122)은 그러한 정보를 위해 어시스턴트에게 요청하도록 사용자에게 요구하지 않고, 어시스턴트가 사용자와의 기존 대화를 증진시키기 위해 수행하도록 구성된 하나 이상의 추가 액션에 관한 정보를 출력하도록 구성될 수 있다. 예를 들어, 어시스턴트 모듈(122)에 의해 제공되는 어시스턴트는 그러한 정보에 대한 명시적인 사용자 요청이 없는 경우에도 사용자와의 기존 대화와 관련된 어시스턴트의 추가 기능을 사전에 안내할 수 있다.
어시스턴트 모듈(122)은 각각 컴퓨팅 디바이스(110)의 사용자와 같은 개인을위한 태스크 또는 서비스를 수행할 수 있는 지능형 개인 어시스턴트로서 실행하도록 구성된 소프트웨어 에이전트를 포함할 수 있다. 어시스턴트 모듈(122)은 사용자 입력(예를 들어, UIC(112)에서 검출됨), 상황 인식(예를 들어, 위치 등에 기초한), 및/또는 다양한 정보 소스(예를 들어, 컴퓨팅 디바이스(110), 디지털 어시스턴트 서버(160)에 로컬로 저장되거나 푸시 통지 서비스를 포함하는 검색 서버 시스템(180)에 의해 제공된 검색 서비스를 통해 획득됨)로부터 다른 정보(예를 들어, 날씨 또는 교통 상황, 뉴스, 주가, 스포츠 스코어, 사용자 스케쥴, 운송 스케쥴, 소매 가격 등)에 액세스하는 능력에 기초하여 이들 태스크 또는 서비스를 수행할 수 있다. 어시스턴트 모듈(122)은 인공 지능 및/또는 기계 학습 기술을 수행하여, 사용자를 대신하여 하나 이상의 태스크를 자동으로 식별하고 완료할 수 있다. 어시스턴트 모듈(122)은 하나 이상의 태스크를 수행하기 위해 다른 애플리케이션(예를 들어, 제3자 애플리케이션), 서비스, 또는 다른 디바이스(예를 들어, 텔레비전, 자율 자동차를 포함하는 자동차, 시계, 홈 자동화 시스템, 엔터테인먼트 시스템 등)에 의존할 수 있다.
명시적인 사용자 동의를 수신한 후, 어시스턴트 모듈(122)은 예를 들어, 컴퓨팅 디바이스(110)의 사용자와의 대화를 지원하기 위한 동작들을 실행하는 과정에서, 사용자와 관련된 정보, 또는 (예를 들어, 컴퓨팅 디바이스(110), 서버 시스템 (160 또는 180)에 위치한 정보 소스, 또는 네트워크(130)의 다른 곳에 위치한 임의의 다른 서버 또는 디바이스에 의해 저장된) 사용자와 관련된 정보의 위치에 대한 포인터를 자동으로 유지할 수있다. 어시스턴트 모듈(122)은 사용자 정보 데이터 저장소(124A 및 124B)(통칭하여 "사용자 정보 데이터 저장소(124)")로서 사용자와 관련된 정보 또는 정보에 대한 포인터를 유지할 수 있다. 데이터 저장소(124)는 어시스턴트 모듈(122)에 의해 실행된 어시스턴트가 그 어시스턴트에 의해 요구되는 사용자 정보에 빠르게 액세스하여 실제 태스크, 가상 태스크를 완료하거나, 컴퓨팅 디바이스(110)의 사용자의 즉각적인 및/또는 미래의 요구에 응답할 수 있게할 수 있다.
예를 들어, 사용자와 관련된 정보는 사용자와 어시스턴트간의 대화 동안, 사용자로부터 허가를 받아 획득한 정보, 캘린더 정보, 연락처 정보, 사용자 관심(사), 사용자 선호도, 및 사용자에게 의미있는 정보를 사전에 안내하기 위해 어시스턴트 모듈(122)에 의해 사용될 수 있는 사용자와 관련된 임의의 다른 정보일 수 있다. 사용자와 관련된 정보 소스의 예는 전자 메일 시스템에 내장된 인텔리전스, 어시스턴트 모듈(122)과의 사용자 상호 작용, 사용자와 관련된 디바이스(예를 들어, 컴퓨팅 디바이스(110))상의 사용자 상호 작용 및 애플리케이션 이용, 또는 다른 정보 소스를 포함할 수 있지만, 이에 한정되는 것은 아니다.
본 명세서 전반에 걸쳐 사용되는 "대화(conversation)"라는 용어는 초기 설정, 설치, 최초 사용 등 동안 발생할 수 있는 상호 작용과 반대로 컴퓨팅 디바이스의 사용자와 그 컴퓨팅 디바이스에서 실행되거나 그로부터 액세스 가능한 어시스턴트 사이의 규칙적인 상호 작용을 지칭한다. 다시 말해, 대화는 사용자가 어시스턴트를 설정(setting up)하는 것 이외의 태스크를 수행함에 따라, 사용자가 어시스턴트를 일상적으로 사용하는 동안 발생한다. 본 명세서에서 사용되는 대화는 사용자가 앱을 설정하거나 사용자 인터페이스의 사전 설정된 필드를 채우기 위한 정보를 제공하는 부분으로 사용자가 질문에 답변하는 것을 지칭하지는 않는다.
동작시, 어시스턴트 모듈(122)은 컴퓨팅 디바이스(110)에서 실행되거나 그로부터 액세스 가능한 어시스턴트를 제공할 수 있다. 어시스턴트는 대화를 개시하거나 사용자와 다이얼로그(dialog, 대화)를 시작하고, 사용자에게 정보를 요청하고, 사용자가 액션을 인식하지 않더라도 어시스턴트가 사용자를 대신하여 수행할 수 있는 액션들을 제안하도록 구성될 수 있다. 어시스턴트는 사용자에게 명시적으로 요구하지 않고, 사용자와의 기존 대화와 관련된 가치있는 액션을 사용자에게 추천하도록 구성될 수 있다. 예를 들어, 어시스턴트 모듈(122B)은 사용자와 다이얼로그를 시작할지 여부를 결정하고 시작할 다이얼로그를 선택할 수 있다. 어시스턴트 모듈(122B)은 어시스턴트 모듈(122A)이 다이얼로그를 개시하여 어시스턴트 모듈(122A)로 하여금 다이얼로그와 관련된 액션을 수행하기 위한 사용자 권한을 획득하게 할 수 있다.
어시스턴트 모듈(122)은 컴퓨팅 디바이스(110)의 사용자와 관련된 정보에 기초하여, 컴퓨팅 디바이스(110)의 사용자와 컴퓨팅 디바이스(110)에서 실행되는 어시스턴트 간의 상호 작용(예를 들어, 대화 또는 다이얼로그)을 트리거하기 위한 이벤트를 결정할 수 있다. 어시스턴트 모듈(122)은 사용자가 그러한 정보의 사용 또는 수집에 긍정적으로 동의하는 경우 컴퓨팅 디바이스(110) 및/또는 컴퓨팅 디바이스(110) 사용자와 관련된 정보만을 분석할 수 있다. 어시스턴트 모듈(122)은 사용자가 동의를 철회할 기회를 추가로 제공할 수 있고, 이 경우 어시스턴트 모듈(122)은 컴퓨팅 디바이스(110) 또는 컴퓨팅 디바이스(110) 사용자와 관련된 정보의 수집 또는 유지를 중단할 수 있다. 어시스턴트 모듈(122)은 검색 히스토리 및 온라인 상호 작용, 어시스턴트와의 이전 상호 작용(예를 들어, "엄마 호출", "캐시(Kathy) 호출"), 및 컴퓨팅 디바이스(110)에서 실행되거나 그로부터 액세스 가능한 다른 애플리케이션 및 제3자 엔티티와의 상호 작용을 포함하지만 이에 제한되지 않는 사용자의 개인 정보(예를 들어, 데이터 저장소(124))를 분석할 수 있다. 어시스턴트 모듈(122B)은 사용자가 임의의 주어진 시간에 어시스턴트와 상호 작용할 가능성이 높은 "표면(surface)" 또는 디바이스를 인식하고 이벤트의 통지를 그 특정 표면에 전송할 수 있다.
예를 들어, 어시스턴트 모듈(122)이 사용자로부터, 사용자와 관련된 정보를 유지하거나 액세스할 수 있는 권한을 수신한 후, 어시스턴트 모듈(122B)은 컴퓨팅 디바이스(110)의 사용자의 다가오는 여행 계획에 관한 정보를 포함하는 데이터 저장소(124B)에 사용자 정보를 유지할 수 있다. 여행 계획은 원래 사용자가 현재 시간으로부터 대략 12시간 내에 출발하도록 예정된 특정 비행에서 좌석을 예약했음을 나타낼 수 있다. 어시스턴트 모듈(122B)에서 실행되는 에이전트는 검색 서버 시스템(180)으로부터 그 여행 계획과 관련된 업데이트를 획득하도록 구성될 수 있다. 예를 들어, 어시스턴트 모듈(122B)의 에이전트는 특정 비행에 관한 상태 정보에 대한 쿼리를 검색 모듈(182)로 전송할 수 있고, 이에 응답하여 어시스턴트 모듈(122B)의 에이전트는 특정 비행이 원래 예정된 출발 시간으로부터 30분 지연되었음을 나타내는 정보를 수신할 수 있다.
검색 모듈(182)은 다양한 정보 소스(예를 들어, 검색 서버 시스템(180)에 로컬로 또는 원격으로 저장됨)으로부터의 검색 쿼리에 관련된 정보(예를 들어, 날씨 또는 교통 상황, 뉴스, 주가, 스포츠 스코어, 사용자 스케쥴, 교통편 스케쥴, 자율 차량 예약, 소매 가격 등)에 대한 검색(예를 들어, 인터넷 검색)을 수행할 수 있다. 검색을 실행한 후, 검색 모듈(182)은 그 검색으로부터 리턴된 정보(예를 들어, 검색 결과, 검색 결과에 대한 링크 등)를 디지털 어시스턴트 서버(160) 또는 컴퓨팅 디바이스들(110)에 출력할 수 있다. 검색 모듈(182)은 (예를 들어, 컴퓨팅 디바이스(110A)와 관련된 컨텍스트(contextual, 상황) 정보에 기초하여) 검색 모듈(182)에 의해 생성된 검색 쿼리와 관련이 있는 것으로 결정된 정보에 대한 검색을 실행할 수 있다. 검색 모듈(182)은 검색 모듈(182)이 디지털 어시스턴트 서버(160) 또는 컴퓨팅 디바이스(110A)로부터 수신하는 검색 쿼리에 기초하여 (예를 들어, 가상 어시스턴트가 컴퓨팅 디바이스(110)의 사용자를 대신하여 완료하는 태스크의 일부로서) 검색을 실행할 수 있다.
어시스턴트 모듈(122B)은 비행 지연이 컴퓨팅 디바이스(110)의 사용자와의 상호 작용을 개시하기 위한 이벤트인 것으로 결정할 수 있다. 어시스턴트 모듈(122B)은 그 이벤트의 통지를 트리거하기 위한 정보를 어시스턴트 모듈(122A)로 전송할 수 있다.
어시스턴트 모듈(122B)로부터 이벤트 트리거를 수신하는 것에 응답하여, 어시스턴트 모듈(122A)은 이벤트에 기초하여 그리고 어시스턴트 모듈(122A)이 수행하도록 구성된 복수의 액션들로부터, 이벤트와 연관되거나 그와 관련된 적어도 하나의 액션을 선택할 수 있다. 예를 들어, 어시스턴트 모듈(122A)은 다른 액션들 중에서도, 서비스의 스케줄링(예를 들어, 자율 차량 예약을 포함하는 교통편, 홈 또는 자동 관련 수리/유지 보수, 음식 배달, 애완 동물 돌보기, 애완 동물 산책 시키기, 집 돌보기, 아이 돌보기, 배달, 여행 예약 및 임의의 또는 모든 다른 서비스), 통신 교환(예를 들어, 캘린더 초대, 이메일 메시지, 문자-기반 메시지, 소셜 미디어 네트워크 메시지, 전화 또는 화상 통화 및 임의의 또는 모든 다른 통신), 상품 조달(예를 들어, 온라인 쇼핑, 꽃 배달, 이벤트 티켓 구매 및 액션 관련 임의의 또는 모든 다른 조달)을 포함하지만 이에 제한되지 않는 복수의 액션을 수행하도록 구성될 수 있다. 어시스턴트 모듈(122A)은 복수의 액션을 수행하기 위해 컴퓨팅 디바이스(110A)에서 실행되거나 그로부터 액세스 가능한 다른 애플리케이션 또는 에이전트에 의존할 수 있다. 어시스턴트 모듈(122A)은 복수의 액션을 수행하기 위해 컴퓨팅 디바이스(110A)에서 실행되거나 그로부터 액세스 가능한 다른 애플리케이션 또는 에이전트에 의존할 수 있다.
어시스턴트 모듈(122A)은 이벤트와 관련되는 복수의 액션들 중 임의의 하나 이상을 선택할 수 있다. 예를 들어, 어시스턴트 모듈(122A)은 다른 어시스턴트가 특정 유형의 이벤트에 대해 다른 컴퓨팅 디바이스의 사용자를 대신하여 실행하는 액션들의 유형에 관한 피드백에 기초하여 특정 유형의 이벤트에 대한 그의 기능 또는 액션을 스코어링할 수 있다. 어시스턴트 모듈(122A)은 복수의 액션 각각을 스코어링하여, 이벤트와 관련될 수 있는 것으로 하나 이상의 더 높은 스코어링 액션을 선택할 수 있다. 예를 들어, 데이터 저장소(124A)에 저장된 정보에 기초하여, 어시스턴트 모듈(122A)은 비행 예약에 부가하여, 사용자가 비행의 최종 목적지에서 자율 차량과 같은 지상 교통편을 예약했다고 결정할 수 있다. 어시스턴트 모듈(122A)은 다른 사용자가 다른 어시스턴트와 상호 작용하는 방법에 기초하여, 지상 교통편을 스케줄링 또는 재스케줄링하는 액션이 어시스턴트에 의해 전형적으로 수행되는 비행 지연 이벤트와 관련된 액션이라고 결정할 수 있다.
모든 이벤트가 사용자에게 통지하는데 가치있는 이벤트인 것은 아니다. 따라서, 현재 시간에서 이벤트의 통지를 출력하기 전에, 어시스턴트 모듈(122A)은 이벤트의 통지를 출력할지 여부를 결정할 수 있다. 어시스턴트 모듈(122A)은 사용자가 통지에서 가치를 찾을 수 있도록 보장하기 위해 특정 이벤트의 통지를 제한하거나 특정 이벤트의 통지를 특정 컨텍스트에 맞추어 조정(tailor)할 수 있다. 일 예로서, 어시스턴트 모듈(122A)은 사용자와 어시스턴트 사이에서 이전 상호 작용이 얼마나 최근에 발생했는지와 사용자와 어시스턴트 사이의 이전 상호 작용의 빈도의 조합에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 결정할 수 있다.
예를 들어, 사용자 정보 데이터 저장소(124A)에 저장된 정보에 기초하여, 어시스턴트 모듈(122A)은 사용자가 깨어있을 때, 평균적으로, 임계 간격 또는 임계 빈도(예를 들어, 매일 약 1시간에 한 번)로 어시스턴트와 상호 작용한다고 결정할 수 있다. 어시스턴트 모듈(122A)은 사용자와 어시스턴트 사이의 마지막 대화가 현재 시간 이전(예를 들어, 15분 전)에 임계 간격 보다 적게 발생했기 때문에 다른 12시간 이상 출발하도록 예정되지 않은 비행에 대해 30분 비행 지연의 통지를 출력하지 않도록 결정할 수 있다. 일부 예에서, 어시스턴트 모듈(122A)은 사용자와 어시스턴트 사이의 마지막 대화가 현재 시간 이전(예를 들어, 1시간 전)에 임계 간격 이상 발생했기 때문에, 다른 12시간 이상 출발하도록 예정되지 않은 비행에 대해 30분 비행 지연의 통지를 출력하도록 결정할 수있다.
이벤트의 통지를 출력하기로 결정한 것에 응답하여, 어시스턴트 모듈(122A)은 그 이벤트의 통지를 출력할 수 있다. 통지는 이벤트의 표시 및 그 이벤트와 관련된 위에서 선택된 적어도 하나의 액션을 수행하기 위한 요청을 포함할 수 있다. 예를 들어, 어시스턴트 모듈(122B)은 사용자와 어시스턴트 사이의 상호 작용 동안 UIC(212)를 통해, 출력하기 위해 이벤트의 통지를 어시스턴트 모듈(122A)로 전송할 수 있다. 어시스턴트 모듈(122A)은 사용자 인터페이스(114)의 일부로서 통지를 출력할 수 있고, 도 1에 도시된 대화의 텍스트 일부를 포함할 수 있다. 어시스턴트 모듈(122A)은 사용자를 대신하여, 이벤트와 관련된 하나 이상의 액션을 수행하라는 요청의 표시를 통지에 포함시킬 수 있다. 예를 들어, 이벤트의 표시는 "기상 악화로 인해 오늘 밤 토피카(Topeka)행 비행이 취소되었습니다"라는 디스플레이된 텍스트 또는 음성 텍스트에 해당할 수 있으며, 적어도 하나의 액션을 수행하라는 요청의 표시는 "당신이 예약한 지상 교통편을 재스케줄링하시겠습니까? "라는 디스플레이된 텍스트 또는 음성 텍스트에 해당할 수 있다.
개인 또는 민감 정보의 부주의한 출력을 방지하기 위해, 어시스턴트 모듈(122A)은 통지를 실제로 출력하지 않고 통지의 시그널링을 야기할 수 있다. 예를 들어, 어시스턴트 모듈(122B)로부터 통지를 수신하는 것에 응답하여, 어시스턴트 모듈(122A)은 UIC(112)로 하여금 어시스턴트가 사용자에 대한 정보를 가지고 있음을 나타내는 알림(alert)을 출력하게 할 수 있다. 그 알림은 사용자 인터페이스(114)에 도시된 "당신을 위해 준비한 것이 있습니다. 여기 있나요?"라는 텍스트에 해당할 수 있다. UIC(112)에 의한 출력은 의미있는 정보가 이용 가능함을 사용자에게 사전에 시그널링할 수 있다.
일부 예에서, 어시스턴트 모듈(122)은 어시스턴트 모듈(122)이 사용자가 그러한 시그널링을 수신하여 동의한 것으로 결정할 때까지 통지를 출력하지 않을 수 있다. 예를 들어, 어시스턴트 모듈(122B)은 어시스턴트 모듈(122A)이 사용자로부터 동의의 표시(예를 들어, "그래, 여기 있어"를 나타내는 발언을 결정하는 UIC(112)의 마이크로폰)를 수신하고, 사용자가 UIC(112)의 디스플레이를 활성화했다는 표시를 수신하고 및/또는 사용자가 동의를 나타내기 위해 다른 방식(예를 들어, 디바이스 들어 올리기, 버튼 누르기 등)으로 사용자가 컴퓨팅 디바이스(110A)와 상호 작용했음을 나타내는 데이터를 수신할 때 사용자가 대화에 동의한 것으로 결정할 수 있다.
아무튼, 이벤트의 통지 및 적어도 하나의 액션을 수행하기 위한 요청을 출력한 후, 어시스턴트 모듈(122A)은 사용자가 그 요청에 응답함에 따라 사용자 입력을 검출할 수 있다. 도 1의 예에서, 어시스턴트 모듈(122A)은 "그래, 내 차편(ride)을 재스케줄링해 줘"라는 텍스트에 대응하는 음성 또는 서명된 사용자 입력을 UIC(112)의 카메라 또는 마이크로폰을 통해 수신할 수 있다. 음성 또는 서명된 사용자 입력이 요청의 확인에 해당한다는 것에 응답하여, 어시스턴트 모듈(122A)의 에이전트는 비행 지연을 수용하기 위해 지상 교통 예약을 재스케줄링할 수 있다.
일부 예에서, 액션은 어시스턴트 모듈들(122) 중 어느 하나를 실행하는 디바이스와 상이한 제3 디바이스와 관련될 수 있다. 어시스턴트 모듈(122A)은 정보를 제3 디바이스로 전송하여 제3 디바이스가 그 액션을 완료하도록 함으로써 액션을 수행하거나 실행할 수 있다. 예를 들어, 지상 교통 서비스는 컴퓨팅 디바이스(HOB)에서 실행되는 애플리케이션과 관련될 수 있다. 어시스턴트 모듈(122A)은 네트워크(130)를 통해, 서비스를 재스케줄링하기 위한 요청으로 메시지를 애플리케이션으로 전송할 수 있다. 컴퓨팅 디바이스(HOB)는 지상 교통이 스케줄링되었음을 확인하는 애플리케이션에 응답하여, 그 지상 교통의 새로운 시간을 나타내는 통지를 출력할 수 있다.
이러한 방식으로, 어시스턴트 모듈(122)은 사소한 정보를 사용자에게 쇄도시키거나 사용자가 이러한 액션 또는 기능과 관련된 입력을 제공하도록 요구하지 않고 어시스턴트의 추가 액션 또는 기능을 사용자에게 능동적으로 사전에 안내 (direct)할 수 있다. 예시적인 어시스턴트는 사용자에게 의미있는 정보를 사전에 안내하기 때문에, 사용자는 특정 문의(inquiries)를 사용하여 어시스턴트를 안내하는 시간을 소비할 필요가 없다. 따라서, 본 발명에 따른 예시적인 어시스턴트는 다른 어시스턴트보다 더빠르게 태스크를 완료하고 및/또는 사용자에게 더 빠르게 응답할 수 있다. 의미있는 정보로 사용자를 사전에 안내함으로써, 어시스턴트는 자연스럽고 덜 어색하며 사용자에게 더 바람직할 수 있다.
전술한 접근법에 의해 제공되는 몇 가지 이점들 중 하나는, (1) 디바이스의 액션에 대한 처리 복잡성 및 시간은 사용자의 특정 문의에 의존하거나 사용자가 문서나 다른 방법을 통해 액션 또는 기능을 학습하는 시간을 소비하기 보다는 어시스턴트의 액션 또는 기능에 사용자를 사전에 안내함으로써 감소될 수 있다. 예를 들어, 음성 입력을 통한 어시스턴트의 기능에 관한 정보에 대한 명시적인 사용자 요청은 회피될 수 있다. 이것은 어시스턴트가 그러한 요청을 처리할 필요가 없도록 구현되는 컴퓨터 장치로 이어질 수 있으며, 이로 인해 특히 시간 및 다수의 대화를 통해, 컴퓨팅 장치는 어시스턴트를 구현하는 것과 관련된 컴퓨터 리소스의 실질적인 절약으로부터 이익을 얻으며; (2) 의미있는 정보 및 사용자와 관련된 정보가 로컬로 저장되어, 미공개(private) 데이터에 대한 사용자의 디바이스상의 복잡하고 메모리-소비가 많은 전송 보안 프로토콜의 필요성을 감소시키며; (3) 예시적인 어시스턴트가 사용자에게 액션 또는 기능을 안내하기 때문에, 더 적은 특정 문의가 사용자에 의해 요청될 수 있으며, 이에 의해 쿼리 재 작성 및 다른 계산적으로 복잡한 데이터 검색에 대한 사용자 디바이스에 대한 요구가 감소되며; (4) 특정 문의의 양이 감소함에 따라 어시스턴트 모듈이 특정 문의에 응답하는데 필요한 데이터가 감소될 수 있으므로 네트워크 사용량이 감소될 수 있다. 예를 들어, 어시스턴트가 정보를 출력할 수 있는 클라이언트 컴퓨팅 디바이스들(110)과 클라이언트 디바이스들이 그 정보를 찾을 수 있는 원격 서버(들)(180) 사이의 데이터 트래픽이 감소될 수 있다. 더 적은 특정 문의에 의해 기인되는 이러한 감소에 대한 추가 또는 대안으로, 네트워크 데이터 트래픽의 감소는 특정 클라이언트 디바이스(110)와 원격 서버(들)(180) 사이의 통신 채널이 특정 대화를 용이하게 하기 위해 개방 상태로 유지해야 하는 시간량의 전체적인 감소로부터 기인할 수 있다. 당업자는 어시스턴트에게 정보를 요청하도록 사용자에게 요구할 필요없이 정보를 제공함으로써 사용자와의 대화를 자동으로 증진함으로써, 사용자는 별도의 대화 액션을 통해 명시적으로 정보를 명시적으로 검색할 필요가 없기 때문에 기술 리소스 관점에서 대화의 전체 효율성이 증가될 수 있음을 이해할 것이다. 또한, 대화 시간이 단축되어, 통신 채널을 그렇지 않은 경우보다 더 일찍 닫을 수 있으므로 네트워크 리소스를 비울(free) 수 있다.
도 2는 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 디바이스를 도시하는 블록도이다. 도 2의 컴퓨팅 디바이스(210)는 도 1의 컴퓨팅 디바이스(110A) 및/또는 HOB의 예로서 이하에서 설명된다. 도 2는 컴퓨팅 디바이스(210)의 하나의 특정 예만을 도시하고, 컴퓨팅 디바이스(210)의 다른 많은 예는 다른 경우에 사용될 수 있고, 예시적인 컴퓨팅 디바이스(210)에 포함된 컴포넌트의 서브 세트를 포함하거나 도 2에 도시되지 않은 추가 컴포넌트를 포함할 수 있다 .
도 2의 예에 도시된 바와 같이, 컴퓨팅 디바이스(210)는 사용자 인터페이스 컴포넌트(UIC)(212), 하나 이상의 프로세서(240), 하나 이상의 통신 유닛(242), 하나 이상의 입력 컴포넌트(244), 하나 이상의 출력 컴포넌트(246) 및 하나 이상의 저장 컴포넌트(248)를 포함한다. UIC(212)는 출력 컴포넌트(202) 및 입력 컴포넌트(204)를 포함한다. 컴퓨팅 디바이스(210)의 저장 컴포넌트(248)는 UI 모듈(220), 어시스턴트 모듈(222), 사용자 정보 데이터 저장소(224), 하나 이상의 애플리케이션 모듈(226) 및 컨텍스트 모듈(230)을 포함한다.
통신 채널(250)은 컴포넌트 간 통신(물리적, 통신적 및/또는 동작적)을 위해 컴포넌트(212, 240, 242, 244, 246 및 248) 각각을 상호 연결할 수 있다. 일부 예들에서, 통신 채널들(250)은 시스템 버스, 네트워크 연결, 프로세스 간 통신 데이터 구조, 또는 데이터를 통신하기 위한 임의의 다른 방법을 포함할 수 있다.
컴퓨팅 디바이스(210)의 하나 이상의 통신 유닛(242)은 하나 이상의 네트워크상에서 네트워크 신호를 전송 및/또는 수신함으로써 하나 이상의 유선 및/또는 무선 네트워크를 통해 외부 디바이스와 통신할 수 있다. 통신 유닛(242)의 예는 네트워크 인터페이스 카드(예를 들어, 이더넷 카드), 광 트랜시버, 무선 주파수 트랜시버, GPS(Global Positioning Satellite) 수신기, 또는 정보를 송신 및/또는 수신할 수 있는 임의의 다른 유형의 디바이스를 포함한다. 통신 유닛(242)의 다른 예는 단파 라디오, 셀룰러 데이터 라디오, 무선 네트워크 라디오 및 범용 직렬 버스(USB) 제어기를 포함할 수 있다.
컴퓨팅 디바이스(210)의 하나 이상의 입력 컴포넌트(244)는 입력을 수신할 수 있다. 입력의 예는 촉각, 오디오 및 비디오 입력이다. 일 예에서, 컴퓨팅 디바이스(210)의 입력 컴포넌트(242)는 존재 감지 입력 디바이스(예를 들어, 터치 감지 스크린, PSD), 마우스, 키보드, 음성 응답 시스템, 비디오 카메라, 마이크로폰 또는 사람이나 기계의 입력을 감지하는 다른 유형의 디바이스를 포함한다. 일부 예에서, 입력 컴포넌트(242)는 하나 이상의 위치 센서(GPS 컴포넌트, Wi-Fi 컴포넌트, 셀룰러 컴포넌트), 하나 이상의 온도 센서, 하나 이상의 움직임 센서(예를 들어, 가속도계, 자이로), 하나 이상의 압력 센서(예를 들어, 기압계), 하나 이상의 주변 광 센서 및 하나 이상의 다른 센서(예를 들어, 마이크로폰, 카메라, 적외선 근접 센서, 습도계 등)과 같은 하나 이상의 센서 컴포넌트를 포함할 수 있다. 다른 센서로는 몇 가지 다른 비 제한적인 예로, 심박 센서, 자력계, 포도당 센서, 습도계 센서, 후각 센서, 컴퍼스 센서, 스텝 카운터 센서 등이 있다.
컴퓨팅 디바이스(110)의 하나 이상의 출력 컴포넌트(246)는 출력을 생성할 수 있다. 출력의 예는 촉각, 오디오 및 비디오 출력이다. 컴퓨팅 디바이스(210)의 출력 컴포넌트(246)는 하나의 예에서, PSD, 사운드 카드, 비디오 그래픽 어댑터 카드, 스피커, 음극선관(CRT) 모니터, 액정 디스플레이(LCD), 또는 인간이나 기계로 출력을 생성하는 임의의 다른 유형의 디바이스를 포함한다. .
컴퓨팅 디바이스(210)의 UIC(212)는 컴퓨팅 디바이스(110)의 UIC(112)와 유사할 수 있고, 출력 컴포넌트(202)와 입력 컴포넌트(204)를 포함한다. 출력 컴포넌트(202)는 UIC(212)에 의해 정보가 디스플레이되는 스크린과 같은 디스플레이 컴포넌트일 수 있고, 입력 컴포넌트(204)는 디스플레이 컴포넌트(202)에서 및/또는 근처에서 객체를 검출하는 존재-감지 입력 컴포넌트일 수 있다. 출력 컴포넌트(202)와 입력 컴포넌트(204)는 스피커 및 마이크로폰 쌍 또는 입력 컴포넌트(244) 및 출력 컴포넌트(244)와 같은 하나 이상의 입력 및 출력 컴포넌트의 임의의 다른 조합일 수 있다. 도 2의 예에서, UIC(212)는 (도 1의 사용자 인터페이스(114)와 같은) 사용자 인터페이스를 제시할 수 있다.
컴퓨팅 디바이스(210)의 내부 컴포넌트로서 도시되어 있지만, UIC(212)는 입력 및 출력을 송신 및/또는 수신하기 위해 컴퓨팅 디바이스(210)와 데이터 경로를 공유하는 외부 컴포넌트를 나타낼 수도 있다. 예를 들어, 일 예에서, UIC(212)는 컴퓨팅 디바이스(210)의 외부 패키징(예를 들어, 모바일 폰의 스크린) 내에 위치하고 그것에 물리적으로 연결된 컴퓨팅 디바이스(210)의 내장 컴포넌트를 나타낸다. 다른 예에서, UIC(212)는 컴퓨팅 디바이스(210)의 패키징 또는 하우징(예를 들어, 컴퓨팅 디바이스(210)과 유선 및/또는 무선 데이터 경로를 공유하는 모니터, 프로젝터 등)의 외부에 위치하고 그로부터 물리적으로 분리된 컴퓨팅 디바이스(210)의 외부 컴포넌트를 나타낸다.
컴퓨팅 디바이스(210) 내의 하나 이상의 저장 컴포넌트(248)는 컴퓨팅 디바이스(210)의 동작 동안 처리를 위한 정보를 저장할 수 있다(예를 들어, 컴퓨팅 디바이스(210)는 컴퓨팅 디바이스(210)에서의 실행 동안 모듈(220, 222, 230 및 226) 및 데이터 저장소(224)에 의해 액세스된 데이터를 저장할 수 있다). 일부 예에서, 저장 컴포넌트(248)는 임시 메모리이며, 이는 저장 컴포넌트(248)의 주요 목적이 장기 저장이 아님을 의미한다. 컴퓨팅 디바이스(210)상의 저장 컴포넌트(248)는 휘발성 메모리로서 정보의 단기 저장을 위해 구성될 수 있고, 따라서 전원이 꺼지면 저장된 컨텐츠를 유지하지 않을 수 있다. 휘발성 메모리의 예는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 및 당 업계에 공지된 다른 형태의 휘발성 메모리를 포함한다.
일부 예에서, 저장 컴포넌트(248)는 또한 하나 이상의 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 예에서 저장 컴포넌트(248)는 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 저장 컴포넌트들(248)은 휘발성 메모리에 의해 전형적으로 저장된 것보다 많은 양의 정보를 저장하도록 구성될 수 있다. 저장 컴포넌트들(248)은 또한 비-휘발성 메모리 공간으로서 정보를 장기 저장하고 전원 온/오프 사이클 후에 정보를 유지하도록 구성될 수 있다. 비-휘발성 메모리의 예는 자기 하드 디스크, 광 디스크, 플로피 디스크, 플래시 메모리, 또는 EPROM(Electrical Programmable Memory) 또는 EEPROM(Electrically Erasable and Programmable) 메모리의 형태를 포함한다. 저장 컴포넌트(248)는 모듈(220, 222, 230 및 226) 및 데이터 저장소(224)와 관련된 프로그램 명령 및/또는 정보(예를 들어, 데이터)를 저장할 수 있다. 저장 컴포넌트들(248)은 데이터 또는 모듈(220, 222, 230 및 226) 및 데이터 스토어(224)와 관련된 다른 정보를 저장하도록 구성된 메모리를 포함할 수 있다.
하나 이상의 프로세서(240)는 기능을 구현하고 및/또는 컴퓨팅 디바이스(210)와 관련된 명령을 실행할 수 있다. 프로세서(240)의 예는 애플리케이션 프로세서, 디스플레이 컨트롤러, 보조(auxiliary) 프로세서, 하나 이상의 센서 허브, 및 프로세서, 프로세싱 유닛 또는 프로세싱 디바이스로서 기능하도록 구성된 임의의 다른 하드웨어를 포함한다. 모듈(220, 222, 230 및 226)은 컴퓨팅 디바이스(210)의 다양한 액션, 동작 또는 기능을 수행하기 위해 프로세서(240)에 의해 동작 가능할 수 있다. 예를 들어, 컴퓨팅 디바이스(210)의 프로세서(240)는 프로세서(240)로 하여금 동작 모듈(220, 222, 230 및 226)을 수행하게 하는 저장 컴포넌트(248)에 의해 저장된 명령들을 검색하고 실행할 수 있다. 명령들은 프로세서(240)에 의해 실행될 때, 컴퓨팅 디바이스(210)로 하여금 예를 들어 데이터 저장소(224)에서 저장 컴포넌트(248)내에 정보를 저장하게 할 수 있다.
UI 모듈(220)은 도 1의 모든 기능 UI 모듈(120)을 포함할 수 있고, 컴퓨팅 디바이스(210)의 일부로서 어시스턴트를 실행하는 UI 모듈(120)과 유사한 동작들을 수행할 수 있다. UI 모듈(220)은 UIC(212) 및 컴퓨팅 디바이스(210)의 다른 구성 요소와의 사용자 상호 작용을 관리할 수 있다. UI 모듈(220)은 컴퓨팅 디바이스(210)의 사용자가 출력을 보고 및/또는 UIC(212)에서 입력을 제공함에 따라 UIC(212)가 사용자 인터페이스를 출력하게 할 수 있다.
사용자 정보 데이터 저장소(224)는 도 1의 사용자 정보 데이터 저장소(124A)의 예이다. 어시스턴트 모듈(222)은 도 1의 어시스턴트 모듈(122)의 모든 기능을 포함할 수 있고, 컴퓨팅 디바이스(210)의 일부로서 어시스턴트를 실행하고 사용자 정보 데이터 저장소(224)에서 사용자 정보를 유지 및 액세스하기 위한 어시스턴트 모듈(122)과 유사한 동작들을 수행할 수 있다. 일부 예에서, 어시스턴트 모듈(222)은 어시스턴트 기능을 제공하기 위해 로컬로(예를 들어, 프로세서(240)에서) 실행될 수 있다. 일부 예에서, 어시스턴트 모듈(222)은 컴퓨팅 디바이스(210)에 액세스 가능한 원격 어시스턴트 서비스에 대한 인터페이스로서 작용할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 도 1의 디지털 어시스턴트 서버(160)의 어시스턴트 모듈(122B)에 대한 인터페이스 또는 애플리케이션 프로그래밍 인터페이스(API)일 수 있다.
하나 이상의 애플리케이션 모듈(226)은 사용자에게 정보를 제공하고 및/또는 태스크 또는 액션을 수행하기 위해 어시스턴트에 의해 액세스될 수 있는 컴퓨팅 디바이스(210)에서 실행되고 그로부터 액세스 가능한 모든 다양한 개별 애플리케이션 및 서비스를 나타낸다. 애플리케이션 모듈(226)의 다수의 예가 존재하고, 피트니스 애플리케이션, 캘린더 애플리케이션, 검색 애플리케이션, 지도 또는 내비게이션 애플리케이션, 여행 애플리케이션(예를 들어, 계획, 예약, 티켓팅 등), 소셜 미디어 애플리케이션, 게임 애플리케이션, 이메일 애플리케이션, 채팅 또는 메시징 애플리케이션, 인터넷 브라우저 애플리케이션, 또는 컴퓨팅 디바이스(210)에서 실행될 수 있는 임의의 다른 애플리케이션을 포함할 수 있다. 어시스턴트 모듈(222)과 같은 컴퓨팅 디바이스(210)에서 실행되는 어시스턴트는 애플리케이션(226)으로 하려금 어시스턴트와 관련된 복수의 동작을 액션을 수행하기 위한 명령을 실행하게 할 수 있다. 다시 말해, 어시스턴트는 어시스턴트를 대신하여 복수의 액션을 수행하기 위해 애플리케이션 모듈(226)에 의존할 수 있다.
개인 정보(예를 들어, 데이터 저장소(224)에 저장된 정보)를 저장하고 사용하기 위해 사용자로부터 명시적인 동의를 받은 후, 컨텍스트 모듈(230)은 컴퓨팅 디바이스(210)의 컨텍스트 또는 컴퓨팅 디바이스(210)의 사용자의 컨텍스트를 정의하기 위해 컴퓨팅 디바이스(210)와 관련된 컨텍스트 정보를 처리 및 분석할 수 있다. 컨텍스트 모듈(230)은 개인 정보를 저장하거나 사용하기 전에 사용자의 실제 신원을 제거하기 위해 분석 및/또는 저장되는 정보를 암호화하거나 다르게 처리할 수 있다. 예를 들어, 정보는 프로세싱을 위해 원격 컴퓨팅 디바이스에 저장되거나 전송될 때 임의의 개인 식별 정보가 제거되도록 컨텍스트 모듈(230)에 의해 처리될 수 있다. 컨텍스트 모듈(230)은 사용자가 그러한 정보의 사용 또는 수집에 긍정적으로 동의하는 경우 컴퓨팅 디바이스(210) 및/또는 컴퓨팅 디바이스(210)의 사용자와 관련된 정보를 단지 분석할 수 있다. 컨텍스트 모듈(230)은 사용자가 동의를 철회할 기회를 더 제공할 수 있고, 이 경우 컨텍스트 모듈(230)은 컴퓨팅 디바이스(210) 또는 컴퓨팅 디바이스(210) 사용자와 관련된 정보의 수집 또는 유지를 중단할 수 있다.
컴퓨팅 디바이스(210)의 컨텍스트는 컴퓨팅 디바이스(210) 및/또는 컴퓨팅 디바이스(210) 사용자 및 다양한 위치 및 시간에서 그의 물리적 및/또는 가상 환경과 관련된 하나 이상의 특성을 지정할 수 있다. 예를 들어, 컨텍스트 모듈(230)은 컴퓨팅 디바이스(210)의 컨텍스트의 일부로서, 특정 시간으로부터 컴퓨팅 디바이스(210)와 관련된 컨텍스트 정보에 기초하여 그 특정 시간에 컴퓨팅 디바이스(210)와 관련된 물리적 위치를 결정할 수 있다. (예를 들어, 시간 경과에 따른 움직임을 나타내는 센서 정보에 기초하여) 컨텍스트 정보가 변경됨에 따라, 컨텍스트 모듈(230)은 컴퓨팅 디바이스(210)의 그 결정된 컨텍스트에서 물리적 위치를 업데이트할 수 있다.
특정 위치 및/또는 시간에 대해 컴퓨팅 디바이스의 컨텍스트를 정의하는 정보 유형은 너무 많아 열거하기 어렵다. 일부 예로서, 컴퓨팅 디바이스의 컨텍스트는 다양한 위치 및 시간에서, 음향 지문, 비디오 지문, 위치, 이동 궤적, 방향, 속도, 시설 이름, 거리 주소, 장소 유형, 건물, 기상 상황 및 교통 상황을 지정할 수 있다. 컴퓨팅 디바이스의 컨텍스트는 다양한 위치 및 시간과 관련된 미팅 또는 이벤트, 다양한 위치 및 시간에서 본 웹 페이지 주소, 다양한 위치 및 시간에서 본 웹 페이지의 데이터 필드에서 작성된 텍스트 엔트리(예를 들어, 검색 또는 브라우징 이력), 및 다양한 위치 및 시간과 관련된 다른 애플리케이션 사용 데이터를 정의하는 캘린더 정보를 더 포함할 수 있다. 컴퓨팅 디바이스의 컨텍스트는 다양한 위치 및 시간에서 컴퓨팅 디바이스의 존재에 의해 액세스되거나 브로드캐스트되는 오디오 및/또는 비디오 스트림, 다양한 위치 및 시간에서 컴퓨팅 디바이스의 존재에 의해 액세스되거나 브로드캐스트되는 텔레비전 또는 케이블/위성 방송에 관한 정보, 및 다양한 위치 및 시간에서 컴퓨팅 디바이스에 의해 액세스되는 다른 서비스에 관한 정보를 더 포함할 수 있다.
컨텍스트 모듈(230)은 어시스턴트 모듈(222)이 이벤트의 통지를 출력할지 여부를 결정할 수 있는 어시스턴트 모듈(222)과 컴퓨팅 디바이스(210)의 컨텍스트를 공유할 수 있다. 컨텍스트 모듈(230)은 사용자의 현재 상태 또는 컨텍스트를 지정하는 어시스턴트 모듈(222)로 데이터를 출력함으로써, 컴퓨팅 디바이스(210)와 관련된 현재 컨텍스트 또는 현재 상태에 대한 어시스턴트 모듈(222)로부터의 요청에 응답할 수 있다.
동작시, 어시스턴트 모듈(222)은 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 어시스턴트 간의 상호 작용을 개시하기 위한 이벤트를 결정할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 사용자에게 통지할 가치가 있는 이벤트를 나타낼 수 있는 정보의 변경을 검출하기 위해 데이터 저장소(224)와 같은 데이터 소스들을 모니터링할 수 있다. 데이터 소스의 예로는 메시지 계정, 캘린더, 소셜 미디어 계정 및 기타 정보 소스가 있다. 이벤트의 예로는 약속 추가, 취소 또는 변경(예를 들어, 초대, 미팅, 기념일 등), 발생(예를 들어, 배송 통지, 비행 지연), 공지(예를 들어, 여행 날짜 등) 및 기타 유형의 이벤트가 있다.
데이터 저장소(224)는 비공개(private) 또는 공개 캘린더에 대한 참조를 포함할 수 있다. 어시스턴트 모듈(222)은 캘린더상의 약속이 추가, 삭제, 수정, 만족 또는 누락될 때 그 캘린더와 관련된 이벤트를 검출할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 비공개 캘린더에 기초하여, 치과 의사가 캘린더상의 약속을 취소하기 위해 취소 통지를 보냈다는 결정에 응답하여 이벤트를 결정할 수 있다. 어시스턴트 모듈(222)은 공개 캘린더에 기초하여, 공휴일, 생일 또는 기념일이 다가오고 있다는 결정하는 것에 응답하여 이벤트를 결정할 수 있다.
데이터 저장소(224)는 이메일 또는 문자 메시지, 음성 메시지, 비디오 메시지 등에 대한 참조를 포함할 수 있다. 어시스턴트 모듈(222)은 그러한 통신에 포함된 정보에 기초하여 이벤트를 결정할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 서비스 제공자(예를 들어, 항공사, 케이블 제공자 등)로부터의 이메일에 기초하여, 스케줄링된 약속이 취소 또는 지연되었다는 결정에 응답하여 이벤트를 결정할 수 있다. 또는, 어시스턴트 모듈(222)은 소매업자로부터의 이메일에 기초하여, 패키지가 배송되었다는 결정에 응답하여 이벤트를 결정할 수 있다.
어시스턴트 모듈(222)은 이벤트에 기초하여 그리고 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택할 수 있다. 예를 들어, 어시스턴트 모듈(222)의 모델은 입력으로서, 이벤트 또는 이벤트 유형을 수신하여, 그 이벤트와 관련된 하나 이상의 액션을 출력할 수 있다. 이 모델은 기계 학습 유형 모델(예를 들어, 신경망), 규칙 기반 모델 또는 액션을 이벤트에 매칭치시키는 다른 유형의 모델일 수 있다.
모델은 액션이 이벤트에 얼마나 밀접한 관계가 있는지 및/또는 액션이 이벤트와 관련하여 수행될 수 있는 관계를 나타내는 가능성의 정도(예를 들어, 스코어, 확률 등)를 할당할 수 있다. 예를 들어, 모델은 사용자가 컴퓨팅 디바이스들로 하여금 이벤트에 응답하여 수행하게 하는 다양한 이벤트 및 액션에 관한 사용자 활동의 관찰에 대해 트레이닝될 수 있다. 사용자로부터의 명시적인 동의하에, 모델은 특정 이벤트 또는 이벤트 유형에 대해, 사용자 디바이스 상호 작용을 분석하여 사용자가 어떤 액션을 취하고 언제 그러한 액션을 취해야 하는지를 나타내는 규칙을 개발할 수 있다.
예를 들어, 모델은 사용자가 비행 지연 통지를 수신하는 시간의 90%를 나타내는 사용자 상호 작용 데이터에 대해 훈련될 수 있으며, 사용자는 친한 연락처로 메시지를 전송한다. 모델은 사용자가 디바이스로 하여금 메시지를 전송하게 하는 시간의 80%를 나타내는 사용자 상호 작용 데이터에 대해 더 트레이닝될 수 있으며,메시지는 배우자 또는 중요한 다른 사람에게 전송된다. 따라서, 모델은 비행 지연 통지가 출력될 때마다 표시하는 규칙을 생성할 수 있고, 추천할 만한 액션은 배우자나 중요한 다른 사람에게 메시지를 보내는 액션일 수 있다.
다른 예로서, 모델은 현재 진행중인 게임에 대한 스코어링 업데이트를 수신한 후 다른 디바이스의 사용자의 대다수가 판타지 스포츠 스코어를 체크하는 것을 나타내는 사용자 상호 작용 데이터에 대해 트레이닝될 수 있다. 모델은 사용자가 판타지 스코어를 체크하는 주요 방법으로서, 사용자가 디바이스로 하여금 인기있는 판타지 스포츠 애플리케이션을 오픈하게 하는 시간의 80%를 나타내는 사용자 상호 작용 데이터에 대해 더 트레이닝될 수 있다. 따라서, 모델은 스포츠 스코어 통지가 출력될 때마다 표시되는 규칙을 생성할 수 있고, 인기있는 판타지 스포츠 애플리케이션이 컴퓨팅 디바이스에 설치될 때, 추천할 만한 액션은 그 스코어를 표시한 후 판타지 스포츠 애플리케이션을 시작하는 액션일 수 있다.
일부 경우에, 모델은 종속성 그래프를 기반으로 할 수 있다. 예를 들어, 모델의 종속성 그래프는 비행일 수 있는 루트 노드를 포함할 수 있다. 루트 노드에 따라 교통 노드, 숙박 노드, 미팅 노드, 식사 노드 등이 있을 수 있다. 루트 노드와 이러한 각 노드 사이의 에지는 도착 시간, 사용 가능한 예약 등과 같은 종속성이 될 수 있다. 에지가 통과(traversed)될 수 없는 경우, 모델은 제안될 액션을 트리거할 수 있다. 일부 예에서, 제안된 액션은 그 자체가 다양한 의존성(예를 들어, 얼마나 늦는지, 대안이 아닌지 등) 및 가중치를 갖는 의존성 그래프의 노드일 수 있고, 가장 높게 가중된 가능 경로가 사용자에게 제공될 수 있다(그리고 대안적으로, 더 낮게 가중된 액션은 적절한 경우 제공된다). 모델의 그래프는 사용자 데이터가 추가될 수 있는 템플릿으로서 초기에 제시될 수 있으며, 시스템에 의해 (예를 들어, 기계 학습, 사용자로부터의 수동 입력 등을 사용하여)수정될 수 있다. 모델의 다른 많은 예가 존재한다.
아무튼, 어시스턴트 모듈(222)이 이러한 규칙을 생성함에 따라, 규칙에 대한 입력은 이벤트 또는 이벤트 유형일 수 있고, 각 규칙의 출력은 각 이용 가능한 액션이 특정 이벤트와 관련될 가능성의 정도를 나타낼 수 있다. 어시스턴트 모듈(222)은 각 액션에 할당된 가능성의 정도에 기초하여 수행할 수 있는 복수의 액션을 랭킹하여, 가장 높은 랭킹의 액션(들)을 결정할 수 있다. 다시 말해, 어시스턴트 모듈(222)은 이벤트에 기초하여 복수의 액션 각각을 랭킹하여, 가장 높은 랭킹을 갖는 적어도 하나의 액션을 선택할 수 있다.
일부 예에서, 모든 액션의 가능성의 정도가 임계값을 만족하지 않으면, 어시스턴트 모듈(222)은 이벤트와 관련된 액션들이 없다고 결정할 수 있다. 예를 들어, 어시스턴트 모듈(222)에 의해 수행될 수 있는 복수의 액션 중 어느 것도 특정 이벤트와 관련될 가능성이 50%보다 크지 않은 경우, 어시스턴트 모듈(222)은 특정 이벤트의 통지 동안 제안할 만한 액션이 없다고 결정할 수 있다.
일부 예에서, 단일 액션의 가능성의 정도가 임계값을 만족하면, 어시스턴트 모듈(222)은 이벤트와 관련된 단일 액션이 존재한다고 결정할 수 있다. 예를 들어, 어시스턴트 모듈(222)에 의해 수행될 수 있는 복수의 동작 중 하나만이 특정 이벤트와 관련될 가능성이 90%보다 큰 경우, 어시스턴트 모듈(222)은 특정 이벤트의 통지 동안 제안할 만한 단일 액션이 있다고 결정할 수 있다.
일부 예에서, 둘 이상의 액션의 가능성의 정도가 임계값을 만족하면, 어시스턴트 모듈(222)은 이벤트와 관련된 복수의 액션이 존재한다고 결정할 수 있다. 예를 들어, 어시스턴트 모듈(222)에 의해 수행될 수 있는 복수의 액션 중 둘 이상이 각각 특정 이벤트와 관련될 가능성이 95%보다 큰 경우, 어시스턴트 모듈(222)은 특정 이벤트의 통지 동안 제안할 만한 다수의 액션이 있다고 결정할 수 있다.
일부 예에서, 이벤트에 기초하여 그리고 복수의 액션으로부터, 이벤트와 관련된 적어도 하나의 액션을 선택하기 위해 어시스턴트 모듈(222)에 의해 사용되는 모델은 테이블 또는 그래프 기반일 수 있다. 예를 들어, 어시스턴트 모듈(222)은 테이블 또는 그래프에서 이벤트 또는 이벤트 유형을 조회하여, 이벤트에 링크된 하나 이상의 액션이 테이블 또는 그래프에 포함되는지를 결정할 수 있다.
일부 어시스턴트는 음성 전용 인터페이스를 제공할 수 있고, 문서가 거의 제공되지 않거나, 어시스턴트가 무엇을 할 수 있는 것을 사용자에게 가르치는 방식으로 제한될 수 있다. 일부 사용자에게는 어시스턴트의 액션 또는 기능을 찾는 것이 어려울 수 있다. 어시스턴트 모듈(222)은 액션 또는 기능이 사용자에게 도움이 되거나 유익할 수 있는 시간에 사용자에게 자신의 기능에 대해 가르치도록 구성될 수 있다. 어시스턴트 모듈(222)은 통지가 관심이 있을 뿐만 아니라 어시스턴트에 의해 제안된 권장 액션이 사용자에 의해 승인될 가능성을 향상시키기 위해 제안된 액션을 포함하는 이벤트의 통지를 출력할지 여부를 결정할 수 있다. 이러한 방식으로, 어시스턴트 모듈(222)은 사용자가 제안을 거절할 가능성이 낮은 경우에 진정으로 유용한 액션을 제안할 수 있다. 사용자가 액션을 승인하지 않더라도, 어시스턴트 모듈(222)은 사용자에게 새로운 액션을 가르쳐 줄 것이다.
예를 들어, 어시스턴트 모듈(222)은 사용자가 이벤트와 관련된 액션을 수행하라는 요청을 수락할 가능성의 정도에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 결정할 수 있다. 어시스턴트 모듈(222)은 사용자의 컨텍스트, 컴퓨팅 디바이스(222)의 컨텍스트, 사용자 정보 데이터 저장소(224)에 저장된 정보 또는 이들의 조합, 및 어시스턴트 모듈(222)에 액세스 가능한 임의의 다른 정보에 기초하여 가능성의 정도를 결정할 수 있다.
예를 들어, 어시스턴트 모듈(222)은 사용자와 어시스턴트 사이에서 이전 상호 작용이 얼마나 최근에 발생했는지에 기초하여 이벤트의 통지를 출력할지 여부를 결정할 수 있다. 임계값 시간 기간(예를 들어, 5분) 내에 이전 상호 작용이 발생한 경우, 어시스턴트 모듈(222)은 사용자가 액션을 수행하라는 요청을 수락할 가능성의 정도가 낮고 대신 요청을 기각할 가능성이 더 높다고 결정할 수 있다. 만약 이전 상호 작용이 임계 시간 기간을 벗어난 경우, 어시스턴트 모듈(222)은 사용자가 액션을 수행하라는 요청을 수락할 가능성의 정도가 높고 따라서 요청을 수락할 가능성이 더 높다고 결정할 수 있다.
어시스턴트 모듈(222)은 컴퓨팅 디바이스(210)의 컨텍스트에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 결정할 수 있다. 예를 들어, 컨텍스트가 사용자가 컴퓨팅 디바이스(210)와 상호 작용중임을 나타내는 경우(예를 들어, UIC(212)를 보고 및/또는 UIC(212)에 입력을 제공), 어시스턴트 모듈(222)은 사용자가 액션을 수행하라는 요청을 수락할 가능성의 정도가 높고 따라서 요청을 수락할 가능성이 더 높다고 결정할 수 있다. 만약 컨텍스트가 사용자가 컴퓨팅 디바이스(210)와 상호 작용하고 있지 않음을 나타내면(예를 들어, 컴퓨팅 디바이스(210)가 이동 차량의 무선 통신 유닛에 연결되고, 컴퓨팅 디바이스(210)가 테이블 또는 사용자의 주머니에 평평하게 놓여 있고, 컴퓨팅 디바이스(210)가 영화관 등에 위치하는 등), 어시스턴트 모듈(222)은 사용자가 액션을 수행하라는 요청을 수락할 가능성의 정도가 낮고 따라서 요청으로 통지를 출력하지 않을 가능성이 더 높다고 결정할 수 있다.
일부 예에서, 어시스턴트 모듈(222)은 이벤트에 중요도(severity) 레벨을 할당하고, 그 중요도 레벨에 기초하여, 사용자가 액션을 수행하기 위한 요청을 수락할 가능성의 정도를 증가 또는 감소시킬 수 있다. 예를 들어, 이벤트가 비행이 임계 시간량(예를 들어, 1시간, 30분 등) 보다 적게 지연된 것인 경우, 어시스턴트 모듈(222)은 그 이벤트의 중요도 레벨이 낮다는 결정에 기초하여 그러한 이벤트가 중요한 이벤트가 아니라고 결정할 수 있다. 그러나, 비행이 임계 시간량(예를 들어, 1시간, 30분 등) 이상으로 지연되는 경우, 어시스턴트 모듈(222)은 그 이벤트의 중요도 레벨이 중간 또는 높은 레벨이라는 결정에 기초하여 그러한 이벤트가 중요한 이벤트라고 결정할 수 있다.
일부 예에서, 임계 시간량은 실제 이벤트에 기초할 수 있다. 예를 들어, 임계 시간량은 총 비행 시간의 백분율(즉, 비행 자체의 지속 시간)일 수 있다. 비행이 1시간 지연되었지만 비행이 10시간인 경우, 어시스턴트 모듈(222)은 낮은 또는 중간 중요도 레벨을 할당할 수 있다. 반면에 비행이 30분 지연되고 비행이 단지 1시간인 경우, 어시스턴트 모듈(222)은 제안된 액션을 포함하는 통지(예를 들어, 친구 또는 배우자에게 집에 늦게 도착하는 것을 통지하는)가 현재 시간에 출력될 가능성이 더 높다질 수 있도록 그 이벤트에 높은 중요도 레벨을 할당할 수 있다.
이벤트의 통지를 출력하기로 결정함에 응답하여, 어시스턴트 모듈(222)은 UIC(212)를 통해, 사용자와 어시스턴트 사이의 상호 작용 동안 이벤트의 통지를 출력할 수 있다. 통지는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함할 수 있다.
예를 들어, 어시스턴트 모듈(222)은 (예를 들어, 이메일 또는 사용자에게 푸시된 통지에 의해) 캘린더상의 치과 의사 약속이 취소된 것으로 결정되면, 어시스턴트 모듈(222)은 그 취소의 통지를 출력하기로 결정할 수 있다. 출력은 스케줄 변경을 위해 치과 의사에게 전화하라는 요청을 포함하는 음성 통지일 수 있다. 사용자가 치과 의사에게 전화하기를 원한다는 것을 나타내는 사용자 입력을 UIC(212)에서 수신하는 것에 응답하여, 어시스턴트 모듈(222)은 사용자를 대신하여 치과에 전화하기 위해 애플리케이션 모듈(226)로부터 전화 애플리케이션을 호출할 수 있다.
다른 예로서, 어시스턴트 모듈(222)이 비행이 5시간 지연되었다고 결정하면, 어시스턴트 모듈(222)은 취소의 통지를 출력하기로 결정할 수 있다. 출력은 목적지에 예약된 자율 차량과 같은 지상 교통을 취소 또는 재스케줄링하라는 요청을 포함하는 음성 통지일 수 있다. 사용자가 어시스턴트에게 지상 교통을 취소하거나 재스케줄링하기를 원한다는 것을 나타내는 사용자 입력을 UIC(212)에서 수신하는 것에 응답하여, 어시스턴트 모듈(222)은 예약을 취소 또는 재스케줄링하는 메시지를 지상 교통 서비스로 전송할 수 있다.
다른 예로서, 비행이 5시간 지연되는 경우, 어시스턴트 모듈(222)은 취소의 통지를 출력하기로 결정할 수 있다. 출력은 전화 요청, 문자 메시지, 이메일 또는 다른 방식으로 사용자의 아내에게 연락하는 것을 포함하는 음성 통지일 수 있다. 사용자가 어시스턴트에게 사용자의 아내와 연락하기를 원한다는 것을 나타내는 사용자 입력을 UIC(212)에서 수신함에 따라, 어시스턴트 모듈(222)은 사용자의 아내에 대한 연락 정보를 결정하여 아내에게 지연을 알리는 메시지를 송신할 수 있다.
다른 예로서, 어시스턴트 모듈(222)이 발렌타인 데이가 1 주일 미만이라고 결정하면, 어시스턴트 모듈(222)은 이벤트의 통지를 출력하기로 결정할 수 있다. 출력은 사용자의 여자 친구를 위한 꽃을 주문하라는 요청을 포함하는 음성 통지일 수 있다. 사용자가 어시스턴트에게 꽃을 주문하기를 원한다는 것을 나타내는 사용자 입력을 UIC(212)에서 수신하는 것에 응답하여, 어시스턴트 모듈(222)은 사용자의 여자 친구에 대한 연락처 정보를 결정하고 여자 친구의 주소로 꽃 배달을 위한 온라인 주문을 할 수 있다.
이러한 방식으로, 어시스턴트 모듈(222)은 어시스턴트 모듈(222)이 수행할 수 있는 특징(features), 기능 또는 액션의 검색 용이성(discoverability)을 개선하여 컴퓨팅 디바이스(210)의 사용자가 기존의 특징보다 더 많은 이익 또는 활용을 얻을 수 있게 한다. 어시스턴트 모듈(222)은 사용자의 모국어로 된 문법으로 액션을 지시한다. 일부 예에서, 통지로 다수의 액션이 제안되거나 단일 액션이 제안된다. 어시스턴트가 액션을 취하기를 사용자가 원한다는 확인을 수신하는 것에 응답하여, 어시스턴트 모듈(222)은 액션을 수행하고 및/또는 그 액션이 수행될 수 있는 애플리케이션 모듈들(226) 중 하나와 같은 동반 어플리케이션으로 사용자를 안내할 수 있다.
도 3은 본 발명의 하나 이상의 양태에 따른, 예시적인 가상 어시스턴트를 실행하는 하나 이상의 프로세서에 의해 수행되는 예시적인 동작들을 도시하는 흐름도이다. 도 3은 도 1의 컴퓨팅 디바이스(110)의 컨텍스트로 아래에서 설명된다. 예를 들어, 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110A)의 하나 이상의 프로세서에서 실행되는 동안, 본 발명의 하나 이상의 양태에 따라 동작(300~308)을 수행할 수 있다.
동작시, 컴퓨팅 디바이스(110A)는 개인 정보를 사용하고 저장하기 위해 사용자로부터 동의를 수신할 수 있다(300). 예를 들어, 잠재적인 개인 정보를 식별하는 것에 응답하여, 어시스턴트 모듈(122A)은 UI 모듈(120)로 하여금 어시스턴트 모듈(122A) 및 사용자와의 상호 작용 동안 획득된 개인 정보를 저장하고 사용하도록 사용자의 허가를 요청하게 할 수 있다. 컴퓨팅 디바이스(110A)는 어시스턴트 모듈(122A)이 개인 정보를 이용하거나 저장하기를 원할 때마다 사용자에게 동의를 구하지 않을 수 있음을 이해해야 한다. 예를 들어, 컴퓨팅 디바이스(110A)가 1년에 한 번, 하루에 한 번 또는 심지어 한 번만 동의를 받는 경우(예를 들어, 초기 제품 구매, 설정 후 등), 컴퓨팅 디바이스(110A)는 그 사전 동의를 미래에 개인 정보를 사용하고 저장하기 위한 동의로 취급할 수 있다. 사용자가 동의를 제공하는 방법의 한 예로서, 사용자는 UIC(112)에 의해 검출된 "그래, 나에 관한 정보를 저장해도 괜찮아"라는 음성 입력을 제공할 수 있고, 그 음성 입력에 응답하여, 어시스턴트 모듈(122A)은 데이터 저장소(122A)에서 사용자에 관한 개인 기록을 유지하기 시작할 수 있다.
컴퓨팅 디바이스(110A)는 개인 정보에 적어도 부분적으로 기초하여, 상호 작용을 개시하기 위한 이벤트를 결정할 수 있다(302). 예를 들어, 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110A)의 사용자와 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 나타내는 통지(예를 들어, 데이터)를 디지털 어시스턴트 서버(160)로부터 수신할 수 있다. 통지는 친구로부터 사용자의 메시지 계정으로 수신된 메시지를 포함할 수 있다. 메시지는 사용자가 해피 아워(happy hour)에 가고 싶은지 묻는 질문을 포함할 수 있다.
컴퓨팅 디바이스(110A)는 이벤트에 기초하여, 그 이벤트와 관련된 적어도 하나의 액션을 선택할 수 있다(304). 예를 들어, 어시스턴트 모듈(122A)의 모델은 해피 아워가 늦은 도착 유형의 이벤트인 것으로 결정할 수 있고, 따라서 늦은 도착을 가족에게 알리기 위해 메시지를 집으로 송신하는 것은 해피 아워와 관련된 액션이다. 부가적으로, 어시스턴트 모듈(122A)의 모델은 사용자가 퇴근 후 일반적으로 시청하는 라이브 뉴스 방송을 레코딩하는 것이 해피 아워와 관련된 액션이라고 결정할 수 있다.
컴퓨팅 디바이스(110A)는 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정할 수 있다(306). 예를 들어, 어시스턴트 모듈(122A)이 어시스턴트가 적어도 하나의 액션을 수행하기를 사용자가 원할 가능성이 높다고 생각할 때 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110A)의 컨텍스트(예를 들어, 시간)까지 이벤트의 통지를 생성하는 것을 억제할 수 있다. 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110A)에 대한 컨텍스트 정보에 기초하여, 사용자가 시작하려고 하는 미팅을 위해 회의실에 위치한다고 결정할 수 있다. 어시스턴트 모듈(122A)은 해피 아워 이벤트가 낮은 중요도 레벨 이벤트이고, 사용자는 어시스턴트가 지금 액션을 수행하기를 원치 않을 가능성이 있기 때문에, 어시스턴트 모듈(122A)은 이벤트 (122A)의 통지를 출력하기 보다는 나중까지 그 통지를 출력하는 것을 억제해야 한다(308, NO).
나중에, 예를 들어, 미팅 후에, 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110A)에 대한 컨텍스트 정보에 기초하여, 사용자가 자신의 사무실에 위치하고 있다고 결정할 수 있다. 어시스턴트 모듈(122A)은 해피 아워 이벤트가 낮은 중요도 이벤트임에도 불구하고, 사용자가 자신의 사무실에 혼자 있는 동안 어시스턴트가 지금 액션을 수행하기를 사용자가 원할 가능성이 더 높다고 결정할 수 있다. 따라서, 어시스턴트 모듈(122A)은 현재 시간이 이벤트의 통지를 생성하기에 좋은 시간이라고 결정할 수 있다(308, YES).
컴퓨팅 디바이스(110A)는 통지를 출력할 수 있다(310). 예를 들어, 어시스턴트 모듈(122A)은 사용자가 자신의 사무실에 있는 동안 컴퓨팅 디바이스(HOB)(예를 들어, 랩탑)와 상호 작용하고 있다고 결정할 수 있다. 컴퓨팅 디바이스(110A)는 늦은 도착을 가족에게 알리기 위해 집으로 메시지를 송신하는 것 및 사용자가 퇴근 후 일반적으로 시청하는 라이브 뉴스 방송을 레코딩하는 것에 대한 추천을 포함하여 해피 아워의 통지를 전송할 수 있다. 컴퓨팅 디바이스(HOB)는 어시스턴트가 메시지를 집으로 송신할 것인지 여부 및/또는 뉴스를 홈 디지털 비디오 레코더에 레코딩할 것인지 여부를 사용자가 선택하기 위한 선택 가능한 버튼들과 함께 사용자에게 해피 아워 초대를 알리는 통지의 그래픽 표시를 디스플레이할 수 있다.
통지를 출력한 후(310), 컴퓨팅 디바이스(110A)는 사용자가 이벤트 통지로 제안된 액션들 중 하나 또는 둘 다를 수행하는 어시스턴트 모듈(122A)에 동의했음을 나타내는 데이터를 컴퓨팅 디바이스(HOB)로부터 데이터를 수신할 수 있다(312). 예를 들어, 컴퓨팅 디바이스(HOB)는 어시스턴트가 메시지를 집으로 송신하거나 뉴스를 레코딩하기를 사용자가 원한다는 것을 나타내는 사용자로부터 수신된 보이스 커맨드의 표시를 공유할 수 있다.
어시스턴트 모듈(122A)은 사용자 입력을 수신하는 것에 응답하여, 사용자가 동의한 액션을 수행할 수 있다(314). 예를 들어, 어시스턴트 모듈(122A)은 액션을 수행하도록 구성된 적어도 하나의 프로세서에서 실행되는 애플리케이션을 호출할 수 있으며, 그 애플리케이션은 어시스턴트와 상이하다. 예를 들어, 집으로 메시지를 송신하기 위해, 어시스턴트 모듈(122A)은 사용자의 메시지 계정을 통해 사용자의 가족에게 메시지를 송신할 수 있다.
일부 예에서, 어시스턴트 모듈(122A)은 액션을 수행할 수 있다. 예를 들어, 디지털 비디오 레코더를 제어하기 위해, 어시스턴트 모듈(122A)은 디지털 비디오 레코더를 제어하도록 구성된 원격 제어 애플리케이션의 API로 데이터를 송신할 수 있다. 어시스턴트 모듈(122A)은 입력을 API로 전송함으로써 뉴스 방송을 레코딩하도록 레코더를 직접 구성할 수 있다.
도 4는 본 발명의 하나 이상의 양태에 따른 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 시스템을 도시하는 블록도이다. 도 4의 디지털 어시스턴트 서버(460)는 도 1의 디지털 어시스턴트 서버(160)의 예로서 아래에서 설명된다. 도 4는 디지털 어시스턴트 서버(460)의 하나의 특정 예만을 도시하고, 디지털 어시스턴트 서버(460)의 많은 다른 예가 또한 다른 경우에 사용될 수 있고, 예시적인 디지털 어시스턴트 서버(460)에 포함된 컴포넌트의 서브 세트를 포함하거나 도 4에 도시되지 않은 추가 컴포넌트를 포함할 수 있다.
도 4의 예에 도시된 바와 같이, 디지털 어시스턴트 서버(460)는 하나 이상의 프로세서(440), 하나 이상의 통신 유닛(442) 및 하나 이상의 저장 디바이스(448)를 포함한다. 저장 디바이스(448)는 어시스턴트 모듈(422), 사용자 정보 데이터 저장소(424) 및 검색 모듈(482)을 포함한다.
프로세서(440)는 도 2의 컴퓨팅 시스템(210)의 프로세서(240)와 유사하다. 통신 유닛(442)은 도 2의 컴퓨팅 시스템(210)의 통신 유닛(242)과 유사하다. 저장 디바이스(448)는 도 2의 컴퓨팅 시스템(210)의 저장 디바이스(248)와 유사하다. 통신 채널(450)은 도 2의 컴퓨팅 시스템(210)의 통신 채널(250)과 유사하며, 따라서 컴포넌트 간 통신을 위해 컴포넌트(440, 442 및 448) 각각을 상호 연결할 수 있다. 일부 예에서, 통신 채널들(450)은 시스템 버스, 네트워크 연결, 프로세스 간 통신 데이터 구조, 또는 데이터를 전달하기 위한 임의의 다른 방법을 포함할 수 있다.
디지털 어시스턴트 서버(460)의 검색 모듈(482)은 검색 서버 시스템(180)의 검색 모듈(182)과 유사하며, 디지털 어시스턴트 서버(460)를 대신하여 통합 검색 기능을 수행할 수 있다. 즉, 검색 모듈(482)은 어시스턴트 모듈(422)을 대신하여 검색 동작을 수행할 수 있다. 일부 예에서, 검색 모듈(482)은 어시스턴트 모듈(422) 대신 검색 동작을 수행하기 위해 검색 시스템(180)과 같은 외부 검색 시스템들과 인터페이스할 수 있다. 호출될 때, 검색 모듈(482)은 다양한 로컬 및 원격 정보 소스에 걸쳐 검색 쿼리들을 생성하고 생성된 검색 쿼리들에 기초하여 검색을 실행하는 것과 같은 검색 기능을 수행할 수 있다. 검색 모듈(482)은 실행된 검색의 결과를 호출 컴포넌트 또는 모듈로 제공할 수 있다. 즉, 검색 모듈(482)은 검색 결과를 어시스턴트 모듈(422)에 출력할 수 있다.
사용자 정보 데이터 저장소(424)는 도 2의 사용자 정보 데이터 저장소(224)와 유사하며, 어시스턴트 모듈(422)에 의해 제공된 어시스턴트와 사용자 사이의 대화 동안 어시스턴트 모듈(422)이 컴퓨팅 디바이스의 사용자에 관해 학습한 사용자 관련 정보를 저장하도록 구성된다. 어시스턴트 모듈(422)은 데이터 저장소(424)에 저장된 정보에 의존하여 이벤트를 결정하고, 어시스턴트 모듈(422)에 의해 전송된 통지에 포함시키기 위해 이벤트와 관련된 액션을 선택할 수 있다.
어시스턴트 모듈(422)은 도 1의 어시스턴트 모듈(122) 및 도 2의 컴퓨팅 디바이스(210)의 어시스턴트 모듈(222)의 기능의 일부 또는 전부를 포함할 수 있다. 어시스턴트 모듈(422)은 네트워크(130)와 같은 네트워크를 통해 액세스 가능한 어시스턴트 서비스를 제공하기 위해 어시스턴트 모듈(122 및 222)과 유사한 동작을 수행할 수 있다. 즉, 어시스턴트 모듈(422)은 네트워크를 통해 디지털 어시스턴트 서버(460)와 통신하는 컴퓨팅 디바이스에 액세스 가능한 원격 어시스턴트 서비스에 대한 인터페이스로서 작용할 수 있다. 예를 들어, 어시스턴트 모듈(422)은 도 1의 디지털 어시스턴트 서버(160)의 어시스턴트 모듈(122B)에 대한 인터페이스 또는 API일 수 있다.
동작시, 어시스턴트 모듈(422)은 사용자에게 통지할 가치가 있는 이벤트에 대해 검색 모듈(482)로부터 수신된 정보뿐만 아니라 사용자 정보 데이터 저장소(424)에 포함된 정보를 분석할 수 있다. 어시스턴트 모듈(422)이 이벤트를 검출하고, 그 이벤트와 관련하여 추천할 액션을 선택하는 경우, 어시스턴트 모듈(422)은 어시스턴트 모듈(422)이 사용자에 대한 상호 작용을 시작한 빈도 및 상호 작용에 대한 성공 가능성을 포함하는 다양한 요인들의 조합에 기초하여 이벤트의 통지를 트리거하도록 선택할 수있다.
어시스턴트 모듈(422)은 사용자의 주의를 끌 가능성이 높은 "표면(surface)에 적합한 방식" 통지를 생성할 수 있다. 예를 들어, 사용자가 홈 어시스턴트 디바이스와 관련되고 그 홈 어시스턴트와 최근에 상호 작용한 경우, 어시스턴트 모듈(422)은 홈 어시스턴트가 이벤트에 기초한 음성 통지를 생성하게 할 수 있다. 음성 통지는 홈 어시스턴트 디바이스의 언어로 생성될 수 있다. 예를 들어, 음성 통지가 홈 디바이스로 송신되어 그 홈 디바이스가 (컴퓨터-생성 음성으로) "헬로 비키, 비행이 3시간 지연되었습니다. "리무진 예약을 취소해야 합니까?"라는 오디오를 생성하게 한다. 사용자가 모바일 폰과 관련되어 있고 그 모바일 폰을 통해 어시스턴트와 상호 작용하는 경우, 어시스턴트 모듈(422)은 리무진 예약을 취소하기 위해 "취소 버튼"을 갖는 스크린 상에 그래픽으로 디스플레이되는 통지를 모바일 폰으로 송신할 수 있다. 일부 경우, 예를 들어, 가치가 높은 이벤트 또는 높은 중요도 레벨을 갖는 이벤트의 경우, 어시스턴트 모듈(422)은 다수의 표면에 동시에 액션을 갖는 통지를 송신할 수 있다.
실시예 1. 방법은 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행되는 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하는 단계와, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하는 단계와; 적어도 하나의 액션에 기초하여, 그 이벤트의 통지를 출력할지 여부를 결정하는 단계, 상기 통지는 이벤트의 표시(indication) 및 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함하고; 그리고 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 어시스턴트로, 사용자와 어시스턴트 사이의 상호 작용 동안 출력을 위해 이벤트의 통지를 전송하는 단계를 포함한다.
실시예 2. 실시예 1에 있어서, 이벤트에 기초하여, 복수의 액션 각각을 스코어링하는 단계와; 그리고 임계값을 만족하는 개별 스코어링을 갖는 적어도 하나의 액션을 선택하는 단계를 더 포함한다.
실시예 3. 실시예 1 또는 실시예 2에 있어서, 상기 이벤트의 통지를 출력할지 여부를 결정하는 단계는, 사용자와 어시스턴트 사이에서 이전 상호 작용이 얼마나 최근에 발생했는지에 기초하여 이벤트의 통지를 출력할지 여부를 결정하는 단계를 포함한다.
실시예 4. 실시예 1 내지 실시예 3 중 어느 한 실시예에 있어서, 상기 이벤트의 통지를 출력할지 여부를 결정하는 단계는, 사용자가 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 수락할 가능성의 정도를 결정하는 단계와; 그리고 사용자가 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 수락할 가능성의 정도에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 결정하는 단계를 포함한다.
실시예 5. 실시예 4에 있어서, 상기 이벤트의 중요도 레벨을 결정하는 단계와; 그리고 이벤트의 중요도 레벨에 추가로 기초하여 이벤트의 통지를 출력할지 여부를 결정하는 단계를 더 포함한다.
실시예 6. 실시예 1 내지 실시예 5 중 어느 한 실시예에 있어서, 상기 이벤트의 통지를 출력할지 여부를 결정하는 단계는, 사용자와 어시스턴트 사이에서 이전 상호 작용이 얼마나 최근에 발생했는지와 사용자와 어시스턴트 사이의 이전 상호 작용의 빈도의 조합에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 결정하는 단계를 포함한다.
실시예 7. 실시예 1 내지 실시예 6 중 어느 한 실시예에 있어서, 상기 이벤트와 관련된 적어도 하나의 액션은 적어도 하나의 액션을 수행하도록 구성된 애플리케이션과 관련되고, 상기 애플리케이션은 어시스턴트와 상이하다.
실시예 8. 실시예 1 내지 실시예 7 중 어느 한 실시예에 있어서, 상기 적어도 하나의 액션은 단일 액션이다.
*실시예 9. 실시예 1 내지 실시예 8 중 어느 한 실시예에 있어서, 상기 적어도 하나의 액션은 다수의 액션을 포함한다.
실시예 10. 컴퓨팅 디바이스는 출력 디바이스와; 적어도 하나의 프로세서와; 그리고 실행될 때 적어도 하나의 프로세서로 하여금 어시스턴트를 실행하게 하는 명령들을 포함하는 적어도 하나의 메모리를 포함하고, 상기 어시스턴트는 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하고, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하고; 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하고, 상기 통지는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함하고; 그리고 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 출력 디바이스를 통해, 사용자와 어시스턴트 사이의 상호 작용 동안 이벤트의 통지를 출력하도록 구성된다.
실시예 11. 실시예 10에 있어서, 입력 디바이스를 더 포함하고, 상기 어시스턴트는 입력 디바이스를 통해, 적어도 하나의 액션을 수행하도록 어시스턴트에게 명령(command)하는 사용자 입력을 수신하고; 사용자 입력을 수신한 것에 응답하여, 적어도 하나의 액션을 수행하도록 더 구성된다.
실시예 12. 실시예 10 또는 실시예 11에 있어서, 상기 어시스턴트는 적어도 하나의 액션을 수행하도록 구성된 적어도 하나의 프로세서에서 실행되는 애플리케이션을 호출함으로써 적어도 하나의 액션을 수행하도록 더 구성되고, 상기 애플리케이션은 어시스턴트와 상이하다.
실시예 13. 실시예 10 내지 실시예 12 중 어느 한 실시예에 있어서, 상기 적어도 하나의 액션은 다수의 액션을 포함한다.
실시예 14. 실시예 13에 있어서, 입력 디바이스를 더 포함하고, 상기 어시스턴트는 입력 디바이스를 통해, 다수의 액션으로부터 특정 액션을 수행하도록 어시스턴트에게 명령하는 사용자 입력을 수신하고; 그리고 사용자 입력을 수신한 것에 응답하여, 특정 액션을 수행하도록 더 구성된다.
실시예 15. 실시예 10 내지 실시예 14 중 어느 한 실시예에 있어서, 상기 어시스턴트는 사용자와 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하도록 구성된 원격 컴퓨팅 시스템으로부터 이벤트를 수신하도록 더 구성된다.
실시예 16. 실시예 10 내지 실시예 15 중 어느 한 실시예에 있어서, 상기 출력 디바이스는 오디오를 출력하도록 구성되고, 상기 통지는 음성 통지이다.
실시예 17. 컴퓨터-판독 가능 저장 매체는 실행될 때 디지털 어시스턴트 시스템의 적어도 하나의 프로세서로 하여금: 컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행하는 어시스턴트 사이의 상호 작용을 개시하기 위한 이벤트를 결정하고, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고; 이벤트에 기초하여 복수의 액션으로부터, 그 이벤트와 관련된 적어도 하나의 액션을 선택하고; 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하고, 상기 통지는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 포함하고; 그리고 이벤트의 통지를 출력하기로 결정한 것에 응답하여, 어시스턴트로, 사용자와 어시스턴트 사이의 상호 작용 동안 출력을 위해 이벤트의 통지를 전송하게 하는 명령들을 포함한다.
실시예 18. 실시예 17에 있어서, 상기 명령들은 적어도 하나의 프로세서에 의해 실행될 때, 디지털 어시스턴트 시스템으로 하여금, 사용자와 어시스턴트 사이에서 이전 상호 작용이 얼마나 최근에 발생했는지에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 적어도 결정함으로써 이벤트의 통지를 출력할지 여부를 결정하게 한다.
실시예 19. 실시예 17 내지 실시예 18에 있어서, 상기 명령들은 적어도 하나의 프로세서에 의해 실행될 때, 디지털 어시스턴트 시스템으로 하여금, 사용자가 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 수락할 가능성의 정도를 결정하고; 그리고 사용자가 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 수락할 가능성의 정도에 적어도 부분적으로 기초하여 이벤트의 통지를 출력할지 여부를 결정하게 한다.
실시예 20. 실시예 17 내지 실시예 19에 있어서, 상기 적어도 하나의 액션은 컴퓨팅 디바이스 및 디지털 어시스턴트 시스템과 상이한 제3 디바이스와 관련된다.
실시예 21. 컴퓨팅 디바이스는 적어도 하나의 프로세서와 실행될 때 상기 적어도 하나의 프로세서로 하여금 실시예 1 내지 실시예 9 중 어느 한 실시예의 방법을 수행하게 하는 명령들을 포함하는 적어도 하나의 메모리를 포함한다.
실시예 22. 컴퓨터-판독 가능 저장 매체는 실행될 때 컴퓨팅 디바이스의 적어도 하나의 프로세서로 하여금 실시예 1 내지 실시예 9 중 어느 한 실시예의 방법을 수행하게 하는 명령들을 포함한다.
실시예 23. 시스템은 실시예 1 내지 실시예 9 중 어느 한 실시예의 방법을 수행하기 위한 수단들을 포함한다.
하나 이상의 예에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령 또는 코드로서, 컴퓨터 판독 가능 매체 상에 저장되거나 컴퓨터 판독 가능 매체를 통해 전송되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는 예를 들어, 데이터 저장 매체, 또는 통신 프로토콜에 따라 컴퓨터 프로그램을 한 장소에서 다른 장소로의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독 가능 저장 매체(들)을 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독 가능 매체는 일반적으로 (1) 비-일시적인 유형의 컴퓨터 판독 가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 발명에서 설명된 기술의 구현을 위한 명령, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
예로서, 이러한 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장소 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 저장 매체를 포함 할 수 있지만, 이에 한정되는 것은 아니다. 또한, 모든 연결은 컴퓨터 판독 가능 매체로 적절히 지칭된다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선(twisted pair), DSL(Digital Subscriber Line) 또는 적외선, 라디오 및 마이크로 웨이브와 같은 무선 기술을 사용하여 웹 사이트, 서버 또는 다른 원격 소스로부터 명령들이 전송되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL 또는 적외선, 라디오 및 마이크로 웨이브와 같은 무선 기술이 매체의 정의에 포함된다. 그러나, 컴퓨터 판독 가능 저장 매체 및 미디와 데이터 저장 매체는 연결, 반송파, 신호 또는 다른 일시적 매체를 포함하지 않고, 비-일시적인, 유형의 저장 매체로 지향된다는 것을 이해해야 한다. 본 명세서에서 사용되는 디스크(들)는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다목적 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크(disks)는 일반적으로 자기적으로 데이터를 재생하는 반면, 디스크(discs)는 레이저로 광학적으로 데이터를 재생한다. 위의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그램 가능 논리 어레이(FPGA), 또는 다른 등가 통합 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 "프로세서"라는 용어는 전술한 구조들 중 어느 하나 또는 본 명세서에 설명된 기술의 구현에 적합한 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 양상에서, 본 명세서에 설명된 기능은 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있다. 또한, 기술들은 하나 이상의 회로 또는 논리 요소로 완전히 구현될 수 있다.
본 발명의 기술들은 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩 세트)를 포함하는 다양한 디바이스 또는 장치에서 구현될 수 있다. 다양한 컴포넌트, 모듈 또는 유닛은 개시된 기술들을 수행하기 위해 구성된 디바이스들의 기능적 양태를 강조하기 위해 본 발명에 기술되었지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 전술한 바와 같이, 다양한 유닛은 하드웨어 유닛으로 조합되거나 적절한 소프트웨어 및/또는 펌웨어와 함께 전술한 바와 같은 하나 이상의 프로세서를 포함하는 상호 운용 가능한 하드웨어 유닛들의 컬렉션에 의해 제공될 수 있다.
다양한 실시예들이 설명되었다. 이들 및 다른 실시 양태는 하기 청구 범위의 범주 내에 있다.

Claims (20)

  1. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 컴퓨팅 디바이스에서 실행되는 어시스턴트와 사용자 사이의 상호작용을 개시하기 위한 이벤트를 결정하는 단계와, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고;
    이벤트에 기초하여 복수의 액션으로부터, 이벤트와 관련된 적어도 하나의 액션을 선택하는 단계와;
    사용자 상호작용의 현재 레벨을 결정하는 단계와; 그리고
    사용자 상호작용의 현재 레벨 및 선택된 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하는 단계와, 상기 통지에는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청이 포함되고; 그리고
    이벤트의 통지를 출력하기로 결정하는 것에 응답하여, 이벤트의 통지를 어시스턴트로 전송하는 단계를 포함하고, 상기 이벤트의 통지를 전송하는 단계는 어시스턴트로 하여금 사용자가 이벤트의 통지를 요청하지 않고도 사전에 이벤트의 통지를 출력하게 하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  2. 제1항에 있어서,
    이벤트에 기초하여, 복수의 액션 각각을 스코어링하는 단계를 더 포함하고,
    상기 적어도 하나의 액션을 선택하는 단계는 임계값을 만족하는 개별 스코어링에 기초하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  3. 제1항에 있어서,
    상기 사용자 상호작용의 현재 레벨을 결정하는 단계는,
    이전 상호작용이 사용자와 어시스턴트 간에 얼마나 최근에 발생했는지에 적어도 부분적으로 기초하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  4. 제1항에 있어서,
    상기 이벤트의 통지를 출력할지 여부를 결정하는 단계는,
    사용자가 이벤트와 관련된 상기 적어도 하나의 액션을 수행하라는 요청을 수락할 가능성(likelihood)의 정도에 더 기초하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  5. 제1항에 있어서,
    상기 이벤트의 통지를 출력할지 여부를 결정하는 단계는,
    이벤트의 중요도(severity) 레벨에 더 기초하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  6. 제1항에 있어서,
    상기 사용자 상호작용의 현재 레벨을 결정하는 단계는,
    이전 상호작용이 사용자와 어시스턴트 간에 얼마나 최근에 발생했는지, 및
    사용자와 어시스턴트 간의 이전 상호작용 빈도의, 결합에 적어도 부분적으로 기초하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  7. 제1항에 있어서,
    상기 이벤트와 관련된 적어도 하나의 액션은,
    적어도 하나의 액션을 수행하도록 구성된 애플리케이션과 관련되고, 그리고
    상기 애플리케이션은 어시스턴트와 상이한 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  8. 제1항에 있어서,
    상기 적어도 하나의 액션은 단일 액션인 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 적어도 하나의 액션은 다수의 액션을 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  10. 컴퓨팅 디바이스로서,
    출력 디바이스;
    적어도 하나의 프로세서; 및
    실행될 때 적어도 하나의 프로세서로 하여금 동작들을 수행하도록 구성된 어시스턴트를 실행하게 하는 명령들을 포함하는 적어도 하나의 메모리를 포함하고, 상기 동작들은:
    컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 컴퓨팅 디바이스에서 실행되는 어시스턴트와 사용자 사이의 상호작용을 개시하기 위한 이벤트를 결정하는 동작과, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고;
    이벤트에 기초하여 복수의 액션으로부터, 이벤트와 관련된 적어도 하나의 액션을 선택하는 동작과;
    사용자 상호작용의 현재 레벨을 결정하는 동작과;
    사용자 상호작용의 현재 레벨 및 선택된 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하는 동작과, 상기 통지에는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청이 포함되고; 그리고
    이벤트의 통지를 출력하기로 결정하는 것에 응답하여, 어시스턴트로 하여금 사용자가 이벤트의 통지를 요청하지 않고도 사전에 이벤트의 통지를 출력하게 하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
  11. 제10항에 있어서,
    상기 어시스턴트는,
    이벤트에 기초하여, 복수의 액션 각각을 스코어링하도록 더 구성되고,
    적어도 하나의 액션을 선택할 때, 상기 어시스턴트는,
    임계값을 만족하는 개별 스코에 기초하여 적어도 하나의 동작을 선택하도록 구성되는 것을 특징으로 하는 컴퓨팅 디바이스.
  12. 제10항에 있어서,
    사용자 상호작용의 현재 레벨을 결정할 때, 상기 어시스턴트는,
    이전 상호작용이 사용자와 어시스턴트 사이에 얼마나 최근에 발생했는지에 적어도 부분적으로 기초하여 사용자 상호작용의 현재 레벨을 결정하도록 구성되는 것을 특징으로 하는 컴퓨팅 디바이스.
  13. 제10항에 있어서,
    이벤트의 통지를 출력할지 여부를 결정할 때, 상기 어시스턴트는,
    사용자가 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청을 수락할 가능성의 정도에 추가로 기초하여 이벤트의 통지를 출력할지 여부를 결정하는 것을 특징으로 하는 컴퓨팅 디바이스.
  14. 제10항에 있어서,
    이벤트의 통지를 출력할지 여부를 결정할 때, 어시스턴트는.
    이벤트의 심각도(severity) 레벨에 추가로 기초하여 이벤트의 통지를 출력할지 여부를 결정하는 것을 특징으로 하는 컴퓨팅 디바이스.
  15. 제10항에 있어서,
    사용자 상호작용의 현재 레벨을 결정할 때, 어시스턴트는
    이전 상호작용이 사용자와 어시스턴트 사이에 얼마나 최근에 발생했는지, 및
    사용자와 어시스턴트 사이의 이전 상호작용의 빈도 모두에 기초하여, 사용자 상호작용의 현재 레벨을 결정하도록 구성되는 것을 특징으로 하는 컴퓨팅 디바이스.
  16. 제10항에 있어서,
    상기 이벤트와 관련된 적어도 하나의 액션은,
    적어도 하나의 액션을 수행하도록 구성된 애플리케이션과 관련되고, 그리고
    상기 애플리케이션은 어시스턴트와 상이한 것을 특징으로 하는 컴퓨팅 디바이스.
  17. 제10항에 있어서,
    상기 적어도 하나의 액션은 단일 액션인 것을 특징으로 하는 컴퓨팅 디바이스.
  18. 제10항에 있어서,
    상기 적어도 하나의 액션은 다수의 액션을 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
  19. 명령들을 저장한 컴퓨터 판독 가능 저장 매체로서, 상기 명령들은 디지털 어시스턴트 시스템의 적어도 하나의 프로세서로 하여금:
    컴퓨팅 디바이스의 사용자와 관련된 정보에 기초하여, 사용자와 컴퓨팅 디바이스에서 실행되는 어시스턴트 사이의 상호작용을 개시하기 위한 이벤트를 결정하고, 상기 어시스턴트는 복수의 액션을 수행하도록 구성되고;
    이벤트에 기초하여 복수의 액션으로부터, 이벤트와 관련된 적어도 하나의 액션을 선택하고;
    사용자 상호 작용의 현재 레벨을 결정하고;
    사용자 상호작용의 현재 레벨 및 선택된 적어도 하나의 액션에 기초하여, 이벤트의 통지를 출력할지 여부를 결정하고, 상기 통지에는 이벤트의 표시 및 그 이벤트와 관련된 적어도 하나의 액션을 수행하라는 요청이 포함되고; 그리고
    이벤트의 통지를 출력하기로 결정하는 것에 응답하여, 어시스턴트로 하여금 사용자가 이벤트의 통지를 요청하지 않고도 사전에 이벤트의 통지를 출력하게 하는 것을 특징으로 하는 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서,
    상기 이벤트와 관련된 적어도 하나의 액션은,
    적어도 하나의 동작을 수행하도록 구성된 애플리케이션과 관련되고, 그리고
    상기 애플리케이션은 어시스턴트와 상이한 것을 특징으로 하는 컴퓨터 판독 가능 저장 매체.
KR1020227044715A 2017-05-05 2018-05-02 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트 KR20230006025A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/588,055 2017-05-05
US15/588,055 US11170285B2 (en) 2017-05-05 2017-05-05 Virtual assistant configured to recommended actions in furtherance of an existing conversation
PCT/US2018/030635 WO2018204488A1 (en) 2017-05-05 2018-05-02 A virtual assistant configured to recommended actions in furtherance of an existing conversation
KR1020197032804A KR102481909B1 (ko) 2017-05-05 2018-05-02 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197032804A Division KR102481909B1 (ko) 2017-05-05 2018-05-02 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트

Publications (1)

Publication Number Publication Date
KR20230006025A true KR20230006025A (ko) 2023-01-10

Family

ID=62223266

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227044715A KR20230006025A (ko) 2017-05-05 2018-05-02 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트
KR1020197032804A KR102481909B1 (ko) 2017-05-05 2018-05-02 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197032804A KR102481909B1 (ko) 2017-05-05 2018-05-02 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트

Country Status (6)

Country Link
US (2) US11170285B2 (ko)
EP (1) EP3602442A1 (ko)
JP (3) JP6911151B2 (ko)
KR (2) KR20230006025A (ko)
CN (2) CN110603552B (ko)
WO (1) WO2018204488A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11699039B2 (en) 2017-06-28 2023-07-11 Microsoft Technology Licensing, Llc Virtual assistant providing enhanced communication session services
US10585991B2 (en) * 2017-06-29 2020-03-10 Microsoft Technology Licensing, Llc Virtual assistant for generating personalized responses within a communication session
US11307764B2 (en) * 2017-08-07 2022-04-19 Microsoft Technology Licensing, Llc Contextually inferred talking points for improved communication
WO2019203859A1 (en) 2018-04-19 2019-10-24 Google Llc Dependency graph conversation modeling for use in conducting human-to-computer dialog sessions with a computer-implemented automated assistant
US11113595B2 (en) * 2018-05-21 2021-09-07 The Travelers Indemnify Company On-demand intelligent assistant
US11158312B2 (en) * 2018-09-25 2021-10-26 International Business Machines Corporation Presenting contextually appropriate responses to user queries by a digital assistant device
US11637792B2 (en) * 2019-04-19 2023-04-25 Oracle International Corporation Systems and methods for a metadata driven integration of chatbot systems into back-end application services
US11012384B2 (en) * 2019-04-26 2021-05-18 Oracle International Corporation Application initiated conversations for chatbots
US10872168B1 (en) * 2019-06-07 2020-12-22 Piamond Corp. Method and system for providing user notification when personal information is used in voice control device
WO2021033886A1 (en) 2019-08-22 2021-02-25 Samsung Electronics Co., Ltd. A system and method for providing assistance in a live conversation
US11121987B1 (en) * 2019-09-03 2021-09-14 Octane AI, Inc. Conversational support for user journey
US11154786B2 (en) * 2020-01-27 2021-10-26 Electronic Arts Inc. Systems and methods for a network-based video game application
JP7287333B2 (ja) * 2020-04-06 2023-06-06 トヨタ自動車株式会社 制御装置、プログラム、及び情報処理方法
US11803400B2 (en) * 2020-06-25 2023-10-31 International Business Machines Corporation Method and system for asynchronous notifications for users in contextual interactive systems
CN113297359B (zh) * 2021-04-23 2023-11-28 阿里巴巴新加坡控股有限公司 交互信息的方法以及装置
US11782569B2 (en) * 2021-07-26 2023-10-10 Google Llc Contextual triggering of assistive functions
US11734502B1 (en) * 2022-12-01 2023-08-22 Suki AI, Inc. Systems and methods to maintain amends to an annotation as discrete chronological events

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444383B2 (en) * 2000-06-17 2008-10-28 Microsoft Corporation Bounded-deferral policies for guiding the timing of alerting, interaction and communications using local sensory information
CN1578951A (zh) * 2001-05-24 2005-02-09 英特尔公司 通过数字助理的消息升级的方法和装置
US7032003B1 (en) * 2001-08-13 2006-04-18 Union Gold Holdings, Ltd. Hybrid replication scheme with data and actions for wireless devices
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US20100280892A1 (en) * 2009-04-30 2010-11-04 Alcatel-Lucent Usa Inc. Method and system for targeted offers to mobile users
US8781456B2 (en) * 2011-01-07 2014-07-15 Blackberry Limited System and method for controlling mobile communication devices
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US9804740B2 (en) * 2012-06-06 2017-10-31 Apple Inc. Generating context-based options for responding to a notification
KR101569470B1 (ko) * 2012-06-22 2015-11-17 구글 인코포레이티드 현재의 위치 또는 시간에 관한 정보의 제시
US9008629B1 (en) * 2012-08-28 2015-04-14 Amazon Technologies, Inc. Mobile notifications based upon sensor data
US9576574B2 (en) * 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US20150358414A1 (en) 2014-06-10 2015-12-10 Microsoft Corporation Inference Based Event Notifications
CN107112013B (zh) 2014-09-14 2020-10-23 谷歌有限责任公司 用于创建可定制对话系统引擎的平台
US10133613B2 (en) 2015-05-14 2018-11-20 Microsoft Technology Licensing, Llc Digital assistant extensibility to third party applications
US10097973B2 (en) * 2015-05-27 2018-10-09 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160379105A1 (en) * 2015-06-24 2016-12-29 Microsoft Technology Licensing, Llc Behavior recognition and automation using a mobile device
US20170091612A1 (en) * 2015-09-30 2017-03-30 Apple Inc. Proactive assistant with memory assistance
US10970646B2 (en) 2015-10-01 2021-04-06 Google Llc Action suggestions for user-selected content
US20170357480A1 (en) * 2016-06-12 2017-12-14 The HintBox!, Inc. Proactive deep-analysis virtual assistant application and integration
US10506055B2 (en) * 2016-07-08 2019-12-10 Facebook, Inc. Automatic recipient targeting for notifications

Also Published As

Publication number Publication date
JP2021170362A (ja) 2021-10-28
CN117252233A (zh) 2023-12-19
JP2023083283A (ja) 2023-06-15
JP7250853B2 (ja) 2023-04-03
US11170285B2 (en) 2021-11-09
US20220027703A1 (en) 2022-01-27
CN110603552B (zh) 2023-09-26
EP3602442A1 (en) 2020-02-05
JP6911151B2 (ja) 2021-07-28
KR102481909B1 (ko) 2022-12-27
US20180322380A1 (en) 2018-11-08
KR20190135521A (ko) 2019-12-06
JP2020522776A (ja) 2020-07-30
WO2018204488A1 (en) 2018-11-08
CN110603552A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
KR102481909B1 (ko) 기존 대화를 증진하기 위해 추천된 액션으로 구성된 가상 어시스턴트
US11556309B2 (en) Virtual assistant configured to automatically customize groups of actions
CN110651325B (zh) 计算助理的延迟响应
US11295221B2 (en) Learning user preferences in a conversational system
CN107957776B (zh) 主动虚拟助理
CN110892382B (zh) 用于经由自动化助理恢复对话会话的系统、方法和装置
US20170277993A1 (en) Virtual assistant escalation
EP3413247A1 (en) Real-time intelligent and dynamic delivery scheduling
US20170243465A1 (en) Contextual notification engine
KR20190131088A (ko) 인간 대 컴퓨터 다이얼로그들에 요청되지 않은 콘텐츠의 사전 통합
US20170228240A1 (en) Dynamic reactive contextual policies for personal digital assistants
US20220391772A1 (en) Automatic generation and transmission of a status of a user and/or predicted duration of the status
US20170318075A1 (en) Facilitating interaction among digital personal assistants
US20180197099A1 (en) User state predictions for presenting information

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E90F Notification of reason for final refusal