OAuthPrompt class
Bot Frameworks シングル サインオン (SSO) サービスを使用してサインインするようにユーザーに求める新しいプロンプトを作成します。
- Extends
プロンプトはユーザーの現在のトークンの取得を試み、ユーザーがサインインしていない場合は、ユーザーがサインインするために押すことができるボタンを含む OAuthCard
をユーザーに送信します。 チャネルに応じて、ユーザーは次の 2 つの可能なサインイン フローのいずれかを通じて送信されます。
- 自動サインイン フロー。ユーザーがサインインし、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 インスタンスを作成します。
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
パラメーター
- dialogId
-
string
親 DialogSet
または ComponentDialog
内のダイアログの一意の ID。
- settings
- OAuthPromptSettings
プロンプトの構成に使用する設定。
- validator
-
PromptValidator<TokenResponse>
(省略可能) ユーザーがプロンプトに応答するたびに呼び出される検証コントロール。
ダイアログの一意の ID。 ダイアログの一意の ID を設定します。
string id
プロパティ値
string
ダイアログの ID。
注釈
これは、指定されていない場合は自動的に生成されます。
このダイアログのテレメトリ クライアントを取得します。 このダイアログのテレメトリ クライアントを設定します。
BotTelemetryClient telemetryClient
プロパティ値
BotTelemetryClient
ログ記録に使用する BotTelemetryClient。
既定のターン終了の結果を取得します。
static EndOfTurn: DialogTurnResult
プロパティ値
注釈
この結果は、ダイアログ (またはダイアログ内の論理ステップ) が現在のターンの処理を完了し、まだアクティブであり、より多くの入力を待機していることを示します。
プロンプト ダイアログがダイアログ スタックにプッシュされ、アクティブ化されるときに呼び出されます。
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
パラメーター
会話の現在のターンの DialogContext。
- options
- PromptOptions
随意。 PromptOptions
戻り値
Promise<DialogTurnResult>
非同期操作を表す Promise
。
注釈
タスクが成功した場合、結果は、プロンプトによってターンが処理された後もプロンプトがまだアクティブかどうかを示します。
プロンプト ダイアログがアクティブなダイアログであり、ユーザーが新しいアクティビティで応答したときに呼び出されます。
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
パラメーター
会話の現在のターンの DialogContext。
戻り値
Promise<DialogTurnResult>
非同期操作を表す Promise
。
注釈
タスクが成功した場合、結果は、ダイアログによってターンが処理された後もダイアログがアクティブかどうかを示します。 通常、プロンプトは、ユーザーの応答をプロンプトの有効な入力として受け入れるまで、ユーザーの応答を受け取り続けます。
現在のユーザーの格納されているトークンの取得を試みます。
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
パラメーター
- context
-
TurnContext
コンテキストは、検索対象のユーザーを参照します。
- code
-
string
(省略可能) ユーザーから受信したログイン コード。
戻り値
Promise<TokenResponse | undefined>
トークンの応答。
RecognizeTokenAsync 関数の共有実装。 これは、OAuthPrompt と OAuthInput の実装を統合するための内部使用を目的としています。 アプリケーション ロジックでは、これらのダイアログ クラスを使用する必要があります。
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
パラメーター
会話の現在のターンの DialogContext。
戻り値
Promise<PromptRecognizerResult<TokenResponse>>
結果に解決される Promise
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>
ユーザーをサービスからサインアウトします。
function signOutUser(context: TurnContext): Promise<void>
パラメーター
- context
-
TurnContext
サインアウトしているユーザーを参照するコンテキスト。
戻り値
Promise<void>
非同期操作を表す Promise。
注釈
この例では、プロンプトのインスタンスを作成し、ユーザーをサインアウトする方法を示します。
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
オブジェクトを構成するための Fluent メソッド。
function configure(config: Record<string, unknown>): this
パラメーター
- config
-
Record<string, unknown>
適用する構成設定。
戻り値
this
操作が完了した後の 構成可能な。
継承構成可能。構成
派生クラスでオーバーライドされると、ダイアログが終了する前にクリーンアップを実行します。
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
パラメーター
- _context
-
TurnContext
ターンのコンテキスト オブジェクト。
- _instance
- DialogInstance
このダイアログの現在の状態情報。
- _reason
- DialogReason
ダイアログが終了する理由。
戻り値
Promise<void>
注釈
終了する前にログ記録またはクリーンアップを実行する必要がある派生ダイアログは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドは無効です。
DialogContext は、現在のダイアログが終了するときにこのメソッドを呼び出します。
も参照
function getConverter(_property: string): Converter | ConverterFactory
パラメーター
- _property
-
string
条件付きセレクター構成のキー。
戻り値
セレクター構成のコンバーター。
再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。
function getVersion(): string
戻り値
string
ダイアログを再起動する方法でダイアログが変更された場合にのみ変更する一意の文字列。
注釈
既定では、id versionChanged
イベントが発生します。 このイベントがボットによって処理されない場合は、エラーがスローされ、ボットのエラー ハンドラー ロジックが実行されます。
空の文字列を返すと、コンポーネントのバージョン追跡がすべて無効になります。
現在のダイアログまたは現在のダイアログが開始したダイアログによって、DialogContext.emitEvent()
を使用してイベントが発生したときに呼び出されます。
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
パラメーター
会話の現在のターンのダイアログ コンテキスト。
発生しているイベント。
戻り値
Promise<boolean>
True の 場合は、イベントが現在のダイアログで処理され、バブルを停止する必要があります。
派生クラスでオーバーライドされると、ユーザーに入力を要求します。
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
パラメーター
- _context
-
TurnContext
ターンのコンテキスト オブジェクト。
- _instance
- DialogInstance
このダイアログの現在の状態情報。
戻り値
Promise<void>
注釈
検証ロジックと再プロンプト ロジックをサポートする派生ダイアログは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドは無効です。
DialogContext は、現在のダイアログでユーザーからの入力を要求する必要があるときに、このメソッドを呼び出します。 このメソッドは、プロンプト ダイアログ用に実装されます。
も参照
派生クラスでオーバーライドされると、スタック上のダイアログが完了した後にダイアログを再開します。
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
パラメーター
現在のダイアログ ターンのコンテキスト。
- reason
- DialogReason
ダイアログが再開される理由。 これは通常、DialogReason.endCalled
- result
-
any
随意。 終了したダイアログからの戻り値 (存在する場合)。
戻り値
Promise<DialogTurnResult>
ダイアログ ターンの結果を解決する Promise。
注釈
複数ターンの会話をサポートする派生ダイアログは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドはダイアログが完了したことを通知し、返します。
DialogContext は、ダイアログを再開するときにこのメソッドを呼び出します。 スタック上の前のダイアログで値が返された場合、その値は result
パラメーターにあります。
も参照