OAuthPrompt class

Bot Frameworks シングル サインオン (SSO) サービスを使用してサインインするようにユーザーに求める新しいプロンプトを作成します。

Extends

注釈

プロンプトはユーザーの現在のトークンの取得を試み、ユーザーがサインインしていない場合は、サインインするために押すことができるボタンを含む を送信 OAuthCard します。 チャネルに応じて、ユーザーは次の 2 つの可能なサインイン フローのいずれかを介して送信されます。

  • 自動サインイン フロー。ユーザーがサインインし、SSO サービスによってボットが転送され、ユーザーは または invoke アクティビティを使用してトークンにeventアクセスします。
  • "マジック コード" フローでは、ユーザーがサインインすると、ユーザーの ID を確認する 6 桁のコードをボットに送信するように SSO サービスから求められます。 このコードは標準 message アクティビティとして送信されます。

どちらのフローも によってOAuthPrompt自動的にサポートされます。注意する必要がある唯一の点は、プロンプトが待機している可能性がある アクティビティと invoke アクティビティをブロックeventしてはいけないことです。

Note

他の状態のボットでアクセス トークンを保持しないようにする必要があります。 Bot Frameworks SSO サービスは、ユーザーに代わってトークンを安全に格納します。 ボットの状態に格納すると、有効期限が切れるか、ターンの間に取り消される可能性があります。

ウォーターフォール ステップ内からプロンプトを呼び出す場合は、プロンプトの次の手順でトークンを使用し、関数の最後にトークンがスコープ外に出されるようにする必要があります。

プロンプトの使用

ボット DialogSet で使用する場合は、 を使用して DialogSet.add()、プロンプトの新しいインスタンスを名前付きダイアログとして追加するだけです。 その後、 または DialogContext.prompt()を使用してウォーターフォール ステップからプロンプトをDialogContext.beginDialog()開始できます。 ユーザーは必要に応じてサインインするように求められます。アクセス トークンは、呼び出し元の次のウォーターフォール ステップに引数として渡されます。

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();
         }
     }
]));

コンストラクター

OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)

新しい OAuthPrompt インスタンスを作成します。

プロパティ

id

ダイアログの一意の ID。 ダイアログの一意の ID を設定します。

telemetryClient

このダイアログのテレメトリ クライアントを取得します。 このダイアログのテレメトリ クライアントを設定します。

継承されたプロパティ

EndOfTurn

既定のターン終了の結果を取得します。

メソッド

beginDialog(DialogContext, PromptOptions)

ダイアログ スタックにプロンプト ダイアログがプッシュされ、アクティブ化されるときに呼び出されます。

continueDialog(DialogContext)

プロンプト ダイアログがアクティブなダイアログであり、ユーザーが新しいアクティビティで応答したときに呼び出されます。

getUserToken(TurnContext, string)

現在のユーザーの格納されているトークンの取得を試みます。

recognizeToken(DialogContext)

RecognizeTokenAsync 関数の共有実装。 これは、OAuthPrompt と OAuthInput の実装を統合するための内部使用を目的としています。 アプリケーション ロジックでは、これらのダイアログ クラスを使用する必要があります。

sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)

OAuth カードを送信します。

signOutUser(TurnContext)

ユーザーをサービスからサインアウトします。

継承されたメソッド

configure(Record<string, unknown>)

オブジェクトを構成するための Fluent メソッド。

endDialog(TurnContext, DialogInstance, DialogReason)

派生クラスでオーバーライドされると、ダイアログが終了する前にクリーンアップが実行されます。

getConverter(string)
getVersion()

再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。

onDialogEvent(DialogContext, DialogEvent)

現在のダイアログまたは現在のダイアログが開始したダイアログによって、 を使用して DialogContext.emitEvent()イベントが発生したときに呼び出されます。

repromptDialog(TurnContext, DialogInstance)

派生クラスでオーバーライドされると、ユーザーに入力を要求します。

resumeDialog(DialogContext, DialogReason, any)

派生クラスでオーバーライドされると、スタック上のダイアログが完了した後でダイアログを再開します。

コンストラクターの詳細

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

ログ記録に使用する BotTelemetryClient

継承されたプロパティの詳細

EndOfTurn

既定のターン終了の結果を取得します。

static EndOfTurn: DialogTurnResult

プロパティ値

注釈

この結果は、ダイアログ (またはダイアログ内の論理ステップ) が現在のターンの処理を完了し、まだアクティブであり、さらに入力を待機していることを示します。

Dialog.EndOfTurnから継承

メソッドの詳細

beginDialog(DialogContext, PromptOptions)

ダイアログ スタックにプロンプト ダイアログがプッシュされ、アクティブ化されるときに呼び出されます。

function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>

パラメーター

dc
DialogContext

