From e0299f92c58f1d14d8ba46d2ee4a8d5461456a10 Mon Sep 17 00:00:00 2001 From: Haythem Farhat Date: Wed, 16 Oct 2024 11:57:08 +0200 Subject: [PATCH] chore: add docs for customHeaders and preferred_codecs (#387) * chore: add docs for customHeaders and preferred_codecs * chore: deprecate video methods --- packages/js/docs/ts/classes/TelnyxRTC.md | 30 ++++++++++++++++ packages/js/src/Modules/Verto/BaseSession.ts | 1 + .../js/src/Modules/Verto/BrowserSession.ts | 5 +++ .../js/src/Modules/Verto/webrtc/BaseCall.ts | 4 +++ packages/js/src/Modules/Verto/webrtc/Call.ts | 9 ++++- .../js/src/Modules/Verto/webrtc/interfaces.ts | 34 +++++++++++++++++++ packages/js/src/TelnyxRTC.ts | 30 ++++++++++++++++ 7 files changed, 112 insertions(+), 1 deletion(-) diff --git a/packages/js/docs/ts/classes/TelnyxRTC.md b/packages/js/docs/ts/classes/TelnyxRTC.md index b81792ec..bc325970 100644 --- a/packages/js/docs/ts/classes/TelnyxRTC.md +++ b/packages/js/docs/ts/classes/TelnyxRTC.md @@ -903,6 +903,36 @@ const call = client.newCall().catch(console.error); // => `destinationNumber is required` ``` +### Setting Custom Headers + +```js + +client.newCall({ + destinationNumber: '18004377950', + + callerNumber: '155531234567', + + customHeaders: [ {name: "X-Header", value: "value" } ] +}); +``` + +### Setting Preferred Codec + +You can pass `preferred_codecs` to the `newCall` method to set codec preference during the call. + +`preferred_codecs` is a sub-array of the codecs returned by [RTCRtpReceiver.getCapabilities('audio')](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver/getCapabilities_static#codecs) + +```js +const allCodecs = RTCRtpReceiver.getCapabilities('audio').codecs; + +const PCMACodec = allCodecs.find((c) => c.mimeType.toLowerCase().includes('pcma')); + +client.newCall({ + destinationNumber: '123', + preferred_codecs: [PCMACodec], +}); +``` + #### Overrides TelnyxRTCClient.newCall diff --git a/packages/js/src/Modules/Verto/BaseSession.ts b/packages/js/src/Modules/Verto/BaseSession.ts index 8bedcca8..68fde8e2 100644 --- a/packages/js/src/Modules/Verto/BaseSession.ts +++ b/packages/js/src/Modules/Verto/BaseSession.ts @@ -247,6 +247,7 @@ export default abstract class BaseSession { /** * Callback when the ws connection is going to close or get an error * @return void + * @private */ public onNetworkClose(): void { if (this.relayProtocol) { diff --git a/packages/js/src/Modules/Verto/BrowserSession.ts b/packages/js/src/Modules/Verto/BrowserSession.ts index 3140d7d7..fd57e94e 100644 --- a/packages/js/src/Modules/Verto/BrowserSession.ts +++ b/packages/js/src/Modules/Verto/BrowserSession.ts @@ -247,6 +247,7 @@ export default abstract class BrowserSession extends BaseSession { * ``` * * @returns Promise with an array of MediaDeviceInfo + * @deprecated */ getVideoDevices(): Promise { return getDevices(DeviceType.Video).catch((error) => { @@ -391,6 +392,7 @@ export default abstract class BrowserSession extends BaseSession { * console.log(result); * }); * ``` + * @deprecated */ async getDeviceResolutions(deviceId: string) { try { @@ -545,6 +547,7 @@ export default abstract class BrowserSession extends BaseSession { * height: 720 * }) * ``` + * @deprecated */ async setVideoSettings(settings: IVideoSettings) { if (!settings) { @@ -586,6 +589,7 @@ export default abstract class BrowserSession extends BaseSession { * * client.disableWebcam(); * ``` + * @deprecated */ disableWebcam() { this._videoConstraints = false; @@ -604,6 +608,7 @@ export default abstract class BrowserSession extends BaseSession { * * client.enableWebcam(); * ``` + * @deprecated */ enableWebcam() { this._videoConstraints = true; diff --git a/packages/js/src/Modules/Verto/webrtc/BaseCall.ts b/packages/js/src/Modules/Verto/webrtc/BaseCall.ts index 5f6b9b3b..1c3abfe3 100644 --- a/packages/js/src/Modules/Verto/webrtc/BaseCall.ts +++ b/packages/js/src/Modules/Verto/webrtc/BaseCall.ts @@ -590,6 +590,7 @@ export default abstract class BaseCall implements IWebRTCCall { * ```js * call.muteVideo(); * ``` + * @deprecated */ muteVideo() { disableVideoTracks(this.options.localStream); @@ -604,6 +605,7 @@ export default abstract class BaseCall implements IWebRTCCall { * ```js * call.unmuteVideo(); * ``` + * @deprecated */ unmuteVideo() { enableVideoTracks(this.options.localStream); @@ -617,6 +619,7 @@ export default abstract class BaseCall implements IWebRTCCall { * ```js * call.toggleVideoMute(); * ``` + * @deprecated */ toggleVideoMute() { toggleVideoTracks(this.options.localStream); @@ -653,6 +656,7 @@ export default abstract class BaseCall implements IWebRTCCall { * * @param deviceId the target video device ID * @returns Promise that resolves if the video device has been updated + * @deprecated */ async setVideoDevice(deviceId: string): Promise { const { instance } = this.peer; diff --git a/packages/js/src/Modules/Verto/webrtc/Call.ts b/packages/js/src/Modules/Verto/webrtc/Call.ts index 1eb4cfc3..a68496f1 100644 --- a/packages/js/src/Modules/Verto/webrtc/Call.ts +++ b/packages/js/src/Modules/Verto/webrtc/Call.ts @@ -53,7 +53,6 @@ import { IVertoCallOptions } from './interfaces'; export class Call extends BaseCall { public screenShare: Call; - private _statsInterval: any = null; hangup(params: any = {}, execute: boolean = true) { @@ -63,6 +62,10 @@ export class Call extends BaseCall { super.hangup(params, execute); } + /** + * @deprecated + * @private + */ async startScreenShare(opts?: IVertoCallOptions) { const displayStream: MediaStream = await getDisplayMedia({ video: true }); displayStream.getTracks().forEach((t) => { @@ -89,6 +92,10 @@ export class Call extends BaseCall { return this.screenShare; } + /** + * @deprecated + * @private + */ stopScreenShare() { if (this.screenShare instanceof Call) { this.screenShare.hangup(); diff --git a/packages/js/src/Modules/Verto/webrtc/interfaces.ts b/packages/js/src/Modules/Verto/webrtc/interfaces.ts index f1f8ad8d..fea3340d 100644 --- a/packages/js/src/Modules/Verto/webrtc/interfaces.ts +++ b/packages/js/src/Modules/Verto/webrtc/interfaces.ts @@ -56,7 +56,41 @@ export interface IStatsBinding { } export interface AnswerParams { + /** + * * + * ### Setting Custom Headers + * + * ```js + * + * client.newCall({ + * destinationNumber: '18004377950', + * + * callerNumber: '155531234567', + * + * customHeaders: [ {name: "X-Header", value: "value" } ] + * }); + * ``` + */ customHeaders?: Array<{ name: string; value: string }>; + + /** + * + * ### Setting Preferred Codec + * + * You can pass `preferred_codecs` to the `newCall` method to set codec preference during the call. + * + * `preferred_codecs` is a sub-array of the codecs returned by [RTCRtpReceiver.getCapabilities('audio')](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver/getCapabilities_static#codecs) + * + * ```js + * const allCodecs = RTCRtpReceiver.getCapabilities('audio').codecs; + * + * const PCMACodec = allCodecs.find((c) => c.mimeType.toLowerCase().includes('pcma')); + * + * client.newCall({ + * destinationNumber: '123', + * preferred_codecs: [PCMACodec], + * }); + */ preferred_codecs?: Array; } diff --git a/packages/js/src/TelnyxRTC.ts b/packages/js/src/TelnyxRTC.ts index 24d6fd8a..b972e1e2 100644 --- a/packages/js/src/TelnyxRTC.ts +++ b/packages/js/src/TelnyxRTC.ts @@ -152,6 +152,36 @@ export class TelnyxRTC extends TelnyxRTCClient { * const call = client.newCall().catch(console.error); * // => `destinationNumber is required` * ``` + * + * ### Setting Custom Headers + * + * ```js + * + * client.newCall({ + * destinationNumber: '18004377950', + * + * callerNumber: '155531234567', + * + * customHeaders: [ {name: "X-Header", value: "value" } ] + * }); + * ``` + + * ### Setting Preferred Codec + * + * You can pass `preferred_codecs` to the `newCall` method to set codec preference during the call. + * + * `preferred_codecs` is a sub-array of the codecs returned by [RTCRtpReceiver.getCapabilities('audio')](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver/getCapabilities_static#codecs) + * + * ```js + * const allCodecs = RTCRtpReceiver.getCapabilities('audio').codecs; + * + * const PCMACodec = allCodecs.find((c) => c.mimeType.toLowerCase().includes('pcma')); + * + * client.newCall({ + * destinationNumber: '123', + * preferred_codecs: [PCMACodec], + * }); + * ``` */ newCall(options: ICallOptions) { return super.newCall(options);