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 o invoke.
  • 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

OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)

Crea una nuova istanza di OAuthPrompt.

Proprietà

id

ID univoco del dialogo. Imposta l'ID univoco della finestra di dialogo.

telemetryClient

Ottiene il client di telemetria per questa finestra di dialogo. Imposta il client di telemetria per questa finestra di dialogo.

Proprietà ereditate

EndOfTurn

Ottiene un risultato di fine turno predefinito.

Metodi

beginDialog(DialogContext, PromptOptions)

Viene chiamato quando viene eseguito il push di una finestra di dialogo nello stack di dialoghi e viene attivato.

continueDialog(DialogContext)

Chiamato quando una finestra di dialogo di richiesta è la finestra di dialogo attiva e l'utente ha risposto con una nuova attività.

getUserToken(TurnContext, string)

Tenta di recuperare il token archiviato per l'utente corrente.

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.

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

Invia una scheda OAuth.

signOutUser(TurnContext)

Disconnette l'utente dal servizio.

Metodi ereditati

configure(Record<string, unknown>)

Metodo Fluent per la configurazione dell'oggetto.

endDialog(TurnContext, DialogInstance, DialogReason)

Quando sottoposto a override in una classe derivata, esegue la pulizia per la finestra di dialogo prima che termini.

getConverter(string)
getVersion()

Stringa codificata usata per facilitare il rilevamento delle modifiche del bot nella ri-distribuzione.

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.

repromptDialog(TurnContext, DialogInstance)

Quando ne viene eseguito l'override in una classe derivata, reinserito l'utente per l'input.

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.

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

dc
DialogContext

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

dc
DialogContext

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

dc
DialogContext

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

dc
DialogContext

Contesto del dialogo per il turno corrente della conversazione.

e
DialogEvent

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

dc
DialogContext

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 , usare DialogContext.beginDialog o DialogContext.prompt; Tuttavia, questo dialogo non sarà necessariamente quello che ha avviato il dialogo figlio. Per segnalare al contesto del dialogo che il dialogo è stato completato, attendere DialogContext.endDialog prima di uscire da questo metodo.

Vedere anche

ereditato daDialog.resumeDialog