@microsoft/teams-ai
Version:
SDK focused on building AI based applications for Microsoft Teams.
212 lines • 14.8 kB
TypeScript
/**
* @module teams-ai
*/
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
import { Activity, MessagingExtensionResult, TaskModuleTaskInfo, TurnContext } from 'botbuilder';
import { Application, RouteSelector, Query } from './Application';
import { TurnState } from './TurnState';
/**
* Names of the invoke activities for Message Extensions.
*/
export declare enum MessageExtensionsInvokeNames {
/**
* Name of the invoke activity for anonymous link unfurling.
*/
ANONYMOUS_QUERY_LINK_INVOKE = "composeExtension/anonymousQueryLink",
/**
* Name of the invoke activity for fetching task module.
*/
FETCH_TASK_INVOKE = "composeExtension/fetchTask",
/**
* Name of the invoke activity for query.
*/
QUERY_INVOKE = "composeExtension/query",
/**
* Name of the invoke activity for query link.
*/
QUERY_LINK_INVOKE = "composeExtension/queryLink",
/**
* Name of the invoke activity for selecting an item.
*/
SELECT_ITEM_INVOKE = "composeExtension/selectItem",
/**
* Name of the invoke activity for submit action.
*/
SUBMIT_ACTION_INVOKE = "composeExtension/submitAction",
/**
* Name of the invoke activity for querying configuration settings.
*/
QUERY_SETTING_URL = "composeExtension/querySettingUrl",
/**
* Name of the invoke activity for configuring settings.
*/
CONFIGURE_SETTINGS = "composeExtension/setting",
/**
* Name of the invoke activity for handling on card button clicked.
*/
QUERY_CARD_BUTTON_CLICKED = "composeExtension/onCardButtonClicked"
}
/**
* MessageExtensions class to enable fluent style registration of handlers related to Message Extensions.
* @template TState Type of the turn state object being persisted.
*/
export declare class MessageExtensions<TState extends TurnState> {
private readonly _app;
/**
* Creates a new instance of the MessageExtensions class.
* @param {Application} app Top level application class to register handlers with.
*/
constructor(app: Application<TState>);
/**
* Registers a handler for a command that performs anonymous link unfurling.
* @remarks
* The `composeExtension/anonymousQueryLink` INVOKE activity does not contain any sort of command ID,
* so only a single select item handler can be registered.
* For more information visit https://learn.microsoft.com/microsoftteams/platform/messaging-extensions/how-to/link-unfurling?#enable-zero-install-link-unfurling
* @param {(context: TurnContext, state: TState, url: string) => Promise<MessagingExtensionResult>} handler - Function to call when the command is received. The handler should return a `MessagingExtensionResult`.
* @param {TurnContext} handler.context - Context for the current turn of conversation with the user.
* @param {TState} handler.state - Current state of the turn.
* @param {string} handler.url - URL to unfurl.
* @returns {Application<TState>} The application for chaining purposes.
*/
anonymousQueryLink(handler: (context: TurnContext, state: TState, url: string) => Promise<MessagingExtensionResult>): Application<TState>;
/**
* Registers a handler to process the 'edit' action of a message that's being previewed by the
* user prior to sending.
* @remarks
* This handler is called when the user clicks the 'Edit' button on a message that's being
* previewed prior to insertion into the current chat. The handler should return a new
* view that allows the user to edit the message.
* @param {string | RegExp | RouteSelector | string[] | RegExp[] | RouteSelector[]} commandId - ID of the command(s) to register the handler for.
* @param {(context: TurnContext, state: TState, previewActivity: Partial<Activity>) => Promise<MessagingExtensionResult | TaskModuleTaskInfo | string | null | undefined>} handler - Function to call when the command is received.
* @param {TurnContext} handler.context - Context for the current turn of conversation with the user.
* @param {TState} handler.state - Current state of the turn.
* @param {Partial<Activity>} handler.previewActivity - The activity that's being previewed by the user.
* @returns {Application<TState>} The application for chaining purposes.
*/
botMessagePreviewEdit(commandId: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[], handler: (context: TurnContext, state: TState, previewActivity: Partial<Activity>) => Promise<MessagingExtensionResult | TaskModuleTaskInfo | string | null | undefined>): Application<TState>;
/**
* Registers a handler to process the 'send' action of a message that's being previewed by the
* user prior to sending.
* @remarks
* This handler is called when the user clicks the 'Send' button on a message that's being
* previewed prior to insertion into the current chat. The handler should complete the flow
* by sending the message to the current chat.
* @param {string | RegExp | RouteSelector | string[] | RegExp[] | RouteSelector[]} commandId - ID of the command(s) to register the handler for.
* @param {(context: TurnContext, state: TState, previewActivity: Partial<Activity>) => Promise<void>} handler - Function to call when the command is received.
* @param {TurnContext} handler.context - Context for the current turn of conversation with the user.
* @param {TState} handler.state - Current state of the turn.
* @param {Partial<Activity>} handler.previewActivity - The activity that's being previewed by the user.
* @returns {Application<TState>} The application for chaining purposes.
*/
botMessagePreviewSend(commandId: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[], handler: (context: TurnContext, state: TState, previewActivity: Partial<Activity>) => Promise<void>): Application<TState>;
/**
* Registers a handler to process the initial fetch task for an Action based message extension.
* @remarks
* Handlers should response with either an initial TaskInfo object or a string containing
* a message to display to the user.
* @param {string | RegExp | RouteSelector | string[] | RegExp[] | RouteSelector[]} commandId - ID of the command(s) to register the handler for.
* @param {(context: TurnContext, state: TState) => Promise<TaskModuleTaskInfo | string>} handler - Function to call when the command is received.
* @param {TurnContext} handler.context - Context for the current turn of conversation with the user.
* @param {TState} handler.state - Current state of the turn.
* @returns {Application<TState>} The application for chaining purposes.
*/
fetchTask(commandId: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[], handler: (context: TurnContext, state: TState) => Promise<TaskModuleTaskInfo | string>): Application<TState>;
/**
* Registers a handler that implements a Search based Message Extension.
* @remarks
* This handler is called when the user submits a query to a Search based Message Extension.
* The handler should return a MessagingExtensionResult containing the results of the query.
* @param {string | RegExp | RouteSelector | string[] | RegExp[] | RouteSelector[]} commandId - ID of the command(s) to register the handler for.
* @template TParams
* @param {(context: TurnContext, state: TState, query: Query<TParams>) => Promise<MessagingExtensionResult>} handler - Function to call when the command is received.
* @param {TurnContext} handler.context - Context for the current turn of conversation with the user.
* @param {TState} handler.state - Current state of the turn.
* @param {Query<TParams>} handler.query - The query parameters that were sent by the client.
* @returns {Application<TState>} The application for chaining purposes.
*/
query<TParams extends Record<string, any> = Record<string, any>>(commandId: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[], handler: (context: TurnContext, state: TState, query: Query<TParams>) => Promise<MessagingExtensionResult>): Application<TState>;
/**
* Registers a handler that implements a Link Unfurling based Message Extension.
* @param {(context: TurnContext, state: TState, url: string) => Promise<MessagingExtensionResult>} handler - Function to call when the command is received.
* @param {TurnContext} handler.context - Context for the current turn of conversation with the user.
* @param {TState} handler.state - Current state of the turn.
* @param {string} handler.url - The URL that should be unfurled.
* @returns {Application<TState>} The application for chaining purposes.
*/
queryLink(handler: (context: TurnContext, state: TState, url: string) => Promise<MessagingExtensionResult>): Application<TState>;
/**
* Registers a handler that implements the logic to handle the tap actions for items returned
* by a Search based message extension.
* @remarks
* The `composeExtension/selectItem` INVOKE activity does not contain any sort of command ID,
* so only a single select item handler can be registered. Developers will need to include a
* type name of some sort in the preview item they return if they need to support multiple
* select item handlers.
* @template TItem Optional. Type of the item being selected.
* @param {(context: TurnContext, state: TState, item: TItem) => Promise<MessagingExtensionResult>} handler Function to call when the command is received.
* @param {TurnContext} handler.context Context for the current turn of conversation with the user.
* @param {TState} handler.state Current state of the turn.
* @param {TItem} handler.item The item that was selected.
* @returns {Application<TState>} The application for chaining purposes.
*/
selectItem<TItem extends Record<string, any> = Record<string, any>>(handler: (context: TurnContext, state: TState, item: TItem) => Promise<MessagingExtensionResult>): Application<TState>;
/**
* Registers a handler that implements the submit action for an Action based Message Extension.
* @template TData Optional. Type of data being submitted.
* @param {string | RegExp | RouteSelector | string[] | RegExp[] | RouteSelector[]} commandId ID of the command(s) to register the handler for.
* @param {(context: TurnContext, state: TState, data: TData) => Promise<MessagingExtensionResult | TaskModuleTaskInfo | string | null | undefined>} handler Function to call when the command is received.
* @param {TurnContext} handler.context Context for the current turn of conversation with the user.
* @param {TState} handler.state Current state of the turn.
* @param {TData} handler.data The data that was submitted.
* @returns {Application<TState>} The application for chaining purposes.
*/
submitAction<TData extends Record<string, any>>(commandId: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[], handler: (context: TurnContext, state: TState, data: TData) => Promise<MessagingExtensionResult | TaskModuleTaskInfo | string | null | undefined>): Application<TState>;
/**
* Sends the response for a submit action.
* @param {TurnContext} context The context object for the current turn of conversation with the user.
* @param {MessagingExtensionResult | TaskModuleTaskInfo | string | null | undefined} result The result of the submit action.
* @private
*/
private returnSubmitActionResponse;
/**
* Registers a handler that invokes the fetch of the configuration settings for a Message Extension.
@remarks
* The `composeExtension/querySettingUrl` INVOKE activity does not contain a command ID, so only a single select item handler can be registered.
* @param {(context: TurnContext, state: TState) => Promise<MessagingExtensionResult>} handler Function defined by the developer to call when the command is received.
* @param {TurnContext} handler.context Context for the current turn of conversation with the user.
* @param {TState} handler.state Current state of the turn.
* @returns {Application<TState>} The application for chaining purposes.
*/
queryUrlSetting(handler: (context: TurnContext, state: TState) => Promise<MessagingExtensionResult>): Application<TState>;
/**
* Registers a handler that implements the logic to invoke configuring Message Extension settings
* @remarks
* The `composeExtension/setting` INVOKE activity does not contain a command ID, so only a single select item handler can be registered.
* @template TData Message Extension settings to be configured.
* @param {(context: TurnContext, state: TState, settings: TData) => Promise<void>} handler Function defined by the developer to call when the command is received.
* @param {TurnContext} handler.context Context for the current turn of conversation with the user.
* @param {TState} handler.state Current state of the turn.
* @param {TData} handler.settings The configuration settings that was submitted.
* @returns {Application<TState>} The application for chaining purposes.
*/
configureSettings<TData extends Record<string, any>>(handler: (context: TurnContext, state: TState, settings: TData) => Promise<void>): Application<TState>;
/**
* Registers a handler that implements the logic when a user has clicked on a button in a Message Extension card.
* @remarks
* The `composeExtension/onCardButtonClicked` INVOKE activity does not contain any sort of command ID,
* so only a single select item handler can be registered. Developers will need to include a
* type name of some sort in the preview item they return if they need to support multiple select item handlers.
* @template TData Message Extension data passed on invoke.
* @param {(context: TurnContext, state: TState, data: TData) => Promise<void>} handler Function defined by the developer to call when the command is received.
* @param {TurnContext} handler.context Context for the current turn of conversation with the user.
* @param {TState} handler.state Current state of the turn.
* @param {TData} handler.data The data that was submitted.
* @returns {Application<TState>} The application for chaining purposes.
*/
handleOnButtonClicked<TData extends Record<string, any>>(handler: (context: TurnContext, state: TState, data: TData) => Promise<void>): Application<TState>;
}
//# sourceMappingURL=MessageExtensions.d.ts.map