Usecase: splitClient

splitClient

SplitClient usecase


new splitClient(onEvents, domElements, options)

SplitClient usecase

Parameters:
Name Type Description
onEvents object

Event handlers: onEvents

domElements object

DOM elements: domElements

options object

Available options: options

Returns:

SplitClient actions

Type
Promise
Example
var onEvents = {
    onCalling: () => {
         // Calling a peer
    },
    onRegisteredFailed: cause => {
         // Failed registered
         console.log(cause);
    },
    onHangup: (code, cause) => {
         // Hang up call
    },
    onAcceptedAudio: (data, stream) => {
         // Accepted Audio by the remote peer
         console.log(data.userName);
         console.log(data.sessionId);
    },
    onReadyLocalAudio: () => {
         // The local audio  is ready
    },
    onReadyLocalStream: (isReady, stream) => {
          // The local video stream is or not ready
    },
    onAcceptedVideo: stream => {
         // Accepted Video by remote peer
    },
    onRemoteVideoReady: (isReady, stream) => {
        // The remote video stream is or not ready
    },
    onAcceptedData: () => {
         // Accepted Data by remote peer
    },
    onDataReceived: (type, data, filename) => {
        // Data received by the datachannel
        if (type === 'application/x-chat') { }
        else if (type === 'text/plain') { }
        else if (type === 'application/pdf') { }
        else if (type === 'application/zip') { }
        else if (type === 'application/x-rar') { }
        else if (type === 'image/jpeg') {}
        else if (type === 'image/png') {}
        else if (type === 'application/x-docx') {}
        else if (type === 'application/x-pptx') {}
        else if (type === 'application/x-xlsx') {}
        else if (type === 'application/vnd.oasis.opendocument.text') {}
    },
    onStartRecording: () => {
         // Start recording
    },
    onStopRecording: () => {
         // Stop recording
    },
    onScreensharingAccepted: () => {
         // ScreenSharing Accepted
    },
    onScreensharingClosed: () => {
         // ScreenSharing Closed
    },
    onJoined: () => {
         // You've joined the SPLIT session
    },
    onFileTransferOk: fileId => {
         // File Transfer OK
    },
    onFileTransferKo: fileId => {
         // File Transfer KO
    },
    onNotified: (action, data) => {
         // Notification received from the remote peer
    },
    onVideoClosed: () => {
         // Remote video is closed
    },
    onSipMessage: (sender, content) => {
         // SIP Message received
    }
};

var domElements = {
    local: document.getElementById('localvideo'),
    remote: document.getElementById('remotevideo'),
    screenRemote: document.getElementById('remotescreen'),
    screenLocal: document.getElementById('localscreen')
};

var options = {
     dataChannel: {
         dataEnabled: true,
         allowedTypes: ['application/x-chat', 'image/jpeg', 'image/png', 'application/pdf'],
         maxSize: 5, // In MB
         fileTransmission: {
             timeout: 5, // Minutes
             retransmissionDelay: 15 // Seconds
         }
     },
     stream: {
         audioEnabled: true,
         videoEnabled: true,
         aDeviceId: null,
         vDeviceId: null,
         resolution: 'vga' // 'qvga', 'vga', 'hd', 'full-hd', '4k', '8k'
         frameRate: 30,
         audioStream: null,
         videoStream: null
     },
     account: "******" // Multiple mode
};

usecases.splitClient(onEvents, domElements, options)
    .then(action => {
         // Use Case has been atacched succesfully
         ...
    })
    .catch(cause => {
        // Error attaching the Use Case
        console.log("Error Attach " + cause );
    })

Methods


call(callerId, videoRate, screenRate, headers, uri)

Client sends a request to start a call to an Agent

Parameters:
Name Type Description
callerId string

Caller ID

videoRate integer

Video Bitrate (bps) (Optional)

screenRate integer

Screen Bitrate (bps) (Optional)

headers object

Custom SIP Headers (Optional)

uri object

SIP URI to call (Optional. default: sip:videortc@127.0.0.1:5099)

