UNPKG

type2docfx

Version:

A tool to convert json format output from TypeDoc to universal reference model for DocFx to consume.

94 lines 3.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const prompt_1 = require("./prompt"); //import * as Recognizers from '@microsoft/recognizers-text-date-time'; const Recognizers = require('@microsoft/recognizers-text-date-time'); const dateTimeModel = Recognizers.DateTimeRecognizer.instance.getDateTimeModel('en-us'); /** * Prompts a user to enter a datetime expression. By default the prompt will return to the * calling dialog a `FoundDatetime[]` but this can be overridden using a custom `PromptValidator`. * * **Example usage:** * * ```JavaScript * const { DialogSet, DatetimePrompt } = require('botbuilder-dialogs'); * * const dialogs = new DialogSet(); * * dialogs.add('datetimePrompt', new DatetimePrompt()); * * dialogs.add('datetimeDemo', [ * function (context) { * return dialogs.prompt(context, 'datetimePrompt', `datetime: enter a datetime`); * }, * function (context, values) { * context.reply(`Recognized values: ${JSON.stringify(values)}`); * return dialogs.end(context); * } * ]); * ``` */ class DatetimePrompt { /** * Creates a new instance of the prompt. * * **Example usage:** * * ```JavaScript * dialogs.add('timePrompt', new DatetimePrompt((context, values) => { * try { * if (values.length < 0) { throw new Error('missing time') } * if (values[0].type !== 'datetime') { throw new Error('unsupported type') } * const value = new Date(values[0].value); * if (value.getTime() < new Date().getTime()) { throw new Error('in the past') } * return dialogs.end(context, value); * } catch (err) { * context.reply(`Please enter a valid time in the future like "tomorrow at 9am" or say "cancel".`); * return Promise.resolve(); * } * })); * ``` * @param validator (Optional) validator that will be called each time the user responds to the prompt. */ constructor(validator) { this.validator = validator; } begin(context, dialogs, options) { // Persist options const instance = dialogs.getInstance(context); instance.state = options || {}; // Send initial prompt if (instance.state.prompt) { context.reply(prompt_1.formatPrompt(instance.state.prompt, instance.state.speak)); } return Promise.resolve(); } continue(context, dialogs) { // Recognize value const options = dialogs.getInstance(context).state; const utterance = context.request && context.request.text ? context.request.text : ''; const results = dateTimeModel.parse(utterance); const value = results.length > 0 && results[0].resolution ? (results[0].resolution.values || []) : []; if (this.validator) { // Call validator for further processing return Promise.resolve(this.validator(context, value, dialogs)); } else if (value.length > 0) { // Return recognized value return dialogs.end(context, value); } else { if (options.retryPrompt) { // Send retry prompt to user context.reply(prompt_1.formatPrompt(options.retryPrompt, options.retrySpeak)); } else if (options.prompt) { // Send original prompt to user context.reply(prompt_1.formatPrompt(options.prompt, options.speak)); } return Promise.resolve(); } } } exports.DatetimePrompt = DatetimePrompt; //# sourceMappingURL=datetimePrompt.js.map