@microsoft/agents-activity
Version:
Microsoft 365 Agents SDK for JavaScript. Activity Protocol serialization and deserialization.
237 lines (236 loc) • 7.1 kB
TypeScript
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
import { Activity } from '../activity';
import { Entity } from './entity';
/**
* Supported icon names for client citations. These icons are displayed in Teams to help users
* identify the type of content being referenced in AI-generated responses.
*/
export type ClientCitationIconName =
/** Microsoft Word document icon */
'Microsoft Word'
/** Microsoft Excel spreadsheet icon */
| 'Microsoft Excel'
/** Microsoft PowerPoint presentation icon */
| 'Microsoft PowerPoint'
/** Microsoft OneNote notebook icon */
| 'Microsoft OneNote'
/** Microsoft SharePoint site or document icon */
| 'Microsoft SharePoint'
/** Microsoft Visio diagram icon */
| 'Microsoft Visio'
/** Microsoft Loop component icon */
| 'Microsoft Loop'
/** Microsoft Whiteboard icon */
| 'Microsoft Whiteboard'
/** Adobe Illustrator vector graphics icon */
| 'Adobe Illustrator'
/** Adobe Photoshop image editing icon */
| 'Adobe Photoshop'
/** Adobe InDesign layout design icon */
| 'Adobe InDesign'
/** Adobe Flash multimedia icon */
| 'Adobe Flash'
/** Sketch design tool icon */
| 'Sketch'
/** Source code file icon */
| 'Source Code'
/** Generic image file icon */
| 'Image'
/** Animated GIF image icon */
| 'GIF'
/** Video file icon */
| 'Video'
/** Audio/sound file icon */
| 'Sound'
/** ZIP archive file icon */
| 'ZIP'
/** Plain text file icon */
| 'Text'
/** PDF document icon */
| 'PDF';
/**
* Represents a Teams client citation to be included in a message.
*
* @remarks
* [Learn more about Bot messages with AI-generated content](https://learn.microsoft.com/microsoftteams/platform/bots/how-to/bot-messages-ai-generated-content?tabs=before%2Cbotmessage)
*/
export interface ClientCitation {
/**
* Required; must be "Claim"
*/
'@type': 'Claim';
/**
* Required. Number and position of the citation.
*/
position: number;
/**
* Optional; if provided, the citation will be displayed in the message.
*/
appearance: {
/**
* Required; Must be 'DigitalDocument'
*/
'@type': 'DigitalDocument';
/**
* Name of the document. (max length 80)
*/
name: string;
/**
* Stringified adaptive card with additional information about the citation.
* It is rendered within the modal.
*/
text?: string;
/**
* URL of the document. This will make the name of the citation clickable and direct the user to the specified URL.
*/
url?: string;
/**
* Extract of the referenced content. (max length 160)
*/
abstract: string;
/**
* Encoding format of the `citation.appearance.text` field.
*/
encodingFormat?: 'application/vnd.microsoft.card.adaptive';
/**
* Information about the citation’s icon.
*/
image?: {
'@type': 'ImageObject';
/**
* The image/icon name
*/
name: ClientCitationIconName;
};
/**
* Optional; set by developer. (max length 3) (max keyword length 28)
*/
keywords?: string[];
/**
* Optional sensitivity content information.
*/
usageInfo?: SensitivityUsageInfo;
};
}
/**
* Sensitivity usage info for content sent to the user.
*
* @remarks
* This is used to provide information about the content to the user. See {@link ClientCitation} for more information.
*/
export interface SensitivityUsageInfo {
/**
* Must be "https://schema.org/Message"
*/
type: 'https://schema.org/Message';
/**
* Required; Set to CreativeWork;
*/
'@type': 'CreativeWork';
/**
* Sensitivity description of the content
*/
description?: string;
/**
* Sensitivity title of the content
*/
name: string;
/**
* Optional; ignored in Teams.
*/
position?: number;
/**
* Optional; if provided, the content is considered sensitive and should be handled accordingly.
*/
pattern?: {
/**
* Set to DefinedTerm
*/
'@type': 'DefinedTerm';
inDefinedTermSet: string;
/**
* Color
*/
name: string;
/**
* e.g. #454545
*/
termCode: string;
};
}
export interface AIEntity extends Entity {
/**
* Required as 'https://schema.org/Message'
*/
type: 'https://schema.org/Message';
/**
* Required as 'Message
*/
'@type': 'Message';
/**
* Required as 'https://schema.org
*/
'@context': 'https://schema.org';
/**
* Must be left blank. This is for Bot Framework schema.
*/
'@id': '';
/**
* Indicate that the content was generated by AI.
*/
additionalType: ['AIGeneratedContent'];
/**
* Optional; if citations object is included, the sent activity will include the citations, referenced in the activity text.
*/
citation?: ClientCitation[];
/**
* Optional; if usage_info object is included, the sent activity will include the sensitivity usage information.
*/
usageInfo?: SensitivityUsageInfo;
}
/**
* Adds an AI entity to an activity to indicate that the content was generated by AI.
*
* @param activity - The activity to which the AI entity will be added. The activity's entities array will be initialized if it doesn't exist.
* @param citations - Optional array of client citations to include with the AI-generated content.
* Citations provide references to sources used in generating the content and are displayed in Teams.
* @param usageInfo - Optional sensitivity usage information that provides context about the content's sensitivity level.
* This helps users understand any special handling requirements for the content.
*
* @remarks
* This function enhances the activity with metadata that helps clients (like Microsoft Teams)
* understand that the content is AI-generated and optionally includes citations and sensitivity information.
*
* @example
* ```typescript
* import { Activity } from '../activity';
* import { addAIToActivity, ClientCitation } from './AIEntity';
*
* const activity: Activity = {
* type: 'message',
* text: 'Based on the documents, here are the key findings...'
* };
*
* const citations: ClientCitation[] = [{
* '@type': 'Claim',
* position: 1,
* appearance: {
* '@type': 'DigitalDocument',
* name: 'Research Report 2024',
* abstract: 'Key findings from the annual research report',
* url: 'https://example.com/report.pdf',
* image: {
* '@type': 'ImageObject',
* name: 'PDF'
* }
* }
* }];
*
* // Add AI entity with citations
* addAIToActivity(activity, citations);
* ```
*/
export declare const addAIToActivity: (activity: Activity, citations?: ClientCitation[], usageInfo?: SensitivityUsageInfo) => void;