KR102429407B1 - 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션 - Google Patents

사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션 Download PDF

Info

Publication number
KR102429407B1
KR102429407B1 KR1020217042284A KR20217042284A KR102429407B1 KR 102429407 B1 KR102429407 B1 KR 102429407B1 KR 1020217042284 A KR1020217042284 A KR 1020217042284A KR 20217042284 A KR20217042284 A KR 20217042284A KR 102429407 B1 KR102429407 B1 KR 102429407B1
Authority
KR
South Korea
Prior art keywords
custom
conversation
state
sub
application
Prior art date
Application number
KR1020217042284A
Other languages
English (en)
Other versions
KR20220002704A (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 KR20220002704A publication Critical patent/KR20220002704A/ko
Application granted granted Critical
Publication of KR102429407B1 publication Critical patent/KR102429407B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • 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
    • 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/28Constructional details of speech recognition systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L17/00Speaker identification or verification techniques
    • G10L17/22Interactive procedures; Man-machine interfaces
    • 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/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

구현들은 커스텀(customized) 인터렉티브 대화 애플리케이션을 생성 및/또는 실행하는 것과 관련된다. 커스텀 인터렉티브 대화 어플리케이션은 사용자가 커스텀 상태 및 그 커스텀 상태 사이의 커스텀 전환을 생성할 수 있게 하는 상태 매핑 툴로부터 생성될 수 있다. 그런 다음 생성된 커스텀 상태 및 커스텀 전환에 기초하여 커스텀 구성 디스크립션이 생성된다. 또한, 추가 또는 대체 상태 및 전환을 포함하는 디폴트 구성 디스크립션이 식별된다. 커스텀 인터렉티브 대화 애플리케이션을 실행할 때, 대화 턴(turn)은 우선하는 커스텀 구성 디스트립션 및 임의의 미정의된 상태 및/또는 전환에 사용되는 디폴트 구성 디스크립션을 갖는 상태 및 전환 정보에 기초하여 생성된다. 구현들은 추가적으로 또는 대안적으로 생성된 커스텀 상태 및 커스텀 전환, 및 디폴트 구성 디스크립션에 기초하여 커스텀 에이전트를 생성 및/또는 실행하는 것과 관련된다.

Description

사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션{USER-CONFIGURED AND CUSTOMIZED INTERACTIVE DIALOG APPLICATION}
자동화 어시스턴트("개인 비서", "모바일 조수"라고도 함)는 스마트 폰, 태블릿 컴퓨터, 웨어러블 디바이스, 자동차 시스템, 독립형 개인 비서 디바이스 등과 같은 다양한 클라이언트 디바이스를 통해 사용자에 의해 상호 작용될 수 있다. 스마트 폰, 태블릿 컴퓨터, 웨어러블 디바이스, 자동차 시스템, 독립형 개인 비서 디바이스와 같은 다양한 클라이언트 디바이스를 통해 사용자와 상호 작용할 수 있다. 자동화 어시스턴트는 사용자로부터 입력(예를 들어, 타이핑된 및/또는 음성 자연어 입력)을 수신하고 응답형 컨텐츠(예를 들어, 시각 및/또는 음성 자연어 출력)로 응답한다. 클라이언트 디바이스를 통해 상호 작용하는 자동화 어시스턴트는 클라이언트 디바이스 자체 및/또는 클라이언트 디바이스와 네트워크 통신하는 하나 이상의 원격 컴퓨팅 디바이스(예를 들어, "클라우드"의 컴퓨팅 디바이스(들))를 통해 구현될 수 있다.
본 명세서는 일반적으로 사용자 인터페이스 입력에 기초하여 생성된 커스텀(customized, 맞춤형) 구성 디스크립션에 기초하여 커스텀 인터렉티브 대화 애플리케이션을 생성 및 실행하기 위한 방법, 장치 및 컴퓨터 판독 가능 매체에 관한 것이다. 일부 구현들에서, 사용자는 사용자 매핑 툴을 이용하여, 커스텀 인터렉티브 대화 애플리케이션에 대한 커스텀 상태 세트를 생성하고, 그 커스텀 상태사이에서 상기 커스텀 인터렉티브 대화 애플리케이션에 대한 커스텀 전환을 생성한다. 커스텀 구성 디스크립션은 매핑 툴과의 상호 작용을 통해 사용자가 지정한 대로 커스텀 상태 및 그 상태간 커스텀 전환에 기초하여 생성될 수 있다. 대응하는 디폴트 구성 디스크립션이 (예를 들어, 복수의 후보 디폴트 구성 디스크립션으로부터) 선택된다. 예를 들어, 디폴트 구성 디스크립션은 생성되는 인터렉티브 대화 애플리케이션의 클래스에 기초하여 및/또는 그 커스텀 인터렉티브 대화 애플리케이션이 생성되는 (복수의 후보 자동화 어시스턴트의) 특정 자동화 어시스턴트에 기초하여 선택될 수 있다. 선택된 디폴트 구성 디스크립션은 디폴트 상태 및 디폴트 전환을 포함할 수 있으며, 이들 중 일부(또는 모두)는 커스텀 구성 디스크립션에 포함되지 않는다. 이어서 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션은 함께 사용되어 인간-컴퓨터 대화에 참여하고 커스텀 인터렉티브 대화 애플리케이션을 실행할 수 있다. 결과적인 대화의 대화 턴(turn, 전환) 중에, 커스텀 구성 디스크립션은 그 커스텀 구성 디스크립션에 명시적으로 기술된 상태들에 기초하여 일부 대화 턴에 이용될 수 있고, 상기 디폴트 구성 디스크립션은 커스텀 구성 디스크립션에 명시적으로 기술되지 않은 상태들에 기초하여 일부 다른 대화 턴에 이용될 수 있다.
본 명세서에 기술된 일부 구현들의 일 예로서, 개발(하는) 사용자는 호출(하는) 사용자가 자동화 어시스턴트를 통해(예를 들어, 호출 사용자의 클라이언트 디바이스의 어시스턴트 인터페이스를 통해) 커스텀 애플리케이션과 상호 작용할 수 있게 하는 커스텀 애플리케이션을 구성하는데 관심을 가질 수 있으며, 여기서 커스텀 애플리케이션은 사용자와의 인터렉티브 대화에 참여하고 그 인터렉티브 대화의 일부로 사용자에게 사실(facts)을 제공하도록 구성된다. 개발 사용자는 그래픽 사용자 인터페이스-기반 매핑 애플리케이션을 사용하여 커스텀 "사실 제공(Serve Fact) 상태를 생성할 수 있으며, 이 상태에는 호출 사용자와의 인터렉티브 대화 중에 그 상태가 발생하면 호출 사용자에게 랜더링하기 위해 자동화 어시스턴트에 의해 제공될 수 있는 하나 이상의 사실 진술이 포함된다. 또한, 개발 사용자는 자동화 어시스턴트가 사실을 호출 사용자에게 렌더링한 후에 자동으로 전환되는 "다음 사실 프롬프트(Prompt For Next Fact)" 상태를 정의할 수 있다. 상기 "다음 사실 프롬프트" 상태는 자동화 어시스턴트가 호출 사용자에게 출력으로서 렌더링(청각적 및/또는 그래픽적으로)되게 하는 질문을 포함할 수 있다. 예를 들어, 질문은 호출 사용자가 다른 사실을 제공하는데 관심이 있는지에 대해 호출 사용자에게 프롬프트할 수 있다. 또한, 상기 "다음 사실 프롬프트" 상태는 그 질문의 렌더링에 응답하여 호출 사용자로부터의 긍정적인 사용자 인터페이스 입력이 수신되는 경우 자동화 어시스턴트가 "사실 제공" 상태로 다시 전환하게 하는 전환 정보를 포함할 수 있다. 개발 사용자는 또한 호출 사용에 의해 커스텀 애플리케이션이 처음 호출될 때 웰컴(welcome) 메시지가 표시되게 하는 "웰컴" 상태 및/또는 커스텀 애플리케이션의 인터렉티브 대화가 굿바이(goodbye) 메시지의 렌더링 후 선택적으로) 종료되게 하는 "굿바이" 상태를 선택적으로 정의할 수 있다. 개발 사용자는 또한 커스텀 애플리케이션과 관련시킬 하나 이상의 호출 문구을 정의할 수 있다. 일단 개발 사용자가 커스텀 상태들 및 커스텀 전환들의 정의를 완료하면, 그 커스텀 상태들 및 커스텀 전환들에 기초하여 커스텀 구성 디스크립션이 생성된다. 또한, 사실 제공 애플리케이션에 대한 디폴트 구성 디스크립션은 선택된 클래스의 인터렉티브 대화 애플리케이션에 특정적이거나 모든 애플리케이션에 대한 단일 디폴트 구성 디스크립션일 수 있다. 호출 사용자가 이후에 커스텀 애플리케이션을 호출할 때, 커스텀 구성 디스크립션은 커스텀 구성 디스크립션의 커스텀 상태들에 의해 대화의 상태들이 정의되는 경우에 호출 사용자와의 인터렉티브 대화에 참여하는데 사용되는 반면, 디폴트 구성 디스크립션은 커스텀 구성 디스크립션에 정의되지 않은 대화 상태들이 발생하는 경우에 사용된다. 예를 들어, 커스텀 구성 디스크립션은 "굿바이" 상태에 대한 정의를 포함하지 않을 수 있으므로, 디폴트 구성 디스크립션에 정의된 "굿바이" 상태는 대신에 대화 애플리케이션의 인스턴스에 대한 최종 대화 턴을 생성하는데 사용될 수 있다. 또한, 디폴트 구성 디스크립션은 모든 상태에 적용될 수 있는(커스텀 구성 디스크립션에 정의되거나 정의되지 않을 수 있는) 하나 이상의 파라미터에 대한 디폴트 정의를 포함할 수 있다. 예를 들어, 디폴트 구성 디스크립션은 기본적으로 커스텀 구성 디스크립션에 정의되지 않은 경우 모든 상태의 파라미터일 수 있는 정의된 "입력 없음(No Input)" 파라미터를 포함할 수 있다. 따라서, 디폴트 "입력 없음" 파라미터는 모든 상태에 포함될 수 있고, 사용자 입력이 이해되지 않는 경우 및/또는 사용자가 상기 대화 애플리케이션이 임의의 상태에 있을 때 예상 입력을 제공하지 않고 일정 시간 동안 대기하는 경우 대화를 생성하는데 이용될 수 있다. 일부 구현들에서, 호출 사용자는 개발 사용자의 사용자 인터페이스 입력을 통해 커스텀 애플리케이션과 연관된 호출 문구을 포함하는 자연어 입력(예를 들어, 음성 발언)을 자동화 어시스턴트로 제공함으로써 커스텀 애플리케이션이 호출되게 한다. 예를 들어, 개발 사용자는 "Bob의 퀴즈 게임"이라는 호출 문구을 제공하여 커스텀 애플리케이션과 관련시킬 수 있으며, 자동화 어시스턴트는 호출 문구과 관련하여 저장되는 커스텀 애플리케이션에 기초하여, 호출 사용자의 "Bob의 퀴즈 게임"이라는 발언에 응답하여 커스텀 애플리케이션을 식별할 수 있다.
대안적으로 또는 부가적으로, 에이전트가 사용자-생성 구성 디스크립션 및/또는 매핑 툴로부터 생성될 수 있고, 에이전트는 나중에 실행될 수 있다. 예를 들어, 시스템은 상태 및 전환 정보를 수신하고, 커스텀 구성 디스크립션을 생성하고, 디폴트 구성 디스크립션을 식별하고, 설명들에 기초하여 에이전트를 생성할 수 있다. 이어서 에이전트는 다양한 자동화 어시스턴트 상호 작용에 이용될 수 있다. 예를 들어, 자동화 어시스턴트는 사용자 입력을 수신하고, 그 사용자 입력에 기초하여 에이전트 커맨드를 생성하고, 에이전트 명령을 에이전트로 전송하며, 에이전트는 에이전트 명령에 기초한 응답형 컨텐츠 및 사용자 입력에 응답하여 제공되는 응답형 컨텐츠(또는 그의 변환)를 생성할 수 있다.
본 명세서에 기술된 구현들은 개발 사용자가 기능적 및/또는 강건한 애플리케이션 및/또는 에이전트에 필요한 일부 상태만 사용자 인터페이스 입력으로 정의하는 상황에서 커스텀 인터렉티브 대화 애플리케이션 및/또는 커스텀 인터렉티브 에이전트를 생성할 수 있다. 예를 들어, 이들 구현은 디폴트 구성 디스크립션을 활용하여 기능적 및/또는 강건한 애플리케이션 및/또는 에이전트에 필요한 다양한 상태 및/또는 상태 전환을 명시적으로 정의하는 추가 사용자 인터페이스 입력이 필요하지 않도록 할 수 있다. 이들 및 다른 방식으로, 애플리케이션 및/또는 에이전트의 생성에 필요한 사용자 인터페이스 입력의 양이 감소될 수 있는데, 이는 커스텀 인터렉티브 대화 애플리케이션을 생성할 때 개발 사용자에 의해 이용되는 클라이언트 디바이스(들)의 다양한 자원을 보존할 수 있다. 게다가, 다양한 상태 및/또는 상태 전환에 대응하는 데이터가 클라이언트 디바이스(들)에 의해 커스텀 인터렉티브 대화 애플리케이션을 생성하는 원격 컴퓨터 시스템(들)으로 전송될 필요가 없으므로 네트워크 자원이 감소될 수 있다. 또한, 상기 감소된 사용자 인터페이스 입력량은 손재주가 좋지 않은 개발 사용자에게 유익할 수 있다.
또한, 본 명세서에 기술된 바와 같이, 동일한 디폴트 구성 디스크립션(들)은 복수의 개별(disparate) 커스텀 인터렉티브 대화 애플리케이션 각각에 대한 다양한 구현에 이용될 수 있다. 이를 통해 상이한 커스텀 애플리케이션 각각에 대해 별도의 인스턴스를 완전히 별도로 저장하지 않고도 동일한 디폴트 구성 디스크립션을 활용할 수 있다. 이러한 방식으로, 각각의 개별 커스텀 애플리케이션에 대해 별도의 인스턴스를 별도로 저장해야 하는 대신에, 복수의 개별 커스텀 애플리케이션이 구성 디스크립션을 공유할 수 있으므로 저장 자원을 보존할 수 있다. 또한, 본 명세서에 기술된 다양한 구현은 커스텀 인터렉티브 대화 애플리케이션 및/또는 에이전트를 생성하는데 정의된 커스텀 상태 및 커스텀 전환을 보충하기 위해 디폴트 구성 디스크립션을 활용한다. 이러한 구현들에서, 디폴트 구성 디스크립션의 활용은 생성된 애플리케이션 및/또는 에이전트가 기능적 및/또는 보다 강력해 진다. 생성된 애플리케이션 및/또는 에이전트를 기능적 및/또는 보다 강건하게 만들면, 애플리케이션을 실행하는 및/또는 에이전트와 인터페이스하는 자동화 어시스턴트와의 인간 상호 작용을 통해(예를 들어, 클라이언트 디바이스의 어시스턴트 인터페이스를 통해) 참여하는 인터렉티브 대화 중에 발생하는 상호 작용과 같은 향상된 인간-컴퓨터 상호 작용으로 이어질 수 있다. 예를 들어, 디폴트 구성 디스크립션을 사용하면 자동화 어시스턴트가 다양한 오류 조건, 예상치 못한 사용자 인터페이스 입력 및/또는 실패가 발생했을 수 있는 다른 상황에 응답할 수 있으므로 향상된 인간-컴퓨터 상호 작용을 제공할 수 있다.
위의 설명은 본 명세서에 기술된 일부 구현들에 대한 개요로서 제공된다. 추가 및 대안적인 구현들이 아래에 더 상세히 설명된다.
일부 구현들에서, 하나 이상의 프로세서에 의해 수행되는 방법이 제공되며, 인터렉티브 대화 애플리케이션의 표시 및 사용자가 생성한 커스텀 인터렉티브 대화 애플리케이션에 대한 그래픽 상태 애플리케이션으로부터 커스텀 상태 및 커스텀 상태 전환의 상태 맵을 수신하는 단계를 포함한다. 상기 커스텀 상태 각각은 대응하는 커스텀 상태들 중 하나에 대한 커스텀 상태 정보를 정의하고, 상기 커스텀 상태 전환 각각은 대응하는 커스텀 상태들 중 하나로부터 커스텀 전환 정보를 정의한다. 방법은 커스텀 상태들 및 커스텀 상태 전환들에 기초하여 커스텀 구성 디스크립션을 생성하는 단계를 더 포함한다. 방법은 인터렉티브 대화 애플리케이션의 표시에 기초하여 디폴트 구성 디스크립션을 식별하는 단계를 더 포함한다. 상기 디폴트 구성 디스크립션은 디폴트 상태 정보 및 하나 이상의 디폴트 상태에 대한 디폴트 전환 정보를 포함한다. 방법은 추가 사용자에 의해 조작되는 추가 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공된 자연어 입력을 수신하는 단계 및 상기 자연어 입력이 인터렉티브 대화 애플리케이션을 참조하는지 결정하는 단계를 더 ㅍ포함한다. 방법은 자연어 입력이 상기 인터렉티브 대화 애플리케이션을 참조한다는 결정에 응답하여, 상기 커스텀 구성 디스크립션 및 상기 디폴트 구성 디스크립션 모두에 기초하여 커스텀 인터렉티브 대화 애플리케이션을 실행하는 단계를 더폼한다. 일부 구현들에서, 상기 커스텀 인터렉티브 대화 애플리케이션을 실행하는 단계는 상기 추가 사용자와 상기 커스텀 인터렉티브 대화 애플리케이션 사이의 인터렉티브 대화 중에 상기 어시스턴트 인터페이스를 통해 렌더링하기 위한 다수의 출력 인스턴스를 생성하는 단계를 포함한다. 상기 다수의 출력 인스턴스 각각은 커스텀 인터렉티브 대화 애플리케이션의 실행 중에 상기 인터렉티브 대화의 다수의 대화 턴(turn) 중 대응하는 하나에 대한 것이고, 상기 다수의 출력 인스턴스 중 적어도 일부는 상기 커스텀 구성 디스크립션을 사용하여 생성되고, 상기 다수의 출력 인스턴스 중 적어도 일부는 디폴트 구성 디스크립션을 사용하여 생성된다. 일부 구현들에서, 하나 이상의 출력 인스턴스는 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션 모두에 기초하여 생성될 수 있다.
일 예로서, 인터렉티브 대화의 출력 인스턴스는 커스텀 구성 디스크립션에 정의된 상태를 이용하여 생성될 수 있고, 상기 인터렉티브 대화의 추가 출력 인스턴스는 디폴트 구성 디스크립션에 정의된 추가 상태를 이용하여 생성될 수 있으며, 상기 인터렉티브 대화의 후속(further) 출력 인스턴스는 디폴트 구성 디스크립션 및 커스텀 구성 디스크립션 모두로부터의 컨텐츠에 기초하는 후속 상태를 사용하여 생성될 수 있다.
본 명세서에 개시된 기술의 이러한 구현 및 다른 구현은 다음 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
일부 구현들에서, 다수의 대화 턴의 특정(given) 대화 턴에서 다수의 출력 인스턴스의 특정 출력 인스턴스를 생성하는 단계는 특정 대화 턴에서 인터렉티브 대화의 현재 상태를 식별하는 단계와; 상기 인터렉티브 대화의 현재 상태가 커스텀 구성 디스크립션의 커스텀 상태들 중 하나인지 여부를 결정하는 단계와; 그리고 상기 대화의 현재 상태가 커스텀 구성 디스크립션의 커스텀 상태들 중 하나라는 결정에 응답하여, 상기 커스텀 상태들 중 하나에 대해 정의된 커스텀 상태 정보에 기초하여 특정 출력 인스턴스를 생성하는 단계를 포함한다. 이러한 구현들의 일부 버전에서, 상기 다수의 대화 턴의 특정 추가 대화 턴에서 다수의 출력 인스턴스의 추가 특정 출력 인스턴스를 생성하는 단계는, 추가 대화 턴에서 인터렉티브 대화의 추가 현재 상태를 식별하는 단계와; 상기 인터렉티브 대화의 추가 현재 상태가 커스텀 구성 디스크립션의 커스텀 상태들 중 하나인지 여부를 결정하는 단계와; 그리고 상기 대화의 추가 현재 상태가 커스텀 구성 디스크립션의 커스텀 상태들 중 하나가 아니라는 결정에 응답하여, 상기 추가 현재 상태와 매칭하는 디폴트 상태들 중 하나를 식별하는 단계 및 상기 디폴트 상태들 중 하나에 대해 정의된 디폴트 상태 정보에 기초하여 추가 특정 출력 인스턴스를 생성하는 단계를 포함한다. 이들 버전중 일부에서, 상기 방법은 상기 추가 현재 상태와 매칭하는 디폴트 상태들 중 하나를 식별하는 것에 응답하여, 상기 커스텀 구성 디스크립션의 커스텀 상태들의 후속(further) 커스텀 상태로 전환하도록 상기 디폴트 상태들 중 하나에 대한 디폴트 전환 정보를 사용하는 단계와; 상기 디폴트 상태들 중 하나에 대해 정의된 디폴트 상태 정보에 기초하여 상기 추가 특정 출력 인스턴스를 생성한 후, 상기 추가 특정 출력 인스턴스에 응답하여, 추가 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공된 응답형 사용자 인터페이스 입력을 수신하는 단계와; 그리고 상기 후속 커스텀 상태로 전환되는 것에 기초하여, 상기 다수의 대화 턴의 특정 후속 대화 턴에서 상기 다수의 출력 인스턴스의 후속 출력 인스턴스를 생성하도록 상기 후속 커스텀 상태를 이용하는 단계를 더 포함한다.
일부 구현들에서, 상기 다수의 대화 턴의 특정 대화 턴에서 다수의 출력 인스턴스의 특정 출력 인스턴스를 생성하는 단계는, 특정 대화 턴에서 인터렉티브 대화의 현재 상태를 식별하는 단계와; 상기 인터렉티브 대화의 현재 상태가 커스텀 구성 디스크립션의 커스텀 상태들 중 하나인지 여부를 결정하는 단계와; 그리고 상기 인터렉티브 대화의 현재 상태가 커스텀 구성 디스크립션의 커스텀 상태들 중 하나라는 결정에 응답하여, 상기 커스텀 상태들 중 하나에 대해 정의된 커스텀 상태 정보에 기초하여 특정 출력 인스턴스를 생성하는 단계를 포함한다. 일 예로서, 상기 커스텀 상태들 중 하나에 대해 정의된 커스텀 상태 정보는 커스텀 오디오를 포함하고, 상기 특정 출력 인스턴스를 생성하는 단계는 커스텀 오디오가 상기 추가 클라이언트 디바이스의 하나 이상의 스피커를 통해 렌더링되게 하는 단계를 포함할 수 있다. 다른 예로서, 상기 커스텀 상태들 중 하나에 대해 정의된 커스텀 상태 정보는 상기 특정 출력 인스턴스를 생성하는데 사용하기 위한 외부 리소스를 추가적로 또는 대안적으로 포함할 수 있고, 상기 특정 출력 인스턴스를 생성하는 단계는 외부 리소스와 인터페이스하는 단계를 포함할 수 있다. 예를 들어, 외부 리소스와 인터페이스하는 단계는 외부 리소스와 통신하는 단계를 포함할 수 있다.
일부 구현들에서, 상기 커스텀 상태들의 특정 커스텀 상태에 대한 커스텀 전환 정보는 예상 응답 및 그 예상 응답이 수신되는 경우에 전환할 상기 커스텀 상태들의 추가 커스텀 상태를 포함한다. 이러한 구현들의 일부 버전들에서, 상기 특정 커스텀 상태에 대한 커스텀 전환 정보는 대체 예상 응답 및 그 대체 예상 응답이 수신되는 경우에 전환할 상기 커스텀 상태들의 대체 커스텀 상태를 더 포함한다. 이러한 구현들의 일부 추가 또는 대체 버전에서, 상기 커스텀 상태들의 특정 커스텀 상태에 대한 커스텀 전환 정보는 적어도 하나의 가능한 응답에 대한 정의가 결여되어 있고, 상기 다수의 대화 턴의 특정 대화 턴에서 다수의 출력 인스턴스의 특정 출력 인스턴스를 생성하는 단계는, 특정 커스텀 상태에 있는 동안, 상기 추가 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공된 사용자 인터페이스 입력을 수신하는 단계와; 상기 사용자 인터페이스 입력이 특정 커스텀 상태에 대한 커스텀 전환 정보를 따르지 않는지 결정하는 단계와; 그리고 상기 사용자 인터페이스 입력이 특정 커스텀 상태에 대한 커스텀 전환 정보를 따르지 않는다는 결정에 응답하여, 상기 사용자 인터페이스 입력을 따르는 디폴트 상태들 중 하나를 식별하는 단계; 및 상기 디폴트 상태들 중 하나에 기초하여 특정 출력 인스턴스를 생성하는 단계를 포함한다.
일부 구현들에서, 하나 이상의 프로세서에 의해 구현되는 방법이 제공되고, 인터렉티브 대화 애플리케이션의 표시 및 사용자가 생성한 커스텀 인터렉티브 대화 애플리케이션에 대한 그래픽 상태 애플리케이션으로부터 커스텀 상태들 및 커스텀 상태 전환들(transitions)의 상태 맵을 수신하는 단계를 포함한다. 상기 커스텀 상태 각각은 커스텀 상태들 중 대응하는 하나에 대한 커스텀 상태 정보를 정의하고, 상기 커스텀 상태 전환 각각은 커스텀 상태들 중 대응하는 하나로부터 커스텀 전환 정보를 정의한다. 이 방법은 커스텀 상태들 및 상기 커스텀 상태 전환들에 기초하여 커스텀 구성 디스크립션을 생성하는 단계를 더 포함한다. 방법은 인터렉티브 대화 애플리케이션의 표시에 기초하여 디폴트 구성 디스크립션을 식별하는 단계를 ㄷ더 포함한다. 상기 디폴트 구성 디스크립션은 디폴트 상태들, 디폴트 상태 정보 및 각 디폴트 상태에 대한 적어도 하나의 디폴트 상태 전환을 포함한다. 방법은 커스텀 구성 디스크립션 및 상기 디폴트 구성 디스크립션에 기초하여 병합된 구성 디스크립션을 생성하는 단계를 더 포함한다. 상기 병합된 구성 디스크립션을 생성하는 단계는 상기 커스텀 구성 디스크립션에 포함되고 상기 디폴트 구성 디스크립션에 상기 디폴트 상태들의 상대(counterpart) 특정 디폴트 상태를 포함하는 상기 커스텀 상태들의 특정 커스텀 상태를 식별하는 단계; 및 상기 커스텀 구성 디스크립션에 포함되는 상기 특정 커스텀 상태에 기초하여, 상기 병합된 구성 디스크립션에 상기 상대 특정 디폴트 상태를 포함시키지 않고 상기 병합된 구성 디스크립션에 상기 특정 커스텀 상태를 포함시키는 단계를 포함할 수 있다. 방법은 병합된 구성 디스크립션에 기초하여 커스텀 에이전트를 생성하는 단계를 더 포함하고, 상기 커스텀 에이전트는 인터렉티브 인간-컴퓨터 대화에 참여하는 자동화 어시스턴트와 인터페이스하도록 하나 이상의 컴퓨터의 시스템에 의해 실행 가능하다.
본 명세서에 개시된 기술의 이러한 구현 및 다른 구현은 다음 특징 중 하나 이상을 선택적으로 포함할 수 있다.
일부 구현들에서, 상기 병합된 구성 디스크립션을 생성하는 단계는 커스텀 구성 디스크립션에 포함되고 상기 디폴트 구성 디스크립션에 디폴트 상태 전환의 상대 특정 디폴트 상태 전환을 포함하는 상기 커스텀 상태 전환들의 특정 커스텀 상태 전환을 식별하는 단계와; 상기 커스텀 구성 디스크립션에 포함되는 특정 커스텀 상태 전환에 기초하여, 상기 병합된 구성 디스크립션에 상대 특정 디폴트 상태 전환을 포함시키지 않고 상기 병합된 구성 디스크립션에 특정 커스텀 상태 전환을 포함시키는 단계를 포함한다.
일부 구현들에서, 인터렉티브 인간-컴퓨터 대화에 참여하여 자동화 어시스턴트와 인터페이스할 때, 상기 커스텀 에이전트는 클라이언트 디바이스를 통해 자동화 어시스턴트에 제공된 사용자 인터페이스 입력에 기초하여 생성된 요청을 자동화 어시스턴트로부터 수신하고, 상기 상기 커스텀 에이전트는 응답형 컨텐츠를 생성하고 그 응답형 컨텐츠에 기초한 출력을 제공하기 위해 응답형 컨텐츠를 자동화 어시스턴트로 전송한다.
일부 구현들에서, 상기 디폴트 구성은 자동화 어시스턴트에 특정되고, 상기 커스텀 에이전트는 자동화 어시스턴트에 특화된다. 이러한 구현들의 일부 버전에서, 방법은 추가 자동화 어시스턴트에 특정된 추가 디폴트 구성 디스크립션을을 식별하는 단계를 더 포함한다. 상기 추가 디폴트 구성 디스크립션은 추가 디폴트 상태들, 및 추가 디폴트 상태 정보 및 그 추가 디폴트 상태 각각에 대한 적어도 하나의 추가 디폴트 상태 전환을 포함한다. 이들 버전에서, 방법은 커스텀 구성 디스크립션 및 상기 추가 디폴트 구성 디스크립션에 기초하여 추가 병합된 구성 디스크립션을 생성하는 단계를 더 포함한다. 상기 추가 커스텀 에이번트는 다이렉티브 인간-컴퓨터 대화에 참여하는 추가 자동화 어시스턴트와 인터페이스하도록 하나 이상의 컴퓨터의 추가 시스템에 의해 실행 가능하다. 상기 추가 병합된 구성 디스크립션을 생성하는 단계는, 상기 커스텀 구성 디스크립션에 포함되고 상기 추가 디폴트 구성 디스크립션에 추가 디폴트 상태들의 상대 추가 특정 디폴트 상태를 포함하는 상기 커스텀 상태들의 특정 추가 커스텀 상태를 식별하는 단계와; 상기 커스텀 구성 디스크립션에 포함되는 상기 특정 추가 커스텀 상태에 기초하여, 상기 추가 병합된 구성 디스크립션에 상기 상대 특정 추가 디폴트 상태를 포함시키지 않고 상기 추가 병합된 구성 디스크립션에 상기 추가 특정 커스텀 상태를 포함시키는 단계를 포함한다.
일부 구현들에서, 상기 병합된 구성 디스크립션을 생성하는 단계는 상기 디폴트 구성 디스크립션에서 상기 디폴트 상태들의 추가 디폴트 상태가 커스텀 구성 디스크립션에 포함된 커스텀 상태들의 임의의 상대(counterpart)를 포함하지 않는지 결정하는 단계와; 상기 추가 디폴트 상태가 커스텀 상태들의 임의의 상대를 포함하지 않는다는 결정에 기초하여, 상기 병합된 구성 디스크립션에 추가 디폴트 상태를 포함시키는 단계를 더 포함한다. 이러한 구현들 중 일부에서, 방법은 추가 디폴트 상태가 디폴트 구성 디스크립션에서 필수로 표시되는지 결정하는 단계를 더 포함하고, 상기 병합된 구성 디스크립션에 추가 디폴트 상태를 포함시키는 단계는 상기 추가 디폴트 상태가 필수로 표시된다는 결정에 더 기초한다.
또한, 일부 구현예는 하나 이상의 컴퓨팅 디바이스의 하나 이상의 프로세서를 포함하며, 하나 이상의 프로세서는 관련 메모리에 저장된 명령들을 실행하도록 동작 가능하고, 상기 명령들은 전술한 방법 중 임의의 방법의 수행을 유발하도록 구성된다. 일부 구현들은 전술한 방법 중 임의의 것을 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 컴퓨터 명령들을 저장하는 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 추가로 또는 대안적으로 포함한다.
본 명세서에서 더 상세하게 설명된 전술한 개념 및 추가 개념의 모든 조합은 본 명세서에 개시된 주제의 일부인 것으로 고려됨을 이해해야 한다. 예를 들어, 본 발명의 끝에 나타나는 청구된 주제의 모든 조합은 본 명세서에 개시된 주제의 일부인 것으로 고려된다.
도 1은 본 명세서에 개시된 구현들이 구현될 수 있는 예시적인 환경의 블록도이다.
도 2는 본 명세서에 개시된 구현들에 이용될 수 있는 그래픽 상태도의 예이다.
도 3은 도 2에 도시된 상태도에 대한 예시적인 커스텀 구성 디스크립션을 도시한다.
도 4는 예시적인 디폴트 구성 디스크립션을 도시한다.
도 5는 본 명세서에 개시된 구현들에 따른 예시적인 방법을 나타내는 흐름도이다.
도 6은 본 명세서에 개시된 구현들에 따른 사용자, 클라이언트 디바이스, 및 인터렉티브 대화 애플리케이션을 실행하는 클라이언트 디바이스와 관련된 자동화 어시스턴트와 사용자간의 예시적인 대화를 도시한다.
도 7은 컴퓨팅 디바이스의 예시적인 아키텍처를 도시한다.
일부 경우(instance)에서, 사용자는 커스텀 인터렉티브 대화 애플리케이션을 생성하는데 관심을 가질 수 있고, 사용자는 상태 매핑 및 커스텀 인터렉티브 대화 애플리케이션의 표시 형태로 컨텐츠를 자동화 어시스턴트로 제공할 수 있다. 컨텐츠는, 예를 들어, 사용자가 하나 이상의 커스텀 상태를 정의하고, 맵핑 툴을 이용하여 상기 정의된 상태들 사이에서 전환하는 전환 조건을 표시할 수 있게 하는 시각적 개발 툴로부터의 입력일 수 있다. 일부 구현들에서, 상태들은 커스텀 인터렉티브 대화 애플리케이션(본 명세서에서 간단히 "커스텀 애플리케이션"으로도 지칭됨)의 실행시 자동화 어시스턴트에 의해 후속 사용자에게 제공될 수 있는 프롬프트, 진술(statements), 사운드 및/또는 커스텀 오디오를 포함할 수 있다. 또한, 커스텀 인터렉티브 대화 애플리케이션의 표시에 기초하여, 그 커스텀 애플리케이션을 실행하는 중에 후속 사용자에 의해 발생할 수 있는 하나 이상의 디폴트 상태를 포함하는 디폴트 구성 디스크립션(description)이 식별될 수 있다. 예를 들어, 상태 맵핑을 작성할 때, 커스텀 애플리케이션의 후속 사용자가 예상치 못한 응답을 제공하는 경우 사용자는 인스턴스들을 처리하기 위해 하나 이상의 상태 및/또는 전환을 정의하지 않을 수 있다. 그러나, 디폴트 구성 디스크립션은 그러한 인스턴스들을 처리하기 위해 생성된 모든 상태에 대한 하나 이상의 상태 및/또는 디폴트 파라미터를 포함할 수 있다. 사용자가 커스텀화한 상태들만 정의하도록 요구하고 선택적으로 사용자가 상태들의 기본 동작을 커스텀화할 수 있게 함으로써, 결과적인 커스텀 인터렉티브 대화 애플리케이션은 보다 강건하고 오류가 덜 발생한다. 더욱이, 본 명세서에 기술된 바와 같이, 디폴트 구성 디스크립션은 복수의 개별(disparate) 커스텀 애플리케이션 각각에 이용될 수 있고, 따라서 별도의 인스턴스가 각각의 개별 커스텀 애플리케이션에 대해 완전히 별도로 저장될 필요없이 동일한 구성 디스크립션이 이용될 수 있게 한다. 이러한 방식으로, 개별 커스텀 애플리케이션 각각에 대해 별도로 저장될 필요가 있는 별도의 인스턴스 대신에, 복수의 개별 커스텀 애플리케이션이 구성 디스크립션을 공유할 수 있기 때문에 저장 자원이 보존될 수 있다. 예를 들어, 게임, 인터렉티브 음성 응답 및/또는 고객 지원 카테고리와 같은, 본 명세서에 개시된 구현을 이용하여 다양한 카테고리에 걸친 다양한 유형의 커스텀 애플리케이션이 생성될 수 있다.
일부 구현들에서, 단일 구성 디스크립션은 디폴트 구성 디스크립션 및 하나 이상의 커스텀 구성 디스크립션에 기초하여 생성될 수 있다. 따라서, 본 명세서에서는 별도의 디스트립션으로 설명되었지만, 커스텀 상태, 디폴트 상태, 커스텀 전환(transitions), 디폴트 전환, 커스텀 상태 파라미터, 디폴트 상태 파라미터 및/또는 커스텀 대화 애플리테이션에 대한 다른 상태의 속성을 포함하는 병합된 대화 애플리케이션 디스트립션이 생성될 수 있다. 예를 들어, 상태는 디폴트 디스트립션에만 정의된 상태의 하나 이상의 상태 파라미터를 사용하여 커스텀 구성 디스크립션과 디폴트 구성 디스크립션 모두에 정의될 수 있다. 병합된 구성 디스크립션은 디폴트 디스크립션에만 정의된 파라미터들을 추가로 포함하는 커스텀 구성 디스크립션의 정의된 상태를 포함할 수 있다.
이제 도 1을 참조하면, 본 명세서에 개시된 기술들이 구현될 수 있는 예시적인 환경이 도시된다. 예시적인 환경은 클라이언트 디바이스(106), 자동화 어시스턴트(110), 커스텀 애플리케이션 엔진(120) 및 상태 매핑 애플리케이션(170)을 포함한다. 클라이언트 디바이스(106)는 예를 들어 독립형 음성-작동 스피커 디바이스, 데스크탑 컴퓨팅 디바이스, 랩탑 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 휴대 전화 컴퓨팅 디바이스, 사용자 차량의 컴퓨팅 디바이스, 및/또는 컴퓨팅 디바이스(예를 들어, 컴퓨팅 디바이스를 갖는 사용자의 시계, 컴퓨팅 디바이스를 갖는 사용자의 안경, 가상 또는 증강 현실 컴퓨팅 디바이스)를 포함하는 사용자의 웨어러블 장치일 부 있다. 추가 및/또는 대체 클라이언트 디바이스가 제공될 수 있다.
자동화 어시스턴트(110)가 클라이언트 디바이스(106)와 별도로 도 1에 도시되어 있지만, 일부 구현에서 자동화 어시스턴트(110)의 모든 또는 양태는 클라이언트 디바이스(106)에 의해 구현될 수 있다. 예를 들어, 일부 구현들에서, 입력 처리 엔진(112)은 클라이언트 디바이스(106)에 의해 구현될 수 있다. 자동화 어시스턴트(110)의 하나 이상의(예를 들어, 모든) 양태가 클라이언트 디바이스(106)로부터 떨어진 하나 이상의 컴퓨팅 디바이스에 의해 구현되는 구현에서, 클라이언트 디바이스(106) 및 자동화 어시스턴트(110)의 이러한 양태들은 광역 네트워크(WAN)(예를 들어, 인터넷)와 같은 하나 이상의 네트워크를 통해 통신한다. 또한, 상태 매핑 애플리케이션(170)은 클라이언트 디바이스(106) 및 자동화 어시스턴트(110)와 별도로 도시되어 있지만, 일부 구현들에서, 상태 매핑 애플리케이션(170)은 클라이언트 디바이스(106) 및/또는 자동화 어시스턴트(110)상에서 실행되는 애플리케이션일 수 있다. 유사하게, 커스텀 애플리케이션 엔진(120) 및 그 구성 요소는 자동화 어시스턴트(120)의 일부로서 도시되어 있지만, 이것은 필수가 아니며, 이들 컴포넌트 중 하나 이상은 별도로 구현될 수 있고 및/또는 커스텀 애플리케이션 엔진(120)의 서브 컴포넌트일 수 있다.
하나의 클라이언트 디바이스(106)만이 자동화 어시스턴트(110)와 조합하여 도시되어 있지만, 많은 구현에서 자동화 어시스턴트(110)는 원격일 수 있고 다수의 사용자의 복수의 클라이언트 디바이스 각각과 인터페이스할 수 있다. 예를 들어, 자동화 어시스턴트(110)는 상이한 세션을 통해 다수의 디바이스 각각과의 통신을 관리할 수 있고, 다수의 세션을 병렬로 관리할 수 있다. 예를 들어, 일부 구현에서 자동화 어시스턴트(110)는 예를 들어, 다수의 사용자로부터의 대량 요청을 처리하기에 적합한 소프트웨어를 실행하는 서버 팜 또는 고성능 컴퓨터 클러스터를 사용하는 클라우드 인프라를 사용하는 클라우드-기반 서비스로서 구현될 수 있다. 그러나, 간략화를 위해, 단일 클라이언트 디바이스(106)와 관련하여 본 명세서에서 많은 예가 설명된다.
자동화 어시스턴트(110)는 입력 처리 엔진(112), 컨텐츠 입력 엔진(130), 출력 엔진(135) 및 호출 엔진(160)을 포함한다. 일부 구현들에서, 자동화 어시스턴트(110)의 하나 이상의 엔진은 자동화 어시스턴트(110)와 별도의 컴포넌트에서 생략, 결합 및/또는 구현될 수 있다. 또한, 자동화 어시스턴트(110)는 간략화를 위해 본 명세서에 도시되지 않은 추가 엔진을 포함할 수 있다.
자동화 어시스턴트(110)는 클라이언트 디바이스(106)로부터 사용자 입력의 인스턴스를 수신한다. 예를 들어, 자동화 어시스턴트(110)는 스트리밍 오디오 기록 형태로 자유 형식의 자연어 음성 입력을 수신할 수 있다. 본 명세서에 사용된 "자유 형식의 자연어 입력"은 열거된 옵션 리스트에 제한되지 않는 사용자 입력을 지칭한다. 스트리밍 오디오 기록은 클라이언트 디바이스(106)의 사용자의 음성 입력을 캡처하는 클라이언트 디바이스(106)의 마이크로폰(들)으로부터 수신된 신호에 응답하여 클라이언트 디바이스(106)에 의해 생성될 수 있다. 다른 예로서, 자동화 어시스턴트(110)는 자유 형식의 자연어 유형 입력을 수신할 수 있다. 일부 구현들에서, 사용자 입력은 클라이언트 디바이스(106)의 사용자에 의한 자동화 어시스턴트(110)의 명시적인 호출에 응답하여 클라이언트 디바이스(106)에 의해 생성되며 및/또는 자동화 어시스턴트(110)로 제공될 수 있다. 예를 들어, 호출은 클라이언트 디바이스(106)에 의한 사용자의 특정 음성 입력(예를 들어, "헤이 어시스턴트"와 같은 자동화 어시스턴트(110) 핫 워드/문구), 하드웨어 버튼 및/또는 가상 버튼과의 사용자 상호 작용(예를 들어, 하드웨어 버튼의 탭, 클라이언트 디바이스(106)에 의해 디스플레이된 그래픽 인터페이스 요소의 선택) 및/또는 다른 특정 사용자 인터페이스 입력의 검출일 수 있다.
일부 구현들에서, 자동화 어시스턴트(110)는 사용자로부터의 입력으로 특정 애플리케이션의 표시를 수신할 수 있다. 예를 들어, 자동화 어시스턴트(110)는 인터렉티브 대화 애플리케이션의 표시 및 상태 정보를 수신할 수 있으며, 상태 정보가 인터렉티브 대화 애플리케이션의 커스텀 버전을 생성하기 위해 이용됨을 표시한다. 인터렉티브 대화 애플리케이션의 표시는 복수의 애플리케이션 클래스 중 상태 및 전환 정보가 생성에 이용되는 것에 대한 디스트립션을 포함할 수 있다. 일부 구현들에서, 입력 처리 엔진(112)은 제공된 오디오가 동적 인터렉티브 대화 애플리케이션의 표시를 포함하고, 후속(further) 처리를 위해 호출 엔진(160)에 후속 오디오를 제공함을 식별할 수 있다. 예를 들어, 입력 처리 엔진(112)은 "어시스턴트 사실 서버를 구동해"라는 입력을 수신할 수 있고, 입력 처리 엔진(112)은 "사실 서버" 애플리케이션이 호출되고 있음을 식별할 수 있다. 따라서, 입력 처리 엔진(112)은 수신된 오디오를 파싱하고, 그 파싱된 컨텐츠를 호출 엔진(160)에 제공하여 어느 애플리케이션이 호출되고 있는지를 결정할 수 있다. 일부 구현들에서, 호출 엔진(160)은 대응하는 커스텀 구성 디스크립션을 식별하고, 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션을 이용하여 애플리케이션을 실행함으로써 애플리케이션을 호출할 수 있다. 일부 구현들에서, 호출 엔진(160)은 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션에 기초하여 이전에 생성된 에이전트를 식별할 수 있다.
자동화 어시스턴트(110)는 클라이언트 디바이스(106)로부터 사용자 입력의 인스턴스를 수신하는 것에 응답하여 출력의 인스턴스를 제공한다. 출력의 인스턴스는 예를 들어 디바이스(106)에 의해 청각적으로 제시(예를 들어, 클라이언트 디바이스(106)의 스피커를 통해 출력)될 오디오, 디바이스(106)에 의해 그래픽적으로 제시(클라이언트 디바이스(106)의 디스플레이를 통해 렌더링)될 텍스트 및/또는 그래픽 컨텐츠일 수 있다. 본 명세서에 기술된 바와 같이, 출력의 일부 인스턴스는 상태 맵핑 애플리케이션(170) 또는 커스텀 구성 디스크립션을 통해 사용자에 의해 정의된 하나 이상의 커스텀 상태에 기초할 수 있다.
자동화 어시스턴트(110)의 입력 처리 엔진(112)은 클라이언트 디바이스(106)를 통해 수신된 사용자의 자연어 입력을 처리하고, 커스텀 애플리케이션 엔진(120)과 같은 자동화 어시스턴트(110)의 하나 이상의 다른 컴포넌트에 의해 사용하기 위해 주석이 달린(annotated) 출력을 생성한다. 예를 들어, 입력 처리 엔진(112)은 클라이언트 디바이스(106)의 하나 이상의 사용자 인터페이스 입력 디바이스를 통해 사용자에 의해 생성된 자연어 자유 형식 입력을 처리할 수 있다. 생성된 주석이 달린 출력은 자연어 입력의 하나 이상의 주석 및 선택적으로 자연어 입력의 용어 중 하나 이상(예를 들어, 모두)을 포함할 수 있다. 다른 예로서, 입력 처리 엔진(112)은 (예를 들어, 디지털 오디오 데이터의 형태로) 음성 입력의 인스턴스를 수신하고, 그 음성 입력을 하나 이상의 텍스트 단어 또는 문구을 포함하는 텍스트로 변환하는 음성-텍스트 변환 모듈(또는 "음성-텍스트 변환" 또는 "STT" 모듈이라고도 함)을 추가적으로 또는 대안적으로 포함할 수 있다. 일부 구현들에서, 음성-텍스트 변환 모듈은 스트리밍 음성-텍스트 변환 엔진이다. 음성-텍스트 변환 모듈은 하나 이상의 저장된 음성-텍스트 변환 모듈(또한 언어 모델이라고도 함)에 의존할 수 있고, 각각은 언어의 단어 시퀀스와 함께 언어의 오디오 신호와 음성 단위(phonetic units ) 사이의 관계를 모델링할 수 있다.
일부 구현들에서, 입력 처리 엔진(112)은 자연어 입력에서 다양한 유형의 문법 정보를 식별하고 주석을 달도록 구성된다. 예를 들어, 입력 처리 엔진(112)은 문법 역할을 갖는 용어에 주석을 달도록 구성된 품사 태거를 포함할 수 있다. 예를 들어, 품사 태거는 "명사", "동사", "형용사", "대명사"등과 같은 품사로 각 용어에 태그를 지정할 수 있다. 또한, 예를 들어, 일부 구현들에서, 입력 처리 엔진(112)은 자연어 입력에서 용어들 사이의 시맨틱(문구적) 관계를 결정하도록 구성된 의존성 파서를 추가로 및/또는 대안적으로 포함할 수 있다. 예를 들어, 의존성 파서는 어떤 용어가 문장의 다른 용어, 주제 및 동사 등을 수정하는지(예를 들어, 문구 분석 트리)를 결정할 수 있으며, 그러한 의존성을 주석으로 만들 수 있다.
컨텐츠 입력 엔진(130)은 커스텀 인터렉티브 대화 애플리케이션을 생성하기 위해 이용되도록 상태 맵핑 애플리케이션(170)을 조작하는 사용자에 의해 정의된 상태 정보 및 전환 정보를 포함하여, 사용자에 의해 정의된 커스텀 상태 정보를 처리한다. 예를 들어, 도 2를 참조하면, 상태 맵핑 애플리케이션(170)을 사용하여 사용자에 의해 생성될 수 있는 상태 맵핑의 예가 제공된다. 상태 맵핑(200)은 웰컴 메시지(206)를 정의하는 "웰컴" 상태(205) 및 애플리케이션을 호출한 후속 사용자에게 렌더링(예를 들어, 청각적으로 및/또는 그래픽적으로)하기 위해 제공될 수 있는 사운드(207)를 포함한다. "사실 제공(Serve Fact)" 상태(210)는 호출 사용자에게 렌더링하기 위해 제공될 수 있는 일련의 사실(211)을 포함한다. "웰컴" 상태(205)와 "사실 제공" 상태(210) 사이의 전환은 조건부가 아니다. 대신에, "웰컴" 상태는 "통과(pass through)" 상태이며, 이에 따라 "사실 제공" 상태(210)는 사용자로부터의 입력에 관계없이 항상 "웰컴" 상태(205)를 따른다. 유사하게, "다른 것 요청(Ask For Another)" 상태(215)는 항상 "사실 제공" 상태(205)를 따른다. 그러나, "다른 것 요청" 상태(215)는 "예/아니오" 유형 상태이다. 본 명세서에 기술된 바와 같이, 대화가 이 상태로 턴되면, 사용자에게 대응하는 클라이언트 디바이스에서 렌더링된 프롬프트를 통해 입력하라고 촉구되며, 애플리케이션은 입력으로 "예" 또는 "아니오"를 예상한다. 사용자로부터의 입력에 기초하여, 애플리케이션은 답변이 "예"이면 "사실 제공" 상태(205)로 전환하고, 또는 답변이 "아니오"이면 "굿바이" 상태(220)로 전환한다. 일부 구현들에서, 대화 모듈(126) 및/또는 입력 처리 엔진(112)은 "예" 또는 "아니오"에 따른 다른 입력을 식별하여 그에 따라 전환할 수 있다. 예를 들어, 사용자는 응답으로서 "물론(sure)"을 제공할 수 있고, 대화 모듈(126)은 "물론"이 "예"와 동의어인 것으로 판단할 수 있고, 결과적으로 응답이 "예"와 동의어이므로 "다른 것 요청" 상태(215)에서 "사실 제공" 상태로 전환할 수 있다. 일부 구현들에서, 컨텐츠 입력 엔진(130)은 대신에 커스텀 애플리케이션 엔진(120)의 컴포넌트일 수 있다. 예를 들어, 컨텐츠 입력 엔진(130)은 자동화 어시스턴트(110)로 제공될 수 있는 다른 컨텐츠가 아닌, 커스텀 대화 애플리케이션을 생성하기 위해 제공되는 컨텐츠만을 처리할 수 있다.
출력 엔진(135)은 출력의 인스턴스를 클라이언트 디바이스(106)에 제공한다. 일부 구현들에서, 출력의 인스턴스는 사용자 조작의 커스텀 어플리케이션 엔진(120)에 의해 생성된 커스텀 인터랙티브 대화 애플리케이션에 기초할 수 있다. 일부 구현들에서, 출력 엔진(135)은 응답형 컨텐츠의 텍스트 성분을 오디오 포맷으로 변환하는 텍스트-음성 변환("TTS") 엔진을 포함할 수 있고, 출력 엔진(135)에 의해 제공되는 출력은 오디오 포맷(예를 들어, 스트리밍 오디오)이다. 일부 구현들에서, 응답형 컨텐츠는 이미 오디오 포맷일 수 있다. 일부 구현들에서, 출력 엔진(135)은 텍스트 응답 컨텐츠를 추가로 또는 대안적으로 출력으로(선택적으로 디바이스(106)에 의해 오디오로 변환하기 위해) 제공하고 및/또는 다른 그래픽 컨텐츠를 클라이언트 디바이스(106)에 의한 그래픽 디스플레이를 위한 출력으로서 제공한다.
커스텀 애플리케이션 엔진(120)은 구성 빌더 모듈(124), 대화 모듈(126) 및 외부 소스 모듈(128)을 포함한다. 일부 구현들에서, 커스텀 애플리케이션 엔진(120)의 모듈(들)은 그 커스텀 애플리케이션 엔진(120)과는 별도인 컴포넌트에서 생략, 결합 및/또는 구현될 수 있다. 또한, 커스텀 애플리케이션 엔진(120)은 간략화를 위해 본 명세서에 도시되지 않은 추가 모듈을 포함할 수 있다.
대화 모듈(126)은 클라이언트 디바이스(106)를 통해 사용자와 상호 작용할 때 입력 처리 엔진(112)으로부터의 하나 이상의 문법 모델, 규칙 및/또는 주석을 이용할 수 있다. 대화 모듈(126)은 실행중인 인터렉티브 대화 애플리케이션과 관련된 추가 사용자 입력을 요청하기 위한 프롬프트(들)를 생성할 수 있다. 대화 모듈(126)에 의해 생성된 임의의 프롬프트(들)는 (예를 들어, 클라이언트 디바이스(106)에서의 렌더링을 통해) 출력 엔진(135)에 의해 사용자에게 제시되기 위해 그리고 추가 응답형 사용자 입력이 수신되도록 제공될 수 있다. 본 명세서에서 더 상세히 기술된 바와 같이, 대화 모듈(126)은 커스텀 인터렉티브 대화 애플리케이션을 생성하는 사용자(이하 개발 사용자라고도 함)에게 컨텐츠를 제공할 때 하나 이상의 커스텀 구성 디스크립션을 이용할 수 있다.
구성 빌더(124)는 개발 사용자로부터(상태 맵핑 애플리케이션(170) 또는 하나 이상의 다른 컴포넌트로부터) 입력을 수신하여 상태 맵 및 전환들에 기초하여 커스텀 구성 디스크립션을 생성한다. 커스텀 구성 디스크립션은 인터렉티브 대화 애플리케이션이 한 상태에서 다른 상태로 전환되는 조건과 개발 사용자에 의해 명시적으로 정의된 상태를 포함하는 문서이다. 예를 들어, 도 3을 참조하면, 예시적인 커스텀 구성 디스크립션이 제공된다. 이 디스크립션은 "웰컴" 상태(305)를 포함하는데, 이는 애플리케이션(이하, "호출 사용자")를 호출하는 사용자에게 제공될 웰컴 문구를 포함한다. 또한, "웰컴" 상태(305)는 그 상태에서 전환하기 위한 조건을 포함한다. 이 경우, 모든 전환은 "사실 제공" 상태(310)로 되며 호출 사용자로부터 입력을 요구하지 않는다. 다음으로, 상태 매핑 애플리케이션(170)을 통해 개발 사용자에 의해 제공된 사실들을 포함하는 "사실 제공" 상태(310)가 정의된다. 또한, "사실 제공" 상태(310) 디스크립션은 사용자로부터의 입력 없이 "다른 것 요청" 상태(315)로의 전환을 포함한다. "다른 것 요청" 상태(315)는 호출 사용자로부터의 입력에 기초하여 상태가 전환되는 조건뿐만 아니라 호출 사용자에게 제공하기 위한 프롬프트를 포함한다. "다른 것 요청" 상태(315) 디스크립션은 호출 사용자가 "예"로 응답하면 "사실 제공" 상태(310)로의 전환을 나타내고, 호출 사용자가 "아니오"로 응답하면 "굿바이" 상태(320)로의 전환을 나타낸다. "굿바이" 상태(320)는 ("type:STATE_TYPE.FINAL"로 표시된) 최종 상태이기 때문에 전환이 없으며 애플리케이션의 실행이 완료되었음을 나타낸다.
도 3에 기술된 상태에 부가하여, 임의의 수의 추가 상태 및/또는 유형의 상태가 커스텀 구성 디스크립션에 포함될 수 있다. 예를 들어, 하나 이상의 상태는 사용자의 음성 커맨드 또는 다른 사용자 입력을 통해 입력으로서 숫자를 수신할 수 있다. 또한, 예를 들어, 상태는 정확한 예상 입력을 지정하지 않고 사용자로부터 "임의의" 입력을 수신할 수 있다. 예로서, 커스텀 대화 애플리케이션은 사용자에게 특정 유형의 입력을 요구하지 않는 개방형 질문을 제공할 수 있고, 커스텀 상태는 사용자로부터 수신된 "임의의" 입력이 새로운 상태로 전환 가능함을 나타낼 수 있다.
일부 구현들에서, 구성 빌더(124)에 의해 생성된 커스텀 구성 디스크립션은 하나 이상의 개별 자동화 어시스턴트 플랫폼(예를 들어, 별도의 당사자에 의해 각각 제어되는 개별 자동화 어시스턴트 플랫폼) 각각에 대한 커스텀 애플리케이션 및/또는 에이전트를 생성하는데 이용될 수 있다. 예를 들어, 단일 커스텀 구성 디스크립션 세트는 구성 빌더(124)에 의해 생성될 수 있고, 다수의 개별 자동화 어시스턴트 각각에 대한 대응하는 커스텀 애플리케이션 및/또는 에이전트를 생성하는데 이용될 수 있다. 예를 들어, 제 1 자동화 어시스턴트 플랫폼에 특정된 제 1 디폴트 구성은 제 1 자동화 어시스턴트 플랫폼에 대한 대응하는 커스텀 애플리케이션 및/또는 에이전트를 생성하는데 이용될 수 있다. 또한, 제 2 자동화 어시스턴트 플랫폼에 특정된(그러나 제 1 디폴트 구성과 하나 이상의 겹치는 상태 및/또는 상태 전환을 가질 수 있는) 제 2 디폴트 구성은 제 2 자동화 어시스턴트 플랫폼에 대한 대응하는 커스텀 애플리케이션 및/또는 에이전트를 생성하는데 이용될 수 있다. 이들 및 다른 방식으로, 개발 사용자에 의해 제공되고 커스텀 구성 디스크립션을 생성하는데 이용되는 사용자 인터페이스 입력은, 사용자가 다수의 플랫폼 각각에 대해 다수의 개별 사용자 인터페이스 입력을 제공할 필요 없이 다수의 플랫폼에 대한 다수의 에이전트 및/또는 애플리케이션을 생성하는데 이용될 수 있다.
일부 구현들에서, 하나 이상의 상태 이름 및/또는 전환 이름이 사전 정의될 수 있다. 예를 들어, 일부 구현들에서, 모든 시작 상태는 "웰컴"으로 명명되고 및/또는 모든 종료 상태는 "굿바이"로 명명될 수 있다. 또한, 일부 구현들에서, 하나 이상의 카테고리의 상태 및/또는 전환이 사전 정의될 수 있다. 예를 들어, "다른 것 요청" 상태(315)는 "사용자 입력" 상태로서의 상태의 정의를 포함하며, 이는 애플리케이션이 커스텀 애플리케이션 엔진(120)을 통해 실행될 때, 다음 대화 턴을 위해 어떤 상태로 전환할 것인지 결정하기 위해 호출 사용자로부터의 입력을 대기하도록 대화 모듈(126)에 지시할 수 있다. "다중 선택(Multiple Choice)" 상태 유형과 같은 다른 유형의 상태가 정의될 수 있으며, 여기서 호출 사용자에게 제공되는 출력은 호출 사용자를 위한 선택 리스트를 포함할 수 있다.
일부 구현들에서, 특정(given) 커스텀 인터렉티브 대화 애플리케이션에 대한 상태 매핑은 그 특정 커스텀 인터렉티브 대화 애플리케이션이 속하는 특정 클래스의 인터랙티브 대화 애플리케이션의 표시를 동반할 수 있다. 예를 들어, 인터렉티브 대화 애플리케이션은 "퀴즈" 애플리케이션, "사실 제공(fact serving)" 애플리케이션 및/또는 "대화" 애플리케이션을 포함할 수 있다. 각 애플리케이션은 해당 애플리케이션 클래스에 맞춰진 하나 이상의 상태 및/또는 전환을 가질 수 있다. 예를 들어, "퀴즈" 애플리케이션은 사용자에게 질문을 제공한 다음 사용자로부터 입력을 기다리는 "질문 제공(Serve Question)" 상태를 포함할 수 있다. "사실 제공" 애플리케이션은 그 사실 제공을 중지할 시점을 표시하기 위해 사용자로부터 "예" 또는 "아니오"만을 요구할 수 있다. 또한, 일부 구현들에서, 하나 이상의 상태는 모든 클래스의 인터렉티브 대화 애플리케이션에 공통일 수 있다. 일부 구현들에서, 커스텀 인터렉티브 대화 애플리케이션에 대한 커스텀 구성 디스크립션은 클래스 식별을을 예를 들어 파일의 시작 부근(예를 들어, 헤더로서)에 포함할 수 있다.
일부 구현들에서, 하나 이상의 디폴트 상태는 디폴트 구성 디스크립션에서 정의될 수 있다. 디폴트 구성 디스크립션은 상태 맵핑 애플리케이션(170)을 통해 사용자에 의해 명시적으로 정의될 필요가 없는 하나 이상의 상태 및 전환을 포함할 수 있다. 일부 구현들에서, 디폴트 구성 디스크립션의 상태 및 전환은 커스텀 인터렉티브 대화 애플리케이션을 생성할 때 사용자에 의한 (의도적으로 또는 의도하지 않은) 갭을 채우는 역할을 할 수 있다.
예를 들어, 도 4를 참조하면, 예시적인 디폴트 구성 디스크립션이 제공된다. 디폴트 구성은 애플리케이션을 종료하는 디폴트 동작을 정의하는 "굿바이" 상태(400)를 포함한다. 또한, 디폴트 구성 디스크립션은 "오류시 종료(Exit on Error)" 상태(405)를 포함하는데, 이 상태는 사용자가 그 애플리케이션의 실행 동안 3번 일치하지 않는 입력을 제공하는 경우 애플리케이션을 종료하는데 이용될 수 있다. 또한, "일치하지 않음(No Match) 디폴트 상태 파라미터(410)는 사용자가 부적합한(nonconforming) 입력(즉, 입력 처리 엔진(112)이 주석을 달 수 없고 및/또는 커스텀 구성 디스크립션에 정의된 예상 응답이 아닌 입력)을 제공할 때 모든 상태의 디폴트 동작으로서 포함된다. 또한, "일치하지 않음" 디폴트 상태 파라미터(410)는 사용자에게 입력을 제공하도록 프롬프트될 때 디폴트 동작을 제공할 수 있고, 그렇지 않을 수도 있다. 디폴트 상태 파라미터는 예를 들어 모든 상태의 파라미터인 루핑(looping) 전환(즉, 머신을 동일한 상태로 되돌리는 전환)일 수 있다. 따라서, 사용자가 임의의 파라미터에 대한 동작을 정의했는지 여부에 관계없이, 모든 사용자 생성 상태는 디폴트 구성 디스크립션에 정의된 다양한 파라미터(예를 들어, 사용자의 예기치 않은 입력, 사용자의 입력 없음 등)를 처리할 수 있을 것이다. 디폴트 상태와 마찬가지로, 디폴트 상태 파라미터는 커스텀 구성 디스크립션을 생성할 때 및/또는 상태 맵핑 애플리케이션을 통해 개발 사용자에 의해 선택적으로 정의될 수 있다. 디폴트 파라미터는 상태가 커스텀 상태인지 디폴트 상태인지에 관계없이 모든 상태에 적용될 수 있다.
하나 이상의 디폴트 구성 디스크립션은 디폴트 구성 데이터베이스(156)에 저장될 수 있다. 추가적으로 또는 대안적으로, 하나 이상의 디폴트 구성 디스크립션이 디폴트 템플릿으로서 이용될 수 있고, 하나 이상의 추가 디폴트 구성 디스크립션이 디폴트 템플릿에 기초하여 생성될 수 있다. 예를 들어, 디폴트 구성 디스크립션에는 모든 "일치하지 않음" 인스턴스에 대한 "동작(behavior) A"가 포함될 수 있다. 개발 사용자는 대신 "일치하지 않음" 인스턴스에 대한 디폴트로서 "동작 B"를 인용하도록 디폴트 구성 디스크립션을 편집하고, 새로운 디폴트 구성 디스크립션을 "디폴트 디스크립션 B"로 저장할 수 있다. 따라서, "디폴트 디스크립션 B"를 사용하는 임의의 후속 인터렉티브 대화 애플리케이션은 "비 매칭" 인스턴스에 대한 디폴트 동작으로서, 수정된 "동작 B"를 갖게 될 것이다.
일부 구현들에서, 구성 빌더(124)는 커스텀 인터렉티브 대화 애플리케이션을 위해 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션을 단일의 실행 가능 구성 디스크립션으로 병합할 수 있다. 디스크립션들을 병합할 때, 구성 빌더(124)는 디폴트 구성 디스크립션보다 커스텀 구성 디스크립션에 정의된 임의의 상태, 전환 및/또는 다른 동작에 우선권을 부여할 것이다. 그렇게 함으로써, 구성 빌더(124)는 사용자에 의해 정의된 임의의 커스텀 동작이 상기 실행된 구성 디스크립션에 포함되고 디폴트 상태, 전환 및/또는 행동에 의해 오버라이트되지 않도록 보장한다. 예를 들어, 도 3의 커스텀 구성 디스크립션을 참조하면, "굿바이" 상태(320)는 개발 사용자에 의해 정의되고, 도 4의 디폴트 구성 디스크립션("굿바이" 상태(400))에도 정의된다. 따라서, "굿바이" 상태(320)의 정의를 통해, 개발 사용자는 디폴트 동작과 다른 "굿바이" 상태에 대한 커스텀 커스텀 동작을 포함하도록 선택했다. 구성 빌더(124)는 구성 디스크립션들을 커스텀 구성 디스크립션으로부터 "굿바이" 상태(320)의 정의만을 포함하는(그리고 디폴트 구성 디스크립션 "굿바이" 상태(400)에 기초하여 임의의 정의를 제외하는) 단일의 실행 구성 디스크립션으로 병합할 수 있다.
일부 구현들에서, 구성 빌더(124)는 병합된 구성 디스크립션에 기초하여 에이전트를 생성할 수 있는 하나 이상의 컴포넌트에 병합된 구성 디스크립션을 제공한다. 예를 들어, 에이전트 생성기는 병합된 구성 디스크립션에 기술된 커스텀 동작을 수행하는 에이전트를 생성하기 위해 하나 이상의 라이브러리를 사용할 수 있으며, 에이전트는 나중에 하나 이상의 추가 호출 사용자에 의해 호출될 수 있다. 따라서, 구성 빌더(124)는 강력한 인터렉티브 대화 애플리케이션을 완전히 개발하기 위해 필요할 기본 라이브러리들에 대한 상세한 지식없이도 개발 사용자가 에이전트의 커스텀 동작을 생성할 수 있게 하는 툴로서 활용될 수 있다.
일부 구현들에서, 구성 빌더(124)는 이전에 생성된 다수의 커스텀 구성 디스크립션에 기초하여 커스텀 구성 디스크립션을 생성할 수 있다. 예를 들어, 구성 빌더(124)는 퀴즈(Trivia) 게임에 대한 상태 및 전환을 포함하는 "퀴즈" 커스텀 구성 디스크립션을 생성하기 위해 이전에 이용되었을 수 있다. 또한, 구성 빌더(124)는 "재미있는 사실(Fun Facts)" 대화 애플리케이션에 대한 제 2 커스텀 구성 디스크립션을 생성하기 위해 이전에 이용되었을 수 있다. 두 구성 디스크립션의 상태 맵핑 및 전환에 기초하여, 구성 빌더(124)는 "퀴즈" 애플리케이션 및 "재미있는 사실" 애플리케이션 모두의 커스텀 동작을 포함하는 "퀴즈/재미있는 사실" 대화 애플리케이션에 대한 새로운 커스텀 구성 디스크립션을 생성하는데 이용될 수 있다. 일부 인스턴스에서, 개발 사용자는 커스텀 구성 디스크립션을 구성 빌더(124)로 제공할 수 있다. 일부 인스턴스에서, 커스텀 구성 디스크립션 중 하나 또는 둘 모두는 하나 이상의 다른 컴포넌트 의해 식별될 수 있다. 예를 들어, 사용자는 "퀴즈/재미있는 사실" 애플리케이션에 관심이 있어 "재미있는 사실" 구성 디스크립션을 제공할 수 있고, 구성 빌더(124)는 제공된 "재미있는 사실" 구성 디스크립션과 병합하기 위해 "퀴즈" 커스텀 구성 디스크립션을 식별할 수 있다. 일부 구현들에서, 새로운 구성 디스크립션을 생성하기 위해 둘 이상의 구성 디스크립션이 병합될 수 있다.
다른 예로서, 하나 이상의 개발 사용자는 자동화 어시스턴트를 통해 사용자로부터 결제(payment) 정보의 수신을 처리하는 "결제" 대화 애플리케이션에 대한 커스텀 구성 디스크립션을 생성하기 위해 구성 빌더(124)를 이전에 이용했을 수 있다. 또한, 하나 이상의 개발 사용자는 제품 주문 정보의 수신을 처리하는 "주문" 대화 애플리케이션에 대한 커스텀 구성 디스크립션을 생성하기 위해 구성 빌더(124)를 미리 이용했을 수 있다. 특정 개발 사용자는 이전에 생성된 2 개의 구성 디스크립션을 사용자가 주문을 하고 지불 정보를 제공할 수 있게 하는 대화 애플리케이션을 위한 단일 커스텀 구성 디스크립션으로 결합하는데 관심이 있을 수 있다.
다수의 구성 디스크립션을 병합하면, 두 구성 디스크립션이 두 디스크립션 에 정의된 상태, 매핑 및/또는 전환을 포함하는 경우 충돌이 발생할 수 있다. 예를 들어, 병합될 2 개의 구성 디스크립션은 상이한 프롬프트 및 상이한 전환을 갖는 상이한 "웰컴" 상태를 포함할 수 있다. 구성 빌더(124)는 병합될 다수의 구성 디스크립션 사이의 상태, 매핑 및/또는 전환을 비교하는 것에 기초하여 이러한 충돌을 결정할 수 있다. 또한, 구성 빌더(124)는 이러한 충돌을 표시하고 병합된 구성 디스크립션이 생성되기 전에 이러한 충돌이 해결될 필요가 있음을 추가로 나타내는 프롬프트를 개발 사용자에게 제공할 수 있다. 추가적으로 또는 대안적으로, 개발 사용자는 충돌이 식별될 때 구성 디스크립션에 포함하기 위한 상태 및/또는 전환 정보를 포함하는 추가 구성 디스크립션을 제공할 수 있다. 일부 인스턴스에서, 개발 사용자는 구성 디스크립션 중 하나를 표시하여 임의의 충돌시 우선 순위를 지정할 수 있다. 예를 들어, 개발 사용자는 "퀴즈" 구성 디스크립션 정보가 "재미있는 사실" 구성 디스크립션에 포함된 충돌 상태 및/또는 전환에 대한 임의의 상태 또는 전환에 이용됨을 나타낼 수 있다.
일부 구현에서, 하나 이상의 옵션 상태는 대화 애플리케이션을 통해 대화 애플리케이션에 의해 사용되는 하나 이상의 오브젝트에 대한 필수 데이터를 프롬프트하기 위해 이용될 수 있다. 예를 들어, "주문" 커스텀 구성 디스크립션에, "이름", "전화 번호" 및 "주소"를 포함하는 사용자 프로필에 대한 오브젝트가 생성될 수 있다. 오브젝트가 생성되고 예를 들어 외부 데이터베이스에서 데이터를 검색할 때 오브젝트의 필드 중 하나 이상이 정의되지 않을 수 있다. 오브젝트의 임의의 필수 필드를 정의하기 위해, 구성 디스크립션은 대화 모듈(126)이 사용자 프로필을 완료하기 위해 필수 정보를 제공하도록 사용자에게 프롬프트하는 대화를 제공할 수 있게 하는 하나 이상의 상태를 포함할 수 있다. 대안적으로 또는 추가적으로, 구성 디스크립션은 하나 이상의 추가 소스에 대한 참조를 포함할 수 있고, 사용자에게 프롬프트하기 전에 또는 사용자에게 프롬프트하는 대신에 하나 이상의 소스로부터 누락 정보를 검색하려고 먼저 시도할 수 있다.
일부 구현들에서, 단일 상태는 사용자에게 필수 데이터를 프롬프트하기 위해 이용될 수 있고, 대화 애플리케이션은 모든 필수 데이터가 제공될 때까지 및/또는 사용자가 다른 상태로의 전환을 나타낼 때까지 그 상태를 유지할 수 있다. 예를 들어, 전술한 "주문" 상태에 대한 디스크립션은 주문을 하는데 필요한 각각의 필수 데이터 필드에 대한 프롬프트의 정의를 포함할 수 있다. 결과적인 대화는 사용자에게 이름을 제공하라는 프롬프트, 주소를 제공하는 프롬프트 및 전화 번호를 제공하는 프롬프트를 포함할 수 있다. 대화 애플리케이션은 모든 필수 데이터가 제공되거나 사용자가 다른 전환(예를 들어, "종료" 또는 "다시 시작")를 나타낼 때까지 "주문" 상태로 유지될 수 있다.
일단 커스텀 구성 디스크립션이 생성되면, 그것은 커스텀 구성 데이터베이스(158)에 저장되고 애플리케이션에 대한 호출 문구에 의해 색인화 및/또는 맵핑될 수 있다. 대안적으로, 본 명세서에 설명된 바와 같이, 병합된 구성 디스크립션은 커스텀 구성 데이터베이스(158)에 저장될 수 있다. 일부 구현들에서, 커스텀 구성 데이터베이스(158)는 사용자의 구성 디스크립션만을 포함할 수 있다. 일부 구현들에서, 커스텀 구성 데이터베이스(158)는 다수의 사용자들로부터의 애플리케이션들의 구성 디스크립션을 포함할 수 있다. 후속(또는 "호출") 사용자는 자유 형식의 자연어 입력을 자동화 어시스턴트(110)에 제공할 수 있다. 자유 형식의 자연어 입력에 포함된 호출 문구(들)에 기초하여, 자동화 어시스턴트(110)는 저장된 커스텀 인터렉티브 대화 애플리케이션을 커스텀 구성 데이터베이스(158)에서 식별할 수 있다. 대안적으로, 호출 문구(들)에 기초하여, 에이전트는 개발 사용자의 커스텀 구성 디스크립션에 기초하여 생성된 것임을 식별할 수 있다. 일단 커스텀 인터렉티브 대화 어플리케이션이 식별되면, 그 커스텀 인터렉티브 대화 어플리케이션과 관련된 특정 인터렉티브 대화 어플리케이션 클래스가 디폴트 구성 데이터베이스(156)에서 디폴트 구성 디스크립션을 식별하는데 사용될 수 있다. 호출 엔진(160)은 호출 요청을 처리하여, 개발 사용자 또는 다른 사용자에 의해 각각 제출되고 인터렉티브 대화 애플리케이션의 커스텀 구성 데이터베이스(158)에 저장된, 복수의 이전에 제출된 커스텀 버전 중 어느 것이 호출되는지를 결정한다. 일부 구현들에서, 커스텀 애플리케이션이 생성될 때, 사용자는 그 애플리케이션을 호출하기 위해 미래에 이용될 호출 문구를 제공할 수 있다. 일부 구현들에서, 하나 이상의 엔티티는 제공된 호출 문구와 관련되는 것으로 식별될 수 있고, 호출 엔진(160)은 사용자 입력 및 관련 엔티티들에 기초하여 하나 이상의 커스텀 버전을 선택할 수 있다. 본 명세서에 기술된 바와 같이, 일부 상황에서, 자동화 어시스턴트(110)는 커스텀 인터렉티브 대화 애플리케이션이 호출될 때 여전히 중개자 역할을 할 수 있다. 예를 들어, 사용자의 자연어 입력이 음성 입력인 중개자 역할을 하는 경우, 자동화 어시스턴트 (110)의 입력 처리 엔진(112)은 음성 입력을 텍스트로 변환할 수 있고, 호출 엔진(160)은 텍스트를 이용하여 커스텀 구성 데이터베이스(158) 내의 커스텀 인터렉티브 대화 애플리케이션 중 어느 것이 호출되는지를 결정하고, 호출된 커스텀 인터렉티브 대화 애플리케이션으로부터 응답형 컨텍츠를 수신할 수 있으며, 출력 엔진(135)은 클라이언트 디바이스(106)를 통해 사용자에게 제시하기 위해 커스텀 인터렉티브 대화 애플리케이션에 기초한 출력을 제공할 수 있다.
일부 구현들에서, 대화 모듈(126)은 호출 사용자로부터의 현재 입력 및 현재 상태에 기초하여, 다음 상태가 현재 커스텀 구성 디스크립션에 정의되어 있는지 여부를 식별할 수 있다. 다음 상태가 정의된 경우, 대화 모듈(126)은 사용자에게 제공하기 위해 렌더링될 다음 출력을 결정한다. 만약 다음 상태가 정의되지 않은 경우, 대화 모듈(126)은 호출된 대화 애플리케이션의 클래스에 적용 가능한 하나 이상의 적용 가능한 디폴트 구성 디스크립션에서 매칭 상태가 정의되는지를 결정할 수 있다. 일부 구현들에서, "오류" 또는 "비 매치" 상태는 다른 곳에서 정의되지 않은 모든 상태/전환을 처리하기 위해 디폴트 구성 디스크립션에서 정의될 수 있다.
일부 구현들에서, 상태는 디폴트 및 커스텀 구성 디스크립션 모두에서 정의될 수 있다. 예를 들어, "굿바이" 상태는 개발 사용자가 커스텀 구성 디스크립션에 종료 상태를 정의했는지 여부에 관계없이 커스텀 인터렉티브 대화 애플리케이션이 실행을 중지하기 위한 상태(예를 들어, "캐치 올("catch all)" 또는 "폴 백(fall back)"를 갖도록 디폴트 구성 디스크립션에서 정의될 수 있다. 그러나, 대화 모듈(126)은 커스텀 구성 디스크립션에서 먼저 확인하여, 사용자가 "굿바이" 상태를 정의한 경우 디폴트 구성 디스크립션을 보지않을 것이다. 따라서, 대화 모듈(126)은 애플리케이션이 실행될 때 임의의 사용자-정의 동작이 임의의 디폴트 동작보다 우선하도록 보장한다. 대안적으로, 본 명세서에 기술된 바와같이, 대화 모듈(126)은 대신에 디폴트 및 커스텀 구성 디스트립션 모두를 포함하고, 디스크립션들 모두에 포함된 상태들에 대해 제공된 커스텀 상태 및 전환 정보만을 갖는 병합된 구성 디스트립션을 이용할 수 있다.
일부 인스턴스에서, 커스텀 구성 디스크립션은 명시적 상태 정보를 포함하지 않고 대신 상태 정보의 위치 표시를 포함할 수 있다. 예를 들어, "퀴즈" 대화 애플리케이션은 커스텀 구성 디스크립션에 퀴즈 질문을 포함하지 않고 대신 데이터베이스에 대한 참조 및/또는 자동화 어시스턴트 내부 또는 외부의 데이터베이스에서 정보를 검색하는 함수 호출을 포함할 수 있다. 대화 모듈(126)이 상태 정보가 아닌 다른 소스의 표시를 포함하는 상태를 식별할 때, 외부 소스 모듈(128)은 함수를 처리하여 상태 정보를 검색한다. 예를 들어, "퀴즈" 대화 애플리케이션을 다시 참조하면, 질문 및/또는 답변은 커스텀 구성 디스크립션에 명시적으로 포함되지 않고 대신 정보 데이터베이스(157) 및/또는 다른 외부 리소스에 저장될 수 있다. 구성 디스크립션의 "다음 질문 인출(Fetch Next Question)" 상태는 외부 자원으로부터 질문을 검색하기 위한 함수 호출을 포함할 수 있다. 예를 들어, 외부 소스 모듈(128)은 퀴즈 질문 자원에 대한 API를 식별하고 그 API를 통해 퀴즈 질문 자원과 인터페이스하여 다음 퀴즈 질문을 식별할 수 있다. 다른 예로서, 외부 소스 모듈(128)은 퀴즈 질문들을 포함하는 것으로 정보 데이터베이스(157)를 식별할 수 있고, 정보 데이터베이스(157)를 직접 호출하여 다음 퀴즈 질문을 검색할 수 있다. 임의의 다음 퀴즈 질문은 대화의 일부로 제공하기 위해 로컬로 저장하거나 대화를 계속하기 위해 필요할 때 동적으로 검색될 수 있다. 질문은 본 명세서에 기술된 바와 같이 (예를 들어, 출력 엔진(135)을 통해) 호출 사용자에게 제공될 수 있다. 일부 구현들에서, 하나 이상의 컴포넌트는 대화 애플리케이션이 실행될 때 정보를 추적 및/또는 업데이트할 수 있다. 예를 들어, "퀴즈" 대화 애플리케이션에서, 스코어가 유지될 수 있다. 따라서, "정답" 상태는 스코어 카운터를 증가시키기 위한 명령을 포함할 수 있다. 스코어는 구성 디스크립션에 저장되거나 대안적으로 정보 데이터베이스(157)와 같은 하나 이상의 다른 컴포넌트에 의해 저장될 수 있다.
일부 구현들에서, 커스텀 구성 디스크립션 및/또는 디폴트 구성 디스크립션은 모든 상태에 의해 공유되는 전환의 정의를 포함할 수 있다. 그런 다음 전환은 일시적으로 다른 상태로 이동하고, 대화 애플리케이션의 현재 상태에 관계없이 대화를 생성한 다음 동일한 상태로 돌아가는데 이용될 수 있다. 예를 들어, 커스텀 구성 디스크립션은 "도움말(help)" 액션을 포함할 수 있다. 사용자가 "도움말"(또는 유사 문구)의 입력을 제공할 때마다, 대화 애플리케이션은 사용자에게 도움말 정보를 제공하거나 및/또는 "도움말" 상태로 전환하여 하나 이상의 후속 대화 턴에서 사용자에게 도움말 정보를 제공할 수 있다. 그런 다음 대화 애플리케이션은 사용자가 "도움말" 커맨드를 호출했을 때와 동일한 상태로 돌아갈 수 있다. 일부 구현들에서, 다른 상태로 영구적으로 전환하는 액션이 정의될 수 있다. 예를 들어, "재시작(Restart)" 액션은 그 재시작" 액션이 호출되었을 때 대화 애플리케이션이 어떤 상태에 있는지에 관계없이 대화 애플리케이션의 시작 상태로 전환되도록 정의될 수 있다.
일부 구현들에서, 커스텀 구성 디스크립션 및/또는 디폴트 구성 디스크립션은 대화 애플리케이션이 임의의 상태에 있을 때 호출될 수 있는 서브 대화의 정의를 포함할 수 있다. 서브 대화는 하나 이상의 상태 및 대화 애플리케이션이 임의의 상태에 있는 동안 호출될 수 있는 상태들 사이의 전환을 포함할 수 있다. 대화 애플리케이션은 서브 대화가 호출될 때 현재 상태의 표시를 저장할 수 있다. 서브 대화가 끝나면, 대화 애플리케이션은 서브 대화가 호출되었을 때의 상태로 돌아갈 수 있다. 예를 들어, 커스텀 퀴즈 대화 애플리케이션은 "농담(Joke)" 서브 대화를 포함할 수 있고 커스텀 구성 디스크립션은 "농담(Joke)" 서브 대화에 대한 호출 문구을 포함할 수 있다. 퀴즈 대화 애플리케이션이 실행되는 중에, 사용자는 임의의 상태에 있는 동안 호출 문구를 제공할 수 있고, "농담" 서브 대화는 (정의된 상태 및 서브-대화의 전환에 따라) 하나 이상의 농담을 제공할 수 있다. 일단 사용자가 "농담" 종료 문구을 호출하면, 대화 애플리케이션은 그 "농담" 서브 대화가 처음 호출되었을 때와 동일한 상태로 돌아갈 수 있다.
도 5는 본 명세서에 개시된 구현들에 따른 예시적인 방법의 흐름도를 도시한다. 하나 이상의 단계가 생략되고, 다른 순서로 수행되고, 및/또는 하나 이상의 추가의 단계가 다양한 구현에 포함될 수 있다.
단계(505)에서, 인터렉티브 대화 애플리케이션 클래스의 표시가 상태 및 전환 정보와 함께 수신된다. 표시는 복수의 클래스의 대화 애플리케이션 중 어느 것이 개발 사용자가 생성에 관심을 갖는지를 결정하는데 이용될 수 있다. 일부 구현예들에서, 상태 및 전환 정보는 상태 매핑 애플리케이션(170)과 같은 하나 이상의 상태 맵핑 애플리케이션을 이용하여 사용자에 의해 미리 생성될 수 있다.
단계(510)에서, 커스텀 구성 디스크립션은 단계(505)에서 수신된 상태들과 전환들에 기초하여 생성된다. 일부 구현들에서, 커스텀 구성 디스크립션은 애플리케이션이 한 상태에서 다른 상태로 전환할 수 있도록 하는 호출 사용자로부터의 입력을 위한 커스텀 상태 이름 및 조건을 포함한다. 예를 들어, 도 3에 도시된 커스텀 구성 디스크립션과 하나 이상의 특성을 공유하는 커스텀 구성 디스크립션이 생성될 수 있다. 그런 다음 커스텀 구성 디스크립션은 개발 사용자에 의해 추가로 제공될 수 있는 호출 문구에 의해 저장되고 인덱싱된다.
단계(515)에서, 디폴트 구성 디스크립션은 단계(505)에서 수신된 표시에 기초하여 식별된다. 일부 구현들에서, 각 클래스의 대화 애플리케이션들은 그 애플리케이션 클래스에 고유한 디폴트 상태들에 관한 상태 정보를 포함하는 자체 디폴트 구성 디스크립션을 가질 수 있다. 일부 구현들에서, 모든 애플리케이션은 동일한 디폴트 구성 디스크립션을 공유할 수 있다.
단계(520)에서, 추가 사용자(즉, 호출 사용자)로부터 자연어 입력이 수신된다. 자연어 입력을 파싱하여 개발 사용자에 의해 제공된 호출 문구가 자연어 입력에 포함되는지 여부를 판별한다. 만약 호출 문구가 식별되면, 대응하는 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션이 검색되고 커스텀 애플리케이션이 구성된다.
단계(525)에서, 커스텀 애플리케이션이 추가 사용자에게 제공된다. 커스텀 애플리케이션에는 커스텀 구성 애플리케이션에서 제공된 정보에 기초하여 대화 턴이 표시된다. 만약 커스텀 구성 디스크립션에서 하나 이상의 상태 및/또는 전환을 식별할 수 없는 경우, 디폴트 구성 디스크립션은 애플리케이션의 현재 상태 및 사용자의 입력에 기초하여 진행 방법을 결정하기 위해 이용될 수 있다.
도 6은 사용자(101), 음성-작동 클라이언트 디바이스(606), 및 커스텀 인터렉티브 대화 애플리케이션에 대한 액세스를 갖는 클라이언트 디바이스(606)와 관련된 자동화 어시스턴트와 사용자(101)사이에 발생할 수 있는 대화의 예를 도시한다. 클라이언트 디바이스(606)는 하나 이상의 마이크로폰 및 하나 이상의 스피커를 포함한다. 도 1의 자동화 어시스턴트(110)의 하나 이상의 양태는 클라이언트 디바이스(606) 및/또는 클라이언트 디바이스(606)와 네트워크 통신하는 하나 이상의 컴퓨팅 디바이스에서 구현될 수 있다. 따라서, 설명의 편의를 위해, 자동화 어시스턴트(110)는 도 6의 설명에서 참조된다.
사용자 입력(600A)은 커스텀 동적 인터렉티브 사실 제공 애플리케이션을 위한 호출 문구이다. 입력 처리 엔진(112)은 전술한 바와 같이, 파싱된 입력을 호출 엔진(160)에 제공한다. 이어서 하나 이상의 컴포넌트는 호출 문구과 매칭하는 커스텀 대화 애플리케이션에 대한 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션을 식별할 수 있다.
출력(602A)에서, 애플리케이션은 도 3의 커스텀 구성 디스크립션에 정의된 "웰컴" 상태를 실행한다. "웰컴" 상태는 통과 상태이며 다음 단계로 전환하기 위해 호출 사용자의 입력이 필요하지 않다.
*출력(602B)에서, 사실은 도 2에 도시된 "사실 제공" 상태로부터 제공되고, 도 3의 커스텀 구성 디스크립션에서 제공된다. 다시, "사실 제공" 상태는 통과 상태이며, 애플리케이션을 다음 상태로 이동하기 위해 호출 사용자의 입력이 필요하지 않다.
602C에서, 애플리케이션은 "다른 것 요청" 상태에 진입하여, 도 2의 상태 매핑 및 도 3의 커스텀 구성 디스크립션에 정의된 바와 같이, 사용자가 추가 사실을 청취하는데 관심이 있는지 여부를 호출 사용자에게 프롬프트한다. 이 상태는 "예/아니오" 상태이며 다른 상태로 이동하기 위해 이들 응답 중 하나가 요구된다.
대신에, 사용자 입력(600B)은 모호한 "아마도(Maybe)"이며, 이는 커스텀 구성 디스크립션에서 "다른 것 요청" 상태에 의해 처리되지 않는다. 따라서, 애플리케이션은 디폴트 구성 디스크립션에서 부적합한(non-conforming) 입력을 수신하는 인스턴스를 처리하는 "다른 것 요청" 상태에 대한 "일치하지 않음" 디폴트 상태 파라미터를 식별했다. 출력(602D)에서, 애플리케이션은 "일치하지 않음" 입력에 대한 디폴트 상태 동작을 제공한다. 일부 구현들에서, 개발 사용자는 커스텀 구성 디스크립션에서 "일치하지 않음" 파라미터를 정의함으로써 부적합한 입력을 처리하기 위해 상기 커스텀 애플리케이션에 대한 커스텀 동작을 정의할 수 있다.
사용자 입력(600C)에서, 사용자는 상태에 대한 예상 입력을 따르는 입력을 제공한다. "아니오"라고 응답하면 애플리케이션은 커스텀 구성 디스크립션에 정의된 "굿바이"상태로 전환한다. 참고로, 디폴트 구성 디스크립션에는 "굿바이" 상태도 포함되지만, 애플리케이션은 먼저 상태가 커스텀 구성 디스크립션에 정의되어 있는지 여부를 식별하고, 커스텀 상태가 식별되지 않은 경우에만 디폴트 구성 디스크립션을 체크한다.
도 6은 본 명세서에서 2 개의 개별 디스트립션으로부터 상태, 전환 및 동작을 식별하는 것으로 설명되었지만, 일부 구현들에서, 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션은 애플리케이션의 실행시에 이용되는 단일 디스트립션으로 병합될 수 있다. 대안적으로, 도 6에 제공된 대화는 사용자의 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션에 기초하여 사용자(101)와 이전에 생성된 에이전트 사이에 있을 수 있다. 또한, 본 명세서에서 커스텀 구성 디스크립션 및 디폴트 구성 디스크립션은 디폴트 상태보다 커스텀 상태를 선택함으로써 해결되는 동일한 상태를 포함하는 것으로 기술되지만, 일부 경우에, 커스텀 구성 디스크립션은 사용자-생성 상태만을 포함하며, 디폴트 구성 디스크립션에 정의된 후속 애플리케이션의 임의의 디폴트 동작을 변경하지 않는다.
본 명세서에서 일반적으로 설명되고 도 6에 도시된 바와 같이, 자동화 어시스턴트는 음성 커맨드를 통해 사용자와 상호 작용하는 독립형 디바이스에서 실행될 수 있다. 그러나, 일부 경우에서, 디바이스는 사용자가 음성 이외의 형태로 자동화 어시스턴트와 상호 작용할 수 있도록 하는 추가 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 따라서, 음성는 본 명세서의 일부 예에서 사용자와 대화 애플리케이션 사이의 하나의 상호 작용 형태로서 기술되지만, 사용자는 음성 커맨드에 더하여 또는 그 대신에 사용자 인터페이스(U1)의 (예를 들어, 터치 스크린상의 Ul 요소를 터치하고, 마우스를 통해 Ul 요소를 클릭하고, 하드웨어 키보드 및/또는 가상 키보드를 통해 타이핑하는) 요소를 통해 입력을 제공할 수 있다.
일부 구현들에서, 하나 이상의 상태는 사용자에게 출력을 제공하기 위한 다수의 형태를 포함할 수 있고, 출력이 제공되는 형태는 그 출력을 제공하는 디바이스의 플랫폼 및/또는 인터페이스에 기초하여 변할 수 있다. 예를 들어, 상태 정의는 옵션 리스트를 포함할 수 있고, 리스트는 어시스턴트를 실행하는 디바이스가 스크린을 갖지 않는 경우 자동화 어시스턴트를 통해 음성만으로 사용자에게 제공될 수 있다. 대안적으로, 디바이스가 시각적 출력을 지원하는 경우, 구성 디스크립션은 그래픽 및/또는 다른 시각적 요소를 포함하여 사용자에게 동일한 리스트를 제공할 수 있다. 다른 예로서, 퀴즈 대화 애플리케이션은 퀴즈 질문에 대한 현재 카테고리를 보여주기 위해 스크린에 제공하는 그래픽을 포함할 수 있다. 실행 디바이스가 스크린을 포함하지 않는 경우, 대화 애플리케이션은 대신 사용자에게 질문을 제공하기 전에 카테고리의 오디오 출력을 제공할 수 있다. 일부 구현들에서, 커스텀 구성 디스크립션은 출력을 제공하는 방법의 계층 구조(hierarchy)를 포함할 수 있고, 대화 애플리케이션은 계층 구조 및/또는 출력이 제공될 디바이스에 의해 어떤 형태의 출력이 지원되는지에 기초하여 어느 것을 사용할지를 결정할 수 있다. 계층 구조는 디바이스에 의해 지원되는 경우 출력 제공 방법에 대한 순서화된 선호도를 정의할 수 있다. 예를 들어, 계층 구조는 출력이 가장 바람직하게는, 출력을 제공하는 하나 이상의 다음의 바람직한 형태가 뒤 따르는, 캐러셀(carousel)(즉, 스크린에 부분적으로 보이는 하나 이상의 이전 및/또는 후속 시각적 이미지와 함께 시각적 정보를 제공함)을 통해 제공되어야 한다고 정의할 수 있다. 디바이스가 캐러셀 형식의 출력 제공을 지원하는 경우, 출력은 가장 바람직한 캐러셀 형식을 통해제공될 수 있다. 그러나, 디바이스가 캐러셀을 통한 출력 제공을 지원하지 않는 경우, 그 출력을 제공하는 다음의 가장 바람직한(및 지원되는) 포맷(예를 들어, 정적 이미지, 미디어 카드, 청각적으로) 대신 사용될 수 있다.
도 7은 본 명세서에 설명된 기술의 하나 이상의 양태를 수행하기 위해 선택적으로 사용될 수 있는 예시적인 컴퓨팅 디바이스(710)의 블록도이다. 일부 구현들에서, 하나 이상의 디바이스(106), 자동화 어시스턴트(110) 및/또는 다른 컴포넌트(들)는 예시적인 컴퓨팅 디바이스(710)의 하나 이상의 컴포넌트를 포함할 수 있다.
컴퓨팅 디바이스(710)는 일반적으로 버스 서브 시스템(712)을 통해 다수의 주변 디바이스와 통신하는 적어도 하나의 프로세서(714)를 포함한다. 이들 주변 디바이스는, 예를 들어, 메모리 서브 시스템(725) 및 파일 저장 서브 시스템(726), 사용자 인터페이스 출력 디바이스(720), 사용자 인터페이스 입력 디바이스(722) 및 네트워크 인터페이스 서브 시스템(716)을 포함하는 저장 서브 시스템(724)을 포함할 수 있다. 입력 및 출력 디바이스는 컴퓨팅 디바이스(710)와의 사용자 상호 작용을 허용한다. 네트워크 인터페이스 서브 시스템(716)은 외부 네트워크에 인터페이스를 제공하고, 다른 컴퓨팅 디바이스의 대응하는 인터페이스 디바이스들에 연결된다.
사용자 인터페이스 입력 디바이스(722)는 키보드, 포인팅 디바이스(예를 들어, 마우스, 트랙볼, 터치 패드 또는 그래픽 태블릿), 스캐너, 디스플레이에 통합된 터치 스크린, 음성 인식 시스템, 마이크 및/또는 다른 유형의 입력 디바이스와 같은 오디오 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 모든 가능한 유형의 디바이스 및 정보를 컴퓨팅 디바이스(710) 또는 통신 네트워크에 입력하는 방법을 포함하도록 의도된다.
사용자 인터페이스 출력 디바이스(720)는 디스플레이 서브 시스템, 프린터, 팩스기, 또는 오디오 출력 디바이스와 같은 비-시각적 디스플레이를 포함할 수 있다. 디스플레이 서브 시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평판 디바이스, 프로젝션 디바이스, 또는 가시적 이미지를 생성하기 위한 다른 메커니즘을 포함할 수 있다. 디스플레이 서브 시스템은 또한 오디오 출력 디바이스와 같은 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 모든 가능한 유형의 디바이스 및 컴퓨팅 디바이스(710)로부터 사용자 또는 다른 기계 또는 컴퓨팅 디바이스로 정보를 출력하는 방법을 포함하도록 의도된다.
저장 서브 시스템(724)은 본 명세서에 설명된 일부 또는 모든 모듈의 기능을 제공하는 프로그래밍 및 데이터 구성을 저장한다. 예를 들어, 저장 서브 시스템(724)은 도 5의 방법 및/또는 본 명세서에 기술된 다른 방법의 선택된 양태를 수행하는 로직을 포함할 수 있다.
이들 소프트웨어 모듈은 일반적으로 프로세서(714)에 의해 단독으로 또는 다른 프로세서와 조합하여 실행된다. 저장 서브 시스템(724)에 사용된 메모리(725)는 프로그램 실행 동안 명령 및 데이터를 저장하기 위한 메인 랜덤 액세스 메모리 (RAM)(730) 및 고정 명령이 저장된 ROM(732)을 포함하는 다수의 메모리를 포함할 수 있다. 파일 저장 서브 시스템(726)은 프로그램 및 데이터 파일을 위한 영구적 저장소를 제공할 수 있으며, 하드 디스크 드라이브, 관련 이동식 미디어, CD-ROM 드라이브, 광학 드라이브 또는 이동식 미디어 카트리지와 함께 플로피 디스크 드라이브를 포함할 수 있다. 특정 구현의 기능을 구현하는 모듈들은 파일 저장 서브 시스템(726)에 의해 저장 서브 시스템(724) 또는 프로세서(들)(714)에 의해 액세스 가능한 다른 머신에 저장될 수 있다.
버스 서브 시스템(712)은 컴퓨팅 디바이스(710)의 다양한 컴포넌트 및 서브 시스템이 의도된 대로 서로 통신하도록 하는 메커니즘을 제공한다. 버스 서브 시스템(712)이 단일 버스로 개략적으로 도시되어 있지만, 버스 서브 시스템의 대안적인 구현은 다중 버스를 사용할 수 있다.
컴퓨팅 디바이스(710)는 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 처리 시스템 또는 컴퓨팅 디바이스를 포함하는 다양한 유형일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 7에 도시된 컴퓨팅 디바이스(710)의 설명은 일부 구현을 설명하기 위한 특정 예로서만 의도된다. 컴퓨팅 디바이스(710)의 많은 다른 구성은 도 7에 도시된 컴퓨팅 디바이스보다 더 많거나 적은 컴포넌트를 가질 수 있다.

Claims (21)

  1. 하나 이상의 프로세서에 의해 구현되는 방법으로서,
    사용자가 생성한 맞춤형 인터렉티브 대화(customized interactive dialog) 애플리케이션에 대한 그래픽 상태 애플리케이션으로부터 인터렉티브 대화 애플리케이션의 표시 및 상태 맵을 수신하는 단계,
    상기 상태 맵은 커스텀 상태들, 커스텀 상태 전환(transition)들을 포함하고 그리고 각각의 커스텀 상태에서 호출할 수 있는 적어도 하나의 서브-대화(sub-dialog )를 정의하고,
    상기 각각의 커스텀 상태는 커스텀 상태들 중 대응하는 하나에 대한 커스텀 상태 정보를 정의하고,
    상기 각각의 커스텀 상태 전환은 커스텀 상태들 중 대응하는 하나로부터의 커스텀 상태 전환 정보를 정의하고, 그리고
    상기 커스텀 상태들 중 하나에서 서브-대화를 호출하는 것은:
    서브-대화가 호출된 커스텀 상태의 표시를 저장하고,
    서브-대화를 수행하고, 그리고
    서브-대화가 종료될 때 서브-대화가 호출된 커스텀 상태로 돌아가기 위해 상기 저장된 표시를 사용하게 하고;
    커스텀 상태들, 커스텀 상태 전환들 및 서브-대화에 기초하여 맞춤형 구성 설명(description)을 생성하는 단계;
    맞춤형 구성 설명을 생성하는 것에 후속하여:
    추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 자연어 입력을 수신하는 단계;
    자연어 입력이 인터렉티브 대화 애플리케이션을 참조한다고 결정하는 단계; 및
    자연어 입력이 인터렉티브 대화 애플리케이션을 참조한다는 결정에 응답하여, 맞춤형 구성 설명에 기초하여 맞춤형 인터렉티브 대화 애플리케이션을 실행하는 단계를 포함하고, 상기 맞춤형 인터렉티브 대화 애플리케이션을 실행하는 단계는:
    추가 사용자와 맞춤형 인터렉티브 대화 애플리케이션 사이의 인터렉티브 대화 동안 어시스턴트 인터페이스를 통해 렌더링하기 위한 다수의 출력 인스턴스를 생성하는 단계를 포함하고,
    상기 다수의 출력 인스턴스 각각은 맞춤형 인터렉티브 대화 애플리케이션의 실행 동안 상기 인터렉티브 대화의 다수의 대화 턴(turn) 중 대응하는 하나에 대한 것이고,
    상기 다수의 출력 인스턴스 중 적어도 일부는 맞춤형 구성 설명의 커스텀 상태들 및 커스텀 상태 전환들을 사용하여 생성되고 그리고 상기 다수의 출력 인스턴스 중 적어도 일부는 맞춤형 구성 설명의 서브-대화를 호출함으로써 생성되는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 다수의 대화 턴의 특정(given) 대화 턴에서 다수의 출력 인스턴스의 특정 출력 인스턴스를 생성하는 단계는,
    특정 대화 턴에서 인터렉티브 대화의 현재 상태를 식별하는 단계;
    인터렉티브 대화의 현재 상태가 맞춤형 구성 설명의 커스텀 상태들 중 하나인지 여부를 결정하는 단계; 및
    인터렉티브 대화의 현재 상태가 맞춤형 구성 설명의 커스텀 상태들 중 하나라는 결정에 응답하여:
    커스텀 상태들 중 하나에 대해 정의된 커스텀 상태 정보에 기초하여 특정 출력 인스턴스를 생성하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  3. 제2항에 있어서,
    상기 다수의 대화 턴의 특정 추가 대화 턴에서 다수의 출력 인스턴스의 특정 추가 출력 인스턴스를 생성하는 단계는,
    추가 대화 턴에서 인터렉티브 대화의 추가 현재 상태를 식별하는 단계;
    인터렉티브 대화가 추가 현재 상태에 있는 동안, 추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공된 추가 자연어 입력을 수신하는 단계;
    추가 자연어 입력이 서브-대화를 참조한다고 결정하는 단계;
    추가 자연어 입력이 서브-대화를 참조한다는 결정에 응답하여:
    인터렉티브 대화의 추가 현재 상태의 표시를 저장하는 단계와, 그리고
    서브-대화를 수행하는 단계; 및
    서브-대화가 종료되었다고 결정하는 것에 응답하여:
    서브-대화가 호출된 추가 현재 상태로 돌아가기 위해 상기 저장된 표시를 사용하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  4. 제2항에 있어서,
    상기 현재 상태에 대해 정의된 커스텀 상태 정보는 커스텀 오디오를 포함하고, 상기 특정 출력 인스턴스를 생성하는 단계는 커스텀 오디오가 클라이언트 디바이스의 하나 이상의 스피커를 통해 렌더링되게 하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 현재 상태에 대해 정의된 커스텀 상태 정보는 커스텀 시각적 엘리먼트들을 더 포함하고, 상기 특정 출력 인스턴스를 생성하는 단계는 커스텀 시각적 엘리먼트들이 클라이언트 디바이스의 디스플레이를 통해 렌더링되게 하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  6. 제5항에 있어서,
    상기 커스텀 시각적 엘리먼트들이 클라이언트 디바이스의 디스플레이를 통해 렌더링되게 하는 단계는,
    추가 사용자에 의해 조작되는 클라이언트 디바이스가 시각적 출력을 지원한다고 결정하는 것에 응답하는 것임을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  7. 제2항에 있어서,
    상기 현재 상태에 대해 정의된 커스텀 상태 정보는 특정 출력 인스턴스를 생성하는데 사용하기 위한 외부 리소스를 포함하고, 상기 특정 출력 인스턴스를 생성하는 단계는 외부 리소스와 인터페이스하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  8. 제7항에 있어서,
    상기 외부 리소스와 인터페이스하는 단계는,
    네트워크를 통해 외부 리소스와 통신하는 단계 및 애플리케이션 프로그래밍 인터페이스를 사용하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 서브-대화는,
    검출될 때, 서브-대화가 호출되게 하는 호출 문구를 정의하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  10. 제8항에 있어서,
    상기 서브-대화는,
    커스텀 서브-상태들 및 커스텀 서브-상태 전환들을 포함하고, 각각의 커스텀 서브-상태는 커스텀 서브-상태들 중 대응하는 하나에 대한 커스텀 서브-상태 정보를 정의하고, 그리고 각각의 커스텀 서브-상태 전환은 커스텀 서브-상태들 중 대응하는 하나로부터 커스텀 서브-상태 전환 정보를 정의하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  11. 제9항에 있어서,
    상기 서브-대화는,
    검출될 때, 서브-대화가 종료되게 하는 종료(exit) 문구를 더 정의하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  12. 제1항에 있어서,
    상기 커스텀 상태들의 특정 커스텀 상태에 대한 커스텀 전환 정보는,
    예상 응답 및 그 예상 응답이 수신되는 경우에 전환할 커스텀 상태들의 추가 커스텀 상태를 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  13. 제12항에 있어서,
    상기 특정 커스텀 상태에 대한 커스텀 전환 정보는,
    대체 예상 응답 및 그 대체 예상 응답이 수신되는 경우에 전환할 커스텀 상태들의 대체 커스텀 상태를 더 포함하는 것을 특징으로 하는 하나 이상의 프로세서에 의해 구현되는 방법.
  14. 시스템으로서,
    적어도 하나의 프로세서; 그리고
    명령들을 저장하는 적어도 하나의 메모리를 포함하고, 상기 명령들은 실행될 때 적어도 하나의 프로세서로 하여금:
    사용자가 생성한 맞춤형 인터렉티브 대화 애플리케이션에 대한 그래픽 상태 애플리케이션으로부터 인터렉티브 대화 애플리케이션의 표시 및 상태 맵을 수신하고,
    상기 상태 맵은 커스텀 상태들, 커스텀 상태 전환(transition)들을 포함하고 그리고 각각의 커스텀 상태에서 호출할 수 있는 적어도 하나의 서브-대화를 정의하고,
    상기 각각의 커스텀 상태는 커스텀 상태들 중 대응하는 하나에 대한 커스텀 상태 정보를 정의하고,
    상기 각각의 커스텀 상태 전환은 커스텀 상태들 중 대응하는 하나로부터의 커스텀 상태 전환 정보를 정의하고, 그리고
    커스텀 상태들, 커스텀 상태 전환들 및 서브-대화에 기초하여 맞춤형 구성 설명을 생성하고;
    맞춤형 구성 설명을 생성하는 것에 후속하여:
    추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 자연어 입력을 수신하고;
    자연어 입력이 인터렉티브 대화 애플리케이션을 참조한다고 결정하고; 그리고
    자연어 입력이 인터렉티브 대화 애플리케이션을 참조한다는 결정에 응답하여, 맞춤형 구성 설명에 기초하여 맞춤형 인터렉티브 대화 애플리케이션을 실행하게 하고, 상기 맞춤형 인터렉티브 대화 애플리케이션을 실행하기 위한 명령은 적어도 하나의 프로세서로 하여금:
    맞춤형 인터렉티브 대화 애플리케이션의 인터렉티브 대화의 현재 상태를 식별하고;
    인터렉티브 대화가 현재 상태에 있는 동안, 추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 추가 자연어 입력을 수신하고;
    추가 자연어 입력이 서브-대화를 참조한다고 결정하고;
    추가 자연어 입력이 서브-대화를 참조한다는 결정에 응답하여:
    인터렉티브 대화의 현재 상태의 표시를 저장하고, 그리고
    서브-대화를 수행하고, 그리고
    서브-대화가 종료되었다고 결정하는 것에 응답하여, 서브-대화가 호출된 현재 상태로 돌아가기 위해 상기 저장된 표시를 사용하게 하는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서,
    상기 서브-대화는
    검출될 때, 서브-대화가 호출되게 하는 호출 구문을 정의하고, 그리고 추가 자연어 입력이 서브-대화를 참조한다고 결정하기 위한 명령은 추가 자연어 입력이 호출 구문을 포함하는지 결정하기 위한 명령을 포함하는 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    상기 서브-대화는,
    커스텀 서브-상태들 및 커스텀 서브-상태 전환들을 포함하고, 각각의 커스텀 서브-상태는 커스텀 서브-상태들 중 대응하는 하나에 대한 커스텀 서브-상태 정보를 정의하고, 그리고 각각의 커스텀 서브-상태 전환은 커스텀 서브-상태들 중 대응하는 하나로부터 커스텀 서브-상태 전환 정보를 정의하는 것을 특징으로 하는 시스템.
  17. 제15항에 있어서,
    상기 서브-대화는,
    검출될 때, 서브-대화가 종료되게 하는 종료 문구를 더 정의하고, 상기 맞춤형 인터렉티브 대화 애플리케이션을 실행하기 위한 명령은 또한 적어도 하나의 프로세서로 하여금 추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 추가 자연 언어 입력이 종료 문구를 포함하다고 결정하게 하는 것을 특징으로 하는 시스템.
  18. 실행될 때 적어도 하나의 프로세서로 하여금 동작들을 수행하게 하는 적어도 하나의 프로세서에 의해 실행 가능한 명령들을 포함하는 소프트웨어를 저장하는 비-일시적 컴퓨터 판독가능 저장 디바이스로서, 상기 동작들은,
    사용자가 생성한 맞춤형 인터렉티브 대화 애플리케이션에 대한 그래픽 상태 애플리케이션으로부터 인터렉티브 대화 애플리케이션의 표시 및 상태 맵을 수신하는 단계,
    상기 상태 맵은 커스텀 상태들, 커스텀 상태 전환들을 포함하고 그리고 각각의 커스텀 상태에서 호출할 수 있는 적어도 하나의 서브-대화를 정의하고,
    상기 각각의 커스텀 상태는 커스텀 상태들 중 대응하는 하나에 대한 커스텀 상태 정보를 정의하고,
    상기 각각의 커스텀 상태 전환은 커스텀 상태들 중 대응하는 하나로부터의 커스텀 상태 전환 정보를 정의하고, 그리고
    상기 커스텀 상태들 중 하나에서 서브-대화를 호출하는 것은:
    서브-대화가 호출된 커스텀 상태의 표시를 저장하고,
    서브-대화를 수행하고, 그리고
    서브-대화가 종료될 때 서브-대화가 호출된 커스텀 상태로 돌아가기 위해 상기 저장된 표시를 사용하게 하고;
    커스텀 상태들, 커스텀 상태 전환들 및 서브-대화에 기초하여 맞춤형 구성 설명을 생성하는 단계;
    맞춤형 구성 설명을 생성하는 것에 후속하여:
    추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 자연어 입력을 수신하는 단계;
    자연어 입력이 인터렉티브 대화 애플리케이션을 참조한다고 결정하는 단계; 및
    자연어 입력이 인터렉티브 대화 애플리케이션을 참조한다는 결정에 응답하여, 맞춤형 구성 설명에 기초하여 맞춤형 인터렉티브 대화 애플리케이션을 실행하는 단계를 포함하고, 상기 맞춤형 인터렉티브 대화 애플리케이션을 실행하기 위한 명령은 적어도 하나의 프로세서로 하여금:
    추가 사용자와 맞춤형 인터렉티브 대화 애플리케이션 사이의 인터렉티브 대화 동안 어시스턴트 인터페이스를 통해 렌더링하기 위한 다수의 출력 인스턴스를 생성하는 단계를 포함하는 동작을 수행하게 하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 저장 디바이스.
  19. 제18항에 있어서,
    상기 다수의 출력 인스턴스 각각은 맞춤형 인터렉티브 대화 애플리케이션의 실행 동안 인터렉티브 대화의 다수의 대화 턴 중 대응하는 하나에 대한 것이고, 상기 다수의 출력 인스턴스 중 적어도 일부는 맞춤형 구성 설명의 커스텀 상태들 및 커스텀 상태 전환들을 사용하여 생성되고, 그리고 상기 다수의 출력 인스턴스 중 적어도 일부는 맞춤형 구성 설명의 서브-대화를 호출함으로써 생성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 저장 디바이스.
  20. 제19항에 있어서,
    상기 다수의 대화 턴의 특정 대화 턴에서 다수의 출력 인스턴스의 특정 출력 인스턴스를 생성하기 위한 명령은 적어도 하나의 프로세서로 하여금:
    추가 대화 턴에서 인터렉티브 대화의 현재 상태를 식별하는 단계;
    인터렉티브 대화가 추가 현재 상태에 있는 동안, 추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 추가 자연어 입력을 수신하는 단계;
    추가 자연어 입력이 서브-대화에 의해 정의된 호출 구문을 포함한다고 결정하는 단계;
    추가 자연어 입력이 서브-대화를 참조한다는 결정에 응답하여:
    인터렉티브 대화의 현재 상태 표시를 저장하는 단계와, 그리고
    서브-대화를 수행하는 단계; 및
    서브-대화가 종료되었다고 결정하는 것에 응답하여:
    서브-대화가 호출된 추가 현재 상태로 돌아가기 위해 상기 저장된 표시를 사용하는 단계를 포함하는 동작들을 수행하게 하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 저장 디바이스.
  21. 제20항에 있어서,
    상기 서브-대화는 종료 구문을 추가로 정의하고, 상기 서브-대화를 결정하는 단계 및 상기 명령들은 적어도 하나의 프로세서로 하여금:
    추가 사용자에 의해 조작되는 클라이언트 디바이스의 어시스턴트 인터페이스를 통해 제공되는 추가 자연어 입력을 수신하는 단계;
    추가 자연어 입력이 서브-대화에 의해 정의된 종료 구문을 포함한다고 결정하는 단계; 및
    추가 자연어 입력이 서브-대화에 의해 정의된 종료 구문을 포함한다는 것에 기초하여 서브-대화가 종료되었다고 결정하는 단계를 포함하는 동작들을 수행하게 하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 저장 디바이스.
KR1020217042284A 2017-10-04 2018-10-03 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션 KR102429407B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762568255P 2017-10-04 2017-10-04
US62/568,255 2017-10-04
US15/960,444 US10621984B2 (en) 2017-10-04 2018-04-23 User-configured and customized interactive dialog application
US15/960,444 2018-04-23
PCT/US2018/054126 WO2019070826A1 (en) 2017-10-04 2018-10-03 INTERACTIVE DIALOGUE CONFIGURED AND CUSTOMIZED BY THE USER
KR1020197038221A KR102345615B1 (ko) 2017-10-04 2018-10-03 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038221A Division KR102345615B1 (ko) 2017-10-04 2018-10-03 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션

Publications (2)

Publication Number Publication Date
KR20220002704A KR20220002704A (ko) 2022-01-06
KR102429407B1 true KR102429407B1 (ko) 2022-08-05

Family

ID=65898089

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197038221A KR102345615B1 (ko) 2017-10-04 2018-10-03 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션
KR1020217042284A KR102429407B1 (ko) 2017-10-04 2018-10-03 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197038221A KR102345615B1 (ko) 2017-10-04 2018-10-03 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션

Country Status (6)

Country Link
US (3) US10621984B2 (ko)
EP (1) EP3559805A1 (ko)
JP (1) JP7128847B2 (ko)
KR (2) KR102345615B1 (ko)
CN (1) CN110998526B (ko)
WO (1) WO2019070826A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621984B2 (en) 2017-10-04 2020-04-14 Google Llc User-configured and customized interactive dialog application
CN110234032B (zh) * 2019-05-07 2022-02-25 百度在线网络技术(北京)有限公司 一种语音技能创建方法及***
US10629191B1 (en) * 2019-06-16 2020-04-21 Linc Global, Inc. Methods and systems for deploying and managing scalable multi-service virtual assistant platform
US11561775B2 (en) 2020-03-30 2023-01-24 Nuance Communications, Inc. Development system and method
CN115048162A (zh) * 2021-03-08 2022-09-13 Oppo广东移动通信有限公司 表盘显示方法及装置、电子设备及计算机可读存储介质
KR102392223B1 (ko) * 2021-11-24 2022-04-29 (주) 바우디움 절차의 구조를 입출력하는 방법 및 이를 이용한 장치

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1021804A4 (en) * 1997-05-06 2002-03-20 Speechworks Int Inc SYSTEM AND METHOD FOR DEVELOPING INTERACTIVE LANGUAGE APPLICATIONS
JP3092563B2 (ja) * 1997-10-27 2000-09-25 日本電気株式会社 状態遷移図変換装置
US6321198B1 (en) * 1999-02-23 2001-11-20 Unisys Corporation Apparatus for design and simulation of dialogue
US20050091057A1 (en) * 1999-04-12 2005-04-28 General Magic, Inc. Voice application development methodology
US6314402B1 (en) * 1999-04-23 2001-11-06 Nuance Communications Method and apparatus for creating modifiable and combinable speech objects for acquiring information from a speaker in an interactive voice response system
CA2376277C (en) * 1999-06-11 2011-03-15 Telstra New Wave Pty Ltd A method of developing an interactive system
TW501046B (en) * 1999-06-11 2002-09-01 Ind Tech Res Inst A portable dialogue manager
US6684183B1 (en) * 1999-12-06 2004-01-27 Comverse Ltd. Generic natural language service creation environment
CA2402854A1 (en) * 2000-03-17 2001-09-27 Emperative, Inc. Communications services provisioning method and apparatus and object programming language for developing provisioning models
JP2002073080A (ja) * 2000-09-01 2002-03-12 Fujitsu Ten Ltd 音声対話システム
JP2002135429A (ja) * 2000-10-26 2002-05-10 Hitachi Ltd 電話音声応答装置
US20030007609A1 (en) * 2001-07-03 2003-01-09 Yuen Michael S. Method and apparatus for development, deployment, and maintenance of a voice software application for distribution to one or more consumers
AU2002950336A0 (en) * 2002-07-24 2002-09-12 Telstra New Wave Pty Ltd System and process for developing a voice application
AU2002951244A0 (en) * 2002-09-06 2002-09-19 Telstra New Wave Pty Ltd A development system for a dialog system
JP2004287016A (ja) * 2003-03-20 2004-10-14 Sony Corp 音声対話装置及び方法並びにロボット装置
CN1864203A (zh) * 2003-10-10 2006-11-15 皇家飞利浦电子股份有限公司 用于对话***的对话控制
US20050228668A1 (en) * 2004-03-31 2005-10-13 Wilson James M System and method for automatic generation of dialog run time systems
JP2006011316A (ja) * 2004-06-29 2006-01-12 Kokichi Tanihira 仮想会話システム
US8478589B2 (en) * 2005-01-05 2013-07-02 At&T Intellectual Property Ii, L.P. Library of existing spoken dialog data for use in generating new natural language spoken dialog systems
US8225232B2 (en) * 2005-02-28 2012-07-17 Microsoft Corporation Dynamic configuration of unified messaging state changes
FR2882837B1 (fr) * 2005-03-07 2008-11-14 France Telecom Procede et dispositif de construction d'un dialogue vocal
US20070115920A1 (en) 2005-10-18 2007-05-24 Microsoft Corporation Dialog authoring and execution framework
US8046220B2 (en) * 2007-11-28 2011-10-25 Nuance Communications, Inc. Systems and methods to index and search voice sites
JP2009193532A (ja) * 2008-02-18 2009-08-27 Oki Electric Ind Co Ltd 対話管理装置、方法及びプログラム、並びに意識抽出システム
US8346560B2 (en) * 2009-05-01 2013-01-01 Alpine Electronics, Inc Dialog design apparatus and method
US8843616B2 (en) * 2010-09-10 2014-09-23 Intel Corporation Personal cloud computing with session migration
EP3008641A1 (en) * 2013-06-09 2016-04-20 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
EP3195307B1 (en) * 2014-09-14 2020-01-29 Google LLC Platform for creating customizable dialog system engines
US9466297B2 (en) * 2014-12-09 2016-10-11 Microsoft Technology Licensing, Llc Communication system
US20160202957A1 (en) 2015-01-13 2016-07-14 Microsoft Technology Licensing, Llc Reactive agent development environment
KR101655958B1 (ko) * 2015-03-31 2016-09-08 네이버 주식회사 개인 통합형 음성 정보를 제공하는 방법과 시스템 및 기록 매체
US20170193385A1 (en) * 2015-12-31 2017-07-06 Nuance Communications, Inc. Configurable Dialog System
US10474439B2 (en) * 2016-06-16 2019-11-12 Microsoft Technology Licensing, Llc Systems and methods for building conversational understanding systems
US10552543B2 (en) * 2017-05-10 2020-02-04 International Business Machines Corporation Conversational authoring of event processing applications
US10621984B2 (en) 2017-10-04 2020-04-14 Google Llc User-configured and customized interactive dialog application

Also Published As

Publication number Publication date
CN110998526A (zh) 2020-04-10
US20200258521A1 (en) 2020-08-13
WO2019070826A1 (en) 2019-04-11
JP7128847B2 (ja) 2022-08-31
US20190102379A1 (en) 2019-04-04
US11341968B2 (en) 2022-05-24
KR102345615B1 (ko) 2021-12-30
JP2020530606A (ja) 2020-10-22
KR20220002704A (ko) 2022-01-06
KR20200011483A (ko) 2020-02-03
US10621984B2 (en) 2020-04-14
US11676602B2 (en) 2023-06-13
EP3559805A1 (en) 2019-10-30
US20220277748A1 (en) 2022-09-01
CN110998526B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
KR102355988B1 (ko) 맥락을 인식하는 인간-대-컴퓨터 대화
KR102429407B1 (ko) 사용자 구성의 맞춤형 인터렉티브 대화 애플리케이션
KR102297394B1 (ko) 적절한 에이전트의 자동화된 어시스턴트 호출
CN111033492B (zh) 为自动化助手提供命令束建议
KR102439740B1 (ko) 제작자 제공 콘텐츠 기반 인터랙티브 대화 애플리케이션 테일링
US11113481B2 (en) Adapting automated assistants for use with multiple languages
KR20190097267A (ko) 서드 파티 에이전트를 사용하기 위한 호출 요청 생성 및 전송
US20220415305A1 (en) Speech generation using crosslingual phoneme mapping
KR20220028128A (ko) 화자 종속 음성 모델(들)을 사용한 화자 인식
CN118331651A (zh) 用户配置的且自定义的交互式对话应用
CN112334974B (zh) 使用跨语言音素映射的语音生成

Legal Events

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