UNPKG

infobip-rtc

Version:

Infobip RTC JavaScript SDK - Infobip WebRTC API Implementation

79 lines 4.07 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 { DefaultOutgoingApplicationCall } from "./DefaultOutgoingApplicationCall"; import { getRecordingOptions } from "./util/CallOptionsUtil"; export class DefaultOutgoingViberCall extends DefaultCall { constructor(infobipRtc, viberCallOptions, currentUserIdentity, phoneNumberDestination, callerIdentifier, logger) { super(viberCallOptions, new WebrtcEndpoint(currentUserIdentity), new ViberEndpoint(phoneNumberDestination), logger); 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?.customData) { ValidationUtil.validateCustomData(viberCallOptions?.customData); } let internalCustomData = { to: phoneNumberDestination, from: callerIdentifier, type: FlowType.PHONE_NUMBER.toString(), ...getRecordingOptions(viberCallOptions), viber: true.toString(), withDialog: "true" }; let applicationCallOptions = ApplicationCallOptions.builder() .setAudio(viberCallOptions?.audio) .setAudioOptions(viberCallOptions?.audioOptions) .setAutoReconnect(viberCallOptions?.autoReconnect) .build(); if (viberCallOptions?.customData) { applicationCallOptions.customData = viberCallOptions?.customData; } return new InternalApplicationCallOptions(applicationCallOptions, internalCustomData, DefaultOutgoingApplicationCall.WEBRTC_CALLS_CONFIGURATION_ID); } initEventHandlers() { this.applicationCall.on(CallsApiEvent.RINGING, () => { this.updateCustomData(); 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); }); this.applicationCall.on(CallsApiEvent.TALKING_WHILE_MUTED, () => { this.apiEventEmitter.emit(CallsApiEvent.TALKING_WHILE_MUTED, {}); }); } } //# sourceMappingURL=DefaultOutgoingViberCall.js.map