UNPKG

botbuilder-dialogs

Version:

A dialog stack based conversation manager for Microsoft BotBuilder.

71 lines (66 loc) 2.76 kB
/** * @module botbuilder-dialogs */ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { Attachment, InputHints, TurnContext } from 'botbuilder-core'; import { Prompt, PromptOptions, PromptRecognizerResult, PromptValidator } from './prompt'; /** * Prompts a user to upload attachments like images. * * @remarks * By default the prompt will return to the calling dialog an `Attachment[]`. */ export class AttachmentPrompt extends Prompt<Attachment[]> { /** * Creates a new `AttachmentPrompt` instance. * * @param dialogId Unique ID of the dialog within its parent `DialogSet` or `ComponentDialog`. * @param validator (Optional) validator that will be called each time the user responds to the prompt. */ constructor(dialogId: string, validator?: PromptValidator<Attachment[]>) { super(dialogId, validator); } /** * Prompts the user for input. * * @param context Context for the current turn of conversation with the user. * @param state Contains state for the current instance of the prompt on the dialog stack. * @param options A prompt options object constructed from the options initially provided * in the call to Prompt. * @param isRetry `true` if this is the first time this prompt dialog instance * on the stack is prompting the user for input; otherwise, false. * @returns A Promise representing the asynchronous operation. */ protected async onPrompt( context: TurnContext, state: any, options: PromptOptions, isRetry: boolean ): Promise<void> { if (isRetry && options.retryPrompt) { await context.sendActivity(options.retryPrompt, undefined, InputHints.ExpectingInput); } else if (options.prompt) { await context.sendActivity(options.prompt, undefined, InputHints.ExpectingInput); } } /** * Attempts to recognize the user's input. * * @param context Context for the current turn of conversation with the user. * @param _state Contains state for the current instance of the prompt on the dialog stack. * @param _options A prompt options object constructed from the options initially provided * in the call to Prompt. * @returns A Promise representing the asynchronous operation. */ protected async onRecognize( context: TurnContext, _state: any, _options: PromptOptions ): Promise<PromptRecognizerResult<Attachment[]>> { const value: Attachment[] = context.activity.attachments; return Array.isArray(value) && value.length > 0 ? { succeeded: true, value: value } : { succeeded: false }; } }