@voicenter-team/opensips-js
v1.0.97
Published
The JS package for opensips
Downloads
97
Readme
title: Getting started description: The Opensips JS library and its expansive ecosystem offer developers a powerful and flexible solution for integrating Opensips protocol functionalities into a multitude of applications. navigation: title: Getting Started
Getting started
Installation
Using npm:
$ npm i @voicenter-team/opensips-js
Usage
Firstly lets import the library and create the OpenSIPS instance:
import OpenSIPSJS from '@voicenter-team/opensips-js'
const openSIPSJS = new OpenSIPSJS({
configuration: {
session_timers: false,
uri: 'sip:extension_user@domain',
// --- Use password or authorization_jwt to authorize
password: 'password',
// or
authorization_jwt: 'token',
},
socketInterfaces: [ 'wss://domain' ],
pnExtraHeaders: {
'pn-provider': 'acme',
'pn-param': 'acme-param',
'pn-prid': 'ZH11Y4ZDJlMNzODE1NgKi0K>'
},
sipDomain: 'domain',
sipOptions: {
session_timers: false,
extraHeaders: [ 'X-Bar: bar' ],
pcConfig: {},
},
modules: [ 'audio', 'video', 'msrp' ]
})
Then you can work with appropriate modules:
openSIPSJS.audio
openSIPSJS.video
openSIPSJS.msrp
OpensipsJS
OpensipsJS instance methods
begin(): OpensipsInstance
- start opensipson(event: OpensipsEvent, callback): void
- remove event listenersubscribe({type: String, listener: function}): void
- subscribe to an event. Available events:new_call
,ended
,progress
,failed
,confirmed
removeIListener(type: String): void
- remove event listener
OpensipsJS events
| Event | Callback interface | Description |
|----------------|---------|---------------|
| ready
| () => {}
| Emitted when opensips is initialized |
| changeActiveCalls
| (calls: { [key: string]: ICall }) => {}
| Emitted when active calls are changed |
| callAddingInProgressChanged
| (callId: string / undefined) => {}
| Emitted when any call adding state is changed |
| changeAvailableDeviceList
| (devices: Array<MediaDeviceInfo>) => {}
| Emitted when the list of available devices is changed |
| changeActiveInputMediaDevice
| (deviceId: string) => {}
| Emitted when active input device is changed |
| changeActiveOutputMediaDevice
| (deviceId: string) => {}
| Emitted when active output device is changed |
| changeMuteWhenJoin
| (value: boolean) => {}
| Emitted when mute on join value is changed |
| changeIsDND
| (value: boolean) => {}
| Emitted when is DND value is changed |
| changeIsMuted
| (value: boolean) => {}
| Emitted when mute value is changed |
| changeActiveStream
| (stream: MediaStream) => {}
| Emitted when active stream was changed |
| changeCallVolume
| (callId: string, volume: number) => {}
| Emits the volume meter's value for each participant |
| currentActiveRoomChanged
| (number / undefined) => {}
| Emitted when active room is changed |
| addRoom
| ({room: IRoom, roomList: {[id: number]: IRoom}}) => {}
| Emitted when new room was added |
| updateRoom
| ({room: IRoom, roomList: {[id: number]: IRoom}}) => {}
| Emitted when room was updated |
| removeRoom
| ({room: IRoom, roomList: {[p: number]: IRoom}}) => {}
| Emitted when room was deleted |
WebrtcMetricsConfigType
| Parameter | Type | Default |
|----------------|-----------|----------|
| refreshEvery
| number
| undefined
|
| startAfter
| number
| undefined
|
| startAfter
| number
| undefined
|
| verbose
| boolean
| undefined
|
| pname
| string
| undefined
|
| cid
| string
| undefined
|
| uid
| string
| undefined
|
| record
| boolean
| undefined
|
| ticket
| boolean
| undefined
|
Also, there are next public fields on OpensipsJS instance:
OpensipsJS instance fields
sipDomain: String
- returns sip domain
Audio
Audio methods
initCall(target: String, addToCurrentRoom: Boolean): void
- call to the target. If addToCurrentRoom is true then the call will be added to the user's current roomholdCall(callId: String, automatic?: Boolean): Promise<void>
- put call on holdunholdCall(callId: String): Promise<void>
- unhold a callterminateCall(callId: String): void
- terminate callmoveCall(callId: String, roomId: Number): Promise<void>
- Same as callChangeRoom. Move call to the specific roomtransferCall(callId: String, target: String): void
- transfer call to targetmergeCall(roomId: Number): void
- merge calls in specific room. Works only for rooms with 2 calls insidemergeCallByIds(firstCallId: string, secondCallId: string): void
- merge 2 calls by their idsanswerCall(callId: String): void
- answer a callmute(): void
- mute ourselfunmute(): void
- unmute ourselfmuteCaller(callId: String): void
- mute callerunmuteCaller(callId: String): void
- unmute callersetMicrophone(deviceId: String): Promise<void>
- set passed device as input device for callssetSpeaker(deviceId: String): Promise<void>
- set passed device as output device for callssetActiveRoom(roomId: Number): Promise<void>
- switch to the roomsetMicrophoneSensitivity(value: Number): void
- set sensitivity of microphone. Value should be in range from 0 to 1setSpeakerVolume(value: Number): void
- set volume of callers. Value should be in range from 0 to 1setDND(value: Boolean): void
- set the agent "Do not disturb" statussetMetricsConfig(config: WebrtcMetricsConfigType): void
- set the metric config (used for audio quality indicator)
Audio instance fields
sipOptions: Object
- returns sip optionsgetActiveRooms: { [key: number]: IRoom }
- returns an object of active rooms where key is room id and value is room datasipDomain: String
- returns sip domainsipOptions: Object
- returns sip optionsgetInputDeviceList: []
- returns list of input devicesgetOutputDeviceList: []
- returns list of output devicescurrentActiveRoomId: Number
- returns current active room idselectedInputDevice: String
- returns current selected input device idselectedOutputDevice: String
- returns current selected output device idisDND: Boolean
- returns if the agent is in "Do not disturb" statusisMuted: Boolean
- returns if the agent is muted
MSRP
MSRP methods
initMSRP(target: String, body: String): void
- initialize connection with target contact. Body is the initial message to this target.sendMSRP(sessionId: String, body: String): Promise<void>
- send messagemsrpAnswer(sessionId: String)
- accept MSRP session invitationmessageTerminate(sessionId: String)
- terminate message session
MSRP instance fields
getActiveMessages: { [key: string]: IMessage }
- returns an object of active message sessions where key is session id and value is message session data.
Video
Video methods
joinRoom(roomId: String, displayName: String, mediaConstraints: Object): void
- join conference roomhangup()
- exit roomstartVideo()
- turn on camerastopVideo()
- turn off camerastartAudio()
- mutestopAudio()
- unmutestartScreenShare()
- start screen sharingstopScreenShare()
- stop screen sharingenableScreenShareWhiteboard(enable: boolean, stream: MediaStream)
- enable screen share whiteboard. stream parameter is screen share streamenableBokehEffectMask(): Promise<MediaStream>
- enable bokeh mask effectenableBackgroundImgEffectMask(): Promise<MediaStream>
- enable background image mask effectdisableMask(): Promise<MediaStream>
- turn off mask effect. Returns stream without maskingrestartMasking(): Promise<void>
- rerun mask effectsetupMaskVisualizationConfig(config: VisualizationConfigType)
- setup mask configstartNoiseFilter()
- start noise filterstopNoiseFilter()
- stop noise filtersetBitrate(bitrate: number)
- set bitrate for videoenableWhiteboard(mode: 'whiteboard' | 'imageWhiteboard', enable: boolean, base64Image?: string)
- enable whiteboard. if mode is 'imageWhiteboard' then third parameter base64Image is requiredsetupDrawerOptions(options: KonvaDrawerOptions)
- setup option for drawersetupScreenShareDrawerOptions(options: KonvaScreenShareDrawerOptions)
- setup option for screen share drawer
VisualizationConfigType
| Parameter | Type | Default |
|----------------|------------------------|---------|
| foregroundThreshold
| number
| 0.5
|
| maskOpacity
| number
| 0.5
|
| maskBlur
| number
| 0
|
| pixelCellWidth
| number
| 10
|
| backgroundBlur
| number
| 15
|
| edgeBlur
| number
| 3
|
KonvaDrawerOptions
| Parameter | Type |
|----------------|-----------|
| container
| number
|
| width
| number
|
| height
| number
|
KonvaScreenShareDrawerOptions
| Parameter | Type |
|----------------|-----------|
| strokeWidth
| number
|
| strokeColor
| string
|
Video events
| Event | Callback interface | Description |
|----------------|---------|---------------|
| member:join
| (data) => {}
| Emitted when new member is joined |
| member:update
| (data) => {}
| Emitted when member data is changed |
| member:hangup
| (data) => {}
| Emitted when member leaves the conference |
| hangup
| () => {}
| Emitted when we leave the conference |
| screenShare:start
| () => {}
| Emitted when we share a screen |
| screenShare:stop
| () => {}
| Emitted when we stop a screen sharing |
| reconnect
| () => {}
| Emitted when reconnecting |
| mediaConstraintsChange
| () => {}
| Emitted when media constraints change |
| metrics:report
| () => {}
| Emitted on metric report |
| metrics:stop
| () => {}
| Emitted when metrics are stopped |