다음을 통해 공유


ComponentDialog class

다른 자식 대화 상자가 포함된 대화 상자의 기본 클래스입니다.

Extends

설명

구성 요소 대화 상자를 사용하면 봇의 논리를 다른 ComponentDialog 또는 DialogSet대화 상자로 추가할 수 있는 구성 요소로 분리할 수 있습니다. 구성 요소는 노드 패키지의 일부로 내보내고 다른 봇 내에서 사용할 수도 있습니다.

새 구성 요소를 정의하려면 ComponentDialog에서 클래스를 파생시키고 클래스 생성자 내에 자식 대화 상자를 추가합니다.

const { ComponentDialog, WaterfallDialog, TextPrompt, NumberPrompt } = require('botbuilder-dialogs');

class FillProfileDialog extends ComponentDialog {
    constructor(dialogId) {
        super(dialogId);

        // Add control flow dialogs
        this.addDialog(new WaterfallDialog('start', [
            async (step) => {
                // Ask user their name
                return await step.prompt('namePrompt', `What's your name?`);
            },
            async (step) => {
                // Remember the users answer
                step.values['name'] = step.result;

                // Ask user their age.
                return await step.prompt('agePrompt', `Hi ${step.values['name']}. How old are you?`);
            },
            async (step) => {
                // Remember the users answer
                step.values['age'] = step.result;

                // End the component and return the completed profile.
                return await step.endDialog(step.values);
            }
        ]));

        // Add prompts
        this.addDialog(new TextPrompt('namePrompt'));
        this.addDialog(new NumberPrompt('agePrompt'))
    }
}
module.exports.FillProfileDialog = FillProfileDialog;

그런 다음 구성 요소의 새 인스턴스를 다른 DialogSet 추가하거나 다음을 ComponentDialog수 있습니다.

const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));

생성자

ComponentDialog(string)

Dialog 클래스의 새 인스턴스를 만듭니다.

속성

id

대화 상자의 고유 ID입니다. 대화 상자의 고유 ID를 설정합니다.

telemetryClient

원격 분석 클라이언트를 설정하고 모든 자식 대화 상자에도 적용합니다. 구성 요소에 추가된 이후 대화 상자도 이 클라이언트를 상속합니다. 현재 원격 분석 클라이언트를 가져옵니다.

상속된 속성

dialogs

컨테이너 대화 상자 집합입니다.

EndOfTurn

기본 턴 종료 결과를 가져옵니다.

메서드

addDialog(Dialog)

구성 요소 내부 DialogSet자식 대화 또는 프롬프트를 추가합니다.

beginDialog(DialogContext, O)

대화 상자가 시작되고 부모의 대화 상자 스택으로 푸시될 때 호출됩니다. 기본적으로 InitialDialogId에 정의된 대로 구성 요소 대화 상자의 Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) 메서드를 호출합니다. 인터럽트 논리를 구현하려면 파생 클래스에서 이 메서드를 재정의합니다.

continueDialog(DialogContext)

대화 상자가 계속되면 호출됩니다. 여기서 대화는 활성 대화이고 사용자는 새 활동회신합니다. 이 메서드가 재정의되지 않으면 사용자가 응답할 때 대화 상자가 자동으로 종료됩니다.

createChildContext(DialogContext)

내부 대화 컨텍스트를 만듭니다.

endDialog(TurnContext, DialogInstance, DialogReason)

대화 종료되면 호출됩니다.

repromptDialog(TurnContext, DialogInstance)

대화 상자가 사용자에게 입력하라는 메시지를 다시 표시해야 할 때 호출됩니다.

resumeDialog(DialogContext, DialogReason, any)

부모 대화 스택의 자식 대화 상자가 이 순서를 완료하고 컨트롤을 이 대화 상자 구성 요소로 반환할 때 호출됩니다.

상속된 메서드

configure(Record<string, unknown>)

개체를 구성하기 위한 Fluent 메서드입니다.

findDialog(string)

이전에 컨테이너에 추가된 자식 대화 상자를 찾습니다.

getConverter(string)
getVersion()

다시 배포할 때 봇 변경 내용을 검색하는 데 사용되는 인코딩된 문자열입니다.

onDialogEvent(DialogContext, DialogEvent)

현재 대화 상자 또는 현재 대화 상자가 시작된 대화 상자에서 DialogContext.emitEvent()사용하여 이벤트가 발생할 때 호출됩니다.

