KR20190097267A - 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 - Google Patents
서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 Download PDFInfo
- Publication number
- KR20190097267A KR20190097267A KR1020197022111A KR20197022111A KR20190097267A KR 20190097267 A KR20190097267 A KR 20190097267A KR 1020197022111 A KR1020197022111 A KR 1020197022111A KR 20197022111 A KR20197022111 A KR 20197022111A KR 20190097267 A KR20190097267 A KR 20190097267A
- Authority
- KR
- South Korea
- Prior art keywords
- additional
- input
- agent
- user
- party
- Prior art date
Links
- 230000009471 action Effects 0.000 claims abstract description 196
- 230000004044 response Effects 0.000 claims description 185
- 238000000034 method Methods 0.000 claims description 72
- 230000003993 interaction Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000015654 memory Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 235000013361 beverage Nutrition 0.000 description 1
- 238000009125 cardiac resynchronization therapy Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/02—Reservations, e.g. for tickets, services or events
-
- G06F17/2785—
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/243—Natural language query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/167—Audio in a user interface, e.g. using voice commands for navigating, audio feedback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/18—Speech classification or search using natural language modelling
- G10L15/1815—Semantic context, e.g. disambiguation of the recognition hypotheses based on word meaning
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/08—Speech classification or search
- G10L15/18—Speech classification or search using natural language modelling
- G10L15/1822—Parsing for meaning understanding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/28—Constructional details of speech recognition systems
- G10L15/30—Distributed recognition, e.g. in client-server systems, for mobile phones or network applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
- G10L2015/223—Execution procedure of a spoken command
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Acoustics & Sound (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Mathematical Physics (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Economics (AREA)
- User Interface Of Digital Computer (AREA)
- Information Transfer Between Computers (AREA)
- Machine Translation (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Telephonic Communication Services (AREA)
Abstract
일부 구현예는 자동화된 어시스턴트와 사용자 간의 동적 대화 중에 자동화된 어시스턴트에 의해 결정된 의도된 액션을 수행하기 위해 자동화된 어시스턴트에 의한 특정한 서드 파티(third-party, 3P) 에이전트의 선택적 호출에 관한 것이다. 이러한 구현예 중 일부에서, 특정한 3P 에이전트는 동적 대화 중에 결정된 파라미터(들)에 대한 값(들)으로 호출되며, 및/또는 파라미터(들)에 대한 결정된 값(들)에 기초하여 및/또는 다른 기준에 기초하여 호출하기 위해 복수의 후보 3P 에이전트들로부터 특정한 3P 에이전트가 선택된다. 이러한 구현예 중 일부에서, 자동화된 어시스턴트는 파라미터(들)에 대해 결정된 값(들)을 포함하는 3P 호출 요청을 특정한 3P 에이전트에 전송함으로써 특정한 3P 에이전트를 호출한다. 이것은 상기 의도된 액션이 특정한 3P 에이전트를 통해 보다 신속하게 수행될 수 있게 하여, 다양한 계산 리소스들을 보존할 수 있다.
Description
자동화된 어시스턴트("퍼스널 어시스턴트", "모바일 어시스턴트" 또는 "채팅 봇"으로도 알려짐)는 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스, 오토모빌 시스템, 단독형 퍼스널 어시스턴트 디바이스 등과 같은 다양한 클라이언트 디바이스들을 통해 사용자에 의해 인터렉션될 수 있다. 자동화된 어시스턴트는 사용자로부터 입력(예를 들어, 타이핑된 및/또는 발화된 자연어 입력)을 수신하고, 응답 컨텐츠(예를 들어, 시각적 및/또는 청각적 자연어 출력)로 응답한다. 클라이언트 디바이스를 통해 인터렉션하는 자동화된 어시스턴트는 클라이언트 디바이스 그 자체를 통해 및/또는 상기 클라이언트 디바이스와 네트워크 통신을 하는 하나 이상의 원격 컴퓨팅 디바이스들(예를 들어 "클라우드"의 컴퓨팅 디바이스(들))을 통해 구현될 수 있다.
본 명세서는 일반적으로 서드 파티(3P) 에이전트들을 선택적으로 호출하는 것에 관한 것이다. 일부 구현예는 자동화된 어시스턴트와 사용자 간의 동적 대화 중에 자동화된 어시스턴트에 의해 결정된 의도된 액션을 수행하기 위해 자동화된 어시스턴트에 의한 특정한 서드 파티(third-party, 3P) 에이전트의 선택적 호출에 관한 것이다. 이러한 구현예 중 일부에서, 특정한 3P 에이전트는 동적 대화 중에 결정된 파라미터(들)에 대한 값(들)으로 호출되며, 및/또는 파라미터(들)에 대한 결정된 값(들)에 기초하여 및/또는 다른 기준에 기초하여 호출하기 위해 복수의 후보 3P 에이전트들로부터 특정한 3P 에이전트가 선택된다. 이러한 구현예 중 일부에서, 자동화된 어시스턴트는 파라미터(들)에 대해 결정된 값(들)을 포함하는 3P 호출 요청을 특정한 3P 에이전트에 전송함으로써 특정한 3P 에이전트를 호출한다. 예를 들어, 자동화된 어시스턴트는 3P 호출 요청을 하나 이상의 네트워크들을 통해 3P 에이전트에 전송할 수 있으며, API(Application Programming Interface)를 활용하여 3P 에이전트와 인터페이스할 수 있다.
특정한 3P 에이전트가 호출되면, 특정한 3P 에이전트는 동적 대화에 포함할 출력을 생성하는데 사용할 수 있는 3P 응답 컨텐츠를 생성한다. 호출 요청이 파라미터(들)에 대해 결정된 값(들)을 포함하는 경우, 특정한 3P 에이전트는 3P 응답 컨텐츠를 생성하는데 있어서 그 값(들)을 고려할 수 있다. 이것은 의도된 액션이 특정한 3P 에이전트를 통해 보다 신속하게 수행될 수 있게 하여, 다양한 계산 리소스(예: 값(들)의 제공이 없으면 필요할 수 있는 추가적 "턴(turn)"에 의해 소비되는 네트워크 트래픽)를 절약할 수 있다.
더욱이, 파라미터(들)에 대한 결정된 값(들)이 특정한 3P 에이전트를 선택하기 위해 활용될 때, 선택된 특정한 3P 에이전트는 결정된 값들에 기초하여 의도된 액션을 수행할 수 있음을 보장할 수 있다. 예를 들어, 파라미터(들)에 대한 결정된 값(들)은 의도된 액션을 수행할 수 있는 복수의 후보 3P 에이전트들 각각에 대해 정의된 파라미터(들)에 대한 대응하는 값(들)과 비교될 수 있으며, 결정된 값(들)에 대응하는 값(들)을 가지는 3P 에이전트(들)만이 선택을 위해 고려될 수 있다. 이는 호출을 위해 선택된 특정한 3P 에이전트가 의도된 액션을 수행할 수 없는 위험을 완화하며, 다양한 계산 리소스를 보존할 수 있다. 예를 들면, 의도된 액션을 수행하기 위해 3P 에이전트를 활용하기 위한 초기의 실패한 시도에 의해 소비될 수 있고, 그 후 상기 의도된 액션을 수행하기 위한 다른 시도에서 대안적 3P 에이전트를 호출하는 것이 잇따르는, 네트워크 및/또는 프로세스 리소스들을 절약할 수 있다.
일부 상황에서, 특정한 3P 에이전트의 호출에 대한 응답으로, 호출 요청과 함께 제공되는 파라미터(들)의 값(들)은 상기 특정한 3P 에이전트로 하여금 사용자와 추가 대화를 하지 않고 의도된 액션을 수행하게 할 수 있다. 이러한 상황에서, 3P 에이전트는 의도된 액션이 수행되었음을 표시하고 및/또는 의도된 액션의 달성과 관련된 추가적 정보를 표시하는 응답 컨텐츠를 제공할 수 있다.
일부 상황에서, 특정한 3P 에이전트의 호출에 응답하여, 동적 대화는 특정한 3P 에이전트에 적어도 일시적으로(실제로 또는 효과적으로) 전송될 수 있어, 3P 에이전트는 적어도 일시적으로 동적 대화의 내용을 "주도(steer)"한다. 예를 들면, 3P 응답 컨텐츠에 기초하는 출력은 대화에 추가하여 사용자에게 제공될 수 있고, 상기 3P 응답 컨텐츠에 응답하여 추가 사용자 입력이 수신된다. 추가적 사용자 입력(또는 그들의 대화)은 특정한 3P 에이전트에 제공될 수 있다. 특정한 3P 에이전트는 동적 대화에 추가하여 제공하기 위한 추가적 출력을 생성하는데 사용될 수 있는 추가적 응답 컨텐츠를 생성하는데 그것 고유의 의미론적 엔진들 및/또는 다른 컴포넌트들을 활용할 수 있다. 이 일반적 프로세스는 예를 들면, 3P 에이전트가 특정한 에이전트 대화를 종료시키는 응답 컨텐츠(예를 들어, 대답 또는 프롬프트 대신의 해결안), 3P 에이전트 대화를 종료시키는 사용자의 추가적인 사용자 인터페이스 입력(예를 들어, 자동화된 어시스턴트 또는 다른 3P 에이전트로부터 응답을 대신 호출) 등을 제공할 때까지 계속될 수 있다.
본 명세서에 기술된 바와 같이, 일부 상황들에서, 자동화된 어시스턴트는 대화가 효과적으로 3P 에이전트에 전달된 경우 중간자로서 여전히 서비스할 수 있다. 예를 들면, 사용자의 자연어 입력이 음성 입력인 경우 중간자로서 서비스하는 것에서, 자동화된 어시스턴트는 음성 입력을 텍스트로 변환하고, 텍스트(선택적으로 텍스트의 주석들)를 3P 에이전트에 제공하고, 3P 에이전트로부터 응답 컨텐츠를 수신하고 그리고 사용자에게 제시하기 위한 3P 응답 컨텐츠에 기초하는 출력을 제공할 수 있다. 또한, 예를 들면, 중간자로서 서비스하는 것에서, 자동화된 어시스턴트는 사용자 입력 및/또는 3P 응답 컨텐츠를 분석하여, 3P 에이전트와의 대화가 종료되어야 하는지, 대안적 3P 에이전트로 이송되어야 하는지 등을 결정한다. 또한 본 명세서에 기술된 바와 같이, 일부 상황들에서, 대화는 실제로 3P 에이전트에 이송될 수 있고(일단 이송되면 자동화된 어시스턴트가 중간자로서 서비스하지 않음), 3P 에이전트에 의한 종료와 같은(예를 들어, 3P 에이전트를 통한 의도된 액션의 완료에 응답하여) 하나 이상의 조건들의 발생에 따라 다시 자동화된 어시스턴트로 이송될 수 있다.
본 명세서에 기술된 구현예들은 자동화된 어시스턴트로 하여금 사용자와의 대화에 기초하여 적절한 3P 에이전트를 선택하게 하고, 3P 에이전트를 호출하여 대화에서 사용자에 의해 표시된 사용자의 의도된 액션들을 수행한다. 이들 구현예들은 사용자로 하여금 자동화된 어시스턴트와의 인터렉션을 통해 3P 에이전트를 관련되게 하고, 여기서 사용자가 3P 에이전트를 명시적으로 트리거링하기 위해 "핫 워드들"을 알 필요가 없게 하고 및/또는 심지어 사용자가 3P 에이전트가 존재하는지 알 필요도 없게 한다. 또한, 구현예들은 자동화된 어시스턴트로 하여금 사용자와의 대화에 기초하여 다양한 파라미터들(의도된 액션과 연관됨)에 대한 값을 결정하게 하고, 3P 에이전트를 호출하는 것과 함께 3P 에이전트에 파라미터를 전달하게 한다. 추가로, 이들 구현예들은 사용자로 하여금 복수의 서로 다른 서비스 섹터들에 걸쳐서 액션들을 수행하게 하는 복수의 서로 다른 3P 에이전트들 중 임의의 것과 인터렉션하기 위해 공통 자동화된 어시스턴트 인터페이스(예를 들어, 오디오/음성 기반 인터페이스 및/또는 그래픽 인터페이스)를 활용하게 한다. 예를 들어, 공통 자동화된 어시스턴트 인터페이스는 "음식점 예약" 서비스 섹터에서 의도된 액션(들)을 수행하는 복수의 3P 에이전트들 중 어느 하나를 관여시키기 위해, "구매 전문 서비스" 서비스 섹터에서 의도된 액션(들)을 수행하기 위해 복수의 3P 에이전트들 중 어느 하나를 관여시키기 위해, "여행 서비스 구매" 서비스 섹터에서 의도된 액션(들)을 수행하기 위해 복수의 3P 에이전트들 중 어느 하나를 관여시키기 위해 그리고 "인터렉티브 게임" 서비스 섹터에서 의도된 액션(들)을 수행하기 위해 복수의 3P 에이전트들 중 어느 하나를 관여시키기 위해 활용될 수 있다.
본 명세서에서 사용된 바와 같이, 3P 에이전트는 자동화된 어시스턴트를 관리하는 파티와는 별개인 파티에 의해 관리되는 하나 이상의 컴퓨팅 디바이스들 및/또는 연관된 소프트웨어를 참조한다. 3P 에이전트는 자동화된 어시스턴트로부터 컨텐츠를 수신하도록 구성된다(API를 통해 네트워크를 통해). 컨텐츠를 수신함에 응답하여, 3P 에이전트는 수신된 컨텐츠에 기초하여 3P 응답 컨텐츠를 생성하고, 상기 3P 응답 컨텐츠를 상기 3P 응답 컨텐츠에 기초한 출력의 제공을 위해 전송한다. 예를 들면, 3P 에이전트는 자동화된 어시스턴트에 의해 상기 3P 응답 컨텐츠에 기초한 출력의 제공을 위해, 자동화된 어시스턴트에 상기 3P 응답 컨텐츠를 전송할 수 있다. 3P 에이전트는 예를 들면: 음식점 예약; 음식 주문; 영화 티켓 구매; 서비스 구매; 서비스 요청(예: 운송); 사용자의 텍스트, 전자 메일 또는 기타 전자 통신 관리; 사용자의 작업에 대한 안내 제공(예: 음료 혼합, 새는 꼭지 수리); 사용자와 인터렉티브 게임에 참여; 등과 같이 보통 하나 이상의 특정화된 액션들을 수행하도록 구성될 수 있다.
사용자 인터페이스 입력 디바이스(들)를 통해, 자동화된 어시스턴트에 및/또는 3P 에이전트에, 사용자에 의해 제공될 수 있는 다양한 유형의 입력이 본 명세서에 기술된다. 일부 경우에, 입력은 하나 이상의 사용자 인터페이스 입력 디바이스들을 통해 사용자에 의해 생성된 사용자 인터페이스 입력에 기초한 텍스트적 입력과 같은 자유 형식의 자연어 입력일 수 있다(예를 들어, 물리적 또는 가상 키보드를 통해 제공된 타이핑된 입력에 기초하거나 또는 마이크로폰을 통해 제공된 발화된 입력에 기초). 본 명세서에서 사용된 바와 같이, 자유 형식의 입력은 사용자에 의해 진술된 입력이며, 사용자에 의한 선택을 위한 제시된 옵션들의 그룹에 제한되지 않는 입력이다(예를 들어, 드롭-다운 메뉴로 제시된 옵션들의 그룹에 제한되지 않음).
일부 구현예들에서, 방법은 하나 이상의 프로세서들에 의해 수행되고, 상기 사용자와 상기 자동화된 어시스턴트 사이의 동적 대화의 일부로서 자동화된 어시스턴트를 향하는 사용자의 자연어 입력을 수신하는 단계를 포함한다. 자연어 입력은 자유 형식이며, 사용자 인터페이스 입력 디바이스를 통해 사용자에 의해 제공된 사용자 인터페이스 입력에 기초한다. 본 방법은 자연어 입력이 의도된 액션을 표시한다고 결정하는 것에 기초하여 의도된 액션을 선택하는 단계를 더 포함한다. 의도된 액션은 자동화된 어시스턴트를 통해 사용가능하고 다수의 서비스 섹터들을 포괄하는 잠재적 의도된 액션들의 그룹으로부터 선택된다. 상기 방법은 상기 의도된 액션과 연관하여 저장된 적어도 하나의 필수 파라미터가 상기 자연어 입력에서 특정되지 않음을 결정하는 단계를 더 포함한다. 상기 방법은 상기 적어도 하나의 필수 파라미터가 상기 자연어 입력에서 특정되지 않음을 결정하는 것에 응답하여, 상기 적어도 하나의 필수 파라미터에 기초한 프롬프트를 생성하는 단계를 더 포함한다. 상기 방법은: 상기 동적 대화의 일부로서 그리고 상기 자연어 입력에 대한 응답의 일부로서 프롬프트를 제공하는 단계; 상기 프롬프트에 응답하여 상기 동적 대화의 일부로서 상기 사용자에 의해 제공되는 추가적 자연어 입력을 수신하는 단계; 상기 추가적 자연어 입력에 기초하여 상기 필수 파라미터에 대한 값을 결정하는 단계; 및 상기 자연어 입력에 의해 표시된 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계를 더 포함한다. 상기 방법은 필수 파라미터에 대한 값을 포함하는 서드 파티 호출 요청을 전송하는 단계를 더 포함한다. 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 상기 특정한 서드 파티 에이전트에 전송하는 것이고, 상기 서드 파티 에이전트들의 그룹 중 임의의 다른 서드 파티 에이전트들에 대한 임의의 다른 서드 파티 호출 요청 전송없이 발생한다. 일부 구현예에서, 상기 방법은: 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 서드 파티 호출 요청을 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터의 응답 컨텐츠를 수신하는 단계; 및 상기 응답 컨텐츠에 기초한 출력을 상기 동적 대화의 일부로서 상기 사용자에게 제시하기 위해 제공하는 단계를 더 포함한다.
본 명세서에서 논의된 기술의 이들 또는 다른 구현예들은 다음 구성들 중 하나 이상을 각각 선택적으로 포함할 수 있다.
일부 구현예에서, 상기 방법은: 상기 서드 파티 에이전트의 상기 응답 컨텐츠에 기초한 상기 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 및 상기 하나 이상의 네트워크 인터페이스들을 통해 상기 서드 파티 에이전트에, 상기 추가 입력에 기초한 컨텐츠를 전송하는 단계를 더 포함한다. 이들 구현예 중 일부에서, 추가 입력은 음성 입력이고, 상기 방법은 음성 입력을 텍스트로 변환하는 단계와 텍스트의 적어도 일부를 컨텐츠에 포함시키는 단계를 더 포함한다. 이러한 구현예의 일부 버전에서, 상기 방법은: 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 컨텐츠를 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터의 추가 응답 컨텐츠를 수신하는 단계; 및 상기 추가 응답 컨텐츠에 기초한 추가 출력을 상기 동적 대화의 일부로서 상기 사용자에게 제시하기 위해 제공하는 단계를 더 포함한다.
일부 구현예에서, 상기 방법은: 상기 서드 파티 에이전트의 상기 응답 컨텐츠에 기초한 상기 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 상기 추가 입력이 상기 서드 파티 에이전트와의 인터렉션을 중단하기 원한다고 표시하는지 여부를 결정하는 단계; 및 상기 추가 입력이 상기 서드 파티 에이전트와의 인터렉션을 중단하기 원한다고 표시하지 않음을 결정하는 것에 응답하여: 상기 하나 이상의 네트워크 인터페이스들을 통해 상기 서드 파티 에이전트에, 상기 추가 입력에 기초한 컨텐츠를 전송하는 단계를 더 포함한다.
일부 구현예에서, 상기 방법은: 상기 서드 파티 에이전트에 의해 제공된 컨텐츠에 기초한 상기 출력 또는 추가 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 상기 추가 입력이 다른 서드 파티 에이전트와의 인터렉션을 원한다고 표시함을 결정하는 단계; 및 상기 추가 입력이 다른 서드 파티 에이전트와의 인터렉션을 원한다고 표시함을 결정하는 것에 응답하여: 상기 서드 파티 에이전트들의 그룹의 대안적 서드 파티 에이전트에, 상기 필수 파라미터에 대한 값을 포함하는 추가적 서드 파티 호출 요청을 전송하는 단계를 더 포함한다. 이들 구현예 중 일부에서, 상기 방법은: 상기 동적 대화에서 상기 서드 파티 에이전트의 관여 동안의 사용자 입력에 기초하여 상기 의도된 액션의 추가적 파라미터에 대한 추가적 값을 결정하는 단계; 및 상기 추가적 파라미터에 대한 추가적 값을 상기 추가적 서드 파티 호출 요청에 포함시키는 단계를 더 포함한다.
일부 구현예에서, 상기 방법은: 상기 자연어 입력 또는 상기 추가적 자연어 입력에 기초하여 상기 의도된 액션의 비-요구 선택적 파라미터에 대한 추가적 값을 결정하는 단계; 및 상기 추가적 파라미터에 대한 추가적 값을 상기 서드 파티 호출 요청에 포함시키는 단계를 더 포함한다. 구현예들 중 일부에서, 상기 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계는 상기 서드 파티 에이전트에 대해, 상기 필수 파라미터 및 상기 추가적 파라미터에 대해 정의된 대응하는 값들에 따르는, 상기 값 및 상기 추가적 값에 기초하여 상기 특정한 서드 파티 에이전트를 선택하는 것을 포함한다. 구현예들 중 일부에서, 상기 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계는 상기 추가적 서드 파티 에이전트에 대해, 상기 필수 파라미터 및 상기 추가적 파라미터에 대해 정의된 대응하는 값들에 따르지 않는, 상기 값 및 추가적 값에 기초하여 상기 선택으로부터 추가적 서드 파티 에이전트를 제거하는 것을 포함한다. 추가적 서드 파티 에이전트는 서드 파티 에이전트들의 그룹 중 하나이다. 일부 구현예에서, 상기 특정한 서드 파티 에이전트를 선택하는 단계는 상기 사용자에게 상기 사용자가 상기 서드 파티 에이전트와 상기 그룹 중 하나 이상의 추가적 서드 파티 에이전트들 사이에서 선택하도록 명시적으로 요구하는 출력을 제공하지 않고 발생할 수 있다.
일부 구현예들에서, 하나 이상의 프로세서들에 의해 수행되는 방법이 제공되며, 상기 하나 이상의 프로세서들에 의해 구현된 사용자와 자동화된 어시스턴트 간의 동적 대화의 일부로서: 상기 동적 대화의 일부로서 자동화된 어시스턴트를 향하는 사용자의 자연어 입력을 수신하는 단계, 상기 자연어 입력은 자유 형식이고, 사용자 인터페이스 입력 디바이스를 통해 사용자에 의해 제공된 사용자 인터페이스 입력에 기초하며; 상기 자연어 입력이 의도된 액션을 표시한다고 결정함에 기초하여 의도된 액션을 선택하는 단계, 상기 의도된 액션은 다수의 서비스 섹터들을 포괄하는 잠재적 의도된 액션들의 그룹으로부터 선택되며; 상기 자연어 입력에 의해 표시된 상기 의도된 액션을 각각 수행할 수 있고, 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹을 식별하는 단계; 상기 의도된 액션과 연관하여 저장되고 상기 자연어 입력에서 특정되지 않은 파라미터에 기초한 프롬프트를 생성하는 단계, 상기 프롬프트는 상기 그룹 중 임의의 서드 파티 에이전트를 명시적으로 식별하지 않으며; 상기 동적 대화의 일부로서 그리고 상기 자연어 입력에 대한 응답의 일부로서 프롬프트를 제공하는 단계; 상기 프롬프트에 응답하여 상기 동적 대화의 일부로서 상기 사용자에 의해 제공되는 추가적 자연어 입력을 수신하는 단계; 상기 추가적 자연어 입력에 기초하여 상기 파라미터에 대한 값을 결정하는 단계; 서브그룹을 형성하기 위해 상기 서드 파티 에이전트들의 그룹으로부터 서드 파티 에이전트를 제거하는 단계, 상기 제거는 상기 서드 파티 에이전트에 대한 상기 파라미터에 대해 정의된 대응하는 값에 따르지 않는 값에 기초하며; 상기 서브그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계; 및 상기 파라미터에 대한 값을 포함하는 서드 파티 호출 요청을 전송하는 단계를 포함한다. 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 선택된 특정한 서드 파티 에이전트에게만 전송된다.
본 명세서에서 논의된 기술의 이들 또는 다른 구현예들은 다음 구성들 중 하나 이상을 각각 선택적으로 포함할 수 있다.
일부 구현예들에서, 상기 방법은: 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 서드 파티 호출 요청을 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터의 응답 컨텐츠를 수신하는 단계; 및 상기 응답 컨텐츠에 기초한 출력을 상기 동적 대화의 일부로서 상기 사용자에게 제시하기 위해 제공하는 단계를 더 포함한다. 상기 구현예들 중 일부에서, 상기 방법은: 상기 서드 파티 에이전트의 상기 응답 컨텐츠에 기초한 상기 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 및 상기 하나 이상의 네트워크 인터페이스들을 통해 상기 서드 파티 에이전트에, 상기 추가 입력에 기초한 컨텐츠를 전송하는 단계를 더 포함한다. 이들 구현예 중 일부에서, 추가 입력은 음성 입력이고, 상기 방법은 음성 입력을 텍스트로 변환하는 단계와 텍스트의 적어도 일부를 컨텐츠에 포함시키는 단계를 더 포함한다.
일부 구현예들에서, 방법은 하나 이상의 프로세서들에 의해 수행되고, 하나 이상의 네트워크 인터페이스들을 통해 로컬 에이전트에 의해, 사용자의 클라이언트 디바이스에 의해 전송된 제1 자연어 입력을 수신하는 단계를 포함한다. 제1 자연어 입력은 자유 형식이며, 클라이언트 디바이스에 의해 구현된 자동화된 어시스턴트 인터페이스로 전달된다. 상기 방법은 상기 로컬 에이전트에 의해, 상기 제1 자연어 입력이 제1 서비스 섹터를 향하는 제1 의도된 액션을 표시한다고 결정하는 단계를 더 포함한다. 상기 방법은 상기 로컬 에이전트에 의해, 상기 제1 의도된 액션과 연관하여 저장된 모든 제1 필수 파라미터들에 대한 값들을 분석하기 위해, 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 클라이언트 디바이스의 상기 자동화된 어시스턴트 인터페이스를 통해 상기 사용자와 인터렉션하는 단계를 더 포함한다. 상기 방법은 상기 로컬 에이전트에 의해, 상기 자연어 입력에 의해 표시된 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계를 더 포함한다. 상기 방법은 상기 로컬 에이전트에 의해, 상기 제1 필수 파라미터들에 대한 값들을 분석하는 것에 후속하여: 상기 제1 필수 파라미터들에 대한 상기 분석된 값들에 기초하여 상기 서드 파티 에이전트를 호출하는 단계; 및 상기 자동화된 어시스턴트 인터페이스를 통해 발생하고, 상기 서드 파티 에이전트에 의해 이끌어지는 상기 클라이언트 디바이스와 상기 서드 파티 에이전트 간의 인터렉션들을 지원하는 단계를 더 포함한다.
일부 구현예들에서, 상기 방법은: 상기 로컬 에이전트에 의해, 상기 하나 이상의 네트워크 인터페이스들을 통해, 사용자의 클라이언트 디바이스로부터 제2 자연어 입력을 수신하는 단계, 상기 제2 자연어 입력은 자유 형식이고, 상기 자동화된 어시스턴트 인터페이스로 향하며; 상기 로컬 에이전트에 의해, 상기 자유 형식의 제2 자연어 입력이 제2 서비스 섹터를 향하는 제2 의도된 액션을 표시한다고 결정하는 단계, 상기 제2 서비스 섹터는 상기 제1 서비스 섹터와 서로 다르며; 상기 로컬 에이전트에 의해, 상기 제2 의도된 액션과 연관하여 저장된 모든 제2 필수 파라미터들에 대한 제2 값들을 분석하기 위해, 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 클라이언트 디바이스의 상기 자동화된 어시스턴트 인터페이스를 통해 상기 사용자와 인터렉션하는 단계; 상기 로컬 에이전트에 의해, 상기 자연어 입력에 의해 표시된 상기 제2 의도된 액션을 각각 수행할 수 있는 추가적 서드 파티 에이전트들의 그룹으로부터 추가적 특정한 서드 파티 에이전트를 선택하는 단계, 상기 추가적 서드 파티 에이전트들의 그룹은 상기 서드 파티 에이전트들의 그룹과 서로 다르며; 및 상기 로컬 에이전트에 의해, 상기 제2 필수 파라미터들에 대한 제2 값들을 분석하는 것에 후속하여: 상기 제2 필수 파라미터들에 대한 상기 분석된 제2 값들에 기초하여 상기 추가적 서드 파티 에이전트를 호출하는 단계, 및 상기 자동화된 어시스턴트 인터페이스를 통해 발생하고, 상기 추가적 서드 파티 에이전트에 의해 이끌어지는 상기 클라이언트 디바이스와 상기 추가적 서드 파티 에이전트 간의 인터렉션들을 지원하는 단계를 더 포함한다.
일부 구현예들에서, 방법은 하나 이상의 프로세서들에 의해 수행되고, 클라이언트 디바이스를 통해 사용자에 의해 제공된 초기 음성 입력을 수신하는 단계; 상기 초기 음성 입력을 초기 텍스트로 변환하기 위해 음성-텍스트 변환을 수행하는 단계; 상기 초기 텍스트에 기초하여 의도된 액션을 결정하는 단계; 상기 의도된 액션을 위해 필수인 것으로 저장된 필수 파라미터를 식별하는 단계; 상기 초기 텍스트가 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정하는 단계; 상기 초기 텍스트가 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정함에 응답하여: 상기 필수 파라미터에 기초하여 자연어 프롬프트를 생성하는 단계, 및 상기 초기 음성 입력에 대한 응답으로서 상기 자연어 프롬프트를 제공하는 단계, 상기 프롬프트는 상기 클라이언트 디바이스의 사용자 인터페이스 출력 디바이스를 통해 상기 사용자에게 제시하기 위해 제공되며; 상기 자연어 프롬프트를 제공하는 것에 응답하여 상기 사용자에 의해 제공된 추가적 자연어 입력을 수신하는 단계; 상기 추가적 자연어 입력에 기초하여 상기 파라미터에 대한 값을 결정하는 단계; 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계; 상기 필수 파라미터에 대한 값을 포함하는 서드 파티 호출 요청을 전송하는 단계, 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 상기 특정한 서드 파티 에이전트에게 전송되며; 상기 의도된 액션 및 상기 값을 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터 응답 컨텐츠를 수신하는 단계, 상기 수신은 상기 하나 이상의 네트워크 인터페이스들을 통해 수신되며; 및 상기 응답 컨텐츠에 기초한 출력을 상기 사용자에게 제시하기 위해 제공하는 단계; 상기 출력을 제공하는 것에 응답하여 상기 사용자에 의해 제공된 추가적 자연어 입력을 수신하는 단계; 상기 추가적 자연어 입력을 추가 텍스트로 변환하기 위해 추가적 음성-텍스트 변환을 수행하는 단계; 및 상기 추가 텍스트를 상기 특정한 서드 파티 에이전트에 전송하는 단계를 포함한다.
일부 구현예들에서, 방법은 하나 이상의 프로세서들에 의해 수행되고, 하나 이상의 네트워크 인터페이스들을 통해, 클라이언트 디바이스에 의해 전송된 입력을 수신하는 단계, 상기 입력은 자유 형식 자연어 사용자 입력이며; 상기 입력에 기초하여 의도된 액션을 결정하는 단계; 상기 의도된 액션을 위해 필수인 것으로 저장된 필수 파라미터를 식별하는 단계; 상기 입력이 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정하는 단계; 상기 초기 텍스트가 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정함에 응답하여: 상기 필수 파라미터에 기초하고, 상기 의도된 액션에 대해 선택적인 것으로서 저장된 선택적 파라미터에 대한 입력을 요구하지 않는 프롬프트를 생성하는 단계, 및 상기 입력에 대한 응답으로서 상기 자연어 프롬프트를 상기 클라이언트 디바이스에 전송하는 단계; 상기 프롬프트에 응답하여, 상기 하나 이상의 네트워크 인터페이스들을 통해, 클라이언트 디바이스에 의해 전송된 추가적 입력을 수신하는 단계, 상기 추가적 입력은 자유 형식 자연어 사용자 입력이며; 상기 추가적 자연어 입력에 기초하여 상기 파라미터에 대한 값을 결정하는 단계; 상기 추가적 자연어 입력에 기초하여 상기 선택적 파라미터에 대한 추가적 값을 결정하는 단계; 상기 값 및 상기 추가적 값 둘 모두에 기초하여 상기 의도된 액션을 수행할 수 있는 특정한 서드 파티 에이전트를 선택하는 단계; 및 상기 값과 상기 추가적 값 둘 모두를 포함하는 서드 파티 호출 요청을 전송하는 단계를 포함한다. 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 특정한 서드 파티 에이전트에게 전송된다.
추가로, 일부 구현예들은 하나 이상의 컴퓨팅 디바이스들의 하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은 연관된 메모리에 저장된 명령어들을 실행하도록 동작가능하며, 상기 명령어들은 앞서 언급된 방법들 중 임의의 것을 수행하도록 구성된다. 또한, 일부 구현예들은 앞서 언급된 방법들 중 임의의 것을 수행하도록 하나 이상의 프로세서들에 의해 실행가능한 컴퓨터 명령어들을 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
본 명세서에서 매우 상세히 기술된 상기 개념들 및 추가적 개념들의 모든 조합들은 본 명세서에 개시된 본 발명의 일부인 것으로 고려되어야 한다. 예를 들면, 본 명세서의 끝부분에 나타나는 청구된 발명의 모든 조합들은 본 명세서에 개시된 본 발명의 일부인 것으로 고려된다.
도 1은 본 명세서에 개시된 구현예들이 구현될 수 있는 예시적 환경의 블록도이다.
도 2a는 본 명세서에 개시된 구현예들에 따른 예시적 방법을 도시하는 흐름도이다.
도 2b는 도 2a의 흐름도의 블록의 일부 구현예를 더 상세히 도시하는 흐름도이다.
도 3은 본 명세서에 개시된 구현예들에 따라 서드 파티 에이전트에 의해 수행될 수 있는 예시적 방법을 도시하는 흐름도이다.
도 4, 5 및 6은 본 명세서에 개시된 구현예들에 따라 사용자, 클라이언트 디바이스 및 사용자; 클라이언트 디바이스와 연관된 자동화된 어시스턴트 및 서드 파티 에이전트 사이의 예시적 대화를 각각 도시한다.
도 7은 본 명세서에 개시된 구현예들에 따라 추가적 클라이언트 디바이스 및 클라이언트 디바이스의 사용자; 클라이언트 디바이스와 연관된 자동화된 어시스턴트 및 서드 파티 에이전트 사이의 예시적 대화를 도시한다.
도 8은 컴퓨팅 디바이스의 예시적 아키텍처를 도시한다.
도 2a는 본 명세서에 개시된 구현예들에 따른 예시적 방법을 도시하는 흐름도이다.
도 2b는 도 2a의 흐름도의 블록의 일부 구현예를 더 상세히 도시하는 흐름도이다.
도 3은 본 명세서에 개시된 구현예들에 따라 서드 파티 에이전트에 의해 수행될 수 있는 예시적 방법을 도시하는 흐름도이다.
도 4, 5 및 6은 본 명세서에 개시된 구현예들에 따라 사용자, 클라이언트 디바이스 및 사용자; 클라이언트 디바이스와 연관된 자동화된 어시스턴트 및 서드 파티 에이전트 사이의 예시적 대화를 각각 도시한다.
도 7은 본 명세서에 개시된 구현예들에 따라 추가적 클라이언트 디바이스 및 클라이언트 디바이스의 사용자; 클라이언트 디바이스와 연관된 자동화된 어시스턴트 및 서드 파티 에이전트 사이의 예시적 대화를 도시한다.
도 8은 컴퓨팅 디바이스의 예시적 아키텍처를 도시한다.
일부 상황들에서, 자동화된 어시스턴트를 통해 특정한 서드 파티(3P) 에이전트를 호출하기 위해, 사용자는 그 특정한 3P 에이전트를 명시적으로 호출하는 입력을 제공해야만 한다. 예를 들어, "가상 에이전트"라는 "영화 티켓 구매" 3P 에이전트를 호출하려면, 사용자는 "가상 에이전트로 티켓 주문"과 같은 3P 에이전트에 대한 "핫 워드/문구"를 말해야만 한다. 상기 명시적 호출은 사용자가 처음부터 어떤 3P 에이전트가 의도된 액션에 대해 가장 적절한지 알고 있을 것을 요구하고, 상기 사용자는 상기 의도된 액션의 해결을 시도하기 위해 상기 3P 에이전트와의 인터렉션을 통해 해당 3P 에이전트에 직접 송신해야 한다.
그러나, 사용자에 의해 3P 에이전트가 사용자가 원하는 방식으로 의도된 액션을 수행할 수 없는 경우가 종종 있다. 이는 사용자가 먼저 3P 에이전트와 인터렉션하고, 3P 에이전트가 적절하지 않다고 결정한 다음, 다른 3P 에이전트와의 인터렉션을 통해 의도된 액션을 수행해야 하므로 사용자 및 계산 리소스를 낭비할 수 있다. 게다가, 종종 사용자가 다양한 3P 에이전트들의 사용가능성을 모르는 경우가 있고, 다양한 자동화된 어시스턴트 인터페이스들에 대해 사용가능한 3P 에이전트들 및 연관된 기능의 리스트를 명시적으로 제공하는 것은 보통 제한된 자동화된 어시스턴트 인터페이스에서 사용자에게 실용적이지 않거나 및/또는 바람직하지 않다. 예를 들면, 일부 자동화된 어시스턴트들은 "음성" 뿐이며, 3P 에이전트들 및 연관된 기능의 "리스트를 읽는 것"은 사용자에게 실용적이지 않거나 및/또는 바람직하지 않다.
다양한 구현예는 사용자로 하여금 자동화된 어시스턴트와 대화하게 할 수 있고, 해당 대화를 통해 자동화된 어시스턴트는 사용자의 의도된 액션을 결정하고; 의도된 액션와 연관하여 저장된 파라미터(들)에 대한 값(들)을 결정하고; 결정된 값들에 기초하여 의도된 액션을 수행할 수 있는 특정한 3P 에이전트를 선택하고; 상기 결정된 값들로 3P 에이전트를 호출할 수 있다. 따라서, 사용자가 3P 에이전트의 명시적 호출로 시작할 것을 요구하는 대신에, 본 명세서에 개시된 구현예들은 3P 에이전트를 호출하기 전에 사용자와 대화에 참여하고, 특정한 3P 에이전트가 결정된 값들로 의도된 액션을 수행할 수 있다고 결정한 후에 특정한 3P 에이전트만 호출한다. 이들 및 다른 구현예들은 잘못된 3P 에이전트로 밝혀지는 3P 에이전트를 사용자가 명시적으로 호출한 경우 발생할 수 있는 사람 및 계산 리소스의 낭비를 완화할 수 있다. 더욱이, 3P 에이전트를 호출할 때, 자동화된 어시스턴트는 결정된 값들을 3P 에이전트에 전송하고, 3P 에이전트가 이들 값들을 요구할 필요성을 제거할 수 있다. 이것은 의도된 액션이 특정한 3P 에이전트를 통해 보다 신속하게 수행될 수 있게 하여, 다양한 계산 리소스(예: 값(들)의 제공이 없으면 필요할 수 있는 추가적 "턴(turn)"에 의해 소비되는 네트워크 트래픽)를 절약할 수 있다.
본 명세서에서 사용된 바와 같이, 3P 에이전트 호출은 자동화된 어시스턴트 대화를(실제로 또는 효과적으로) 3P 에이전트로 이송하는 것을 의미할 수 있다. 대화가 3P 에이전트로 이송되는 경우, 3P 에이전트는 대화의 내용을 "이끌게"되며, 자동화된 어시스턴트는 3P 에이전트에 의한 종료(예: 3P 에이전트를 통해 의도된 액션의 완료에 응답하여, 사용자에 의한 종료(예: 3P 에이전트 세션을 종료하기 원한다고 표시하는 입력을 제공하는 사용자에 응답하여, 타임아웃 등과 같은 하나 이상의 조건들에 응답하여 인계받는다. 본 명세서에서 사용된 바와 같이, 3P 에이전트를 호출하는 것은 추가적으로 또는 대안적으로 의도된 액션을 수행하기 위해 3P 에이전트가 직접 대화를 이끌지 않고, 3P 에이전트와의 네트워크 통신을 포함할 수 있다. 예를 들면, 의도된 액션의 모든 필수 파라미터들에 대한 값들이 자동화된 어시스턴트에 의해 결정되는 경우, 자동화된 어시스턴트는 상기 값들을 3P 에이전트와 통신하여 상기 3P 에이전트로 하여금 의도된 액션을 수행하게 하고, 의도된 액션이 수행되었다고 표시하고 및/또는 의도된 액션의 수행의 세부사항을 포함하는 3P 에이전트로부터의 3P 응답 컨텐츠를 수신하고, 그 다음 상기 수신된 3P 응답 컨텐츠에 기초한 사용자에 대한 출력(예: 의도된 액션이 수행됨을 확인)을 제공한다.
일 예시로서 그리고 본 명세서에 개시된 다른 구현예들은, 사용자가 "영화 A"에 대한 성인 영화 티켓 2장을 구매하는 의도된 액션을 수행하기를 원한다고 가정한다. 사용자가 의도된 액션이 수행될 수 있는 3P 에이전트를 초기적으로 특정할 필요없이, 사용자는 "영화 A에 대해 영화 티켓 2장 구입해"의 자연어 입력을 대신 제공할 수 있다. 자동화된 어시스턴트는 상기 입력을 파싱하고, 상기 파싱된 입력을 "영화 티켓 구입"의 의도된 액션으로, "성인 티켓의 수"의 파라미터에 "2"의 값 그리고 "영화 이름"의 파라미터에 대해 "영화 A"의 값(또는 연관된 식별자)으로 매핑할 수 있다.
자동화된 어시스턴트는 "극장 위치"의 파라미터와 같이 의도된 액션 "영화 티켓 구입"에 대해 정의된(예: API에서 정의됨) 추가적 필수 파라미터를 더 결정할 수 있고, 상기 추가적 필수 파라미터가 자연어 입력에 의해 특정되지 않음을 결정한다. 응답으로, 자동화된 어시스턴트는 사용자에게 "어떤 극장"을 프롬프트하고, "Baxter Avenue"의 응답을 수신 한 다음 "Baxter Avenue Theatre"(또는 연관 식별자)를 해당 파라미터의 값으로 결정할 수 있다.
자동화된 어시스턴트는 의도된 액션 "영화 티켓 구입"을 수행할 수 있는 후보 3P 에이전트들을 추가로 식별할 수 있고, 3P 에이전트 각각에 의해 제공된 데이터에 기초하여, 3P 에이전트 각각이 파라미터(들)에 대한 특정한 결정된 값(들)에 대한 해당 액션을 수행할 수 있는지 결정한다(예: 3P 에이전트가 "Baxter Avenue" 티켓을 판매하거나 해당 극장의 "영화 A"에 대한 티켓이 판매중인지 고려됨). 각 3P 에이전트에 의해 제공되는 데이터는 정적 및/또는 동적일 수 있다. 동적인 경우, 3P 에이전트는 주기적으로(또는 다른 정규 또는 비정규 간격으로) 자동화된 어시스턴트가 고려할 수 있는 업데이트된 데이터를 제공할 수 있으며 및/또는 자동화된 어시스턴트는 고려해야 할 특정 실시간 데이터를 얻기 위한 과정 중에 3P 에이전트를(예: API를 통해 네트워크를 통해) 참여시킬 수 있다. 일부 상황에서, 자동화된 어시스턴트는 특정한 결정된 값(들)에 대한 의도된 액션을 수행할 수 있는 3P 에이전트들 중 하나를 결정적으로 선택할 수 있고(예: 에이전트가 유일한 경우 또는 선택된 소수 중 하나인 경우 및 사용자가 강력하게 선호하는 경우), 그리고 호출 요청을 결정된 값(들)과 함께 선택된 3P 에이전트에 전송한다. 일부 다른 상황에서, 다수의 3P 에이전트들이 특정한 결정된 값(들)로 의도된 액션을 수행할 수 있는 경우, 자동화된 어시스턴트는 그들 중 적어도 일부 간의 선택을 사용자에게 제시할 수 있다(예: "3P 에이전트 1 또는 3P 에이전트 2 중 어느 것을 사용하시겠습니까?"). 이러한 다른 상황 중 일부에서, 자동화된 어시스턴트는 추가적으로 또는 대안적으로 사용자 선택을 돕기 위해, 사용자에게 제시된 3P 에이전트에 특정적이고 사용자에 의해 특정되지 않았던 값(들)을 제시할 수 있다(예: 각 3P 에이전트의 티켓 가격, 각 에이전트에 대한 사용자의 평점). 또한, 이러한 다른 상황에서, 선택으로서 (결정된 값(들)으로 의도된 액션을 수행할 수 있는 다수의 3P 에이전트들 중) 어떤 3P 에이전트들이 실제로 사용자에게 제시하기 위해 선택되는지는 상기 3P 에이전트들에 특정적이고, 사용자에 의해 특정되지 않았던 값(들)에 기초할 수 있다. 예를 들어, 가격 파라미터에 대한 값이 사용자에 의해 특정되지 않은 경우, 이것이 활용될 수 있다. 또한, 예를 들어, 3P 에이전트에 대한 사용자 및/또는 다른 사용자의 평점이 활용될 수 있다.
일부 구현예에서, 사용자와 3P 에이전트 및 자동화된 어시스턴트와의 인터렉션은 공통 자동화된 어시스턴트 인터페이스를 통해 발생할 수 있다. 예를 들어, 음성 기반 자동화된 어시스턴트 인터페이스의 경우, 자동화된 어시스턴트와 3P 에이전트 둘 모두와의 인터렉션들은 음성 기반 인터렉션을 통해 발생할 수 있다(비록 제공된 출력의 "음성"이 둘 간에 다르지만). 또한, 예를 들어, 그래픽 자동화된 어시스턴트 인터페이스의 경우, 사용자는 자동화된 어시스턴트와 3P 에이전트 둘 모두와의 인터렉션 동안에 동일한 대화 인터페이스 내에 머무를 수 있다(비록 3P 에이전트가 호출된 경우 그래픽 아이콘 및/또는 다른 표시자가 표시될 수 있음). 이는 사용자로 하여금 다양한 3P 에이전트와 인터렉션하게 하며, 사용자가 다수의 인터페이스들 간에 스위치할 필요없이 다양한 서비스 섹터들에 걸처 다양한 의도된 액션을 수행하게 한다.
이제 도 1로 돌아가면, 본 명세서에 개시된 기법들이 구현될 수 있는 예시적 환경이 도시된다. 예시적 환경은 클라이언트 디바이스(106), 자동화된 어시스턴트(110) 및 복수의 서드 파티(3P) 에이전트들(140a-n)을 포함한다. 클라이언트 디바이스(106)는 예를 들어, 단독형 음성-활성화된 스피커 디바이스, 데스크톱 컴퓨팅 디바이스, 랩톱 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 모바일폰 컴퓨팅 디바이스, 사용자의 차량의 컴퓨팅 디바이스(예를 들어, 차량 내 통신 시스템, 차량 내 엔터테인먼트 시스템, 차량 내 네비게이션 시스템) 및/또는 컴퓨팅 디바이스를 포함하는 사용자의 웨어러블 장치(예를 들어, 컴퓨팅 디바이스를 구비한 사용자의 시계, 컴퓨팅 디바이스를 구비한 사용자의 안경, 가상 또는 증강 현실 컴퓨팅 디바이스)일 수 있다. 추가적 및/또는 대안적 클라이언트 디바이스이 제공될 수 있다.
도 1에서 자동화된 어시스턴트(110)는 클라이언트 디바이스(106)와 별개인 것으로 도시되었지만, 일부 구현예들에서 자동화된 어시스턴트(110)의 모든 또는 일부 양태들은 클라이언트 디바이스(106)에 의해 구현될 수 있다. 예를 들면, 일부 구현예들에서, 입력 프로세싱 엔진(110)은 클라이언트 디바이스(106)에 의해 구현될 수 있다. 자동화된 어시스턴트(110)의 하나 이상의(예를 들어, 모든) 양태들이 클라이언트 디바이스(106)로부터 원격인 하나 이상의 컴퓨팅 디바이스들에 의해 구현되는 구현예들에서, 클라이언트 디바이스(106) 및 자동화된 어시스턴트(110)의 상기 양태들은 광역 네트워크(WAN)(예를 들어, 인터넷)과 같은 하나 이상의 네트워크들을 통해 통신한다.
단지 하나의 클라이언트 디바이스(106)가 자동화된 어시스턴트(110)와 조합하여 도시되었지만, 많은 구현예들에서, 자동화된 어시스턴트(110)는 원격적일 수 있고 다수의 사용자들의 복수의 클라이언트 디바이스 각각과 인터페이스할 수 있다. 예를 들면, 자동화된 어시스턴트(110)는 상이한 세션을 통해 다수의 디바이스들 각각과의 통신을 관리할 수 있고, 병렬로 다수의 세션들을 관리할 수 있다. 예를 들어, 일부 구현예들에서, 자동화된 어시스턴트(110)는 예를 들어, 다수의 사용자들로부터의 요청들의 많은 양을 핸들링하기에 적절한 소프트웨어를 실행하는 고성능 컴퓨터들의 서버 팜 또는 클러스터를 사용하는 클라우드 인프라를 이용하는 클라우드-기반 서비스로서 구현될 수 있다. 그러나, 단순화를 위해, 본 명세서의 많은 예시들은 단일의 디바이스(106)와 관련하여 기술된다.
자동화된 어시스턴트(110)는 3P 에이전트(140A-N)와는 별개이고 WAN과 같은 하나 이상의 네트워크를 통해 3P 에이전트(140A-N)와 통신한다. 많은 구현예들에서, 하나 이상의(예: 모든) 3P 에이전트들(140A-N)은 자동화된 어시스턴트(110)를 관리하는 파티와는 별개인 각각의 파티에 의해 각각 관리된다.
3P 에이전트들(140A-N)은 각각 3P 에이전트 데이터베이스(152)에 저장하기 위한 데이터를 직접적으로 또는 간접적으로 제공할 수 있다. 주어진 3P 에이전트에 대한 데이터는 예를 들면 상기 3P 에이전트에 의해 분석될 수 있는 의도된 액션(들)을 정의할 수 있다. 추가로, 주어진 3P 에이전트에 대한 데이터는 각 의도된 액션에 대해, 상기 의도된 액션(들)에 대해 정의된 복수의 파라미터들에 대해 상기 3P 에이전트에 의해 핸들링될 수 있는 값들을 정의할 수 있다. 일부 구현예들에서, 자동화된 어시스턴트(110) 및/또는 다른 컴포넌트는 의도된 액션들, 상기 의도된 액션들에 대한 파라미터들, 상기 파라미터들 각각에 대해 정의될 수 있는 수용가능한 값들을 정의할 수 있다. 예를 들면, 상기 기준은 자동화된 어시스턴트(110)에 의해 유지되는 API를 통해 정의될 수 있다. 그 다음 각각의 에이전트들은 그것의 의도된 액션(들)과 상기 의도된 액션의 파라미터들에 대한 값들을 자동화된 어시스턴트(110) 및/또는 다른 컴포넌트에 제공할 수 있고(예를 들어, WAN을 통한 전송), 3P 에이전트 데이터베이스(152)에 데이터를 검증하고 저장할 수 있다. 일부 구현예에서, 3P 에이전트(140A-N) 중 하나 이상은 (예를 들어, 재고 변경, 기능 변경, 서비스 제공에 대한 변경에 응답하여) 다양한 파라미터(들)에 대한 값(들)에 대한 업데이트를 동적으로 제공할 수 있다. 또한, 일부 구현예에서, 자동화된 어시스턴트(110)는 추가적으로 또는 대안적으로 3P 에이전트 데이터베이스(152)로부터 값들을 획득하는 것에 더하여 또는 그 대신에 하나 이상의 3P 에이전트(140A-N)로부터 다양한 값(들)에 대한 라이브 요청을 수행할 수 있다.
일 예로서, "음식점 예약" 의도된 액션에 대해, "사람 수", "위치" 및 "시간"과 같은 필수 파라미터들이 정의될 수 있다. 3P 에이전트는 "음식점 예약 액션"을 수행할 수 있는 필수 파라미터에 대한 사용가능한 값들을 표시하는 데이터를 제공할 수 있다. 예를 들어, 서비스를 제공하는 각 위치를 표시하는 값들을 제공할 수 있고, 상기 각 위치들에 대해, 현재 특정한 수의 사람들(예: 특정 수량 및/또는 범위) 및/또는 시간(예: 특정 시간 및/또는 시간 범위)에 대해 의도된 액션을 서비스할 수 있는지 여부를 표시하는 값들을 제공한다. 또한, 예를 들어, "음식점 예약" 의도된 액션에 대해, "테이블 유형 선호"(예: 부스, 테이블, 높은 상단), "좌석 위치 선호"(예: 실내, 실외, 창가) 등과 같은 선택 파라미터들이 정의될 수 있다. 3P 에이전트는 마찬가지로 이들 선택 파라미터들에 대해 사용가능한 값들(존재하는 경우)을 표시하는 데이터를 제공할 수 있으며, 하나 이상의 값들은 선택적으로 다른 선택 및/또는 필수 값들에 종속된다. 예를 들어, 3P 에이전트는 "테이블 유형 선호"에 맞게 의도된 액션을 서비스할 수 있는지 여부를 표시하는 및/또는 어떤 유형의 테이블 유형이 사용가능한지 표시하는 (선택적으로 시간, 인원 수에 대한 값들 및/또는 다른 파라미터의 값들과 페어링됨) 데이터를 제공할 수 있다. 다른 예로서, "차량 운송" 의도된 액션에 대해, "출발지" 및 "출발 시간"과 같은 필수 파라미터가 정의될 수 있고, "목적지", "자동차 크기", "가격" 등과 같은 선택 파라미터가 정의될 수 있다. 3P 에이전트는 "차량 운송" 의도된 액션을 수행할 수 있는 필수 및 선택 파라미터들에 대한 사용가능한 값들을 표시하는 데이터를 제공할 수 있다. 예를 들어, "출발지" 및 "목적지" 파라미터들에 대한 값들로 서비스하는 지리적 영역을 표시하는 값들을 제공할 수 있다.
3P 에이전트에 의해 표시될 수 있는 의도된 액션들은 다양한 서비스 섹터들을 포괄할 수 있다. 본 명세서에서 사용된 바와 같이, 서비스 섹터는 서비스들의 거칠게 분화된 섹터이며, 서비스 그 자체는 몇 개의 세분화된 서브섹터들을 가질 수 있다. 예를 들어 "여행"은 항공 여행, 자동차 여행, 기차 여행, 숙박 등과 같은 몇 가지 서브섹터들이 있는 서비스 섹터이다. 또한, 예를 들어 "인터렉티브 게임"은 자체적으로 "트리비아 게임", "롤플레잉 게임"과 같은 몇 가지 서브섹터들을 가지는 서비스 섹터이다. 따라서, 3P 에이전트(140A-N)에 의해 수행가능하고 자동화된 어시스턴트(110)에 의해 호출될 수 있는 의도된 액션은 많은 수(예를 들어, 10+)의 거칠게 분화된 서비스 섹터들 중 임의의 것에 속할 수 있다.
자동화된 어시스턴트(110)는 입력 프로세싱 엔진(112), 로컬 컨텐츠 엔진(130), 3P 에이전트 엔진(120) 및 출력 엔진(135)을 포함한다. 일부 구현예들에서, 자동화된 어시스턴트(110)의 엔진들 중 하나 이상은 생략, 조합될 수 있고 및/또는 자동화된 어시스턴트(110)와 별개인 컴포넌트에서 구현될 수 있다. 추가로, 자동화된 어시스턴트(110)는 단순화를 위해 본 명세서에 도시되지 않은 추가적 엔진을 포함할 수 있다.
자동화된 어시스턴트(110)는 클라이언트 디바이스(106)로부터 사용자 입력의 인스턴스들을 수신한다. 예를 들면, 자동화된 어시스턴트(110)는 스트리밍 오디오 레코딩의 형태로 자유 형식의 자연어 음성 입력을 수신할 수 있다. 스트리밍 오디오 레코딩은 클라이언트 디바이스(106)의 사용자의 발화된 입력을 캡처하는 클라이언트 디바이스(106)의 마이크로폰으로부터 수신된 신호들에 응답하여, 클라이언트 디바이스(106)에 의해 생성될 수 있다. 다른 예시로서, 일부 구현예들에서, 자동화된 어시스턴트(110)는 자유 형식의 자연어 타이핑된 입력 및/또는 심지어 구조화된 입력(비-자유 형식)을 수신할 수 있다. 일부 구현예들에서, 사용자 입력은 클라이언트 디바이스(106)에 의해 생성될 수 있고 및/또는 클라이언트 디바이스(106)의 사용자에 의한 자동화된 어시스턴트(110)의 명시적 호출에 응답하여 자동화된 어시스턴트(110)에 제공된다. 예를 들면, 호출은 클라이언트 디바이스(106)에 의한 사용자의 특정 음성 입력(예를 들어, "헤이 어시스턴트"와 같은 자동화된 어시스턴트(110) 핫워드/문구), 하드웨어 버튼 및/또는 가상 버튼과의 사용자 인터렉션(예를 들어, 하드웨어 버튼의 탭, 클라이언트 디바이스(106)에 의해 디스플레이된 그래픽 인터페이스 엘리먼트의 선택) 및/또는 다른 특정한 사용자 인터페이스 입력의 검출일 수 있다.
자동화된 어시스턴트(110)는 클라이언트 디바이스(106)로부터 사용자 입력의 인스턴스들을 수신하는 것에 응답하여, 출력의 인스턴스를 제공한다. 출력의 인스턴스는 예를 들면, 디바이스(106)에 의해 청각적으로 제시될 오디오(예를 들어, 클라이언트 디바이스(106)의 스피커를 통한 출력), 디바이스(106)에 의해 그래픽적으로 제시될 텍스트 및/또는 그래픽 컨텐츠(예를 들어, 클라이언트 디바이스(106)의 디스플레이를 통해 렌더링) 등일 수 있다. 본 명세서에 기술된 바와 같이, 출력의 일부 인스턴스들은 자동화된 어시스턴트(110)에 의해 생성된 로컬 응답 컨텐츠에 기초할 수 있으며(선택적으로 자동화된 어시스턴트(110)를 관리하는 동일한 엔터티에 의해 관리되는 하나 이상의 외부 컴포넌트들을 활용), 출력의 다른 인스턴스들은 3P 에이전트들(140A-N) 중 선택된 한 에이전트에 의해 생성된 3P 응답 컨텐츠에 기초할 수 있다.
자동화된 어시스턴트(110)의 입력 프로세싱 엔진(112)은 자연어 입력 및/또는 클라이언트 디바이스들(106)을 통해 수신된 다른 사용자 입력을 프로세싱하고, 로컬 컨텐츠 엔진(130) 및/또는 3P 에이전트 엔진(120)과 같은 자동화된 어시스턴트(110)의 하나 이상의 다른 컴포넌트들에 의해 사용되기 위한 주석이 달린 출력을 생성한다. 예를 들면, 입력 프로세싱 엔진(112)은 클라이언트 디바이스(106)의 하나 이상의 사용자 인터페이스 입력 디바이스들을 통해 사용자에 의해 생성된 자연어 자유 형식의 입력을 프로세싱할 수 있다. 생성된 주석이 달린 출력은 자연어 입력의 하나 이상의 주석들 및 선택적으로 자연어 입력의 용어들 중 하나 이상(예를 들어, 전부)을 포함한다. 다른 예시로서, 입력 프로세싱 엔진(112)은 추가적으로 또는 대안적으로 음성 입력의 인스턴스를 수신하고(예를 들어, 디지털 오디오 데이터의 형태로) 그리고 상기 음성 입력을 하나 이상의 텍스트 단어들 또는 문구들을 포함하는 텍스트로 변환하는 보이스-투-텍스트 모듈을 포함할 수 있다. 일부 구현예들에서, 보이스-투-텍스트 모듈은 스트리밍 보이스-투-텍스트 엔진이다. 보이스-투-텍스트 모듈은 언어에서 단어 시퀀스들과 함께 언어에서 오디오 신호와 표음 단위들 사이의 관계를 모델링하는 하나 이상의 저장된 보이스-투-텍스트 모델들(언어 모델들로도 지칭됨)에 의존한다.
일부 구현예들에서, 입력 프로세싱 엔진(112)은 자연어 입력에서 문법적 정보의 다양한 유형들을 식별하고 주석을 달도록 구성된다(예를 들어, 타이핑된 입력 및/또는 오디오 입력으로부터 변환된 텍스트). 예를 들면, 입력 프로세싱 엔진(112)은 용어들에 그들의 문법적 역할들로 주석을 달도록 구성된 품사 태그기를 포함할 수 있다. 예를 들면, 품사 태그기는 각 용어에 "명사", "동사", "형용사", "대명사" 등과 같은 그것의 품사를 태그(tag)할 수 있다. 또한, 예를 들면, 일부 구현예들에서, 입력 프로세싱 엔진(112)은 추가적으로 및/또는 대안적으로 자연어 입력에서 용어들 간의 구문론적 관계들을 결정하도록 구성된 종속성 파서(dependency parser)를 포함할 수 있다. 예를 들면, 종속성 파서는 어떤 용어들아 문장들의 다른 용어들, 주어들 및 동사들을 수정하는지 등을 결정할 수 있고(예를 들어, 파싱 트리), 그리고 상기 종속성들의 주석들을 만들 수 있다.
일부 구현예들에서, 입력 프로세싱 엔진(112)은 추가적으로 및/또는 대안적으로 사람들, 조직들, 위치들 등에 대한 참조들과 같은 하나 이상의 세그먼트들에서 엔터티 참조들을 주석을 달도록 구성된 엔터티 태그기(entity tagger)를 포함할 수 있다. 엔터티 태그기는 높은 입상도(예를 들어, 사람들과 같은 엔터티 클래스에 대한 모든 참조들의 식별을 가능하게 하기 위해) 및/또는 낮은 입상도(예를 들어, 특정한 사람과 같은 특정한 엔터티에 대한 모든 참조들의 식별을 가능하게 하기 위해)에서 엔터티에 대한 참조들을 주석을 달을 수 있다. 엔터티 태그기는 특정한 엔터티를 리졸브(resolve)하기 위해 자연어 입력의 컨텐츠에 의존할 수 있고 및/또는 선택적으로 특정한 엔터티를 리졸브하기 위해 지식 그래프 또는 다른 엔터티와 통신할 수 있다.
일부 구현예들에서, 입력 프로세싱 엔진(112)은 추가적으로 및/또는 대안적으로 하나 이상의 컨텍스트적 큐(cue)들에 기초하여 동일한 엔터티에 대한 참조인 그룹 또는 "클러스터"로 구성된 공동참조 리졸버(coreference resolver)를 포함할 수 있다. 예를 들면, 공동참조 리졸버는 사용자 입력의 인스턴스에서 용어 "그것(it)"을 사용자 입력의 바로 선행하는 인스턴스에서 "영화 A"의 선행하는 언급으로 리졸브하는데 활용될 수 있다.
일부 구현예들에서, 입력 프로세싱 엔진(112)의 하나 이상의 컴포넌트들은 입력 프로세싱 엔진(112)의 하나 이상의 다른 컴포넌트들로부터의 주석들에 의존할 수 있다. 예를 들면, 일부 구현예들에서, 명명된 엔터티 태그기는 특정한 엔터티에 대한 모든 언급들에 주석을 다는 것에 있어 공동참조 리졸버 및/또는 종속성 파서로부터의 주석들에 의존할 수 있다. 또한, 예를 들면, 일부 구현예들에서, 공동참조 리졸버는 동일한 엔터티에 대한 참조들을 클러스터링하는 것에 있어 종속성 파서로부터의 주석들에 의존할 수 있다. 일부 구현예들에서, 특정한 자연어 입력을 프로세싱함에 있어서, 입력 프로세싱 엔진(112)의 하나 이상의 컴포넌트들은 하나 이상의 주석들을 결정하기 위해 관련된 이전 입력 및/또는 특정한 자연어 입력 밖의 다른 관련된 데이터를 사용할 수 있다.
입력 프로세싱 엔진(112)은 사용자 입력의 의미론 또는 의미를 파악하기 위해 시도할 수 있고, 사용자 입력 의미적 표시들을 로컬 컨텐츠 엔진(130) 및/또는 3P 에이전트 엔진(120)에 상기 엔진들에 의한 사용을 위해 제공한다. 입력 프로세싱 엔진(112)은 텍스트(또는 다른 입력)을 특정한 액션들에 맵핑하기 위해 그리고 상기 액션들의 수행을 제한하는 속성들 예를 들면, 상기 액션들에 대한 입력 변수들을 식별하기 위해 하나 이상의 저장된 문법 모델들에 의존할 수 있다.
로컬 컨텐츠 엔진(130)은 사용자 입력이 "로컬 액션"과 연관된 경우(3P 에이전트 액션의 반대로서), 수신된 사용자 입력에 대한 응답을 생성할 수 있다. 일부 구현예들에서, 입력 프로세싱 엔진(112)은 사용자 입력이 로컬 액션 또는 3P 에이전트 의도된 액션과 연관되었는지 여부를 결정한다. 로컬 컨텐츠 엔진(130)은 상기 입력 프로세싱 엔진(112)과 함께 동작할 수 있고, 입력 프로세싱 엔진(112)에 의해 제공된 파싱된 텍스트(예를 들어, 액션(들) 및 액션 파라미터(들))에 의해 지시된 바와 같은 하나 이상의 액션들을 수행한다. 로컬 액션들에 대해, 로컬 컨텐츠 엔진(130)은 로컬 응답 컨텐츠를 생성할 수 있고, 디바이스(106)를 통해 사용자에게 제시하기 위해 대응하는 출력을 제공하기 위해 상기 로컬 응답 컨텐츠를 출력 엔진(135)에 제공한다. 로컬 컨텐츠 엔진(130)은 로컬 컨텐츠를 생성하고 및/또는 다른 액션들을 수행하기 위한 하나 이상의 저장된 로컬 컨텐츠 모델들(154)을 활용할 수 있다. 예를 들면, 컨텐츠 모델들(154)은 로컬 응답 컨텐츠를 생성하기 위한 다양한 규칙들을 통합할 수 있다. 일부 구현예들에서, 로컬 컨텐츠 엔진(130)은 로컬 응답 컨텐츠를 생성함에 있어, 자동화된 어시스턴트(110)를 관리하는 엔터티에 의해 관리되는 검색 엔진과 같은 하나 이상의 다른 "로컬" 컴포넌트들과 통신할 수 있다.
출력 엔진(135)은 클라이언트 디바이스(106)에 출력의 인스턴스들을 제공한다. 출력의 인스턴스는 로컬 응답 컨텐츠(로컬 컨텐츠 엔진(130)으로부터) 및/또는 3P 응답 컨텐츠(자동화된 어시스턴트(110)가 중간자로서 동작하는 경우 3P 에이전트들(140A-N) 중 하나로부터)에 기초할 수 있다. 일부 구현예들에서, 출력 엔진(135)은 응답 컨텐츠의 텍스트적 컴포넌트들을 오디오 포맷으로 전환하는 텍스트-투-스피치 엔진을 포함할 수 있고, 상기 출력 엔진(135)에 의해 제공된 출력은 오디오 포맷(예를 들어, 스트리밍 오디오로서)이다. 일부 구현예들에서, 응답 컨텐츠는 이미 오디오 포맷일 수 있다. 일부 구현예들에서, 출력 엔진(135)은 추가적으로 또는 대안적으로 텍스트적 회답(reply) 컨텐츠를 출력(선택적으로 디바이스(106)에 의한 오디오로의 변환을 위해)으로서 제공하고 및/또는 클라이언트 디바이스(106)에 의한 그래픽 디스플레이를 위해 다른 그래픽 컨텐츠를 출력으로서 제공한다.
3P 에이전트 엔진(120)은 파라미터 모듈(122), 에이전트 선택 모듈(124), 대화 모듈(126) 및 호출 모듈(128)을 포함한다. 일부 구현예들에서, 3P 에이전트 엔진(120)의 모듈(들)은 생략, 조합될 수 있고 및/또는 3P 에이전트 엔진(120)과 별개인 컴포넌트에서 구현될 수 있다. 추가로, 3P 에이전트 엔진(120)은 단순화를 위해 본 명세서에 도시되지 않은 추가적 모듈들을 포함할 수 있다.
클라이언트 디바이스(106)에 의해 제공된 사용자 입력이 3P 의도된 액션과 연관된 경우, 파라미터 모듈(122)은 해당 사용자 입력이 해당 의도된 액션과 연관하여 저장된 임의의 파라미터들에 대한 값(들)을 포함하는지 여부를 결정하고, 만약 그렇다면, 그 값들을 사용자의 의도된 액션과 연관하여 저장한다. 파라미터 모듈(122)은 대화 모듈(126)과 더 인터렉션하여, 의도된 액션에 대한 임의의 불특정 필수 파라미터들과 관련된 추가 사용자 입력을 요구하는 프롬프트(들)를 생성할 수 있다. 대화 모듈(126)에 의해 생성된 임의의 프롬프트(들)은 출력 엔진(135)에 의해 사용자에게 제시하기 위해 제공될 수 있고, 추가적 응답형 사용자 입력이 수신된다. 추가 사용자 입력(들)은 파라미터 모듈(122)에 의해 이들 입력들이 파라미터(들)에 대한 값(들)을 포함하는지 여부를 결정하기 위해 (선택적으로 입력 프로세싱 엔진(112)에 의해 주석을 작성) 각각 분석될 수 있고, 만약 그렇다면, 상기 값들을 사용자의 의도된 액션과 연관하여 저장한다.
에이전트 선택 모듈(124)은 파라미터 모듈(122)에 의해 결정된 값(들)을 활용하여, 의도된 액션의 수행에 활용하기 위해 의도된 액션과 연관하여 (예를 들어, 데이터베이스(152) 저장된 3P 에이전트들의 그룹으로부터 선택한다. 에이전트 선택 모듈(124)은 추가적으로 또는 대안적으로 특정한 3P 에이전트를 선택하는데 있어서 다른 기준을 활용할 수 있고, 선택적으로 3P 에이전트를 선택할 때 추가 사용자 입력을 요구하는 프롬프트(들)을 생성하기 위해 대화 모듈(126)과 인터렉션할 수 있다. 대화 모듈(126)에 의해 생성된 임의의 프롬프트(들)은 출력 엔진(135)에 의해 사용자에게 제시하기 위해 제공될 수 있고, 추가적 응답형 사용자 입력이 수신된다. 추가 사용자 입력(들)은 특정한 3P 에이전트를 결정하기 위해 (선택적으로 입력 프로세싱 엔진(112)에 의해 주석을 작성) 에이전트 선택 모듈(124)에 의해 각각 분석될 수 있다.
파라미터 모듈(122) 및/또는 에이전트 선택 모듈(124)과 인터렉션할 때 프롬프트를 생성함에 있어서, 대화 모듈(126)은 이들 모듈에 의해 요구되는 파라미터들 및/또는 3P 에이전트들의 속성들을 활용할 수 있다. 또한, 대화 모듈(126)은 프롬프트들을 생성하고 클라이언트 디바이스(106)를 통해 사용자와 인터렉션할 때, 입력 프로세싱 엔진(112)으로부터의 하나 이상의 문법 모델, 규칙 및/또는 주석을 활용할 수 있다.
호출 모듈(128)은 에이전트 선택 모듈(124)에 의해 선택된 3P 에이전트들(140A-N) 중 특정한 3P 에이전트에, 파라미터 모듈(122)에 의해 결정된 선택 및/또는 필수 파라미터들을 포함하는 호출 요청을 전송한다. 상기 전송된 호출 요청은 상기 특정한 3P 에이전트를 호출한다. 본 명세서에서 사용되는 바와 같이, 3P 에이전트를 호출하는 것은 클라이언트 디바이스(106)의 사용자와 자동화된 어시스턴트(110) 간의 대화를 (실제로 또는 효과적으로) 3P 에이전트로 이송하는 것을 지칭할 수 있다. 3P 에이전트를 호출하는 것은 추가적으로 또는 대안적으로 의도된 액션을 수행하기 위해 3P 에이전트가 직접 대화를 이끌지 않고, 3P 에이전트와 자동화된 어시스턴트(110)의 네트워크 통신을 포함할 수 있다.
본 명세서에 기술된 바와 같이, 일부 상황들에서, 자동화된 어시스턴트(110)는 대화가 효과적으로 특정한 3P 에이전트에 전달된 경우 중간자로서 여전히 서비스할 수 있다. 예를 들면, 사용자의 자연어 입력이 음성 입력인 경우 중간자로서 서비스하는 것에서: 자동화된 어시스턴트의 입력 프로세싱 엔진(122)은 음성 입력을 텍스트로 변환하고; 자동화된 어시스턴트(110)는 텍스트(선택적으로 입력 프로세싱 엔진(122)로부터의 텍스트의 주석들)를 3P 에이전트에 제공하고, 3P 에이전트로부터 응답 컨텐츠를 수신하고; 그리고 출력 엔진(135)은 클라이언트 디바이스(106)를 통해 사용자에게 제시하기 위한 3P 응답 컨텐츠에 기초하는 출력을 제공할 수 있다. 또한, 예를 들면, 중간자로서 서비스하는 것에서, 자동화된 어시스턴트(110)는 추가적으로 또는 대안적으로 사용자 입력 및/또는 3P 응답 컨텐츠를 분석하여 3P 에이전트와의 대화가 종료되어야 하는지, 대안적 3P 에이전트로 이송되어야 하는지 등을 결정한다. 또한 본 명세서에 기술된 바와 같이, 일부 상황들에서, 대화는 실제로 3P 에이전트에 이송될 수 있고(일단 이송되면 자동화된 어시스턴트(110)가 중간자로서 서비스하지 않음), 하나 이상의 조건들의 발생에 따라 다시 자동화된 어시스턴트(110)로 이송될 수 있다.
3P 에이전트들(140A-N) 각각은 3P 컨텍스트적 파라미터 엔진, 3P 컨텐츠 엔진 및/또는 다른 엔진들을 포함할 수 있다. 추가로, 많은 구현예들에서, 3P 에이전트는 3P 응답 컨텐츠를 생성함에 있어 다양한 저장된 모델들 및/또는 다른 리소스들에 엑세스할 수 있다(예를 들어, 그것 고유의 문법 모델(들) 및/또는 컨텐츠 모델(들)).
이제 도 2a, 2b 및 3을 참조하면, 도 1의 환경의 컴포넌트들에 의해 수행될 수 있는 방법들의 예가 도시되어있다.
도 2a는 본 명세서에 개시된 구현예들에 따른 예시적 방법(200A)을 도시하는 흐름도이다. 편의상, 흐름도의 동작들은 동작들을 수행하는 시스템을 참조하여 기술된다. 이 시스템은 자동화된 어시스턴트(110)의 하나 이상의 컴포넌트들과 같은 다양한 컴퓨터 시스템들의 다양한 컴포넌트들을 포함할 수 있다. 추가로, 방법(200)의 동작들이 특정한 순서로 도시되었지만, 이는 그러한 제한을 의미하지 않는다. 하나 이상의 동작들은 재순서화, 생략 또는 추가될 수 있다.
블록(250)에서, 시스템은 사용자 입력을 수신한다. 일부 구현예들에서, 블록(250)에서 수신된 사용자 입력은 자유 형식인 자연어 입력이다. 예를 들어, 시스템은 클라이언트 디바이스의 물리적 또는 가상 키보드에 의해 감지된 사용자 입력에 기초하여 클라이언트 디바이스에 의해 생성된 텍스트의 형태로 타이핑된 입력을 수신할 수 있다. 또한, 예를 들어, 시스템은 클라이언트 디바이스의 트랜듀서에 의해 감지된 발화된 입력에 기초하여 음성 지원 클라이언트 디바이스에 의해 생성된 스트리밍 오디오 데이터의 형태로 음성 입력을 수신할 수 있다. 이러한 예들 중 일부에서, 시스템은 선택적으로 음성 입력을 텍스트로 변환할 수 있다. 예를 들어, 시스템의 음성-텍스트 모듈은 유한 상태 디코딩 그래프와 같은 음성-텍스트 모델을 사용하여 음성 입력을 텍스트로 변환할 수 있다.
블록(252)에서, 시스템은 수신된 사용자 입력이 서드 파티(3P) 의도된 액션을 표시하는지 여부를 결정한다. 예를 들면, 시스템은 수신된 자연어 입력의 텍스트(또는 수신된 오디오 자연어 입력으로부터 변환된 텍스트)를 파싱하고, 상기 파싱된 텍스트가 임의의 3P 의도된 액션에 맵핑되는지 여부를 결정한다. 예를 들어, 시스템은 텍스트에 포함된 용어들/문구들이 3P 의도된 액션과 연관되어 저장된 용어들/문구들과 일치하는지 여부에 기초하여 파싱된 텍스트가 임의의 3P 의도된 액션에 맵핑되는지 여부를 결정할 수 있다. 또한, 예를 들어, 시스템은 텍스트로부터 도출된 하나 이상의 엔터티들이 3P 의도된 액션과 연관되어 저장된 하나 이상의 엔터티들과 일치하는지 여부를 결정할 수 있다.
블록(252)에서, 시스템이 3P 의도된 액션이 표시되지 않았다고 결정하면, 시스템은 블록들(254, 256 및 258)로 진행한다. 블록(254)에서, 시스템은 서드 파티 에이전트의 호출 없이 로컬 응답 컨텐츠를 생성한다. 예를 들면, 시스템은 로컬 문법 모델들 및/또는 시스템의 로컬 컨텐츠 모델들을 활용하여 로컬 응답 컨텐츠를 생성할 수 있다. 블록(256)에서, 시스템은 로컬 응답 컨텐츠에 기초한 출력을 제공한다. 예를 들면, 출력은 로컬 응답 컨텐츠 또는 상기 로컬 응답 컨텐츠의 변환(예를 들어, 텍스트-투-스피치 변환)일 수 있다. 출력은 클라이언트 디바이스를 통해(예를 들어, 청각적 또는 그래픽적) 제시하기 위해 제공된다. 블록(258)에서, 시스템은 추가적 음성 입력을 대기하고 추가적 음성 입력을 수신함에 따라 블록(250)으로 다시 진행한다.
블록(252)의 반복에서, 시스템이 3P 의도된 액션이 표시되었다고 결정하면, 시스템은 블록(260)으로 진행한다. 블록(260)에서, 시스템은 의도된 액션과 연관하여 저장된 모든 파라미터(들)에 대해 값(들)이 필수로서 분석(resolve)되었는지 여부를 결정한다. 블록(260)의 제1 반복에서, 이것은 필수 값(들)이 블록(250)의 가장 최근 반복 및/또는 블록(250)의 하나 이상의 선행 반복(예를 들어, 값(들)을 제공하지만 의도된 액션을 아직 표시하지 않은 이전 사용자 입력)에서 수신된 사용자 입력에 의해 표시되었는지 여부를 결정하는 것을 포함한다. 블록(260)은 또한 저장된 사용자 선호 및/또는 다른 데이터에 기초하여 하나 이상의 필수 파라미터에 대한 값(들)을 추론하는 것을 포함할 수 있다. 블록(260)의 추가 반복에서, 블록(264)(후술함)에서 제공된 추가 사용자 입력 또한 고려될 것이다.
블록(260)의 일례로서, 바로 선행하는 블록(250)의 반복에서 "Movie A에 대해 알려줘"의 자연어 입력이 선행되고, 블록(250)의 반복 직전에 블록(254, 256, 및 258)이 호출되어 가상의 "영화 A"에 관한 로컬 컨텐츠를 제공했고, 블록(250)의 가장 최근 반복에서 "오늘 밤 그 영화에 대한 성인용 티켓 2매 구매"의 자연어 입력이 수신되었다고 가정한다. "영화 티켓(들) 구입"의 3P 의도된 액션은 "오늘 밤 그 영화에 대한 성인 티켓 2 매 구매"의 자연어 입력에 기초하여 블록(252)에서 결정될 수 있다. 블록(260)에서, 시스템은 상기 자연어 입력을 활용하여 "성인 티켓의 수"의 필수 파라미터에 대한 "2"의 값을 결정할 수 있다. 시스템은 또한 자연어 입력 및 블록(250)의 선행 반복의 선행 자연어 입력을 활용하여(예를 들어, "그 영화"를 "영화 A"로 해석하기 위한 상호-참조 풀이), "영화 이름"의 필수 파라미터에 대한 "영화 A"(또는 연관된 식별자)의 값을 결정할 수 있다. 시스템은 "영화 티켓(들) 구입"의 3P 의도된 액션에 대해 "극장 위치"의 추가적 필수 파라미터가 있으며, "극장 위치"에 대한 값이 해결되지 않았음을 더 결정할 수 있다.
시스템이 블록(260)에서 모든 필수 파라미터(들)에 대한 값(들)이 해결되지 않았다고 결정하면, 시스템은 블록(262 및 264)으로 진행한다. 블록(262)에서, 시스템은 사용자에게 제시하기 위해 해결되지 않은 하나 이상의 필수 파라미터(들)에 대한 값(들)을 요구하는 프롬프트를 제공한다. 예를 들어, 앞 단락의 예에서 계속하면, 시스템은 "극장 위치"의 필수 파라미터에 대한 값을 요구하기 위해 "어떤 극장"의 프롬프트를 생성할 수 있다. 블록(264)에서, 시스템은 프롬프트에 응답하여 추가 사용자 입력을 수신한다. 예를 들어, 같은 예를 계속하면, 시스템은 "Megaplex"의 자유 형식의 자연어 입력을 수신할 수 있다. 그 다음 시스템은 블록(260)으로 되돌아 간다. 예를 들어, 블록(260)의 다음 반복에서, 시스템은 "Megaplex"의 입력을 특정한 극장 위치(예를 들어, 텍스트 및 선택적으로 사용자의 위치에 기초하여)로 분석하고, 모든 필수 파라미터가 해결되었는지를 결정할 수 있다. 몇몇 경우들에서, 블록들(260, 262 및 264)의 다수의 반복들이 수행될 것이고, 각각의 반복은 하나 이상의 대응하는 필수 파라미터들과 연관된 값(들)을 프롬프트, 수신 및/또는 해결하는 것을 포함할 수 있음이 이해된다.
시스템이 블록(260)에서 모든 필수 파라미터(들)에 대한 값(들)이 해결되었다고 결정하면, 시스템은 블록(270)으로 진행한다. 블록(270)에서, 시스템은 특정한 3P 에이전트가 의도된 액션을 각각 수행할 수 있는 3P 에이전트들의 그룹으로부터 선택될 수 있는지 여부를 결정한다. 일부 구현 예에서, 시스템은 블록(250) 및/또는 블록(264)의 하나 이상의 반복에서 사용자 입력에 기초하여 결정된 파라미터(들)에 대한 값(들)을 의도된 액션을 수행할 수 있는 3P 에이전트들 각각에 대해 정의된 파라미터(들)에 대한 대응 값(들)과 비교하는 것에 기초한 선택으로부터 그룹의 하나 이상의 3P 에이전트를 제거할 수 있다. 예를 들어, "극장 위치"의 필수 파라미터에 대해 "Megaplex"의 값이 결정될 수 있으고, 주어진 3P 에이전트는 "Megaplex"의 값을 포함하지 않는 주어진 3P 에이전트에 대한 "극장 위치" 파라미터에 기초한 선택으로부터 제거될 수 있다.
필수 파라미터와 관련하여 예시가 제공되었지만, 많은 구현예에서, 시스템은 하나 이상의 3P 에이전트들을 제거하기 위해 의도된 액션에 대해 정의된 하나 이상의 선택적 파라미터들을 추가적으로 또는 대안적으로 활용할 수 있다. 예를 들어, 선택 파라미터들은 저장된 사용자 선호에 기초하여 추론될 수 있고 및/또는 시스템에 의한 프롬프트에서 요구될 수 있고 및/또는 블록(250) 및/또는 블록(264)의 하나 이상의 반복에서 사용자 입력을 통해 사용자에 의해 자유롭게 제공될 수 있다. 예를 들어, 블록(262)에서의 프롬프트가 "어떤 극장"("극장 위치"의 필수 파라미터에 대한 값을 요구함)이고, 블록(264)에서 응답 사용자 입력이 "Megaplex - 7:00"인 것으로 가정한다. 이러한 응답 사용자 입력은 명시적으로 요구되지 않았더라도 "영화 시간"의 선택 파라미터에 대해 "7시"의 값을 결정하는데 활용될 수 있다. 또한, 블록(270)(및/또는 후술되는 블록(280))에서, 선택 파라미터가 활용될 수 있다. 예를 들어, 블록(270)에서 "7시"는 "Megaplex"에서 "영화 A"에 대해 해당 시간에 대한 잔여좌석을 갖지 않음을 표시하는 "영화 시간" 파라미터에 대한 값을 갖는 3P 에이전트를 제거하는데 활용될 수 있다.
블록(270)에서, 다른 기준이 추가적으로 또는 대안적으로 특정한 3P 에이전트가 의도된 액션을 각각 수행할 수 있는 3P 에이전트들의 그룹으로부터 선택될 수 있는지 여부를 결정하기 위해 활용될 수 있다. 예를 들어, 다수의 3P 에이전트들이 파라미터(들)에 대해 결정된 값(들)으로 의도된 액션을 수행할 수 있다고 결정되는 경우, 시스템은 선택적으로 하나 이상의 기준에 기초하여 단일의 특정한 3P 에이전트를 선택할 수 있다. 예를 들어, 시스템은 다른 사용가능한 3P 에이전트들 보다 특정한 3P 에이전트에 대한 선호를 사용자가 이전에 명시적으로 또는 묵시적으로 표시한 것에 기초하여 특정한 3P 에이전트를 선택할 수 있다. 또한, 예를 들어, 시스템은 추가적으로 또는 대안적으로 (예를 들어, 피드백 및/또는 다수의 사용자들에 의한 사용에 기초하여) 특정한 3P 에이전트의 평점에 기초하여, 상기 특정한 3P 에이전트로 의도된 액션을 완료하는 가격에 기초하여, 특정한 3P 에이전트를 선택할 수 있다.
블록(270)에서, 시스템이 특정한 3P 에이전트가 선택될 수 없음을 결정하면, 시스템은 블록(272)으로 진행한다. 블록(272)에서, 시스템은 사용자에게 제시하기 위해 다수의 옵션들로부터 3P 에이전트를 선택하도록 사용자에게 요구하는 프롬프트를 제공한다. 사용자에게 제공되는 다수의 옵션은 하나 이상의 "제거되지 않은" 3P 에이전트가 포함한다. 다시 말해서, 특정한 결정된 값(들)과 함께 의도된 액션을 수행할 수 있는 3P 에이전트들 중 하나 이상. 하나의 예로서, 시스템은 사용자에게 그러한 3P 에이전트 중 2개 이상 사이의 선택을 제시하는 프롬프트를 제공할 수 있다(예: "3P 에이전트 1 또는 3P 에이전트 2 중 어느 것을 사용하시겠습니까?"). 일부 구현예에서, 시스템은 추가적으로 또는 대안적으로, 프롬프트에서 사용자가 선택할 수 있도록 제시된 3P 에이전트에 특정적이고 사용자에 의해 특정되지 않은 값(들)을 포함할 수 있다. 예를 들어, 다수의 3P 에이전트들 각각을 명시적으로 식별하는 대신, 프롬프트는 다수의 3P 에이전트들 간에 다른 파라미터 값들만 식별할 수 있다(예: "월요일에 $15로 할 수 있고 다른 것은 화요일에 $12로 할 수 있습니다, 어느 것을 선택하시겠습니까?"). 또한, 일부 구현예들에서, (결정된 값(들)으로 의도된 액션을 수행할 수 있는 다수의 3P 에이전트들 중) 어떤 3P 에이전트들이 실제로 프롬프트에 포함시키기 위해 선택되는지는 상기 3P 에이전트들에 특정적이고, 사용자에 의해 특정되지 않았던 값(들)에 기초할 수 있다. 예를 들어, 가격 파라미터에 대한 값이 사용자에 의해 특정되지 않은 경우, 그것은 결정된 값(들)로 의도된 액션을 수행할 수 있는 다른 이용 가능한 3P 에이전트들 중에서 프롬프트에 제공하기 위한 2개의 특정한 3P 에이전트를 선택하는데 활용될 수 있다.
블록(274)에서, 시스템은 블록(272)의 프롬프트에 응답하여 추가 사용자 입력을 수신한다. 그 다음, 시스템은 블록(270)으로 되돌아 가서 특정한 3P 에이전트가 추가 사용자 입력을 고려하여 선택될 수 있는지 여부를 결정한다. 예를 들어, 블록(274)에서, 시스템은 블록(272)의 프롬프트에서 제시된 3P 에이전트들 중 하나를 직접적으로(예를 들어 이름을 포함하여) 또는 간접적으로(예를 들어, 값을 특정하여) 자유 형식 자연어 입력을 수신할 수 있다. 블록(270)에서, 시스템은 블록(274)의 사용자 입력에 표시된 것에 기초하여 표시된 3P 에이전트를 선택할 수 있다. 일부 경우에, 블록들(272 및 274)의 다수의 반복이 수행될 수 있다. 예를 들어, 블록(272)의 제1 반복에서, 프롬프트는 "2개의 3P 에이전트들이 10분 내에 당신을 태우러 올 수 있고, $15의 비용에 예상된다. 다른 것은 20분 내에 당신을 태우러 올 수 있고 $10의 비용이 예상된다. "일 수 있다. 이에 응답하여, 블록(274)의 제1 반복에서, 사용자 입력은 "10분 내 중 하나"일 수 있다. 블록(272)의 다음 반복에서, 프롬프트는 "OK. 3P 에이전트 A의 평점은 4.0이며 3P 에이전트 B의 평점은 3.9입니다. 어느 것을 선택하시겠습니까?"일 수 있다. 이에 응답하여, 블록(274)의 제2 반복에서, 사용자 입력은 "3P 에이전트 B"일 수 있으며, 시스템은 블록(270)에서 "3P 에이전트 B"를 선택할 수 있다.
블록(270)의 반복에서, 시스템은 특정한 3P 에이전트가 선택될 수 있는 경우, 시스템은 블록(280)으로 진행한다. 일부 구현예에서, 시스템은 블록(280)으로 진행하기 전에, 먼저 사용자에게 사용자가 특정한 3P 에이전트를 활용하기를 원한다는 것을 확인하도록 프롬프트할 수 있다(예를 들어, 블록(272 및 274)의 반복이 수행되지 않은 경우 및/또는 이와 달리 사용자가 진행하려는 원함을 표시하지 않은 경우). 상기 구현예들에서, 시스템은 블록(280)으로 진행하기 전의 프롬프트에 대한 응답으로, 긍정적 사용자 입력을 요구할 수 있다. 다른 구현예들에서, 시스템은 사용자에게 확인을 위해 먼저 프롬프트하지 않고 블록(280)으로 자동적으로 진행한다.
블록(280)에서, 시스템은 블록(270)에서 선택된 3P 에이전트에 대한 호출 요청을 전송한다. 예를 들면, 시스템은 하나 이상의 네트워크들을 통해 호출 요청을 전송할 수 있고, 선택적으로 API를 활용할 수 있다. 일부 구현예들에서, 호출 요청은 본 명세서에 기술된 바와 같이 결정된 파라미터(들)에 대한 값(들)을 포함한다. 일부 구현예에서, 호출 요청은 또한 의도된 액션(예를 들어, 선택된 3P 에이전트가 다수의 의도된 액션을 수행할 수 있는 경우)을 선택적으로 포함한다.
블록(282)에서, 시스템은 블록(280)에서 호출 요청을 전송한 것에 응답하여, 3P 에이전트로부터 3P 응답 컨텐츠를 수신한다. 예를 들면, 시스템은 하나 이상의 네트워크 인터페이스들을 통해 3P 응답 컨텐츠를 수신할 수 있고, 선택적으로 API를 활용할 수 있다. 3P 응답 컨텐츠는 호출 요청에 대한 응답이며, 자체 의미 프로세싱 엔진, 자체 의미 모델 및/또는 다른 3P 에이전트 특정 컴포넌트(들)를 활용하여 3P 에이전트에 의해 생성될 수 있다. 일부 구현예에서, 3P 응답 컨텐츠는 블록(280)에서 호출 요청과 함께 제공된 파라미터(들)에 대한 값(들)에 더 기초한다.
블록(284)에서, 시스템은 3P 응답 컨텐츠에 기초한 출력을 제공한다. 예를 들면, 출력은 3P 응답 컨텐츠 또는 상기 로컬 3P 응답 컨텐츠의 변환(예를 들어, 텍스트-투-스피치 변환)일 수 있다. 출력은 클라이언트 디바이스를 통해(예를 들어, 청각적 또는 그래픽적) 제시하기 위해 제공된다.
블록(286)에서, 시스템은 블록(284)에서 제공된 출력에 응답하여, 사용자로부터 추가적 입력을 대기한다.
블록(288)에서, 시스템은 추가적 입력을 수신한다. 예를 들어, 시스템은 자유 형식 자연어 입력인 추가적 입력을 수신할 수 있다.
블록(290)에서, 시스템은 수신된 추가적 입력이 블록(280)의 가장 최근 반복에서 호출된 3P 에이전트를 향하는지 여부를 결정한다. 그렇다면, 시스템은 대응하는 컨텐츠(예를 들어, 수신된 추가적 입력, 그것의 변환 및/또는 그것의 주석)를 3P 에이전트에 전송한다. 그 다음, 시스템은 블록(282)의 또 다른 반복으로 진행하고, 블록(292)에서의 전송에 대한 응답인 추가 응답 컨텐츠를 3P 에이전트로부터 수신한다. 블록들(282, 284, 286, 288, 290 및 292)의 다수의 반복들은 사용자로 하여금 3P 에이전트와의 대화에 효과적으로 참여하게 하도록 수행될 수 있고, 자동화된 어시스턴트는 중개자로서 서비스한다. 본 명세서에 기술된 바와 같이, 일부 구현예에서, 시스템은 블록(280)에서 대화를 실제로 3P 에이전트에 이송할 수 있고, 대화가 시스템으로 다시 이송되면 블록(250)(및/또는 다른 블록)으로 되돌아 갈 수 있다. 일부 구현예들에서, 블록들(284, 286, 288, 290, 292 및/또는 294)은 생략될 수 있다.
일부 구현예에서, 블록(290)에서, 시스템은 수신된 추가적 입력이 블록(280)에서 전송된 호출 요청 및/또는 블록(282)에서 수신된 3P 응답 컨텐츠에 기초하여 3P 에이전트로 향하는지 여부를 결정할 수 있다. 예를 들어, 블록(280)에서, 시스템은 3P 에이전트가 대화에 관여하지 않고 의도된 액션을 수행하도록 모든 필수 파라미터를 갖는 및/또는 3P 에이전트를 요청하는 호출 요청을 전송할 수 있다. 이러한 예에서, 블록(290)에서, 시스템은 결과적으로 추가적 입력이 3P 에이전트로 향하지 않는다고 결정할 수 있다. 다른 예로서, 블록(282)에서 수신된 3P 응답 컨텐츠는 3P 에이전트가 3P 에이전트로 향하는 추가 음성 입력을 예상하는지 여부를 표시할 수 있다. 예를 들어, 3P 응답 컨텐츠는 추가 3P 에이전트 관련 음성 입력을 요청하는 "요구"/"프롬프트"인지(3P 에이전트로 향하는 추가 입력이 예상됨), 또는, 대안적으로, 추가 3P 에이전트 관련 음성 입력을 예상하지 않는 "전달"/ "해결"인지(3P 에이전트로 향하는 추가 입력이 예상되지 않음) 여부를 표시할 수 있다.
일부 구현예에서, 비록 시스템이 블록(288)에서 수신된 실제 입력에 따라 선택된 3P 에이전트로 향하는 추가적 입력을 예상하더라도, 수신된 추가적 입력이 3P 에이전트로 향하지 않는다고 결정할 수 있다. 예를 들어, 시스템은 "중지", "종료", "다른 3P 에이전트와 대화", "다른 3P 에이전트" 등과 같은 입력들은 선택된 3P 에이전트로 향하지 않음을 결정할 수 있다.
블록(290)에서, 시스템이 수신된 추가적 입력이 3P 에이전트를 향하지 않음을 결정하면, 시스템은 블록(294)로 진행한다. 블록(294)에서, 시스템이 수신된 사용자 입력이 다른 서드 파티(3P) 에이전트로 스위치하기 원함을 표시하는지 여부를 결정한다. 그렇다면, 그리고 결정된 값(들)로 의도된 액션을 수행할 수 있는 추가적 3P 에이전트(들)가 사용가능하면, 시스템은 블록(280)으로 진행하여, 추가적 3P 에이전트 중 하나에 호출 요청을 전송할 수 있다. 시스템은 블록(280)에서 추가적 3P 에이전트에 대한 호출 요청과 함께 결정된 값(들)을 포함할 수 있다. 또한, 일부 구현예에서, 3P 에이전트와의 인터렉션 동안 추가적 값(들)이 결정될 수 있고, 상기 값(들)도 호출 요청에서 추가적 3P 에이전트에 제공된다. 추가적 호출 요청을 전송하기 위해 다수의 추가적 3P 에이전트(들) 중 어느 것이 선택되는지는 추가적 입력 자체(예: 이름이나 특성으로 추가적 3P 에이전트 중 하나를 참조하는 경우) 및/또는 다른 팩터들(예: 추가적 입력이 "다음 에이전트"인 경우 다음으로 가장 많이 사용되는 3P 에이전트)에 기초할 수 있다.
블록(294)에서, 시스템이 수신된 추가적 입력이 다른 3P 에이전트로 스위치하기 원함을 표시하지 않는다고 결정하며, 시스템은 블록(252)으로 진행한다.
도 2b는 도 2a의 방법(200)의 특정 블록들의 일부 구현예의 예시(200B)를 도시하는 흐름도이다. 편의상, 흐름도의 동작들은 동작들을 수행하는 시스템을 참조하여 기술된다. 이 시스템은 3P 에이전트 엔진(120) 및/또는 자동화된 어시스턴트(110)의 하나 이상의 다른 컴포넌트들과 같은 다양한 컴퓨터 시스템들의 다양한 컴포넌트들을 포함할 수 있다. 추가로, 예시(200B)의 동작들이 특정한 순서로 도시되었지만, 이는 그러한 제한을 의미하지 않는다. 하나 이상의 동작들은 재순서화, 생략 또는 추가될 수 있다.
예시(200B)는 도 2a의 블록들(252, 260, 270 및 280)의 일부 특정한 예들을 제공한다.
도 2b의 블록(252A)은 도 2a의 블록(252)의 특정한 예이다. 블록(252A)에서, 시스템은 사용자 입력에 기초하여 3P 의도된 액션을 선택한다.
도 2b의 블록(260A, 260B 및 260C)은 도 2a의 블록(260)의 특정한 예이다. 블록(260A)에서, 시스템은 블록(252A)에서 선택된 의도된 액션에 대한 필수 및 선택 파라미터를 식별한다.
블록(260B)에서, 시스템은 블록(252A)에서 수신된 사용자 입력에 표시된 파라미터(들)에 대한 값(들)(있는 경우)을 결정하고 저장한다.
블록(260C)에서, 시스템은 의도된 액션에 대한 모든 필수 파라미터들이 블록(260B)의 가장 최근 반복에서 결정되었는지 여부를 결정한다. 그렇지 않은 경우, 시스템은 도 2a의 블록들(262 및 264)로 진행하고, 그 다음 블록(260B)으로 다시 진행하여 블록(264)에서 제공된 추가 사용자 입력에서 파라미터들(있는 경우)을 결정하고 저장한다.
블록(260C)의 반복에서, 의도된 액션에 대한 모든 필수 파라미터들이 결정되면, 시스템은 블록(270A)으로 진행한다. 블록(270A)에서, 시스템은 의도된 액션에 대한 단일 3P 에이전트가 블록(260B)의 하나 이상의 반복, 과거 사용자 인터렉션 및/또는 다른 기준에서 결정되고 저장된 값(들)에 기초하여 해결 가능한지 여부를 결정한다. 그렇지 않다면, 시스템은 도 2a의 블록(272 및 274)으로 진행하고, 그 다음, 블록(270A)으로 다시 진행하여 블록(274)에서 제공된 추가 사용자 입력이 단일 3P 에이전트의 해결을 가능하게 하는지를 결정한다.
블록(270A)의 반복에서, 단일 3P 에이전트가 해결 가능하면, 시스템은 블록(280A)으로 진행한다. 블록(280A)에서, 시스템은 블록(260B)의 하나 이상의 반복에서 결정되고 저장된 파라미터들을 포함하는 호출 요청을 단일 3P 에이전트에 전송한다. 그 다음, 시스템은 도 2a의 블록(282)으로 진행한다.
도 3은 본 명세서에 개시된 구현예들에 따라 서드 파티 에이전트에 의해 수행될 수 있는 예시적 방법(300)을 도시하는 흐름도이다. 이 시스템은 3P 에이전트들(140A-N) 중 하나의 하나 이상의 컴포넌트들과 같은 다양한 컴퓨터 시스템들의 다양한 컴포넌트들을 포함할 수 있다. 추가로, 방법(300)의 동작들이 특정한 순서로 도시되었지만, 이는 그러한 제한을 의미하지 않는다. 하나 이상의 동작들은 재순서화, 생략 또는 추가될 수 있다.
블록(352)에서, 시스템은 자동화된 어시스턴트로부터 호출 요청을 수신한다. 호출 요청은 의도된 액션(예: 시스템이 다수의 의도된 액션을 수행할 수 있는 경우), 의도된 액션의 파라미터(들)에 대한 값(들) 및/또는 다른 데이터를 포함할 수 있다. 일부 구현예들에서, 호출 요청은 효과적으로 또는 실제적으로 시스템이 대화를 이어 받아야 함을 표시할 수 있다. 호출 요청이 시스템이 실제적으로 대화를 이어 받아야 함을 표시하는 경우, 시스템은 직접적 네트워크 통신 세션을 대응하는 클라이언트 디바이스와 설정할 수 있다. 호출 요청이 시스템이 효과적으로 대화를 이어 받아야 함을 표시하는 경우, 시스템은 호출 요청을 제공한 컴포넌트 및/또는 관련 컴포넌트와 여전히 통신하면서 대화를 이어 받을 수 있다.
블록(354)에서, 시스템은 필수 및/또는 선택 파라미터들에 대한 값들과 같은 호출 요청에 포함된 파라미터(들)에 대한 값(들)에 기초하여 응답 컨텐츠를 생성한다.
블록(356)에서, 시스템은 응답 컨텐츠를 제공한다. 예를 들면, 호출 요청이 시스템이 효과적으로 대화를 이어 받고 및/또는 대화와 관계없이 의도된 액션을 수행해야만 함을 표시하는 경우, 시스템은 호출 요청을 보낸 컴포넌트(또는 관련된 컴포넌트)에 응답 컨텐츠를 전송할 수 있다. 또한, 예를 들면, 호출 요청이 시스템이 실제적으로 대화를 이어 받아야 함을 표시하는 경우, 시스템은 응답 컨텐츠를 대응하는 클라이언트 디바이스에 전송할 수 있다.
블록(358)에서, 시스템은 블록(356)에서 제공된 응답 컨텐츠에 대한 응답에 있는 추가 컨텐츠를 수신한다. 추가 컨텐츠는 예를 들어, 응답 컨텐츠에 응답하여 제공된 사용자 입력, 그 사용자 입력의 변환 및/또는 그 사용자 입력의 주석을 포함할 수 있다. 예를 들어, 자동화된 어시스턴트 또는 다른 컴포넌트가 중개자 역할을 하는 경우, 자동화된 어시스턴트는 해당 사용자 입력의 변환 및/또는 해당 사용자 입력의 주석을 제공할 수 있다.
블록(360)에서, 시스템은 블록(358)의 수신된 추가 컨텐츠에 기초하여 추가 응답 컨텐츠를 생성한다.
블록(362)에서, 시스템은 블록(360)에서 생성된 추가응답 컨텐츠를 제공한다. 시스템은 선택적으로 블록(358)으로 되돌아가서, 블록(358, 360 및 362)의 추가적 반복을 수행할 수 있다. 일부 구현예에서, 시스템은 대화를 이끌고 참여하는 동안 블록(358, 360 및 362)의 다수의 반복을 수행할 수 있음을 알 수 있다. 시스템은 하나 이상의 조건들(예를 들어, 의도된 액션의 수행)의 만족에 응답하여 방법(300)을 종료할 수 있고, 선택적으로 시스템이 방법(300)을 종료하고 있음을 표시하기 위해 블록(352)의 호출 요청을 제공한 컴포넌트에 통신을 전송할 수 있다.
블록들(358, 360 및 362)은 일부 상황들에서 수행되지 않을 수 있음을 표시하기 위해 도 3에서 파선으로 도시된다. 예를 들어, 일부 구현예에서 본 명세서에 기술된 바와 같이, 시스템은 블록(352)의 호출 요청에 응답하여 의도된 액션을 수행하고, 의도된 액션이 수행되었음을 표시하는 응답 컨텐츠를 블록(354)에서 생성하고, 블록(356)에서 응답 컨텐츠를 제공하고, 호출 요청과 연관하여 추가 컨텐츠를 수신하지 않는다.
도 4, 5 및 도 6은 사용자(101), 음성 사용가능 클라이언트 디바이스(406) 및 사용자(101), 클라이언트 디바이스(406)와 연관된 자동화된 어시스턴트 및 서드 파티 에이전트 간에 발생할 수 있는 대화의 예시를 각각 도시한다. 클라이언트 디바이스(406)는 하나 이상의 마이크로폰 및 하나 이상의 스피커들을 포함한다. 도 1의 자동화된 어시스턴트(110)의 하나 이상의 양태들은 클라이언트 디바이스(406) 및/또는 클라이언트 디바이스(406)와 네트워크 통신하는 하나 이상의 컴퓨팅 디바이스들에서에서 구현될 수 있다. 따라서, 쉬운 설명을 위해 자동화된 어시스턴트(110)는 도 4, 5 및 6의 기재를 참조한다.
도 4에서, 사용자는 "오늘 밤 영화 A에 대한 성인용 티켓 2장 구입해"의 발화된 입력(480A)을 제공한다. 발화된 입력에 대응하는 음성 입력이 디바이스(606)에 의해 생성되고 자동화된 어시스턴트(110)에 제공된다(예를 들어, 스트리밍 음성 입력으로서). 자동화된 어시스턴트(110)는 음성 입력을 텍스트로 변환하고, 텍스트가 "영화 티켓 구입"의 의도된 액션을 표시하는 것으로 결정할 수 있다. 자동화된 어시스턴트(110)는 텍스트가 "성인 티켓의 수"의 파라미터에 "2"의 값 그리고 "영화 이름"의 파라미터에 대해 "영화 A"의 값(또는 연관된 식별자)을 표시함을 더 결정할 수 있다.
자동 어시스턴트(110)는 "영화 티켓 구입" 의도된 액션에 대해 정의된 "극장 위치"의 추가적 필수 파라미터가 발화된 입력(480A)에 의해 특정되지 않음을 더 결정할 수 있다. 이에 응답하여, 자동화된 어시스턴트(110)는 필수 파라미터에 대한 값을 요구하기 위해 프롬프트(482A) "어느 극장"을 생성하여 제공할 수 있다.
응답 출력(482A)에 응답하여, 사용자는 "Baxter Avenue"의 추가적 발화된 입력(480B)을 제공한다. 발화된 입력에 대응하는 음성 입력이 디바이스(606)에 의해 생성되고 자동화된 어시스턴트(110)에 제공된다. 자동 어시스턴트(110)는 음성 입력을 텍스트로 변환할 수 있고, 텍스트에 기초하여 "극장 위치"의 필수 파라미터에 대한 값으로서 "Baxter Avenue Theatre"(또는 관련 식별자)를 결정할 수 있다.
자동화된 어시스턴트(110)는 2개의 3P 에이전트("3P1"및 "3P2")가 "2", "영화 A" 및 "Baxter Avenue Theatre"의 값으로 "영화 티켓 구입" 의도된 액션을 수행할 수 있는지를 더 결정할 수 있다. 일부 구현예에서, 자동화된 어시스턴트(110)는 결정된 값으로 의도된 액션을 수행할 수 있는 선택된 3P 에이전트들에 기초하여 "영화 티켓 구입" 의도된 액션을 수행할 수 있는 3P 에이전트들의 보다 큰 그룹으로부터(반면, 보다 큰 그룹의 다른 에이전트들을 수행할 수 없음) 3P 에이전트들을 선택할 수 있다.
자동화된 어시스턴트(110)는 선택된 3P 에이전트들을 식별하는 프롬프트(482B)뿐만 아니라 3P 에이전트들 각각에 대한 추가적 불특정 파라미터(가격)에 대한 값을 생성하여 제공한다.
응답 출력(482B)에 응답하여, 사용자는 "3P2로 할래"의 추가적 발화된 입력(480C)을 제공한다. 발화된 입력에 대응하는 음성 입력이 디바이스(606)에 의해 생성되고 자동화된 어시스턴트(110)에 제공된다. 자동화된 어시스턴트(110)는 음성 입력을 텍스트로 변환하고, 텍스트에 기초하여 3P 에이전트 3P2가 선택됨을 결정할 수 있다. 그 다음 자동화된 어시스턴트(110)는 파라미터들에 대한 결정된 값들과 함께 3P 에이전트(3P2)에 호출 요청을 송신할 수 있다.
그 다음, 3P 에이전트(3P2)는 대화를 효과적으로 또는 실제로 인계(즉, 이끌음)하고, 프롬프트(482C)는 3P 에이전트(3P2)에 의해 생성된 응답 컨텐츠에 기초하여 제공된다. 프롬프트(482C)는 3P 에이전트(3P2)에 의해 직접 및/또는 자동화된 어시스턴트(110)를 통해 제공될 수 있다.
응답 출력(482B)에 응답하여, 사용자는 "7:00 티켓을 구입해"의 추가적 발화된 입력(480D)를 제공한다. 발화된 입력에 대응하는 음성 입력이 디바이스(606)에 의해 생성되고 자동화된 어시스턴트(110)(그것을 포워딩하고 및/또는 3P 에이전트에 변환) 및/또는 3P 에이전트(3P2)에 직접 제공된다.
3P 에이전트(3P2)는 발화된 입력(480D)(및/또는 그것의 변환)에 기초하여 추가 응답 컨텐츠를 생성하고, 응답 출력(482D)이 그 응답 컨텐츠에 기초하여 제공된다. 그 다음 대화의 주도는 자동화된 어시스턴트(110)에 리턴된다.
그 다음 사용자는 "가상 까페에 5:30 2명 테이블 예약해"라는 발화된 입력(480E)을 제공한다. 발화된 입력에 대응하는 음성 입력이 디바이스(606)에 의해 생성되고 자동화된 어시스턴트(110)에 제공된다. 자동화된 어시스턴트(110)는 음성 입력을 텍스트로 변환하고, 텍스트가 "음식점 예약"의 의도된 액션을 표시하는 것으로 결정할 수 있다. 자동화된 어시스턴트(110)는 텍스트가 의도된 액션에 대한 모든 필수 파라미터를 표시함을 더 결정할 수 있다. 또한, 자동화된 어시스턴트(110)는 특정한 3P 에이전트를 선택하여 파라미터로 의도된 액션을 수행하도록 호출할 수 있다. 예를 들어, 특정한 3P 에이전트는 의도된 액션을 수행할 수 있는 유일한 3P 에이전트인 것 또는 특정한 3P 에이전트가 의도된 액션에 대해 선호됨을 표시하는 사용자 액션들 및/또는 입력에 기초하여 선택될 수 있다. 호출에 응답하여, 특정한 3P 에이전트는 의도된 액션을 수행하고, 수행을 확인하는 및/또는 다른 데이터를 응답 컨텐츠를 자동화된 어시스턴트(110)에 전송한다. 그 다음 자동화된 어시스턴트(110)는 특정한 3P 에이전트 및 3P 에이전트에 의해 제공된 추가적 데이터("이메일 확인서가 발송되었습니다.")에 의해 의도된 액션이 수행되었음을 표시하는 응답 출력(482E)을 제공한다.
도 5에서, 발화된 입력(580A)은 발화된 입력(480A)(도 4)과 유사하지만, "영화 이름"의 필수 파라미터를 특정하지 않았다. 응답으로, 자동화된 어시스턴트는 "극장 위치"및 "영화 이름" 파라미터들 둘 모두에 대한 값을 요구하는 프롬프트(582A)를 제공한다.
그 다음, 사용자는 두 파라미터들에 대한 값을 특정하는 발화된 입력(580B)를 제공한다. 자동화된 어시스턴트(110)는 다수의 "영화 티켓 구입" 3P 에이전트들 중, 3P 에이전트(3P1)가 발화된 입력(580A 및 580B)에 기초하여 결정된 값으로 의도된 액션을 수행할 수 있는 유일한 3P 에이전트임을 결정한다. 자동화된 어시스턴트(110)는 이것을 표시하고 사용자가 3P 에이전트(3P1)로 이송됨을 표시하는 출력(582B)을 제공한다. 다른 구현들에서, 출력(582B)은 제공되지 않을 수 있고, 대신에 사용자는 3P 에이전트(3P1)로 직접 이송될 수 있다.
자동화된 어시스턴트(110)는 3P 에이전트(3P1)를 결정된 값으로 호출하고, 프롬프트(582C)는 3P 에이전트(3P1)로부터의 응답 컨텐츠에 기초하여 제공된다. 발화된 입력(580C)은 사용자가 3P 에이전트(3P1)로부터 영화 티켓을 구매하기를 원한다는 것을 확인한다. 그 다음, 구매를 확인하기 위한 3P 에이전트(3P1)로부터의 응답 컨텐츠에 기초하여 출력(582D)이 제공된다.
도 6은 발화된 입력(680A-F) 및 응답 출력(682A-E) 및 서드 파티 에이전트(3P4)가 초기에 호출되어 출력(682C 및 682D)에서 대화를 주도하는 상황을 도시한다. 그러나, 다른 가능한 3P 에이전트(3P5)로 스위치하고자 하는 발화된 입력(680E)에 응답하여, 자동화된 어시스턴트(110)는 3P 에이전트(3P4)와의 대화를 종료하면서 3P 에이전트(3P5)를 개입시켜 호출한다. 그 다음, 3P 에이전트(3P5)로부터의 응답 컨텐츠에 기초하여 출력(682E)이 제공된다. 3P 에이전트(3P5)를 호출할 때, 자동화된 어시스턴트(110)는 발화된 입력(680B 및 680D)에 기초하여 결정된 파라미터들에 대한 값을 제공한다. 따라서, 3P 에이전트(3P5)는 3P 에이전트(3P4)에 의해 주도된 대화 동안에 결정된 파라미터("차량 크기")에 대한 값("큰 차")을 고려한 응답 컨텐츠를 생성할 수 있다. 이는 사용자 경험이 향상시키고, (예: 3P 에이전트(3P5)가 "차량 크기" 파라미터에 대한 값을 요구하는 응답 컨텐츠를 생성해야만 하는 경우 소비될 수 있는) 계산 리소스를 줄일 수 있다.
도 7은 다른 클라이언트 디바이스(706) 및 클라이언트 디바이스(706)의 디스플레이 스크린(740)을 도시한다. 클라이언트 디바이스(706)는 자동화된 어시스턴트(110)를 포함하거나 및/또는 그와 통신할 수 있다. 디스플레이 스크린(740)은 사용자가 가상 키보드를 통해 사용자 입력을 생성하기 위해 선택할 수 있는 회답 인터페이스 엘리먼트(788) 및 사용자가 마이크로폰을 통해 사용자 입력을 생성하기 위해 선택할 수 있는 음성 회답 인터페이스 엘리먼트(789)를 포함한다. 일부 구현예들에서, 사용자는 음성 회답 인터페이스 엘리먼트(789)의 선택 없이도 마이크로폰을 통해 사용자 입력을 생성할 수 있다. 예를 들면, 대화 세션 동안에, 사용자가 음성 회답 인터페이스 엘리먼트(789)를 선택해야 하는 필요를 제거하기 위해 마이크로폰을 통해 청각적 사용자 인터페이스 입력에 대한 능동적 모니터링이 발생할 수 있다. 상기 구현예들 중 일부 및/또는 다른 구현예들에서, 음성 회답 인터페이스 엘리먼트(789)는 생략될 수 있다. 추가로, 일부 구현예들에서, 회답 인터페이스 엘리먼트(788)는 추가적으로 및/또는 대안적으로 생략될 수 있다(예를 들어, 사용자는 청각적 사용자 인터페이스 입력만 제공할 수 있다). 또한, 디스플레이 스크린(740)은 클라이언트 디바이스(710)로 하여금 하나 이상의 액션들을 수행하게 하기 위해 사용자와 인터렉션할 수 있는 시스템 인터페이스 엘리먼트들(781, 782, 783)을 포함한다.
도 7에서, 대화는 도 4의 대화와 유사하고, 도 4에서와 같이 공통 자동화된 어시스턴트 인터페이스를 통해 발생한다(도 4와는 다른 인터페이스임에도 불구하고). 그러나, 도 7은 상이한 인터페이스들이 사용될 때 및/또는 상이한 사용자 인터페이스 입력 디바이스들이 사용가능할 때 인터렉션들이 어떻게 달라질 수 있는지에 대한 몇 가지 예를 도시한다.
도 7에서, 사용자는 "오늘 밤 영화 A에 대한 성인용 티켓 2장 구입해"의 타이핑된 또는 발화된 입력(780A)을 제공한다. 입력에 기초하여, 자동화된 어시스턴트(110)는 "영화 티켓 구입"의 의도된 액션을 결정할 수 있다. 자동화된 어시스턴트(110)는 "성인 티켓의 수"의 파라미터에 "2"의 값 그리고 "영화 이름"의 파라미터에 대해 "영화 A"의 값(또는 연관된 식별자)을 더 결정할 수 있다.
자동 어시스턴트(110)는 "영화 티켓 구입" 의도된 액션에 대해 정의된 "극장 위치"의 추가적 필수 파라미터가 입력(780A)에 의해 특정되지 않음을 더 결정할 수 있다. 이에 응답하여, 자동화된 어시스턴트(110)는 필수 파라미터에 대한 값을 요구하기 위해 프롬프트(782A)를 생성하여 제공할 수 있다. 도 7에서, 사용자는 추가 음성 또는 타이핑된 텍스트 입력을 제공하지 않고 밑줄 친 "여기" 용어 중 하나를 "탭"하여 대응하는 극장을 선택할 수 있다. 그러나 사용자는 대신 "Baxter Avenue"의 발화된 입력 또는 타이핑된 입력(780B)를 제공한다.
입력(780B)에 기초하여, 자동화된 어시스턴트(110)는 "극장 위치"의 필수 파라 미터의 값으로서 "Baxter Avenue Theatre"(또는 관련된 식별자)를 결정할 수 있다. 자동화된 어시스턴트(110)는 2개의 3P 에이전트("3P1"및 "3P2")가 "2", "영화 A" 및 "Baxter Avenue Theatre"의 값으로 "영화 티켓 구입" 의도된 액션을 수행할 수 있는지를 더 결정할 수 있다.
자동화된 어시스턴트(110)는 선택된 3P 에이전트들을 식별하는 프롬프트(782B)뿐만 아니라 3P 에이전트들 각각에 대한 추가적 불특정 파라미터(가격)에 대한 값을 생성하여 제공한다. 도 7에서, 사용자는 밑줄이 그어진 "3P1"을 "탭"하여 해당 에이전트를 선택하거나 밑줄이 그어진 "3P2"를 "탭"하여 해당 에이전트를 선택할 수 있다. 또한 사용자는 선택적으로 말 또는 타이핑 입력을 제공할 수 있다.
도 7의 예에서, 사용자는 밑줄친 "3P2"를 탭한다. 응답 "탭" 입력에 대한 응답으로, 자동화된 어시스턴트는 3P 에이전트(3P2)를 선택한다. 그 다음 자동화된 어시스턴트(110)는 파라미터들에 대한 결정된 값들과 함께 3P 에이전트(3P2)에 호출 요청을 송신할 수 있다.
그 다음, 3P 에이전트(3P2)는 대화를 효과적으로 또는 실제로 인계하고, 프롬프트(782C)는 3P 에이전트(3P2)에 의해 생성된 응답 컨텐츠에 기초하여 제공된다. 프롬프트(782C)는 3P 에이전트(3P2)에 의해 직접 및/또는 자동화된 어시스턴트(110)를 통해 제공될 수 있다. 대화는 도 7의 줄임표에 의해 표시된 바와 같이 계속될 수 있다.
도 8은 본 명세서에 기술된 기법들의 하나 이상의 양태들을 수행하기 위해 선택적으로 활용될 수 있는 예시적 컴퓨팅 디바이스(810)의 블록도이다. 일부 구현예들에서, 하나 이상의 디바이스(106), 자동화된 어시스턴트(110), 3P 에이전트 및/또는 다른 컴포넌트(들)은 예시적 컴퓨팅 디바이스(810) 중 하나 이상의 컴포넌트들을 포함할 수 있다.
컴퓨팅 디바이스(810)는 일반적으로 적어도 하나의 프로세서(814)를 포함하며, 버스 서브시스템(812)을 통해 다수의 주변 디바이스들과 통신한다. 이들 주변 디바이스들은 예를 들면, 메모리 서브시스템(825) 및 파일 저장 서브시스템(826)을 포함하는 저장 서브시스템(824), 사용자 인터페이스 출력 디바이스(820), 사용자 인터페이스 입력 디바이스(822) 및 네트워크 인터페이스 서브시스템(816)을 포함할 수 있다. 입력 및 출력 디바이스는 컴퓨팅 디바이스(810)와 사용자 인터렉션을 하게 한다. 네트워크 인터페이스 서브시스템(816)은 외부 네트워크에 대한 인터페이스를 제공하며, 다른 컴퓨팅 디바이스들의 대응하는 인터페이스 디바이스들과 연결된다.
사용자 인터페이스 입력 디바이스(822)는 키보드, 마우스, 트랙볼, 터치패드 또는 그래픽 태블릿, 스캐너, 디스플레이에 통합된 터치스크린과 같은 포인팅 디바이스, 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 디바이스 및/또는 다른 유형의 입력 디바이스를 포함한다. 일반적으로, 용어 "입력 디바이스"의 사용은 정보를 컴퓨팅 디바이스(810) 또는 통신 네트워크에 입력하기 위한 모든 가능한 유형의 디바이스들과 방식들을 포함하도록 의도된다.
사용자 인터페이스 출력 디바이스(820)는 디스플레이 서브시스템, 프린터, 팩스 기계 또는 오디오 출력 디바이스와 같은 비-시각적 디스플레이를 포함할 수 있다. 디스플레이 서브시스템은 CRT, LCD와 같은 평면 패널 디바이스, 프로젝션 디바이스 또는 시각적 이미지를 생성하기 위한 일부 기타 메커니즘을 포함할 수 있다. 또한, 디스플레이 서브시스템은 오디오 출력 디바이스와 같은 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 정보를 컴퓨팅 디바이스(810)로부터 사용자에게 또는 다른 기계 또는 컴퓨팅 디바이스에 정보를 출력하기 위한 모든 가능한 유형의 디바이스들과 방식들을 포함하도록 의도된다.
저장 서브시스템(824)은 본 명세서에 기술된 일부 또는 전부의 모듈들의 기능을 제공하기 위한 프로그래밍 및 데이터 구조를 저장한다. 예를 들면, 저장 서브시스템(824)은 도 2a, 2b 및/또는 3의 방법들의 선택된 양태들을 수행하기 위한 로직을 포함할 수 있다.
이들 소프트웨어 모듈들은 일반적으로 프로세서(814) 단독으로 또는 다른 프로세서들과의 조합에 의해 실행된다. 저장 서브시스템(824)에서 사용된 메모리(825)는 프로그램 실행 중에 명령어들 및 데이터의 저장을 위한 메인 RAM(830) 및 고정된 명령어들이 저장되는 ROM(832)을 포함하는 다수의 메모리들을 포함할 수 있다. 파일 저장 서브시스템(826)은 프로그램 및 데이터 파일에 대한 영구적 저장을 제공할 수 있고, 하드 디스크 드라이브, 연관된 이동식 매체와 함께인 플로피 디스크 드라이브, CD-ROM 드라이브, 광학 드라이브 또는 이동식 매체 카트리지들을 포함할 수 있다. 특정 구현예들의 기능을 구현하는 모듈들은 파일 저장 서브시스템(826)에 의해 저장 서브시스템(824)에 또는 프로세서(들)(814)에 의해 엑세스가능한 다른 기계에 저장될 수 있다.
버스 서브시스템(812)은 의도된 대로 컴퓨팅 디바이스(810)의 다양한 컴포넌트들 및 서브시스템들이 서로 통신하게 하기 위한 메커니즘을 제공한다. 버스 서브시스템(812)이 개략적으로 단일의 버스로 도시되었지만, 버스 서브시스템의 대안적 구현예들은 다수의 버스들을 사용할 수 있다.
컴퓨팅 디바이스(810)는 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서퍼팜 또는 임의의 기타 데이터 프로세싱 시스템 또는 컴퓨팅 디바이스를 포함하는 다양한 유형들일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 8에 도시된 컴퓨팅 디바이스(810)는 일부 구현예들을 설명하기 위한 목적의 특정 예로서 만 의도된다. 컴퓨팅 디바이스(810)의 많은 다른 구성들이 도 8에 도시된 컴퓨팅 디바이스보다 많거나 적은 컴포넌트들을 가질 수 있다.
본 명세서에서 논의된 특정 구현예들이 사용자에 관한 개인 정보(예를 들어, 다른 전자 통신으로부터 추출된 사용자 데이터, 사용자의 소셜 네트워크에 관한 정보, 사용자의 위치, 사용자의 시간, 사용자의 생체 정보 및 사용자의 활동 및 인구통계적 정보)를 수집하거나 사용하는 상황들에서, 사용자에게 정보가 수집될지 여부, 개인정보가 저장될지 여부, 개인 정보가 사용될지 여부 및 사용자에 관한 정보가 어떻게 수집되고 저장되고 사용될지를 제어하기 위한 하나 이상의 기회들이 제공된다. 즉, 본 명세서에서 논의된 시스템들 및 방법들은 관련된 사용자로부터 명시적 인가를 수신함에 따라서만 사용자 개인 정보를 수집하고 저장하고 및/또는 사용한다. 예를 들면, 프로그램 또는 구성들이 그 특정한 사용자 또는 프로그램 또는 구성과 관련된 다른 사용자들에 관한 사용자 정보를 수집할지 여부에 관한 제어권이 사용자에게 제공된다. 개인정보가 수집될 각 사용자에게 그 사용자에 관한 정보 수집에 대해 제어하게 하고, 정보가 수집될지 여부에 관한 그리고 정보의 어떤 부분이 수집될지 허가 또는 인가를 제공하기 위한 하나 이상의 옵션들이 제시된다. 예를 들면, 통신 네트워크를 통해 사용자들에게 하나 이상의 상기 제어 옵션들이 제공될 수 있다. 추가로, 특정 데이터는 그것이 저장되거나 사용되기 전에 하나 이상의 다양한 방식들로 취급되어, 개인적으로 식별가능한 정보는 제거된다. 일 예시로서, 사용자의 신원은 개인적으로 식별가능한 정보가 결정될 수 없도록 취급될 수 있다. 다른 예시로서, 사용자의 지리적 위치는 넓은 지역으로 일반화되어 사용자의 특정한 위치가 결정될 수 없도록 한다.
몇몇 구현예가 본 명세서에서 기술되고 도시되었지만, 기능을 수행하고 및/또는 결과 및/또는 본 명세서에 기술된 하나 이상의 이점을 획득하기 위한 다양한 다른 수단들 및/또는 구조들가 활용될 수 있으며, 그러한 변형들 및/또는 수정들은 본 명세서에서 기술된 구현예들의 범위 내에 있는 것으로 간주된다. 보다 일반적으로, 본 명세서에 기술된 모든 파라미터, 치수, 재료 및 구성은 예시적인 것으로 의도되었으며, 실제 파라미터, 치수, 재료 및/또는 구성은 교시를 사용되는 특정 어플리케이션 또는 어플리케이션들에 의존할 것이다. 통상의 기술자는 일상적인 실험만을 사용하여 본 명세서에 기술된 특정 구현예들에 대한 많은 균등물들을 인식할 수 있거나 또는 확인할 수 있을 것이다. 따라서, 전술한 구현예들은 단지 예일 뿐이며, 첨부된 청구범위 및 그 균등물의 범위 내에서 구현은 구체적으로 기술되고 청구된 것과 다르게도 실시 될 수 있음을 이해해야 한다. 본 개시의 구현은 본 명세서에 기술된 각각의 개별적인 구성, 시스템, 물품, 재료, 키트 및/또는 방법에 관한 것이다. 또한 구성, 시스템, 물품, 재료, 키트 및/또는 방법이 상호 불일치하지 않는다면, 그러한 두 개 이상의 구성, 시스템, 물품, 재료, 키트 및/또는 방법의 모든 조합이 본 발명의 범위 내에 포함된다.
Claims (22)
- 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
사용자와 자동화된 어시스턴트 간의 동적 대화의 일부로서 자동화된 어시스턴트를 향하는 사용자의 자연어 입력을 수신하는 단계, 상기 자연어 입력은 자유 형식이고, 사용자 인터페이스 입력 디바이스를 통해 사용자에 의해 제공된 사용자 인터페이스 입력에 기초하며;
상기 자연어 입력이 의도된 액션을 표시한다고 결정함에 기초하여 의도된 액션을 선택하는 단계, 상기 의도된 액션은 상기 자동화된 어시스턴트를 통해 사용가능하고 그리고 다수의 서비스 섹터들을 포괄하는 잠재적 의도된 액션들의 그룹으로부터 선택되며;
상기 의도된 액션과 연관하여 저장된 적어도 하나의 필수 파라미터가 상기 자연어 입력에서 특정되지 않음을 결정하는 단계;
상기 적어도 하나의 필수 파라미터가 상기 자연어 입력에서 특정되지 않음을 결정하는 것에 응답하여, 상기 적어도 하나의 필수 파라미터에 기초한 프롬프트를 생성하는 단계;
상기 동적 대화의 일부로서 그리고 상기 자연어 입력에 대한 응답으로서 상기 프롬프트를 제공하는 단계, 상기 프롬프트는 사용자 인터페이스 출력 디바이스를 통해 상기 사용자에게 제시하기 위해 제공되며;
상기 프롬프트에 응답하여 상기 동적 대화의 일부로서 상기 사용자에 의해 제공되는 추가적 자연어 입력을 수신하는 단계, 상기 추가적인 자연어 입력은 자유 형식이며;
상기 추가적 자연어 입력에 기초하여 상기 필수 파라미터에 대한 값을 결정하는 단계;
상기 자연어 입력에 의해 표시된 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계;
상기 필수 파라미터에 대한 값을 포함하는 서드 파티 호출 요청을 전송하는 단계, 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 상기 특정한 서드 파티 에이전트에 전송하는 것이고, 상기 서드 파티 에이전트들의 그룹 중 임의의 다른 서드 파티 에이전트들에 대한 임의의 다른 서드 파티 호출 요청 전송없이 발생하며;
상기 서드 파티 호출 요청을 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터 응답 컨텐츠를 수신하는 단계, 상기 수신은 상기 하나 이상의 네트워크 인터페이스들을 통해 수신되며; 및
상기 응답 컨텐츠에 기초한 출력을 상기 동적 대화의 일부로서 상기 사용자에게 제시하기 위해 제공하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 1에 있어서,
상기 서드 파티 에이전트의 상기 응답 컨텐츠에 기초한 상기 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 및
상기 하나 이상의 네트워크 인터페이스들을 통해 상기 서드 파티 에이전트에, 상기 추가 입력에 기초한 컨텐츠를 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 청구항 2에 있어서, 상기 추가 입력은 음성 입력이고,
상기 음성 입력을 텍스트로 변환하는 단계;
상기 컨텐츠는 상기 텍스트의 적어도 일부를 포함하는 것을 특징으로 하는 방법. - 청구항 3에 있어서,
상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 컨텐츠를 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터의 추가 응답 컨텐츠를 수신하는 단계; 및
상기 추가 응답 컨텐츠에 기초한 추가 출력을 상기 동적 대화의 일부로서 상기 사용자에게 제시하기 위해 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 임의의 선행하는 청구항에 있어서,
상기 서드 파티 에이전트의 상기 응답 컨텐츠에 기초한 상기 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계;
상기 추가 입력이 상기 서드 파티 에이전트와의 인터렉션을 중단하기 원한다고 표시하는지 여부를 결정하는 단계; 및
상기 추가 입력이 상기 서드 파티 에이전트와의 인터렉션을 중단하기 원한다고 표시하지 않음을 결정하는 것에 응답하여:
상기 하나 이상의 네트워크 인터페이스들을 통해 상기 서드 파티 에이전트에, 상기 추가 입력에 기초한 컨텐츠를 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 청구항 1 내지 4 중 어느 한 항에 있어서,
상기 출력에 대한 응답으로 또는 상기 서드 파티 에이전트에 의해 제공된 컨텐츠에 기초한 추가 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계;
상기 추가 입력이 다른 서드 파티 에이전트와의 인터렉션을 원한다고 표시함을 결정하는 단계; 및
상기 추가 입력이 다른 서드 파티 에이전트와의 인터렉션을 원한다고 표시함을 결정하는 것에 응답하여:
상기 서드 파티 에이전트들의 그룹의 대안적 서드 파티 에이전트에, 상기 필수 파라미터에 대한 값을 포함하는 추가적 서드 파티 호출 요청을 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 청구항 6에 있어서,
상기 동적 대화에서 상기 서드 파티 에이전트의 관여 동안의 사용자 입력에 기초하여 상기 의도된 액션의 추가적 파라미터에 대한 추가적 값을 결정하는 단계; 및
상기 추가적 파라미터에 대한 추가적 값을 상기 추가적 서드 파티 호출 요청에 포함시키는 단계를 더 포함하는 것을 특징으로 하는 방법. - 임의의 선행하는 청구항에 있어서,
상기 자연어 입력 또는 상기 추가적 자연어 입력에 기초하여 상기 의도된 액션의 비-요구 선택적 파라미터에 대한 추가적 값을 결정하는 단계;
상기 추가적 파라미터에 대한 추가적 값을 상기 서드 파티 호출 요청에 포함시키는 단계를 더 포함하는 것을 특징으로 하는 방법. - 청구항 8에 있어서, 상기 서드 파티 에이전트들의 그룹으로부터 상기 특정한 서드 파티 에이전트를 선택하는 단계는:
상기 서드 파티 에이전트에 대해, 상기 필수 파라미터 및 상기 추가적 파라미터에 대해 정의된 대응하는 값들에 따르는, 상기 값 및 상기 추가적 값에 기초하여 상기 특정한 서드 파티 에이전트를 선택하는 것을 포함하는 것을 특징으로 하는 방법. - 청구항 9에 있어서, 상기 서드 파티 에이전트들의 그룹으로부터 상기 특정한 서드 파티 에이전트를 선택하는 단계는:
상기 추가적 서드 파티 에이전트에 대해, 상기 필수 파라미터 및 상기 추가적 파라미터에 대해 정의된 대응하는 값들에 따르지 않는, 상기 값 및 추가적 값에 기초하여 상기 선택으로부터 추가적 서드 파티 에이전트를 제거하는 것을 포함하며, 상기 추가적 서드 파티 에이전트는 상기 서드 파티 에이전트들의 그룹에 있는 것을 특징으로 하는 방법. - 청구항 9에 있어서, 상기 특정한 에이전트를 선택하는 단계는 상기 사용자에게 상기 사용자가 상기 서드 파티 에이전트와 상기 그룹 중 하나 이상의 추가적 서드 파티 에이전트들 사이에서 선택하도록 명시적으로 요구하는 출력을 제공하지 않고 발생하는 것을 특징으로 하는 방법.
- 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
상기 하나 이상의 프로세서들에 의해 구현된 사용자와 자동화된 어시스턴트 간의 동적 대화의 일부로서:
상기 동적 대화의 일부로서 자동화된 어시스턴트를 향하는 사용자의 자연어 입력을 수신하는 단계, 상기 자연어 입력은 자유 형식이고, 사용자 인터페이스 입력 디바이스를 통해 사용자에 의해 제공된 사용자 인터페이스 입력에 기초하며;
상기 자연어 입력이 의도된 액션을 표시한다고 결정함에 기초하여 의도된 액션을 선택하는 단계, 상기 의도된 액션은 다수의 서비스 섹터들을 포괄하는 잠재적 의도된 액션들의 그룹으로부터 선택되며;
상기 자연어 입력에 의해 표시된 상기 의도된 액션을 각각 수행할 수 있고, 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹을 식별하는 단계;
상기 의도된 액션과 연관하여 저장되고 상기 자연어 입력에서 특정되지 않은 파라미터에 기초한 프롬프트를 생성하는 단계, 상기 프롬프트는 상기 그룹 중 임의의 서드 파티 에이전트를 명시적으로 식별하지 않으며;
상기 동적 대화의 일부로서 그리고 상기 자연어 입력에 대한 응답으로서 상기 프롬프트를 제공하는 단계, 상기 프롬프트는 사용자 인터페이스 출력 디바이스를 통해 상기 사용자에게 제시하기 위해 제공되며;
상기 프롬프트에 응답하여 상기 동적 대화의 일부로서 상기 사용자에 의해 제공되는 추가적 자연어 입력을 수신하는 단계, 상기 추가적인 자연어 입력은 자유 형식이며;
상기 추가적 자연어 입력에 기초하여 상기 파라미터에 대한 값을 결정하는 단계;
서브그룹을 형성하기 위해 상기 서드 파티 에이전트들의 그룹으로부터 서드 파티 에이전트를 제거하는 단계, 상기 제거는 상기 서드 파티 에이전트에 대한 상기 파라미터에 대해 정의된 대응하는 값에 따르지 않는 값에 기초하며;
상기 서브그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계; 및
상기 파라미터에 대한 값을 포함하는 서드 파티 호출 요청을 전송하는 단계를 포함하며, 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 상기 선택된 특정한 서드 파티 에이전트에게만 전송되는 것을 특징으로 하는 방법. - 청구항 12에 있어서,
상기 서드 파티 호출 요청을 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터 응답 컨텐츠를 수신하는 단계, 상기 수신은 상기 하나 이상의 네트워크 인터페이스들을 통해 수신되며; 및
상기 응답 컨텐츠에 기초한 출력을 상기 동적 대화의 일부로서 상기 사용자에게 제시하기 위해 제공하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 13에 있어서,
상기 서드 파티 에이전트의 상기 응답 컨텐츠에 기초한 상기 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 및
상기 하나 이상의 네트워크 인터페이스들을 통해 상기 서드 파티 에이전트에, 상기 추가 입력에 기초한 컨텐츠를 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 청구항 14에 있어서, 상기 추가 입력은 음성 입력이고,
상기 음성 입력을 텍스트로 변환하는 단계;
상기 컨텐츠는 상기 텍스트의 적어도 일부를 포함하는 것을 특징으로 하는 방법. - 청구항 13 내지 15 중 어느 한 항에 있어서,
상기 출력에 대한 응답으로 또는 상기 서드 파티 에이전트에 의해 제공된 컨텐츠에 기초한 추가 출력에 대한 응답으로 상기 사용자에 의해 제공된 추가 입력을 수신하는 단계; 상기 추가 입력이 다른 서드 파티 에이전트와의 인터렉션을 원한다고 표시함을 결정하는 단계; 및
상기 추가 입력이 다른 서드 파티 에이전트와의 인터렉션을 원한다고 표시함을 결정하는 것에 응답하여:
상기 서드 파티 에이전트들의 그룹의 대안적 서드 파티 에이전트에, 상기 필수 파라미터에 대한 값을 포함하는 추가적 서드 파티 호출 요청을 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
하나 이상의 네트워크 인터페이스들을 통해, 사용자의 클라이언트 디바이스에 의해 전송된 제1 자연어 입력을 수신하는 단계, 상기 제1 자연어 입력은 자유 형식이고, 상기 클라이언트 디바이스에 의해 구현되는 자동화된 어시스턴트 인터페이스로 향하며;
상기 제1 자연어 입력이 제1 서비스 섹터를 향하는 제1 의도된 액션을 표시한다고 결정하는 단계;
상기 제1 의도된 액션과 연관하여 저장된 모든 제1 필수 파라미터들에 대한 값들을 분석하기 위해, 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 클라이언트 디바이스의 상기 자동화된 어시스턴트 인터페이스를 통해 상기 사용자와 인터렉션하는 단계;
상기 제1 자연어 입력에 의해 표시된 상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계; 및 상기 제1 필수 파라미터들에 대한 값들을 분석하는 것에 후속하여:
상기 제1 필수 파라미터들에 대한 상기 분석된 값들에 기초하여 상기 서드 파티 에이전트를 호출하는 단계, 및
상기 자동화된 어시스턴트 인터페이스를 통해 발생하고, 상기 서드 파티 에이전트에 의해 이끌어지는 상기 클라이언트 디바이스와 상기 서드 파티 에이전트 간의 인터렉션들을 지원하는 단계를 포함하는 것을 특징으로 하는 방법. - 청구항 17에 있어서,
상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 사용자의 클라이언트 디바이스로부터 제2 자연어 입력을 수신하는 단계, 상기 제2 자연어 입력은 자유 형식이고, 상기 자동화된 어시스턴트 인터페이스로 향하며;
상기 자유 형식의 제2 자연어 입력이 제2 서비스 섹터를 향하는 제2 의도된 액션을 표시한다고 결정하는 단계, 상기 제2 서비스 섹터는 상기 제1 서비스 섹터와 서로 다르며;
상기 제2 의도된 액션과 연관하여 저장된 모든 제2 필수 파라미터들에 대한 제2 값들을 분석하기 위해, 상기 하나 이상의 네트워크 인터페이스들을 통해, 상기 클라이언트 디바이스의 상기 자동화된 어시스턴트 인터페이스를 통해 상기 사용자와 인터렉션하는 단계; 상기 자연어 입력에 의해 표시된 상기 제2 의도된 액션을 각각 수행할 수 있는 추가적 서드 파티 에이전트들의 그룹으로부터 추가적 특정한 서드 파티 에이전트를 선택하는 단계, 상기 추가적 서드 파티 에이전트들의 그룹은 상기 서드 파티 에이전트들의 그룹과 서로 다르며; 및
상기 제2 필수 파라미터들에 대한 제2 값들을 분석하는 것에 후속하여:
상기 제2 필수 파라미터들에 대한 상기 분석된 제2 값들에 기초하여 상기 추가적 서드 파티 에이전트를 호출하는 단계, 및
상기 자동화된 어시스턴트 인터페이스를 통해 발생하고, 상기 추가적 서드 파티 에이전트에 의해 이끌어지는 상기 클라이언트 디바이스와 상기 추가적 서드 파티 에이전트 간의 인터렉션들을 지원하는 단계를 포함하는 것을 특징으로 하는 방법. - 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
클라이언트 디바이스를 통해 사용자에 의해 제공된 초기 음성 입력을 수신하는 단계;
상기 초기 음성 입력을 초기 텍스트로 변환하기 위해 음성-텍스트 변환을 수행하는 단계;
상기 초기 텍스트에 기초하여 의도된 액션을 결정하는 단계;
상기 의도된 액션을 위해 필수인 것으로 저장된 필수 파라미터를 식별하는 단계;
상기 초기 텍스트가 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정하는 단계;
상기 초기 텍스트가 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정함에 응답하여:
상기 필수 파라미터에 기초하여 자연어 프롬프트를 생성하는 단계, 및
상기 초기 음성 입력에 대한 응답으로서 상기 자연어 프롬프트를 제공하는 단계, 상기 프롬프트는 상기 클라이언트 디바이스의 사용자 인터페이스 출력 디바이스를 통해 상기 사용자에게 제시하기 위해 제공되며;
상기 자연어 프롬프트를 제공하는 것에 응답하여 상기 사용자에 의해 제공된 추가적 자연어 입력을 수신하는 단계;
상기 추가적 자연어 입력에 기초하여 상기 파라미터에 대한 값을 결정하는 단계;
상기 의도된 액션을 각각 수행할 수 있는 서드 파티 에이전트들의 그룹으로부터 특정한 서드 파티 에이전트를 선택하는 단계;
상기 필수 파라미터에 대한 값을 포함하는 서드 파티 호출 요청을 전송하는 단계, 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 상기 특정한 서드 파티 에이전트에게 전송되며;
상기 의도된 액션 및 상기 값을 전송하는 것에 응답하여, 상기 서드 파티 에이전트로부터 응답 컨텐츠를 수신하는 단계, 상기 수신은 상기 하나 이상의 네트워크 인터페이스들을 통해 수신되며;
상기 응답 컨텐츠에 기초한 출력을 상기 사용자에게 제시하기 위해 제공하는 단계;
상기 출력을 제공하는 것에 응답하여 상기 사용자에 의해 제공된 추가적 자연어 입력을 수신하는 단계;
상기 추가적 자연어 입력을 추가 텍스트로 변환하기 위해 추가적 음성-텍스트 변환을 수행하는 단계; 및
상기 추가 텍스트를 상기 특정한 서드 파티 에이전트에 전송하는 단계를 포함하는 것을 특징으로 하는 방법. - 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
하나 이상의 네트워크 인터페이스들을 통해, 클라이언트 디바이스에 의해 전송된 입력을 수신하는 단계, 상기 입력은 자유 형식 자연어 사용자 입력이며;
상기 입력에 기초하여 의도된 액션을 결정하는 단계;
상기 의도된 액션을 위해 필수인 것으로 저장된 필수 파라미터를 식별하는 단계;
상기 입력이 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정하는 단계;
상기 초기 텍스트가 상기 필수 파라미터에 대한 임의의 값의 명세가 부족하다고 결정함에 응답하여:
상기 필수 파라미터에 기초하고, 상기 의도된 액션에 대해 선택적인 것으로서 저장된 선택적 파라미터에 대한 입력을 요구하지 않는 프롬프트를 생성하는 단계, 및
상기 입력에 대한 응답으로서 상기 자연어 프롬프트를 상기 클라이언트 디바이스에 전송하는 단계;
상기 프롬프트에 응답하여, 상기 하나 이상의 네트워크 인터페이스들을 통해, 클라이언트 디바이스에 의해 전송된 추가적 입력을 수신하는 단계, 상기 추가적 입력은 자유 형식 자연어 사용자 입력이며;
상기 추가적 자연어 입력에 기초하여 상기 파라미터에 대한 값을 결정하는 단계;
상기 추가적 자연어 입력에 기초하여 상기 선택적 파라미터에 대한 추가적 값을 결정하는 단계;
상기 값 및 상기 추가적 값 둘 모두에 기초하여 상기 의도된 액션을 수행할 수 있는 특정한 서드 파티 에이전트를 선택하는 단계; 및
상기 값 및 상기 추가적 값 둘 모두를 포함하는 서드 파티 호출 요청을 전송하는 단계를 포함하며, 상기 전송은 하나 이상의 네트워크 인터페이스들을 통해 상기 특정한 서드 파티 에이전트에게 전송되는 것을 특징으로 하는 방법. - 청구항 1 내지 청구항 20 중 어느 한 항의 방법을 수행하도록 구성된 장치.
- 명령어들을 포함하는 컴퓨터 프로그램으로서, 상기 명령어들은 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치로 하여금 청구항 1 내지 20 중 어느 한 항의 방법을 수행하게 하는 것을 특징으로 하는 컴퓨터 프로그램.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020227022889A KR102475719B1 (ko) | 2016-12-30 | 2017-09-27 | 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/394,872 US10224031B2 (en) | 2016-12-30 | 2016-12-30 | Generating and transmitting invocation request to appropriate third-party agent |
US15/394,872 | 2016-12-30 | ||
PCT/US2017/053832 WO2018125345A1 (en) | 2016-12-30 | 2017-09-27 | Generating and transmitting invocation request to appropriate third-party agent |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227022889A Division KR102475719B1 (ko) | 2016-12-30 | 2017-09-27 | 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190097267A true KR20190097267A (ko) | 2019-08-20 |
KR102418511B1 KR102418511B1 (ko) | 2022-07-07 |
Family
ID=60083475
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227022889A KR102475719B1 (ko) | 2016-12-30 | 2017-09-27 | 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 |
KR1020197022111A KR102418511B1 (ko) | 2016-12-30 | 2017-09-27 | 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227022889A KR102475719B1 (ko) | 2016-12-30 | 2017-09-27 | 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송 |
Country Status (10)
Country | Link |
---|---|
US (5) | US10224031B2 (ko) |
EP (1) | EP3485393A1 (ko) |
JP (2) | JP6839288B2 (ko) |
KR (2) | KR102475719B1 (ko) |
CN (2) | CN108270843A (ko) |
DE (1) | DE202017105915U1 (ko) |
GB (1) | GB2558348A (ko) |
IE (1) | IE20170203A1 (ko) |
SG (1) | SG10201708062SA (ko) |
WO (1) | WO2018125345A1 (ko) |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10095470B2 (en) | 2016-02-22 | 2018-10-09 | Sonos, Inc. | Audio response playback |
US9811314B2 (en) | 2016-02-22 | 2017-11-07 | Sonos, Inc. | Metadata exchange involving a networked playback system and a networked microphone system |
US9947316B2 (en) | 2016-02-22 | 2018-04-17 | Sonos, Inc. | Voice control of a media playback system |
US9965247B2 (en) | 2016-02-22 | 2018-05-08 | Sonos, Inc. | Voice controlled media playback system based on user profile |
US10097919B2 (en) | 2016-02-22 | 2018-10-09 | Sonos, Inc. | Music service selection |
US10264030B2 (en) | 2016-02-22 | 2019-04-16 | Sonos, Inc. | Networked microphone device control |
US9978390B2 (en) | 2016-06-09 | 2018-05-22 | Sonos, Inc. | Dynamic player selection for audio signal processing |
US10134399B2 (en) | 2016-07-15 | 2018-11-20 | Sonos, Inc. | Contextualization of voice inputs |
US10115400B2 (en) | 2016-08-05 | 2018-10-30 | Sonos, Inc. | Multiple voice services |
US9942678B1 (en) | 2016-09-27 | 2018-04-10 | Sonos, Inc. | Audio playback settings for voice interaction |
US10181323B2 (en) | 2016-10-19 | 2019-01-15 | Sonos, Inc. | Arbitration-based voice recognition |
US10224031B2 (en) * | 2016-12-30 | 2019-03-05 | Google Llc | Generating and transmitting invocation request to appropriate third-party agent |
US11276395B1 (en) * | 2017-03-10 | 2022-03-15 | Amazon Technologies, Inc. | Voice-based parameter assignment for voice-capturing devices |
US10748531B2 (en) * | 2017-04-13 | 2020-08-18 | Harman International Industries, Incorporated | Management layer for multiple intelligent personal assistant services |
US10475449B2 (en) | 2017-08-07 | 2019-11-12 | Sonos, Inc. | Wake-word detection suppression |
US11004444B2 (en) * | 2017-09-08 | 2021-05-11 | Amazon Technologies, Inc. | Systems and methods for enhancing user experience by communicating transient errors |
US10048930B1 (en) | 2017-09-08 | 2018-08-14 | Sonos, Inc. | Dynamic computation of system response volume |
US10446165B2 (en) | 2017-09-27 | 2019-10-15 | Sonos, Inc. | Robust short-time fourier transform acoustic echo cancellation during audio playback |
US10051366B1 (en) | 2017-09-28 | 2018-08-14 | Sonos, Inc. | Three-dimensional beam forming with a microphone array |
US10621981B2 (en) | 2017-09-28 | 2020-04-14 | Sonos, Inc. | Tone interference cancellation |
US10482868B2 (en) | 2017-09-28 | 2019-11-19 | Sonos, Inc. | Multi-channel acoustic echo cancellation |
US10466962B2 (en) | 2017-09-29 | 2019-11-05 | Sonos, Inc. | Media playback system with voice assistance |
CN107704450B (zh) * | 2017-10-13 | 2020-12-04 | 威盛电子股份有限公司 | 自然语言识别设备以及自然语言识别方法 |
US11343614B2 (en) | 2018-01-31 | 2022-05-24 | Sonos, Inc. | Device designation of playback and network microphone device arrangements |
US10714084B2 (en) * | 2018-02-09 | 2020-07-14 | Accenture Global Solutions Limited | Artificial intelligence based service implementation |
KR102596436B1 (ko) * | 2018-02-20 | 2023-11-01 | 삼성전자주식회사 | 사용자 발화를 처리하는 시스템 및 그 시스템의 제어 방법 |
US11175880B2 (en) | 2018-05-10 | 2021-11-16 | Sonos, Inc. | Systems and methods for voice-assisted media content selection |
US10959029B2 (en) | 2018-05-25 | 2021-03-23 | Sonos, Inc. | Determining and adapting to changes in microphone performance of playback devices |
US10681460B2 (en) | 2018-06-28 | 2020-06-09 | Sonos, Inc. | Systems and methods for associating playback devices with voice assistant services |
WO2020040753A1 (en) * | 2018-08-21 | 2020-02-27 | Google Llc | Automated assistant invocation of second interactive module using supplemental data provided by first interactive module |
US11714955B2 (en) | 2018-08-22 | 2023-08-01 | Microstrategy Incorporated | Dynamic document annotations |
US11500655B2 (en) | 2018-08-22 | 2022-11-15 | Microstrategy Incorporated | Inline and contextual delivery of database content |
US11216292B2 (en) * | 2018-08-27 | 2022-01-04 | Google Llc | Adapting client application of feature phone based on experiment parameters |
US11076035B2 (en) | 2018-08-28 | 2021-07-27 | Sonos, Inc. | Do not disturb feature for audio notifications |
US10461710B1 (en) | 2018-08-28 | 2019-10-29 | Sonos, Inc. | Media playback system with maximum volume setting |
US10587430B1 (en) | 2018-09-14 | 2020-03-10 | Sonos, Inc. | Networked devices, systems, and methods for associating playback devices based on sound codes |
JP6887409B2 (ja) * | 2018-09-19 | 2021-06-16 | Kddi株式会社 | 情報提供システム及び情報提供方法 |
US11024331B2 (en) | 2018-09-21 | 2021-06-01 | Sonos, Inc. | Voice detection optimization using sound metadata |
US11100923B2 (en) | 2018-09-28 | 2021-08-24 | Sonos, Inc. | Systems and methods for selective wake word detection using neural network models |
US10692518B2 (en) | 2018-09-29 | 2020-06-23 | Sonos, Inc. | Linear filtering for noise-suppressed speech detection via multiple network microphone devices |
US11899519B2 (en) | 2018-10-23 | 2024-02-13 | Sonos, Inc. | Multiple stage network microphone device with reduced power consumption and processing load |
EP3654249A1 (en) | 2018-11-15 | 2020-05-20 | Snips | Dilated convolutions and gating for efficient keyword spotting |
US10839167B2 (en) * | 2018-12-04 | 2020-11-17 | Verizon Patent And Licensing Inc. | Systems and methods for dynamically expanding natural language processing agent capacity |
US11183183B2 (en) | 2018-12-07 | 2021-11-23 | Sonos, Inc. | Systems and methods of operating media playback systems having multiple voice assistant services |
US11132989B2 (en) | 2018-12-13 | 2021-09-28 | Sonos, Inc. | Networked microphone devices, systems, and methods of localized arbitration |
US10602268B1 (en) | 2018-12-20 | 2020-03-24 | Sonos, Inc. | Optimization of network microphone devices using noise classification |
US10395648B1 (en) * | 2019-02-06 | 2019-08-27 | Capital One Services, Llc | Analysis of a topic in a communication relative to a characteristic of the communication |
US11682390B2 (en) * | 2019-02-06 | 2023-06-20 | Microstrategy Incorporated | Interactive interface for analytics |
US11315556B2 (en) | 2019-02-08 | 2022-04-26 | Sonos, Inc. | Devices, systems, and methods for distributed voice processing by transmitting sound data associated with a wake word to an appropriate device for identification |
US10867604B2 (en) | 2019-02-08 | 2020-12-15 | Sonos, Inc. | Devices, systems, and methods for distributed voice processing |
JP2020144275A (ja) * | 2019-03-07 | 2020-09-10 | 本田技研工業株式会社 | エージェント装置、エージェント装置の制御方法、およびプログラム |
JP7280074B2 (ja) * | 2019-03-19 | 2023-05-23 | 本田技研工業株式会社 | エージェント装置、エージェント装置の制御方法、およびプログラム |
US11120794B2 (en) | 2019-05-03 | 2021-09-14 | Sonos, Inc. | Voice assistant persistence across multiple network microphone devices |
US11301479B2 (en) | 2019-05-30 | 2022-04-12 | International Business Machines Corporation | Service provider selection for queries sent to a digital assistant |
EP4270172A3 (en) * | 2019-06-05 | 2024-01-10 | Google LLC | Action validation for digital assistant-based applications |
US20200388280A1 (en) | 2019-06-05 | 2020-12-10 | Google Llc | Action validation for digital assistant-based applications |
US10586540B1 (en) | 2019-06-12 | 2020-03-10 | Sonos, Inc. | Network microphone device with command keyword conditioning |
US11361756B2 (en) | 2019-06-12 | 2022-06-14 | Sonos, Inc. | Conditional wake word eventing based on environment |
US11200894B2 (en) | 2019-06-12 | 2021-12-14 | Sonos, Inc. | Network microphone device with command keyword eventing |
US10629191B1 (en) * | 2019-06-16 | 2020-04-21 | Linc Global, Inc. | Methods and systems for deploying and managing scalable multi-service virtual assistant platform |
JP2021004950A (ja) * | 2019-06-25 | 2021-01-14 | 株式会社デンソーテン | 情報処理装置、情報処理システムおよび情報処理方法 |
US10871943B1 (en) | 2019-07-31 | 2020-12-22 | Sonos, Inc. | Noise classification for event detection |
US11138975B2 (en) | 2019-07-31 | 2021-10-05 | Sonos, Inc. | Locally distributed keyword detection |
KR20210016815A (ko) | 2019-08-05 | 2021-02-17 | 삼성전자주식회사 | 복수의 지능형 에이전트를 관리하는 전자 장치 및 그의 동작 방법 |
US11086991B2 (en) * | 2019-08-07 | 2021-08-10 | Advanced New Technologies Co., Ltd. | Method and system for active risk control based on intelligent interaction |
US11189286B2 (en) | 2019-10-22 | 2021-11-30 | Sonos, Inc. | VAS toggle based on device orientation |
CN110851723B (zh) * | 2019-11-14 | 2022-09-23 | 学利网络科技(上海)有限公司 | 一种基于大规模知识点标注结果的英语习题推荐方法 |
US11200900B2 (en) * | 2019-12-20 | 2021-12-14 | Sonos, Inc. | Offline voice control |
US11562740B2 (en) | 2020-01-07 | 2023-01-24 | Sonos, Inc. | Voice verification for media playback |
US11556307B2 (en) | 2020-01-31 | 2023-01-17 | Sonos, Inc. | Local voice data processing |
US11308958B2 (en) | 2020-02-07 | 2022-04-19 | Sonos, Inc. | Localized wakeword verification |
US11010129B1 (en) * | 2020-05-08 | 2021-05-18 | International Business Machines Corporation | Augmented reality user interface |
US11308962B2 (en) | 2020-05-20 | 2022-04-19 | Sonos, Inc. | Input detection windowing |
US11482224B2 (en) | 2020-05-20 | 2022-10-25 | Sonos, Inc. | Command keywords with input detection windowing |
US11893984B1 (en) * | 2020-06-22 | 2024-02-06 | Amazon Technologies, Inc. | Speech processing system |
US11698771B2 (en) | 2020-08-25 | 2023-07-11 | Sonos, Inc. | Vocal guidance engines for playback devices |
US11978437B1 (en) * | 2020-09-22 | 2024-05-07 | Amazon Technologies, Inc. | Natural language processing |
US11984123B2 (en) | 2020-11-12 | 2024-05-14 | Sonos, Inc. | Network device interaction by range |
US11984124B2 (en) * | 2020-11-13 | 2024-05-14 | Apple Inc. | Speculative task flow execution |
US20230169963A1 (en) | 2021-11-30 | 2023-06-01 | Google Llc | Selectively masking query content to provide to a secondary digital assistant |
US11790107B1 (en) | 2022-11-03 | 2023-10-17 | Vignet Incorporated | Data sharing platform for researchers conducting clinical trials |
US12007870B1 (en) | 2022-11-03 | 2024-06-11 | Vignet Incorporated | Monitoring and adjusting data collection from remote participants for health research |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130105042A (ko) * | 2012-03-16 | 2013-09-25 | 삼성전자주식회사 | 서드 파티 테스크 공급자들의 서비스 제공을 대행하는 협력적 퍼스널 어시스턴트 시스템 및 그에 따른 방법 |
US8849675B1 (en) * | 2013-12-18 | 2014-09-30 | Google Inc. | Suggested query constructor for voice actions |
KR20150013631A (ko) * | 2012-05-15 | 2015-02-05 | 애플 인크. | 제3자 서비스를 디지털 어시스턴트와 통합하기 위한 시스템 및 방법 |
US20160035353A1 (en) * | 2014-07-31 | 2016-02-04 | Google Inc. | Conversational agents |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9009046B1 (en) * | 2005-09-27 | 2015-04-14 | At&T Intellectual Property Ii, L.P. | System and method for disambiguating multiple intents in a natural language dialog system |
US9318108B2 (en) * | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US20080107256A1 (en) * | 2006-11-08 | 2008-05-08 | International Business Machines Corporation | Virtual contact center |
US8943394B2 (en) * | 2008-11-19 | 2015-01-27 | Robert Bosch Gmbh | System and method for interacting with live agents in an automated call center |
US10276170B2 (en) * | 2010-01-18 | 2019-04-30 | Apple Inc. | Intelligent automated assistant |
US9787725B2 (en) | 2011-01-21 | 2017-10-10 | Qualcomm Incorporated | User input back channel for wireless displays |
CA2747153A1 (en) | 2011-07-19 | 2013-01-19 | Suleman Kaheer | Natural language processing dialog system for obtaining goods, services or information |
CN103186522B (zh) | 2011-12-29 | 2018-01-26 | 富泰华工业(深圳)有限公司 | 电子设备及其自然语言分析方法 |
US9223537B2 (en) * | 2012-04-18 | 2015-12-29 | Next It Corporation | Conversation user interface |
US20150088523A1 (en) * | 2012-09-10 | 2015-03-26 | Google Inc. | Systems and Methods for Designing Voice Applications |
US20140250147A1 (en) * | 2013-03-01 | 2014-09-04 | Quixey, Inc. | Generating Search Results Containing State Links to Applications |
US9218819B1 (en) * | 2013-03-01 | 2015-12-22 | Google Inc. | Customizing actions based on contextual data and voice-based inputs |
US9875494B2 (en) | 2013-04-16 | 2018-01-23 | Sri International | Using intents to analyze and personalize a user's dialog experience with a virtual personal assistant |
KR101995660B1 (ko) | 2013-06-07 | 2019-07-02 | 애플 인크. | 지능형 자동 어시스턴트 |
US9823811B2 (en) * | 2013-12-31 | 2017-11-21 | Next It Corporation | Virtual assistant team identification |
US9837081B2 (en) * | 2014-12-30 | 2017-12-05 | Microsoft Technology Licensing, Llc | Discovering capabilities of third-party voice-enabled resources |
US20160274864A1 (en) * | 2015-03-20 | 2016-09-22 | Google Inc. | Systems and methods for enabling user voice interaction with a host computing device |
US9647968B2 (en) * | 2015-03-25 | 2017-05-09 | Pypestream Inc | Systems and methods for invoking chatbots in a channel based communication system |
US9578173B2 (en) * | 2015-06-05 | 2017-02-21 | Apple Inc. | Virtual assistant aided communication with 3rd party service in a communication session |
US20170286133A1 (en) | 2016-03-29 | 2017-10-05 | Microsoft Technology Licensing, Llc | One Step Task Completion |
US10224031B2 (en) * | 2016-12-30 | 2019-03-05 | Google Llc | Generating and transmitting invocation request to appropriate third-party agent |
-
2016
- 2016-12-30 US US15/394,872 patent/US10224031B2/en active Active
-
2017
- 2017-09-25 CN CN201710872445.2A patent/CN108270843A/zh active Pending
- 2017-09-25 CN CN202211213830.3A patent/CN115643307A/zh active Pending
- 2017-09-27 KR KR1020227022889A patent/KR102475719B1/ko active IP Right Grant
- 2017-09-27 IE IE20170203A patent/IE20170203A1/en unknown
- 2017-09-27 WO PCT/US2017/053832 patent/WO2018125345A1/en unknown
- 2017-09-27 EP EP17784122.8A patent/EP3485393A1/en not_active Withdrawn
- 2017-09-27 JP JP2019535827A patent/JP6839288B2/ja active Active
- 2017-09-27 KR KR1020197022111A patent/KR102418511B1/ko active IP Right Grant
- 2017-09-28 DE DE202017105915.4U patent/DE202017105915U1/de active Active
- 2017-09-28 GB GB1715691.0A patent/GB2558348A/en not_active Withdrawn
- 2017-09-29 SG SG10201708062SA patent/SG10201708062SA/en unknown
-
2019
- 2019-01-10 US US16/244,780 patent/US10714086B2/en active Active
-
2020
- 2020-05-19 US US16/877,799 patent/US10937427B2/en active Active
-
2021
- 2021-01-15 US US17/150,139 patent/US11562742B2/en active Active
- 2021-01-28 JP JP2021011873A patent/JP6963700B2/ja active Active
-
2023
- 2023-01-23 US US18/100,446 patent/US20230162735A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130105042A (ko) * | 2012-03-16 | 2013-09-25 | 삼성전자주식회사 | 서드 파티 테스크 공급자들의 서비스 제공을 대행하는 협력적 퍼스널 어시스턴트 시스템 및 그에 따른 방법 |
KR20150013631A (ko) * | 2012-05-15 | 2015-02-05 | 애플 인크. | 제3자 서비스를 디지털 어시스턴트와 통합하기 위한 시스템 및 방법 |
US8849675B1 (en) * | 2013-12-18 | 2014-09-30 | Google Inc. | Suggested query constructor for voice actions |
US20160035353A1 (en) * | 2014-07-31 | 2016-02-04 | Google Inc. | Conversational agents |
Also Published As
Publication number | Publication date |
---|---|
IE20170203A1 (en) | 2018-07-11 |
US20190147878A1 (en) | 2019-05-16 |
JP6839288B2 (ja) | 2021-03-03 |
EP3485393A1 (en) | 2019-05-22 |
JP2021099813A (ja) | 2021-07-01 |
CN115643307A (zh) | 2023-01-24 |
US10937427B2 (en) | 2021-03-02 |
US20210134294A1 (en) | 2021-05-06 |
CN108270843A (zh) | 2018-07-10 |
KR102418511B1 (ko) | 2022-07-07 |
US11562742B2 (en) | 2023-01-24 |
JP6963700B2 (ja) | 2021-11-10 |
GB201715691D0 (en) | 2017-11-15 |
KR20220100729A (ko) | 2022-07-15 |
GB2558348A (en) | 2018-07-11 |
US20230162735A1 (en) | 2023-05-25 |
WO2018125345A1 (en) | 2018-07-05 |
DE202017105915U1 (de) | 2018-01-10 |
SG10201708062SA (en) | 2018-07-30 |
US10714086B2 (en) | 2020-07-14 |
KR102475719B1 (ko) | 2022-12-08 |
US20200279564A1 (en) | 2020-09-03 |
US20180190274A1 (en) | 2018-07-05 |
US10224031B2 (en) | 2019-03-05 |
JP2020514794A (ja) | 2020-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6963700B2 (ja) | 適切なサードパーティーエージェントへの呼び出し要求を生成および伝送すること | |
KR102297394B1 (ko) | 적절한 에이전트의 자동화된 어시스턴트 호출 | |
US11626115B2 (en) | Voice to text conversion based on third-party agent content | |
KR20200011483A (ko) | 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |