/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { Activity } from '@microsoft/agents-activity'; import { TurnContext } from '@microsoft/agents-hosting'; import { Choice } from './choice'; /** * Additional options used to tweak the formatting of choice lists. */ export interface ChoiceFactoryOptions { /** * (Optional) character used to separate individual choices when there are more than 2 choices. * The default value is `", "`. */ inlineSeparator?: string; /** * (Optional) separator inserted between the choices when their are only 2 choices. The default * value is `" or "`. */ inlineOr?: string; /** * (Optional) separator inserted between the last 2 choices when their are more than 2 choices. * The default value is `", or "`. */ inlineOrMore?: string; /** * (Optional) if `true`, inline and list style choices will be prefixed with the index of the * choice as in "1. choice". If `false`, the list style will use a bulleted list instead. The * default value is `true`. */ includeNumbers?: boolean; } /** * A set of utility functions to assist with the formatting a 'message' activity containing a list * of choices. * */ export declare class ChoiceFactory { static readonly MAX_ACTION_TITLE_LENGTH = 20; /** * Returns a 'message' activity containing a list of choices that has been automatically * formatted based on the capabilities of a given channel. * * @param channelOrContext Channel ID or context object for the current turn of conversation. * @param choices List of choices to render. * @param text (Optional) text of the message. * @param speak (Optional) SSML to speak for the message. * @param options (Optional) formatting options to use when rendering as a list. * @param conversationType (Optional) the type of the conversation. * @returns The created message activity. */ static forChannel(channelOrContext: string | TurnContext, choices: (string | Choice)[], text?: string, speak?: string, options?: ChoiceFactoryOptions, conversationType?: string): Activity; /** * Returns a 'message' activity containing a list of choices that has been formatted as an * inline list. * * @param choices List of choices to render. * @param text (Optional) text of the message. * @param speak (Optional) SSML to speak for the message. * @param options (Optional) formatting options to tweak rendering of list. * @returns The created message activity. */ static inline(choices: (string | Choice)[], text?: string, speak?: string, options?: ChoiceFactoryOptions): Activity; /** * Returns a 'message' activity containing a list of choices that has been formatted as an * numbered or bulleted list. * * @param choices List of choices to render. * @param text (Optional) text of the message. * @param speak (Optional) SSML to speak for the message. * @param options (Optional) formatting options to tweak rendering of list. * @returns The created message activity. */ static list(choices: (string | Choice)[], text?: string, speak?: string, options?: ChoiceFactoryOptions): Activity; /** * Returns a 'message' activity containing a list of choices that has been formatted as suggested actions. * * @param choices List of choices to render. * @param text (Optional) Text of the message. * @param speak (Optional) SSML to speak for the message. * @returns The created message activity. */ static suggestedActions(choices: (string | Choice)[], text?: string, speak?: string): Activity; /** * Returns a 'message' activity that includes a list of choices that have been added as `HeroCard`'s. * * @param choices List of choices to render. * @param text (Optional) Text of the message. * @param speak (Optional) SSML to speak for the message. * @returns The created message activity with choices as a HeroCard with buttons. */ static heroCard(choices: (string | Choice)[], text?: string, speak?: string): Activity; /** * Takes a mixed list of `string` and `Choice` based choices and returns them as a `Choice[]`. * * @param choices List of choices to add. * @returns A list of choices. */ static toChoices(choices: (string | Choice)[] | undefined): Choice[]; /** * @private * Determines if a number of Suggested Actions are supported by a Channel. * @param channelId The Channel to check if Suggested Actions are supported in. * @param buttonCnt Optional. The number of Suggested Actions to check for the Channel. * @param conversationType Optional.The type of the conversation. * @returns true if the Channel supports the buttonCnt total Suggested Actions, false if the Channel does not support that number of Suggested Actions. */ private static supportsSuggestedActions; /** * @private * Determines if a number of Card Actions are supported by a Channel. * @param channelId The Channel to check if the Card Actions are supported in. * @param buttonCnt Optional. The number of Card Actions to check for the Channel. * @returns true if the Channel supports the buttonCnt total Card Actions, false if the Channel does not support that number of Card Actions. */ private static supportsCardActions; /** * @private * @param context a TurnContext object representing an incoming message. */ private static getChannelId; }