jabradeprecated

NodeJS SDK for Jabra Devices

Usage no npm install needed!

<script type="module">
  import jabra from 'https://cdn.skypack.dev/jabra';
</script>

README

Jabra Node.js SDK - Node 10 Release

Table of Contents

Pre-requisite

  1. Node.js v10.x or earlier

  2. On MacOS: xcode & python 2.7. By default, Python is installed on macOS but make sure correct version(2.7.x) is installed. Install Xcode from App store or download it from here.

  3. On Windows: Visual C++ Build Tools & Python 2.7. You can install all of these using command npm install --global --production --add-python-to-path windows-build-tools. To know more about this tool, see this link.

  4. For Electron.JS: If you are using asar packaging then you need to unpack some of the resources used in this module. These resources are native library files i.e libjabra.dll, libjabra.dylib & libjabra.so, which is stored in a shared-lib folder. By default latest electron builder will automatically unpack, but if it does not work then you can provide below option to your build process. To know more, see this link

    "build": {
        "asarUnpack": ["node_modules/jabra"]
    }
    

Installation

This release is published to npm under the beta tag and can be installed via below command.

npm install --save jabra@beta

Note: Refer attached "Disclaimer_Alpha_Beta_Software_Release.pdf" file under installed package directory.

Debugging and Logging

Below environment variables are defined for logging and debugging purpose. User can change the values as per preference.

Environment Variable Value Description
DEBUG jabra Debug this nodejs module, debug message will be printed on console
LIBJABRA_TRACE_LEVEL fatal, error, warning(default), info, debug Log levels
LIBJABRA_RESOURCE_PATH On Mac: ~/Library/Application Support/JabraSDK/ On Windows: %appdata%/JabraSDK This determine the system path where logs and device related files are written.

API Reference

API doc is in html format. See doc folder inside installed module node_module/jabra/doc and open index.html.

Examples

Simple Example

This example shows how to lock and ring a Jabra device. User should first register the app on Jabra developer site to get appID. User should pass this appID to initialize jabra module.

const createJabraApp = require('@jabra/jabra');
const jabra = createJabraApp('123'); //123 is appID here

jabra.on('attach', (device) => {
    device.on('btnPress', (BTN_TYPE, btnValue) => {
        console.log('New input from device is received: ', jabra.enums.enumDeviceBtnType[BTN_TYPE], btnValue);
    })

    const retCode = device.lock();
    if(retCode === jabra.enums.enumAPIReturnCode.Return_Ok){
        console.log('device is locked successfully');
        if(device.isRingerSupported){
            device.ring(); //ring the device
            setTimeout(() => {
                device.unring();
            }, 5000); //stop ringing the device after 5 second
        }
    }else{
        const lockFailReason = jabra.enums.enumAPIReturnCode[retCode];
        console.log('Could not locked the device due to: ',lockFailReason);
    }
});

jabra.on('detach', (deviceID) => {
    console.log('Device detached with deviceID:', deviceID);
});

Multiple device management

const jabra = require('@jabra/jabra')('youre appID');
let deviceIDList = []; //store the list of attached deviceID

jabra.on('attach', (device) => {
    deviceIDList.push(device.deviceID);
});

jabra.on('detach', (deviceID) => {
    //logic to remove this deviceID from deviceIDList array
})

// suppose at some time, deviceIDList = [1, 3, 5]

const deviceInstanceList = jabra.getAttachedDevices(); //returns the list(Map data structure) of devices

const device3 = deviceInstanceList.get(deviceIDList[1]); //get device instance whose deviceID=3
device3.ring(); //ring device3

const device1 = deviceInstanceList.get(deviceIDList[0]); //get device instance whose deviceID=1
device1.ring(); //ring device1

Example:

const jabra = require('jabra')('123'); //123 is appID here
jabra.on('attach', (device) => {
    const retCode = device.lock();
    if(device.connectionType !== jabra.enums.enumDeviceConnectionType.BT){
        device.ring(); //ring the device.
    }
})

Features supported

  • Device Information (device name, serial number, battery status)
  • Remote Call Control(RCC) functionality support for below commands:
    • Answer and End Call
    • Mute and Unmute Call
    • Hold and Resume Call
    • Ring indication
  • Dongle support (Link360 and Link370)

Supported devices

  • PRO 9470, PRO 9460, PRO 9450, Biz 2300, Motion Office, Evolve 65 USB, Biz 2400 II CC, PRO 930, PRO 935 (single and dual), PRO 925 (single and dual), Evolve 40 /80, Link 265, Evolve 30 ||, Evolve 20, Biz 1500, Biz 2400 II, Evolve 30, Link 260, Evolve 75
  • Motion UC (Over BT)
  • Link 360, Link 370
  • Speak 410, Speak 510, Speak 710, Speak 810

Bug Report

If you find any bug or have any suggestion then fill in the form at Jabra developer support site with below details:

  1. Bug description with steps to reproduce the issue.
  2. Console log after enabling debug mode for this module, see Debugging and Logging section for more.
  3. File logs, see Debugging and Logging section for more.

Changelog

Refer CHANGELOG.md under installed package directory

License

Refer LICENSE.md under installed package directory