aimpress-chatbot/node_modules/botbuilder-core/lib/turnContext.d.ts
“SamoilenkoVadym” 55445dbc86
Some checks failed
Build and deploy Node.js app to Azure Web App - ChatBot2222 / build (push) Has been cancelled
Build and deploy Node.js app to Azure Web App - ChatBot2222 / deploy (push) Has been cancelled
Deploy bot to Azure
2025-04-27 19:55:19 +01:00

559 lines
No EOL
24 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
import { BotAdapter } from './botAdapter';
import { TurnContextStateCollection } from './turnContextStateCollection';
import { Activity, ConversationReference, ResourceResponse, Mention } from 'botframework-schema';
/**
* A handler that can participate in send activity events for the current turn.
*
* @remarks
* **Parameters**
*
* | Name | Type | Description |
* | :--- | :--- | :--- |
* | `context` | [TurnContext](xref:botbuilder-core.TurnContext) | The context object for the turn. |
* | `activities` | Partial\<[Activity](xref:botframework-schema.Activity)>[] | The activities to send. |
* | `next` | () => Promise\<[ResourceResponse](xref:botframework-schema.ResourceResponse)[]> | The function to call to continue event processing. |
*
* **Returns**
*
* Promise\<[ResourceResponse](xref:botframework-schema.ResourceResponse)[]>
*
* A handler calls the `next` function to pass control to the next registered handler. If a handler
* doesn't call the `next` function, the adapter does not call any of the subsequent handlers and
* does not send the activities to the user.
*
* If the activities are successfully sent, the `next` function returns an array of
* [ResourceResponse](xref:botframework-schema.ResourceResponse) objects containing the IDs that the
* receiving channel assigned to the activities. Use this array as the return value of this handler.
*
* **See also**
*
* - [BotAdapter](xref:botbuilder-core.BotAdapter)
* - [UpdateActivityHandler](xref:botbuilder-core.UpdateActivityHandler)
* - [DeleteActivityHandler](xref:botbuilder-core.DeleteActivityHandler)
* - [TurnContext.onSendActivities](xref:botbuilder-core.TurnContext.onSendActivities)
*/
export declare type SendActivitiesHandler = (context: TurnContext, activities: Partial<Activity>[], next: () => Promise<ResourceResponse[]>) => Promise<ResourceResponse[]>;
/**
* A handler that can participate in update activity events for the current turn.
*
* @remarks
* **Parameters**
*
* | Name | Type | Description |
* | :--- | :--- | :--- |
* | `context` | [TurnContext](xref:botbuilder-core.TurnContext) | The context object for the turn. |
* | `activities` | Partial\<[Activity](xref:botframework-schema.Activity)> | The replacement activity. |
* | `next` | () => Promise\<void> | The function to call to continue event processing. |
*
* A handler calls the `next` function to pass control to the next registered handler.
* If a handler doesnt call the `next` function, the adapter does not call any of the
* subsequent handlers and does not attempt to update the activity.
*
* The `activity` parameter's [id](xref:botframework-schema.Activity.id) property indicates which activity
* in the conversation to replace.
*
* **See also**
*
* - [BotAdapter](xref:botbuilder-core.BotAdapter)
* - [SendActivitiesHandler](xref:botbuilder-core.SendActivitiesHandler)
* - [DeleteActivityHandler](xref:botbuilder-core.DeleteActivityHandler)
* - [TurnContext.onUpdateActivity](xref:botbuilder-core.TurnContext.onUpdateActivity)
*/
export declare type UpdateActivityHandler = (context: TurnContext, activity: Partial<Activity>, next: () => Promise<void>) => Promise<void>;
/**
* A handler that can participate in delete activity events for the current turn.
*
* @remarks
* **Parameters**
*
* | Name | Type | Description |
* | :--- | :--- | :--- |
* | `context` | [TurnContext](xref:botbuilder-core.TurnContext) | The context object for the turn. |
* | `reference` | Partial\<[ConversationReference](xref:botframework-schema.ConversationReference)> | The conversation containing the activity to delete. |
* | `next` | () => Promise\<void> | The function to call to continue event processing. |
*
* A handler calls the `next` function to pass control to the next registered handler.
* If a handler doesnt call the `next` function, the adapter does not call any of the
* subsequent handlers and does not attempt to delete the activity.
*
* The `reference` parameter's [activityId](xref:botframework-schema.ConversationReference.activityId) property indicates which activity
* in the conversation to delete.
*
* **See also**
*
* - [BotAdapter](xref:botbuilder-core.BotAdapter)
* - [SendActivitiesHandler](xref:botbuilder-core.SendActivitiesHandler)
* - [UpdateActivityHandler](xref:botbuilder-core.UpdateActivityHandler)
* - [TurnContext.onDeleteActivity](xref:botbuilder-core.TurnContext.onDeleteActivity)
*/
export declare type DeleteActivityHandler = (context: TurnContext, reference: Partial<ConversationReference>, next: () => Promise<void>) => Promise<void>;
export declare const BotCallbackHandlerKey = "botCallbackHandler";
export interface TurnContext {
}
/**
* Provides context for a turn of a bot.
*
* @remarks
* Context provides information needed to process an incoming activity. The context object is
* created by a [BotAdapter](xref:botbuilder-core.BotAdapter) and persists for the length of the turn.
*/
export declare class TurnContext {
private _adapter?;
private _activity?;
private _respondedRef;
private _turnState;
private _onSendActivities;
private _onUpdateActivity;
private _onDeleteActivity;
private readonly _turn;
private readonly _locale;
/**
* Creates an new instance of the [TurnContext](xref:xref:botbuilder-core.TurnContext) class.
*
* @param adapterOrContext The adapter creating the context.
* @param request The incoming activity for the turn.
*/
constructor(adapterOrContext: BotAdapter, request: Partial<Activity>);
/**
* Creates an new instance of the [TurnContext](xref:xref:botbuilder-core.TurnContext) class.
*
* @param adapterOrContext The context object to clone.
*/
constructor(adapterOrContext: TurnContext);
/**
* Removes at mentions for the activity's [recipient](xref:botframework-schema.Activity.recipient)
* from the text of an activity and returns the updated text.
* Use with caution; this function alters the activity's [text](xref:botframework-schema.Activity.text) property.
*
* @param activity The activity to remove at mentions from.
* @returns The updated activity's text.
* @remarks
* Some channels, for example Microsoft Teams, add at-mention details to the text of a message activity.
*
* Use this helper method to modify the activity's [text](xref:botframework-schema.Activity.text) property.
* It removes all at mentions of the activity's [recipient](xref:botframework-schema.Activity.recipient)
* and then returns the updated property value.
*
* For example:
* ```JavaScript
* const updatedText = TurnContext.removeRecipientMention(turnContext.request);
* ```
* **See also**
* - [removeMentionText](xref:botbuilder-core.TurnContext.removeMentionText)
*/
static removeRecipientMention(activity: Partial<Activity>): string;
/**
* Removes at mentions for a given ID from the text of an activity and returns the updated text.
* Use with caution; this function alters the activity's [text](xref:botframework-schema.Activity.text) property.
*
* @param activity The activity to remove at mentions from.
* @param id The ID of the user or bot to remove at mentions for.
* @returns The updated activity's text.
* @remarks
* Some channels, for example Microsoft Teams, add at mentions to the text of a message activity.
*
* Use this helper method to modify the activity's [text](xref:botframework-schema.Activity.text) property.
* It removes all at mentions for the given bot or user ID and then returns the updated property value.
*
* For example, when you remove mentions of **echoBot** from an activity containing the text "@echoBot Hi Bot",
* the activity text is updated, and the method returns "Hi Bot".
*
* The format of a mention [entity](xref:botframework-schema.Entity) is channel-dependent.
* However, the mention's [text](xref:botframework-schema.Mention.text) property should contain
* the exact text for the user as it appears in the activity text.
*
* For example, whether the channel uses "<at>username</at>" or "@username", this string is in
* the activity's text, and this method will remove all occurrences of that string from the text.
*
* For example:
* ```JavaScript
* const updatedText = TurnContext.removeMentionText(activity, activity.recipient.id);
* ```
* **See also**
* - [removeRecipientMention](xref:botbuilder-core.TurnContext.removeRecipientMention)
*/
static removeMentionText(activity: Partial<Activity>, id: string): string;
/**
* Gets all at-mention entities included in an activity.
*
* @param activity The activity.
* @returns All the at-mention entities included in an activity.
* @remarks
* The activity's [entities](xref:botframework-schema.Activity.entities) property contains a flat
* list of metadata objects pertaining to this activity and can contain
* [mention](xref:botframework-schema.Mention) entities. This method returns all such entities
* for a given activity.
*
* For example:
* ```JavaScript
* const mentions = TurnContext.getMentions(turnContext.request);
* ```
*/
static getMentions(activity: Partial<Activity>): Mention[];
/**
* Copies conversation reference information from an activity.
*
* @param activity The activity to get the information from.
* @returns A conversation reference for the conversation that contains this activity.
* @remarks
* You can save the conversation reference as a JSON object and use it later to proactively message the user.
*
* For example:
* ```JavaScript
* const reference = TurnContext.getConversationReference(context.request);
* ```
*
* **See also**
*
* - [BotAdapter.continueConversation](xref:botbuilder-core.BotAdapter.continueConversation)
*/
static getConversationReference(activity: Partial<Activity>): Partial<ConversationReference>;
/**
* Updates an activity with the delivery information from an existing conversation reference.
*
* @param activity The activity to update.
* @param reference The conversation reference to copy delivery information from.
* @param isIncoming Optional. `true` to treat the activity as an incoming activity, where the
* bot is the recipient; otherwise, `false`. Default is `false`, and the activity will show
* the bot as the sender.
* @returns This activity, updated with the delivery information.
* @remarks
* Call the [getConversationReference](xref:botbuilder-core.TurnContext.getConversationReference)
* method on an incoming activity to get a conversation reference that you can then use
* to update an outgoing activity with the correct delivery information.
*/
static applyConversationReference(activity: Partial<Activity>, reference: Partial<ConversationReference>, isIncoming?: boolean): Partial<Activity>;
/**
* Copies conversation reference information from a resource response for a sent activity.
*
* @param activity The sent activity.
* @param reply The resource response for the activity, returned by the
* [sendActivity](xref:botbuilder-core.TurnContext.sendActivity) or
* [sendActivities](xref:botbuilder-core.TurnContext.sendActivities) method.
* @returns A ConversationReference that can be stored and used later to delete or update the activity.
* @remarks
* You can save the conversation reference as a JSON object and use it later to update or delete the message.
*
* For example:
* ```javascript
* var reply = await context.sendActivity('Hi');
* var reference = TurnContext.getReplyConversationReference(context.activity, reply);
* ```
*
* **See also**
*
* - [deleteActivity](xref:botbuilder-core.TurnContext.deleteActivity)
* - [updateActivity](xref:botbuilder-core.TurnContext.updateActivity)
*/
static getReplyConversationReference(activity: Partial<Activity>, reply: ResourceResponse): Partial<ConversationReference>;
/**
* List of activities to send when `context.activity.deliveryMode == 'expectReplies'`.
*/
readonly bufferedReplyActivities: Partial<Activity>[];
/**
* Asynchronously sends an activity to the sender of the incoming activity.
*
* @param name The activity or text to send.
* @param value Optional. The text to be spoken by your bot on a speech-enabled channel.
* @param valueType Optional. Indicates whether your bot is accepting, expecting, or ignoring user
* @param label Optional. Indicates whether your bot is accepting, expecting, or ignoring user
* @returns A promise with a ResourceResponse.
* @remarks
* Creates and sends a Trace activity. Trace activities are only sent when the channel is the emulator.
*
* For example:
* ```JavaScript
* await context.sendTraceActivity(`The following exception was thrown ${msg}`);
* ```
*
* **See also**
*
* - [sendActivities](xref:botbuilder-core.TurnContext.sendActivities)
*/
sendTraceActivity(name: string, value?: any, valueType?: string, label?: string): Promise<ResourceResponse | undefined>;
/**
* Asynchronously sends an activity to the sender of the incoming activity.
*
* @param activityOrText The activity or text to send.
* @param speak Optional. The text to be spoken by your bot on a speech-enabled channel.
* @param inputHint Optional. Indicates whether your bot is accepting, expecting, or ignoring user
* input after the message is delivered to the client. One of: 'acceptingInput', 'ignoringInput',
* or 'expectingInput'. Default is 'acceptingInput'.
* @returns A promise with a ResourceResponse.
* @remarks
* If the activity is successfully sent, results in a
* [ResourceResponse](xref:botframework-schema.ResourceResponse) object containing the ID that the
* receiving channel assigned to the activity.
*
* See the channel's documentation for limits imposed upon the contents of the **activityOrText** parameter.
*
* To control various characteristics of your bot's speech such as voice, rate, volume, pronunciation,
* and pitch, specify **speak** in Speech Synthesis Markup Language (SSML) format.
*
* For example:
* ```JavaScript
* await context.sendActivity(`Hello World`);
* ```
*
* **See also**
*
* - [sendActivities](xref:botbuilder-core.TurnContext.sendActivities)
* - [updateActivity](xref:botbuilder-core.TurnContext.updateActivity)
* - [deleteActivity](xref:botbuilder-core.TurnContext.deleteActivity)
*/
sendActivity(activityOrText: string | Partial<Activity>, speak?: string, inputHint?: string): Promise<ResourceResponse | undefined>;
/**
* Asynchronously sends a set of activities to the sender of the incoming activity.
*
* @param activities The activities to send.
* @returns A promise with a ResourceResponse.
* @remarks
* If the activities are successfully sent, results in an array of
* [ResourceResponse](xref:botframework-schema.ResourceResponse) objects containing the IDs that
* the receiving channel assigned to the activities.
*
* Before they are sent, the delivery information of each outbound activity is updated based on the
* delivery information of the inbound inbound activity.
*
* For example:
* ```JavaScript
* await context.sendActivities([
* { type: 'typing' },
* { type: 'delay', value: 2000 },
* { type: 'message', text: 'Hello... How are you?' }
* ]);
* ```
*
* **See also**
*
* - [sendActivity](xref:botbuilder-core.TurnContext.sendActivity)
* - [updateActivity](xref:botbuilder-core.TurnContext.updateActivity)
* - [deleteActivity](xref:botbuilder-core.TurnContext.deleteActivity)
*/
sendActivities(activities: Partial<Activity>[]): Promise<ResourceResponse[]>;
/**
* Asynchronously updates a previously sent activity.
*
* @param activity The replacement for the original activity.
* @returns A promise with a ResourceResponse.
* @remarks
* The [id](xref:botframework-schema.Activity.id) of the replacement activity indicates the activity
* in the conversation to replace.
*
* For example:
* ```JavaScript
* const matched = /approve (.*)/i.exec(context.activity.text);
* if (matched) {
* const update = await approveExpenseReport(matched[1]);
* await context.updateActivity(update);
* }
* ```
*
* **See also**
*
* - [sendActivity](xref:botbuilder-core.TurnContext.sendActivity)
* - [deleteActivity](xref:botbuilder-core.TurnContext.deleteActivity)
* - [getReplyConversationReference](xref:botbuilder-core.TurnContext.getReplyConversationReference)
*/
updateActivity(activity: Partial<Activity>): Promise<ResourceResponse | void>;
/**
* Asynchronously deletes a previously sent activity.
*
* @param idOrReference ID or conversation reference for the activity to delete.
* @returns A promise representing the async operation.
* @remarks
* If an ID is specified, the conversation reference for the current request is used
* to get the rest of the information needed.
*
* For example:
* ```JavaScript
* const matched = /approve (.*)/i.exec(context.activity.text);
* if (matched) {
* const savedId = await approveExpenseReport(matched[1]);
* await context.deleteActivity(savedId);
* }
* ```
*
* **See also**
*
* - [sendActivity](xref:botbuilder-core.TurnContext.sendActivity)
* - [updateActivity](xref:botbuilder-core.TurnContext.updateActivity)
* - [getReplyConversationReference](xref:botbuilder-core.TurnContext.getReplyConversationReference)
*/
deleteActivity(idOrReference: string | Partial<ConversationReference>): Promise<void>;
/**
* Adds a response handler for send activity operations.
*
* @param handler The handler to add to the context object.
* @returns The updated context object.
* @remarks
* This method returns a reference to the turn context object.
*
* When the [sendActivity](xref:botbuilder-core.TurnContext.sendActivity) or
* [sendActivities](xref:botbuilder-core.TurnContext.sendActivities) method is called,
* the registered handlers are called in the order in which they were added to the context object
* before the activities are sent.
*
* This example shows how to listen for and log outgoing `message` activities.
*
* ```JavaScript
* context.onSendActivities(async (ctx, activities, next) => {
* // Log activities before sending them.
* activities.filter(a => a.type === 'message').forEach(a => logSend(a));
*
* // Allow the send process to continue.
* next();
* });
* ```
*/
onSendActivities(handler: SendActivitiesHandler): this;
/**
* Adds a response handler for update activity operations.
*
* @param handler The handler to add to the context object.
* @returns The updated context object.
* @remarks
* This method returns a reference to the turn context object.
*
* When the [updateActivity](xref:botbuilder-core.TurnContext.updateActivity) method is called,
* the registered handlers are called in the order in which they were added to the context object
* before the activity is updated.
*
* This example shows how to listen for and log activity updates.
*
* ```JavaScript
* context.onUpdateActivity(async (ctx, activity, next) => {
* // Replace activity
* await next();
*
* // Log update
* logUpdate(activity);
* });
* ```
*/
onUpdateActivity(handler: UpdateActivityHandler): this;
/**
* Adds a response handler for delete activity operations.
*
* @param handler The handler to add to the context object.
* @returns The updated context object.
* @remarks
* This method returns a reference to the turn context object.
*
* When the [deleteActivity](xref:botbuilder-core.TurnContext.deleteActivity) method is called,
* the registered handlers are called in the order in which they were added to the context object
* before the activity is deleted.
*
* This example shows how to listen for and log activity deletions.
*
* ```JavaScript
* context.onDeleteActivity(async (ctx, reference, next) => {
* // Delete activity
* await next();
*
* // Log delete
* logDelete(activity);
* });
* ```
*/
onDeleteActivity(handler: DeleteActivityHandler): this;
/**
* Called when this turn context object is passed into the constructor for a new turn context.
*
* @param context The new turn context object.
* @remarks
* This copies private members from this object to the new object.
* All property values are copied by reference.
*
* Override this in a derived class to copy any additional members, as necessary.
*/
protected copyTo(context: TurnContext): void;
/**
* Gets the bot adapter that created this context object.
*
* @returns The bot adapter that created this context object.
*/
get adapter(): BotAdapter;
/**
* Gets the activity associated with this turn.
*
* @returns The activity associated with this turn.
* @remarks
* This example shows how to get the users trimmed utterance from the activity:
*
* ```JavaScript
* const utterance = (context.activity.text || '').trim();
* ```
*/
get activity(): Activity;
/**
* Indicates whether the bot has replied to the user this turn.
*
* @returns True if at least one response was sent for the current turn; otherwise, false.
* @remarks
* **true** if at least one response was sent for the current turn; otherwise, **false**.
* Use this to determine if your bot needs to run fallback logic after other normal processing.
*
* Trace activities do not set this flag.
*
* for example:
* ```JavaScript
* await routeActivity(context);
* if (!context.responded) {
* await context.sendActivity(`I'm sorry. I didn't understand.`);
* }
* ```
*/
get responded(): boolean;
/**
* Sets the response flag on the current turn context.
*
* @remarks
* The [sendActivity](xref:botbuilder-core.TurnContext.sendActivity) and
* [sendActivities](xref:botbuilder-core.TurnContext.sendActivities) methods call this method to
* update the responded flag. You can call this method directly to indicate that your bot has
* responded appropriately to the incoming activity.
*/
set responded(value: boolean);
/**
* Gets the locale stored in the turnState.
*
* @returns The locale stored in the turnState.
*/
get locale(): string | undefined;
/**
* Sets the locale stored in the turnState.
*/
set locale(value: string | undefined);
/**
* Gets the services registered on this context object.
*
* @returns The services registered on this context object.
* @remarks
* Middleware, other components, and services will typically use this to cache information
* that could be asked for by a bot multiple times during a turn. You can use this cache to
* pass information between components of your bot.
*
* For example:
* ```JavaScript
* const cartKey = Symbol();
* const cart = await loadUsersShoppingCart(context);
* context.turnState.set(cartKey, cart);
* ```
*
* > [!TIP]
* > When creating middleware or a third-party component, use a unique symbol for your cache key
* > to avoid state naming collisions with the bot or other middleware or components.
*/
get turnState(): TurnContextStateCollection;
/**
* @private
* Executes `handlers` as a chain, returning a promise that resolves to the final result.
*/
private emit;
}
//# sourceMappingURL=turnContext.d.ts.map