@microsoft/agents-hosting-extensions-teams
Version:
Microsoft 365 Agents SDK for JavaScript. Teams extensions
215 lines • 10.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TeamsAgentExtension = void 0;
const meeting_1 = require("./meeting/meeting");
const agents_activity_1 = require("@microsoft/agents-activity");
const agents_hosting_1 = require("@microsoft/agents-hosting");
const teamsChannelDataParser_1 = require("./activity-extensions/teamsChannelDataParser");
const messageExtension_1 = require("./messageExtension/messageExtension");
const taskModule_1 = require("./taskModule/taskModule");
class TeamsAgentExtension extends agents_hosting_1.AgentExtension {
constructor(app) {
super('msteams');
this._app = app;
this._meeting = new meeting_1.Meeting(app);
this._messageExtension = new messageExtension_1.MessageExtension(app);
this._taskModule = new taskModule_1.TaskModule(app);
}
get meeting() {
return this._meeting;
}
get messageExtension() {
return this._messageExtension;
}
get taskModule() {
return this._taskModule;
}
onFeedback(handler) {
const routeSel = (context) => {
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.Invoke &&
context.activity.channelId === 'msteams' &&
context.activity.name === 'message/submitAction' &&
context.activity.value.actionName === 'feedback');
};
this._app.addRoute(routeSel, handler, true); // Invoke requires true
return this;
}
onMessageEdit(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(!!(context.activity.type === agents_activity_1.ActivityTypes.MessageUpdate && (channelData === null || channelData === void 0 ? void 0 : channelData.eventType) === 'editMessage'));
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onMessageDelete(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.MessageDelete && channelData && channelData.eventType === 'softDeleteMessage');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onMessageUndelete(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.MessageUpdate && channelData && channelData.eventType === 'undeleteMessage');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsMembersAdded(handler) {
const routeSel = (context) => {
return Promise.resolve(!!(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
context.activity.membersAdded &&
context.activity.membersAdded.length > 0));
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsMembersRemoved(handler) {
const routeSel = (context) => {
return Promise.resolve(!!(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
context.activity.membersRemoved &&
context.activity.membersRemoved.length > 0));
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsChannelCreated(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'channelCreated');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsChannelDeleted(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'channelDeleted');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsChannelRenamed(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'channelRenamed');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsChannelRestored(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'channelRestored');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsChannelShared(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'channelShared');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsChannelUnshared(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'channelUnshared');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsTeamRenamed(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'teamRenamed');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsTeamArchived(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'teamArchived');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsTeamUnarchived(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'teamUnarchived');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsTeamDeleted(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'teamDeleted');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsTeamHardDeleted(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'teamHardDeleted');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
onTeamsTeamRestored(handler) {
const routeSel = (context) => {
const channelData = (0, teamsChannelDataParser_1.parseTeamsChannelData)(context.activity.channelData);
return Promise.resolve(context.activity.type === agents_activity_1.ActivityTypes.ConversationUpdate &&
context.activity.channelId === 'msteams' &&
channelData &&
channelData.eventType === 'teamRestored');
};
this.addRoute(this._app, routeSel, handler, false);
return this;
}
}
exports.TeamsAgentExtension = TeamsAgentExtension;
//# sourceMappingURL=teamsAgentExtension.js.map