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
ouinvoke
. - 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
OAuth |
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. |
telemetry |
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
End |
Obtient un résultat de fin de tour par défaut. |
Méthodes
begin |
Appelé lorsqu’une boîte de dialogue d’invite est envoyée (push) sur la pile de dialogues et est activée. |
continue |
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é. |
get |
Tente de récupérer le jeton stocké pour l’utilisateur actuel. |
recognize |
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. |
send |
Envoie une carte OAuth. |
sign |
Déconnecte l’utilisateur du service. |
Méthodes héritées
configure(Record<string, unknown>) | Méthode Fluent pour la configuration de l’objet. |
end |
En cas de substitution dans une classe dérivée, effectue le nettoyage de la boîte de dialogue avant de se terminer. |
get |
|
get |
Chaîne encodée utilisée pour faciliter la détection des modifications de bot lors du rééploiement. |
on |
Appelé lorsqu’un événement a été déclenché, à l’aide de |
reprompt |
En cas de substitution dans une classe dérivée, repromène l’utilisateur pour l’entrée. |
resume |
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
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
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
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
- DialogContext.cancelAllDialogs
- DialogContext.endDialog
- DialogContext.replaceDialog
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
Contexte de boîte de dialogue pour le tour de conversation actuel.
É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
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
Voir également
héritée dedialog.resumeDialog