@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
172 lines • 13.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTeamsBotApplicationTracer = getTeamsBotApplicationTracer;
exports.getTeamsBotApplicationMeter = getTeamsBotApplicationMeter;
exports.recordTeamsBotActivityReceived = recordTeamsBotActivityReceived;
exports.recordTeamsBotActivityProcessDuration = recordTeamsBotActivityProcessDuration;
exports.recordTeamsBotHandlerDispatched = recordTeamsBotHandlerDispatched;
exports.recordTeamsBotHandlerDuration = recordTeamsBotHandlerDuration;
exports.recordTeamsBotHandlerFailure = recordTeamsBotHandlerFailure;
exports.recordTeamsBotHandlerUnmatched = recordTeamsBotHandlerUnmatched;
exports.recordTeamsBotOAuthOperation = recordTeamsBotOAuthOperation;
exports.recordTeamsBotOAuthOperationDuration = recordTeamsBotOAuthOperationDuration;
exports.recordTeamsBotOAuthError = recordTeamsBotOAuthError;
exports.recordTeamsBotApplicationException = recordTeamsBotApplicationException;
const api_1 = require("@opentelemetry/api");
const package_json_1 = __importDefault(require("../../package.json"));
const constants_1 = require("./constants");
const telemetry_1 = require("./telemetry");
let activitiesReceivedCounter;
let activityProcessDurationHistogram;
let handlerDispatchedCounter;
let handlerDurationHistogram;
let handlerFailuresCounter;
let handlerUnmatchedCounter;
let oauthOperationsCounter;
let oauthOperationDurationHistogram;
let oauthErrorsCounter;
/**
* @internal
* Gets the OpenTelemetry tracer used by future Teams apps package instrumentation.
*/
function getTeamsBotApplicationTracer() {
return api_1.trace.getTracer(telemetry_1.TeamsBotApplicationTelemetry.tracerName, package_json_1.default.version);
}
/**
* @internal
* Gets the OpenTelemetry meter used by future Teams apps package instrumentation.
*/
function getTeamsBotApplicationMeter() {
return api_1.metrics.getMeter(telemetry_1.TeamsBotApplicationTelemetry.meterName, package_json_1.default.version);
}
/**
* @internal
* Records an inbound activity received by the Teams apps package.
*/
function recordTeamsBotActivityReceived(activityType) {
activitiesReceivedCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.activitiesReceived, {
description: 'Number of inbound activities received by Teams apps.',
});
activitiesReceivedCounter.add(1, { [constants_1.APP_ATTRIBUTE_NAMES.activityType]: activityType });
}
/**
* @internal
* Records activity processing duration in milliseconds.
*/
function recordTeamsBotActivityProcessDuration(activityType, durationMs) {
activityProcessDurationHistogram ??= getTeamsBotApplicationMeter().createHistogram(constants_1.APP_METRIC_NAMES.activityProcessDuration, {
description: 'Duration of Teams app activity processing.',
unit: 'ms',
});
activityProcessDurationHistogram.record(durationMs, { [constants_1.APP_ATTRIBUTE_NAMES.activityType]: activityType });
}
/**
* @internal
* Records a selected Teams app handler dispatch.
*/
function recordTeamsBotHandlerDispatched(handlerType, handlerDispatch) {
handlerDispatchedCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.handlerDispatched, {
description: 'Number of Teams app handlers dispatched.',
});
handlerDispatchedCounter.add(1, {
[constants_1.APP_ATTRIBUTE_NAMES.handlerType]: handlerType,
[constants_1.APP_ATTRIBUTE_NAMES.handlerDispatch]: handlerDispatch,
});
}
/**
* @internal
* Records Teams app handler duration in milliseconds.
*/
function recordTeamsBotHandlerDuration(handlerType, handlerDispatch, durationMs) {
handlerDurationHistogram ??= getTeamsBotApplicationMeter().createHistogram(constants_1.APP_METRIC_NAMES.handlerDuration, {
description: 'Duration of Teams app handler execution.',
unit: 'ms',
});
handlerDurationHistogram.record(durationMs, {
[constants_1.APP_ATTRIBUTE_NAMES.handlerType]: handlerType,
[constants_1.APP_ATTRIBUTE_NAMES.handlerDispatch]: handlerDispatch,
});
}
/**
* @internal
* Records a failed Teams app handler dispatch.
*/
function recordTeamsBotHandlerFailure(handlerType, handlerDispatch) {
handlerFailuresCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.handlerFailures, {
description: 'Number of failed Teams app handler dispatches.',
});
handlerFailuresCounter.add(1, {
[constants_1.APP_ATTRIBUTE_NAMES.handlerType]: handlerType,
[constants_1.APP_ATTRIBUTE_NAMES.handlerDispatch]: handlerDispatch,
});
}
/**
* @internal
* Records an inbound activity that did not match any Teams app handler.
*/
function recordTeamsBotHandlerUnmatched(activityType, invokeName) {
handlerUnmatchedCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.handlerUnmatched, {
description: 'Number of inbound activities that did not match a Teams app handler.',
});
const attributes = { [constants_1.APP_ATTRIBUTE_NAMES.activityType]: activityType };
if (invokeName) {
attributes[constants_1.APP_ATTRIBUTE_NAMES.invokeName] = invokeName;
}
handlerUnmatchedCounter.add(1, attributes);
}
/**
* @internal
* Records a completed Teams app OAuth operation.
*/
function recordTeamsBotOAuthOperation(connectionName, operation, result) {
oauthOperationsCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.oauthOperations, {
description: 'Number of Teams app OAuth operations.',
});
oauthOperationsCounter.add(1, {
[constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName,
[constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation,
[constants_1.APP_ATTRIBUTE_NAMES.oauthResult]: result,
});
}
/**
* @internal
* Records Teams app OAuth operation duration in milliseconds.
*/
function recordTeamsBotOAuthOperationDuration(connectionName, operation, result, durationMs) {
oauthOperationDurationHistogram ??= getTeamsBotApplicationMeter().createHistogram(constants_1.APP_METRIC_NAMES.oauthOperationDuration, {
description: 'Duration of Teams app OAuth operations.',
unit: 'ms',
});
oauthOperationDurationHistogram.record(durationMs, {
[constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName,
[constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation,
[constants_1.APP_ATTRIBUTE_NAMES.oauthResult]: result,
});
}
/**
* @internal
* Records an unexpected Teams app OAuth error.
*/
function recordTeamsBotOAuthError(connectionName, operation, errorType) {
oauthErrorsCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.oauthErrors, {
description: 'Number of unexpected Teams app OAuth errors.',
});
oauthErrorsCounter.add(1, {
[constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName,
[constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation,
[constants_1.APP_ATTRIBUTE_NAMES.oauthErrorType]: errorType,
});
}
/**
* @internal
* Records an exception on a span and marks the span status as an error.
*/
function recordTeamsBotApplicationException(span, error) {
const message = error instanceof Error ? error.message : String(error);
span.recordException(error instanceof Error ? error : message);
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWFnbm9zdGljcy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBc0JBLG9FQUVDO0FBTUQsa0VBRUM7QUFNRCx3RUFLQztBQU1ELHNGQU1DO0FBTUQsMEVBUUM7QUFNRCxzRUFTQztBQU1ELG9FQVFDO0FBTUQsd0VBU0M7QUFNRCxvRUFTQztBQU1ELG9GQWtCQztBQU1ELDREQVNDO0FBTUQsZ0ZBSUM7QUFqTEQsNENBQW9FO0FBR3BFLHNFQUFxQztBQUVyQywyQ0FBb0U7QUFDcEUsMkNBQTJEO0FBRTNELElBQUkseUJBQWdFLENBQUM7QUFDckUsSUFBSSxnQ0FBeUUsQ0FBQztBQUM5RSxJQUFJLHdCQUErRCxDQUFDO0FBQ3BFLElBQUksd0JBQWlFLENBQUM7QUFDdEUsSUFBSSxzQkFBNkQsQ0FBQztBQUNsRSxJQUFJLHVCQUE4RCxDQUFDO0FBQ25FLElBQUksc0JBQTZELENBQUM7QUFDbEUsSUFBSSwrQkFBd0UsQ0FBQztBQUM3RSxJQUFJLGtCQUF5RCxDQUFDO0FBRTlEOzs7R0FHRztBQUNILFNBQWdCLDRCQUE0QjtJQUMxQyxPQUFPLFdBQUssQ0FBQyxTQUFTLENBQUMsd0NBQTRCLENBQUMsVUFBVSxFQUFFLHNCQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLDJCQUEyQjtJQUN6QyxPQUFPLGFBQU8sQ0FBQyxRQUFRLENBQUMsd0NBQTRCLENBQUMsU0FBUyxFQUFFLHNCQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLDhCQUE4QixDQUFDLFlBQW9CO0lBQ2pFLHlCQUF5QixLQUFLLDJCQUEyQixFQUFFLENBQUMsYUFBYSxDQUFDLDRCQUFnQixDQUFDLGtCQUFrQixFQUFFO1FBQzdHLFdBQVcsRUFBRSxzREFBc0Q7S0FDcEUsQ0FB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