다음을 통해 공유


DialogSet class

모두 서로 호출할 수 있는 대화 상자의 관련 집합입니다.

설명

대화 집합의 생성자는 집합에 대한 대화 상자 스택을 유지하는 데 사용할 상태 속성을 전달해야 합니다.

const { ConversationState, MemoryStorage, ActivityTypes } = require('botbuilder');
const { DialogSet, Dialog, DialogTurnStatus } = require('botbuilder-dialogs');

const convoState = new ConversationState(new MemoryStorage());
const dialogState = convoState.createProperty('dialogState');
const dialogs = new DialogSet(dialogState);

봇은 add() 메서드를 사용하여 대화 상자 또는 프롬프트를 집합에 추가할 수 있습니다.

class GreetingDialog extends Dialog {
    async beginDialog(dc, options) {
        await dc.context.sendActivity(`Hi! I'm a bot.`);
        return await dc.endDialog();
    }
}

dialogs.add(new GreetingDialog('greeting'));

집합 대화 상자와 상호 작용하려면 현재 TurnContextcreateContext() 호출할 수 있습니다. 그러면 집합 대화 상자를 시작하거나 계속 실행하는 데 사용할 수 있는 DialogContext 생성됩니다.

// Create DialogContext for the current turn
const dc = await dialogs.createContext(turnContext);

// Try to continue executing an active multi-turn dialog
const result = await dc.continueDialog();

// Send greeting if no other dialogs active
if (result.status == DialogTurnStatus.empty && dc.context.activity.type == ActivityTypes.Message) {
    await dc.beginDialog('greeting');
}

생성자

DialogSet(StatePropertyAccessor<DialogState>)

새 DialogSet 인스턴스를 만듭니다.

속성

telemetryClient

이 대화 상자 집합에 대한 원격 분석 클라이언트를 설정하고 모든 현재 대화 상자에 적용합니다. 이 대화 상자 집합에 대한 원격 분석 클라이언트를 설정하고 모든 현재 대화 상자에 적용합니다. 집합에 추가된 이후 대화 상자도 이 클라이언트를 상속합니다.

메서드

add<T>(T)

집합에 새 대화 상자 또는 프롬프트를 추가합니다.

createContext(TurnContext)

집합의 대화 상자를 사용하는 데 사용할 수 있는 대화 상자 컨텍스트를 만듭니다.

find(string)

add()사용하여 이전에 집합에 추가된 대화 상자를 찾습니다.

getDialogs()

집합의 대화 상자를 가져옵니다.

getVersion()

집합에 있는 모든 Dialog.version 값의 32비트 해시를 반환합니다.

생성자 세부 정보

DialogSet(StatePropertyAccessor<DialogState>)

새 DialogSet 인스턴스를 만듭니다.

new DialogSet(dialogState?: StatePropertyAccessor<DialogState>)

매개 변수

dialogState

StatePropertyAccessor<DialogState>

(선택 사항) 집합 대화 상자 스택을 유지하는 데 사용되는 상태 속성입니다.

설명

dialogState 속성이 전달되지 않으면 createContext() 호출하면 오류가 반환됩니다. 집합에 대한 DialogContext 수동으로 만들고 집합 대화 상자 스택을 유지하기 위해 사용자 고유의 상태 개체를 전달해야 합니다.

const dc = new DialogContext(dialogs, turnContext, state);

속성 세부 정보

telemetryClient

이 대화 상자 집합에 대한 원격 분석 클라이언트를 설정하고 모든 현재 대화 상자에 적용합니다. 이 대화 상자 집합에 대한 원격 분석 클라이언트를 설정하고 모든 현재 대화 상자에 적용합니다. 집합에 추가된 이후 대화 상자도 이 클라이언트를 상속합니다.

BotTelemetryClient telemetryClient

속성 값

BotTelemetryClient

BotTelemetryClient는 로깅에 사용할.

메서드 세부 정보

add<T>(T)

집합에 새 대화 상자 또는 프롬프트를 추가합니다.

function add<T>(dialog: T): this

매개 변수

dialog

T

추가할 대화 상자 또는 프롬프트입니다. 대화 집합에 telemetryClient가 있으면 각 대화 상자에 추가됩니다.

반환

this

작업이 완료된 후 설정된 대화 상자입니다.

설명

추가되는 Dialog.id 집합에 이미 있는 경우 대화 상자 ID는 고유한 접미사를 포함하도록 업데이트됩니다. 따라서 집합에 "중복"이라는 2개의 대화 상자를 추가하면 첫 번째 대화 상자에는 ID가 "중복"이고 두 번째 대화 상자는 ID가 "duplicate2"입니다.

createContext(TurnContext)

집합의 대화 상자를 사용하는 데 사용할 수 있는 대화 상자 컨텍스트를 만듭니다.

function createContext(context: TurnContext): Promise<DialogContext>

매개 변수

context

TurnContext

사용자와의 현재 대화 전환에 대한 컨텍스트입니다.

반환

Promise<DialogContext>

비동기 작업을 나타내는 프라미스입니다.

find(string)

add()사용하여 이전에 집합에 추가된 대화 상자를 찾습니다.

function find(dialogId: string): Dialog | undefined

매개 변수

dialogId

string

대화 상자 또는 조회 프롬프트의 ID입니다.

반환

Dialog | undefined

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

설명

이 예제에서는 "greeting"이라는 대화 상자를 찾습니다.

const dialog = dialogs.find('greeting');

getDialogs()

집합의 대화 상자를 가져옵니다.

function getDialogs(): Dialog[]

반환

Dialog[]

대화배열입니다.

getVersion()

집합에 있는 모든 Dialog.version 값의 32비트 해시를 반환합니다.

function getVersion(): string

반환

string

자식 대화 상자 버전이 변경될 때 변경되는 버전입니다.

설명

이 해시는 상태 스토리지에 유지되며 대화 집합의 변경 내용을 검색하는 데 사용됩니다.