会話の現在のターンの DialogContext

options
PromptOptions

省略可能。 PromptOptions。起動中のプロンプトに渡す追加情報。

戻り値

Promise<DialogTurnResult>

非同期操作を表す Promise

注釈

タスクが成功した場合、プロンプトによってターンが処理された後もプロンプトがまだアクティブであるかどうかを示します。

continueDialog(DialogContext)

プロンプト ダイアログがアクティブなダイアログであり、ユーザーが新しいアクティビティで応答したときに呼び出されます。

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

パラメーター

dc
DialogContext

会話の現在のターンの DialogContext

戻り値

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>>

パラメーター

dc
DialogContext

会話の現在のターンの DialogContext

戻り値

Promise<PromptRecognizerResult<TokenResponse>>

結果に解決される Promise

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>

非同期操作を表す promise。

注釈

この例では、プロンプトのインスタンスを作成し、ユーザーをサインアウトする方法を示します。

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

操作の完了後に 構成可能

継承元構成可能.configure

endDialog(TurnContext, DialogInstance, DialogReason)

派生クラスでオーバーライドされると、ダイアログが終了する前にクリーンアップが実行されます。

function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>

パラメーター

_context

TurnContext

ターンのコンテキスト オブジェクト。

_instance
DialogInstance

このダイアログの現在の状態情報。

_reason
DialogReason

ダイアログが終了する理由。

戻り値

Promise<void>

注釈

終了する前にログ記録またはクリーンアップを実行する必要がある派生ダイアログは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドは無効です。

DialogContext は、現在のダイアログが終了するときにこのメソッドを呼び出します。

参照

Dialog.endDialogから継承

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

パラメーター

_property

string

条件付きセレクター構成のキー。

戻り値

セレクター構成のコンバーター。

Configure.getConverterから継承

getVersion()

再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。

function getVersion(): string

戻り値

string

ダイアログを再起動する方法でダイアログが変更された場合にのみ変更する必要がある一意の文字列。

注釈

既定ではダイアログ ID が返されますが、より正確な変更検出ロジックを提供するためにオーバーライドできます。 バージョンが変更されたスタック上のダイアログでは、 versionChanged イベントが発生します。 このイベントがボットによって処理されない場合は、エラーがスローされ、ボットのエラー ハンドラー ロジックが実行されます。

空の文字列を返すと、コンポーネントのバージョン追跡がすべて無効になります。

Dialog.getVersionから継承

onDialogEvent(DialogContext, DialogEvent)

現在のダイアログまたは現在のダイアログが開始したダイアログによって、 を使用して DialogContext.emitEvent()イベントが発生したときに呼び出されます。

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

パラメーター

dc
DialogContext

会話の現在のターンのダイアログ コンテキスト。

e
DialogEvent

発生するイベント。

戻り値

Promise<boolean>

現在のダイアログでイベントが処理され、バブリングが停止する場合は True です。

Dialog.onDialogEventから継承

repromptDialog(TurnContext, DialogInstance)

派生クラスでオーバーライドされると、ユーザーに入力を要求します。

function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>

パラメーター

_context

TurnContext

ターンのコンテキスト オブジェクト。

_instance
DialogInstance

このダイアログの現在の状態情報。

戻り値

Promise<void>

注釈

検証と再プロンプト ロジックをサポートする派生ダイアログは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドは無効です。

DialogContext は、現在のダイアログでユーザーからの入力を要求する必要がある場合に、このメソッドを呼び出します。 このメソッドは、プロンプト ダイアログ用に実装されます。

参照

Dialog.repromptDialogから継承

resumeDialog(DialogContext, DialogReason, any)

派生クラスでオーバーライドされると、スタック上のダイアログが完了した後でダイアログを再開します。

function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>

パラメーター

dc
DialogContext

現在のダイアログ ターンのコンテキスト。

reason
DialogReason

ダイアログが再開される理由。 これは通常、DialogReason.endCalled になります

result

any

省略可能。 終了したダイアログからの戻り値 (存在する場合)。

戻り値

Promise<DialogTurnResult>

ダイアログ ターンの結果に対する Promise 解決。

注釈

複数ターンの会話をサポートする派生ダイアログでは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドはダイアログが完了したことを通知し、 を返します。

DialogContext は、ダイアログを再開するときにこのメソッドを呼び出します。 スタック上の前のダイアログで値が返された場合、その値は パラメーター内 result にあります。

ダイアログを開始するには、DialogContext.beginDialog または DialogContext.prompt を使用します。ただし、このダイアログは必ずしも子ダイアログを開始したダイアログではありません。 このダイアログが完了したことをダイアログ コンテキストに通知するには、このメソッドを終了する前に DialogContext.endDialog を待機します。

参照

Dialog.resumeDialogから継承