OAuthPrompt class
Crea un nuovo prompt che chiede all'utente di accedere usando il servizio Single Sign-On (SSO) di Bot Frameworks.
- Extends
Commenti
Il prompt tenterà di recuperare il token corrente degli utenti e, se l'utente non ha eseguito l'accesso, invierà un OAuthCard
contenente un pulsante che può premere per accedere. A seconda del canale, l'utente verrà inviato tramite uno dei due possibili flussi di accesso:
- Flusso di accesso automatico in cui dopo l'accesso dell'utente e il servizio SSO inoltra il bot al token di accesso degli utenti usando un'attività
event
oinvoke
. - Flusso di "magic code" in cui, una volta che l'utente accede, verrà richiesto dal servizio SSO di inviare al bot un codice a sei cifre che conferma la propria identità. Questo codice verrà inviato come attività standard di
message
.
Entrambi i flussi sono supportati automaticamente dal OAuthPrompt
e l'unica cosa da fare è che non si bloccano le attività di event
e invoke
su cui potrebbe essere in attesa la richiesta.
Nota
È consigliabile evitare di rendere persistente il token di accesso con gli altri stati dei bot. Il servizio SSO di Bot Frameworks archivierà in modo sicuro il token per conto dell'utente. Se lo si archivia nello stato dei bot, potrebbe scadere o essere revocato tra turni.
Quando si chiama il prompt dall'interno di un passaggio a cascata, è consigliabile usare il token all'interno del passaggio che segue il prompt e quindi lasciare che il token esegua l'ambito alla fine della funzione.
Utilizzo prompt
Se usato con i bot DialogSet
è sufficiente aggiungere una nuova istanza del prompt come finestra di dialogo denominata usando DialogSet.add()
. È quindi possibile avviare il prompt da un passaggio a cascata usando DialogContext.beginDialog()
o DialogContext.prompt()
. All'utente verrà richiesto di accedere in base alle esigenze e il token di accesso verrà passato come argomento ai chiamanti successivo passaggio a cascata:
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();
}
}
]));
Costruttori
OAuth |
Crea una nuova istanza di OAuthPrompt. |
Proprietà
id | ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo. |
telemetry |
Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo. |
Proprietà ereditate
End |
Ottiene un risultato di fine turno predefinito. |
Metodi
begin |
Viene chiamato quando viene eseguito il push di una finestra di dialogo nello stack di dialoghi e viene attivato. |
continue |
Chiamato quando una finestra di dialogo di richiesta è la finestra di dialogo attiva e l'utente ha risposto con una nuova attività. |
get |
Tenta di recuperare il token archiviato per l'utente corrente. |
recognize |
Implementazione condivisa della funzione RecognizeTokenAsync. Questo è destinato all'uso interno, per consolidare l'implementazione di OAuthPrompt e OAuthInput. La logica dell'applicazione deve usare tali classi di dialoghi. |
send |
Invia una scheda OAuth. |
sign |
Disconnette l'utente dal servizio. |
Metodi ereditati
configure(Record<string, unknown>) | Metodo Fluent per la configurazione dell'oggetto. |
end |
Quando sottoposto a override in una classe derivata, esegue la pulizia per la finestra di dialogo prima che termini. |
get |
|
get |
Stringa codificata usata per facilitare il rilevamento delle modifiche del bot nella ri-distribuzione. |
on |
Chiamato quando è stato generato un evento, utilizzando |
reprompt |
Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input. |
resume |
Quando ne viene eseguito l'override in una classe derivata, riprende il dialogo al termine del dialogo sopra di esso nello stack. |
Dettagli costruttore
OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)
Crea una nuova istanza di OAuthPrompt.
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
Parametri
- dialogId
-
string
ID univoco della finestra di dialogo all'interno del relativo DialogSet
padre o ComponentDialog
.
- settings
- OAuthPromptSettings
Impostazioni utilizzate per configurare il prompt.
- validator
-
PromptValidator<TokenResponse>
(Facoltativo) validator che verrà chiamato ogni volta che l'utente risponde al prompt.
Dettagli proprietà
id
ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo.
string id
Valore della proprietà
string
ID della finestra di dialogo.
Commenti
Questo verrà generato automaticamente se non specificato.
telemetryClient
Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo.
BotTelemetryClient telemetryClient
Valore della proprietà
BotTelemetryClient
BotTelemetryClient da usare per la registrazione.
Dettagli proprietà ereditate
EndOfTurn
Ottiene un risultato di fine turno predefinito.
static EndOfTurn: DialogTurnResult
Valore della proprietà
Commenti
Questo risultato indica che un dialogo (o un passaggio logico all'interno di una finestra di dialogo) ha completato l'elaborazione per il turno corrente, è ancora attiva ed è in attesa di più input.
ereditato daDialog.EndOfTurn
Dettagli metodo
beginDialog(DialogContext, PromptOptions)
Viene chiamato quando viene eseguito il push di una finestra di dialogo nello stack di dialoghi e viene attivato.
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
Parametri
DialogContext per il turno corrente della conversazione.
- options
- PromptOptions
Opzionale. PromptOptions, informazioni aggiuntive da passare alla richiesta avviata.
Restituisce
Promise<DialogTurnResult>
Oggetto Promise
che rappresenta l'operazione asincrona.
Commenti
Se l'attività ha esito positivo, il risultato indica se la richiesta è ancora attiva dopo che il turno è stato elaborato dal prompt.
continueDialog(DialogContext)
Chiamato quando una finestra di dialogo di richiesta è la finestra di dialogo attiva e l'utente ha risposto con una nuova attività.
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Parametri
DialogContext per il turno corrente della conversazione.
Restituisce
Promise<DialogTurnResult>
Oggetto Promise
che rappresenta l'operazione asincrona.
Commenti
Se l'attività ha esito positivo, il risultato indica se il dialogo è ancora attivo dopo che il turno è stato elaborato dalla finestra di dialogo. La richiesta continua in genere a ricevere le risposte dell'utente finché non accetta la risposta dell'utente come input valido per la richiesta.
getUserToken(TurnContext, string)
Tenta di recuperare il token archiviato per l'utente corrente.
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
Parametri
- context
-
TurnContext
Il contesto fa riferimento all'utente che viene cercato.
- code
-
string
(Facoltativo) codice di accesso ricevuto dall'utente.
Restituisce
Promise<TokenResponse | undefined>
Risposta del token.
recognizeToken(DialogContext)
Implementazione condivisa della funzione RecognizeTokenAsync. Questo è destinato all'uso interno, per consolidare l'implementazione di OAuthPrompt e OAuthInput. La logica dell'applicazione deve usare tali classi di dialoghi.
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
Parametri
DialogContext per il turno corrente della conversazione.
Restituisce
Promise<PromptRecognizerResult<TokenResponse>>
Promessa che si risolve nel risultato
sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)
Invia una scheda OAuth.
static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>
Parametri
- settings
- OAuthPromptSettings
Impostazioni OAuth.
- turnContext
-
TurnContext
Contesto di turno.
- prompt
-
string | Partial<Activity>
Attività messaggio.
Restituisce
Promise<void>
signOutUser(TurnContext)
Disconnette l'utente dal servizio.
function signOutUser(context: TurnContext): Promise<void>
Parametri
- context
-
TurnContext
Contesto che fa riferimento all'utente disconnesso.
Restituisce
Promise<void>
Promessa che rappresenta l'operazione asincrona.
Commenti
In questo esempio viene illustrata la creazione di un'istanza del prompt e la disconnessione dell'utente.
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
Dettagli dei metodi ereditati
configure(Record<string, unknown>)
Metodo Fluent per la configurazione dell'oggetto.
function configure(config: Record<string, unknown>): this
Parametri
- config
-
Record<string, unknown>
Impostazioni di configurazione da applicare.
Restituisce
this
Configurabile al termine dell'operazione.
Ereditato daConfigurable.configure
endDialog(TurnContext, DialogInstance, DialogReason)
Quando sottoposto a override in una classe derivata, esegue la pulizia per la finestra di dialogo prima che termini.
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
Parametri
- _context
-
TurnContext
Oggetto di contesto per il turno.
- _instance
- DialogInstance
Informazioni sullo stato corrente per questa finestra di dialogo.
- _reason
- DialogReason
Motivo per cui la finestra di dialogo sta terminando.
Restituisce
Promise<void>
Commenti
Le finestre di dialogo derivate che devono eseguire la registrazione o la pulizia prima di terminare devono eseguire l'override di questo metodo. Per impostazione predefinita, questo metodo non ha alcun effetto.
Il DialogContext chiama questo metodo al termine della finestra di dialogo corrente.
Vedere anche
ereditato daDialog.endDialog
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
Parametri
- _property
-
string
Chiave della configurazione del selettore condizionale.
Restituisce
Convertitore per la configurazione del selettore.
ereditato daConfigurable.getConverter
getVersion()
Stringa codificata usata per facilitare il rilevamento delle modifiche del bot nella ri-distribuzione.
function getVersion(): string
Restituisce
string
Stringa univoca che deve cambiare solo quando il dialogo è stato modificato in modo da riavviare la finestra di dialogo.
Commenti
Per impostazione predefinita, la restituzione dei dialoghi id ma può essere sottoposta a override per fornire una logica di rilevamento delle modifiche più precisa. Qualsiasi finestra di dialogo nello stack con la modifica della versione genererà un evento versionChanged
verrà generato. Se questo evento non viene gestito dal bot, verrà generato un errore che causa l'esecuzione della logica del gestore errori dei bot.
La restituzione di una stringa vuota disabilita il rilevamento della versione per il componente insieme.
ereditato daDialog.getVersion
onDialogEvent(DialogContext, DialogEvent)
Chiamato quando è stato generato un evento, utilizzando DialogContext.emitEvent()
, dalla finestra di dialogo corrente o da una finestra di dialogo avviata dalla finestra di dialogo corrente.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
Parametri
Contesto del dialogo per il turno corrente della conversazione.
Evento generato.
Restituisce
Promise<boolean>
True se l'evento viene gestito dalla finestra di dialogo corrente e il bubbling deve essere arrestato.
ereditato daDialog.onDialogEvent
repromptDialog(TurnContext, DialogInstance)
Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
Parametri
- _context
-
TurnContext
Oggetto di contesto per il turno.
- _instance
- DialogInstance
Informazioni sullo stato corrente per questa finestra di dialogo.
Restituisce
Promise<void>
Commenti
I dialoghi derivati che supportano la convalida e la logica di ripetizione della richiesta devono eseguire l'override di questo metodo. Per impostazione predefinita, questo metodo non ha alcun effetto.
Il DialogContext chiama questo metodo quando la finestra di dialogo corrente deve richiedere nuovamente l'input dell'utente. Questo metodo viene implementato per i dialoghi di richiesta.
Vedere anche
ereditato daDialog.repromptDialog
resumeDialog(DialogContext, DialogReason, any)
Quando ne viene eseguito l'override in una classe derivata, riprende il dialogo al termine del dialogo sopra di esso nello stack.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
Parametri
Contesto del turno di dialogo corrente.
- reason
- DialogReason
Motivo per cui viene ripreso il dialogo. Questo in genere sarà DialogReason.endCalled
- result
-
any
Opzionale. Valore restituito, se presente, dalla finestra di dialogo terminata.
Restituisce
Promise<DialogTurnResult>
Promessa che risolve il risultato del turno del dialogo.
Commenti
I dialoghi derivati che supportano conversazioni a più turni devono eseguire l'override di questo metodo. Per impostazione predefinita, questo metodo segnala che il dialogo è completo e restituisce.
Il DialogContext chiama questo metodo quando riprende la finestra di dialogo. Se la finestra di dialogo precedente sullo stack ha restituito un valore, tale valore si trova nel parametro result
.
Per avviare una finestra di dialogo di figlio
Vedere anche
ereditato daDialog.resumeDialog