OAuthPrompt class
Создает новый запрос, запрашивающий вход пользователя с помощью службы единого входа Bot Frameworks.
- Extends
Комментарии
Запрос попытается получить текущий маркер пользователей, и если пользователь не вошел в систему, он отправит им OAuthCard
с кнопкой, которую они могут нажать, чтобы войти. В зависимости от канала пользователь будет отправлен через один из двух возможных потоков входа:
- Поток автоматического входа, когда пользователь войдет в систему и служба единого входа перенаправит бот маркера доступа пользователей с помощью действия
event
илиinvoke
. - Поток "магического кода", в котором после входа пользователя в систему будет предложено службе единого входа отправить боту шестизначный код, подтверждающий их личность. Этот код будет отправлен как стандартное действие
message
.
Оба потока автоматически поддерживаются OAuthPrompt
, и единственное, что необходимо будьте осторожны, заключается в том, что вы не блокируете event
и invoke
действия, которые может ожидать запрос.
Заметка
Следует избегать сохранения маркера доступа с помощью ботов другого состояния. Служба единого входа Bot Framework обеспечивает безопасное хранение маркера от вашего имени. Если вы храните его в состоянии ботов, срок его действия может истекает или отозван между поворотами.
При вызове запроса в каскадном шаге следует использовать маркер на шаге после запроса, а затем позволить маркеру выйти из области в конце функции.
Использование запроса
При использовании с ботами DialogSet
можно просто добавить новый экземпляр запроса в виде именованного диалогового окна с помощью DialogSet.add()
. Затем можно запустить запрос с каскадного шага с помощью DialogContext.beginDialog()
или DialogContext.prompt()
. Пользователю будет предложено выполнить вход по мере необходимости, и его маркер доступа будет передан в качестве аргумента вызывающим пользователям следующего каскадного шага:
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();
}
}
]));
Конструкторы
OAuth |
Создает новый экземпляр OAuthPrompt. |
Свойства
id | Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна. |
telemetry |
Возвращает клиент телеметрии для этого диалогового окна. Задает клиент телеметрии для этого диалогового окна. |
Унаследованные свойства
End |
Возвращает результат конца по умолчанию. |
Методы
begin |
Вызывается, когда диалоговое окно запроса отправляется в стек диалогов и активируется. |
continue |
Вызывается, когда диалоговое окно запроса является активным диалогом, и пользователь ответил на новое действие. |
get |
Пытается получить сохраненный маркер для текущего пользователя. |
recognize |
Общая реализация функции RecognizeTokenAsync. Это предназначено для внутреннего использования для консолидации реализации OAuthPrompt и OAuthInput. Логика приложения должна использовать эти классы диалогов. |
send |
Отправляет карточку OAuth. |
sign |
Подписывает пользователя из службы. |
Наследуемые методы
configure(Record<string, unknown>) | Метод Fluent для настройки объекта. |
end |
При переопределении в производном классе выполняет очистку диалогового окна перед завершением. |
get |
|
get |
Кодированная строка, используемая для обнаружения изменений бота при повторном развертывании. |
on |
Вызывается при возникновении события, используя |
reprompt |
При переопределении в производном классе переиздает пользователя для ввода. |
resume |
При переопределении в производном классе возобновляет диалоговое окно после завершения диалогового окна над ним в стеке. |
Сведения о конструкторе
OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)
Создает новый экземпляр OAuthPrompt.
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
Параметры
- dialogId
-
string
Уникальный идентификатор диалогового окна в родительском DialogSet
или ComponentDialog
.
- settings
- OAuthPromptSettings
Параметры, используемые для настройки запроса.
- validator
-
PromptValidator<TokenResponse>
(Необязательно) проверяющий элемент, который будет вызываться каждый раз, когда пользователь отвечает на запрос.
Сведения о свойстве
id
Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна.
string id
Значение свойства
string
Идентификатор диалогового окна.
Комментарии
Это будет автоматически создано, если не указано.
telemetryClient
Возвращает клиент телеметрии для этого диалогового окна. Задает клиент телеметрии для этого диалогового окна.
BotTelemetryClient telemetryClient
Значение свойства
BotTelemetryClient
BotTelemetryClient для ведения журнала.
Сведения об унаследованном свойстве
EndOfTurn
Возвращает результат конца по умолчанию.
static EndOfTurn: DialogTurnResult
Значение свойства
Комментарии
Этот результат указывает, что диалоговое окно (или логический шаг в диалоговом окне) завершило обработку текущего шага, по-прежнему активно и ожидает дополнительных входных данных.
унаследован от диалогового окна.EndOfTurn
Сведения о методе
beginDialog(DialogContext, PromptOptions)
Вызывается, когда диалоговое окно запроса отправляется в стек диалогов и активируется.
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
Параметры
DialogContext для текущей очереди беседы.
- options
- PromptOptions
Необязательный. PromptOptions, дополнительные сведения для передачи в запущенный запрос.
Возвращаемое значение
Promise<DialogTurnResult>
Promise
, представляющий асинхронную операцию.
Комментарии
Если задача выполнена успешно, результат указывает, активен ли запрос после обработки поворота с помощью запроса.
continueDialog(DialogContext)
Вызывается, когда диалоговое окно запроса является активным диалогом, и пользователь ответил на новое действие.
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Параметры
DialogContext для текущей очереди беседы.
Возвращаемое значение
Promise<DialogTurnResult>
Promise
, представляющий асинхронную операцию.
Комментарии
Если задача выполнена успешно, результат указывает, активен ли диалог после обработки в диалоговом окне. Обычно запрос продолжает получать ответы пользователя, пока он не принимает ответ пользователя в качестве допустимых входных данных для запроса.
getUserToken(TurnContext, string)
Пытается получить сохраненный маркер для текущего пользователя.
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
Параметры
- context
-
TurnContext
Контекст ссылается на пользователя, который ищется.
- code
-
string
(Необязательно) код входа, полученный от пользователя.
Возвращаемое значение
Promise<TokenResponse | undefined>
Ответ маркера.
recognizeToken(DialogContext)
Общая реализация функции RecognizeTokenAsync. Это предназначено для внутреннего использования для консолидации реализации OAuthPrompt и OAuthInput. Логика приложения должна использовать эти классы диалогов.
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
Параметры
DialogContext для текущей очереди беседы.
Возвращаемое значение
Promise<PromptRecognizerResult<TokenResponse>>
Обещание, разрешающее результат
sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)
Отправляет карточку OAuth.
static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>
Параметры
- settings
- OAuthPromptSettings
Параметры OAuth.
- turnContext
-
TurnContext
Переключение контекста.
- prompt
-
string | Partial<Activity>
Действие сообщения.
Возвращаемое значение
Promise<void>
signOutUser(TurnContext)
Подписывает пользователя из службы.
function signOutUser(context: TurnContext): Promise<void>
Параметры
- context
-
TurnContext
Контекст, ссылающийся на пользователя, который выполняется выход.
Возвращаемое значение
Promise<void>
Обещание, представляющее асинхронную операцию.
Комментарии
В этом примере показано создание экземпляра запроса и выход пользователя.
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
Сведения о наследуемом методе
configure(Record<string, unknown>)
Метод Fluent для настройки объекта.
function configure(config: Record<string, unknown>): this
Параметры
- config
-
Record<string, unknown>
Параметры конфигурации для применения.
Возвращаемое значение
this
После завершения операции настраиваемый.
наследуется отConfigurable.configure
endDialog(TurnContext, DialogInstance, DialogReason)
При переопределении в производном классе выполняет очистку диалогового окна перед завершением.
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
Параметры
- _context
-
TurnContext
Объект контекста для поворота.
- _instance
- DialogInstance
Текущие сведения о состоянии для этого диалогового окна.
- _reason
- DialogReason
Причина окончания диалогового окна.
Возвращаемое значение
Promise<void>
Комментарии
Производные диалоги, которые должны выполнять ведение журнала или очистку перед завершением, должны переопределить этот метод. По умолчанию этот метод не действует.
DialogContext вызывает этот метод при завершении текущего диалога.
См. также
унаследован отDialog.endDialog
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
Параметры
- _property
-
string
Ключ конфигурации условного селектора.
Возвращаемое значение
Преобразователь конфигурации селектора.
унаследован отConfigurable.getConverter
getVersion()
Кодированная строка, используемая для обнаружения изменений бота при повторном развертывании.
function getVersion(): string
Возвращаемое значение
string
Уникальная строка, которая должна изменяться только при изменении диалогового окна таким образом, чтобы перезапустить диалоговое окно.
Комментарии
По умолчанию возвращается диалоговое окно идентификатор, но его можно переопределить, чтобы обеспечить более точную логику обнаружения изменений. Любое диалоговое окно в стеке с изменением версии приведет к возникновению события versionChanged
. Если это событие не обрабатывается ботом, возникает ошибка, в результате чего выполняется логика обработчика ошибок ботов.
Возврат пустой строки отключит отслеживание версий для компонента вместе.
унаследовано отDialog.getVersion
onDialogEvent(DialogContext, DialogEvent)
Вызывается при возникновении события, используя DialogContext.emitEvent()
, текущим диалогом или диалогом, запущенным текущим диалогом.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
Параметры
Контекст диалогового окна для текущей очереди беседы.
Возникает событие.
Возвращаемое значение
Promise<boolean>
Значение True, если событие обрабатывается текущим диалогом, а пузырьк должен остановиться.
наследуется от диалогового окна.onDialogEvent
repromptDialog(TurnContext, DialogInstance)
При переопределении в производном классе переиздает пользователя для ввода.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
Параметры
- _context
-
TurnContext
Объект контекста для поворота.
- _instance
- DialogInstance
Текущие сведения о состоянии для этого диалогового окна.
Возвращаемое значение
Promise<void>
Комментарии
Производные диалоги, поддерживающие проверку и логику повторного запроса, должны переопределить этот метод. По умолчанию этот метод не действует.
DialogContext вызывает этот метод, когда текущее диалоговое окно должно повторно запрашивать входные данные от пользователя. Этот метод реализуется для диалоговых окон запроса.
См. также
унаследован отDialog.repromptDialog
resumeDialog(DialogContext, DialogReason, any)
При переопределении в производном классе возобновляет диалоговое окно после завершения диалогового окна над ним в стеке.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
Параметры
Контекст текущего диалогового окна.
- reason
- DialogReason
Причина возобновления диалога. Обычно это будет DialogReason.endCalled
- result
-
any
Необязательный. Возвращаемое значение, если таковое имеется, из диалогового окна, завершившегося.
Возвращаемое значение
Promise<DialogTurnResult>
Обещание разрешения результата поворота диалогового окна.
Комментарии
Производные диалоги, поддерживающие несколько поворотов бесед, должны переопределить этот метод. По умолчанию этот метод сигнализирует о том, что диалоговое окно завершено и возвращается.
DialogContext вызывает этот метод при возобновлении диалога. Если предыдущее диалоговое окно в стеке вернуло значение, это значение находится в параметре result
.
Чтобы запустить диалоговое окно
См. также
унаследовано отDialog.resumeDialog