OAuthPrompt class
Bot Frameworks SSO(Single Sign On) 서비스를 사용하여 로그인하도록 사용자에게 요청하는 새 프롬프트를 만듭니다.
- Extends
설명
프롬프트는 사용자에게 현재 토큰을 검색하려고 시도하고 사용자가 로그인하지 않은 경우 로그인하기 위해 누를 수 있는 단추가 포함된 OAuthCard
보냅니다. 채널에 따라 사용자는 다음 두 가지 가능한 로그인 흐름 중 하나를 통해 전송됩니다.
- 사용자가 로그인하고 SSO 서비스가
event
또는invoke
작업을 사용하여 봇에 액세스 토큰을 전달하는 자동 로그인 흐름입니다. - 사용자가 로그인하면 SSO 서비스에서 봇에 ID를 확인하는 6자리 코드를 보내라는 메시지가 표시되는 "매직 코드" 흐름입니다. 이 코드는 표준
message
활동으로 전송됩니다.
두 흐름 모두 OAuthPrompt
자동으로 지원되며 주의해야 할 유일한 사항은 프롬프트가 대기 중인 event
및 invoke
활동을 차단하지 않는다는 것입니다.
메모
봇의 다른 상태로 액세스 토큰을 유지하지 않아야 합니다. Bot Frameworks SSO 서비스는 사용자 대신 토큰을 안전하게 저장합니다. 봇 상태에 저장하는 경우 만료되거나 턴 사이에 해지될 수 있습니다.
폭포 단계 내에서 프롬프트를 호출할 때 프롬프트 다음 단계 내에서 토큰을 사용한 다음, 함수가 끝날 때 토큰이 범위를 벗어나도록 해야 합니다.
프롬프트 사용
봇 DialogSet
사용하는 경우 DialogSet.add()
사용하여 프롬프트의 새 인스턴스를 명명된 대화 상자로 추가할 수 있습니다. 그런 다음 DialogContext.beginDialog()
또는 DialogContext.prompt()
사용하여 폭포 단계에서 프롬프트를 시작할 수 있습니다. 사용자는 필요에 따라 로그인하라는 메시지가 표시되고 해당 액세스 토큰은 다음 폭포 단계 호출자에게 인수로 전달됩니다.
const { ConversationState, MemoryStorage, OAuthLoginTimeoutMsValue } = require('botbuilder');
const { DialogSet, OAuthPrompt, WaterfallDialog } = require('botbuilder-dialogs');
const convoState = new ConversationState(new MemoryStorage());
const dialogState = convoState.createProperty('dialogState');
const dialogs = new DialogSet(dialogState);
dialogs.add(new OAuthPrompt('loginPrompt', {
connectionName: 'GitConnection',
title: 'Login To GitHub',
timeout: OAuthLoginTimeoutMsValue // User has 15 minutes to login
}));
dialogs.add(new WaterfallDialog('taskNeedingLogin', [
async (step) => {
return await step.beginDialog('loginPrompt');
},
async (step) => {
const token = step.result;
if (token) {
// ... continue with task needing access token ...
} else {
await step.context.sendActivity(`Sorry... We couldn't log you in. Try again later.`);
return await step.endDialog();
}
}
]));
생성자
OAuth |
새 OAuthPrompt 인스턴스를 만듭니다. |
속성
id | 대화 상자의 고유 ID입니다. 대화 상자의 고유 ID를 설정합니다. |
telemetry |
이 대화 상자의 원격 분석 클라이언트를 가져옵니다. 이 대화 상자의 원격 분석 클라이언트를 설정합니다. |
상속된 속성
End |
기본 턴 종료 결과를 가져옵니다. |
메서드
begin |
프롬프트 대화 상자가 대화 스택으로 푸시되고 활성화될 때 호출됩니다. |
continue |
프롬프트 대화 상자가 활성 대화이고 사용자가 새 활동으로 회신할 때 호출됩니다. |
get |
현재 사용자의 저장된 토큰을 검색하려고 시도합니다. |
recognize |
RecognizeTokenAsync 함수의 공유 구현입니다. 이는 OAuthPrompt 및 OAuthInput의 구현을 통합하기 위해 내부 용도로 사용됩니다. 애플리케이션 논리는 이러한 대화 상자 클래스를 사용해야 합니다. |
send |
OAuth 카드를 보냅니다. |
sign |
사용자를 서비스에서 로그아웃합니다. |
상속된 메서드
configure(Record<string, unknown>) | 개체를 구성하기 위한 Fluent 메서드입니다. |
end |
파생 클래스에서 재정의된 경우 종료되기 전에 대화 상자에 대한 정리를 수행합니다. |
get |
|
get |
다시 배포할 때 봇 변경 내용을 검색하는 데 사용되는 인코딩된 문자열입니다. |
on |
현재 대화 상자 또는 현재 대화 상자가 시작된 대화 상자에서 |
reprompt |
파생 클래스에서 재정의된 경우 입력을 위해 사용자를 다시 프롬프트합니다. |
resume |
파생 클래스에서 재정의된 경우 스택에서 위의 대화 상자가 완료된 후 대화 상자를 다시 시작합니다. |
생성자 세부 정보
OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)
새 OAuthPrompt 인스턴스를 만듭니다.
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
매개 변수
- dialogId
-
string
부모 DialogSet
또는 ComponentDialog
내 대화 상자의 고유 ID입니다.
- settings
- OAuthPromptSettings
프롬프트를 구성하는 데 사용되는 설정입니다.
- validator
-
PromptValidator<TokenResponse>
(선택 사항) 사용자가 프롬프트에 응답할 때마다 호출되는 유효성 검사기입니다.
속성 세부 정보
id
대화 상자의 고유 ID입니다. 대화 상자의 고유 ID를 설정합니다.
string id
속성 값
string
대화 상자의 ID입니다.
설명
지정하지 않으면 자동으로 생성됩니다.
telemetryClient
이 대화 상자의 원격 분석 클라이언트를 가져옵니다. 이 대화 상자의 원격 분석 클라이언트를 설정합니다.
BotTelemetryClient telemetryClient
속성 값
BotTelemetryClient
상속된 속성 세부 정보
EndOfTurn
기본 턴 종료 결과를 가져옵니다.
static EndOfTurn: DialogTurnResult
속성 값
설명
이 결과는 대화 상자(또는 대화 상자 내의 논리적 단계)가 현재 턴에 대한 처리를 완료했으며 여전히 활성 상태이며 더 많은 입력을 기다리고 있음을 나타냅니다.
메서드 세부 정보
beginDialog(DialogContext, PromptOptions)
프롬프트 대화 상자가 대화 스택으로 푸시되고 활성화될 때 호출됩니다.
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
매개 변수
- options
- PromptOptions
선택적. promptOptions
반환
Promise<DialogTurnResult>
비동기 작업을 나타내는 Promise
.
설명
작업이 성공하면 프롬프트가 턴을 처리한 후에도 프롬프트가 여전히 활성 상태인지 여부를 나타냅니다.
continueDialog(DialogContext)
프롬프트 대화 상자가 활성 대화이고 사용자가 새 활동으로 회신할 때 호출됩니다.
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
매개 변수
반환
Promise<DialogTurnResult>
비동기 작업을 나타내는 Promise
.
설명
작업이 성공하면 결과는 대화 상자에서 턴이 처리된 후에도 대화 상자가 여전히 활성 상태인지 여부를 나타냅니다. 프롬프트는 일반적으로 사용자의 회신을 프롬프트에 대한 유효한 입력으로 수락할 때까지 사용자의 회신을 계속 받습니다.
getUserToken(TurnContext, string)
현재 사용자의 저장된 토큰을 검색하려고 시도합니다.
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
매개 변수
- context
-
TurnContext
컨텍스트는 조회 중인 사용자를 참조합니다.
- code
-
string
(선택 사항) 사용자로부터 받은 로그인 코드입니다.
반환
Promise<TokenResponse | undefined>
토큰 응답입니다.
recognizeToken(DialogContext)
RecognizeTokenAsync 함수의 공유 구현입니다. 이는 OAuthPrompt 및 OAuthInput의 구현을 통합하기 위해 내부 용도로 사용됩니다. 애플리케이션 논리는 이러한 대화 상자 클래스를 사용해야 합니다.
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
매개 변수
반환
Promise<PromptRecognizerResult<TokenResponse>>
결과로 확인되는 약속
sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)
OAuth 카드를 보냅니다.
static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>
매개 변수
- settings
- OAuthPromptSettings
OAuth 설정입니다.
- turnContext
-
TurnContext
컨텍스트를 설정합니다.
- prompt
-
string | Partial<Activity>
메시지 활동.
반환
Promise<void>
signOutUser(TurnContext)
사용자를 서비스에서 로그아웃합니다.
function signOutUser(context: TurnContext): Promise<void>
매개 변수
- context
-
TurnContext
로그아웃 중인 사용자를 참조하는 컨텍스트입니다.
반환
Promise<void>
비동기 작업을 나타내는 프라미스입니다.
설명
이 예제에서는 프롬프트의 인스턴스를 만든 다음 사용자를 로그아웃하는 방법을 보여 줍니다.
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
상속된 메서드 세부 정보
configure(Record<string, unknown>)
개체를 구성하기 위한 Fluent 메서드입니다.
function configure(config: Record<string, unknown>): this
매개 변수
- config
-
Record<string, unknown>
적용할 구성 설정입니다.
반환
this
작업이 완료된 후 구성 가능한.
endDialog(TurnContext, DialogInstance, DialogReason)
파생 클래스에서 재정의된 경우 종료되기 전에 대화 상자에 대한 정리를 수행합니다.
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
매개 변수
- _context
-
TurnContext
순서에 대한 컨텍스트 개체입니다.
- _instance
- DialogInstance
이 대화 상자의 현재 상태 정보입니다.
- _reason
- DialogReason
대화 상자가 끝나는 이유입니다.
반환
Promise<void>
설명
종료하기 전에 로깅 또는 정리를 수행해야 하는 파생 대화 상자는 이 메서드를 재정의해야 합니다. 기본적으로 이 메서드는 효과가 없습니다.
DialogContext 현재 대화가 종료되면 이 메서드를 호출합니다.
참조
- dialogContext.cancelAllDialogs
- DialogContext.endDialog
- dialogContext.replaceDialog
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
매개 변수
- _property
-
string
조건부 선택기 구성의 키입니다.
반환
선택기 구성의 변환기입니다.
getVersion()
다시 배포할 때 봇 변경 내용을 검색하는 데 사용되는 인코딩된 문자열입니다.
function getVersion(): string
반환
string
대화 상자를 다시 시작해야 하는 방식으로 대화 상자가 변경된 경우에만 변경해야 하는 고유 문자열입니다.
설명
기본적으로 id versionChanged
이벤트가 발생합니다. 이 이벤트가 봇에서 처리되지 않으면 오류가 throw되어 봇 오류 처리기 논리가 실행됩니다.
빈 문자열을 반환하면 구성 요소에 대한 버전 추적이 모두 함께 사용하지 않도록 설정됩니다.
onDialogEvent(DialogContext, DialogEvent)
현재 대화 상자 또는 현재 대화 상자가 시작된 대화 상자에서 DialogContext.emitEvent()
사용하여 이벤트가 발생할 때 호출됩니다.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
매개 변수
현재 대화 전환에 대한 대화 컨텍스트입니다.
발생 중인 이벤트입니다.
반환
Promise<boolean>
True이면 현재 대화 상자에서 이벤트를 처리하고 버블링을 중지해야 합니다.
repromptDialog(TurnContext, DialogInstance)
파생 클래스에서 재정의된 경우 입력을 위해 사용자를 다시 프롬프트합니다.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
매개 변수
- _context
-
TurnContext
순서에 대한 컨텍스트 개체입니다.
- _instance
- DialogInstance
이 대화 상자의 현재 상태 정보입니다.
반환
Promise<void>
설명
유효성 검사 및 다시 프롬프트 논리를 지원하는 파생 대화 상자는 이 메서드를 재정의해야 합니다. 기본적으로 이 메서드는 효과가 없습니다.
DialogContext 현재 대화 상자가 사용자의 입력을 다시 요청해야 하는 경우 이 메서드를 호출합니다. 이 메서드는 프롬프트 대화 상자에 대해 구현됩니다.
참조
resumeDialog(DialogContext, DialogReason, any)
파생 클래스에서 재정의된 경우 스택에서 위의 대화 상자가 완료된 후 대화 상자를 다시 시작합니다.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
매개 변수
현재 대화 상자 턴의 컨텍스트입니다.
- reason
- DialogReason
대화 상자가 재개되는 이유입니다. 일반적으로 DialogReason.endCalled
- result
-
any
선택적. 종료된 대화 상자의 반환 값(있는 경우)입니다.
반환
Promise<DialogTurnResult>
대화 상자 턴 결과로 해결되는 약속입니다.
설명
다중 턴 대화를 지원하는 파생 대화 상자는 이 메서드를 재정의해야 합니다. 기본적으로 이 메서드는 대화가 완료되었음을 알리고 반환합니다.
DialogContext 대화 상자를 다시 시작할 때 이 메서드를 호출합니다. 스택의 이전 대화 상자에서 값을 반환한 경우 해당 값은 result
매개 변수에 있습니다.
참조