@devops_gcalls/gcalls-web-sdk
v1.1.38
Published
This is gcalls SDK
Downloads
11
Readme
Gcalls-js-sdk
Introduction
Installation
npm install @devops_gcalls/gcalls-web-sdk
Getting Started
1. Import SDK when using on Web
import Calllog from "@devops_gcalls/gcalls-web-sdk"
2. Configuration
const options = {
configuration: {
sockets: ["wss://example:6969"],
proxy: "example.vn:1234",
sip: "101",
password: "101",
},
eventHandlers: {
progress: function (e) {
console.log("call is in progress from user");
},
failed: function (e) {
console.log("call failed with cause from user: " + e.cause);
},
ended: (e) => {
console.log("call ended with cause from user: " + e.cause);
},
confirmed: function (e) {
console.log("call confirmed from user");
},
incoming: (e) => {},
outgoing: (e) => {},
onTrack: (e, session) => {
var audio = document.createElement("audio");
audio.srcObject = e.streams[0];
audio.play();
},
},
mediaConstraints: { audio: true, video: false },
databaseConfigurations: {
db: "example-db",
username: "example-username",
password: "example-password",
host: "http://example-couchdb-domain",
},
};
3. Initiate SDK for Web
const calllog = new Calllog(options);
calllog.register();
Install CouchDB Server
- Require docker, docker-compose
1. Create file
Create docker-compose.yml file and change COUCHDB_PASSWORD={your password}
version: "3.3" services: couchdb: image: couchdb:latest container_name: couchdb environment: - COUCHDB_USER=admin - COUCHDB_PASSWORD={your password} ports: - '5984:5984' - '4369:4369' - '9100:9100' volumes: - couchdb_data:/apache/couchdb - ./local.ini:/opt/couchdb/etc/local.d/local.ini volumes: couchdb_data: driver: local
create file local.ini in same folder with docker-compose.yml file
[httpd] enable_cors = true [cors] origins = * credentials = true methods = GET, PUT, POST, HEAD, DELETE headers = accept, authorization, content-type, origin, referer
2. Start server
- Open command line and run docker-compose.yml file
docker-compose up -d
- Access url http://localhost:5984/_utils. If login page appear, server started successful!
API Summary
calllog.call(phoneNumber)
Make a simple call
| Parameters | Description |
| --------- | ---------------------------------------- |
| phoneNumber | A phone number that use to call |
| returns | true
|
calllog.terminate(callback)
Terminate the current session
| Parameters | Description |
| --------- | ---------------------------------------- |
| callback| Callback function when terminate call session (under-developing
)|
calllog.transfer(phoneNumber, callback)
Transfer current session to another phone number. If callback is a function, it will invoke along with param input is the session phoneNumber: string
| Parameters | Description |
| --------- | ---------------------------------------- |
| phoneNumber | A phone number that call will be transfered
to |
| callback | Callback function that will call before transfer
call|
| returns | boolean
. true if in call with other, else false|
calllog.isConnected()
Check connection with the current websocket
| Parameters | Description |
| --------- | ---------------------------------------- |
| returns | boolean
. Return true if the transport is connected, false otherwise|
calllog.isRegistered()
Check the User Agent registration
| Parameters | Description |
| --------- | ---------------------------------------- |
| returns | boolean
. Return true if the UA is registered, false otherwise |
calllog.enableDebugMode(option)
Set debug mode for SDK. If true, debug mode is on and will console.log events
| Parameters | Description |
| --------- | ---------------------------------------- |
| option | boolean
|
| returns | boolean
. Return true if the UA is registered, false otherwise |
calllog.setMediaConstraints(mediaConstraints)
Set new option for mediaConstraints. example fields : { audio: true, video:false }
| Parameters | Description | | --------- | ---------------------------------------- | | mediaConstraints | Object with two valid fields(audio and video) that accept only boolean values. The object will tell the sesion to use audio and/or video |
calllog.setConfiguration(configuration)
Reset the configuration for User Agent. After use setConfiguration, if you want to using new configuration for the current User Agent, it is require to call calllog.register() Example fields : { sockets: ["wss://example:6969"], proxy: "example.vn:1234", sip: "101", password: "101", }
| Parameters | Description | | --------- | ---------------------------------------- | | configuration | An object contain fields (sockets, sip, proxy, password) to configure user agent |
calllog.setEventHandlers(eventHandlers)
Reset the event handler for the emitted event. eventHandler: Object contains many functions: progress, confirmed, ended, accepted, onTrack , incoming , outgoing , and failed. Example
const eventHandlers = {
progress: function (e) {
console.log("call is in progress from user");
},
failed: function (e) {
console.log("call failed with cause from user: " + e.cause);
},
ended: (e) => {
console.log("call ended with cause from user: " + e.cause);
},
confirmed: function (e) {
console.log("call confirmed from user");
},
incoming: function (e) {
console.log("call incoming from user");
},
outgoing: function (e) {
console.log("call outgoing from user");
},
}
calllog.setEventHandlers(eventHandlers);
if you want to using new eventHandlers for the current User Agent, it is require to call calllog.register()
| Parameters | Description | | --------- | ---------------------------------------- | | eventHandlers | Define handlers for each event (progress, failed, ended, confirmed). Each handler will be execute after the default handler |
calllog.register()
Start apply all configs of user to User Agent then new User Agent and new connection to CouchDB base on the current configuration
calllog.unregister(options=null)
Stop connection to websocket server and remove session on pbx. | Parameters | Description | | --------- | ---------------------------------------- | | options | Optional object with a field 'all' that takes in a boolean value to unregistering all bindings of the same SIP user. |
calllog.setDatabaseConfigurations(databaseConfigurations)
Config for database
Example:
const config = {
db: "example-db",
username: "example-username",
password: "example-password",
host: "http://example-domain",
}
calllog.setDatabaseConfigurations(config)
| Parameters | Description | | --------- | ---------------------------------------- | | databaseConfigurations | A Configuration for database. Field db contains name of the collection, username and password is configure for the user in the couchdb database, host is the remote couchdb server that you want to connect |
calllog.setCalllogTemplate(fields)
Add new fields to the call log default template. fields: Object contains new defined fields.
Example:
const fields = {
name: 'example',
gender: ''
}
calllog.setCalllogTemplate(fields)
| Parameters | Description | | --------- | ---------------------------------------- | | fields | Object contain new fields that you want to add to the default template callLog |
calllog.insertCalllog(data)
Insert a new record to the CouchDB. data: Object with any field but id field is required in the object. Return true if success, null otherwise
| Parameters | Description | | --------- | ---------------------------------------- | | data | Object contain new record that you want to save into pouchdb | | returns | Return the result of the inserted record, otherwise null if data is false (null, undefined) or catch the error when inserting new record|
calllog.getCalllog(id)
Get a specific call log with call log ID in PouchDB Example:
calllog.getCalllog('123')
| Parameters | Description | | --------- | ---------------------------------------- | | selectors | object | | returns | the call log object from PouchDB if success, null otherwise |
calllog.getCalllogs()
Get all Calllogs in the PouchDB Example:
calllog.getCalllogs()
| Parameters | Description | | --------- | ---------------------------------------- | | selectors | object | | returns | all the call logs from PouchDB if success, null otherwise |
calllog.getCalllogsByIndex(selectors)
Get call log by defined index fields. This function utilize the PouchDB.find(), read more here -> https://pouchdb.com/guides/mango-queries.html selectors: Object contain index key and query value Return array of call log object(s) that match the condition selectors
Example:
const selectors = {
name: 'mario',
...
}
calllog.getCalllogsByIndex(selectors)
| Parameters | Description | | --------- | ---------------------------------------- | | selectors | object | | returns | array of objects if success, null otherwise. |
calllog.createIndex(fields)
Create new index(es) for the collection. This function utilize the PouchDB.createIndex(), read more here -> https://pouchdb.com/api.html#create_index fields: Array contains string value represent as field in the collection
Example:
const fields = ['name']
calllog.createIndex(fields)
| Parameters | Description | | --------- | ---------------------------------------- | | field | array of string | | returns | {result: 'created'} if success, null otherwise. |
calllog.muteCalls()
Mute all the local's streams audio
calllog.unmuteCalls()
Unmute all the local's streams audio
calllog.muteAudio()
Mute all the remote's streams audio
calllog.unmuteAudio()
Unmute all the remote's streams audio
calllog.answer()
Answer the incoming call using session
Update v1.0.2
calllog.setSocketEventHandlers(options=null)
Set event handlers for websocket's events.
| Parameters | Description | | --------- | ---------------------------------------- | | options | Object contains function to handle websocket's event |
| Fields in options object | Description | | --------- | ---------------------------------------- | | onMessage | event handler websocket.onmessage | | onClose | event handler websocket.onclose| | onOpen | event handler websocket.onopen |
Example:
let socketEventHandlers = {
onMessage: (e) => {
console.log(e);
},
onClose: (e) => {
console.log(e);
},
onOpen: (e) => {
console.log(e);
}
}
calllog.setSocketEventHandlers(socketEventHandlers);
calllog.setOptions(options=null)
Reconfig one or more SDK options. After calling setOptions, to let the SDK behave the new settings, it is required to run sdk.registered().
| Parameters | Description | | --------- | ---------------------------------------- | | options | Object contains fields to reconfig SDK |
| Fields in options object | Description | | --------- | ---------------------------------------- | | configuration | Object contains configuration for a User Agent | | eventHandlers | Object event handler call's events| | databaseConfigurations | Object contains database configuration |
calllog.getCurrentCalllog()
Return the current calllog saved in SDK
calllog.updateCalllog(data=null)
Update the current calllog saved in SDK | Parameters | Description | | --------- | ---------------------------------------- | | data | Object data to update the current calllog | | returns | true if successfully updated. Throw error otherwise |
calllog.insertCalllog(data=null)
Insert a calllog in PouchDB. If data is not specified, the current calllog in SDK will be inserted by default | Parameters | Description | | --------- | ---------------------------------------- | | data | Object data to update the current calllog | | returns | the calllog object if successfully insert. Throw error otherwise |
calllog.resetCalllog()
Reset the current calllog in SDK to initial state.
Authors
Phan Anh Tu
Le Phan Minh Thai
Nguyen Ngoc Dang Hung