UNPKG

@microsoft/teams.apps

Version:

<p> <a href="https://www.npmjs.com/package/@microsoft/teams.apps" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.apps/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.apps?activeTab=code

157 lines 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActivityContext = void 0; const teams_api_1 = require("@microsoft/teams.api"); class ActivityContext { appId; activity; ref; log; api; appGraph; userGraph; storage; stream; isSignedIn; connectionName; next; _plugin; _next; constructor(plugin, value) { Object.assign(this, value); this._plugin = plugin; this.stream = plugin.createStream(value.ref); this.connectionName = value.connectionName; if (value.activity.type === 'message') { value.activity = teams_api_1.MessageActivity.from(value.activity).toInterface(); } if (value.activity.type === 'messageUpdate') { value.activity = teams_api_1.MessageUpdateActivity.from(value.activity).toInterface(); } if (value.activity.type === 'messageDelete') { value.activity = teams_api_1.MessageDeleteActivity.from(value.activity).toInterface(); } if (value.activity.type === 'typing') { value.activity = teams_api_1.TypingActivity.from(value.activity).toInterface(); } } async send(activity, conversationRef) { return await this._plugin.send((0, teams_api_1.toActivityParams)(activity), conversationRef ?? this.ref); } async reply(activity) { activity = (0, teams_api_1.toActivityParams)(activity); activity.replyToId = this.activity.id; if (activity.type === 'message' && activity.text) { const blockQuote = this.buildBlockQuoteForActivity(); if (blockQuote) { activity.text = `${blockQuote}\r\n${activity.text}`; } } return this.send(activity); } async signin(options) { const { oauthCardText, signInButtonText, connectionName, signInLink, overrideSignInActivity } = { oauthCardText: 'Please Sign In...', signInButtonText: 'Sign In', ...options, }; const convo = { ...this.ref }; try { const res = await this.api.users.token.get({ channelId: this.activity.channelId, userId: this.activity.from.id, connectionName: connectionName || this.connectionName, }); return res.token; } catch (err) { // noop } const tokenExchangeState = { connectionName: connectionName || this.connectionName, conversation: convo, relatesTo: this.activity.relatesTo, msAppId: this.appId, }; if (this.activity.conversation.isGroup) { // create new 1:1 conversation with user to do SSO // because groupchats don't support it. const res = await this.api.conversations.create({ tenantId: this.activity.conversation.tenantId, isGroup: false, bot: { id: this.activity.recipient.id }, members: [this.activity.from], }); await this.send({ type: 'message', text: oauthCardText }); convo.conversation = { id: res.id }; } const state = Buffer.from(JSON.stringify(tokenExchangeState)).toString('base64'); const resource = await this.api.bots.signIn.getResource({ state }); await this.send(overrideSignInActivity?.(resource.tokenExchangeResource, resource.tokenPostResource, resource.signInLink) ?? { type: 'message', inputHint: 'acceptingInput', recipient: this.activity.from, conversation: convo.conversation, attachments: [ (0, teams_api_1.cardAttachment)('oauth', { text: oauthCardText, connectionName: connectionName || this.connectionName, tokenExchangeResource: resource.tokenExchangeResource, tokenPostResource: resource.tokenPostResource, buttons: [ { type: 'signin', title: signInButtonText, value: signInLink || resource.signInLink, }, ], }), ], }, convo); } async signout(connectionName) { await this.api.users.token.signOut({ channelId: this.activity.channelId, userId: this.activity.from.id, connectionName: connectionName || this.connectionName, }); } toInterface() { return { activity: this.activity, api: this.api, appGraph: this.appGraph, userGraph: this.userGraph, appId: this.appId, log: this.log, ref: this.ref, storage: this.storage, stream: this.stream, isSignedIn: this.isSignedIn, connectionName: this.connectionName, next: this.next.bind(this), reply: this.reply.bind(this), send: this.send.bind(this), signin: this.signin.bind(this), signout: this.signout.bind(this), }; } buildBlockQuoteForActivity() { if (this.activity.type === 'message' && this.activity.text) { const maxLength = 120; const truncatedText = this.activity.text.length > maxLength ? `${this.activity.text.substring(0, maxLength)}...` : this.activity.text; return `<blockquote itemscope="" itemtype="http://schema.skype.com/Reply" itemid="${this.activity.id}"> <strong itemprop="mri" itemid="${this.activity.from.id}">${this.activity.from.name}</strong><span itemprop="time" itemid="${this.activity.id}"></span> <p itemprop="preview">${truncatedText}</p> </blockquote>`; } else { this.log.debug('Skipping building blockquote for activity type:', this.activity.type); } return null; } } exports.ActivityContext = ActivityContext; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dHMvYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBZ0I4QjtBQXdKOUIsTUFBYSxlQUFlO0lBRTFCLEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBSztJQUNiLEdBQUcsQ0FBeUI7SUFDNUIsR0FBRyxDQUFXO0lBQ2QsR0FBRyxDQUFhO0lBQ2hCLFFBQVEsQ0FBZTtJQUN2QixTQUFTLENBQWU7SUFDeEIsT0FBTyxDQUFZO0lBQ25CLE1BQU0sQ0FBWTtJQUNsQixVQUFVLENBQVc7SUFDckIsY0FBYyxDQUFTO0lBQ3ZCLElBQUksQ0FFMEQ7SUFHcEQsT0FBTyxDQUFVO0lBQ2pCLEtBQUssQ0FFK0M7SUFFOUQsWUFBWSxNQUFlLEVBQUUsS0FBa0M7UUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxLQUFLLENBQUMsUUFBUSxHQUFHLDJCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxLQUFLLENBQUMsUUFBUSxHQUFHLGlDQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENB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