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');
}
생성자
| Dialog |
새 DialogSet 인스턴스를 만듭니다. |
속성
| telemetry |
이 대화 상자 집합에 대한 원격 분석 클라이언트를 설정하고 모든 현재 대화 상자에 적용합니다. 이 대화 상자 집합에 대한 원격 분석 클라이언트를 설정하고 모든 현재 대화 상자에 적용합니다. 집합에 추가된 이후 대화 상자도 이 클라이언트를 상속합니다. |
메서드
| add<T>(T) | 집합에 새 대화 상자 또는 프롬프트를 추가합니다. |
| create |
집합의 대화 상자를 사용하는 데 사용할 수 있는 대화 상자 컨텍스트를 만듭니다. |
| find(string) | add()사용하여 이전에 집합에 추가된 대화 상자를 찾습니다. |
| get |
집합의 대화 상자를 가져옵니다. |
| get |
집합에 있는 모든 |
생성자 세부 정보
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
메서드 세부 정보
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()
getVersion()
집합에 있는 모든 Dialog.version 값의 32비트 해시를 반환합니다.
function getVersion(): string
반환
string
자식 대화 상자 버전이 변경될 때 변경되는 버전입니다.
설명
이 해시는 상태 스토리지에 유지되며 대화 집합의 변경 내용을 검색하는 데 사용됩니다.