생성자 세부 정보

ComponentDialog(string)

Dialog 클래스의 새 인스턴스를 만듭니다.

new ComponentDialog(dialogId?: string)

매개 변수

dialogId

string

선택적. 대화 상자의 고유 ID입니다.

속성 세부 정보

id

대화 상자의 고유 ID입니다. 대화 상자의 고유 ID를 설정합니다.

string id

속성 값

string

대화 상자의 ID입니다.

설명

지정하지 않으면 자동으로 생성됩니다.

telemetryClient

원격 분석 클라이언트를 설정하고 모든 자식 대화 상자에도 적용합니다. 구성 요소에 추가된 이후 대화 상자도 이 클라이언트를 상속합니다. 현재 원격 분석 클라이언트를 가져옵니다.

BotTelemetryClient telemetryClient

속성 값

BotTelemetryClient

BotTelemetryClient는 로깅에 사용할.

상속된 속성 세부 정보

dialogs

컨테이너 대화 상자 집합입니다.

dialogs: DialogSet

속성 값

DialogContainer.dialogs 상속된

EndOfTurn

기본 턴 종료 결과를 가져옵니다.

static EndOfTurn: DialogTurnResult

속성 값

설명

이 결과는 대화 상자(또는 대화 상자 내의 논리적 단계)가 현재 턴에 대한 처리를 완료했으며 여전히 활성 상태이며 더 많은 입력을 기다리고 있음을 나타냅니다.

dialog.EndOfTurn 상속된

메서드 세부 정보

addDialog(Dialog)

구성 요소 내부 DialogSet자식 대화 또는 프롬프트를 추가합니다.

function addDialog(dialog: Dialog): this

매개 변수

dialog
Dialog

자식 대화 상자 추가하라는 메시지가 표시됩니다.

반환

this

작업이 완료된 후 ComponentDialog.

설명

구성 요소에 추가된 첫 번째 자식의 Dialog.id initialDialogId 속성에 할당됩니다.

beginDialog(DialogContext, O)

대화 상자가 시작되고 부모의 대화 상자 스택으로 푸시될 때 호출됩니다. 기본적으로 InitialDialogId에 정의된 대로 구성 요소 대화 상자의 Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) 메서드를 호출합니다. 인터럽트 논리를 구현하려면 파생 클래스에서 이 메서드를 재정의합니다.

function beginDialog(outerDC: DialogContext, options?: O): Promise<DialogTurnResult>

매개 변수

outerDC
DialogContext

현재 대화 전환에 대한 부모 DialogContext.

options

O

대화 상자에 전달할 선택적 초기 정보입니다.

반환

Promise<DialogTurnResult>

비동기 작업을 나타내는 Promise입니다.

설명

작업이 성공하면 결과는 대화 상자에서 턴이 처리된 후에도 대화 상자가 여전히 활성 상태인지 여부를 나타냅니다.

continueDialog(DialogContext)

대화 상자가 계속되면 호출됩니다. 여기서 대화는 활성 대화이고 사용자는 새 활동회신합니다. 이 메서드가 재정의되지 않으면 사용자가 응답할 때 대화 상자가 자동으로 종료됩니다.

function continueDialog(outerDC: DialogContext): Promise<DialogTurnResult>

매개 변수

outerDC
DialogContext

현재 대화 전환에 대한 부모 DialogContext.

반환

Promise<DialogTurnResult>

비동기 작업을 나타내는 Promise입니다.

설명

작업이 성공하면 결과는 대화 상자에서 턴이 처리된 후에도 대화 상자가 여전히 활성 상태인지 여부를 나타냅니다. 결과에는 반환 값도 포함될 수 있습니다.

createChildContext(DialogContext)

내부 대화 컨텍스트를 만듭니다.

function createChildContext(outerDC: DialogContext): DialogContext

매개 변수

outerDC
DialogContext

외부 대화 상자 컨텍스트

반환

만든 대화 상자 컨텍스트입니다.

endDialog(TurnContext, DialogInstance, DialogReason)

대화 종료되면 호출됩니다.

function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>

매개 변수

context

TurnContext

이 턴에 대한 TurnContext 개체입니다.

instance
DialogInstance

이 구성 요소의 인스턴스와 연결된 상태 정보 대화 상자는 부모 대화 스택에.

reason
DialogReason

대화 종료된 이유입니다.

