sinch-rtc
Version:
RTC JavaScript/Web SDK
73 lines • 4.33 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CallReporter = void 0;
const api_1 = require("../../ocra/api");
const utils_1 = require("../../utils");
const CallReportUtils_1 = require("./CallReportUtils");
class CallReporter {
constructor(userId, instance, apiClient) {
this.userId = userId;
this.instance = instance;
this.apiClient = apiClient;
}
createCallReport(call, rtcStatisticsReport, connectionInfos, callQualityData, clientEvents, mxpEventLog) {
var _a;
const details = call.details;
const reportedAcceptingDuration = (_a = details === null || details === void 0 ? void 0 : details.acceptingDuration) !== null && _a !== void 0 ? _a : 0;
return {
reportId: utils_1.StringHelper.UUID(),
callId: call.id,
userId: this.userId,
result: CallReportUtils_1.CallReportUtils.getCallResult(call),
errors: CallReportUtils_1.CallReportUtils.getClientErrors(details.error),
from: CallReportUtils_1.CallReportUtils.getCallOrigin(call, this.userId),
to: CallReportUtils_1.CallReportUtils.getCallDestination(call, this.userId),
direction: CallReportUtils_1.CallReportUtils.getCallReportDirection(call),
instance: CallReportUtils_1.CallReportUtils.getCallReportInstance(this.instance),
duration: CallReportUtils_1.CallReportUtils.getDurationInSeconds(details.duration),
setupDuration: CallReportUtils_1.CallReportUtils.getDurationInSeconds(details.setupDuration),
notifyingDuration: CallReportUtils_1.CallReportUtils.getDurationInSeconds(details.notifyingDuration),
ringingDuration: CallReportUtils_1.CallReportUtils.getDurationInSeconds(details.ringingDuration),
acceptingDuration: CallReportUtils_1.CallReportUtils.getDurationInSeconds(reportedAcceptingDuration),
connectingDuration: CallReportUtils_1.CallReportUtils.getDurationInSeconds(details.connectingDuration),
hadAudioStreams: details.hadAudioStream,
hadVideoStreams: details.hadVideoStream,
requestedVideo: details.requestedVideo,
requestedAudio: details.requestedAudio,
localDomain: api_1.Domain.Mxp,
remoteDomain: CallReportUtils_1.CallReportUtils.getRemoteDomain(call),
startTime: details.startedTime,
connectionInfo: CallReportUtils_1.CallReportUtils.filterSubsequentSameConnectionInfos(connectionInfos),
primaryLocalIceCandidate: CallReportUtils_1.CallReportUtils.getPrimaryIceCandidate({
connectionInfos: connectionInfos,
isLocal: true,
}),
primaryRemoteIceCandidate: CallReportUtils_1.CallReportUtils.getPrimaryIceCandidate({
connectionInfos: connectionInfos,
isLocal: false,
}),
publicCallHeaders: call.headers,
rtcStatisticsReport: rtcStatisticsReport,
clientEvents: clientEvents,
mxpEventLog: mxpEventLog,
callQuality: callQualityData,
};
}
submitCallReport(call, rtcStatisticsReport, connectionInfos, callQualityData, clientEvents, mxpEventLog) {
return __awaiter(this, void 0, void 0, function* () {
const callReport = this.createCallReport(call, rtcStatisticsReport, connectionInfos, callQualityData, clientEvents, mxpEventLog);
yield this.apiClient.createCallReport({ callReport });
});
}
}
exports.CallReporter = CallReporter;
//# sourceMappingURL=CallReporter.js.map