UNPKG

infobip-rtc

Version:

Infobip RTC JavaScript SDK - Infobip WebRTC API Implementation

67 lines 4.13 kB
import { ViberEndpoint, WebrtcEndpoint } from "../../util/Endpoint"; import { FlowType } from "../FlowType"; import { DefaultCall } from "./DefaultCall"; import { CallsApiEvent } from "../event/CallsApiEvents"; import { ApplicationCallOptions } from "../options/ApplicationCallOptions"; import ValidationUtil from "./util/ValidationUtil"; import { InternalApplicationCallOptions } from "../options/InternalApplicationCallOptions"; import { getRecordingOptions } from "./util/CallOptionsUtil"; export class DefaultOutgoingViberCall extends DefaultCall { constructor(infobipRtc, viberCallOptions, currentUserIdentity, phoneNumberDestination, callerIdentifier) { super(viberCallOptions, new WebrtcEndpoint(currentUserIdentity), new ViberEndpoint(phoneNumberDestination)); let applicationCallOptions = this.mapOptions(phoneNumberDestination, callerIdentifier, viberCallOptions); this.applicationCall = infobipRtc.callApplication(phoneNumberDestination, applicationCallOptions); this.initEventHandlers(); } counterpart() { return this.destination(); } options() { return this.basicCallOptions; } mapOptions(phoneNumberDestination, callerIdentifier, viberCallOptions) { if (viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData) { ValidationUtil.validateCustomData(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData); } let internalCustomData = Object.assign(Object.assign({ to: phoneNumberDestination, from: callerIdentifier, type: FlowType.PHONE_NUMBER.toString() }, getRecordingOptions(viberCallOptions)), { viber: true.toString(), withDialog: "true" }); let applicationCallOptions = ApplicationCallOptions.builder() .setAudio(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.audio) .setAudioOptions(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.audioOptions) .setAutoReconnect(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.autoReconnect) .build(); if (viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData) { applicationCallOptions.customData = viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData; } return new InternalApplicationCallOptions(applicationCallOptions, internalCustomData); } initEventHandlers() { this.applicationCall.on(CallsApiEvent.RINGING, () => { this.apiEventEmitter.emit(CallsApiEvent.RINGING, {}); }); this.applicationCall.on(CallsApiEvent.EARLY_MEDIA, (event) => { this.apiEventEmitter.emit(CallsApiEvent.EARLY_MEDIA, event); }); this.applicationCall.on(CallsApiEvent.ESTABLISHED, (event) => { this.apiEventEmitter.emit(CallsApiEvent.ESTABLISHED, event); }); this.applicationCall.on(CallsApiEvent.HANGUP, (event) => { this.apiEventEmitter.emit(CallsApiEvent.HANGUP, event); }); this.applicationCall.on(CallsApiEvent.ERROR, (event) => { this.apiEventEmitter.emit(CallsApiEvent.ERROR, event); }); this.applicationCall.on(CallsApiEvent.NETWORK_QUALITY_CHANGED, (event) => { this.apiEventEmitter.emit(CallsApiEvent.NETWORK_QUALITY_CHANGED, event); }); this.applicationCall.on(CallsApiEvent.DIALOG_RECORDING_STARTED, (event) => { this.apiEventEmitter.emit(CallsApiEvent.CALL_RECORDING_STARTED, { recordingType: event.recordingType }); }); this.applicationCall.on(CallsApiEvent.RECONNECTING, (event) => { this.apiEventEmitter.emit(CallsApiEvent.RECONNECTING, event); }); this.applicationCall.on(CallsApiEvent.RECONNECTED, (event) => { this.apiEventEmitter.emit(CallsApiEvent.RECONNECTED, event); }); } } //# sourceMappingURL=DefaultOutgoingViberCall.js.map