OAuthPrompt Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Creates a new prompt that asks the user to sign in using the Bot Frameworks Single Sign On (SSO) service.
public class OAuthPrompt : Microsoft.Bot.Builder.Dialogs.Dialog
type OAuthPrompt = class
inherit Dialog
Public Class OAuthPrompt
Inherits Dialog
- Inheritance
Remarks
The prompt will attempt to retrieve the users current token and if the user isn't signed in, it will send them an `OAuthCard` containing a button they can press to signin. Depending on the channel, the user will be sent through one of two possible signin flows:
- The automatic signin flow where once the user signs in and the SSO service will forward the bot the users access token using either an `event` or `invoke` activity. - The "magic code" flow where once the user signs in they will be prompted by the SSO service to send the bot a six digit code confirming their identity. This code will be sent as a standard `message` activity.
Both flows are automatically supported by the `OAuthPrompt` and the only thing you need to be careful of is that you don't block the `event` and `invoke` activities that the prompt might be waiting on.
**Note**: You should avoid persisting the access token with your bots other state. The Bot Frameworks SSO service will securely store the token on your behalf. If you store it in your bots state it could expire or be revoked in between turns.When calling the prompt from within a waterfall step you should use the token within the step following the prompt and then let the token go out of scope at the end of your function.
### Prompt Usage
When used with your bot's DialogSet you can simply add a new instance of the prompt as a named dialog using Add(Dialog). You can then start the prompt from a waterfall step using either BeginDialogAsync(String, Object, CancellationToken) or PromptAsync(String, PromptOptions, CancellationToken). The user will be prompted to signin as needed and their access token will be passed as an argument to the callers next waterfall step.
Constructors
OAuthPrompt(String, OAuthPromptSettings, PromptValidator<TokenResponse>) |
Initializes a new instance of the OAuthPrompt class. |
Properties
Id |
Gets or sets id for the dialog. (Inherited from Dialog) |
Source |
Gets the information of the cref="SourceRange"/>. (Inherited from Dialog) |
TelemetryClient |
Gets or sets the IBotTelemetryClient to use for logging. (Inherited from Dialog) |
Methods
BeginDialogAsync(DialogContext, Object, CancellationToken) |
Called when a prompt dialog is pushed onto the dialog stack and is being activated. |
ContinueDialogAsync(DialogContext, CancellationToken) |
Called when a prompt dialog is the active dialog and the user replied with a new activity. |
EndDialogAsync(ITurnContext, DialogInstance, DialogReason, CancellationToken) |
Called when the dialog is ending. (Inherited from Dialog) |
GetUserTokenAsync(ITurnContext, CancellationToken) |
Attempts to get the user's token. |
GetVersion() |
Gets a unique string which represents the version of this dialog. If the version changes between turns the dialog system will emit a DialogChanged event. (Inherited from Dialog) |
OnComputeId() |
Builds the compute Id for the dialog. (Inherited from Dialog) |
OnDialogEventAsync(DialogContext, DialogEvent, CancellationToken) |
Called when an event has been raised, using |
OnPostBubbleEventAsync(DialogContext, DialogEvent, CancellationToken) |
Called after an event was bubbled to all parents and wasn't handled. (Inherited from Dialog) |
OnPreBubbleEventAsync(DialogContext, DialogEvent, CancellationToken) |
Called before an event is bubbled to its parent. (Inherited from Dialog) |
RecognizeTokenAsync(OAuthPromptSettings, DialogContext, CancellationToken) |
Shared implementation of the RecognizeTokenAsync function. This is intended for internal use, to consolidate the implementation of the OAuthPrompt and OAuthInput. Application logic should use those dialog classes. |
RegisterSourceLocation(String, Int32) |
Registers a cref="SourceRange"/> in the provided location. (Inherited from Dialog) |
RepromptDialogAsync(ITurnContext, DialogInstance, CancellationToken) |
Called when the dialog should re-prompt the user for input. (Inherited from Dialog) |
ResumeDialogAsync(DialogContext, DialogReason, Object, CancellationToken) |
Called when a child dialog completed this turn, returning control to this dialog. (Inherited from Dialog) |
SendOAuthCardAsync(OAuthPromptSettings, ITurnContext, IMessageActivity, CancellationToken) |
Shared implementation of the SendOAuthCardAsync function. This is intended for internal use, to consolidate the implementation of the OAuthPrompt and OAuthInput. Application logic should use those dialog classes. |
SetCallerInfoInDialogState(IDictionary<String,Object>, ITurnContext) |
Shared implementation of the SetCallerInfoInDialogState function. This is intended for internal use, to consolidate the implementation of the OAuthPrompt and OAuthInput. Application logic should use those dialog classes. |
SignOutUserAsync(ITurnContext, CancellationToken) |
Signs out the user. |
Extension Methods
RunAsync(Dialog, ITurnContext, IStatePropertyAccessor<DialogState>, CancellationToken) |
Creates a dialog stack and starts a dialog, pushing it onto the stack. |