Share via


OAuthPrompt class

Crée une invite qui demande à l’utilisateur de se connecter à l’aide du service d’authentification unique (SSO) Bot Frameworks.

Extends

Remarques

L’invite tente de récupérer le jeton actuel des utilisateurs et, si l’utilisateur n’est pas connecté, il lui envoie un OAuthCard bouton contenant un bouton qu’il peut appuyer pour se connecter. Selon le canal, l’utilisateur est envoyé via l’un des deux flux de connexion possibles :

  • Flux de connexion automatique dans lequel une fois que l’utilisateur se connecte et que le service SSO transfère le bot le jeton d’accès des utilisateurs à l’aide d’une event activité ou invoke .
  • Flux de « code magique » dans lequel l’endroit où l’utilisateur se connecte, il est invité par le service d’authentification unique à envoyer au bot un code à six chiffres confirmant son identité. Ce code sera envoyé en tant qu’activité standard message .

Les deux flux sont automatiquement pris en charge par le OAuthPrompt et la seule chose dont vous devez faire attention est que vous ne bloquez pas les event activités et invoke que l’invite peut attendre.

Notes

Vous devez éviter de conserver le jeton d’accès avec l’autre état de vos bots. Le service Bot Frameworks SSO stocke le jeton en toute sécurité en votre nom. Si vous le stockez dans l’état de vos bots, il peut expirer ou être révoqué entre les tours.

Lorsque vous appelez l’invite à partir d’une étape en cascade, vous devez utiliser le jeton dans l’étape qui suit l’invite, puis laisser le jeton sortir de l’étendue à la fin de votre fonction.

Invite d’utilisation

Lorsqu’il est utilisé avec vos bots, DialogSet vous pouvez simplement ajouter une nouvelle instance de l’invite en tant que boîte de dialogue nommée à l’aide DialogSet.add()de . Vous pouvez ensuite démarrer l’invite à partir d’une étape en cascade à l’aide de DialogContext.beginDialog() ou DialogContext.prompt()de . L’utilisateur est invité à se connecter en fonction des besoins et son jeton d’accès est passé en tant qu’argument aux appelants à l’étape en cascade suivante :

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

Constructeurs

OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)

Crée une instance OAuthPrompt.

Propriétés

id

ID unique de la boîte de dialogue. Définit l’ID unique de la boîte de dialogue.

telemetryClient

Obtient le client de télémétrie pour cette boîte de dialogue. Définit le client de télémétrie pour cette boîte de dialogue.

Propriétés héritées

EndOfTurn

Obtient un résultat de fin de tour par défaut.

Méthodes

beginDialog(DialogContext, PromptOptions)

Appelé lorsqu’une boîte de dialogue d’invite est envoyée dans la pile des dialogues et est en cours d’activation.

continueDialog(DialogContext)

Appelée lorsqu’une boîte de dialogue d’invite est la boîte de dialogue active et que l’utilisateur a répondu avec une nouvelle activité.

getUserToken(TurnContext, string)

Tente de récupérer le jeton stocké pour l’utilisateur actuel.

recognizeToken(DialogContext)

Implémentation partagée de la fonction RecognizeTokenAsync. Ceci est destiné à une utilisation interne, afin de consolider l’implémentation de OAuthPrompt et OAuthInput. La logique d’application doit utiliser ces classes de dialogue.

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

Envoie une carte OAuth.

signOutUser(TurnContext)

Déconnecte l’utilisateur du service.

Méthodes héritées

configure(Record<string, unknown>)

Méthode Fluent pour configurer l’objet.

endDialog(TurnContext, DialogInstance, DialogReason)

En cas de substitution dans une classe dérivée, effectue le nettoyage de la boîte de dialogue avant sa fin.

getConverter(string)
getVersion()

Chaîne encodée utilisée pour faciliter la détection des modifications de bot lors du redéploiement.

onDialogEvent(DialogContext, DialogEvent)

Appelé lorsqu’un événement a été déclenché, à l’aide DialogContext.emitEvent()de , par la boîte de dialogue active ou par un dialogue que le dialogue actuel a démarré.

repromptDialog(TurnContext, DialogInstance)

En cas de substitution dans une classe dérivée, réexpte l’utilisateur pour l’entrée.

resumeDialog(DialogContext, DialogReason, any)

En cas de substitution dans une classe dérivée, reprend la boîte de dialogue une fois la boîte de dialogue située au-dessus de celle-ci sur la pile terminée.

Détails du constructeur

OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)

Crée une instance OAuthPrompt.

new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)

Paramètres

