Jabra Browser Integration

This software project from Jabra helps developers to make solutions, where basic headset call control can be used from within a browser app using JavaScript.
Since it is not possible to access USB devices directly from JavaScript, this library provides a solution of getting a route from the JavaScript to the Jabra USB device. The API is a JavaScript library with a facade that hides implementation details.

Basic call control is defined by off-hook/on-hook, ringer, mute/unmute and hold/resume. With these features, it is possible to implement a browser-based softphone app.
Combined with the WebRTC technology it is possible to create a softphone that only requires small software components installed locally on the computer, while the business logic is implemented in JavaScript.

SYSTEM REQUIREMENTS

In order to communicate with the headset from Javascript, you need to deploy two packages on the agent’s client computers:

  • Browser extension for Chromium-based browsers
  • Jabra Chromehost helper application for headset communication

Operating systems supported by components:

  • Windows 64 bit, Windows 8.1 or newer
  • Windows 32 bit, Windows 8.1 or newer
  • macOS, 10.14 or newer

Browsers supported:

  • Chromium-based browsers
  • Google Chrome from version 87
  • Microsoft Edge from version 87

DOCUMENTATION

The solution consists of a Javascript API that webpages can consume, a chrome web extension and a native chromehost that must be installed separately.

Javascript/typescript API

Developers must use the versioned Javascript library file with the format jabra.browser.integration.<majorVersion>.<minorVersion>.js and the associated typescript \*.d.ts definition file which documents the API in detail, including exactly what each API method expect for parameters and what each method returns.

These files adhere to semantic versioning so increases in majorVersion between releases indicate breaking changes so developers using the softwaremay need to change their code when updating. Increases in minorVersion indicates that all changes are backwards compatible.

Tip: Javascript developers can use the supplied typescript file with a reference path comment on top of your javascript files to get code completion for the Jabra API in many development tools.

The API v3.0 is fully backward compatible with v2.0 and works with the current 2.x version of the Chrome Host and Chrome Extension.

The library internally checks for dependencies – and will report this to the app using the library. An example: When trying to initialize Jabra library the promise might fail with an error “You need to use this Extension and then reload this page” if the browser extension is missing.

Getting started with using the API in your web applications

First, make sure the Javascript API Client File is included in your HTML page.

Secondly, the library must be initialized using javascript like this:

jabra
  .init()
  .then(() => {
	// Handle success
  })
  .catch(err => {
	// Handle error
  });

Generally, you will also need to setup various event handlers, like for example for when a new Jabra device has been attached to the computer or when the device has requested to be muted (just be aware that some events are only send if the device is in a specific state. For example, mute is only send when the device is off hook):

jabra.addEventListener("device attached", event => {
  // Handle new device
});

jabra.addEventListener("mute", event => {
  // Handle mute event.
});

When issuing commands, this API only works with one (active/selected) jabra device at the time (only an issue if you have multiple Jabra devices connected at the same time). You can easily issue specific commands to the active device like this example:

jabra.offHook();

Importantly, please do consult the Typescript Definition File for a full description of how to use the API.

For many editors and IDE's, the above typescript definition file can be used to provide code completion and context sensitive help. For example, for Visual Code, this requires top-level comment like this to your javascript source file:

/// <reference path="<your-path-to-a-local-copy-here>/jabra.browser.integration-3.0.d.ts" />

DONGLE DEVICES

Some Jabra headsets connect via Bluetooth to a USB-connected dongle. In the getDevices list, dongle and headset will appear separately, and the SDK will automatically sort out sending commands to the headset if called on the connected dongle and vice versa.
However, the devlog event needs to be subscribed to the headset only.

Development Examples

Find the source code for the examples below on Github.


Changelog

Jabra Chromehost 2.1.1 (Mac Only)

Update Chrome Host for Mac to support Big Sur.

Build date: 5 Mar 2021

Resources

Title Version Last Updated Link
Jabra Chromehost for Windows 2.1.0 Feb 2021 Download
Jabra Chromehost for Mac 2.1.1 Mar 2021 Download
Javascript API Client File 3.0 Feb 2021 Download
Typescript Definition File 3.0 Feb 2021 Download
Chrome Extension 2.1.0 Feb 2021 Google Web Store