OAuthPrompt class
Создает новый запрос, предлагающий пользователю войти с помощью службы единого входа Bot Frameworks.
- Extends
Комментарии
Запрос попытается получить текущий маркер пользователя, и если пользователь не вошел в систему, он отправит ему OAuthCard
сообщение с кнопкой, которую можно нажать для входа. В зависимости от канала пользователь будет отправляться через один из двух возможных потоков входа:
- Поток автоматического входа, в котором после входа пользователя и службы единого входа будет пересылать боту маркер доступа пользователей
event
с помощью действия илиinvoke
. - Поток "волшебного кода", в котором после входа пользователя служба единого входа предложит боту отправить шестизначный код, подтверждающий его личность. Этот код будет отправлен в качестве стандартного
message
действия.
Оба потока автоматически поддерживаются , OAuthPrompt
и единственное, что нужно быть осторожным, это не блокировать event
действия и invoke
, которые может ожидать запрос.
Примечание
Не следует сохранять маркер доступа в другом состоянии ботов. Служба единого входа Bot Frameworks будет безопасно хранить маркер от вашего имени. Если вы храните его в состоянии ботов, он может истечь или быть отозван в промежутке между поворотами.
При вызове запроса из каскадного шага следует использовать маркер в шаге, следующем за запросом, а затем разрешить маркеру выйти за пределы области в конце функции.
Использование запроса
При использовании с ботами 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
Значение свойства
Комментарии
Этот результат означает, что диалог (или логический шаг в диалоговом окне) завершил обработку для текущего шага, по-прежнему активен и ожидает дополнительных входных данных.
Наследуется отDialog.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 после завершения операции.
Наследуется от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, если событие обрабатывается текущим диалоговым окном и восходящий поток должен прекратиться.
Наследуется отDialog.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
.
Чтобы запустить дочерний диалог, используйте DialogContext.beginDialog или DialogContext.prompt; однако этот диалог не обязательно будет запускать дочерний диалог. Чтобы сообщить контексту диалога о завершении этого диалога, перед выходом из этого метода дождитесь dialogContext.endDialog .
См. также:
Наследуется отDialog.resumeDialog