Partager via


OAuthPrompt class

Crée une invite qui demande à l’utilisateur de se connecter à l’aide du service Bot Frameworks Single Sign On (SSO).

Extends

Remarques

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

  • Flux de connexion automatique où une fois que l’utilisateur se connecte et que le service SSO transfère le bot au jeton d’accès des utilisateurs à l’aide d’une activité event ou invoke.
  • Le flux « magic code » où une fois que 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é de message standard.

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

Note

Vous devez éviter de conserver le jeton d’accès avec vos bots d’autres états. Le service Bot Frameworks SSO stocke en toute sécurité le jeton en votre nom. Si vous stockez-le 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 à l’étape suivante, puis laisser le jeton sortir de l’étendue à la fin de votre fonction.

Utilisation de l’invite

Lorsqu’ils sont utilisés 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 de DialogSet.add(). Vous pouvez ensuite démarrer l’invite à partir d’une étape en cascade en utilisant DialogContext.beginDialog() ou DialogContext.prompt(). L’utilisateur sera invité à se connecter en fonction des besoins et son jeton d’accès sera transmis en tant qu’argument aux appelants à l’étape suivante de la cascade :

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 (push) sur la pile de dialogues et est activée.

continueDialog(DialogContext)

Appelé 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. Cela 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 la configuration de 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 de se terminer.

getConverter(string)
getVersion()

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

onDialogEvent(DialogContext, DialogEvent)

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

repromptDialog(TurnContext, DialogInstance)

En cas de substitution dans une classe dérivée, repromène 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 DialogSet parent ou ComponentDialog.

settings
OAuthPromptSettings

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

validator

PromptValidator<TokenResponse>

(Facultatif) validateur 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

Cette opération est générée automatiquement si elle n’est pas spécifiée.

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

Le 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 du tour actuel, est toujours actif et attend plus d’entrée.

héritée dedialog.EndOfTurn

Détails de la méthode

beginDialog(DialogContext, PromptOptions)

Appelé lorsqu’une boîte de dialogue d’invite est envoyée (push) sur la pile de dialogues et est activée.

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

Paramètres

dc
DialogContext

DialogContext pour le tour actuel de la conversation.

options
PromptOptions

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

Retours

Promise<DialogTurnResult>

Un 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 que le tour a été traité par l’invite.

continueDialog(DialogContext)

Appelé 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>

Un Promise représentant l’opération asynchrone.

Remarques

Si la tâche réussit, le résultat indique si la boîte de dialogue est toujours active une fois le tour traité par la boîte de dialogue. L’invite continue généralement de 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 qui est 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. Cela 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>>

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

Tournez 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 qui est déconnecté.

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 la configuration de 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ée 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 de se terminer.

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 actuelles pour cette boîte de dialogue.

_reason
DialogReason

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

Retours

Promise<void>

Remarques

Les dialogues dérivés qui doivent effectuer la journalisation ou le nettoyage avant la fin doivent remplacer cette méthode. Par défaut, cette méthode n’a aucun effet.

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

Voir également

héritée dedialog.endDialog

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

Paramètres

_property

string

Clé de la configuration du sélecteur conditionnel.

Retours

Convertisseur de la configuration du sélecteur.

héritée deconfigurable.getConverter

getVersion()

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

function getVersion(): string

Retours

string

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

Remarques

Cela permet par défaut de retourner les dialogues id, mais peut être substitué pour fournir une logique de détection des modifications plus précise. Toute boîte de dialogue sur la pile qui a sa modification de version entraîne un événement versionChanged sera déclenché. 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 des versions pour le composant tous ensemble.

héritée deDialog.getVersion

onDialogEvent(DialogContext, DialogEvent)

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

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

Paramètres

dc
DialogContext

Contexte de boîte de dialogue pour le tour de conversation actuel.

e
DialogEvent

Événement déclenché.

Retours

Promise<boolean>

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

héritée deDialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

En cas de substitution dans une classe dérivée, repromène 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 actuelles pour cette boîte de dialogue.

Retours

Promise<void>

Remarques

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

Le DialogContext appelle cette méthode lorsque la boîte de dialogue active doit demander à nouveau l’entrée de l’utilisateur. Cette méthode est implémentée pour les dialogues d’invite.

Voir également

héritée 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. Cela sera généralement DialogReason.endCalled

result

any

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

Retours

Promise<DialogTurnResult>

Promesse de résolution du 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.

La DialogContext appelle cette méthode lorsqu’elle 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 paramètre result.

Pour démarrer une boîte de dialogue de 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 également

  • DialogContext.endDialog

héritée dedialog.resumeDialog