UNPKG

@signalwire/js

Version:
155 lines (140 loc) 5.09 kB
import { SessionOptions, UserOptions } from '@signalwire/core' import { IncomingCallHandler, IncomingCallHandlers, } from './incomingCallManager' import { FabricRoomSession } from '../FabricRoomSession' export interface WSClientContract { /** * Disconnects the client from the SignalWire network. */ disconnect(): Promise<void> /** * Dial a resource and connect the call * * @param params {@link DialParams} * @returns A promise resolving to the session object {@link FabricRoomSession}. */ dial(params: DialParams): Promise<FabricRoomSession> /** * Reattach to the previous call if the previous call was not disconnected * * @param params {@link DialParams} * @returns A promise resolving to the session object {@link FabricRoomSession}. */ reattach(params: DialParams): Promise<FabricRoomSession> /** * Handles the incoming call via Push Notification * * @param params {@link HandlePushNotificationParams} * @returns A promise resolving to the push notification result {@link HandlePushNotificationResult}. */ handlePushNotification( params: HandlePushNotificationParams ): Promise<HandlePushNotificationResult> /** * Allow the user to update the authentication token. * * @param token string: The new authentication token. * @returns A promise that resolves when the token is successfully updated. */ updateToken(token: string): Promise<void> /** * Mark the client as 'online' to receive calls over WebSocket. * * @param incomingCallHandlers - The handlers for processing incoming calls. * @returns A promise that resolves when the client is successfully marked as online. */ online({ incomingCallHandlers }: OnlineParams): Promise<void> /** * Mark the client as 'offline' to stop receiving calls over WebSocket. * * @returns A promise that resolves when the client is successfully marked as offline. */ offline(): Promise<void> } export interface OnlineParams { incomingCallHandlers: IncomingCallHandlers } export interface PushNotificationPayload { encryption_type: 'aes_256_gcm' notification_uuid: string with_video: 'true' | 'false' incoming_caller_name: string incoming_caller_id: string tag: string invite: string title: string type: 'call_invite' iv: string version: string decrypted: Record<string, any> } export type HandlePushNotificationParams = PushNotificationPayload & { incomingCallHandler?: IncomingCallHandler } export interface HandlePushNotificationResult { resultType: 'inboundCall' } /** * These are the default call parameters that can be passed * while initiating a SignalWire client or the call */ interface DefaultCallParams { /** HTML element in which to display the video stream */ rootElement?: HTMLElement | null /** User & UserAgent metadata */ userVariables?: Record<string, any> } export interface CallParams extends DefaultCallParams { /** Disable ICE UDP transport policy */ disableUdpIceServers?: boolean /** Audio constraints to use when joining the room. Default: `true`. */ audio?: MediaStreamConstraints['audio'] /** Video constraints to use when joining the room. Default: `true` for "video" channel. */ video?: MediaStreamConstraints['video'] /** Negotiate the incoming audio from the RTC. Default: `true`. */ negotiateAudio?: boolean /** Negotiate the incoming video from the RTC. Default: `true` for "video" channel. */ negotiateVideo?: boolean /** Whether to apply the local-overlay on top of your video. Default: `true`. */ applyLocalVideoOverlay?: boolean /** Whether to apply an overlay on top of each member. Default: `true`. */ applyMemberOverlay?: boolean /** Whether to mirror the local video overlay. Default: `false`. */ mirrorLocalVideoOverlay?: boolean /** Whether to stop the camera when the member is muted. Default: `true`. */ stopCameraWhileMuted?: boolean /** Whether to stop the microphone when the member is muted. Default: `true`. */ stopMicrophoneWhileMuted?: boolean /** Fabric address ID matching one of the subscriber’s addresses to attribute conversation API events in the INVITE. */ fromFabricAddressId?: string } export interface DialParams extends CallParams { to: string nodeId?: string } export interface ReattachParams extends CallParams { to?: string nodeId?: string } export interface ApiRequestRetriesOptions { /** Increment step for each retry delay */ apiRequestRetriesDelayIncrement?: number /** Initial retry delay */ apiRequestRetriesDelay?: number /** Max API request retry, set to 0 disable retries */ maxApiRequestRetries?: number } export interface SATSessionOptions extends ApiRequestRetriesOptions, SessionOptions {} export type FabricUserOptions = Omit< UserOptions, 'onRefreshToken' | 'topics' | 'sessionChannel' | 'instanceMap' > & SATSessionOptions export interface WSClientOptions extends DefaultCallParams, FabricUserOptions { /** Call back function to receive the incoming call */ incomingCallHandlers?: IncomingCallHandlers }