OAuthPrompt class
Cria um novo prompt que solicita que o usuário entre usando o serviço SSO (Logon Único) do Bot Frameworks.
- Extends
Comentários
O prompt tentará recuperar o token atual dos usuários e, se o usuário não estiver conectado, ele enviará um OAuthCard
contendo um botão que poderá pressionar para entrar. Dependendo do canal, o usuário será enviado por meio de um dos dois fluxos de entrada possíveis:
- O fluxo de entrada automática em que, depois que o usuário entrar e o serviço de SSO encaminhar o bot, os usuários acessarão o token usando uma atividade de
event
ouinvoke
. - O fluxo de "código mágico" em que, quando o usuário entrar, ele será solicitado pelo serviço de SSO a enviar ao bot um código de seis dígitos confirmando sua identidade. Esse código será enviado como uma atividade de
message
padrão.
Ambos os fluxos são automaticamente compatíveis com o OAuthPrompt
e a única coisa que você precisa ter cuidado é que você não bloqueia as atividades de event
e invoke
que o prompt pode estar aguardando.
Nota
Você deve evitar persistir o token de acesso com outros estados de bots. O serviço SSO do Bot Frameworks armazenará com segurança o token em seu nome. Se você armazená-lo no estado de bots, ele poderá expirar ou ser revogado entre turnos.
Ao chamar o prompt de dentro de uma etapa de cascata, você deve usar o token dentro da etapa após o prompt e, em seguida, deixar o token sair do escopo no final da função.
Uso de prompt
Quando usado com seus bots DialogSet
você pode simplesmente adicionar uma nova instância do prompt como uma caixa de diálogo nomeada usando DialogSet.add()
. Em seguida, você pode iniciar o prompt de uma etapa de cascata usando DialogContext.beginDialog()
ou DialogContext.prompt()
. O usuário será solicitado a entrar conforme necessário e seu token de acesso será passado como um argumento para os chamadores na próxima etapa de 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();
}
}
]));
Construtores
OAuth |
Cria uma nova instância OAuthPrompt. |
Propriedades
id | ID exclusiva da caixa de diálogo. Define a ID exclusiva da caixa de diálogo. |
telemetry |
Obtém o cliente de telemetria para esta caixa de diálogo. Define o cliente de telemetria para essa caixa de diálogo. |
Propriedades herdadas
End |
Obtém um resultado de fim de turno padrão. |
Métodos
begin |
Chamado quando uma caixa de diálogo de prompt é enviada por push para a pilha de diálogo e está sendo ativada. |
continue |
Chamado quando uma caixa de diálogo de prompt é a caixa de diálogo ativa e o usuário respondeu com uma nova atividade. |
get |
Tenta recuperar o token armazenado para o usuário atual. |
recognize |
Implementação compartilhada da função RecognizeTokenAsync. Isso destina-se ao uso interno, para consolidar a implementação do OAuthPrompt e do OAuthInput. A lógica do aplicativo deve usar essas classes de diálogo. |
send |
Envia um cartão OAuth. |
sign |
Desconscreve o usuário do serviço. |
Métodos herdados
configure(Record<string, unknown>) | Método fluente para configurar o objeto. |
end |
Quando substituído em uma classe derivada, executa a limpeza da caixa de diálogo antes de terminar. |
get |
|
get |
Uma cadeia de caracteres codificada usada para ajudar na detecção de alterações de bot na re-implantação. |
on |
Chamado quando um evento foi gerado, usando |
reprompt |
Quando substituído em uma classe derivada, reprompta o usuário para entrada. |
resume |
Quando substituído em uma classe derivada, retoma a caixa de diálogo após a caixa de diálogo acima dela na pilha ser concluída. |
Detalhes do construtor
OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)
Cria uma nova instância OAuthPrompt.
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
Parâmetros
- dialogId
-
string
ID exclusiva da caixa de diálogo em seu DialogSet
pai ou ComponentDialog
.
- settings
- OAuthPromptSettings
Configurações usadas para configurar o prompt.
- validator
-
PromptValidator<TokenResponse>
(Opcional) validador que será chamado sempre que o usuário responder ao prompt.
Detalhes da propriedade
id
ID exclusiva da caixa de diálogo. Define a ID exclusiva da caixa de diálogo.
string id
Valor da propriedade
string
A ID da caixa de diálogo.
Comentários
Isso será gerado automaticamente se não for especificado.
telemetryClient
Obtém o cliente de telemetria para esta caixa de diálogo. Define o cliente de telemetria para essa caixa de diálogo.
BotTelemetryClient telemetryClient
Valor da propriedade
BotTelemetryClient
O
Detalhes das propriedades herdadas
EndOfTurn
Obtém um resultado de fim de turno padrão.
static EndOfTurn: DialogTurnResult
Valor da propriedade
Comentários
Esse resultado indica que uma caixa de diálogo (ou uma etapa lógica em uma caixa de diálogo) concluiu o processamento para a curva atual, ainda está ativa e está aguardando mais entrada.
Detalhes do método
beginDialog(DialogContext, PromptOptions)
Chamado quando uma caixa de diálogo de prompt é enviada por push para a pilha de diálogo e está sendo ativada.
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
Parâmetros
O DialogContext para a virada atual da conversa.
- options
- PromptOptions
Opcional. promptOptions, informações adicionais a serem passadas para o prompt que está sendo iniciado.
Retornos
Promise<DialogTurnResult>
Um Promise
que representa a operação assíncrona.
Comentários
Se a tarefa for bem-sucedida, o resultado indicará se o prompt ainda está ativo após a curva ter sido processada pelo prompt.
continueDialog(DialogContext)
Chamado quando uma caixa de diálogo de prompt é a caixa de diálogo ativa e o usuário respondeu com uma nova atividade.
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Parâmetros
O DialogContext para a virada atual da conversa.
Retornos
Promise<DialogTurnResult>
Um Promise
que representa a operação assíncrona.
Comentários
Se a tarefa for bem-sucedida, o resultado indicará se a caixa de diálogo ainda estará ativa depois que a curva tiver sido processada pela caixa de diálogo. O prompt geralmente continua a receber as respostas do usuário até aceitar a resposta do usuário como entrada válida para o prompt.
getUserToken(TurnContext, string)
Tenta recuperar o token armazenado para o usuário atual.
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
Parâmetros
- context
-
TurnContext
Referência de contexto do usuário que está sendo pesquisado.
- code
-
string
(Opcional) código de logon recebido do usuário.
Retornos
Promise<TokenResponse | undefined>
A resposta do token.
recognizeToken(DialogContext)
Implementação compartilhada da função RecognizeTokenAsync. Isso destina-se ao uso interno, para consolidar a implementação do OAuthPrompt e do OAuthInput. A lógica do aplicativo deve usar essas classes de diálogo.
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
Parâmetros
O DialogContext para a virada atual da conversa.
Retornos
Promise<PromptRecognizerResult<TokenResponse>>
Uma promessa que resolve para o resultado
sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)
Envia um cartão OAuth.
static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>
Parâmetros
- settings
- OAuthPromptSettings
Configurações do OAuth.
- turnContext
-
TurnContext
Transforme o contexto.
- prompt
-
string | Partial<Activity>
Atividade de mensagem.
Retornos
Promise<void>
signOutUser(TurnContext)
Desconscreve o usuário do serviço.
function signOutUser(context: TurnContext): Promise<void>
Parâmetros
- context
-
TurnContext
Contexto que faz referência ao usuário que está sendo desconscrevido.
Retornos
Promise<void>
Uma promessa que representa a operação assíncrona.
Comentários
Este exemplo mostra a criação de uma instância do prompt e, em seguida, a assinatura do usuário.
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
Detalhes do método herdado
configure(Record<string, unknown>)
Método fluente para configurar o objeto.
function configure(config: Record<string, unknown>): this
Parâmetros
- config
-
Record<string, unknown>
Configurações a serem aplicadas.
Retornos
this
O configurável após a conclusão da operação.
Herdado deConfigurble.configure
endDialog(TurnContext, DialogInstance, DialogReason)
Quando substituído em uma classe derivada, executa a limpeza da caixa de diálogo antes de terminar.
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
Parâmetros
- _context
-
TurnContext
O objeto de contexto para a curva.
- _instance
- DialogInstance
Informações de estado atuais para essa caixa de diálogo.
- _reason
- DialogReason
O motivo pelo qual a caixa de diálogo está terminando.
Retornos
Promise<void>
Comentários
As caixas de diálogo derivadas que precisam executar o registro em log ou a limpeza antes de terminar devem substituir esse método. Por padrão, esse método não tem efeito.
O dialogContext
Consulte também
- DialogContext.cancelAllDialogs
- dialogContext.endDialog
-
DialogContext.replaceDialog
herdado dedialog.endDialog
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
Parâmetros
- _property
-
string
A chave da configuração do seletor condicional.
Retornos
O conversor para a configuração do seletor.
herdado deconfigurable.getConverter
getVersion()
Uma cadeia de caracteres codificada usada para ajudar na detecção de alterações de bot na re-implantação.
function getVersion(): string
Retornos
string
Cadeia de caracteres exclusiva que só deve ser alterada quando a caixa de diálogo foi alterada de uma maneira que deve reiniciar a caixa de diálogo.
Comentários
Esse padrão é retornar as caixas de diálogo id mas pode ser substituído para fornecer uma lógica de detecção de alterações mais precisa. Qualquer caixa de diálogo na pilha que tenha sua alteração de versão resultará em um evento versionChanged
será gerado. Se esse evento não for tratado pelo bot, um erro será gerado, resultando na execução da lógica do manipulador de erros de bots.
Retornar uma cadeia de caracteres vazia desabilitará o acompanhamento de versão para o componente.
herdado dedialog.getVersion
onDialogEvent(DialogContext, DialogEvent)
Chamado quando um evento foi gerado, usando DialogContext.emitEvent()
, pela caixa de diálogo atual ou por uma caixa de diálogo iniciada pela caixa de diálogo atual.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
Parâmetros
O contexto da caixa de diálogo para a virada atual da conversa.
O evento que está sendo gerado.
Retornos
Promise<boolean>
True se o evento for tratado pela caixa de diálogo atual e o borbulhamento deve parar.
herdado da caixa de diálogo.onDialogEvent
repromptDialog(TurnContext, DialogInstance)
Quando substituído em uma classe derivada, reprompta o usuário para entrada.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
Parâmetros
- _context
-
TurnContext
O objeto de contexto para a curva.
- _instance
- DialogInstance
Informações de estado atuais para essa caixa de diálogo.
Retornos
Promise<void>
Comentários
Caixas de diálogo derivadas que dão suporte à validação e à lógica de nova solicitação devem substituir esse método. Por padrão, esse método não tem efeito.
O
Consulte também
Herdado deDialog.repromptDialog
resumeDialog(DialogContext, DialogReason, any)
Quando substituído em uma classe derivada, retoma a caixa de diálogo após a caixa de diálogo acima dela na pilha ser concluída.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
Parâmetros
O contexto da curva de diálogo atual.
- reason
- DialogReason
O motivo pelo qual a caixa de diálogo está sendo retomada. Normalmente, isso será dialogReason.endCalled
- result
-
any
Opcional. O valor retornado, se houver, da caixa de diálogo que terminou.
Retornos
Promise<DialogTurnResult>
Uma promessa de resolução para o resultado da curva da caixa de diálogo.
Comentários
Caixas de diálogo derivadas que dão suporte a conversas de várias voltas devem substituir esse método. Por padrão, esse método sinaliza que a caixa de diálogo está concluída e retorna.
O DialogContext chama esse método quando ele retoma a caixa de diálogo. Se a caixa de diálogo anterior na pilha retornar um valor, esse valor estará no parâmetro result
.
Para iniciar uma caixa de diálogo filho
Consulte também
Herdado deDialog.resumeDialog