Поделиться через


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();
         }
     }
]));

Конструкторы

OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)

Создает экземпляр OAuthPrompt.

Свойства

id

Уникальный идентификатор диалогового окна. Задает уникальный идентификатор диалогового окна.

telemetryClient

Возвращает клиент телеметрии для этого диалогового окна. Задает клиент телеметрии для этого диалогового окна.

Унаследованные свойства

EndOfTurn

Возвращает результат окончания поворота по умолчанию.

Методы

beginDialog(DialogContext, PromptOptions)

Вызывается, когда диалоговое окно с запросом помещается в стек диалогов и активируется.

continueDialog(DialogContext)

Вызывается, когда диалоговое окно с запросом является активным и пользователь ответил новым действием.

getUserToken(TurnContext, string)

Пытается получить сохраненный маркер для текущего пользователя.

recognizeToken(DialogContext)

Общая реализация функции RecognizeTokenAsync. Это предназначено для внутреннего использования, чтобы консолидировать реализацию OAuthPrompt и OAuthInput. Логика приложения должна использовать эти классы диалогов.

sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)

Отправляет карточку OAuth.

signOutUser(TurnContext)

Выход пользователя из службы.

Наследуемые методы

configure(Record<string, unknown>)

Метод Fluent для настройки объекта .

endDialog(TurnContext, DialogInstance, DialogReason)

При переопределении в производном классе выполняет очистку диалога до его завершения.

getConverter(string)
getVersion()

Закодированная строка, используемая для обнаружения изменений бота при повторном развертывании.

onDialogEvent(DialogContext, DialogEvent)

Вызывается при возникновении события с помощью DialogContext.emitEvent(), текущим диалогом или диалогом, запущенным текущим диалогом.

repromptDialog(TurnContext, DialogInstance)

При переопределении в производном классе повторно запрашивает пользователя для ввода данных.

resumeDialog(DialogContext, DialogReason, any)

При переопределении в производном классе возобновляет диалог после завершения диалога над ним в стеке.

Сведения о конструкторе

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>

Параметры

dc
DialogContext

DialogContext для текущего поворота диалога.

options
PromptOptions

Необязательный элемент. PromptOptions — дополнительные сведения для передачи в запускаемый запрос.

Возвращаемое значение

Promise<DialogTurnResult>

Promise, представляющий асинхронную операцию.

Комментарии

Если задача выполнена успешно, результат показывает, активен ли запрос после обработки запроса.

continueDialog(DialogContext)

Вызывается, когда диалоговое окно с запросом является активным и пользователь ответил новым действием.

function continueDialog(dc: DialogContext): Promise<DialogTurnResult>

Параметры

dc
DialogContext

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

Параметры

dc
DialogContext

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>

Параметры

dc
DialogContext

Контекст диалога для текущего диалога.

e
DialogEvent

Создаваемое событие.

Возвращаемое значение

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>

Параметры

dc
DialogContext

Контекст для текущего диалогового окна.

reason
DialogReason

Причина возобновления диалога. Обычно это DialogReason.endCalled.

result

any

Необязательный элемент. Возвращаемое значение, если таковое имеется, из оконченного диалогового окна.

Возвращаемое значение

Promise<DialogTurnResult>

Обещание, разрешающееся в результатах поворота диалогового окна.

Комментарии

Производные диалоги, поддерживающие беседы с несколькими шагами, должны переопределять этот метод. По умолчанию этот метод сообщает о завершении диалога и возвращает значение .

DialogContext вызывает этот метод при возобновлении диалога. Если в предыдущем диалоговом окне в стеке возвращалось значение, это значение находится в параметре result .

Чтобы запустить дочерний диалог, используйте DialogContext.beginDialog или DialogContext.prompt; однако этот диалог не обязательно будет запускать дочерний диалог. Чтобы сообщить контексту диалога о завершении этого диалога, перед выходом из этого метода дождитесь dialogContext.endDialog .

См. также:

Наследуется отDialog.resumeDialog