dialogId

string

ID unique de la boîte de dialogue dans son parent DialogSet ou ComponentDialog.

settings
OAuthPromptSettings

Paramètres utilisés pour configurer l’invite.

validator

PromptValidator<TokenResponse>

Validateur (facultatif) qui sera appelé chaque fois que l’utilisateur répond à l’invite.

Détails de la propriété

id

ID unique de la boîte de dialogue. Définit l’ID unique de la boîte de dialogue.

string id

Valeur de propriété

string

Id de la boîte de dialogue.

Remarques

Celui-ci est automatiquement généré s’il n’est pas spécifié.

telemetryClient

Obtient le client de télémétrie pour cette boîte de dialogue. Définit le client de télémétrie pour cette boîte de dialogue.

BotTelemetryClient telemetryClient

Valeur de propriété

BotTelemetryClient

BotTelemetryClient à utiliser pour la journalisation.

Détails de la propriété héritée

EndOfTurn

Obtient un résultat de fin de tour par défaut.

static EndOfTurn: DialogTurnResult

Valeur de propriété

Remarques

Ce résultat indique qu’un dialogue (ou une étape logique dans un dialogue) a terminé le traitement pour le tour actuel, est toujours actif et attend plus d’entrée.

Hérité deDialog.EndOfTurn

Détails de la méthode

beginDialog(DialogContext, PromptOptions)

Appelé lorsqu’une boîte de dialogue d’invite est envoyée dans la pile des dialogues et est en cours d’activation.

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

Paramètres

dc
DialogContext

DialogContext pour le tour actuel de la conversation.

options
PromptOptions

facultatif. PromptOptions, informations supplémentaires à transmettre à l’invite en cours de démarrage.

Retours

Promise<DialogTurnResult>

Promise représentant l’opération asynchrone.

Remarques

Si la tâche réussit, le résultat indique si l’invite est toujours active une fois le tour traité par l’invite.

continueDialog(DialogContext)

Appelée lorsqu’une boîte de dialogue d’invite est la boîte de dialogue active et que l’utilisateur a répondu avec une nouvelle activité.

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

Paramètres

dc
DialogContext

DialogContext pour le tour actuel de la conversation.

Retours

Promise<DialogTurnResult>

Promise représentant l’opération asynchrone.

Remarques

Si la tâche réussit, le résultat indique si le dialogue est toujours actif une fois que le tour a été traité par le dialogue. L’invite continue généralement à recevoir les réponses de l’utilisateur jusqu’à ce qu’elle accepte la réponse de l’utilisateur comme entrée valide pour l’invite.

getUserToken(TurnContext, string)

Tente de récupérer le jeton stocké pour l’utilisateur actuel.

function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>

Paramètres

context

TurnContext

Le contexte référence l’utilisateur recherché.

code

string

(Facultatif) code de connexion reçu de l’utilisateur.

Retours

Promise<TokenResponse | undefined>

Réponse du jeton.

recognizeToken(DialogContext)

Implémentation partagée de la fonction RecognizeTokenAsync. Ceci est destiné à une utilisation interne, afin de consolider l’implémentation de OAuthPrompt et OAuthInput. La logique d’application doit utiliser ces classes de dialogue.

function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>

Paramètres

dc
DialogContext

DialogContext pour le tour actuel de la conversation.

Retours

Promise<PromptRecognizerResult<TokenResponse>>

Une promesse qui se résout au résultat

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

Envoie une carte OAuth.

static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>

Paramètres

settings
OAuthPromptSettings

Paramètres OAuth.

turnContext

TurnContext

Retournez le contexte.

prompt

string | Partial<Activity>

Activité de message.

Retours

Promise<void>

signOutUser(TurnContext)

Déconnecte l’utilisateur du service.

function signOutUser(context: TurnContext): Promise<void>

Paramètres

context

TurnContext

Contexte référençant l’utilisateur en cours de déconnexion.

Retours

Promise<void>

Promesse représentant l’opération asynchrone.

Remarques

Cet exemple montre comment créer une instance de l’invite, puis déconnecter l’utilisateur.

const prompt = new OAuthPrompt({
   connectionName: 'GitConnection',
   title: 'Login To GitHub'
});
await prompt.signOutUser(context);

Détails de la méthode héritée

configure(Record<string, unknown>)

Méthode Fluent pour configurer l’objet.

function configure(config: Record<string, unknown>): this

Paramètres

config

Record<string, unknown>

Paramètres de configuration à appliquer.

Retours

this

Configurable une fois l’opération terminée.