Returns:
Type
nothing
Example
action.call('IVRPowers', 128000, 256000, {"My-Header": "Value"}, "sip:videortc@127.0.0.1:5099");

closeUsecase()

Close the current UseCase. It's recommended combine with disconnect method

Returns:
Type
nothing
Example
action.closeUsecase();
myVideoApp.disconnect(); // Recommended

getLicense()

The VideoGateway is requested about the features of the contracted license

Returns:

License Information (ScreenSharing, LiveChat and VideoRecording )

Type
Object
Example
var myLicense = action.getLicense();
console.log(myLicense);

hangup()

Client sends a request to hangup the call

Returns:
Type
nothing
Example
action.hangup();

listDevices()

List available and selected devices

Example
action.listDevices();

notify(action, data)

Send a notification to the other peer via the VideoGateway

Parameters:
Name Type Description
action string

Identifies the notification type

data string

Useful for sending extra data (Optional)

Example
action.notify('open-map', 'data');

replaceAudio(type, id)

Replace the local Audio track

Parameters:
Name Type Description
type string

('next', or 'id')

id string

Device Id (optional)

Example
action.replaceAudio('next');

replaceAudioOutput(element, type, id)

Replace the audio output device

Parameters:
Name Type Description
element HTMLAudioElement

HTML

type string

('next', or 'id')

id string

Device Id (optional)

Example
action.replaceAudioOutput(document.querySelector('#remote-audio'), 'next');

replaceVideo(type)

Replace the local Video track

Parameters:
Name Type Description
type string

('user', 'environment', 'left', 'right' or 'next', or 'id')

Example
action.replaceVideo('environment');

sendData(type, data, cOk, cKo, filename)

Sends a message (Chat or File) through the DataChannel

Parameters:
Name Type Description
type string

MIME Type (e.g: 'application/x-chat', 'text/plain', 'application/pdf', 'application/zip', 'application/x-rar', 'image/jpeg', 'image/png', 'application/x-docx', 'application/x-pptx', 'application/x-xlsx', 'application/vnd.oasis.opendocument.text')

data string

Data Content

cOk function

Callback success function

cKo function

Callback failed function

filename string

File Name (e.g: file.zip) (Optional)

Returns:
Type
nothing
Example
action.sendData('application/x-chat', 'Hello Mike!',
 function(cOk) {
     // Success
 },
 function(error) {
     // Error
     console.log(error);
 }
)

sendDtmf(dtmf)

Send a DTMF tone

Parameters:
Name Type Description
dtmf string

Digit

Returns:
Type
nothing
Example
action.sendDtmf("5"); // Also "*" and "#"

setMode(video, data)

Modifies the audio/video mode of the local peer while the call is established.

Parameters:
Name Type Description
video boolean

Enable Video?

data boolean

Enable Data?

Example
action.setMode(true, true);

startScreensharing(id, cOk, cKo)

The Client sends a request to start Screensharing

Parameters:
Name Type Description
id integer

Screen Id (Deprecated - Any value sent in this parameter will be ignored)

cOk function

Callback Ok

cKo function

Callback Error

Returns:
Type
nothing
Example
action.startScreensharing(1234, function() {
     // Success
}, function(cause) {
     // Error
})

stopScreensharing(cOk, cKo)

The Client sends a request to stop Screensharing

Parameters:
Name Type Description
cOk function

Callback Ok

cKo function

Callback Error

Returns:
Type
nothing
Example
action.stopScreensharing(function() {
     // Success
}, function(cause) {
     // Error
})

toggleAudio()

Toggle local Audio stream (Mute/Unmute)

Returns:

Is audio muted?

Type
boolean
Example
action.toggleAudio(); // true or false

toggleAudioRemote()

Toggle remote Audio stream (Mute/Unmute)

Returns:

Is audio muted?

Type
boolean
Example
action.toggleAudioRemote(); // true or false

toggleVideo()

Toggle local Video stream (Mute/Unmute)

Returns:

Is video muted?

Type
boolean
Example
action.toggleVideo(); // true or false