KR102049036B1 - 선택적 센서 폴링 - Google Patents

선택적 센서 폴링 Download PDF

Info

Publication number
KR102049036B1
KR102049036B1 KR1020197016186A KR20197016186A KR102049036B1 KR 102049036 B1 KR102049036 B1 KR 102049036B1 KR 1020197016186 A KR1020197016186 A KR 1020197016186A KR 20197016186 A KR20197016186 A KR 20197016186A KR 102049036 B1 KR102049036 B1 KR 102049036B1
Authority
KR
South Korea
Prior art keywords
sensor
processing system
data processing
data
sensors
Prior art date
Application number
KR1020197016186A
Other languages
English (en)
Other versions
KR20190066087A (ko
Inventor
가우라브 브하야
로버트 스테츠
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20190066087A publication Critical patent/KR20190066087A/ko
Application granted granted Critical
Publication of KR102049036B1 publication Critical patent/KR102049036B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/103Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/68Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/683Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/1822Parsing for meaning understanding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0212Power saving arrangements in terminal devices managed by the network, e.g. network or access point is master and terminal is slave
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/088Word spotting
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/223Execution procedure of a spoken command
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Acoustics & Sound (AREA)
  • Artificial Intelligence (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Cardiology (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • User Interface Of Digital Computer (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Selective Calling Equipment (AREA)

Abstract

음성에 의해 활성화되는 데이터 패킷 기반의 컴퓨터 네트워크 환경에 대해서 선택적으로 센서를 폴링하는 시스템이 제공된다. 시스템은 디바이스의 마이크로폰에 의해 검출되는 오디오 신호들을 수신할 수 있다. 시스템은 트리거 키워드 및 요청을 식별하기 위해 오디오 신호를 파싱할 수 있다. 시스템은 복수의 필드들을 갖는 액션 데이터 구조에 대한 템플릿을 선택할 수 있다. 시스템은 제 1 필드에 대한 데이터에 대해 제 1 센서를 폴링할 것을 결정할 수 있다. 시스템은 제 2 센서에 의해 이전에 수집된 메모리에서 데이터를 획득할 것을 결정할 수 있다. 시스템은 센서 및 메모리로부터의 데이터를 갖는 액션 데이터 구조를 발생시킬 수 있고 전송할 수 있으며, 그리고 액션 데이터 구조를 써드 파티 디바이스에 전송할 수 있다.

Description

선택적 센서 폴링{SELECTIVE SENSOR POLLING}
본 출원은 미국 특허 출원 번호 제15/395,715호(출원일: 2016년 12월 30일, 발명의 명칭: "SELECTIVE SENSOR POLLING")에 대해 우선권을 주장함과 아울러 그 혜택도 주장하며, 이러한 미국 특허문헌은 그 전체가 참조로 본 명세서에 모든 목적들을 위해 통합된다.
컴퓨팅 디바이스(computing device)들 간의 네트워크 트래픽 데이터(network traffic data)의 과도한 네트워크 전송들은 이것이 패킷-기반(packet-based)으로 행해지든 아니면 다른 방식으로 행해지든 컴퓨팅 디바이스가 네트워크 트래픽 데이터를 적절하게 프로세싱하는 것을 막을 수 있거나, 혹은 네트워크 트래픽 데이터와 관련된 동작을 완료하는 것을 막을 수 있거나, 혹은 네트워크 트래픽 데이터에 적시에 응답하는 것을 막을 수 있다. 네트워크 트래픽 데이터의 과도한 네트워크 전송들은 또한, 만약 응답하는 컴퓨팅 디바이스가 자신의 프로세싱 용량 이상인 상태에 있다면, 데이터 라우팅(data routing)을 복잡하게 할 수 있거나, 혹은 응답의 품질을 저하시킬 수 있으며, 이것은 결과적으로 대역폭이 비효율적으로 이용되게 할 수 있다. 콘텐츠 아이템 오브젝트(content item object)들에 대응하는 네트워크 전송들의 제어는, 컴퓨팅 디바이스들 간의 네트워크 트래픽 데이터의 네트워크 전송들을 개시시킬 수 있는 다수의 콘텐츠 아이템 오브젝트들에 의해 복잡하게 될 수 있다.
본 개시내용은 일반적으로 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링(polling)하는 것에 관한 것이다. 예를 들어, 컴퓨팅 시스템들은 동일한 혹은 유사한 타입들의 정보를 검출할 수 있는 복수의 컴퓨팅 디바이스들 상에 구성된 복수의 센서들에 대한 액세스(access)를 가질 수 있다. 하지만, 복수의 센서들이 동일한 컴퓨팅 디바이스 상에 구성되거나 혹은 서로 가깝게 근접하여 있는 컴퓨팅 디바이스들의 그룹 상에 구성되어 그 검출된 정보가 유사하게 되는 그러한 복수의 센서들로부터 동일한 혹은 유사한 타입들의 정보를 요청하는 것은 리소스 집약적(resource intensive)인 것일 수 있다. 더욱이, 특정 센서들, 혹은 해당 센서가 구성된 컴퓨팅 디바이스는 다른 센서들 혹은 컴퓨팅 디바이스들과 비교해 더 많은 리소스들(예를 들어, 에너지, 배터리 파워(battery power), 프로세서 이용, 혹은 대역폭)을 소비할 수 있다. 따라서, 본 개시내용의 시스템들 및 방법들은 리소스 소비를 감소시키는 방식으로 정보를 획득하기 위해 하나 이상의 센서들을 선택적으로 폴링할 수 있다.
본 개시내용의 시스템들 및 방법들은 일반적으로 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 데이터 프로세싱 시스템(data processing system)에 관한 것이다. 데이터 프로세싱 시스템은 종합적으로 수집된 음성 입력에 관해 훈련된 그리고 최종 사용자 음성 입력으로 증강된 그러한 음성 모델들을 사용하여 음성-기반 입력을 프로세싱할 수 있다. 데이터 프로세싱 시스템은 음성 입력 내의 요청(request) 및 트리거 키워드(trigger keyword)에 근거하여 액션 데이터 구조(action data structure)에 대한 템플릿(template)을 식별할 수 있다. 데이터 프로세싱 시스템은 액션 데이터 구조를 발생시키기 위해 템플릿 내의 하나 이상의 필드(field)들을 채울 것을 결정할 수 있다. 필드들을 채우기 위해, 데이터 프로세싱 시스템은 음성 입력을 제공한 최종 사용자와 관련된 하나 이상의 컴퓨팅 디바이스들의 센서들을 선택적으로 폴링하기 위해 센서 관리 컴포넌트(sensor management component)와 인터페이스(interface)할 수 있다. 센서 관리 컴포넌트는 이용가능한 하나 이상의 센서들을 식별하기 위해 임의의 정책(policy) 혹은 규칙(rule)들의 세트(set)를 적용할 수 있고, 그리고 액션 데이터 구조를 발생시키기 위해 템플릿의 필드들을 채우는데 사용되는 값들을 제공할 수 있다. 데이터 프로세싱 시스템은 선택된 센서들로부터 값들을 수신할 수 있고, 액션 데이터 구조를 발생시킬 수 있고, 그리고 데이터 구조를 써드 파티 제공자 디바이스(third party provider device)에게 전송할 수 있다. 그 다음에 데이터 프로세싱 시스템은 써드 파티 제공자 디바이스로부터 액션 데이터 구조에 대응하는 동작이 개시되었다는 표시를 수신할 수 있다.
적어도 하나의 실시형태는 센서들을 선택적으로 폴링하기 위한 시스템에 관한 것이다. 시스템은 데이터 프로세싱 시스템을 포함할 수 있다. 데이터 프로세싱 시스템은, 자연 언어 프로세서(Natural Language Processor)("NLP") 컴포넌트, 다이렉트 액션(direct action) 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)("API"), 그리고 센서 관리 컴포넌트를 실행할 수 있다. NLP 컴포넌트는 클라이언트 디바이스(client device)의 마이크로폰(microphone)에 의해 검출된 입력 오디오 신호(input audio signal)를 포함하는 데이터 패킷(data packet)들을 데이터 프로세싱 시스템의 인터페이스를 통해 수신할 수 있다. NLP는 임의의 요청 그리고 그 요청에 대응하는 트리거 키워드를 식별하기 위해 입력 오디오 신호를 파싱(parsing)할 수 있다. 다이렉트 액션 API는, 요청에 응답하는 액션 데이터 구조에 대한 템플릿을 트리거 키워드에 근거하여 선택할 수 있다. 템플릿은 제 1 필드를 포함할 수 있다. 센서 관리 컴포넌트는, 제 1 필드에 대한 정보를 획득하도록 구성된 복수의 이용가능한 센서들을 식별할 수 있다. 복수의 이용가능한 센서들은 제 1 센서 및 제 2 센서를 포함할 수 있다. 센서 관리 컴포넌트는 복수의 센서들 각각의 상태를 결정할 수 있다. 센서 관리 컴포넌트는 이러한 상태에 근거하여 복수의 센서들 중 제 1 센서를 선택할 수 있다. 센서 관리 컴포넌트는 제 1 필드에 대응하는 데이터에 대해 제 1 센서를 폴링할 수 있다. 다이렉트 액션 API는 제 1 센서의 폴링에 응답하여 센서 관리 컴포넌트에 의해 수신되는 데이터로 제 1 필드를 채울 수 있다. 다이렉트 액션 API는 템플릿의 제 1 필드에 근거하여 액션 데이터 구조를 발생시킬 수 있다. 다이렉트 액션 API는 액션 데이터 구조를 써드 파티 제공자 디바이스에 전송하여 써드 파티 제공자 디바이스로 하여금 써드 파티 제공자 디바이스와 클라이언트 디바이스 간의 동작 세션(operation session)을 호출(invoke)하도록 할 수 있다. 데이터 프로세싱 시스템은, 써드 파티 제공자 디바이스로부터, 써드 파티 제공자 디바이스가 클라이언트 디바이스와 동작 세션을 확립했다는 표시를 수신할 수 있다.
적어도 하나의 실시형태는 센서들을 선택적으로 폴링하는 방법에 관한 것이다. 방법은 데이터 프로세싱 시스템이 클라이언트 디바이스의 마이크로폰에 의해 검출된 입력 오디오 신호를 포함하는 데이터 패킷들을 인터페이스를 통해 수신하는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 임의의 요청 그리고 그 요청에 대응하는 트리거 키워드를 식별하기 위해 입력 오디오 신호를 파싱하는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 요청에 응답하는 액션 데이터 구조에 대한 템플릿을 트리거 키워드에 근거하여 선택하는 것을 포함할 수 있다. 템플릿은 제 1 필드를 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 제 1 필드에 대한 정보를 획득하도록 구성된 복수의 이용가능한 센서들을 식별하는 것을 포함할 수 있다. 복수의 이용가능한 센서들은 제 1 센서 및 제 2 센서를 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 복수의 센서들 각각의 상태를 결정하는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 이러한 상태에 근거하여 복수의 센서들 중 제 1 센서를 선택하는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 제 1 필드에 대응하는 데이터에 대해 제 1 센서를 폴링하는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 제 1 센서의 폴링에 응답하여 센서 관리 컴포넌트에 의해 수신되는 데이터에 근거하여 제 1 필드를 채우는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 템플릿의 제 1 필드에 근거하여 다이렉트 액션 API에 의해 액션 데이터 구조를 발생시키는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이 액션 데이터 구조를 써드 파티 제공자 디바이스에 전송하는 것을 포함할 수 있다. 방법은 데이터 프로세싱 시스템이, 써드 파티 제공자 디바이스로부터, 써드 파티 제공자 디바이스가 클라이언트 디바이스와 동작 세션을 확립했다는 표시를 수신하는 것을 포함할 수 있다.
이러한 실시형태들 및 구현예들 그리고 다른 실시형태들 및 구현예들이 아래에서 상세하게 논의된다. 앞서의 정보 및 다음의 상세한 설명은 다양한 실시형태들 및 구현예들의 예시적 사례들을 포함하고, 그리고 제시되는 실시형태들 및 구현예들의 본질(nature) 및 특성을 이해하기 위한 개관 혹은 뼈대(framework)를 제공한다. 도면들은 본 발명의 다양한 실시형태들 및 구현예들의 예시 및 추가적인 이해를 제공하고, 그리고 본 명세서에 통합되어 본 명세서의 일부를 구성한다.
첨부되는 도면들은 일정 비율로 도시되도록 의도된 것이 아니다. 다양한 도면들에서 유사한 참조 번호들 및 표시들은 유사한 요소들을 나타낸다. 명확한 설명 목적으로, 모든 도면에서 모든 컴포넌트에 라벨(label)이 부여되지 않을 수 있다.
도 1은 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템의 예이다.
도 2는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템의 동작의 예이다.
도 3은 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법의 예이다.
도 4는 본 명세서에서 설명되고 예시되는 시스템들 및 방법들의 요소들을 구현하기 위해 이용될 수 있는 컴퓨터 시스템에 대한 일반적인 아키텍처를 예시하는 블록도이다.
아래에서 제시되는 것은 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법들, 장치들, 및 시스템들에 관한 다양한 개념들의 더 상세한 설명들이고 이러한 방법들, 장치들, 및 시스템들의 구현예들이다. 앞에서 소개된 그리고 아래에서 더 상세히 논의되는 다양한 개념들은 수많은 방식들 중 어느 하나의 방식으로 구현될 수 있다.
본 개시내용은 일반적으로 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 것에 관한 것이다. 예를 들어, 컴퓨팅 시스템들은 동일한 혹은 유사한 타입들의 정보를 검출할 수 있는 복수의 컴퓨팅 디바이스들 상에 구성된 복수의 센서들에 대한 액세스를 가질 수 있다. 하지만, 복수의 센서들이 동일한 컴퓨팅 디바이스 상에 구성되거나 혹은 서로 가깝게 근접하여 있는 컴퓨팅 디바이스들의 그룹 상에 구성되어 그 검출된 정보가 유사하게 되는 그러한 복수의 센서들로부터 동일한 혹은 유사한 타입들의 정보를 요청하는 것은 리소스 집약적인 것일 수 있다. 더욱이, 특정 센서들, 혹은 해당 센서가 구성된 컴퓨팅 디바이스는 다른 센서들 혹은 컴퓨팅 디바이스들과 비교해 더 많은 리소스들(예를 들어, 에너지, 배터리 파워, 프로세서 이용, 혹은 대역폭)을 소비할 수 있다. 따라서, 본 개시내용의 시스템들 및 방법들은 리소스 소비를 감소시키는 방식으로 정보를 획득하기 위해 하나 이상의 센서들을 선택적으로 폴링할 수 있다.
본 개시내용의 시스템들 및 방법들은 일반적으로 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 데이터 프로세싱 시스템에 관한 것이다. 데이터 프로세싱 시스템은 종합적으로 수집된 음성 입력에 관해 훈련된 그리고 최종 사용자 음성 입력으로 증강된 그러한 음성 모델들을 사용하여 음성-기반 입력을 프로세싱할 수 있다. 데이터 프로세싱 시스템은 음성 입력 내의 요청 및 트리거 키워드에 근거하여 액션 데이터 구조에 대한 템플릿을 식별할 수 있다. 데이터 프로세싱 시스템은 액션 데이터 구조를 발생시키기 위해 템플릿 내의 하나 이상의 필드들을 채울 것을 결정할 수 있다. 필드들을 채우기 위해, 데이터 프로세싱 시스템은 음성 입력을 제공한 최종 사용자와 관련된 하나 이상의 컴퓨팅 디바이스들의 센서들을 선택적으로 폴링하기 위해 센서 관리 컴포넌트와 인터페이스할 수 있다. 센서 관리 컴포넌트는 이용가능한 하나 이상의 센서들을 식별하기 위해 임의의 정책 혹은 규칙들의 세트를 적용할 수 있고, 그리고 액션 데이터 구조를 발생시키기 위해 템플릿의 필드들을 채우는데 사용되는 값들을 제공할 수 있다. 데이터 프로세싱 시스템은 선택된 센서들로부터 값들을 수신할 수 있고, 액션 데이터 구조를 발생시킬 수 있고, 그리고 데이터 구조를 써드 파티 제공자 디바이스에게 전송할 수 있다. 그 다음에 데이터 프로세싱 시스템은 써드 파티 제공자 디바이스로부터 액션 데이터 구조에 대응하는 동작이 개시되었다는 표시를 수신할 수 있다.
예를 들어, 데이터 프로세싱 시스템은 일반적으로 센서 선택을 향상시킬 수 있고, 그리고 음성-기반 시스템에 의한 사용을 위해 데이터를 수집하기 위한 센서 구성들을 최적화시킬 수 있다. 데이터 프로세싱 시스템은 임의의 디바이스가 오프라인 상태(offline state)로부터 온라인 상태(online state)에 진입한 경우 데이터 동기화(data synchronization) 혹은 일괄 업로드(batch upload)를 수행할 수 있다. 데이터 프로세싱 시스템은 수집되는 데이터, 사용자, 혹은 태스크(task)와 관련된 특성(characteristic)들에 근거하여 센서들을 인에이블(enable) 혹은 디스에이블(disable)시킬 수 있다. 데이터 프로세싱 시스템은 리소스 이용을 감소시키면서 데이터 품질을 향상시키는 정책에 근거하여 센서들을 선택적으로 인에이블시킬 수 있다. 예를 들어, 데이터 프로세싱 시스템은 사용자가 위치결정 센서(location sensor)들을 갖는 복수의 디바이스들을 휴대하고 있음을 결정할 수 있다. 데이터 프로세싱 시스템은 어떤 디바이스가 가장 많은 잔존 파워를 가지고 있는지를 결정할 수 있고 오로지 그 디바이스로부터의 위치만을 요청할 수 있다. 또 하나의 다른 예에서, 데이터 프로세싱 시스템은 제 1 디바이스가 (예를 들어, 네비게이션 애플리케이션(navigational application)을 통해) 위치 정보를 이미 획득하고 있음을 결정할 수 있고 그 위치 데이터로부터 정보를 얻을 수 있다.
도 1은 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 예시적인 시스템(100)을 예시한다. 시스템(100)은 콘텐츠 선택 기반구조(content selection infrastructure)를 포함할 수 있다. 시스템(100)은 데이터 프로세싱 시스템(102)을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 네트워크(105)를 통해 콘텐츠 제공자 컴퓨팅 디바이스(106), 서비스 제공자 컴퓨팅 디바이스(108), 혹은 클라이언트 컴퓨팅 디바이스(104) 중 하나 이상의 컴퓨팅 디바이스와 통신할 수 있다. 네트워크(105)는 컴퓨터 네트워크들(예컨대, 인터넷, 로컬 영역 네트워크(local area network), 와이드 영역 네트워크(wide area network), 메트로 영역 네트워크(metro area network), 혹은 다른 영역 네트워크들과 같은 것), 인트라넷(intranet)들, 위성 네트워크(satellite network)들, 그리고 다른 통신 네트워크들(예컨대, 음성 혹은 데이터 모바일 전화 네트워크와 같은 것)을 포함할 수 있다. 네트워크(105)는 적어도 하나의 컴퓨팅 디바이스(104)(예컨대, 랩탑(laptop), 데스크탑(desktop), 태블릿(tablet), 개인 디지털 보조기기(personal digital assistant), 스마트폰(smart phone), 휴대용 컴퓨터(portable computer)들, 혹은 스피커(speaker)와 같은 것) 상에 제시, 출력, 렌더링(rendering), 혹은 디스플레이될 수 있는 정보 리소스(information resource)들(예컨대, 웹 페이지(web page)들, 웹 사이트(web site)들, 도메인 명칭(domain name)들, 혹은 유니폼 리소스 로케이터(uniform resource locator)들과 같은 것)에 액세스하는데 사용될 수 있다. 예를 들어, 네트워크(105)를 통해, 컴퓨팅 디바이스(104)의 사용자는 서비스 제공자(108) 혹은 콘텐츠 제공자(106)에 의해 제공되는 정보 혹은 데이터에 액세스할 수 있다.
네트워크(105)는 디스플레이 네트워크(display network)를 포함할 수 있거나 디스플레이 네트워크를 구성할 수 있는데, 예를 들어, 콘텐츠 배치 혹은 검색 엔진 결과 시스템과 관련된, 혹은 콘텐츠 아이템 배치 캠페인(content item placement campaign)의 일부로서 써드 파티 콘텐츠 아이템들을 포함할 자격이 있는, 인터넷 상에서 이용가능한 정보 리소스들의 서브세트(subset)를 포함할 수 있거나 이러한 정보 리소스들의 서브세트를 구성할 수 있다. 네트워크(105)는 클라이언트 컴퓨팅 디바이스(104)에 의해 제시, 출력, 렌더링, 혹은 디스플레이될 수 있는 정보 리소스들(예컨대, 웹 페이지들, 웹 사이트들, 도메인 명칭들, 혹은 유니폼 리소스 로케이터들과 같은 것)에 액세스하기 위해 데이터 프로세싱 시스템(102)에 의해 사용될 수 있다. 예를 들어, 네트워크(105)를 통해 클라이언트 컴퓨팅 디바이스(104)의 사용자는 콘텐츠 제공자 컴퓨팅 디바이스(106) 혹은 서비스 제공자 컴퓨팅 디바이스(108)에 의해 제공되는 정보 혹은 데이터에 액세스할 수 있다.
네트워크(105)는 임의 타입 혹은 임의 형태의 네트워크일 수 있으며, 다음과 같은 것들 중 어느 하나를 포함할 수 있는바, 포인트-투-포인트 네트워크(point-to-point network), 브로드캐스트 네트워크(broadcast network), 와이드 영역 네트워크, 로컬 영역 네트워크, 원기리통신 네트워크(telecommunications network), 데이터 통신 네트워크, 컴퓨터 네트워크, ATM(Asynchronous Transfer Mode, 비동기식 전송 모드) 네트워크, SONET(Synchronous Optical Network, 동기식 광 네트워크) 네트워크, SDH(Synchronous Digital Hierarchy, 동기식 디지털 계층) 네트워크, 무선 네트워크 및 유선 네트워크(wireline network) 중 어느 하나를 포함할 수 있다. 네트워크(15)는 적외선 채널(infrared channel) 혹은 위성 대역(satellite band)과 같은 무선 링크(wireless link)를 포함할 수 있다. 네트워크(105)의 토폴로지(topology)는 버스형 네트워크 토폴로지(bus network topology), 스타형 네트워크 토폴로지(star network topology), 혹은 링형 네트워크 토폴로지(ring network topology)를 포함할 수 있다. 네트워크는 모바일 디바이스들 간의 통신을 위해 사용되는 임의의 프로토콜(protocol) 혹은 프로토콜들을 사용하는 모바일 전화 네트워크들을 포함할 수 있고, 여기서 프로토콜은 어드밴스드 모바일 전화 프로토콜(Advanced Mobile Phone Protocol)("AMPS"), 시분할 다중 액세스(Time Division Multiple Access)("TDMA"), 코드-분할 다중 액세스(Code-Division Multiple Access)("CDMA"), 모바일 통신을 위한 글로벌 시스템(Global System for Mobile communication)("GSM"), 일반 패킷 무선 서비스(General Packet Radio Services)("GPRS") 혹은 범용 모바일 원거리통신 시스템(Universal Mobile Telecommunications System)("UMTS")을 포함한다. 상이한 타입들의 데이터가 상이한 프로토콜들을 통해 전송될 수 있고, 또는 동일한 타입들의 데이터가 상이한 프로토콜들을 통해 전송될 수 있다.
시스템(100)은 적어도 하나의 데이터 프로세싱 시스템(102)을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 네트워크(105)를 통해 예를 들어, 컴퓨팅 디바이스(104), 콘텐츠 제공자 디바이스(106)(콘텐츠 제공자(106)), 혹은 서비스 제공자 디바이스(108)(혹은 서비스 제공자(108))와 통신하기 위해 프로세서를 갖는 컴퓨팅 디바이스와 같은 적어도 하나의 로직 디바이스(logic device)를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 컴퓨테이션 리소스(computation resource), 서버, 프로세서, 혹은 메모리를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 적어도 하나의 데이터 센터(data center)에 위치하는 복수의 컴퓨테이션 리소스들 혹은 서버들을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 복수의 논리적으로 그룹화된 서버(logically-grouped server)들을 포함할 수 있고 분산형 컴퓨팅 기법(distributed computing technique)들을 용이하게 할 수 있다. 서버들의 논리적 그룹은 데이터 센서, 서버 팜(server farm) 혹은 머신 팜(machine farm)으로서 지칭될 수 있다. 서버들은 또한 지리적으로 분산(disperse)될 수 있다. 데이터 센서 혹은 머신 팜은 단일 엔티티(single entity)로서 관리될 수 있고, 또는 머신 팜은 복수의 머신 팜들을 포함할 수 있다. 각각의 머신 팜 내의 서버들은 이질적(heterogeneous)일 수 있다(서버들 혹은 머신들 중 하나 이상은 오퍼레이팅 시스템 플랫폼(operating system platform)의 하나 이상의 타입에 따라 동작할 수 있음).
머신 팜 내의 서버들은 관련된 저장 시스템들과 함께 고-밀도 랙 시스템(high-density rack system)들 내에 저장될 수 있고, 그리고 엔터프라이즈 데이터 센터 내에 위치할 수 있다. 예를 들어, 서버들을 이러한 방식으로 통합하는 것은, 서버들 및 고성능 저장 시스템들을 로컬화된 고성능 네트워크들 상에 위치시킴으로써 시스템 관리용이성(system manageability), 데이터 보안(data security), 시스템의 물리적 보안, 및 시스템 성능을 향상시킬 수 있다. 서버들 및 저장 시스템들을 포함하는 데이터 프로세싱 시스템(102) 컴포넌트들 중 일부 혹은 모두의 중앙집중화(centralization), 그리고 이들을 어드밴스드 시스템 관리 툴(advanced system management tool)들과 결합시키는 것은 서버 리소스들의 더 효율적인 사용을 가능하게 하고, 이것은 파워 및 프로세싱 요건들을 줄여주고 대역폭 사용을 감소시킨다.
시스템(100)은 적어도 하나의 서비스 제공자 디바이스(108)를 포함할 수 있거나, 이러한 서비스 제공자 디바이스(108)에 액세스할 수 있거나, 혹은 그렇지 않다면 이러한 서비스 제공자 디바이스(108)와 상호작용할 수 있다. 서비스 제공자 디바이스(108)는 네트워크(105)를 통해 예를 들어, 컴퓨팅 디바이스(104), 데이터 프로세싱 시스템(102), 혹은 콘텐츠 제공자(106)와 통신하기 위해 프로세서를 갖는 컴퓨팅 디바이스와 같은 적어도 하나의 로직 디바이스를 포함할 수 있다. 서비스 제공자 디바이스(108)는 적어도 하나의 컴퓨테이션 리소스, 서버, 프로세서, 혹은 메모리를 포함할 수 있다. 예를 들어, 서비스 제공자 디바이스(108)는 적어도 하나의 데이터 센터에 위치하는 복수의 컴퓨테이션 리소스들 혹은 서버들을 포함할 수 있다. 서비스 제공자 디바이스(108)는 데이터 프로세싱 시스템(102)의 하나 이상의 컴포넌트 혹은 기능을 포함할 수 있다.
콘텐츠 제공자 컴퓨팅 디바이스(106)는 오디오 기반의 콘텐츠 아이템(audio based content item)들을 클라이언트 컴퓨팅 디바이스(104)에 의한 디스플레이를 위해 오디오 출력 콘텐츠 아이템(audio output content item)으로서 제공할 수 있다. 콘텐츠 아이템은 상품(good) 혹은 서비스(service)에 대한 제안(offer)을 포함할 수 있는데, 예컨대 "제가 당신에게 택시를 불러드릴까요?"라고 표현되는 음성 기반 메시지와 같은 것을 포함할 수 있다. 예를 들어, 콘텐츠 제공자 컴퓨팅 디바이스(155)는 음성 기반 쿼리(voice based query)에 응답하여 제공될 수 있는 일련의 오디오 콘텐츠 아이템들을 저장하기 위해 메모리를 포함할 수 있다. 콘텐츠 제공자 컴퓨팅 디바이스(106)는 또한, 오디오 기반 콘텐츠 아이템들(혹은 다른 콘텐츠 아이템들)을 데이터 프로세싱 시스템(102)에게 제공할 수 있고, 여기서 이들은 데이터 저장소(data repository)(124)에 저장될 수 있다. 데이터 프로세싱 시스템(102)은 오디오 콘텐츠 아이템들을 선택할 수 있고, 그리고 오디오 콘텐츠 아이템들을 클라이언트 컴퓨팅 디바이스(104)에게 제공할 수 있다(또는, 콘텐츠 제공자 컴퓨팅 디바이스(104)로 하여금 오디오 콘텐츠 아이템들을 클라이언트 컴퓨팅 디바이스(104)에게 제공하도록 명령할 수 있음). 오디오 기반 콘텐츠 아이템들은 오로지 오디오만을 갖는 콘텐츠 아이템들일 수 있고, 또는 텍스트(text), 이미지(image), 혹은 비디오(video) 데이터와 결합될 수 있다.
서비스 제공자 컴퓨팅 디바이스(108)는, 적어도 하나의 서비스 제공자 자연 언어 프로세서 컴포넌트(service provider Natural Language Processor component)(142) 및 서비스 제공자 인터페이스(service provider interface)(144)를 포함할 수 있거나, 이들과 인터페이스할 수 있거나, 혹은 그렇지 않으면 이들과 통신할 수 있다. 서비스 제공자 컴퓨팅 디바이스(108)는 적어도 하나의 서비스 제공자 자연 언어 프로세서(NLP) 컴포넌트(142) 및 적어도 하나의 서비스 제공자 인터페이스(144)를 포함할 수 있다. 서비스 제공자 NLP 컴포넌트(142)(혹은 서비스 제공자 컴퓨팅 디바이스(108)의 다이렉트 액션 API와 같은 다른 컴포넌트들)는, 클라이언트 컴퓨팅 디바이스(104)와 서비스 제공자 컴퓨팅 디바이스(108) 간의 역방향-및-순방향 실시간 음성 혹은 오디오 기반 대화(back-and-forth real-time voice or audio based conversation)(예를 들어, 세션(session))을 생성하기 위해 (데이터 프로세싱 시스템(102)을 통해 혹은 데이터 프로세싱 시스템(102)을 바이패싱(bypassing)함으로써) 클라이언트 컴퓨팅 디바이스(104)와 관계(engage)를 가질 수 있다. 서비스 제공자 NLP(142)는 데이터 프로세싱 시스템(102)의 NLP 컴포넌트(112)로서 하나 이상의 기능 혹은 특징을 포함할 수 있다. 예를 들어, 서비스 제공자 인터페이스(144)는 데이터 프로세싱 시스템(102)의 다이렉트 액션 API(116)에 대해 데이터 메시지들을 수신 및 제공할 수 있다. 서비스 제공자 컴퓨팅 디바이스(108)와 콘텐츠 제공자 컴퓨팅 디바이스(106)는 동일한 엔티티와 관련될 수 있다. 예를 들어, 콘텐츠 제공자 컴퓨팅 디바이스(106)는 자동차 공유 서비스(car sharing service)를 위한 콘텐츠 아이템들을 생성할 수 있거나, 저장할 수 있거나, 혹은 이용가능하게 할 수 있으며, 그리고 서비스 제공자 컴퓨팅 디바이스(108)는 클라이언트 컴퓨팅 디바이스(104)의 최종 사용자를 픽업(pick up)하기 위해서 자동차 공유 서비스의 택시 혹은 자동차의 전달(delivery)을 준비하기 위해 클라이언트 컴포넌트 디바이스(106)와 세션을 확립할 수 있다. 데이터 프로세싱 시스템(102)은 또한, 예를 들어, 자동차 공유 서비스의 택시 혹은 자동차의 전달을 준비하기 위해, 다이렉트 액션 API(116), NLP 컴포넌트(112), 혹은 다른 컴포넌트들을 통해, 클라이언트 컴퓨팅 디바이스와 (서비스 제공자 컴퓨팅 디바이스(104)를 포함하는 혹은 서비스 제공자 컴퓨팅 디바이스(104)를 바이패싱하는) 세션을 확립할 수 있다.
컴퓨팅 디바이스(104)는, 적어도 하나의 센서(sensor)(134), 트랜스듀서(transducer)(136), 오디오 드라이버(audio driver)(138), 혹은 프리-프로세서(pre-processor)(140)를 포함할 수 있거나, 이들과 인터페이스할 수 있거나, 혹은 그렇지 않으면 이들과 통신할 수 있다. 센서(134)는 예를 들어, 주변 광 센서(ambient light sensor), 근접 센서(proximity sensor), 온도 센서(temperature sensor), 가속도계(accelerometer), 자이로스코프(gyroscope), 모션 검출기(motion detector), GPS 센서, 위치결정 센서(location sensor), 마이크로폰(microphone), 혹은 터치 센서(touch sensor)를 포함할 수 있다. 트랜스듀서(136)는 스피커 혹은 마이크로폰을 포함할 수 있다. 오디오 드라이버(138)는 하드웨어 트랜스듀서(136)에 대한 소프트웨어 인터페이스를 제공할 수 있다. 오디오 드라이버는 트랜스듀서(136)를 제어하여 임의의 대응하는 음향 파동(acoustic wave) 혹은 사운드 파동(sound wave)을 발생시키기 위해 데이터 프로세싱 시스템(102)에 의해 제공되는 오디오 파일(audio file) 및 다른 명령들을 실행할 수 있다. 프리-프로세서(140)는 임의의 키워드를 검출하여 그 키워드에 근거하는 임의의 액션을 수행하도록 구성될 수 있다. 프리-프로세서(140)는 하나 이상의 용어(term)들을 후속 프로세싱을 위해 데이터 프로세싱 시스템(102)으로 전송하기 전에 이러한 하나 이상의 용어들을 필터링할 수 있거나, 혹은 이러한 용어들을 수정할 수 있다. 프리-프로세서(140)는 마이크로폰에 의해 검출된 아날로그 오디오 신호들을 디지털 오디오 신호로 변환할 수 있고, 그리고 이러한 디지털 오디오 신호를 지니고 있는 하나 이상의 데이터 패킷들을 네트워크(105)를 통해 데이터 프로세싱 시스템(102)으로 전송할 수 있다. 일부 경우들에서, 프리-프로세서(140)는 입력 오디오 신호 중 일부 혹은 모두를 지니고 있는 데이터 패킷들을 전송할 수 있는데, 이것은 이러한 전송을 수행하기 위한 명령을 검출함에 응답하여 일어날 수 있다. 명령은 예를 들어, 입력 오디오 신호를 포함하고 있는 데이터 패킷들을 데이터 프로세싱 시스템(102)으로 전송하기 위한 트리거 키워드 혹은 다른 키워드 혹은 승인(approval)을 포함할 수 있다. 컴퓨팅 디바이스(104)는 디스플레이를 포함할 수 있거나, 혹은 포함하지 않을 수 있는데, 예를 들어, 컴퓨팅 디바이스는 마이크로폰 및 스피커와 같은 제한된 타입들의 사용자 인터페이스들을 포함할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스(104)의 주된 사용자 인터페이스는 마이크로폰 및 스피커일 수 있다.
클라이언트 컴퓨팅 디바이스(104)는 최종 사용자와 관련될 수 있는데, 여기서 최종 사용자는, (센서(134)를 통해) 음성 쿼리(voice query)들을 오디오 입력으로서 클라이언트 컴퓨팅 디바이스(104)에 입력하고, 그리고 컴퓨터에 의해 발생된 음성의 형태로 오디오 출력을 수신하는데, 이러한 컴퓨터에 의해 발생된 음성은 데이터 프로세싱 시스템(102)(또는 콘텐츠 제공자 컴퓨팅 디바이스(106) 혹은 서비스 제공자 컴퓨팅 디바이스(108))으로부터 클라이언트 컴퓨팅 디바이스(104)로 제공될 수 있고 아울러 트랜스듀서(136)(예를 들어, 스피커)로부터 출력될 수 있다. 컴퓨터에 의해 발생된 음성은 실제 사람으로부터 녹음된 것 혹은 컴퓨터에 의해 발생된 언어를 포함할 수 있다.
데이터 저장소(124)는 하나 이상의 로컬 데이터베이스(local database)들 혹은 분산형 데이터베이스(distributed database)들을 포함할 수 있고, 그리고 데이테베이스 관리 시스템을 포함할 수 있다. 데이터 저장소(124)는 컴퓨터 데이터 저장소 혹은 메모리를 포함할 수 있고, 그리고 다른 데이터 중에서도 하나 이상의 파라미터(parameter)들(126), 하나 이상의 정책들(128), 콘텐츠 데이터(130), 혹은 템플릿들(132)을 저장할 수 있다. 파라미터들(126), 정책들(128), 및 템플릿들(132)은, 클라이언트 컴퓨팅 디바이스(104)와 데이터 프로세싱 시스템(102)(혹은 서비스 제공자 컴퓨팅 디바이스(108)) 간의 음성 기반 세션에 대한 규칙들과 같은 그러한 정보를 포함할 수 있다. 콘텐츠 데이터(130)는 오디오 출력을 위한 콘텐츠 아이템들 혹은 관련된 메타데이터(metadata)를 포함할 수 있고, 뿐만 아니라 클라이언트 컴퓨팅 디바이스(104)와의 하나 이상의 통신 세션들의 일부일 수 있는 입력 오디오 메시지들을 포함할 수 있다. 통신 세션(communication session)은 동작 세션(operation session)을 포함할 수 있거나 혹은 동작 세션으로서 지칭될 수 있다. 일부 경우들에서, 동작 세션은, 써드 파티 제공자 디바이스(108), 클라이언트 컴퓨팅 디바이스, 콘텐츠 제공자 디바이스(106), 데이터 프로세싱 시스템(102), 또는 다른 컴포넌트 혹은 엔티티에 의해 하나 이상의 동작들이 수행되는 통신 세션을 지칭할 수 있다.
데이터 프로세싱 시스템(102)은 적어도 하나의 컴퓨테이션 리소스 혹은 서버를 갖는 콘텐츠 배치 시스템(content placement system)을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 인터페이스(110)를 포함할 수 있거나, 이러한 인터페이스(110)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 인터페이스(110)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 자연 언어 프로세서 컴포넌트(112)를 포함할 수 있거나, 이러한 자연 언어 프로세서 컴포넌트(112)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 자연 언어 프로세서 컴포넌트(112)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 다이렉트 액션 애플리케이션 프로그래밍 인터페이스("API")(116)를 포함할 수 있거나, 이러한 다이렉트 액션 애플리케이션 프로그래밍 인터페이스("API")(116)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 다이렉트 액션 애플리케이션 프로그래밍 인터페이스("API")(116)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 세션 핸들러(session handler)(114)를 포함할 수 있거나, 이러한 세션 핸들러(114)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 세션 핸들러(114)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 콘텐츠 선택기 컴포넌트(content selector component)(118)를 포함할 수 있거나, 이러한 콘텐츠 선택기 컴포넌트(118)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 콘텐츠 선택기 컴포넌트(118)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 센서 관리 컴포넌트(sensor management component)(120)를 포함할 수 있거나, 이러한 센서 관리 컴포넌트(120)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 센서 관리 컴포넌트(120)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 오디오 신호 발생기(audio signal generator)(122)를 포함할 수 있거나, 이러한 오디오 신호 발생기(122)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 오디오 신호 발생기(122)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 데이터 저장소(124)를 포함할 수 있거나, 이러한 데이터 저장소(124)와 인터페이스할 수 있거나, 혹은 그렇지 않으면 이러한 데이터 저장소(124)와 통신할 수 있다. 적어도 하나의 데이터 저장소(124)는, 하나 이상의 데이터 구조들 혹은 데이터베이스들 내에, 파라미터들(126), 정책들(128), 콘텐츠 데이터(130), 혹은 템플릿들(132)을 포함할 수 있거나 혹은 저장할 수 있다. 파라미터들(126)은 예를 들어, 임계치(threshold)들, 거리(distance)들, 시간 간격(time interval)들, 지속시간(duration)들, 점수(score)들, 혹은 가중치(weight)들을 포함할 수 있다. 콘텐츠 데이터(130)는, 예를 들어, 콘텐츠 선택을 용이하게 하기 위해 데이터 프로세싱 시스템에 의해 획득 혹은 결정되는 또는 콘텐츠 제공자(106)에 의해 제공되는, 콘텐츠 캠페인 정보, 콘텐츠 그룹들, 콘텐츠 선택 기준들, 콘텐츠 아이템 오브젝트들 혹은 다른 정보를 포함할 수 있다. 콘텐츠 데이터(130)는 예를 들어, 콘텐츠 캠페인의 이력적 성능(historical performance)을 포함할 수 있다.
인터페이스(110), 자연 언어 프로세서 컴포넌트(112), 세션 핸들러(114), 다이렉트 액션 API(116), 콘텐츠 선택기 컴포넌트(118), 센서 관리 컴포넌트(120), 혹은 오디오 신호 발생기 컴포넌트(122)는 각각, 적어도 하나의 프로세싱 유닛 혹은 다른 로직 디바이스(logic device) 예컨대, 프로그래밍가능 로직 어레이 엔진(programmable logic array engine), 또는 데이터 저장소 혹은 데이터베이스(124)와 통신하도록 구성된 모듈(module)을 포함할 수 있다. 인터페이스(110), 자연 언어 프로세서 컴포넌트(112), 세션 핸들러(114), 다이렉트 액션 API(116), 콘텐츠 선택기 컴포넌트(118), 센서 관리 컴포넌트(120), 오디오 신호 발생기 컴포넌트(122), 및 데이터 저장소(124)는 별개의 컴포넌트들일 수 있거나, 단일 컴포넌트일 수 있거나, 혹은 데이터 프로세싱 시스템(102)의 일부일 수 있다. 시스템(100)과 그 컴포넌트들, 예컨대, 데이터 프로세싱 시스템(102)은 하나 이상의 프로세서들, 로직 디바이스들, 혹은 회로들과 같은 하드웨어 요소들을 포함할 수 있다.
데이터 프로세싱 시스템(102)은 복수의 컴퓨팅 디바이스들(104)과 관련된 익명의 컴퓨터 네트워크 활동 정보(computer network activity information)를 획득할 수 있다. 컴퓨팅 디바이스(104)의 사용자는 사용자의 컴퓨팅 디바이스(104)에 대응되는 네트워크 활동 정보를 획득하도록 데이터 프로세싱 시스템(102)을 확정적으로(affirmatively) 승인(authorize)할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 네트워크 활동 정보의 하나 이상의 타입들을 획득하기 위한 동의(consent)에 대해 컴퓨팅 디바이스(104)의 사용자에게 촉구(prompt)할 수 있다. 컴퓨팅 디바이스(104)의 사용자의 아이덴티티(identity)는 익명인 상태로 유지될 수 있고, 그리고 컴퓨팅 디바이스(104)는 고유한 식별자(unique identifier)(예를 들어, 컴퓨팅 디바이스의 사용자 혹은 데이터 프로세싱 시스템에 의해 제공되는 컴퓨팅 디바이스 혹은 사용자에 대한 고유한 식별자)와 관련될 수 있다. 데이터 프로세싱 시스템은 각각의 관찰(observation)을 대응하는 고유한 식별자와 관련시킬 수 있다.
콘텐츠 제공자(106)는 전자 콘텐츠 캠페인(electronic content campaign)을 확립할 수 있다. 전자 콘텐츠 캠페인은 데이터 저장소(124) 내에 콘텐츠 데이터(130)로서 저장될 수 있다. 전자 콘텐츠 캠페인은 공통적인 주제(theme)에 대응하는 하나 이상의 콘텐츠 그룹들을 지칭할 수 있다. 콘텐츠 캠페인은, 콘텐츠 그룹들, 콘텐츠 아이템 데이터 오브젝트들, 및 콘텐츠 선택 기준들을 포함하는 계층적 데이터 구조(hierarchical data structure)를 포함할 수 있다. 콘텐츠 캠페인을 생성하기 위해, 콘텐츠 제공자(106)는 콘텐츠 캠페인의 캠페인 레벨 파라미터(campaign level parameter)들에 대한 값(value)들을 특정할 수 있다. 캠페인 레벨 파라미터들은, 예를 들어, 캠페인 명칭, 콘텐츠 아이템 오브젝트들을 배치하기 위한 바람직한 콘텐츠 네트워크, 콘텐츠 캠페인을 위해 사용될 리소스들의 값, 콘텐츠 캠페인에 대한 시작 날짜 및 종료 날짜, 콘텐츠 캠페인에 대한 지속시간, 콘텐츠 아이템 오브젝트 배치들을 위한 스케줄(schedule), 언어, 지리적 위치들, 콘텐츠 아이템 오브젝트들이 제공되게 되는 컴퓨팅 디바이스들의 타입을 포함할 수 있다. 일부 경우들에서, 임프레션(impression)은 콘텐츠 아이템 오브젝트가 그 소스(source)(예를 들어, 데이터 프로세싱 시스템(102) 혹은 콘텐츠 제공자(106))로부터 페치(fetch)될 때를 지칭할 수 있고, 이러한 임프레션은 카운팅가능(countable)할 수 있다. 일부 경우들에서, 클릭 사기(click fraud)가 가능하기 때문에, 임의의 임프레션으로서, 로봇 활동(robotic activity)은 필터링될 수 있고 배제될 수 있다. 따라서, 일부 경우들에서, 임프레션은, 로봇 활동 및 에러 코드(error code)들로부터 필터링되는 임의의 브라우저(browser)로부터의 페이지 요청(page request)에 대한 웹 서버(Web server)로부터의 응답들의 측정을 지칭할 수 있고, 그리고 컴퓨팅 디바이스(104) 상에서의 디스플레이를 위해 콘텐츠 아이템 오브젝트를 렌더링할 기회에 가능한 가까운 때에 렌더링된다. 일부 경우들에서, 임프레션은 뷰잉가능한 임프레션(viewable impression) 혹은 청취가능한 임프레션(audible impression)을 지칭할 수 있는데, 예를 들어, 콘텐츠 아이템 오브젝트는 클라이언트 컴퓨팅 디바이스(104)의 디스플레이 디바이스 상에서 적어도 부분적으로(예를 들어, 20%, 30%, 30%, 40%, 50%, 60%, 70%, 혹은 그 이상) 뷰잉가능하거나, 혹은 컴퓨팅 디바이스(104)의 스피커(136)를 통해 청취가능하다. 클릭 혹은 선택은 콘텐츠 아이템 오브젝트와의 사용자 상호작용을 지칭할 수 있는데, 예컨대, 청취가능한 임프레션에 대한 음성 응답, 마우스-클릭(mouse-click), 터치 상호작용(touch interaction), 제스처, 흔들기(shake), 오디오 상호작용(audio interaction), 혹은 키보드 클릭(keyboard click)과 같은 것을 지칭할 수 있다. 전환(conversion)은 사용자가 콘텐츠 아이템 오브젝션에 대해 임의의 바람직한 액션을 취하는 것을 지칭할 수 있는데, 예를 들어, 물품 혹은 서비스를 구매하는 것, 설문조사(survey)를 완료하는 것, 콘텐츠 아이템에 대응하는 물리적 상점을 방문하는 것, 혹은 전자 거래(electronic transaction)를 완료하는 것을 지칭할 수 있다.
콘텐츠 제공자(106)는 또한 콘텐츠 캠페인에 대한 하나 이상의 콘텐츠 그룹들을 확립할 수 있다. 콘텐츠 그룹은 하나 이상의 콘텐츠 아이템 오브젝트들 및 대응하는 콘텐츠 선택 기준들(예컨대, 키워드들, 단어들, 용어들, 어구들, 지리적 위치들, 컴퓨팅 디바이스의 타입, 하루 중 시간, 관심대상, 토픽(topic), 혹은 업종(vertical)과 같은 것)을 포함한다. 동일한 콘텐츠 캠페인 하의 콘텐츠 그룹들은 동일한 캠페인 레벨 파라미터들을 공유할 수 있지만, 이들은 키워드들, (예를 들어, 메인 콘텐츠(main content) 상에 부정적 키워드(negative keyword)의 존재시 해당 콘텐츠 아이템의 배치를 차단하는) 부정적 키워드들, 키워드들에 대한 입찰(bid)들, 또는 입찰 혹은 콘텐츠 캠페인과 관련된 파라미터들과 같은 그러한 특정 콘텐츠 그룹 레벨 파라미터들에 대한 맞춤형 사양(tailored specification)들을 가질 수 있다.
새로운 콘텐츠 그룹을 생성하기 위해, 콘텐츠 제공자는 콘텐츠 그룹의 콘텐츠 그룹 레벨 파라미터들에 대한 값들을 제공할 수 있다. 콘텐츠 그룹 레벨 파라미터들은 예를 들어, 콘텐츠 그룹 명칭 혹은 콘텐츠 그룹 주제, 그리고 상이한 콘텐츠 배치 기회들(예를 들어, 자동적인 배치 혹은 관리되는 배치) 혹은 결과(outcome)들(예를 들어, 클릭들, 임프레션들, 혹은 전환들)에 대한 입찰들을 포함한다. 콘텐츠 그룹 명칭 혹은 콘텐츠 그룹 주제는, 임의의 토픽 혹은 주된 내용(subject matter)에 대해 콘텐츠 그룹의 콘텐츠 아이템 오브젝트들이 디스플레이를 위해 선택되게 되는 경우 그러한 임의의 토픽 혹은 주된 내용을 캡처(capture)하기 위해 콘텐츠 제공자(106)가 사용할 수 있는 하나 이상의 용어들일 수 있다. 예를 들어, 자동차 대리점(car dealership)은 자신이 가지고 있는 차량의 각각의 상표(brand)에 대해 상이한 콘텐츠 그룹을 생성할 수 있고, 그리고 또한 자신이 가지고 있는 차량의 각각의 모델에 대해 상이한 콘텐츠 그룹을 생성할 수 있다. 자동차 대리점이 사용할 수 있는 콘텐츠 그룹 주제들의 예들은, 예를 들어, "A 스포츠 자동차(sports car) 만들기", "B 스포츠 자동차 만들기", "C 세단(sedan) 만들기", "C 트럭(truck) 만들기", "C 하이브리드(hybrid) 만들기" 혹은 "D 하이브리드 만들기"를 포함할 수 있다. 예시적인 콘텐츠 캠페인 주제는 "하이브리드"일 수 있고, 그리고 예를 들어, "C 하이브리드 만들기"와 "D 하이브리드 만들기" 모두에 대한 콘텐츠 그룹들을 포함한다.
콘텐츠 제공자(106)는 각각의 콘텐츠 그룹에 하나 이상의 키워드들 및 콘텐츠 아이템 오브젝트들을 제공할 수 있다. 키워드들은, 제품 혹은 서비스들과 관련된 용어들을 포함할 수 있거나, 또는 콘텐츠 아이템 오브젝트들과 관련되는 혹은 콘텐츠 아이템 오브젝트들에 의해 식별되는 용어들을 포함할 수 있다. 키워드는 하나 이상의 용어들 혹은 어구들을 포함할 수 있다. 예를 들어, 자동차 대리점은 콘텐츠 그룹 혹은 콘텐츠 캠페인에 대한 키워드들로서, "스포츠 자동차", "V-6 엔진(engine)", "4륜 구동(four-wheel drive)", "연료 효율(fuel efficiency)"을 포함할 수 있다. 일부 경우들에서, 부정적인 키워드들이, 특정 용어들 혹은 키워드에 관한 콘텐츠 배치를 피하기 위해, 혹은 방지하기 위해, 혹은 차단하기 위해, 혹은 디스에이블(disable)시키기 위해 콘텐츠 제공자에 의해 특정될 수 있다. 콘텐츠 제공자는 콘텐츠 아이템 오브젝트들을 선택하기 위해 사용되는 매칭(matching)의 타입(예컨대, 정확한 매칭(exact match), 어구 매칭(phrase match), 혹은 대략적 매칭(broad match)과 같은 것)을 특정할 수 있다.
콘텐츠 제공자(106)는 콘텐츠 제공자(106)에 의해 제공되는 콘텐츠 아이템 오브젝트를 선택하기 위해 데이터 프로세싱 시스템(102)에 의해 사용될 하나 이상의 키워드들을 제공할 수 있다. 콘텐츠 제공자(106)는 입찰이 행해질 이상의 키워드들을 식별할 수 있고, 그리고 또한 다양한 키워드들에 대한 입찰 양(bid amount)들을 제공할 수 있다. 콘텐츠 제공자(106)는 콘텐츠 아이템 오브젝트들을 선택하기 위해 데이터 프로세싱 시스템(102)에 의해 사용될 추가적인 콘텐츠 선택 기준들을 제공할 수 있다. 복수의 콘텐츠 제공자들(106)이 동일한 키워드들 혹은 상이한 키워드들에 대한 입찰을 행할 수 있고, 그리고 데이터 프로세싱 시스템(102)은, 전자적 메시지(electronic message)의 키워드의 표시를 수신함에 응답하여, 콘텐츠 선택 프로세스 혹은 광고 경매(ad auction)를 실행할 수 있다.
콘텐츠 제공자(106)는 데이터 프로세싱 시스템(102)에 의한 선택을 위해 하나 이상의 콘텐츠 아이템 오브젝트들을 제공할 수 있다. (예를 들어, 콘텐츠 선택기 컴포넌트(118)를 통해) 데이터 프로세싱 시스템(102)은, 콘텐츠 배치 기회가 이용가능하게 될 때, 리소스 할당, 콘텐츠 스케줄, 최대 입찰들, 키워드들, 그리고 콘텐츠 그룹에 대해 특정된 다른 선택 기준들과 매칭되는 콘텐츠 아이템 오브젝트들을 선택할 수 있다. 콘텐츠 그룹에는 상이한 타입들의 콘텐츠 아이템 오브젝트들이 포함될 수 있는데, 예컨대, 음성 콘텐츠 아이템, 오디오 콘텐츠 아이템, 텍스트 콘텐츠 아이템, 이미지 콘텐츠 아이템, 비디오 콘텐츠 아이템, 멀티미디어 콘텐츠 아이템(multimedia content item), 혹은 콘텐츠 아이템 링크(content item link)와 같은 것이 포함될 수 있다. 콘텐츠 아이템의 선택시, 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104) 상에서의 렌더링을 위해 혹은 컴퓨팅 디바이스(104)의 디스플레이 디바이스 상에서 렌더링을 위해 콘텐츠 아이템 오브젝트를 전송할 수 있다. 렌더링은 콘텐츠 아이템을 디스플레이 디바이스 상에 디스플레이하는 것, 혹은 컴퓨팅 디바이스(104)의 스피커를 통해 콘텐츠 아이템을 재생(playing)시키는 것을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 콘텐츠 아이템 오브젝트를 렌더링하기 위한 명령들을 컴퓨팅 디바이스(104)에게 제공할 수 있다. 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104) 혹은 컴퓨팅 디바이스(104)의 오디오 드라이버(138)로 하여금 오디오 신호들 혹은 음향 파동들을 발생시키도록 명령할 수 있다.
데이터 프로세싱 시스템(102)은 예를 들어, 데이터 패킷들을 사용하여 정보를 수신 및 전송하도록 설계된, 구성된, 구조화된, 혹은 동작가능한 인터페이스 컴포넌트(110)를 포함할 수 있다. 인터페이스(110)는 네트워크 프로토콜과 같은 하나 이상의 프로토콜들을 사용하여 정보를 수신 및 전송할 수 있다. 인터페이스(110)는 하드웨어 인터페이스, 소프트웨어 인터페이스, 유선 인터페이스, 혹은 무선 인터페이스를 포함할 수 있다. 인터페이스(110)는 데이터를 하나의 포맷(format)으로부터 또 하나의 다른 포맷으로 변환(translating) 혹은 포맷팅(formatting)하는 것을 용이하게 할 수 있다. 예를 들어, 인터페이스(110)는 소프트웨어 컴포넌트들과 같은 다양한 컴포넌트들 간의 통신을 위한 정의(definition)들을 포함하는 애플리케이션 프로그래밍 인터페이스를 포함할 수 있다.
데이터 프로세싱 시스템(102)은, 클라이언트 컴퓨팅 디바이스(104)에서 인스톨(install)되는 애플리케이션, 스크립트(script) 혹은 프로그램을 포함할 수 있는데, 예컨대, 데이터 프로세싱 시스템(102)의 인터페이스(110)로 입력 오디오 신호들을 전달하기 위한, 그리고 출력 오디오 신호들을 렌더링하도록 클라이언트 컴퓨팅 디바이스의 컴포넌트들을 구동하기 위한 앱(app)과 같은 것을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 패킷들을 수신할 수 있거나, 혹은 오디오 입력 신호를 포함하는 혹은 오디오 입력 신호를 식별시키는 다른 신호를 수신할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 오디오 신호를 수신 혹은 획득하여 오디오 신호를 파싱하기 위해 NLP 컴포넌트(112)를 실행시키거나 혹은 동작시킬 수 있다. 예를 들어, NLP 컴포넌트(112)는 인간과 컴퓨터 간의 상호작용들을 제공할 수 있다. NLP 컴포넌트(112)는 자연 언어를 이해하기 위한 기법들, 아울러 데이터 프로세싱 시스템(102)으로 하여금 인간 언어 입력 혹은 자연 언어 입력으로부터 의미(meaning)를 도출할 수 있도록 하는 기법들을 갖도록 구성될 수 있다. NLP 컴포넌트(112)는 통계적 머신 학습(statistical machine learning)과 같은 머신 학습에 기반을 둔 기법을 포함할 수 있거나 이러한 기법을 갖도록 구성될 수 있다. NLP 컴포넌트(112)는 입력 오디오 신호를 파싱하기 위해 결정 트리(decision tree)들, 통계적 모델(statistical model)들, 혹은 확률적 모델(probabilistic model)들을 이용할 수 있다. NLP 컴포넌트(112)는 예를 들어, 다음과 같은 기능들을 수행할 수 있는바, 명명된 엔티티 인식(named entity recognition)(예를 들어, 이것은 텍스트의 스트림(stream)의 주어지는 경우, 텍스트 내의 어떤 아이템들이 적절한 명칭들(예컨대, 사람들 혹은 장소들과 같은 것)에 맵핑(mapping)되는지를 결정하고, 그리고 각각의 이러한 명칭의 타입이 무엇인지(예컨대, 사람, 위치 혹은 조직(organization)과 같은 것)를 결정함); 자연 언어 발생(natural language generation)(예를 들어, 이것은 컴퓨터 데이터베이스들 혹은 의미론적 의도(semantic intent)들로부터의 정보를 이해가능한 인간 언어로 변환함); 자연 언어 이해(natural language understanding)(예를 들어, 이것은 텍스트를 컴퓨터 모듈이 조종(manipulate)할 수 있는 1-차 로직 구직(first-order logic structure)들과 같은 더 형식적 표현들로 변환함); 머신 번역(machine translation)(예를 들어, 이것은 하나의 인간 언어로부터의 텍스트를 또 하나의 다른 인간 언어로 자동적으로 번역함); 형태학적 세그먼트화(morphological segmentation)(예를 들어, 이것은 단어들을 개개의 형태소(morpheme)들로 분리하고, 그리고 형태소들의 클래스(class)를 식별하는데, 이것은 고려되는 언어의 단어들의 형태(morphology) 혹은 구조(structure)의 복잡성(complexity)에 근거하여 시도될 수 있음); 질문 답변(question answering)(예를 들어, 이것은 인간-언어 질문에 대한 답변을 결정하는 것인데, 여기서 답변은 특정적(specific)일 수 있거나 혹은 개방적(open-ended)일 수 있음); 의미론적 프로세싱(semantic processing)(예를 들어, 이것은 임의의 단어를 식별하고 그 의미를 인코딩(encoding)한 이후에 일어날 수 있는 프로세싱이며, 그 식별된 단어를 유사한 의미들을 갖는 다른 단어들에 관련시키기 위한 프로세싱임)과 같은 것을 수행할 수 있다.
NLP 컴포넌트(112)는 오디오 입력 신호를 인식되는 텍스트로 변환하는데, 이러한 변환은 (예를 들어, 데이터 저장소(124) 내의) 오디오 파형(audio waveform)들의 저장된 대표 세트에 대비하여 입력 신호를 비교함으로써, 그리고 가장 근접하는 매칭들을 선택함으로써 이루어진다. 오디오 파형들의 세트는 데이터 저장소(124) 내에 저장될 수 있거나, 혹은 데이터 프로세싱 시스템(102)에 의해 액세스가능한 다른 데이터베이스 내에 저장될 수 있다. 대표 파형들은 사용자들의 대규모 세트에 걸쳐 발생되고, 그 다음에 사용자로부터의 발성 샘플(speech sample)들로 증강될 수 있다. 오디오 신호가, 인식되는 텍스트로 변환된 이후, NLP 컴포넌트(112)는 텍스트를 데이터 프로세싱 시스템(102)이 서빙(serving)할 수 있는 액션들과 (예를 들어, 사용자들에 걸친 훈련들을 통해, 혹은 수동적 특정(manual specification)을 통해) 관련되는 단어들에 매칭시킨다.
오디오 입력 신호는 클라이언트 컴퓨팅 디바이스(104)의 센서(134) 혹은 트랜스듀서(136)(예를 들어, 마이크로폰)에 의해 검출될 수 있다. 트랜스듀서(136), 오디오 드라이버(138), 혹은 다른 컴포넌트들을 통해, 클라이언트 컴퓨팅 디바이스(104)는 오디오 입력 신호를 (예를 들어, 네트워크(105)를 통해) 데이터 프로세싱 시스템(102)에 제공할 수 있고, 데이터 프로세싱 시스템(102)에서 오디오 입력 신호는 (예를 들어, 인터페이스(110)에 의해) 수신될 수 있고 그리고 NLP 컴포넌트(112)에 제공될 수 있거나, 혹은 데이터 저장소(124) 내에 저장될 수 있다.
NLP 컴포넌트(112)는 입력 오디오 신호를 획득할 수 있다. 입력 오디오 신호로부터, NLP 컴포넌트(112)는 적어도 하나의 요청 혹은 그 요청에 대응하는 적어도 하나의 트리거 키워드를 식별할 수 있다. 요청은 입력 오디오 신호의 의도 혹은 주된 내용을 표시할 수 있다. 트리거 키워드는 취해질 가능성이 높은 액션의 타입을 표시할 수 있다. 예를 들어, NLP 컴포넌트(112)는 입력 오디오 신호를 파싱하여 저녁식사 및 영화에 참석하기 위해 저녁에 집을 떠나도록 하는 적어도 하나의 요청을 식별할 수 있다. 트리거 키워드는 적어도 하나의 단어, 어구, 어근(root), 혹은 부분적 단어(partial word), 혹은 취해질 액션을 표시하는 파생어(derivative)를 포함할 수 있다. 예를 들어, 입력 오디오 신호로부터의 트리거 키워드 "go(가다)" 혹은 "to go to(로 가기 위해)"는 운송(transport)에 대한 필요를 표시할 수 있다. 이러한 예에서, 입력 오디오 신호(혹은 식별된 요청)는 운송에 대한 의도를 직접적으로 표현하지 않았지만, 트리거 키워드는 운송이, 요청에 의해 표시된 적어도 하나의 다른 액션에 대한 보조적 액션(ancillary action)임을 표시한다.
NLP 컴포넌트(112)는 입력 오디오 신호를 파싱하여 요청 및 트리거 키워드를 식별할 수 있고, 결정할 수 있고, 검색할 수 있고, 혹은 그렇지 않으면 획득할 수 있다. 예를 들어, NLP 컴포넌트(112)는 의미론적 프로세싱 기법을 입력 오디오 신호에 적용하여 트리거 키워드 혹은 요청을 식별할 수 있다. NLP 컴포넌트(112)는 의미론적 프로세싱 기법을 입력 오디오 신호에 적용하여 제 1 트리거 키워드 및 제 2 트리거 키워드와 같은 하나 이상의 트리거 키워드들을 포함하는 트리거 어구(trigger phrase)를 식별할 수 있다. 예를 들어, 입력 오디오 신호는 문장 "I need someone to do my laundry and my dry cleaning(나는 나의 세탁물 및 나의 드라이 클리닝을 처리할 누군가가 필요하다)"을 포함할 수 있다. NLP 컴포넌트(112)는 의미론적 프로세싱 기법 혹은 다른 자연 언어 프로세싱 기법을 이러한 문장을 포함하는 데이터 패킷들에 적용하여 트리거 어구들 "do my laundry(나의 세탁물을 처리)" 및 "do my dry cleaning(나의 드라이클리닝을 처리)"을 식별할 수 있다. NLP 컴포넌트(112)는 또한, "laundry(세탁물)" 및 "드라이 클리닝(dry cleaning)"과 같은 복수의 트리거 키워드들을 식별할 수 있다. 예를 들어, NLP 컴포넌트(112)는 트리거 어구가 트리거 키워드 및 또 다른 트리거 키워드를 포함하고 있음을 결정할 수 있다.
NLP 컴포넌트(112)는 입력 오디오 신호를 필터링하여 트리거 키워드를 식별할 수 있다. 예를 들어, 입력 오디오 신호를 지니고 있는 데이터 패킷들은 "It would be great if I could get someone that could help me go to the airport(만약 나를 공항으로 가게 도와 줄 수 있는 누군가를 내가 얻을 수 있게 된다면 그것은 정말 좋을 것이다)"를 포함할 수 있고, 이러한 경우 NLP 컴포넌트(112)는 다음과 같은 하나 이상의 용어들: "it", "would", "be", "great", "if", "I", "could", "get", "someone", "that", "could", 혹은 "help"를 필터링할 수 있다. 이러한 용어들을 필터링함으로써, NLP 컴포넌트(112)는 "go to the airport(공항으로 가다)"와 같은 트리거 키워드들을 더 정확하게 그리고 신뢰가능하게 식별할 수 있고, 그리고 이것은 택시 혹은 탑승 공유 서비스(ride sharing service)에 대한 요청임을 결정할 수 있다.
일부 경우들에서, NLP 컴포넌트는 입력 오디오 신호를 지니고 있는 데이터 패킷들이 하나 이상의 요청들을 포함하고 있음을 결정할 수 있다. 예를 들어, 입력 오디오 신호는 문장 "I need someone to do my laundry and my dry cleaning(나는 나의 세탁물 및 나의 드라이 클리닝을 처리할 누군가가 필요하다)"를 포함할 수 있다. NLP 컴포넌트(112)는 이것이 임의의 세탁물 서비스 및 임의의 드라이 클링닝 서비스에 대한 요청임을 결정할 수 있다. NLP 컴포넌트(112)는 이것이 세탁물 서비스들 및 드라이 클링닝 서비스들을 모두 제공할 수 있는 서비스 제공자에 대한 단일 요청임을 결정할 수 있다. NLP 컴포넌트(112)는 이것이 두 개의 요청들: 세탁물 서비스들을 수행하는 서비스 제공자에 대한 제 1 요청; 그리고 드라이 클링닝 서비스들을 수행하는 서비스 제공자에 대한 제 2 요청임을 결정할 수 있다. 일부 경우들에서, NLP 컴포넌트(112)는 복수의 결정된 요청들을 단일의 요청으로 결합할 수 있고, 그리고 이러한 단일 요청을 서비스 제공자 디바이스(108)로 전송할 수 있다. 일부 경우들에서, NLP 컴포넌트(112)는 개개의 요청들을 각각의 서비스 제공자 디바이스들(108)로 전송할 수 있거나, 또는 양쪽 요청들 모두를 동일한 서비스 제공자 디바이스(108)로 개별적으로 전송할 수 있다.
데이터 프로세싱 시스템(102)은 요청에 대한 응답으로 트리거 키워드에 근거하여 액션 데이터 구조를 발생시키도록 설계되고 구성된 다이렉트 액션 API(116)를 포함할 수 있다. 데이터 프로세싱 시스템(102)의 프로세서들은 자동차 공유 서비스로부터의 자동차와 같은 서비스 혹은 제품을 요청 혹은 주문하기 위해서 서비스 제공자 디바이스(108)에 대한 데이터 구조를 발생시키는 스크립트들을 실행하기 위해 다이렉트 액션 API(116)를 호출할 수 있다. 다이렉트 액션 API(116)는, 서비스 제공자 디바이스(108)로 하여금 자동차 공유 서비스로부터 자동차를 예약하는 것과 같은 동작을 수행할 수 있도록 하기 위해서 위치, 시간, 사용자 계정(user account)들, 물류 정보(logistical information), 혹은 다른 정보를 결정하기 위해 클라이언트 컴퓨팅 디바이스(104)로부터 최종 사용자 동의와 함께 수신된 데이터를 획득할 수 있고, 뿐만 아니라 데이터 저장소(124)로부터 데이터를 획득할 수 있다. 다이렉트 액션 API(116)를 사용하여, 데이터 프로세싱 시스템(102)은 또한, 본 예에서, 자동차 공유 픽업 예약을 수행함으로써 전환(conversion)을 완료하기 위해 서비스 제공자 디바이스(108)와 통신할 수 있다.
다이렉트 액션 API(116)는 데이터 프로세싱 시스템(102)에 의해 결정된 바와 같은 최종 사용자의 의도(intention)를 총족시키기 위해 임의의 특정된 액션을 실행할 수 있다. 그 입력들에서 특정된 액션에 따라, 다이렉트 액션 API(116)는 사용자 요청을 수행하기 위해 요구된 파라미터들을 식별시키는 코드 혹은 대화 스크립트(dialog script)를 실행할 수 있다. 이러한 코드는 예를 들어, 데이터 저장소(124) 내에서 가정 자동화 서비스(home automation service)의 명칭과 같은 추가적인 정보를 룩-업(look-up)할 수 있고, 또는 이러한 코드는 최종 사용자에게 임의의 요청된 택시의 의도된 목적지와 같은 질문들을 물어보기 위해서 클라이언트 컴퓨팅 디바이스(104)에서의 렌더링을 위한 오디오 출력을 제공할 수 있다. 다이렉트 액션 API(116)는 필요한 파라미터들을 결정할 수 있고, 그리고 다이렉트 액션 API(116)는 정보를 액션 데이터 구조로 패키징(packaging)할 수 있으며, 그 다음에 이러한 액션 데이터 구조는 콘텐츠 선택기 컴포넌트(118)와 같은 또 하나의 다른 다른 컴포넌트로 전송될 수 있거나 혹은 서비스 제공자 컴퓨팅 디바이스(108)로 전송될 수 있어 그 수행이 이루어지게 된다.
다이렉트 액션 API(116)는 액션 데이터 구조를 발생시키거나 혹은 구성하기 위해 데이터 프로세싱 시스템(102)의 NLP 컴포넌트(112) 혹은 다른 컴포넌트로부터 명령 혹은 커맨드(command)를 수신할 수 있다. 다이렉트 액션 API(116)는 데이터 저장소(124) 내에 저장된 템플릿 저장소(template repository)(132)로부터 임의의 템플릿을 선택하기 위해 액션의 타입을 결정할 수 있다. 액션들의 타입들은 예를 들어, 서비스들, 제품들, 예약들, 혹은 티켓(ticket)들을 포함할 수 있다. 액션들의 타입들은 또한, 서비스들 혹은 제품들의 타입들을 포함할 수 있다. 예를 들어, 서비스들의 타입들은, 자동차 공유 서비스, 음식 배달 서비스, 세탁물 서비스, 객실청소 서비스(maid service), 수리 서비스(repair service)들, 혹은 가사 서비스(household service)들을 포함할 수 있다. 제품들의 타입들은 예를 들어, 의류들, 신발들, 장난감들, 전자기기들, 컴퓨터들, 서적들, 혹은 보석을 포함할 수 있다. 예약들의 타입들은 예를 들어, 저녁식사 예약들 혹은 미용실 약속(appointment)들을 포함할 수 있다. 티겟들의 타입들은 예를 들어, 영화 티겟들, 스포츠 경기장 티켓(sports venue ticket)들, 혹은 비행 티켓들을 포함할 수 있다. 일부 경우들에서, 서비스들, 제품들, 예약들, 혹은 티켓들의 타입들은 가격, 위치, 배송(shipping)의 타입, 가용성(availability), 혹은 속성들에 근거하여 카테고리화(categorize)될 수 있다.
다이렉트 액션 API(116)는, 요청의 타입을 식별하는 경우, 템플릿 저장소(132)로부터 대응하는 템플릿에 액세스할 수 있다. 템플릿들은, 서비스 제공자 디바이스(108)의 요청된 후속 동작(예컨대, 픽업 위치에서 최종 사용자를 픽업하기 위해 택시를 보내고 최종 사용자를 목적지 위치까지 운송하는 동작과 같은 것)을 위해 다이렉트 액션 API(116)에 의해 채워질 수 있는 구조화된 데이터 세트 내의 필드들을 포함할 수 있다. 다이렉트 액션 API(116)는 요청 및 트리거 키워드의 하나 이상의 특성(characteristic)과 매칭되는 템플릿을 선택하기 위해 템플릿 저장소(132) 내에서 룩업을 수행할 수 있다. 예를 들어, 만약 해당 요청이 목적지까지의 자동차 혹은 탑승에 대한 요청에 대응한다면, 데이터 프로세싱 시스템(102)은 자동차 공유 서비스 템플릿을 선택할 수 있다. 자동차 공유 서비스 템플릿은 다음과 같은 필드들: 디바이스 식별자, 픽업 위치, 목적지 위치, 승객들의 수, 혹은 서비스의 타입 중 하나 이상의 필드를 포함할 수 있다. 다이렉트 액션 API(116)는 이러한 필드들을 값들로 채울 수 있다. 필드들을 값들로 채우기 위해, 다이렉트 액션 API(116)는 컴퓨팅 디바이스(104)의 하나 이상의 센서들(134) 혹은 컴퓨팅 디바이스(104)의 사용자 인터페이스로부터 정보를 핑(ping)할 수 있거나, 폴링할 수 있거나, 혹은 그렇지 않으면 획득할 수 있다.
폴링은 데이터 프로세싱 시스템(102)으로부터의 명령에 응답하여 데이터 프로세싱 시스템(102)에 의해 혹은 컴퓨팅 디바이스(104)에 의해 센서(134)와 같은 외부 디바이스의 정보를 능동적으로 샘플링(sampling)하는 것을 지칭할 수 있다. 폴링은 동기식 활동(synchronous activity)일 수 있다. 폴링하는 동안, 데이터 프로세싱 시스템(102)은 센서(134)가 자신의 준비 상태를 점검하는 것, 혹은 환경 상태를 검출하는 것, 혹은 센서(134)가 수행하도록 구성된 그러한 임의의 다른 기능 혹은 활동(예를 들어, 온도 판독치를 수집 및 기록하는 것; 주변 광 레벨을 검출하는 것; 위치를 결정하는 것; 압력을 결정하는 것; 고도(altitude)를 결정하는 것; 움직임의 속도를 결정하는 것; 혹은 움직임의 방향을 결정하는 것)을 수행하는 것을 기다릴 수 있다. 일부 경우들에서, 폴링은 적어도 부분적으로 하나 이상의 센서들(134)을 사용하여 수집된, 측정된, 검출된 혹은 그렇지 않으면 결정된 컴퓨팅 디바이스(104)로부터의 데이터를 요청하는 것을 지칭할 수 있다.
예를 들어, 다이렉트 액션 API(116)는 GPS 센서와 같은 위치결정 센서를 사용하여 소스 위치(source location)를 검출할 수 있다. 다이렉트 액션 API(116)는 컴퓨팅 디바이스(104)의 사용자의 말단에 설문조사, 프롬프트(prompt), 혹은 쿼리를 제출함으로써 추가 정보를 획득할 수 있다. 다이렉트 액션 API는 데이터 프로세싱 시스템(102)의 인터페이스(110)를 통해, 그리고 컴퓨팅 디바이스(104)의 사용자 인터페이스(예를 들어, 오디오 인터페이스, 음성-기반 사용자 인터페이스, 디스플레이, 혹은 터치 스크린)를 통해, 설문조사, 프롬프트, 혹은 쿼리를 제출할 수 있다. 따라서, 다이렉트 액션 API(116)는, 트리거 키워드 혹은 요청에 근거하여 액션 데이터 구조에 대한 템플릿을 선택할 수 있고; 하나 이상의 센서들(134)에 의해 검출된 혹은 사용자 인터페이스를 통해 획득된 정보로 템플릿 내의 하나 이상의 필드들을 채울 수 있고; 그리고 서비스 제공자 디바이스(108)에 의한 동작의 수행을 용이하게 하기 위해 액션 데이터 구조를 발생시킬 수 있거나, 생성할 수 있거나, 혹은 그렇지 않으면 구성할 수 있다.
데이터 프로세싱 시스템(102)은, 다양한 인자(factor)들, 예를 들어, 트리거 키워드, 요청, 써드 파티 제공자 디바이스(108), 써드 파티 제공자 디바이스(108)의 타입, 써드 파티 제공자 디바이스(108)가 속해 있는 카테고리(예를 들어, 택시 서비스, 세탁물 서비스, 원예 서비스, 혹은 음식 배달), 위치, 혹은 다른 센서 정보 중 하나 이상의 것을 포함하는 다양한 인자들에 근거하여 템플릿 데이터 구조(132)로부터 기반이 되는 템플릿을 선택할 수 있다.
트리거 키워드에 근거하여 템플릿을 선택하기 위해서, 데이터 프로세싱 시스템(102)은, 트리거 키워드에 맵핑되는 혹은 그렇지 않으면 대응하는 템플릿 데이터 구조를 식별하기 위해 트리거 키워드를 사용하여 템플릿 데이터베이스(132)에 관해 룩업 동작 혹은 다른 쿼리 동작을 수행할 수 있다. 예를 들어, 템플릿 데이터베이스(132) 내의 각각의 템플릿은, 써드 파티 제공자 디바이스(108)가 통신 세션을 확립하기 위해 프로세싱할 수 있는 트리거 키워드에 응답하여 템플릿이 액션 데이터 구조를 발생시키도록 구성되어 있음을 표시하기 위해 하나 이상의 트리거 키워드들과 관련될 수 있다.
일부 경우들에서, 데이터 프로세싱 시스템(102)은 트리거 키워드에 근거하여 써드 파티 제공자 디바이스(108)를 식별할 수 있다. 트리거 키워드에 근거하여 써드 파티 제공자(108)를 식별하기 위해서, 데이터 프로세싱 시스템(102)은 트리거 키워드에 맵핑되는 써드 파티 제공자 디바이스(108)를 식별하기 위해 데이터 저장소(124) 내에서 룩업을 수행할 수 있다. 예를 들어, 만약 트리거 키워드가 "ride(탑승)" 혹은 "to go to(로 가기 위해)"를 포함한다면, (예를 들어, 다이렉트 액션 API(116)를 통해) 데이터 프로세싱 시스템(102)은 써드 파티 제공자 디바이스(108)를 택시 서비스 회사 A에 대응하는 것으로서 식별할 수 있다. 데이터 프로세싱 시스템(102)은 써드 파티 제공자 디바이스(108)를 사용하여 템플릿 데이터베이스(132)로부터 템플릿을 선택할 수 있다. 예를 들어, 템플릿 데이터베이스(132)는 써드 파티 제공자 디바이스(108)가 통신 세션을 확립하기 위해 프로세싱할 수 있는 트리거 키워드에 응답하는 액션 데이터 구조를 발생시키도록 구성된 템플릿들과 써드 파티 제공자 디바이스들(108) 혹은 엔티티들 간의 맵핑 혹은 상관관계를 포함할 수 있다. 일부 경우들에서, 템플릿은 써드 파티 제공자 디바이스(108)에 대해 커스터마이징(customizing)될 수 있거나, 혹은 써드 파티 제공자 디바이스들(108)의 카테고리에 대해 커스터마이징될 수 있다. 데이터 프로세싱 시스템(102)은 써드 파티 제공자(108)에 대한 템플릿에 근거하여 액션 데이터 구조를 발생시킬 수 있다.
액션 데이터 구조를 구성하거나 혹은 발생시키기 위해, 데이터 프로세싱 시스템(102)은 값들로 채울 그 선택된 템플릿 내의 하나 이상의 필드들을 식별할 수 있다. 이러한 필드들은 수치적 값(numerical value)들, 문자 스트링(character string)들, 유니코드 값(Unicode value)들, 불린 로직(Boolean logic), 2진수 값(binary value)들, 16진수 값(hexadecimal value)들, 식별자들, 위치 좌표들, 지리적 영역들, 타임스탬프(timestamp)들, 혹은 다른 값들로 채워질 수 있다. 필드들 혹은 데이터 구조 자체는 데이터 보안을 유지하기 위해 암호화(encrypt)될 수 있거나, 혹은 마스킹(masking)될 수 있다.
템플릿 내의 필드들을 결정하는 경우, 데이터 프로세싱 시스템(102)은 액션 데이터 구조를 생성하기 위해서 템플릿의 필드들을 채울 필드들에 대한 값들을 식별할 수 있다. 데이터 프로세싱 시스템(102)은, 데이터 저장소(124)에 관해 룩업 혹은 다른 쿼리 동작을 수행함으로써 필드들에 대한 값들을 획득할 수 있거나, 검색할 수 있거나, 결정할 수 있거나, 혹은 그렇지 않으면 식별할 수 있다.
일부 경우들에서, 데이터 프로세싱 시스템(102)은 필드들에 대한 정보 혹은 값들이 데이터 저장소(124)로부터 존재하지 않음을 결정할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 저장소(124) 내에 저장된 정보 혹은 값들이 NLP 컴포넌트(112)에 의해 식별된 트리거 키워드 및 요청에 응답하는 액션 데이터 구조를 구성할 목적으로는 날짜가 지난 것, 혹은 신선하지 않은 것, 혹은 그렇지 않으면 적절하지 않은 것이라고 결정할 수 있다(예를 들어, 클라이언트 컴퓨팅 디바이스(104)의 위치는 오래된 위치일 수 있고 현재 위치가 아닐 수 있는 경우; 계정이 만료(expire)된 것일 수 있는 경우; 목적지 식당이 새로운 위치로 이동했을 수 있는 경우; 물리적 활동 정보; 혹은 운송(transportation)의 모드(mode)).
만약 데이터 프로세싱 시스템(102)이 템플릿의 필드들에 대한 값들 혹은 정보에 대해 데이터 프로세싱 시스템(102)의 메모리 내에서 현재 액세스를 가지지 못함을 결정한다면, 데이터 프로세싱 시스템(102)은 해당 값들 혹은 정보를 획득할 수 있다. 데이터 프로세싱 시스템(102)은, 클라이언트 컴퓨팅 디바이스(104)의 하나 이상의 이용가능한 센서들에게 질의(querying)하거나 혹은 그 이용가능한 센서들을 폴링함으로써, 또는 해당 정보에 대해 클라이언트 컴퓨팅 디바이스(104)의 최종 사용자에게 촉구함으로써, 또는 HTTP 프로토콜을 사용하여 온라인 웹-기반 리소스(online web-based resource)에 액세스함으로써, 정보를 얻을 수 있거나 혹은 획득할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 템플릿의 필요로하는 필드일 수 있는 클라이언트 컴퓨팅 디바이스(104)의 현재 위치를 자신이 가지고 있지 않음을 결정할 수 있다. 데이터 프로세싱 시스템(102)은 해당 위치 정보에 대해 클라이언트 컴퓨팅 디바이스(104)에게 질의할 수 있다. 데이터 프로세싱 시스템(102)은 클라이언트 컴퓨팅 디바이스(104)에게 글로벌 위치결정 시스템 센서(Global Positioning System sensor)와 같은 하나 이상의 위치결정 센서들(134), WIFI 삼각측량(triangulation), 셀 타워 삼각측량(cell tower triangulation), 블루투스 비콘(Bluetooth beacon)들, IP 어드레스(IP address), 혹은 다른 위치 감지 기법을 사용하여 위치 정보를 제공하도록 요청할 수 있다.
일부 경우들에서, 다이렉트 액션 API(116)는 센서 관리 컴포넌트(120)로부터의 센서 정보를 요청할 수 있다. 데이터 프로세싱 시스템(102)은 센서 관리 컴포넌트(120)를 포함할 수 있다. 센서 관리 컴포넌트(120)는 클라이언트 컴퓨팅 디바이스(104)로부터 분리되어 혹은 독립적으로 데이터 프로세싱 시스템(102) 상에서 실행될 수 있다. 일부 경우들에서, 센서 관리 컴포넌트(120)는 데이터 프로세싱 시스템(102) 상에서 실행되는 센서 관리 컴포넌트(120)와 인터페이스하도록 컴퓨팅 디바이스(104) 상에서 구성되는 하나 이상의 에이전트(agent)들, 스크립트들, 실행가능한것(executable)들을 포함할 수 있다.
센서 관리 컴포넌트(120)는 통신 세션의 특성을 측정하기 위한 하드웨어 혹은 소프트웨어를 포함할 수 있다. 예를 들어, 다이렉트 액션 API(116)는 요청에 대응하는 혹은 요청에 응답하는 액션 데이터 구조에 대한 템플릿을 트리거 키워드에 근거하여 선택할 수 있다. 템플릿은 채워질 하나 이상의 필드들을 포함할 수 있는데, 예컨대, 제 1 필드 및 제 2 필드를 포함할 수 있다. 이러한 필드들을 채우기 위해, 다이렉트 액션 API(116)는 센서 관리 컴포넌트(120)에게 질의할 수 있거나, 센서 관리 컴포넌트(120)로부터 요청할 수 있거나, 혹은 그렇지 않으면 센서 관리 컴포넌트(120)와 인터페이스할 수 있다. 센서 관리 컴포넌트(120)는 센서들(134)에 의한 리소스 이용을 감소시킴으로써 또는 센서들(134)과 관련된 컴퓨팅 디바이스(104)에 의한 리소스 이용을 감소시킴으로써 필드들에 대한 정보를 획득할 수 있다. 예를 들어, 센서 관리 컴포넌트(120)는 제 1 필드에 대한 정보를 획득하도록 구성된 복수의 이용가능한 센서들(134)을 식별할 수 있다. 복수의 이용가능한 센서들은 제 1 센서 및 제 2 센서를 포함할 수 있다. 센서 관리 컴포넌트(120)는 복수의 센서들 각각의 상태를 결정할 수 있다. 센서 관리 컴포넌트(120)는 이러한 상태에 근거하여 복수의 센서들 중 제 1 센서를 선택할 수 있다. 센서 관리 컴포넌트(120)는 제 1 필드에 대응하는 데이터에 대해 제 1 센서를 폴링할 수 있다. 다이렉트 액션 API(116)는 제 1 센서의 폴링에 응답하여 센서 관리 컴포넌트에 의해 수신된 데이터로 제 1 필드를 채울 수 있다.
센서 관리 컴포넌트(120)는 복수의 이용가능한 센서들(134)을 식별할 수 있다. 센서 관리 컴포넌트(120)는 컴퓨팅 디바이스(104)와 관련된 최종 사용자 계정에 대해 이용가능한 센서들(134)의 리스트를 데이터 저장소(124) 내에 저장할 수 있다. 센서들(134)은 이용가능한 것으로서의 상태를 가질 수 있다. 이용가능한(available) 상태는 센서가 온라인 모드(online mode), 활성 모드(active mode), 대기 모드(standby mode), 혹은 저전력 모드(low power mode)에 있는 것을 지칭할 수 있다. 만약 센서가 진단 테스트 혹은 프로세스를 통과한다면 이용가능할 수 있다. 일부 경우들에서, 만약 컴퓨팅 디바이스(104)가 센서(134)를 온라인 상태가 되게 하도록 명령을 받을 수 있다면 센서(134)가 오프라인 상태인 경우에도 센서(134)는 이용가능할 수 있다. 만약 센서(134)가 오프라인 상태라면, 또는 핑에 대해 적시에 응답하지 않는다면, 또는 오동작(malfunctioning)하고 있다면, 또는 오류가 있는 혹은 일관성 없는 값들을 제공한다면, 또는 진단 테스트 혹은 프로세스에 실패한다면, 센서(134)의 상태는 비이용가능한(unavailable) 상태일 수 있다.
일부 경우들에서, 클라이언트 컴퓨팅 디바이스(104)는 통신 세션이 확립되는 경우 센서 상태 정보를 센서 관리 컴포넌트(120)에게 푸시(push)할 수 있다. 일부 경우들에서, 센서 관리 컴포넌트(120)는 이용가능한 센서들(134)의 리스트에 대한 계정 식별자와 관련된 클라이언트 컴퓨팅 디바이스(104) 혹은 하나 이상의 클라이언트 컴퓨팅 디바이스들(104)에게 임의의 요청을 전송할 수 있다. 센서 관리 컴포넌트(120)는 하나 이상의 컴퓨팅 디바이스들(104)의 세트를 식별할 수 있는데, 이러한 식별은 컴퓨팅 디바이스의 서로에 대한 근접도(proximity)에 근거하여, 또는 하나 이상의 컴퓨팅 디바이스들(104)과 관련된 네트워크 활동에 근거하여 이루어진다(예를 들어, 최종 사용자가 데이터 프로세싱 시스템(102) 혹은 데이터 프로세싱 시스템(102)의 컴포넌트와의 상호작용을 위해 하나 이상의 컴퓨팅 디바이스들(104)을 능동적으로 사용하고 있을 수 있는 경우). 일부 경우들에서, 데이터 프로세싱 시스템(102)은 임의의 시간 간격에 근거하여 센서 관리 컴포넌트에 의해 사용된 이전에 알려진 모든 센서들(134)을 폴링할 수 있다.
따라서, 데이터 프로세싱 시스템(102)은 템플릿의 제 1 필드를 채우기 위한 데이터를 제공할 수 있는 그리고 이러한 데이터를 제공하기 위해 이용가능한 복수의 센서들을 식별할 수 있다. 그 다음에, 데이터 프로세싱 시스템은 데이터를 수신하기 위해서 센서들 중 하나(혹은 센서들의 서브세트)를 선택할 수 있다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호를 제공했던 컴퓨팅 디바이스(104)에 결합되지 않은 센서를 폴링할 것을 결정할 수 있다. 예를 들어, 최종 사용자는 입력 오디오 신호를 제공하기 위해 제 1 컴퓨팅 디바이스(104)를 사용할 수 있다. 제 1 컴퓨팅 디바이스(104)는 제 1 컴퓨팅 디바이스(104)에 결합된 제 1 센서(134)를 포함할 수 있다. 데이터 프로세싱 시스템은 최종 사용자 계정과 또한 관련되어 있는 제 2 컴퓨팅 디바이스(104)가 존재함을 결정할 수 있다(예를 들어, 제 1 컴퓨팅 디바이스(104)와 제 2 컴퓨팅 디바이스(104)가 모두 데이터 프로세싱 시스템(102)과의 핸드쉐이킹 프로세스(handshaking process)를 성공적으로 수행했던 경우). 제 2 컴퓨팅 디바이스(104)는 제 1 컴퓨팅 디바이스(104)에 근접하여 있을 수 있고, 혹은 그렇지 않으면 데이터 프로세싱 시스템(102)은 제 2 컴퓨팅 디바이스(104)가 또한 템플릿의 제 1 필드를 채울 충분한 품질의 데이터를 제공할 수 있음을 결정할 수 있다(예를 들어, 두 개의 센서들에 의해 제공되게 되는 위치 정보가 25 미터, 50 미터, 75 미터, 혹은 100 미터와 같은 임의의 허용 레벨(tolerance level) 내에 있는 경우). 데이터 프로세싱 시스템(102)은, 비록 제 1 컴퓨팅 디바이스(104)가 데이터 프로세싱 시스템(102)과의 통신을 호출했거나, 개시시켰거나, 혹은 확립했을지라도, 제 1 컴퓨팅 디바이스에 결합된 제 1 센서(134) 대신 제 2 컴퓨팅 디바이스(104)에 결합된 제 2 센서(134)를 사용할 것을 결정할 수 있다. 데이터 프로세싱 시스템(102)은, NLP 컴포넌트(112)에게 입력 오디오 신호를 제공했던 제 1 컴퓨팅 디바이스(104)에 결합된 제 1 센서(134) 대신 제 2 컴퓨팅 디바이스에 결합된 제 2 센서(134)를 사용할 것을 결정하기 위해 리소스 감소 정책(resource reduction policy)을 사용할 수 있다. 데이터 프로세싱 시스템(102)은 제 2 컴퓨팅 디바이스(104)를 사용할 것을 결정할 수 있는데, 왜냐하면 제 2 컴퓨팅 디바이스(104)가 더 많은 잔존 배터리를 가질 수 있기 때문에, 또는 더 큰 리소스 가용성을 가질 수 있기 때문에, 또는 더 높은 품질 혹은 더 정확한 데이터를 제공하여 결과적으로 센서 정보에 대한 후속 요청들이 더 적어질 수 있게 하도록 구성될 수 있기 때문이다.
일부 경우들에서, 센서 관리 컴포넌트(120)는, 제 1 센서로 하여금 제 1 환경 상태(예를 들어, 위치, 속도, 온도, 주변 광, 주변 사운드, 등)를 검출하게 함으로써, 반면 제 2 센서에 의해 이전에 검출된 제 2 환경 상태를 메모리로부터 검색함으로써, 리소스 이용을 감소시킬 수 있다. 제 2 센서에게 환경 상태를 검출하기 위해 온라인 상태가 되도록 혹은 활성화되도록 명령하는 대신에, 센서 관리 컴포넌트(120)는 리소스 이용을 감소시키기 위해 이전에 검출된 값을 메모리로부터 검색할 수 있다. 예를 들어, 센서 관리 컴포넌트는 제 1 필드에 대응하는 데이터에 대해 제 1 센서를 폴링할 수 있고, 반면 제 2 필드에 대응하는 데이터를 컴퓨팅 디바이스(104)의 메모리로부터 획득할 수 있다. 제 2 데이터는 데이터 프로세싱 시스템(102)이 제 2 데이터를 요청하기 전에 컴퓨팅 디바이스(104)의 메모리 내에 저장될 수 있다. 센서 관리 컴포넌트(120)는 다이렉트 액션 API(116)로부터 수신된 제 2 센서로부터의 데이터에 대한 요청에 응답하여 제 2 센서(134)를 폴링하지 않을 수 있다. 센서 관리 컴포넌트(120)는 제 1 필드에 대응하는 데이터에 대해 제 1 센서를 폴링할 것을 결정할 수 있지만, 제 2 필드에 대응하는 데이터에 대해 제 2 센서를 폴링하지 않을 것을 결정할 수 있다. 센서 관리 컴포넌트(120)는 하나 이상의 센서들을 폴링할 지 아니면 폴링하지 않을 지를 결정하기 위해 임의의 정책, 로직, 혹은 규칙들의 세트를 사용할 수 있다. 예를 들어, 이러한 정책, 로직, 혹은 규칙들의 세트는, 조건부 규칙(conditional rule)들, 만약/그렇다면 조건(if/then condition)들, 트리거 이벤트(trigger event)들, 허용치(tolerance)들, 임계치(threshold)들, 시간 간격(time interval), 위치(location), 지리적 펜싱(geographical fencing), 혹은 활동의 타입을 포함할 수 있거나, 혹은 이러한 것들에 기반을 둘 수 있다. 예를 들어, 센서 관리 컴포넌트(120)는 위치 정보에 대해 제 1 센서를 폴링할 것을 선택할 수 있는데, 왜냐하면 임의의 시간 간격(예를 들어, 10 초, 5 초, 20 초, 30 초, 1 분 혹은 그 이상의 시간 간격)에 근거하여 데이터 프로세싱 시스템(102)에 의해 수신된 마지막 위치 데이터가 만료되었을 수 있기 때문이다. 데이터 프로세싱 시스템(102)은 제 2 센서에 대한 데이터를 메모리로부터 획득할 수 있는데, 왜냐하면 제 2 센서는 온도 센서일 수 있고 그리고 데이터 프로세싱 시스템(102)은 마지막 온도 측정이 검출되어 메모리에 저장된 때의 타임스탬프가 임의의 시간 간격(예를 들어, 1 분, 2 분, 3 분, 5 분, 10 분, 20 분, 30 분 혹은 그 이상의 시간 간격)을 충족시킬 수 있음을 결정할 수 있기 때문이다.
센서 관리 컴포넌트(120)는 데이터의 타입에 근거하여 데이터를 수집하기 위해 센서의 구성을 조정할 수 있다. 예를 들어, 센서 관리 컴포넌트(120)는 센서에 대한 샘플 레이트(sample rate), 샘플 간격(sample interval), 혹은 샘플 지속시간(sample duration)을 조정할 수 있다. 센서 관리 컴포넌트(120)는 샘플 레이트를 증가시킬 수 있거나 혹은 감소시킬 수 있다. 샘플 레이트는 측정 시간 간격 동안 취해지는 샘플들의 개수를 지칭할 수 있다. 샘플 레이트는, 예를 들어, .005 Hz, 0.01 Hz, 0.015 Hz, 0.02 Hz, 0.05 Hz, 0.1 Hz, 0.2 Hz, 0.5 Hz, 0.7 Hz, 1 Hz, 2 Hz, 3 Hz, 5 Hz, 10 Hz를 포함할 수 있거나, 혹은 센서 리소스 이용을 최적화시키면서 액션 데이터 구조를 생성하기 위한 데이터를 제공하는 어떤 다른 샘플 레이트를 포함할 수 있다(여기서, 데이터는 과도한 데이터 수집 없이 임의의 동작을 수행하기 위해 허용 레벨 내에 있는 데이터임).
센서 관리 컴포넌트(120)는 샘플 간격을 조정할 수 있다. 샘플 간격은 센서가 턴온(turn on)될 때 혹은 센서 데이터를 능동적으로 수집하고 있는 때에 대한 시간 주기(time period)를 지칭할 수 있다. 샘플 지속시간은 센서가 샘플 레이트에서 능동적으로 데이터를 수집하기 위해 얼마나 오랫동안 턴온되어 있는지를 지칭할 수 있다. 예를 들어, 센서 관리 컴포넌트(120)는 센서에게 매 5 분(예를 들어, 샘플 간격)마다 턴온되어 30초의 지속시간(예를 들어, 샘플 지속시간) 동안 1 Hz(예를 들어, 샘플 레이트)에서 센서 데이터를 수집하도록 명령할 수 있거나 지령(command)할 수 있다. 정책 데이터 구조(128) 내에 저장된 정책들은 센서의 타입, 활동의 타입, 혹은 다른 특성들에 근거하여 샘플 레이트, 샘플 간격, 혹은 샘플 지속시간에 대해 상이한 값들을 포함할 수 있다.
일부 경우들에서, 센서 관리 컴포넌트(120)는 하나 이상의 센서들을 디스에이블시킬 수 있다. 센서 관리 컴포넌트(120)는 센서에 의해 수집된 데이터의 특성에 근거하여, 혹은 이러한 특성에 응답하여 센서를 디스에이블시킬 수 있다. 센서 관리 컴포넌트(120)는 센서를 일시적으로 혹은 영구적으로 디스에이블시킬 수 있다. 센서(134)를 디스에이블시키는 것은 센서가 센서 데이터를 수집하는 것 혹은 검출하는 것 또는 다른 측정들을 획득하는 것을 막을 수 있다. 일부 경우들에서, 센서를 디스에이블시키는 것은 센서를 제어하는 혹은 센서와 인터페이스하는 API 혹은 전자 하드웨어(electronic hardware)를 디스에이블시키는 것 혹은 턴오프(turn off)시키는 것을 지칭할 수 있다. 예를 들어, 컴퓨팅 디바이스(102)는 센서(134)를 디스에이블시키도록 하는 센서 관리 컴포넌트(120)로부터의 명령에 응답하여 데이터에 대해 센서를 폴링하는 것, 그리고 데이터를 수집하는 것, 그리고 데이터를 저장하는 것을 멈출 수 있다.
센서 관리 컴포넌트(120)는 제 1 센서를 디스에이블시키기 위해 리소스 이용 감소 정책을 제 1 센서에 의해 수집된 데이터의 특성에 적용할 수 있다. 데이터의 특성은, 데이터의 품질, 데이터의 양, 센서의 성능을 표시하는 데이터, 또는 데이터의 수집을 계속하기 위한 컴퓨팅 리소스 혹은 배터리 파워의 가용성을 표시하는 데이터를 포함할 수 있거나, 이러한 것들을 지칭할 수 있다. 예를 들어, 데이터는 센서가 오동작하고 있음, 혹은 교정되지 않음, 혹은 그렇지 않으면 오류가 있는 데이터를 수집하고 있음을 표시할 수 있다. 후속의 오류가 있는 데이터의 수집을 막기 위해 아울러 리소스들(예를 들어, 배터리 파워, 프로세싱 파워, 혹은 대역폭)의 낭비를 막기 위해, 센서 관리 컴포넌트(120)는 임의의 기간 동안 센서(134)를 디스에이블시킬 수 있다. 센서 관리 컴포넌트(120)는 이러한 기간 이후 센서를 폴링할 수 있고 그 시간에 데이터를 평가(assess)할 수 있다. 만약 데이터가 다시 만족스럽지 못하다면(예를 들어, 데이터가 다른 센서들에 의해 수집된 데이터, 이력적 데이터, 데이터의 타입, 데이터의 포맷과 일관되지 않는다면), 센서 관리 컴포넌트(120)는 다시 임의의 시간 간격 동안 센서를 디스에이블시킬 수 있는데, 이러한 시간 간격은 첫 번째 시간 간격보다 더 길 수 있거나, 혹은 센서가 수리될 때까지 영구적일 수 있다.
일부 경우들에서, 제 1 센서로부터 수집된 데이터는 동일한 컴퓨팅 디바이스 혹은 또 하나의 다른 컴퓨팅 디바이스의 제 2 센서를 디스에이블시키기 위해 센서 관리 컴포넌트(120)에 의해 분석될 수 있다. 예를 들어, 배터리 센서는 배터리가 낮은 파워를 갖고 있음(예를 들어, 배터리 파워의 20%만이 잔존하고 있음)을 표시할 있고, 이 경우 배터리 센서는 디바이스(104)의 하나 이상의 센서들을 디스에이블시킬 수 있다. 또 하나의 다른 예에서, 온도 센서는 디바이스가 과열되고 있음을 표시할 수 있고, 이에 응답하여 센서 관리 컴포넌트(120)는 위치결정 센서 혹은 다른 센서를 디스에이블시킬 수 있다.
일부 경우들에서, 데이터 프로세싱 시스템은 동일한 혹은 유사한 타입의 정보(예를 들어, 위치 정보, 활동 정보, 속도, 온도, 주변 광, 혹은 주변 사운드)를 획득하도록 구성된 복수의 이용가능한 센서들(134)을 식별할 수 있다. 센서 관리 컴포넌트(120)는 만약 센서(134)가 적절하게 기능하고 있다면 센서(134)가 이용가능하다고 결정할 수 있고, 그리고 데이터에 대한 요청들에 응답할 수 있고, 또는 검출된 데이터를 (데이터 프로세싱 시스템(102)으로 데이터를 라우팅(routing)시키기 위해 네트워크(104)에 연결된) 컴퓨팅 디바이스(104)로 전달할 수 있다. 센서 관리 컴포넌트(120)는 만약 센서(134)가 컴퓨팅 디바이스(104)의 최종 사용자에 근접하여 있다면, 또는 그렇지 않으면 액션 데이터 구조를 발생시키기 위해 사용되는 관련 데이터를 수집하기 위한 위치에 있거나 혹은 그러한 관련 데이터를 수집하도록 구성되어 있다면, 센서(134)가 이용가능하다고 결정할 수 있다.
예를 들어, 센서 관리 컴포넌트(120)는 위치 정보를 수집하도록 구성된 두 개의 센서들이 존재하고 이러한 센서들이 모두 컴퓨팅 디바이스(104)의 최종 사용자의 계정과 모두 관련되어 있음을 결정할 수 있다. 센서 관리 컴포넌트(120)는 양쪽 센서들이 모두 최종 사용자에 근접하여 있음을 결정할 수 있는데, 왜냐하면 두 개의 센서들에 의해 수집된 데이터의 비교에 근거하여 이러한 센서들이 모두 유사한 위치 정보를 수집하고 있기 때문이다. 임의의 정책을 적용하는 센서 관리 컴포넌트(120)는 양쪽 센서들이 모두 동작하게 하는 것과 비교하여 리소스 소비를 감소시키기 위해 해당 위치 데이터에 대해 센서들 중 단지 하나의 센서만을 폴링하고 나머지 센서는 디스에이블시킬 것을 결정할 수 있다. 예를 들어, 두 개의 센서들은 모두 최종 사용자에 근접하여 있는 두 개의 상이한 컴퓨팅 디바이스들(104)(예컨대, 스마트폰과 스마트워치(smartwatch)) 상에 구성될 수 있다. 센서 관리 컴포넌트(120)는 두 개의 상이한 컴퓨팅 디바이스들(104)의 배터리 상태를 결정할 수 있고, 그리고 더 큰 잔존 배터리 파워를 갖는 컴퓨팅 디바이스(104) 상에 구성된 (두 개의 센서들 중) 하나의 센서를 선택할 수 있다. 잔존 배터리 파워는, 잔존 파워의 퍼센티지(percentage), 잔존 파워의 절대치(absolute), 혹은 현재 이용 상태(예를 들어, 프로세서 혹은 메모리 이용 상태, 센서 이용 상태, 네트워크 인터페이스 이용 상태) 하에서 배터리가 컴퓨팅 디바이스(104)에게 파워를 공급할 수 있는 시간의 추정된 양일 수 있다. 따라서, 센서 관리 컴포넌트(120)는 배터리 소비를 줄이기 위해 센서들 중 하나의 센서를 디스에이블시킬 수 있고, 그리고 활성화된 센서로부터의 위치 정보를 요청할 수 있다.
일부 경우들에서, 센서 관리 컴포넌트(120)는 이전에 수집된 정보로부터 해당 정보를 얻을 수 있다. 예를 들어, 센서 관리 컴포넌트는 위치 정보를 획득하도록 구성된 복수의 이용가능한 센서들이 최종 사용자에 근접하여 있음을 결정할 수 있다. 복수의 이용가능한 센서들은 제 1 센서, 제 2 센서, 혹은 제 3 센서를 포함할 수 있다. 센서 관리 컴포넌트(120)는 (예를 들어, 임계 시간(예컨대, 1 초, 2 초, 3 초, 혹은 그 이상의 시간) 내에서) 제 1 센서가 최종 사용자의 현재 위치 정보를 수집했음을 결정할 수 있다. 이러한 정보는 다이렉트 액션 API가 센서 관리 컴포넌트(120)로부터의 센서 정보를 요청하기 전에 수집된 것일 수 있다. 더욱이, 센서 관리 컴포넌트(120)는 제 3 센서가 오프라인 상태에 있고 현재 위치 정보를 가지고 있지 않음을 결정할 수 있다. 따라서, 제 3 센서에게 온라인 상태에 진입하여 리소스들을 소비하도록 명령하기보다는 오히려, 센서 관리 컴포넌트(120)는, 제 3 센서가 오프라인 상태 혹은 저전력 상태에 남아 있도록 하면서, 제 1 센서로부터의 정보를 사용할 것을 결정할 수 있거나, 혹은 업데이트된 위치 정보를 수집하기 위해 제 1 센서를 폴링할 것을 결정할 수 있다.
일부 경우들에서, 센서 관리 컴포넌트(120)는 클라이언트 디바이스(104)로 하여금 수집된 센서 데이터의 일괄 업로드를 수행하도록 명령할 수 있다. 수집된 센서 데이터의 일괄 업로드는 데이터가 센서(134)에 의해 수집됨에 따라 데이터를 개별적으로 업로드하는 것 혹은 데이터를 스트리밍으로 업로드하는 것과 비교하여 리소스 소비를 감소시킬 수 있다. 클라이언트 디바이스(104)는 오프라인 상태로부터 온라인 상태에 진입하는 것(예를 들어, 네트워크(104)에 대한 연결을 회복(regaining)시키는 것; 턴온되는 것; 혹은 GPS 위성에 대한 시선(line-of-sight) 내에 있게 되는 것)에 응답하여 일괄 업로드를 수행할 수 있다. 일부 경우들에서, 센서 관리 컴포넌트(120)는 컴퓨팅 디바이스(104)로 하여금 임의의 지오펜스(geofence)에 들어가는 경우 혹은 임의의 지오펜스에서 나오는 경우와 같은 임의의 위치(예를 들어, 소매점 위치, 또는 다른 물리적 위치 혹은 영역)에 근거하여 일괄 업로드를 수행하도록 명령할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스(104) 상에 인스톨된 애플리케이션의 리스트를 업로드할 수 있다(예를 들어, 이것은 컴퓨팅 디바이스의 저장소에 액세스함으로써 혹은 인스톨된 애플리케이션들을 저장하고 있는 다른 데이터베이스에 액세스함으로써 이루어질 수 있음).
다이렉트 액션 API(116)는 제 1 센서의 폴링에 응답하여 센서 관리 컴포넌트(120)에 의해 수신된 데이터로 하나 이상의 필드들(예를 들어, 제 1 필드)을 채울 수 있다. 다이렉트 액션 API(116)는 리소스 소비를 감소시키기 위해 클라이언트 디바이스의 메모리로부터 센서 관리 컴포넌트(120)에 의해 수신된 데이터로 제 2 필드를 채울 수 있다. 그 다음에, 다이렉트 액션 API(116)는 템플릿의 제 1 필드 및 제 2 필드에 근거하여 액션 데이터 구조를 발생시킬 수 있다.
다이렉트 액션 API(116)는 액션 데이터 구조를 써드 파티 제공자 디바이스(108)(예를 들어, 서비스 제공자 디바이스(108))로 전송하여 써드 파티 제공자 디바이스(108)로 하여금 동작 세션을 호출하도록 할 수 있다. 동작 세션은 써드 파티 제공자 디바이스(108)가 임의의 동작, 예컨대, 요청된 서비스를 수행하는 것, 요청된 제품을 구입하는 것, 또는 써드 파티 제공자 디바이스(108)와 클라이언트 컴퓨팅 디바이스(104) 간의 동작 세션 혹은 통신 세션을 확립하기 위해 대화형 애플리케이션 프로그래밍 인터페이스(conversational application programming interface)(예를 들어, 서비스 제공자 NLP 컴포넌트(142))를 호출하는 것과 같은 동작을 액션 데이터 구조를 이용해 혹은 액션 데이터 구조에 근거하여 수행하는 것을 지칭할 수 있거나, 이러한 동작을 수행하는 것을 포함할 수 있다. 서비스 제공자 디바이스(108)와 클라이언트 컴퓨팅 디바이스(104) 간의 동작 세션 혹은 통신 세션을 확립함에 응답하여, 서비스 제공자 디바이스(108)는 네트워크(105)를 통해 직접적으로 데이터 패킷들을 클라이언트 컴퓨팅 디바이스(104)로 전송할 수 있다. 일부 경우들에서, 서비스 제공자 디바이스(108)는 데이터 패킷들을 데이터 프로세싱 시스템(102) 및 네트워크(105)를 통해 클라이언트 컴퓨팅 디바이스(104)로 전송할 수 있다.
데이터 프로세싱 시스템(102)은 써드 파티 제공자 디바이스(108)로부터 써드 파티 제공자 디바이스(108)가 클라이언트 디바이스(104)와 동작 세션을 확립했다는 표시를 수신할 수 있다. 예를 들어, 이러한 표시는 수행되는 동작의 타입(예를 들어, 택시 서비스와 같은 서비스를 제공하는 것; 제품을 구입하는 것; 쿼리에 응답하는 것)을 식별시킬 수 있다. 데이터 프로세싱 시스템(102)은 또한, 임의의 동작이 동작 세션 동안 수행되었다는 표시(예를 들어, 택시가 최종 사용자를 픽업했고 최종 사용자를 목적지 위치까지 운송했다는 표시)를 수신할 수 있다. 동작이 수행되었다는 표시는 예를 들어, 최종 사용자의 식별자, 타임스탬프, 동작의 타입, 써드 파티 서비스 제공자(108)의 식별자, 혹은 가격을 포함하는 동작 데이터 구조를 통해 제공될 수 있다. 동작 데이터 구조는 템플릿 데이터 구조(132)로부터의 임의의 템플릿을 사용하여 형성될 수 있다. 템플릿은 모든 동작들에 대해 표준형일 수 있거나, 혹은 동작의 타입에 근거하여 커스터마이징될 수 있다.
일부 경우들에서, 써드 파티 제공자 디바이스(108)는 대화형 API(142)의 적어도 일부를 실행할 수 있다. 예를 들어, 써드 파티 제공자 디바이스(108)는 통신 세션의 특정 양상(aspect)들 혹은 쿼리들의 타입들을 처리할 수 있다. 써드 파티 제공자 디바이스(108)는, 통신 세션과 관련된 오디오 신호들을 프로세싱하는 것 그리고 쿼리들에 대한 응답들을 발생시키는 것을 용이하게 하기 위해 데이터 프로세싱 시스템(102)에 의해 실행되는 NLP 컴포넌트(112)를 이용(leverage)할 수 있다. 일부 경우들에서, 데이터 프로세싱 시스템(102)은 써드 파티 제공자(108)에 대해 구성된 대화형 API(142)를 포함할 수 있다. 일부 경우들에서, 데이터 프로세싱 시스템은 통신 세션을 확립하기 위해 클라이언트 컴퓨팅 디바이스와 써드 파티 제공자 디바이스 간의 데이터 패킷들을 라우팅한다. 데이터 프로세싱 시스템(102)은 써드 파티 제공자 디바이스(108)로부터 써드 파티 제공자 디바이스가 클라이언트 디바이스(104)와 통신 세션을 확립했다는 표시를 수신할 수 있다. 이러한 표시는 클라이언트 컴퓨팅 디바이스(104)의 식별자, 통신 세션이 확립됐었을 때에 대응하는 타임스탬프, 혹은 통신 세션과 관련된 다른 정보, 예컨대, 통신 세션과 관련된 액션 데이터 구조를 포함할 수 있다. 일부 경우들에서, 데이터 프로세싱 시스템(102)은, 동작 세션 혹은 통신 세션을 관리하기 위한 세션 핸들러 컴포넌트(114)와, 그리고 데이터를 수집하기 위해 센서들을 관리 혹은 선택하기 위한 센서 관리 컴포넌트(120)를 포함할 수 있다.
데이터 프로세싱 시스템(102)은 클라이언트 디바이스(104)와 데이터 프로세싱 시스템(102) 간의 통신 세션을 확립하기 위해 세션 핸들러 컴포넌트(114)를 포함할 수 있거나, 세션 핸들러 컴포넌트(114)를 실행시킬 수 있거나, 세션 핸들러 컴포넌트(114)에 액세스할 수 있거나, 혹은 그렇지 않으면 세션 핸들러 컴포넌트(114)와 통신할 수 있다. 통신 세션은 클라이언트 디바이스(104)와 데이터 프로세싱 시스템(102) 간의 하나 이상의 데이터 전송들을 지칭할 수 있으며, 이러한 하나 이상의 데이터 전송들은 클라이언트 디바이스(104)의 센서(134)에 의해 검출된 입력 오디오 신호와 그리고 데이터 프로세싱 시스템(102)에 의해 클라이언트 디바이스(104)로 전송되는 출력 신호를 포함한다. (예를 들어, 세션 핸들러 컴포넌트(114)를 통해) 데이터 프로세싱 시스템(102)은 입력 오디오 신호를 수신함에 응답하여 통신 세션(예를 들어, 동작 세션)을 확립할 수 있다. 데이터 프로세싱 시스템(102)은 통신 세션에 대한 지속시간을 설정할 수 있다. 데이터 프로세싱 시스템(102)은 통신 세션에 대해 설정된 지속시간 동안 타이머(timer) 혹은 카운터(counter)를 설정할 수 있다. 타이머의 만료에 응답하여, 데이터 프로세싱 시스템(102)은 통신 세션을 종료할 수 있다.
통신 세션은 클라이언트 디바이스(104)가 통신 세션을 확립하기 위해 인증 정보 혹은 증명서(credential)들을 제공하는 네트워크-기반 통신 세션을 지칭할 수 있다. 일부 경우들에서, 통신 세션은 통신 세션 동안 데이터 패킷들에 의해 운반되는 오디오 신호들의 토픽 혹은 맥락(context)을 지칭할 수 있다. 예를 들어, 제 1 통신 세션은, 클라이언트 디바이스(104)와 데이터 프로세싱 시스템(102) 간에 전달되는 오디오 신호들로서, 택시 서비스와 관련된(예를 들어, 키워드들, 액션 데이터 구조들, 혹은 콘텐츠 아이템 오브젝트들을 포함하는) 오디오 신호들을 지칭할 수 있고; 그리고 제 2 통신 세션은, 클라이언트 디바이스(104)와 데이터 프로세싱 시스템(102) 간에 전달되는 오디오 신호들로서, 세탁물 및 드라이 클리닝 서비스와 관련된 오디오 신호들을 지칭할 수 있다. 이러한 예에서, 데이터 프로세싱 시스템(102)은 (NLP 컴포넌트(112)를 통해) 오디오 신호들의 맥락이 상이함을 결정할 수 있고, 그리고 오디오 신호들의 두 개의 세트들을 상이한 통신 세션들로 분리할 수 있다. 세션 핸들러(114)는 드라이 클리닝 및 세탁물 서비스와 관련된 하나 이상의 오디오 신호들을 식별함에 응답하여 탑승 서비스와 관련된 제 1 세션을 종료할 수 있다. 따라서, 데이터 프로세싱 시스템(102)은 오디오 신호들의 맥락을 검출함에 응답하여 드라이 클리닝 및 세탁물 서비스와 관련된 오디오 신호들에 대한 제 2 세션을 개시시킬 수 있거나, 혹은 확립할 수 있다.
데이터 프로세싱 시스템(102)은, 자연 언어 프로세서에 의해 식별된 트리거 키워드를 수신하는 것, 그리고 실시간 콘텐츠 선택 프로세스를 통해 트리거 키워드에 근거하여 콘텐츠 아이템을 선택하는 것을 수행하기 위해, 콘텐츠 선택기 컴포넌트(118)를 포함할 수 있거나, 콘텐츠 선택기 컴포넌트(118)를 실행시킬 수 있거나, 혹은 그렇지 않으면 콘텐츠 선택기 컴포넌트(118)와 통신할 수 있다. 일부 경우들에서, 다이렉트 액션 API(116)는, 실시간 콘텐츠 선택 프로세스를 수행하는 것, 그리고 콘텐츠 제공자 디바이스(106)(혹은 써드 파티 제공자 디바이스(108))와 클라이언트 컴퓨팅 디바이스(104) 간의 통신 세션을 확립하는 것을 수행하기 위해 액션 데이터 구조를 콘텐츠 선택기 컴포넌트(118)로 전송할 수 있다.
콘텐츠 선택 프로세스는 써드 파티 콘텐츠 제공자들(106)에 의해 제공되는 후원받는 콘텐츠 아이템 오브젝트들을 선택하는 것을 지칭할 수 있거나, 혹은 이러한 후원받는 콘텐츠 아이템 오브젝트들을 선택하는 것을 포함할 수 있다. 콘텐츠 선택 프로세스는, 컴퓨팅 디바이스(104)에게 제공할 하나 이상의 콘텐츠 아이템들을 선택하기 위해서, 복수의 콘텐츠 제공자들에 의해 제공되는 콘텐츠 아이템들이 파싱되는 서비스, 혹은 이러한 콘텐츠 아이템들이 프로세싱되는 서비스, 혹은 이러한 콘텐츠 아이템들에게 가중치가 부여되는 서비스, 혹은 이러한 콘텐츠 아이템들이 매칭되는 서비스를 포함할 수 있다. 콘텐츠 선택 프로세스는 실시간으로 수행될 수 있거나, 혹은 오프라인 상태에서 수행될 수 있다. 실시간으로 콘텐츠 선택 프로세스를 수행하는 것은 콘텐츠에 대한 요청이 클라이언트 컴퓨팅 디바이스(104)를 통해 수신됨에 응답하여 콘텐츠 선택 프로세스를 수행하는 것을 지칭할 수 있다. 실시간 콘텐츠 선택 프로세스는 요청을 수신하는 시간 간격(예를 들어, 5 초, 10 초, 20 초, 30 초, 1 분, 2 분, 3 분, 5 분, 10 분, 혹은 20 분) 내에 수행(예를 들어, 개시 혹은 완료)될 수 있다. 실시간 콘텐츠 선택 프로세스는 클라이언트 컴퓨팅 디바이스(104)와의 통신 세션 동안 수행될 수 있거나, 혹은 통신 세션이 종료된 이후 임의의 시간 간격 내에 수행될 수 있다.
예를 들어, 데이터 프로세싱 시스템(102)은 콘텐츠 아이템 오브젝트들을 선택하도록 설계된, 구조화된, 구성된, 혹은 동작가능한 콘텐츠 선택기 컴포넌트(118)를 포함할 수 있다. 콘텐츠 아이템들을 음성-기반 환경 내에서의 디스플레이를 위해 선택하기 위해서, (예를 들어, NLP 컴포넌트(112)를 통해) 데이터 프로세싱 시스템(102)은 키워드들(예를 들어, 트리거 키워드)을 식별하기 위해 입력 오디오 신호를 파싱할 수 있고, 그리고 대략적 매칭, 정확한 매칭, 혹은 어구 매칭에 근거하여 임의의 매칭되는 콘텐츠 아이템을 선택하기 위해 키워드들을 사용할 수 있다. 예를 들어, 콘텐츠 선택기 컴포넌트(118)는, 후보 콘텐츠 아이템들의 주된 내용이 클라이언트 컴퓨팅 디바이스(104)의 마이크로폰에 의해 검출된 입력 오디오 신호의 키워드들 혹은 어구들의 주된 내용에 대응하는지 여부를 결정하기 위해 후보 콘텐츠 아이템들의 주된 내용을 분석하거나, 파싱하거나, 혹은 그렇지 않으면 프로세싱할 수 있다. 콘텐츠 선택기 컴포넌트(118)는 이미지 프로세싱 기법, 문자 인식 기법, 자연 언어 프로세싱 기법, 혹은 데이터베이스 룩업을 사용하여 후보 콘텐츠 아이템들의 음성, 오디오, 용어들, 문자들, 텍스트, 심볼(symbol)들, 혹은 이미지들을 식별할 수 있거나, 분석할 수 있거나, 혹은 인식할 수 있다. 후보 콘텐츠 아이템들은 후보 콘텐츠 아이템들의 주된 내용을 표시하는 메타데이터를 포함할 수 있고, 이러한 경우 콘텐츠 선택기 컴포넌트(118)는 후보 콘텐츠 아이템들의 주된 내용이 입력 오디오 신호에 대응하는지 여부를 결정하기 위해 메타데이터를 프로세싱할 수 있다.
콘텐츠 제공자들(106)은 콘텐츠 아이템들을 포함하는 콘텐츠 캠페인을 설정할 때 추가적인 표시자(indicator)들을 제공할 수 있다. 콘텐츠 제공자(106)는 후보 콘텐츠 아이템에 대한 정보를 사용하여 룩업을 수행함으로써 콘텐츠 선택기 컴포넌트(118)가 식별할 수 있는 정보를 콘텐츠 캠페인 혹은 콘텐츠 그룹 레벨에서 제공할 수 있다. 예를 들어, 후보 콘텐츠 아이템은 콘텐츠 그룹, 콘텐츠 캠페인, 혹은 콘텐츠 제공자에게 맵핑될 수 있는 고유한 식별자를 포함할 수 있다. 콘텐츠 선택기 컴포넌트(118)는, 데이터 저장소(124) 내의 콘텐츠 캠페인 데이터 구조 내에 저장된 정보에 근거하여, 콘텐츠 제공자(106)에 대한 정보를 결정할 수 있다.
데이터 프로세싱 시스템(102)은 컴퓨터 네트워크를 통해 컴퓨팅 디바이스(104) 상에서의 제시를 위한 콘텐츠에 대한 요청을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 클라이언트 컴퓨팅 디바이스(104)의 마이크로폰에 의해 검출된 입력 오디오 신호를 프로세싱함으로써 해당 요청을 식별할 수 있다. 이러한 요청은 요청의 선택 기준들을 포함할 수 있는데, 예컨대, 디바이스 타입, 위치 및 해당 요청과 관련된 키워드와 같은 것을 포함할 수 있다. 요청은 액션 데이터 구조 혹은 동작 데이터 구조를 포함할 수 있다.
요청에 응답하여, 데이터 프로세싱 시스템(102)은 데이터 저장소(124)로부터 그리고 콘텐츠 제공자(106)와 관련된 데이터베이스로부터 콘텐츠 아이템 오브젝트를 선택할 수 있고, 그리고 콘텐츠 아이템을 네트워크(105)를 경유해 컴퓨팅 디바이스(104)를 통해 제시하기 위해 제공할 수 있다. 콘텐츠 아이템 오브젝트는 서비스 제공자 디바이스(108)와는 다른 임의의 콘텐츠 제공자 디바이스(108)에 의해 제공될 수 있다. 콘텐츠 아이템은 액션 데이터 구조의 서비스의 타입과는 다른 서비스의 타입에 대응할 수 있다(예를 들어, 택시 서비스와 대비되는 음식 배달 서비스). 컴퓨팅 디바이스(104)는 콘텐츠 아이템 오브젝트와 상호작용할 수 있다. 컴퓨팅 디바이스(104)는 콘텐츠 아이템에 대한 오디오 응답을 수신할 수 있다. 컴퓨팅 디바이스(104)는 콘텐츠 아이템 오브젝트와 관련된 하이퍼링크(hyperlink) 혹은 다른 버튼(button)을 선택한 표시를 수신할 수 있고, 이러한 표시는 컴퓨팅 디바이스(104)로 하여금, 서비스 제공자(108)를 식별하는 것, 서비스 제공자(108)로부터의 서비스를 요청하는 것, 서비스 제공자(108)에게 임의의 서비스를 수행하도록 명령하는 것, 서비스 제공자(108)에게 정보를 전송하는 것, 혹은 그렇지 않으면 서비스 제공자 디바이스(108)에게 질의하는 것을 수행하도록 하거나 이러한 것들을 수행할 수 있게 한다.
데이터 프로세싱 시스템(102)은 오디오 신호를 발생시키기 위해 오디오 신호 발생기 컴포넌트(122)를 포함할 수 있거나, 오디오 신호 발생기 컴포넌트(122)를 실행시킬 수 있거나, 혹은 오디오 신호 발생기 컴포넌트(122)와 통신할 수 있다. 출력 신호는 하나 이상의 부분들을 포함할 수 있다. 예를 들어, 출력 신호는 제 1 부분 및 제 2 부분을 포함할 수 있다. 출력 신호의 제 1 부분은 액션 데이터 구조에 대응할 수 있다. 출력 신호의 제 2 부분은 실시간 콘텐츠 선택 프로세스 동안 콘텐츠 선택기 컴포넌트(118)에 의해 선택된 콘텐츠 아이템에 대응할 수 있다.
오디오 신호 발생기 컴포넌트(122)는 제 1 데이터 구조에 대응하는 사운드를 가지고 있는 제 1 부분을 갖는 출력 신호를 발생시킬 수 있다. 예를 들어, 오디오 신호 발생기 컴포넌트(122)는 다이렉트 액션 API(116)에 의해 액션 데이터 구조의 필드들에 채워진 하나 이상의 값들에 근거하여 출력 신호의 제 1 부분을 발생시킬 수 있다. 택시 서비스 예에서, 필드들의 값들은 예를 들어, 픽업 위치에 대해서는 123 메인 스트리트(123 Main Street); 목적지 위치에 대해서는 1234 메인 스트리트(1234 Main Street); 승객들의 수에 대해서는 2명; 그리고 서비스의 레벨에 대해서는 경제형(economy)을 포함할 수 있다. 오디오 신호 발생기 컴포넌트(122)는, 컴퓨팅 디바이스(104)의 최종 사용자가 서비스 제공자(108)에게 요청을 전송하는 것을 계속 진행하기를 원한다는 것을 확인하기 위해, 출력 신호의 제 1 부분을 발생시킬 수 있다. 제 1 부분은 다음과 같은 출력: "당신은 123 메인 스트리트에서 2명의 사람들을 픽업하여 1234 메인 스트리트에서 하차시키는 택시 서비스 제공자 A로부터의 경제형 자동차(economy car)를 부르기를 원하나요?"를 포함할 수 있다.
일부 경우들에서, 제 1 부분은 서비스 제공자 디바이스(108)로부터 수신되는 정보를 포함할 수 있다. 서비스 제공자 디바이스(108)로부터 수신되는 정보는 액션 데이터 구조에 대해 커스터마이징될 수 있거나 혹은 맞춤화될 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 서비스 제공자(108)로 하여금 동작을 수행하도록 명령하기 전에 (예를 들어, 다이렉트 액션 API(116)를 통해) 액션 데이터 구조를 서비스 제공자(108)에게 전송할 수 있다. 대신, 데이터 프로세싱 시스템(102)은 서비스 제공자 디바이스(108)로 하여금 액션 데이터 구조에 관한 초기 프로세싱 혹은 예비 프로세싱(preliminary processing)을 수행하여 동작에 대한 예비 정보(preliminary information)를 발생시키도록 명령할 수 있다. 택시 서비스의 예에서, 액션 데이터 구조에 관한 예비 프로세싱은, 픽업 위치 주변에 위치하는 이용가능한 택시들로서 서비스 요건의 레벨을 만족시키는 이용가능한 택시들을 식별하는 것; 가장 가까이 있는 이용가능한 택시가 픽업 위치에 도달하기 위한 시간의 양을 추정하는 것; 목적지에 도착하는 시간을 추정하는 것; 그리고 택시 서비스에 대한 가격을 추정하는 것을 포함할 수 있다. 추정된 예비 값들은 고정된 값, 다양한 조건들에 근거하여 변할 가능성이 있는 추정치, 혹은 임의 범위의 값들을 포함할 수 있다. 서비스 제공자 디바이스(108)는 네트워크(104)를 통해 예비 정보를 데이터 프로세싱 시스템(102)에게 리턴(returen)할 수 있거나, 혹은 클라이언트 컴퓨팅 디바이스(104)에게 직접적으로 리턴할 수 있다. 데이터 프로세싱 시스템(102)은 서비스 제공자 디바이스(108)로부터의 예비 결과들을 출력 신호에 통합시킬 수 있고, 그리고 그 출력 신호를 컴퓨팅 디바이스(104)에게 전송할 수 있다. 출력 신호는 예를 들어, "택시 서비스 회사 A는 10달러의 비용으로 10분 내에 123 메인 스트리트에서 당신을 픽업할 수 있고 오전 9시까지 1234 메인 스트리트에서 당신을 하차시킬 수 있습니다. 당신은 이러한 탑승을 주문하기를 원하나요?"를 포함할 수 있다. 이것은 출력 신호의 제 1 부분을 형성할 수 있다.
일부 경우들에서, 데이터 프로세싱 시스템(102)은 출력 신호의 제 2 부분을 형성할 수 있다. 출력 신호의 제 2 부분은 실시간 콘텐츠 선택 프로세스 동안 콘텐츠 선택기 컴포넌트(118)에 의해 선택되는 콘텐츠 아이템을 포함할 수 있다. 제 1 부분은 제 2 부분과는 다를 수 있다. 예를 들어, 제 1 부분은 클라이언트 컴퓨팅 디바이스(104)의 센서(134)에 의해 검출된 입력 오디오 신호를 지니고 있는 데이터 패킷들에 직접적으로 응답하는 그러한 액션 데이터 구조에 대응하는 정보를 포함할 수 있고, 반면 제 2 부분은 콘텐츠 선택기 컴포넌트(104)에 의해 선택되는 콘텐츠 아이템으로서 액션 데이터 구조에 약간 관련될 수 있는 혹은 콘텐츠 제공자 디바이스(106)에 의해 제공되는 후원받는 콘텐츠를 포함할 수 있는 그러한 콘텐츠 아이템을 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(104)의 최종 사용자는 택시 서비스 회사 A로부터의 택시를 요청할 수 있다. 데이터 프로세싱 시스템(102)은 택시 서비스 회사 A로부터의 택시에 대한 정보를 포함하도록 출력 신호의 제 1 부분을 발생시킬 수 있다. 하지만, 데이터 프로세싱 시스템(102)은 키워드들 "택시 서비스" 및 최종 사용자가 관심을 가질 수 있는 (액션 데이터 구조에 포함되는) 정보에 근거하여 선택되는 콘텐츠 아이템을 포함하도록 출력 신호의 제 2 부분을 발생시킬 수 있다. 예를 들어, 제 2 부분은 택시 서비스 회사 B와 같은 상이한 택시 서비스 회사에 의해 제공되는 콘텐츠 아이템 혹은 정보를 포함할 수 있다. 사용자가 택시 서비스 회사 B를 특정적으로 요청하지는 않았을 수 있지만, 그럼에도 불구하고 데이터 프로세싱 시스템(102)은 택시 서비스 회사 B로부터의 콘텐츠 아이템을 제공할 수 있는데, 왜냐하면 사용자가 택시 서비스 회사 B를 통해 임의의 동작을 수행할 것을 선택할 수 있기 때문이다.
데이터 프로세싱 시스템(102)은 픽업 시간, 목적지에 도착하는 시간, 그리고 탑승에 대한 가격을 결정하기 위해 액션 데이터 구조로부터의 정보를 택시 서비스 회사 B로 전송할 수 있다. 데이터 프로세싱 시스템(102)은 이러한 정보를 수신할 수 있고, 그리고 "택시 서비스 회사 B는 15달러의 비용으로 2분 내에 123 메인 스트리트에서 당신을 픽업할 수 있고 오전 8시 52분까지 1234 메인 스트리트에서 당신을 하차시킬 수 있습니다. 당신은 대안적인 이러한 탑승을 원하나요?"와 같은 출력 신호의 제 2 부분을 발생시킬 수 있다. 그 다음에, 컴퓨팅 디바이스(104)의 최종 사용자는 택시 서비스 회사 A에 의해 제공되는 탑승 혹은 택시 서비스 회사 B에 의해 제공되는 탑승을 선택할 수 있다.
출력 신호의 제 2 부분에서, 택시 서비스 회사 B에 의해 제공되는 서비스에 대응하는 후원받는 콘텐츠 아이템을 제공하기 전에, 데이터 프로세싱 시스템(102)은 제 2 부분이 실시간 콘텐츠 선택 프로세스 동안 (예를 들어, 콘텐츠 선택기 컴포넌트(118)에 의해) 선택된 콘텐츠 아이템 오브젝트에 대응한다고 최종 사용자 컴퓨팅 디바이스에게 통지할 수 있다. 하지만, 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104)의 최종 사용자에게 통지를 제공하기 위해 인터페이스들의 상이한 타입들에 대한 제한된 액세스를 가질 수 있다. 예를 들어, 컴퓨팅 디바이스(104)는 디스플레이 디바이스를 포함하지 않을 수 있거나, 혹은 디스플레이 디바이스가 디스에이블될 수 있거나 혹은 턴오프될 수 있다. 컴퓨팅 디바이스(104)의 디스플레이 디바이스는 컴퓨팅 디바이스(104)의 스피커보다 더 많은 리소스들을 소비할 수 있고, 이에 따라, 통지를 전달하기 위해 컴퓨팅 디바이스(104)의 스피커를 사용하는 것과 비교해 컴퓨팅 디바이스(104)의 디스플레이 디바이스를 턴온시키는 것은 덜 효율적일 수 있다. 따라서, 일부 경우들에서, 데이터 프로세싱 시스템(102)은 하나 이상의 인터페이스들을 통한 혹은 컴퓨터 네트워크들의 하나 이상의 타입들을 통한 정보 전송의 효율 및 효과를 향상시킬 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 콘텐츠 아이템을 포함하는 출력 오디오 신호의 일부분을 (예를 들어, 오디오 신호 발생기 컴포넌트(122)를 통해) 모듈(module)화하여 출력 신호의 해당 부분이, 후원받는 콘텐츠 아이템을 포함한다는 표시 혹은 통지를 최종 사용자에게 제공할 수 있다.
(예를 들어, 인터페이스(110) 및 네트워크(105)를 통해) 데이터 프로세싱 시스템(102)은 오디오 신호 발생기 컴포넌트(122)에 의해 발생된 출력 신호를 포함하는 데이터 패킷들을 전송할 수 있다. 출력 신호는 클라이언트 디바이스(104)의 오디오 드라이버 컴포넌트(138) 혹은 클라이언트 디바이스(104)에 의해 실행되는 오디오 드라이버 컴포넌트(138)로 하여금 클라이언트 디바이스(104)의 스피커(예를 들어, 트랜스듀서(136))를 구동시켜 출력 신호에 대응하는 음향 파동을 발생시키도록 할 수 있다.
도 2는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템의 동작의 예이다. 이러한 시스템은 도 1에 도시된 시스템(100)의 하나 이상의 컴포넌트를 포함할 수 있다. NLP 컴포넌트(112)는 컴퓨팅 디바이스에 의해 검출되는 오디오 신호들을 수신 및 파싱할 수 있다. NLP 컴포넌트(112)는 행위(ACT)(202)에서 다이렉트 액션 API(116)로 정보를 전달할 수 있다. 다이렉트 액션 API(116)는 NLP 컴포넌트(112)에 의해 파싱된 오디오 신호들에 응답하는 액션 데이터 구조를 발생시키기 위해서 템플릿의 하나 이상의 필드들을 채우기 위해 센서 정보를 수집할 것을 결정할 수 있다.
행위(204)에서, 다이렉트 액션 API는 센서 관리 컴포넌트(120)로부터의 센서 정보를 요청할 수 있다. 센서 관리 컴포넌트(120)는 복수의 컴퓨팅 디바이스들(예를 들어, 제 1 컴퓨팅 디바이스(104), 제 2 컴퓨팅 디바이스(104), 및 제 3 컴퓨팅 디바이스(104))과의 센서 데이터 수집 세션(206)을 확립할 수 있다. 행위(206)에서, 센서 관리 컴포넌트(120)는 컴퓨팅 디바이스들(104) 중 하나 이상의 컴퓨팅 디바이스를 폴링할 수 있다. 센서 관리 컴포넌트(120)는 최종 사용자와 관련된 혹은 유사한 정보를 제공하는 복수의 컴퓨팅 디바이스들(104) 간의 총체적 리소스 소비를 감소시키기 위해 센서 데이터에 대해 컴퓨팅 디바이스들(104) 중 단지 하나의 컴퓨팅 디바이스(104)만을 폴링할 것을 결정할 수 있다. 센서 관리 컴포넌트(120)는 컴퓨팅 디바이스들(104) 중 하나 이상의 컴퓨팅 디바이스(104)로 하여금 센서들(134)을 폴링하도록 명령할 수 있다.
행위(208)에서, 컴퓨팅 디바이스들(104) 중 하나 이상의 컴퓨팅 디바이스(104)는, 센서(134)로 하여금 센서 데이터를 수집하는 것 그리고 (센서 관리 컴포넌트(120) 혹은 데이터 프로세싱 시스템(102)에게 제공하게 될) 센서 데이터를 컴퓨팅 디바이스(104)에게 제공하는 것을 수행하도록 하기 위해서, 센서(134)를 폴링할 수 있거나, 인에이블시킬 수 있거나, 활성화시킬 수 있거나, 호출할 수 있거나, 혹은 그렇지 않으면 센서(134)로 하여금 이러한 것들을 수행하게 할 수 있다. 행위(210)에서, 센서 관리 컴포넌트(120)는 수집된 센서 데이터를 다이렉트 액션 API(116)에게 제공할 수 있다. 따라서, 센서 관리 컴포넌트(120)는, 폴링할 하나 이상의 센서들 혹은 센서들의 서브세트를 선택함으로써, 최종 사용자와 관련된(혹은 요청된 센서 정보를 제공할 수 있는 최종 사용자에 근접하여 있는) 복수의 컴퓨팅 디바이스들(104) 간의 총체적 리소스 이용을 감소시키기 위해 센서 이용을 최적화시킬 수 있다.
도 3은 센서들을 선택적으로 폴링하는 예시적인 방법의 예이다. 방법(300)은 하나 이상의 컴포넌트, 시스템, 또는 시스템(100) 혹은 시스템(400)의 요소에 의해 수행될 수 있다. 방법(300)은 데이터 프로세싱 시스템이 입력 오디오 신호를 수신하는 것을 포함할 수 있다(행위(305)). 데이터 프로세싱 시스템은 클라이언트 컴퓨팅 디바이스로부터 입력 오디오 신호를 수신할 수 있다. 예를 들어, 데이터 프로세싱 시스템에 의해 실행되는 자연 언어 프로세서 컴포넌트는 데이터 프로세싱 시스템의 인터페이스를 통해 클라이언트 컴퓨팅 디바이스로부터 입력 오디오 신호를 수신할 수 있다. 데이터 프로세싱 시스템은 클라이언트 컴퓨팅 디바이스(혹은 클라이언트 디바이스)에 의해 검출된 입력 오디오 신호를 지니고 있는 혹은 포함하는 데이터 패킷들을 수신할 수 있다.
행위(310)에서, 방법(300)은 데이터 프로세싱 시스템이 입력 오디오 신호를 파싱하는 것을 포함할 수 있다. 자연 언어 프로세서 컴포넌트는 임의의 요청 그리고 그 요청에 대응하는 트리거 키워드를 식별하기 위해 입력 오디오 신호를 파싱할 수 있다. 예를 들어, 클라이언트 디바이스에 의해 검출된 오디오 신호는 "Okay device, I need a ride from Taxi Service Company A to go to 1234 Main Street(오케이 디바이스, 나는 1234 메인 스트리트로 가기 위해 택시 서비스 회사 A로부터의 탑승을 필요로 해)"를 포함할 수 있다. 이러한 오디오 신호에서, 초기 트리거 키워드는 "okay device(오케이 디바이스)"를 포함할 수 있고, 이러한 초기 트리거 키워드는 입력 오디오 신호를 데이터 프로세싱 시스템으로 전송하도록 클라이언트 디바이스에게 표시할 수 있다. 클라이언트 디바이스의 프리-프로세서는 잔존하는 오디오 신호를 데이터 프로세싱 시스템으로 전송하기 전에 용어들 "okay device(오케이 디바이스)"를 필터링할 수 있다. 일부 경우들에서, 클라이언트 디바이스는 추가적인 용어들을 필터링할 수 있고, 또는 후속 프로세싱을 위해 데이터 프로세싱 시스템으로 전송할 키워드들을 발생시킬 수 있다.
데이터 프로세싱 시스템은 입력 오디오 신호에서 트리거 키워드를 식별할 수 있다. 트리거 키워드는 예를 들어, "to go to(로 가기 위해)" 혹은 "ride(탑승)" 혹은 이러한 용어들의 변형들을 포함할 수 있다. 트리거 키워드는 서비스의 타입 혹은 제품의 타입을 표시할 수 있다. 데이터 프로세싱 시스템은 입력 오디오 신호에서 요청을 식별할 수 있다. 이러한 요청은 용어들 "I need(나는 필요로 해)"에 근거하여 결정될 수 있다. 트리거 키워드 및 요청은 의미론적 프로세싱 기법 혹은 다른 자연 언어 프로세싱 기법을 사용하여 결정될 수 있다.
행위(315)에서, 데이터 프로세싱 시스템은 액션 데이터 구조에 대한 템플릿을 선택할 수 있다. 템플릿은 트리거 키워드, 요청, 혹은 식별된 써드 파티 제공자에 대한 응답일 수 있다. 템플릿은 제 1 필드와 같은 하나 이상의 필드들을 포함할 수 있다.
행위(320)에서, 데이터 프로세싱 시스템은 하나 이상의 센서들을 폴링할 수 있거나, 혹은 컴퓨팅 디바이스로 하여금 임의의 센서를 폴링하도록 명령할 수 있다. 데이터 프로세싱 시스템은 제 1 필드를 채울 데이터를 제공할 수 있는 복수의 센서들을 식별할 수 있고, 또한 데이터 프로세싱 시스템은 폴링할 하나의 센서를 선택할 수 있다. 데이터 프로세싱 시스템은 입력 오디오 신호를 제공했던 컴퓨팅 디바이스(104)에 결합되지 않은 센서를 폴링할 것을 결정할 수 있다. 예를 들어, 최종 사용자는 입력 오디오 신호를 제공하기 위해 제 1 컴퓨팅 디바이스(104)를 사용할 수 있다. 제 1 컴퓨팅 디바이스(104)는 제 1 컴퓨팅 디바이스에 결합된 제 1 센서를 포함할 수 있다. 데이터 프로세싱 시스템은 최종 사용자 계정과 또한 관련되어 있는 제 2 컴퓨팅 디바이스(104)가 존재함을 결정할 수 있다. 제 2 컴퓨팅 디바이스는 제 1 컴퓨팅 디바이스에 근접하여 있을 수 있고, 혹은 그렇지 않으면 데이터 프로세싱 시스템은 제 2 컴퓨팅 디바이스가 또한 템플릿의 제 1 필드를 채울 충분한 품질의 데이터를 제공할 수 있음을 결정할 수 있다(예를 들어, 두 개의 센서들에 의해 제공되게 되는 위치 정보가 25 미터, 50 미터, 75 미터, 혹은 100 미터와 같은 임의의 허용 레벨 내에 있는 경우). 데이터 프로세싱 시스템은, 비록 제 1 컴퓨팅 디바이스가 데이터 프로세싱 시스템(102)과의 통신을 호출했거나, 개시시켰거나, 혹은 확립했을지라도, 제 1 컴퓨팅 디바이스에 결합된 제 1 센서 대신 제 2 컴퓨팅 디바이스(104)에 결합된 제 2 센서를 사용할 것을 결정할 수 있다. 데이터 프로세싱 시스템은, 제 2 컴퓨팅 디바이스에 결합된 제 2 센서를 사용할 것을 결정하기 위해 리소스 감소 정책을 사용할 수 있다. 예를 들어, 제 2 컴퓨팅 디바이스는 더 많은 잔존 배터리를 가질 수 있거나, 더 큰 리소스 가용성을 가질 수 있거나, 또는 전원(power)에 연결될 수 있다.
일부 경우들에서, 데이터 프로세싱 시스템은 임의의 센서에 의해 이전에 검출되었던 데이터를 메모리로부터 검색할 것을 결정할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 비록 제 2 센서로부터의 정보가 제 2 필드를 채우기 위해 필요로 할지라도 제 2 센서를 폴링하지 않으면서 하나의 센서를 폴링할 것을 결정할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 이전에 수집된 정보(예를 들어, 센서 데이터에 대한 요청 이전에 수집된 정보)를 사용함으로써 리소스 소비를 감소시킬 것을 결정할 수 있다. 따라서, 데이터 프로세싱 시스템은 제 1 센서를 폴링할 수 있고, 그리고 제 2 센서로부터의 저장된 데이터를 사용할 수 있다. 데이터 프로세싱 시스템은, 규칙들 혹은 정책들에 근거하여, 또는 저장된 데이터가 임의의 조건 혹은 임계치를 충족시킴(예를 들어, 임의의 시간 간격 내에 수집된 것임)을 결정하기 위해 그 저장된 데이터를 분석함으로써, 앞서와 같은 것을 행할 것을 결정할 수 있다.
행위(325)에서, 데이터 프로세싱 시스템은 센서 데이터로 액션 데이터 구조를 발생시킬 수 있다. 데이터 프로세싱 시스템은 트리거 키워드, 요청, 써드 파티 제공자 디바이스, 혹은 다른 정보에 근거하여 액션 데이터 구조를 발생시킬 수 있다. 액션 데이터 구조는 요청에 대한 응답일 수 있다. 예를 들어, 만약 클라이언트 컴퓨팅 디바이스의 최종 사용자가 택시 서비스 회사 A로부터의 택시를 요청한다면, 액션 데이터 구조는 택시 서비스 회사 A로부터의 택시 서비스를 요청하기 위한 정보를 포함할 수 있다. 데이터 프로세싱 시스템은, 택시 서비스 회사 A에 대한 템플릿을 선택할 수 있고, 그리고 데이터 프로세싱 시스템은, 택시 서비스 회사 A로 하여금 클라이언트 컴퓨팅 디바이스의 사용자에게 택시를 보내 사용자를 픽업해서 그 요청된 목적지까지 사용자를 운송할 수 있도록 하기 위해 템플릿 내의 필드들을 하나 이상의 센서들 혹은 메모리로부터 획득된 값들로 채울 수 있다.
행위(330)에서, 데이터 프로세싱 시스템은, 써드 파티 제공자 디바이스로부터, 써드 파티 제공자 디바이스가 클라이언트 디바이스와 동작 세션을 확립했다는 표시를 수신할 수 있다. 이러한 표시는 동작이 개시되었음, 혹은 동작이 계류(pending) 중임, 혹은 동작이 진행 중임, 혹은 동작이 완료되었음을 표시할 수 있다. 이러한 표시는 동작에 대한 추가적인 정보를 갖는 데이터 구조를 포함할 수 있다.
도 4는 예시적 컴퓨터 시스템(400)의 블록도이다. 컴퓨터 시스템 혹은 컴퓨팅 디바이스(400)는 시스템(100) 혹은 시스템(100)의 컴포넌트들(예컨대, 데이터 프로세싱 시스템(102)과 같은 것)을 포함할 수 있거나, 혹은 이들을 구현하기 위해 사용될 수 있다. 데이터 프로세싱 시스템(102)은 지능형 개인 보조기기(intelligent personal assistant) 혹은 음성-기반 디지털 보조기기(voice-based digital assistant)를 포함할 수 있다. 컴퓨팅 시스템(400)은 정보를 전달하기 위한 버스(405) 혹은 다른 통신 컴포넌트를 포함하고, 그리고 버스(405)에 결합되는 그리고 정보를 프로세싱하기 위한 임의의 프로세서(410) 혹은 프로세싱 회로를 포함한다. 컴퓨팅 시스템(400)은 또한 버스에 결합되는 그리고 정보를 프로세싱하기 위한 하나 이상의 프로세서들(410) 혹은 프로세싱 회로들을 포함할 수 있다. 컴퓨팅 시스템(400)은 또한, 버스(405)에 결합되는 그리고 프로세서(410)에 의해 실행될 명령들 및 정보를 저장하기 위한 메인 메모리(main memory)(415)(예컨대, 랜덤 액세스 메모리(Random Access Memory, RAM) 혹은 다른 동적 저장 디바이스(dynamic storage device)와 같은 것)를 포함한다. 메인 메모리(415)는 데이터 저장소(145)일 수 있고, 또는 데이터 저장소(145)를 포함할 수 있다. 메인 메모리(415)는 또한, 위치 정보, 임시 변수들, 혹은 프로세서(410)에 의한 명령들의 실행 동안의 다른 중간 정보를 저장하는데 사용될 수 있다. 컴퓨팅 시스템(400)은 또한, 버스(405)에 결합되는 그리고 프로세서(410)에 대한 정적 정보 및 명령들을 저장하기 위한 판독 전용 메모리(Read Only Memory, ROM)(420) 혹은 다른 정적 저장 디바이스(static storage device)를 포함할 수 있다. 정보 및 명령들을 지속적으로 저장하기 위한 저장 디바이스(425)(예컨대, 솔리드 스테이트 디바이스(solid state device), 자기 디스크(magnetic disk) 혹은 광학 디스크(optical disk)와 같은 것)가 버스(405)에 결합될 수 있다. 저장 디바이스(425)는 데이터 저장소(145)를 포함할 수 있거나, 혹은 데이터 저장소(145)의 일부일 수 있다.
컴퓨팅 시스템(400)은 사용자에게 정보를 디스플레이하기 위한 디스플레이(435)(예컨대, 액정 디스플레이(liquid crystal display) 혹은 액티브 매트릭스 디스플레이(active matrix display)와 같은 것)에 버스(405)를 통해 결합될 수 있다. 정보 및 커맨드 선택들을 프로세서(410)에 전달하기 위한 입력 디바이스(430)(예컨대, 알파뉴메릭 키(alphanumeric key)들 및 다른 키들을 포함하는 키보드와 같은 것)가 버스(405)에 결합될 수 있다. 입력 디바이스(430)는 터치 스크린 디스플레이(435)를 포함할 수 있다. 입력 디바이스(430)는 또한, 마우스, 트랙볼(trackball), 혹은 커서 방향 키(cursor direction key)들과 같은 커서 제어(cursor control)를 포함할 수 있으며, 이러한 커서 제어는 방향 정보 및 커맨드 선택들을 프로세서(410)에게 전달하기 위한 것이고, 그리고 디스플레이(435) 상에서의 커서 움직임을 제어하기 위한 것이다. 디스플레이(435)는 예를 들어, 도 1의 데이터 프로세싱 시스템(102), 클라이언트 컴퓨팅 디바이스(150), 혹은 다른 컴포넌트의 일부일 수 있다.
본 명세서에서 설명되는 프로세스들, 시스템들, 및 방법들은, 프로세서(410)가 메인 메모리(415)에 포함된 명령들의 정렬(arrangement)을 실행함에 응답하여 컴퓨팅 시스템(400)에 의해 구현될 수 있다. 이러한 명령들은 저장 디바이스(425)와 같은 또 하나의 다른 컴퓨터-판독가능 매체로부터 메인 메모리(415)로 판독될 수 있다. 메인 메모리(415)에 포함된 명령들의 정렬의 실행은 컴퓨팅 시스템(400)으로 하여금 본 명세서에서 설명되는 예시적 프로세스들을 수행하도록 한다. 다중-프로세싱 구성(multi-processing arrangement)에서의 하나 이상의 프로세서들이 또한 메인 메모리(415)에 포함된 명령들을 실행하기 위해 이용될 수 있다. 고정-배선 회로(hard-wired circuitry)가 본 명세서에서 설명되는 시스템들 및 방법들과 함께 소프트웨어 명령들과 결합되어 혹은 소프트웨어 명령들 대신에 사용될 수 있다. 본 명세서에서 설명되는 시스템들 및 방법들은 하드웨어 회로와 소프트웨어의 임의의 특정 결합으로만 한정되지 않는다.
비록 예시적인 컴퓨팅 시스템이 도 4에서 설명되었지만, 본 명세서에서 설명되는 동작들을 포함하는 주된 내용은 다른 타입들의 디지털 전자 회로(digital electronic circuitry)로 구현될 수 있고, 또는 컴퓨터 소프트웨어, 펌웨어, 혹은 하드웨어로 구현될 수 있으며, 여기에는 본 명세서에서 개시되는 구조들 및 이들의 구조적 등가물들이 포함되고, 또는 이들 중 하나 이상의 것들의 조합들로 구현될 수 있다.
본 명세서에서 논의되는 시스템들이 사용자들에 대한 개인 정보를 수집하는 상황들에 대해, 혹은 개인 정보를 이용할 수 있는 상황들에 대해, 사용자들은, 개인 정보(예를 들어, 사용자의 소셜 네트워크(social network), 소셜 액션들 혹은 활동들, 사용자의 선호도(preference)들, 또는 사용자의 위치에 대한 정보)를 수집할 수 있는 프로그램들 혹은 특징들의 가능 여부를 제어할 기회를 제공받을 수 있고, 또는 사용자들은, 콘텐츠 서버로부터의 콘텐츠 혹은 사용자와 더 관련될 수 있는 다른 데이터 프로세싱 시스템으로부터의 콘텐츠를 수신할지 여부 혹은 어떻게 수신할지를 제어할 기회를 제공받을 수 있다. 추가적으로, 특정 데이터는 해당 데이터가 저장되기 전에 혹은 사용되기 전에 하나 이상의 방식들로 익명화(anonymize)될 수 있고, 이에 따라 개인적으로 식별가능한 정보는 파라미터들을 발생시킬 때 제거되게 된다. 예를 들어, 사용자의 아이덴티티는 사용자에 대한 어떠한 개인적으로 식별가능한 정보도 결정될 수 없도록 익명화될 수 있고, 또는 위치 정보가 획득되는 사용자의 지리적 위치는 (예를 들어, 도시(city) 레벨로, 혹은 우편 코드(postal code) 레벨로, 혹은 주(state) 레벨로) 일반화(generalize)될 수 있으며, 이에 따라 사용자의 특정 위치는 결정될 수 없게 된다. 따라서, 사용자는 사용자에 대한 정보가 어떻게 수집되는지 그리고 콘텐츠 서버에 의해 어떻게 사용되는지에 관한 제어를 할 수 있다.
본 명세서에서 설명되는 주된 내용 및 동작들은 디지털 전자 회로로 구현될 수 있고, 또는 컴퓨터 소프트웨어, 펌웨어, 혹은 하드웨어로 구현될 수 있으며, 여기에는 본 명세서에서 개시되는 구조들 및 이들의 구조적 등가물들이 포함되고, 또는 이들 중 하나 이상의 것들의 조합들로 구현될 수 있다. 본 명세서에서 설명되는 주된 내용은, 데이터 프로세싱 장치들에 의한 실행을 위해 혹은 데이터 프로세싱 장치들의 동작을 제어하기 위해 하나 이상의 컴퓨터 저장 매체들 상에 인코딩된 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다(예를 들어, 컴퓨터 프로그램 명령들의 하나 이상의 회로들). 대안적으로 혹은 추가적으로, 프로그램 명령들은 인위적으로 발생되는 전파되는 신호(propagated signal) 상에 인코딩될 수 있는데, 이러한 인위적으로 발생되는 전파되는 신호는, 예를 들어, 데이터 프로세싱 장치에 의한 실행을 위해서 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 발생되는 머신에 의해 발생되는 전기적, 광학적, 혹은 전기자기적 신호이다. 컴퓨터 저장 매체는, 컴퓨터-판독가능 저장 디바이스, 컴퓨터-판독가능 저장 기판(computer-readable storage substrate), 랜덤(random) 혹은 직렬(serial) 액세스 메모리 어레이 혹은 디바이스, 또는 이들의 하나 이상의 것들의 조합일 수 있거나, 혹은 이러한 것들 내에 포함될 수 있다. 컴퓨터 저장 매체는 임의의 전파되는 신호가 아니며, 컴퓨터 저장 매체는 인위적으로 발생되는 전파되는 신호에 인코딩된 컴퓨터 프로그램 명령들의 소스(source) 혹은 목적지(destination)일 수 있다. 컴퓨터 저장 매체는 또한, 하나 이상의 개별적 컴포넌트들 혹은 매체들(예를 들어, 복수의 CD들, 디스크들, 혹은 다른 저장 디바이스들)일 수 있거나, 혹은 이러한 것들 내에 포함될 수 있다. 본 명세서에서 설명되는 동작들은, 하나 이상의 컴퓨터-판독가능 저장 디바이스들 상에 저장된 데이터 혹은 다른 소스들로부터 수신된 데이터에 관해 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어들 "데이터 프로세싱 시스템", "컴퓨팅 디바이스", "컴포넌트" 혹은 "데이터 프로세스 장치"는 데이터를 프로세싱하기 위한 다양한 장치들, 디바이스들, 및 머신들을 포괄하고, 여기에는 예를 들어, 프로그래밍가능 프로세서, 컴퓨터, 시스템-온-칩(system-on-chip), 또는 복수의 프로그래밍가능 프로세서들, 복수의 컴퓨터들, 복수의 시스템-온-칩들, 또는 앞서의 것들의 조합들이 포함된다. 장치는 특수 목적 로직 회로(special purpose logic circuitry), 예를 들어, FPGA(Field Programmable Gate Array, 현장 프로그래밍가능 게이트 어레이) 혹은 ASIC(Application Specific Integrated Circuit, 애플리케이션 특정 집적 회로)를 포함할 수 있다. 장치는 또한, 하드웨어에 추가하여, 해당하는 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드를 포함할 수 있고, 이러한 코드는 예를 들어, 프로세서 펌웨어(processor firmware), 프로토콜 스택(protocol stack), 데이터베이스 관리 시스템(database management system), 오퍼레이팅 시스템(operating system), 크로스-플랫폼 런타임 환경(cross-platform runtime environment), 가상 머신(virtual machine), 혹은 이들의 하나 이상의 것들의 임의의 조합을 구성하는 코드이다. 이러한 장치 및 실행 환경은 서로 다른 다양한 컴퓨팅 모델 기반구조(computing model infrastructure)들을 실현할 수 있는데, 예컨대, 웹 서비스(web service)들, 분산된 컴퓨팅 및 그리드 컴퓨팅 기반구조(distributed computing and grid computing infrastructure)들과 같은 것을 실현할 수 있다. 예를 들어, 다이렉트 액션 API(116), 콘텐츠 선택기 컴포넌트(118), 혹은 NLP 컴포넌트(112), 그리고 다른 데이터 프로세싱 시스템(102) 컴포넌트들은 하나 이상의 데이터 프로세싱 장치들, 시스템들, 컴퓨팅 디바이스들, 혹은 프로세서들을 포함할 수 있거나 혹은 이들을 공유할 수 있다.
컴퓨터 프로그램(이것은 또한 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱(app), 스크립트, 혹은 코드로서 알려져 있음)은 임의 형태의 프로그래밍 언어로 작성될 수 있고(이러한 프로그래밍 언어에는 컴파일링된 언어(compiled language)들 혹은 해석된 언어(interpreted language)들, 선언적 언어(declarative language)들 혹은 절차적 언어(procedural language)들이 포함됨), 그리고 임의의 형태로 배치될 수 있는데, 이러한 배치에는 독립형 프로그램(stand-alone program)으로서 배치되는 것, 또는 컴퓨팅 환경에서의 사용을 위해 적합한 모듈(module), 컴포넌트(component), 서브루틴(subroutine), 오브젝트(object), 혹은 다른 유닛(unit)으로서 배치되는 것이 포함된다. 컴퓨터 프로그램은 파일 시스템(file system) 내의 임의의 파일에 대응할 수 있다. 컴퓨터 프로그램은, 다른 프로그램들 혹은 데이터(예를 들어, 마크업 언어 문서(markup language document)에 저장되는 하나 이상의 스크립트들)를 보유하는 임의의 파일의 일부분에 저장될 수 있거나, 해당하는 프로그램에 전용으로 사용되는 단일 파일에 저장될 수 있거나, 또는 복수의 조정된 파일들(예를 들어, 하나 이상의 모듈들, 서브 프로그램들, 혹은 코드의 일부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 실행되도록 배치될 수 있거나 혹은 복수의 컴퓨터들 상에서 실행되도록 배치될 수 있는데, 이 경우 컴퓨터들은 하나의 사이트(site)에 위치하거나 혹은 복수의 사이트들에 걸쳐 분산되어 통신 네트워크에 의해 상호연결된다.
본 명세서에서 설명되는 프로세스들 및 로직 흐름(logic flow)들은, 입력 데이터에 관해 동작하여 출력을 발생시킴으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍가능 프로세서들(예를 들어, 데이터 프로세싱 시스템(102)의 컴포넌트들)에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예를 들어, FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)에 의해 수행될 수 있고, 그리고 장치들은 또한 특수 목적 로직 회로, 예를 들어, FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)로서 구현될 수 있다. 컴퓨터 프로그램 명령들 및 데이터를 저장하는데 적합한 디바이스들은 모든 형태들의 비-휘발성 메모리, 매체들, 및 메모리 디바이스들을 포함하며, 여기에는 예를 들어, 반도체 메모리 디바이스들, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 혹은 탈착가능한 디스크들; 광 자기 디스크(magneto optical disk)들; 그리고 CD ROM 및 DVD-ROM 디스크들이 포함된다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보충될 수 있거나, 혹은 특수 목적 로직 회로 내에 통합될 수 있다.
본 명세서에서 설명되는 주된 내용은 컴퓨팅 시스템 내에서 구현될 수 있는데, 이러한 컴퓨팅 시스템은, (예를 들어, 데이터 서버로서의) 백 엔드 컴포넌트(back end component)를 포함하거나, 또는 미들웨어 컴포넌트(middleware component)(예를 들어, 애플리케이션 서버)를 포함하거나, 또는 프런트 엔드 컴포넌트(front end component)(예를 들어, 사용자로 하여금 본 명세서에서 설명되는 주된 내용의 구현예와 상호작용할 수 있게 하는 그래픽 사용자 인터페이스 혹은 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 하나 이상의 이러한 백 엔드 컴포넌트들, 미들웨어들, 혹은 프런트 엔드 컴포넌트들의 임의의 조합을 포함한다. 시스템의 컴포넌트들은 임의 형태 혹은 매체의 디지털 데이터 통신, 예를 들어, 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크의 예들은, 로컬 영역 네트워크(Local Area Network)("LAN") 및 와이드 영역 네트워크(Wide Area Network)("WAN"), 인터-네트워크(inter-network)(예를 들어, 인터넷), 그리고 피어-투-피어 네트워크(peer-to-peer network)들(예를 들어, 애드 혹 피어-투-피어 네트워크(ad hoc peer-to-peer network)들)을 포함한다.
시스템(100) 혹은 시스템(400)과 같은 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로로부터 멀리 떨어져 있고, 그리고 전형적으로 통신 네트워크(예를 들어, 네트워크(165))를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들 상에서 실행되는 컴퓨터 프로그램들로서 서로에 대해 클라이언트-서버 관계를 갖고 있는 그러한 컴퓨터 프로그램들에 의해서 일어난다. 일부 구현예들에서, 서버는 데이터(예를 들어, 콘텐츠 아이템을 나타내는 데이터 패킷들)를 클라이언트 디바이스로 (예를 들어, 클라이언트 디바이스와 상호작용하는 사용자에게 데이터를 디스플레이할 목적으로, 그리고 클라이언트 디바이스와 상호작용하는 사용자로부터의 사용자 입력을 수신할 목적으로) 전송한다. 클라이언트 디바이스에서 발생된 데이터(예를 들어, 사용자 상호작용의 결과)는 클라이언트 디바이스로부터 서버에서 수신될 수 있다(예를 들어, 컴퓨팅 디바이스(150), 혹은 콘텐츠 제공자 컴퓨팅 디바이스(155), 혹은 서비스 제공자 컴퓨팅 디바이스(160)로부터 데이터 프로세싱 시스템(102)에 의해 수신될 수 있음).
동작들이 도면들에서 특정 순서로 도시되고 있지만, 이러한 동작들이 그 제시되는 특정 순서, 혹은 순차적 순서로 수행될 것이 요구되는 것은 아니며, 그리고 예시되는 모든 동작들이 수행될 것이 요구되는 것도 아니다. 본 명세서에서 설명되는 액션들은 상이한 순서로 수행될 수 있다.
다양한 시스템 컴포넌트들의 분리가 모든 구현예들에서 이러한 분리를 요구하는 것이 아니며, 설명되는 프로그램 컴포넌트들은 단일 하드웨어 혹은 소프트웨어 제품에 포함될 수 있다. 예를 들어, NLP 컴포넌트(110), 콘텐츠 선택기 컴포넌트(125), 또는 센서 관리 컴포넌트(120)는 단일 컴포넌트, 앱, 혹은 프로그램, 또는 하나 이상의 프로세싱 회로들을 갖는 로직 디바이스, 또는 데이터 프로세싱 시스템(102)의 하나 이상의 서버들의 일부일 수 있다.
이제까지 일부 예시적 구현예들이 설명되었는데, 앞서의 것은 예시적인 것이고 한정의 의미를 갖고 있지 않으며 예로서 제시된 것임은 명백하다. 특히, 비록 본 명세서에서 제시되는 예들의 많은 것들이 방법의 행위들 혹은 시스템의 요소들의 특정 조합들을 수반하고 있어도, 그러한 행위들 및 그러한 요소들은 동일한 목적들을 달성하기 위해 다른 방식들로 결합될 수 있다. 하나의 구현예와 연계되어 논의되는 행위들, 요소들, 및 특징들은 다른 구현예들 혹은 구현들에서 유사한 역할을 하는 것으로부터 배제되도록 의도되지 않았다.
본 명세서에 사용되는 어법(phraseology) 및 용어(terminology)는 설명 목적으로 제공되는 것이며 한정의 의미로서 고려돼서는 안 된다. 본 명세서에서 "포함하는", "포함하고", "갖는", "포함하며", "수반하는", "특징이 있는", "특징을 갖고 있는" 그리고 이들의 변형들의 사용은 이러한 용어들 앞에 나열되는 아이템들, 이들의 등가물들, 및 추가적인 아이템들을 포괄하도록 의도된 것이며, 뿐만 아니라 배타적으로 이러한 용어들 앞에 나열되는 아이템들로 구성되는 대안적인 구현예들을 포괄하도록 의도된 것이다. 하나의 구현예에서, 본 명세서에서 설명되는 시스템들 및 방법들은 본 명세서에서 설명되는 요소들, 행위들, 혹은 컴포넌트들 중 하나, 혹은 이들 중 하나보다 많은 것들의 각각의 조합, 혹은 이들 모두로 구성된다.
단수적 표현으로 지칭되는 본 명세서에서의 시스템들 및 방법들의 구현예들 혹은 요소들 혹은 행위들에 대한 임의의 언급은 또한 이러한 요소들을 복수 개 포함하는 구현예들을 포괄할 수 있으며, 그리고 본 명세서에서 복수적 표현으로 임의의 구현예 혹은 요소 혹은 행위에 대한 임의의 언급은 또한 오로지 단일 요소를 포함하는 구현예들을 포괄할 수 있다. 이러한 단수적 형태 혹은 복수적 형태의 언급들은 본 명세서에서 개시되는 시스템들 혹은 방법들, 이들의 컴포넌트들, 행위들, 혹은 요소들을 단일의 구성 혹은 복수의 구성들로 한정하도록 의도된 것이 아니다. 임의의 행위 혹은 요소가 임의의 정보, 행위, 혹은 요소에 근거한다는 언급들은 임의의 행위 혹은 요소가 임의의 정보, 행위, 혹은 요소에 적어도 부분적으로 근거하는 구현예들을 포함할 수 있다.
본 명세서에서 개시되는 임의의 구현예는 임의의 다른 구현예 혹은 실시예와 결합될 수 있고, 그리고 "임의의 구현예", "일부 구현예들", "하나의 구현예" 등에 관한 언급들은 반드시 상호 배타적인 것이 아니며, 해당 구현예와 연계되어 설명되는 특정 특징, 구조 혹은 특성이 적어도 하나의 구현예 혹은 실시예에 포함될 수 있음을 표시하도록 의도된 것이다. 본 명세서에서 사용되는 바와 같은 이러한 용어들이 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 본 명세서에서 개시되는 실시형태들 및 구현예들과 일관되는 임의의 방식으로 임의의 구현예가 임의의 다른 구현예와 비배타적으로 혹은 배타적으로 결합될 수 있다.
"또는" 및 "혹은"에 관한 언급은 포함적 의미로서 해석될 수 있고, 이에 따라 "또는" 및 "혹은"을 사용하여 설명되는 임의의 항목(term)들은 그 설명되는 항목들 중 단일 항목, 하나보다 많은 항목들, 및 모든 항목들 가운데 어느 하나를 표시할 수 있다. 예를 들어, "'A' 및 'B' 중 적어도 하나"에 관한 언급은 오로지 'A'만을 포함할 수 있고, 오로지 'B'만을 포함할 수 있고, 뿐만 아니라 'A'와 'B'를 모두 포함할 수 있다. "포함하는" 혹은 다른 개방형 용어(open terminology)와 연계되어 사용되는 이러한 언급들은 추가적인 아이템들을 포함할 수 있다.
도면들, 상세한 설명, 혹은 임의의 청구항에서의 기술적 특징들이 참조 부호들과 병기되어 사용되는 경우, 이러한 참조 부호들은 도면들, 상세한 설명, 혹은 청구항들의 명료성(intelligibility)을 증가시키기 위해 포함된 것이다. 이에 따라, 이러한 참조 부호들이 있는 것 혹은 없는 것이 본 발명의 임의의 청구 요소들의 범위에 임의의 한정적 영향을 미치는 것이 아니다.
본 명세서에서 설명되는 시스템들 및 방법들은 본 발명의 특징들로부터 벗어남이 없이 다른 특정 형태들로 구현될 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 후속 액션에 대한(예를 들어, 제 3 액션(215)에 대한) 콘텐츠 아이템을 선택함에 있어서 쓰레드(thread)(200)의 액션들의 시퀀스에서 이전의 액션으로부터의 데이터(예컨대, 제 2 액션(210)이 완료됨 혹은 막 시작함을 표시하는 제 2 액션(210)으로부터의 데이터)에 적어도 부분적으로 근거하여 선택할 수 있다. 앞서의 구현예들은 본 명세서에서 설명되는 시스템들 및 방법들을 한정하는 것이라기보다는 오히려 예시하려는 것이다. 따라서, 본 명세서에서 설명되는 시스템들 및 방법들의 범위는, 앞서의 설명에 의해 표시된다기보다는 오히려 첨부되는 청구항들에 의해 표시되며, 그리고 청구항들의 등가(equivalency)의 의미 및 범위 내에서 일어나는 변경들은 본 발명의 범위에 포함된다.

Claims (20)

  1. 컴퓨터 네트워크(computer network)를 통해 센서(sensor)들을 선택적으로 폴링(polling)하기 위한 시스템으로서, 상기 시스템은 하나 이상의 프로세서들을 포함하는 데이터 프로세싱 시스템(data processing system)을 포함하고, 상기 데이터 프로세싱 시스템은,
    클라이언트 디바이스(client device)의 마이크로폰(microphone)에 의해 검출된 입력 오디오 신호(input audio signal)를 포함하는 데이터 패킷(data packet)들을 상기 데이터 프로세싱 시스템의 인터페이스(interface)를 통해 수신하는 것과;
    임의의 요청(requst) 및 상기 요청에 대응하는 트리거 키워드(trigger keyword)를 식별하기 위해 상기 입력 오디오 신호를 파싱(parsing)하는 것과;
    상기 요청에 응답하는 액션 데이터 구조(action data structure)에 대한 템플릿(template)을 상기 트리거 키워드에 근거하여 선택하는 것과, 여기서 상기 템플릿은 제 1 필드(field)를 포함하며;
    상기 제 1 필드에 대한 정보를 획득하도록 되어 있는 복수의 이용가능한 센서들을 식별하는 것과, 여기서 상기 복수의 이용가능한 센서들은 제 1 센서 및 제 2 센서를 포함하며;
    상기 복수의 이용가능한 센서들 각각의 현재 이용가능한 상태를 결정하는 것과;
    (i) 상기 복수의 이용가능한 센서들 각각의 상기 현재 이용가능한 상태 및 (ii) 리소스 소비를 감소시키는 정책(policy)에 근거하여 상기 복수의 이용가능한 센서들 중 상기 제 1 센서를 선택하는 것과;
    상기 현재 이용가능한 상태 및 상기 정책에 근거하여 선택된 상기 제 1 센서로부터 수신되는 데이터로 상기 제 1 필드를 채우는 것과;
    상기 템플릿의 상기 제 1 필드에 근거하여 상기 액션 데이터 구조를 발생시키는 것과; 그리고
    상기 액션 데이터 구조를 써드 파티 제공자 디바이스(third party provider device)에 전송하여 상기 써드 파티 제공자 디바이스로 하여금 상기 제 1 센서로부터의 상기 데이터를 사용하여 상기 액션 데이터 구조를 프로세싱하도록 하고 상기 요청에 응답하여 동작을 수행하도록 하는 것을
    행하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  2. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 액션 데이터 구조를 써드 파티 제공자 디바이스에 전송하여 상기 써드 파티 제공자 디바이스로 하여금 상기 써드 파티 제공자 디바이스와 상기 클라이언트 디바이스 간의 동작 세션(operation session)을 호출(invoke)하도록 하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  3. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 써드 파티 제공자 디바이스로부터, 상기 써드 파티 제공자 디바이스에 전송된 상기 액션 데이터 구조에 응답하여, 상기 써드 파티 제공자 디바이스가 상기 클라이언트 디바이스와 동작 세션을 확립했다는 표시를 수신하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  4. 삭제
  5. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    데이터의 타입에 근거하여 데이터를 수집하도록 상기 제 1 센서의 구성(configuration)을 조정(adjust)하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  6. 제5항에 있어서,
    상기 구성은 샘플 레이트(sample rate) 및 샘플 간격(sample interval) 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  7. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    위치 정보를 획득하도록 되어 있는 제2의 복수의 이용가능한 센서들을 식별하는 것과, 여기서 상기 제2의 복수의 이용가능한 센서들은 상기 제 1 센서, 상기 제 2 센서, 그리고 제 3 센서를 포함하며;
    상기 제2의 복수의 이용가능한 센서들 각각의 상태를 결정하는 것과; 그리고
    상기 정책에 근거하여 상기 제2의 복수의 이용가능한 센서들 중 상기 제 2 센서를 선택하는 것을
    행하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  8. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 액션 데이터 구조에서 제 2 필드를 식별하는 것과;
    상기 제 2 필드에 대한 데이터를 획득하기 위해 하나 이상의 센서들을 폴링하는 것과; 그리고
    상기 제 2 필드에 대한 데이터를 획득하기 위해 상기 하나 이상의 센서들 중 적어도 하나를 선택하는 것을
    행하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  9. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    위치 정보를 획득하도록 되어 있는 제2의 복수의 이용가능한 센서들을 식별하는 것과, 여기서 상기 제2의 복수의 이용가능한 센서들은 상기 제 1 센서, 그리고 제 3 센서를 포함하며;
    상기 데이터 프로세싱 시스템으로부터의 위치 정보에 대한 요청 이전에 상기 제 1 센서가 상기 클라이언트 디바이스의 현재 위치 정보를 검출했음을 결정하는 것과;
    상기 제 3 센서가 오프라인 상태(offline state)에 있고 상기 현재 위치 정보를 가지고 있지 않음을 결정하는 것과; 그리고
    상기 제 3 센서가 상기 오프라인 상태에 있는 경우에 상기 제 1 센서로부터 상기 현재 위치 정보를 획득하는 것을
    행하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  10. 제1항에 있어서,
    상기 데이터 프로세싱 시스템은,
    상기 클라이언트 디바이스 상에 인스톨(install)된 애플리케이션들의 리스트(list)를 상기 클라이언트 디바이스로부터 수신하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하기 위한 시스템.
  11. 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법으로서, 상기 방법은,
    클라이언트 디바이스의 마이크로폰에 의해 검출된 입력 오디오 신호를 포함하는 데이터 패킷들을 데이터 프로세싱 시스템의 인터페이스를 통해 수신하는 것과;
    상기 데이터 프로세싱 시스템에 의해, 임의의 요청 및 상기 요청에 대응하는 트리거 키워드를 식별하기 위해 상기 입력 오디오 신호를 파싱하는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 요청에 응답하는 액션 데이터 구조에 대한 템플릿을 상기 트리거 키워드에 근거하여 선택하는 것과, 여기서 상기 템플릿은 제 1 필드를 포함하며;
    상기 데이터 프로세싱 시스템에 의해, 상기 제 1 필드에 대한 정보를 획득하도록 되어 있는 복수의 이용가능한 센서들을 식별하는 것과, 여기서 상기 복수의 이용가능한 센서들은 제 1 센서 및 제 2 센서를 포함하며;
    상기 데이터 프로세싱 시스템에 의해, 상기 복수의 이용가능한 센서들 각각의 현재 이용가능한 상태를 결정하는 것과;
    상기 데이터 프로세싱 시스템에 의해, (i) 상기 복수의 이용가능한 센서들 각각의 상기 현재 이용가능한 상태 및 (ii) 리소스 소비를 감소시키는 정책에 근거하여 상기 복수의 이용가능한 센서들 중 상기 제 1 센서를 선택하는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 현재 이용가능한 상태 및 상기 정책에 근거하여 선택된 상기 제 1 센서로부터 수신되는 데이터로 상기 제 1 필드를 채우는 것과;
    상기 데이터 프로세싱 시스템에 의해, 상기 템플릿의 상기 제 1 필드에 근거하여 상기 액션 데이터 구조를 발생시키는 것과; 그리고
    상기 데이터 프로세싱 시스템에 의해, 상기 액션 데이터 구조를 써드 파티 제공자 디바이스에 전송하여 상기 써드 파티 제공자 디바이스로 하여금 상기 제 1 센서로부터의 상기 데이터를 사용하여 상기 액션 데이터 구조를 프로세싱하도록 하고 상기 요청에 응답하여 동작을 수행하도록 하는 것을
    포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  12. 제11항에 있어서,
    상기 방법은,
    상기 액션 데이터 구조를 써드 파티 제공자 디바이스에 전송하여 상기 써드 파티 제공자 디바이스로 하여금 상기 써드 파티 제공자 디바이스와 상기 클라이언트 디바이스 간의 동작 세션을 호출하도록 하는 것을 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  13. 제11항에 있어서,
    상기 방법은,
    상기 써드 파티 제공자 디바이스로부터, 상기 써드 파티 제공자 디바이스에 전송된 상기 액션 데이터 구조에 응답하여, 상기 써드 파티 제공자 디바이스가 상기 클라이언트 디바이스와 동작 세션을 확립했다는 표시를 수신하는 것을 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  14. 삭제
  15. 제11항에 있어서,
    상기 방법은,
    데이터의 타입에 근거하여 데이터를 수집하도록 상기 제 1 센서의 구성을 조정하는 것을 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  16. 제15항에 있어서,
    상기 구성은 샘플 레이트 및 샘플 간격 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  17. 제11항에 있어서,
    상기 방법은,
    위치 정보를 획득하도록 되어 있는 제2의 복수의 이용가능한 센서들을 식별하는 것과, 여기서 상기 제2의 복수의 이용가능한 센서들은 상기 제 1 센서, 상기 제 2 센서, 그리고 제 3 센서를 포함하며;
    상기 제2의 복수의 이용가능한 센서들 각각의 상태를 결정하는 것과; 그리고
    상기 정책에 근거하여 상기 제2의 복수의 이용가능한 센서들 중 상기 제 2 센서를 선택하는 것을
    포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  18. 제11항에 있어서,
    상기 방법은,
    상기 액션 데이터 구조에서 제 2 필드를 식별하는 것과;
    상기 제 2 필드에 대한 데이터를 획득하기 위해 하나 이상의 센서들을 폴링하는 것과; 그리고
    상기 제 2 필드에 대한 데이터를 획득하기 위해 상기 하나 이상의 센서들 중 적어도 하나를 선택하는 것을
    포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  19. 제11항에 있어서,
    상기 방법은,
    위치 정보를 획득하도록 되어 있는 제2의 복수의 이용가능한 센서들을 식별하는 것과, 여기서 상기 제2의 복수의 이용가능한 센서들은 상기 제 1 센서, 그리고 제 3 센서를 포함하며;
    상기 데이터 프로세싱 시스템으로부터의 위치 정보에 대한 요청 이전에 상기 제 1 센서가 상기 클라이언트 디바이스의 현재 위치 정보를 검출했음을 결정하는 것과;
    상기 제 3 센서가 오프라인 상태에 있고 상기 현재 위치 정보를 가지고 있지 않음을 결정하는 것과; 그리고
    상기 제 3 센서가 상기 오프라인 상태에 있는 경우에 상기 제 1 센서로부터 상기 현재 위치 정보를 획득하는 것을
    포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
  20. 제11항에 있어서,
    상기 방법은,
    상기 클라이언트 디바이스 상에 인스톨된 애플리케이션들의 리스트를 상기 클라이언트 디바이스로부터 수신하는 것을 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 통해 센서들을 선택적으로 폴링하는 방법.
KR1020197016186A 2016-12-30 2017-08-31 선택적 센서 폴링 KR102049036B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/395,715 US10924376B2 (en) 2016-12-30 2016-12-30 Selective sensor polling
US15/395,715 2016-12-30
PCT/US2017/049779 WO2018125305A1 (en) 2016-12-30 2017-08-31 Selective sensor polling

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177031461A Division KR101988610B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197034136A Division KR102125991B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링

Publications (2)

Publication Number Publication Date
KR20190066087A KR20190066087A (ko) 2019-06-12
KR102049036B1 true KR102049036B1 (ko) 2019-11-26

Family

ID=59901583

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020197034136A KR102125991B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링
KR1020197016186A KR102049036B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링
KR1020177031461A KR101988610B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197034136A KR102125991B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177031461A KR101988610B1 (ko) 2016-12-30 2017-08-31 선택적 센서 폴링

Country Status (8)

Country Link
US (3) US10924376B2 (ko)
EP (3) EP3588918B1 (ko)
JP (3) JP6629882B2 (ko)
KR (3) KR102125991B1 (ko)
CN (2) CN108513705B (ko)
DE (2) DE112017000141T5 (ko)
GB (2) GB2572316B (ko)
WO (1) WO2018125305A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11627186B2 (en) * 2012-05-17 2023-04-11 Digi International, Inc. Wireless network of environmental sensor units
US10924376B2 (en) 2016-12-30 2021-02-16 Google Llc Selective sensor polling
US10405137B2 (en) 2017-03-13 2019-09-03 Kevin R. Imes Mobile application and system for associating actions with independent geographic locations
US10303181B1 (en) 2018-11-29 2019-05-28 Eric John Wengreen Self-driving vehicle systems and methods
US11073838B2 (en) 2018-01-06 2021-07-27 Drivent Llc Self-driving vehicle systems and methods
US10299216B1 (en) * 2018-01-06 2019-05-21 Eric John Wengreen Self-driving vehicle actions in response to a low battery
WO2019235100A1 (ja) * 2018-06-08 2019-12-12 株式会社Nttドコモ 対話装置
US11461863B2 (en) 2018-08-24 2022-10-04 Bright Marbles, Inc. Idea assessment and landscape mapping
US11189267B2 (en) * 2018-08-24 2021-11-30 Bright Marbles, Inc. Intelligence-driven virtual assistant for automated idea documentation
US11081113B2 (en) 2018-08-24 2021-08-03 Bright Marbles, Inc. Idea scoring for creativity tool selection
US11164065B2 (en) 2018-08-24 2021-11-02 Bright Marbles, Inc. Ideation virtual assistant tools
US10493952B1 (en) 2019-03-21 2019-12-03 Drivent Llc Self-driving vehicle systems and methods
US10479319B1 (en) 2019-03-21 2019-11-19 Drivent Llc Self-driving vehicle systems and methods
US10471804B1 (en) 2018-09-18 2019-11-12 Drivent Llc Self-driving vehicle systems and methods
US10282625B1 (en) 2018-10-01 2019-05-07 Eric John Wengreen Self-driving vehicle systems and methods
US11221622B2 (en) 2019-03-21 2022-01-11 Drivent Llc Self-driving vehicle systems and methods
US10794714B2 (en) 2018-10-01 2020-10-06 Drivent Llc Self-driving vehicle systems and methods
US11644833B2 (en) 2018-10-01 2023-05-09 Drivent Llc Self-driving vehicle systems and methods
US10832569B2 (en) 2019-04-02 2020-11-10 Drivent Llc Vehicle detection systems
US10900792B2 (en) 2018-10-22 2021-01-26 Drivent Llc Self-driving vehicle systems and methods
US10481606B1 (en) 2018-11-01 2019-11-19 Drivent Llc Self-driving vehicle systems and methods
US10377342B1 (en) 2019-02-04 2019-08-13 Drivent Technologies Inc. Self-driving vehicle systems and methods
US10744976B1 (en) 2019-02-04 2020-08-18 Drivent Llc Self-driving vehicle systems and methods
US20200333868A1 (en) * 2019-04-22 2020-10-22 Ecolink Intelligent Technology, Inc. Power-saving sensor
EP3916571A4 (en) * 2019-04-26 2022-08-31 Siemens Aktiengesellschaft DATA COLLECTION SYSTEM AND PROCEDURES
CN112269607A (zh) * 2020-11-17 2021-01-26 北京百度网讯科技有限公司 小程序的控制方法、系统、服务器以及终端设备
US11842229B2 (en) * 2021-01-06 2023-12-12 Prama, Inc. System and method for designing and developing application programming interface
EP4102804A1 (en) * 2021-06-10 2022-12-14 Juniper Networks, Inc. Metric collection based on device characteristic information
US11516067B1 (en) 2021-06-10 2022-11-29 Juniper Networks, Inc. Collecting metric information by sensors based on device characteristic information
GB2608634A (en) * 2021-07-08 2023-01-11 Vodafone Group Services Ltd Device data validity

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275875A1 (en) * 2010-01-18 2013-10-17 Apple Inc. Automatically Adapting User Interfaces for Hands-Free Interaction
US20160077892A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Automatic Sensor Selection Based On Requested Sensor Characteristics

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275806B1 (en) 1999-08-31 2001-08-14 Andersen Consulting, Llp System method and article of manufacture for detecting emotion in voice signals by utilizing statistics for voice signal parameters
US6684249B1 (en) 2000-05-26 2004-01-27 Sonicbox, Inc. Method and system for adding advertisements over streaming audio based upon a user profile over a world wide area network of computers
US6857007B1 (en) 2000-08-30 2005-02-15 Bloomfield Enterprises, Llc Personal digital assistant facilitated communication system
JP2002215670A (ja) * 2001-01-15 2002-08-02 Omron Corp 音声応答装置、音声応答方法、音声応答プログラム、音声応答プログラムを記録した記録媒体および予約システム
US7853255B2 (en) 2004-04-16 2010-12-14 Broadcom Corporation Digital personal assistance via a broadband access gateway
US8195133B2 (en) 2005-09-14 2012-06-05 Jumptap, Inc. Mobile dynamic advertisement creation and placement
US7904505B2 (en) 2005-11-02 2011-03-08 At&T Intellectual Property I, L.P. Service to push author-spoken audio content with targeted audio advertising to users
EP2523443B1 (en) 2006-02-10 2014-01-29 Nuance Communications, Inc. A mass-scale, user-independent, device-independent, voice message to text conversion system
EP2054804B1 (en) * 2006-04-07 2017-05-17 Qualcomm Incorporated Sensor interface, and methods and apparatus pertaining to same
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8145561B1 (en) 2009-01-05 2012-03-27 Sprint Communications Company L.P. Phone usage pattern as credit card fraud detection trigger
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US8276159B2 (en) 2009-09-23 2012-09-25 Microsoft Corporation Message communication of sensor and other data
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
AU2012316484A1 (en) * 2011-09-30 2014-04-17 Apple Inc. Automatically adapting user interfaces for hands-free interaction
EP3200185A1 (en) * 2011-09-30 2017-08-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US9230560B2 (en) 2012-10-08 2016-01-05 Nant Holdings Ip, Llc Smart home automation systems and methods
KR102179811B1 (ko) * 2012-12-03 2020-11-17 엘지전자 주식회사 포터블 디바이스 및 음성 인식 서비스 제공 방법
CN113470640B (zh) * 2013-02-07 2022-04-26 苹果公司 数字助理的语音触发器
US20140358472A1 (en) * 2013-05-31 2014-12-04 Nike, Inc. Dynamic sampling
US9946985B2 (en) * 2014-04-15 2018-04-17 Kofax, Inc. Touchless mobile applications and context-sensitive workflows
US9547363B2 (en) * 2014-07-16 2017-01-17 Mediatek Inc. Power-saving method and associated electronic device
US9602349B2 (en) * 2014-08-18 2017-03-21 Qualcomm Incorporated Multi-device sensor subsystem joint optimization
US9769564B2 (en) * 2015-02-11 2017-09-19 Google Inc. Methods, systems, and media for ambient background noise modification based on mood and/or behavior information
CN106164814A (zh) * 2015-03-13 2016-11-23 (株)未来百乐 用于由移动设备控制传感器的移动设备和方法
US10267661B2 (en) * 2015-03-23 2019-04-23 Incoming Pty Ltd Energy efficient mobile context collection
WO2016157642A1 (ja) * 2015-03-27 2016-10-06 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US20160322044A1 (en) 2015-04-01 2016-11-03 Elwha Llc Networked User Command Recognition
US10383568B2 (en) * 2015-09-30 2019-08-20 Apple Inc. Confirming sleep based on secondary indicia of user activity
US20170092278A1 (en) 2015-09-30 2017-03-30 Apple Inc. Speaker recognition
US9747926B2 (en) 2015-10-16 2017-08-29 Google Inc. Hotword recognition
US9928840B2 (en) 2015-10-16 2018-03-27 Google Llc Hotword recognition
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10572524B2 (en) * 2016-02-29 2020-02-25 Microsoft Technology Licensing, Llc Content categorization
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10659921B2 (en) * 2016-09-23 2020-05-19 Qualcomm Incorporated Measurement batching
US10924376B2 (en) 2016-12-30 2021-02-16 Google Llc Selective sensor polling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275875A1 (en) * 2010-01-18 2013-10-17 Apple Inc. Automatically Adapting User Interfaces for Hands-Free Interaction
US20160077892A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Automatic Sensor Selection Based On Requested Sensor Characteristics

Also Published As

Publication number Publication date
EP3360310A1 (en) 2018-08-15
EP3588918A1 (en) 2020-01-01
CN112885349A (zh) 2021-06-01
JP6629882B2 (ja) 2020-01-15
GB2601252A (en) 2022-05-25
US11627065B2 (en) 2023-04-11
EP3979604A1 (en) 2022-04-06
GB2601252B (en) 2022-11-16
CN108513705A (zh) 2018-09-07
DE212017000329U1 (de) 2019-12-20
GB2572316B (en) 2022-02-23
KR20180091706A (ko) 2018-08-16
GB201803228D0 (en) 2018-04-11
EP3588918B1 (en) 2021-12-22
JP2019506758A (ja) 2019-03-07
US20230246936A1 (en) 2023-08-03
US10924376B2 (en) 2021-02-16
JP6828124B2 (ja) 2021-02-10
JP2020064308A (ja) 2020-04-23
KR101988610B1 (ko) 2019-06-12
KR102125991B1 (ko) 2020-06-23
WO2018125305A1 (en) 2018-07-05
CN108513705B (zh) 2021-05-18
US20180191596A1 (en) 2018-07-05
US20210144079A1 (en) 2021-05-13
DE112017000141T5 (de) 2018-09-13
GB2572316A (en) 2019-10-02
KR20190132557A (ko) 2019-11-27
JP7136941B2 (ja) 2022-09-13
JP2021064011A (ja) 2021-04-22
KR20190066087A (ko) 2019-06-12
EP3360310B1 (en) 2019-08-21

Similar Documents

Publication Publication Date Title
KR102049036B1 (ko) 선택적 센서 폴링
US11949733B2 (en) Audio-based data structure generation
US20200251103A1 (en) Feedback controller for data transmissions

Legal Events

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