Hérité deConfigurable.configure

endDialog(TurnContext, DialogInstance, DialogReason)

En cas de substitution dans une classe dérivée, effectue le nettoyage de la boîte de dialogue avant sa fin.

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

Paramètres

_context

TurnContext

Objet de contexte pour le tour.

_instance
DialogInstance

Informations d’état actuel pour cette boîte de dialogue.

_reason
DialogReason

Raison pour laquelle la boîte de dialogue se termine.

Retours

Promise<void>

Remarques

Les boîtes de dialogue dérivées qui doivent effectuer la journalisation ou le nettoyage avant de se terminer doivent remplacer cette méthode. Par défaut, cette méthode n’a aucun effet.

DialogContext appelle cette méthode lorsque le dialogue actuel se termine.

Voir aussi

Hérité deDialog.endDialog

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Paramètres

_property

string

Clé de la configuration du sélecteur conditionnel.

Retours

Convertisseur pour la configuration du sélecteur.

Hérité deConfigurable.getConverter

getVersion()

Chaîne encodée utilisée pour faciliter la détection des modifications de bot lors du redéploiement.

function getVersion(): string

Retours

string

Chaîne unique qui ne doit changer que lorsque la boîte de dialogue a changé d’une manière qui doit redémarrer le dialogue.

Remarques

Cela renvoie par défaut l’ID de boîte de dialogue, mais peut être remplacé pour fournir une logique de détection des modifications plus précise. Toute boîte de dialogue sur la pile dont la version est modifiée entraîne la levée d’un versionChanged événement. Si cet événement n’est pas géré par le bot, une erreur est générée, ce qui entraîne l’exécution de la logique du gestionnaire d’erreurs des bots.

Le renvoi d’une chaîne vide désactive le suivi de version pour le composant.

Hérité deDialog.getVersion

onDialogEvent(DialogContext, DialogEvent)

Appelé lorsqu’un événement a été déclenché, à l’aide DialogContext.emitEvent()de , par la boîte de dialogue active ou par un dialogue que le dialogue actuel a démarré.

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

Paramètres

dc
DialogContext

Contexte de boîte de dialogue pour la tournure actuelle de la conversation.

e
DialogEvent

Événement déclenché.

Retours

Promise<boolean>

True si l’événement est géré par la boîte de dialogue active et que le bouillonnement doit s’arrêter.

Hérité deDialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

En cas de substitution dans une classe dérivée, réexpte l’utilisateur pour l’entrée.

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

Paramètres

_context

TurnContext

Objet de contexte pour le tour.

_instance
DialogInstance

Informations d’état actuel pour cette boîte de dialogue.

Retours

Promise<void>

Remarques

Les boîtes de dialogue dérivées qui prennent en charge la logique de validation et de nouvelle invite doivent remplacer cette méthode. Par défaut, cette méthode n’a aucun effet.

DialogContext appelle cette méthode lorsque la boîte de dialogue actuelle doit re-demander l’entrée à l’utilisateur. Cette méthode est implémentée pour les boîtes de dialogue d’invite.

Voir aussi

Hérité deDialog.repromptDialog

resumeDialog(DialogContext, DialogReason, any)

En cas de substitution dans une classe dérivée, reprend la boîte de dialogue une fois la boîte de dialogue située au-dessus de celle-ci sur la pile terminée.

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

Paramètres

dc
DialogContext

Contexte du tour de dialogue actuel.

reason
DialogReason

Raison pour laquelle la boîte de dialogue reprend. Il s’agit généralement de DialogReason.endCalled

result

any

facultatif. Valeur de retour, le cas échéant, de la boîte de dialogue qui s’est terminée.

Retours

Promise<DialogTurnResult>

Promesse résolvant le résultat du tour de dialogue.

Remarques

Les dialogues dérivés qui prennent en charge les conversations à plusieurs tours doivent remplacer cette méthode. Par défaut, cette méthode signale que la boîte de dialogue est terminée et retourne.

Le DialogContext appelle cette méthode lorsqu’il reprend la boîte de dialogue. Si la boîte de dialogue précédente sur la pile a retourné une valeur, cette valeur se trouve dans le result paramètre .

Pour démarrer un dialogue enfant , utilisez DialogContext.beginDialog ou DialogContext.prompt ; toutefois, ce dialogue ne sera pas nécessairement celui qui a démarré le dialogue enfant. Pour signaler au contexte de dialogue que ce dialogue est terminé, attendez DialogContext.endDialog avant de quitter cette méthode.

Voir aussi

Hérité deDialog.resumeDialog