OAuthPrompt class
Erstellt eine neue Eingabeaufforderung, die den Benutzer auffordert, sich mit dem Bot Frameworks Single Sign On (SSO)-Dienst anzumelden.
- Extends
Hinweise
Die Eingabeaufforderung versucht, das aktuelle Token der Benutzer abzurufen, und wenn der Benutzer nicht angemeldet ist, sendet er ihnen eine OAuthCard
mit einer Schaltfläche, die sie drücken können, um sich anzumelden. Je nach Kanal wird der Benutzer über einen von zwei möglichen Anmeldeflüssen gesendet:
- Der automatische Anmeldefluss, bei dem der Benutzer sich anmeldet und der SSO-Dienst den Bot über ein
event
- oderinvoke
-Aktivität an den Bot weiterleite. - Der "Magische Code"-Fluss, in dem, wo sich der Benutzer anmeldet, vom SSO-Dienst aufgefordert wird, dem Bot einen sechsstelligen Code zu senden, der seine Identität bestätigt. Dieser Code wird als Standard-
message
Aktivität gesendet.
Beide Flüsse werden automatisch vom OAuthPrompt
unterstützt, und das einzige, was Sie beachten müssen, besteht darin, dass Sie die event
und invoke
Aktivitäten, auf die die Eingabeaufforderung wartet, nicht blockieren.
Anmerkung
Sie sollten verhindern, dass das Zugriffstoken mit Ihren Bots in einem anderen Zustand beibehalten wird. Der Bot Frameworks-SSO-Dienst speichert das Token sicher in Ihrem Auftrag. Wenn Sie sie in Ihrem Bots speichern, kann sie ablaufen oder zwischeneinander widerrufen werden.
Wenn Sie die Eingabeaufforderung innerhalb eines Wasserfallschritts aufrufen, sollten Sie das Token innerhalb des Schritts verwenden, der auf die Eingabeaufforderung folgt, und lassen Sie das Token dann am Ende der Funktion außer Reichweite gehen.
Eingabeaufforderungsverwendung
Bei Verwendung mit Ihren Bots DialogSet
können Sie einfach eine neue Instanz der Eingabeaufforderung als benanntes Dialogfeld mithilfe von DialogSet.add()
hinzufügen. Anschließend können Sie die Eingabeaufforderung aus einem Wasserfallschritt mit DialogContext.beginDialog()
oder DialogContext.prompt()
starten. Der Benutzer wird aufgefordert, sich nach Bedarf anzumelden, und sein Zugriffstoken wird als Argument an die Aufrufer als nächster Wasserfallschritt übergeben:
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();
}
}
]));
Konstruktoren
OAuth |
Erstellt eine neue OAuthPrompt-Instanz. |
Eigenschaften
id | Eindeutige ID des Dialogfelds. Legt die eindeutige ID des Dialogfelds fest. |
telemetry |
Ruft den Telemetrieclient für dieses Dialogfeld ab. Legt den Telemetrieclient für dieses Dialogfeld fest. |
Geerbte Eigenschaften
End |
Ruft ein Standardmäßiges End-of-Turn-Ergebnis ab. |
Methoden
begin |
Wird aufgerufen, wenn ein Eingabeaufforderungsdialogfeld auf den Dialogstapel verschoben wird und aktiviert wird. |
continue |
Wird aufgerufen, wenn ein Eingabeaufforderungsdialogfeld das aktive Dialogfeld ist und der Benutzer mit einer neuen Aktivität geantwortet hat. |
get |
Versucht, das gespeicherte Token für den aktuellen Benutzer abzurufen. |
recognize |
Gemeinsame Implementierung der RecognizeTokenAsync-Funktion. Dies ist für die interne Verwendung vorgesehen, um die Implementierung von OAuthPrompt und OAuthInput zu konsolidieren. Anwendungslogik sollte diese Dialogfeldklassen verwenden. |
send |
Sendet eine OAuth-Karte. |
sign |
Meldet den Benutzer vom Dienst ab. |
Geerbte Methoden
configure(Record<string, unknown>) | Fluent-Methode zum Konfigurieren des Objekts. |
end |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das Dialogfeld vor dem Beenden bereinigt. |
get |
|
get |
Eine codierte Zeichenfolge zur Unterstützung der Erkennung von Bot-Änderungen bei der erneuten Bereitstellung. |
on |
Wird aufgerufen, wenn ein Ereignis mit |
reprompt |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der Benutzer erneut zur Eingabe aufgefordert. |
resume |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das Dialogfeld nach Abschluss des Dialogfelds auf dem Stapel fortgesetzt. |
Details zum Konstruktor
OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)
Erstellt eine neue OAuthPrompt-Instanz.
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
Parameter
- dialogId
-
string
Eindeutige ID des Dialogfelds innerhalb des übergeordneten DialogSet
oder ComponentDialog
.
- settings
- OAuthPromptSettings
Einstellungen, die zum Konfigurieren der Eingabeaufforderung verwendet werden.
- validator
-
PromptValidator<TokenResponse>
(Optional) Validator, der jedes Mal aufgerufen wird, wenn der Benutzer auf die Eingabeaufforderung antwortet.
Details zur Eigenschaft
id
Eindeutige ID des Dialogfelds. Legt die eindeutige ID des Dialogfelds fest.
string id
Eigenschaftswert
string
Die ID für das Dialogfeld.
Hinweise
Dies wird automatisch generiert, wenn nicht angegeben.
telemetryClient
Ruft den Telemetrieclient für dieses Dialogfeld ab. Legt den Telemetrieclient für dieses Dialogfeld fest.
BotTelemetryClient telemetryClient
Eigenschaftswert
BotTelemetryClient
Der BotTelemetryClient für die Protokollierung verwendet werden.
Geerbte Eigenschaftsdetails
EndOfTurn
Ruft ein Standardmäßiges End-of-Turn-Ergebnis ab.
static EndOfTurn: DialogTurnResult
Eigenschaftswert
Hinweise
Dieses Ergebnis gibt an, dass ein Dialogfeld (oder ein logischer Schritt innerhalb eines Dialogfelds) die Verarbeitung für die aktuelle Drehung abgeschlossen hat, noch aktiv ist und auf weitere Eingaben wartet.
Details zur Methode
beginDialog(DialogContext, PromptOptions)
Wird aufgerufen, wenn ein Eingabeaufforderungsdialogfeld auf den Dialogstapel verschoben wird und aktiviert wird.
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
Parameter
Die DialogContext- für die aktuelle Unterhaltung.
- options
- PromptOptions
Wahlfrei. PromptOptions-, zusätzliche Informationen, die an die zu startende Eingabeaufforderung übergeben werden sollen.
Gibt zurück
Promise<DialogTurnResult>
Eine Promise
, die den asynchronen Vorgang darstellt.
Hinweise
Wenn der Vorgang erfolgreich ist, gibt das Ergebnis an, ob die Eingabeaufforderung noch aktiv ist, nachdem die Aufforderung von der Eingabeaufforderung verarbeitet wurde.
continueDialog(DialogContext)
Wird aufgerufen, wenn ein Eingabeaufforderungsdialogfeld das aktive Dialogfeld ist und der Benutzer mit einer neuen Aktivität geantwortet hat.
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Parameter
Die DialogContext- für die aktuelle Unterhaltung.
Gibt zurück
Promise<DialogTurnResult>
Eine Promise
, die den asynchronen Vorgang darstellt.
Hinweise
Wenn die Aufgabe erfolgreich ist, gibt das Ergebnis an, ob das Dialogfeld noch aktiv ist, nachdem die Drehung vom Dialogfeld verarbeitet wurde. Die Eingabeaufforderung empfängt in der Regel weiterhin die Antworten des Benutzers, bis sie die Antwort des Benutzers als gültige Eingabe für die Eingabeaufforderung akzeptiert.
getUserToken(TurnContext, string)
Versucht, das gespeicherte Token für den aktuellen Benutzer abzurufen.
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
Parameter
- context
-
TurnContext
Der Kontext verweist auf den Benutzer, der nachschlagen wird.
- code
-
string
(Optional) Vom Benutzer empfangener Anmeldecode.
Gibt zurück
Promise<TokenResponse | undefined>
Die Tokenantwort.
recognizeToken(DialogContext)
Gemeinsame Implementierung der RecognizeTokenAsync-Funktion. Dies ist für die interne Verwendung vorgesehen, um die Implementierung von OAuthPrompt und OAuthInput zu konsolidieren. Anwendungslogik sollte diese Dialogfeldklassen verwenden.
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
Parameter
Die DialogContext- für die aktuelle Unterhaltung.
Gibt zurück
Promise<PromptRecognizerResult<TokenResponse>>
Eine Zusage, die zum Ergebnis aufgelöst wird
sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)
Sendet eine OAuth-Karte.
static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>
Parameter
- settings
- OAuthPromptSettings
OAuth-Einstellungen.
- turnContext
-
TurnContext
Kontext drehen.
- prompt
-
string | Partial<Activity>
Nachrichtenaktivität.
Gibt zurück
Promise<void>
signOutUser(TurnContext)
Meldet den Benutzer vom Dienst ab.
function signOutUser(context: TurnContext): Promise<void>
Parameter
- context
-
TurnContext
Kontext, der auf den Benutzer verweist, der abgemeldet wird.
Gibt zurück
Promise<void>
Eine Zusage, die den asynchronen Vorgang darstellt.
Hinweise
Dieses Beispiel zeigt das Erstellen einer Instanz der Eingabeaufforderung und anschließendes Abmelden des Benutzers.
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
Details zur geerbten Methode
configure(Record<string, unknown>)
Fluent-Methode zum Konfigurieren des Objekts.
function configure(config: Record<string, unknown>): this
Parameter
- config
-
Record<string, unknown>
Anzuwendende Konfigurationseinstellungen.
Gibt zurück
this
Die konfigurierbaren nach Abschluss des Vorgangs.
geerbt vonKonfigurierbar.configure
endDialog(TurnContext, DialogInstance, DialogReason)
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das Dialogfeld vor dem Beenden bereinigt.
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
Parameter
- _context
-
TurnContext
Das Kontextobjekt für die Drehung.
- _instance
- DialogInstance
Aktuelle Statusinformationen für dieses Dialogfeld.
- _reason
- DialogReason
Der Grund, warum das Dialogfeld beendet wird.
Gibt zurück
Promise<void>
Hinweise
Abgeleitete Dialogfelder, die vor dem Beenden Protokollierung oder Bereinigung durchführen müssen, sollten diese Methode überschreiben. Standardmäßig hat diese Methode keine Auswirkung.
Die DialogContext- ruft diese Methode auf, wenn das aktuelle Dialogfeld beendet wird.
Siehe auch
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
Parameter
- _property
-
string
Der Schlüssel der Konfiguration der bedingten Auswahl.
Gibt zurück
Der Konverter für die Selektorkonfiguration.
Geerbt vonKonfigurierbar.getConverter
getVersion()
Eine codierte Zeichenfolge zur Unterstützung der Erkennung von Bot-Änderungen bei der erneuten Bereitstellung.
function getVersion(): string
Gibt zurück
string
Eindeutige Zeichenfolge, die sich nur ändern sollte, wenn sich das Dialogfeld auf eine Weise geändert hat, die das Dialogfeld neu starten soll.
Hinweise
Dadurch werden standardmäßig die Dialogfelder ID- zurückgegeben, können jedoch außer Kraft gesetzt werden, um präzisere Änderungserkennungslogik bereitzustellen. Jedes Dialogfeld im Stapel, das seine Versionsänderung hat, führt zu einem versionChanged
Ereignis wird ausgelöst. Wenn dieses Ereignis nicht vom Bot behandelt wird, wird ein Fehler ausgelöst, der dazu führt, dass die Bots-Fehlerhandlerlogik ausgeführt wird.
Durch zurückgeben einer leeren Zeichenfolge wird die Versionsnachverfolgung für die Komponente insgesamt deaktiviert.
geerbt vonDialog.getVersion
onDialogEvent(DialogContext, DialogEvent)
Wird aufgerufen, wenn ein Ereignis mit DialogContext.emitEvent()
ausgelöst wurde, entweder durch das aktuelle Dialogfeld oder ein Dialogfeld, das das aktuelle Dialogfeld gestartet hat.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
Parameter
Der Dialogkontext für die aktuelle Unterhaltungswende.
Das ausgelöste Ereignis.
Gibt zurück
Promise<boolean>
True, wenn das Ereignis vom aktuellen Dialogfeld behandelt wird und Bubbling beendet werden soll.
geerbt vonDialog.onDialogEvent
repromptDialog(TurnContext, DialogInstance)
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der Benutzer erneut zur Eingabe aufgefordert.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
Parameter
- _context
-
TurnContext
Das Kontextobjekt für die Drehung.
- _instance
- DialogInstance
Aktuelle Statusinformationen für dieses Dialogfeld.
Gibt zurück
Promise<void>
Hinweise
Abgeleitete Dialogfelder, die validierungs- und erneute Aufforderungslogik unterstützen, sollten diese Methode überschreiben. Standardmäßig hat diese Methode keine Auswirkung.
Die DialogContext- ruft diese Methode auf, wenn das aktuelle Dialogfeld eingaben vom Benutzer erneut anfordern soll. Diese Methode wird für Eingabeaufforderungsdialoge implementiert.
Siehe auch
geerbt vonDialog.repromptDialog-
resumeDialog(DialogContext, DialogReason, any)
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird das Dialogfeld nach Abschluss des Dialogfelds auf dem Stapel fortgesetzt.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
Parameter
Der Kontext für die aktuelle Dialogdrehung.
- reason
- DialogReason
Der Grund, warum das Dialogfeld fortgesetzt wird. Dies wird in der Regel DialogReason.endCalled-
- result
-
any
Wahlfrei. Der Rückgabewert (falls vorhanden) aus dem dialogfeld, das beendet wurde.
Gibt zurück
Promise<DialogTurnResult>
Eine Zusage, die in das Dialogdrehergebnis aufgelöst wird.
Hinweise
Abgeleitete Dialogfelder, die Mehrfachwechselunterhaltungen unterstützen, sollten diese Methode überschreiben. Standardmäßig signalisiert diese Methode, dass das Dialogfeld abgeschlossen ist und zurückgegeben wird.
Die DialogContext- ruft diese Methode auf, wenn das Dialogfeld fortgesetzt wird. Wenn das vorherige Dialogfeld im Stapel einen Wert zurückgegeben hat, befindet sich dieser Wert im result
-Parameter.
Um ein untergeordnetes dialogfeld zu starten, verwenden Sie DialogContext.beginDialog oder DialogContext.prompt; Dieses Dialogfeld ist jedoch nicht unbedingt das Dialogfeld, das das untergeordnete Dialogfeld gestartet hat. Um dem Dialogfeldkontext zu signalisieren, dass dieses Dialogfeld abgeschlossen wurde, warten Sie DialogContext.endDialog, bevor Sie diese Methode beenden.
Siehe auch
geerbt vonDialog.resumeDialog