@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
67 lines • 4.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FunctionContext = void 0;
const teams_api_1 = require("@microsoft/teams.api");
const function_context_1 = require("../utils/function-context");
/**
* Context handed to a remotely-callable function (`app.function`).
*
* Like {@link ActivityContext}, this is a "smart" context: it owns conversation
* resolution and sending rather than having `App` wire those up at registration.
* That keeps `App.function` thin and mirrors the Python SDK's `FunctionContext`.
*/
class FunctionContext {
appId;
appSessionId;
tenantId;
userId;
userName;
teamId;
messageId;
channelId;
chatId;
meetingId;
pageId;
subPageId;
authToken;
api;
appGraph;
log;
data;
getCurrentConversationId;
activitySender;
botId;
constructor(options) {
const { activitySender, botId, ...rest } = options;
Object.assign(this, rest);
this.activitySender = activitySender;
this.botId = botId;
// Cache a single resolver so repeated `getCurrentConversationId`/`send`
// calls reuse the resolved (and member-validated) conversation id.
this.getCurrentConversationId = (0, function_context_1.getConversationIdResolver)(this.api, this.log.child('getCurrentConversationId'), this);
}
async send(activity) {
const conversationId = await this.getCurrentConversationId();
if (!conversationId) {
return null;
}
if (!this.botId) {
throw new Error('App has no credentials set up');
}
const params = (0, teams_api_1.toActivityParams)(activity);
const ref = {
channelId: 'msteams',
serviceUrl: this.api.serviceUrl,
bot: {
id: this.botId,
role: 'bot',
},
conversation: {
id: conversationId,
},
};
return await this.activitySender.send(params, ref);
}
}
exports.FunctionContext = FunctionContext;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dHMvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBTThCO0FBSzlCLGdFQUFzRTtBQThEdEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSxlQUFlO0lBQzFCLEtBQUssQ0FBVTtJQUNmLFlBQVksQ0FBVTtJQUN0QixRQUFRLENBQVU7SUFDbEIsTUFBTSxDQUFVO0lBQ2hCLFFBQVEsQ0FBVTtJQUNsQixNQUFNLENBQVU7SUFDaEIsU0FBUyxDQUFVO0lBQ25CLFNBQVMsQ0FBVTtJQUNuQixNQUFNLENBQVU7SUFDaEIsU0FBUyxDQUFVO0lBQ25CLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQVU7SUFDbkIsU0FBUyxDQUFVO0lBRW5CLEdBQUcsQ0FBYTtJQUNoQixRQUFRLENBQWU7SUFDdkIsR0FBRyxDQUFXO0lBQ2QsSUFBSSxDQUFLO0lBRUEsd0JBQXdCLENBQW9DO0lBRXBELGNBQWMsQ0FBa0I7SUFDaEMsS0FBSyxDQUFVO0lBRWhDLFlBQVksT0FBbUM7UUFDN0MsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsd0VBQXdFO1FBQ3hFLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBQSw0Q0FBeUIsRUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUMxQyxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFhRCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQWdEO1FBQ3pELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFN0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUEwQjtZQUNqQyxTQUFTLEVBQUUsU0FBUztZQUNwQixVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVO1lBQy9CLEdBQUcsRUFBRTtnQkFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLEtBQUs7YUFDWjtZQUNELFlBQVksRUFBRTtnQkFDWixFQUFFLEVBQUUsY0FBYzthQUNzQjtTQUMzQyxDQUFDO1FBRUYsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUE3RUQsMENBNkVDIn0=