반환

Promise<void>

비동기 작업을 나타내는 Promise입니다.

설명

부모 대화 상자의 컨텍스트에서 이 메서드가 호출되면 구성 요소 Dialog 종료하기 전에 내부 대화 스택의 모든 대화 상자가 취소됩니다.

repromptDialog(TurnContext, DialogInstance)

대화 상자가 사용자에게 입력하라는 메시지를 다시 표시해야 할 때 호출됩니다.

function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>

매개 변수

context

TurnContext

이 턴에 대한 TurnContext 개체입니다.

instance
DialogInstance

이 대화 상자의 상태 정보입니다.

반환

Promise<void>

비동기 작업을 나타내는 Promise입니다.

resumeDialog(DialogContext, DialogReason, any)

부모 대화 스택의 자식 대화 상자가 이 순서를 완료하고 컨트롤을 이 대화 상자 구성 요소로 반환할 때 호출됩니다.

function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>

매개 변수

outerDC
DialogContext

현재 대화 전환에 대한 DialogContext.

_reason
DialogReason

대화 상자가 다시 시작된 이유입니다.

_result

any

선택 사항으로, 호출된 대화 상자에서 반환된 값입니다. 반환되는 값의 형식은 자식 대화 상자에 따라 달라집니다.

반환

Promise<DialogTurnResult>

비동기 작업을 나타내는 Promise입니다.

설명

작업이 성공하면 이 대화 상자가 처리된 후에도 이 대화 상자가 여전히 활성 상태인지 여부를 나타냅니다. 일반적으로 자식 대화 상자는 부모의 컨텍스트에서 beginDialog(DialogContext, 개체)에 대한 호출로 시작되었습니다. 그러나 DialogContext.replaceDialog(string, object) 메서드가 호출되면 논리 자식 대화 상자가 원래 대화와 다를 수 있습니다. 이 메서드가 재정의되지 경우 사용자가 회신할 때 대화 상자에서 RepromptDialog(ITurnContext, DialogInstance)를 자동으로 호출합니다.

상속된 메서드 세부 정보

configure(Record<string, unknown>)

개체를 구성하기 위한 Fluent 메서드입니다.

function configure(config: Record<string, unknown>): this

매개 변수

config

Record<string, unknown>

적용할 구성 설정입니다.

반환

this

작업이 완료된 후 구성 가능한.

Configurable.configure 상속된

findDialog(string)

이전에 컨테이너에 추가된 자식 대화 상자를 찾습니다.

function findDialog(dialogId: string): Dialog | undefined

매개 변수

dialogId

string

조회할 대화 상자의 ID입니다.

반환

Dialog | undefined

대화 상자(있는 경우)입니다. 그렇지 않으면 null입니다.

DialogContainer.findDialog 상속된

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

매개 변수

_property

string

조건부 선택기 구성의 키입니다.

반환

선택기 구성의 변환기입니다.

Configurable.getConverter 상속된

getVersion()

다시 배포할 때 봇 변경 내용을 검색하는 데 사용되는 인코딩된 문자열입니다.

function getVersion(): string

반환

string

대화 상자를 다시 시작해야 하는 방식으로 대화 상자가 변경된 경우에만 변경해야 하는 고유 문자열입니다.

설명

기본적으로 id 대화 상자를 반환하지만 보다 정확한 변경 검색 논리를 제공하도록 재정의할 수 있습니다. 스택의 버전이 변경된 대화 상자는 versionChanged 이벤트가 발생합니다. 이 이벤트가 봇에서 처리되지 않으면 오류가 throw되어 봇 오류 처리기 논리가 실행됩니다.

빈 문자열을 반환하면 구성 요소에 대한 버전 추적이 모두 함께 사용하지 않도록 설정됩니다.

Dialog.getVersion 상속된

onDialogEvent(DialogContext, DialogEvent)

현재 대화 상자 또는 현재 대화 상자가 시작된 대화 상자에서 DialogContext.emitEvent()사용하여 이벤트가 발생할 때 호출됩니다.

function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>

매개 변수

dc
DialogContext

현재 대화 전환에 대한 대화 컨텍스트입니다.

e
DialogEvent

발생 중인 이벤트입니다.

반환

Promise<boolean>

True이면 현재 대화 상자에서 이벤트를 처리하고 버블링을 중지해야 합니다.

DialogContainer.onDialogEvent 상속된