Skip to content

Commit

Permalink
beta doc updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Morten Christensen committed Aug 28, 2018
1 parent d179567 commit bf716a0
Show file tree
Hide file tree
Showing 18 changed files with 138 additions and 569 deletions.
105 changes: 105 additions & 0 deletions BETA.md
@@ -0,0 +1,105 @@
![Banner](/docs/banner.png)

# BETA release Overview
This page contains information about current public beta's of the Jabra Browser SDK, which customers can use to test and prepare for new versions in advance.

**Warning**: The software released here is considered **unstable**, possibly **untested** and **might be updated at any time**. Use at **your own risk**. If you want to use something stable and tested please use our stable [non-beta version](README.md).

For general information about the library please refer to our [main documentation page](README.md)

# Compatibility
With the exception of the new 2.0 API component usage compared with the 1.2 API component and a beta-only security issue documented under the beta browser extension link below, everything in this release is backwards compatible with old version(s). This means that the updated browser extension and the updated chromehost will work in combination with older versions of other components. It also mean that you can continue to use the old 1.2 API with this release (if you want to miss out on new features and bugfixes).

You need to install ALL updates for all bugfixes and new features to work 100% but existing old features will continue to work when updating just one or two components while you wait for the rest to be updated at a later time.

We consider compatibility important because changes to API, browser extension and native chromehost are often pushed at different times in different channels. Thus, please report any compatibility issues if found!

# BETA Documentation
* [Typescript API definition/documentation](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/JavaScriptLibrary/jabra.browser.integration-1.2.d.ts)
* [Changelog](CHANGELOG.md)

# BETA Javascript API
* [Javascript API 2.0 file download link](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/JavaScriptLibrary/jabra.browser.integration-2.0.js).

Notice that this API contains [breaking changes](CHANGELOG.md) compared with previous 1.2 version as evident from the major version.

*For the API we adheres to semantic versioning
so increases in the major version component of the version number between releases indicate breaking changes where developers using the software
may need to change their code when updating. Increases in minor version indicates that all changes ought to be backwards compatible.*

# Native Chromehost BETA downloads
| Operating systems | Chrome host native download |
| ----------------------------- | --------------------------------------- |
| Windows (Windows 7 or newer) | [JabraChromeHost2.0.msi](https://github.com/gnaudio/jabra-browser-integration/blob/master/downloads/JabraChromeHost2.0beta1.msi?raw=true) |
| macOS (El Capitan/Sierra) | *comming soon* |

# WebExtension BETA
[![Banner](/docs/ChromeWebStoreBadge.png)](https://chrome.google.com/webstore/detail/jabra-browser-integration/igcbbdnhomedfadljgcmcfpdcoonihfe)

**Important note**: If you are testing the browser extension beta together with the old 0.5 non-beta version of the chrome host, you need to give it explicit permission to call into the old chromehost executable. This is done by manually adding the new beta extension id "igcbbdnhomedfadljgcmcfpdcoonihfe" to allowed_origins in file com.jabra.nm.json in the installation directory of the native host. On windows this file is normally located in "C:\Program Files (x86)\JabraChromeHost". Note, that this security issues is only a beta issue - the problem goes away when the official version is released using an update to the non-beta browser extension. New versions of the chrome host will contain this new security setting by default.


# BETA Development tools/demos
* [Call control test](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportBeta/development/index.html) - testpage to try out call controll in the library
* [Library api test](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportBeta/test/index.html) - **NEW** testpage that allows detailed testing of individual API calls)
* [Playback demo with autoselection](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportBeta/playback/index.html) - demo page showing autoselection of jabra device with simple audio playback example
* [WebRTC softphone demo](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportBeta/webrtc/index.html) - demo that supports mute/unmute/end-call from a Jabra device + jabra device autoselection

# Upgrading API from 1.2 to 2.0
As noted in the [changelog](CHANGELOG.md) all methods now return values using [Javascript promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) rather than callbacks. Also, events are now subscribed to using a `addEventListener(nameSpec, callback)` and `removeEventListenernameSpec, callback)` similar to standard libraries and `requestEnu` is removed.

This means that 1.2 code like this:

```
jabra.init(
function () {
// Handle success
},
function(msg) {
// Handle error
},
function (req) {
if (req == jabra.requestEnum.mute) {
// Handle mute event
} else if (req == jabra.requestEnum.unmute) {
// Handle unmute event.
}
}
);
```

should be converted to 2.0 code like this:

```
jabra.init().then(() => {
// Handle success
}).catch((err) => {
// Handle error
});
jabra.addEventListener("mute", (event) => {
// Handle mute event.
});
jabra.addEventListener("unmute", (event) => {
// Handle unmute event.
});
```

The above changes were made to better handle a future expansion of events efficiently and to streamline testing and API usage in a modern way. For example the changes made it easy to create our new API test tool.

# Typescript support (new notable BETA feature / documentation)
Added typescript definitions `jabra.browser.integration-2.0.d.ts` of API for detailed documentation, static checking and better IDE support. Refer to this file for detailed documentation about the API, including exactly what each API method expect for parameters and what each method returns.

You can use the typescript file with a [reference path comment](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html) on top of your javascript files to get code completion for the Jabra API in many development tools.

# Logging (new notable BETA feature)
In this beta version of the extension, chromehost and api has logging support that can be used
to diagnose errors.

Logging for javascript components can be seen in the browser developer console for the application and for the background page of the extension (a link is provided under chrome
extensions when developer mode is selected). The log level (how much is being logged) can be controlled by right-clicking on the extension and selecting options.

Logging for all native components (chromehost and platform sdk library) are written to text files. Destination is specified by environment variable LIBJABRA_RESOURCE_PATH or by default to %APPDATA%\JabraSDK on Windows and ~/Library/Application Support/JabraSDK on Mac OS. Log level is specified by the environment variable LIBJABRA_TRACE_LEVEL with possible values "debug", "error", "warning".


8 changes: 4 additions & 4 deletions CHANGELOG.md
@@ -1,10 +1,10 @@
# General for information.
# General information.

Here are listed changes for (1) Javascript API, (2) Browser extension and (3) native chromehost installation.

## 1/3 Javascript API changes :

2.0 Added/changed the following
2.0 (BETA) Added/changed the following ( this section is work in progress )
* Added typescript definitions `jabra.browser.integration-2.0.d.ts` of API for detailed documentation, static checking and better IDE support. *Tip: Use the typescript file with a [reference path comment](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html) on top of your javascript files to get code completion for the Jabra API in many development tools.*
* Modern ES5+ promisified Javascript API - All methods now return values using [Javascript promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) rather than callbacks in order to enabled streamlined testing and API usage. This means for instance, the `init()` method now returns a JS promise that user should use then()/catch() on to react on initialization **(breaking change)**.
* Individual subscription to event(s) using `addEventListener(nameSpec, callback)` and `removeEventListenernameSpec, callback)` **(breaking change)**.
Expand All @@ -26,7 +26,7 @@ Here are listed changes for (1) Javascript API, (2) Browser extension and (3) na

## 2/3 Browser extension changes:

2.0 Added the following
2.0 (BETA) Added the following ( this section is work in progress ):
* Support for passing complex input/output as needed by new JS API.
* Fixed various bugs, incl. a race-condition where incorrect results would be given.
* Support for new getInstallInfo command.
Expand All @@ -35,7 +35,7 @@ Here are listed changes for (1) Javascript API, (2) Browser extension and (3) na
0.5 Orginal version with call control support.

## 3/3 Chome host changes:
2.0 Added the following:
2.0 (BETA) Added the following ( this section is work in progress ):
* Logging to files similar to native SDK.
* Support for more complex input/output needed by new JS API.
* Support for new getInstallInfo command.
Expand Down
43 changes: 23 additions & 20 deletions README.md
Expand Up @@ -3,6 +3,11 @@
# Overview
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](https://en.wikipedia.org/wiki/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.

# Versions

This document covers the latest stable version - for information about planned changes see the latest unstable [BETA version](BETA.md)


## Project goals
* be able to control a headset from JS
* be a lightweight solution
Expand All @@ -26,28 +31,30 @@ The following desktop operating systems are supported:
### Browser support
Google Chrome web browser - stable channel - 32 bit and 64 bit.

## Using the library
Developers must use the versioned JavaScript library file: `jabra.browser.integration.<majorVersion>.<minorVersion>.js`. This file adheres to semantic versioning
# Using the library

## Javascript API
Developers must use the versioned JavaScript library file with the format `jabra.browser.integration.<majorVersion>.<minorVersion>.js`. This file adheres to semantic versioning
so increases in majorVersion between releases indicate breaking changes so developers using the software
may need to change their code when updating. Increases in minorVersion indicates that all changes are backwards compatible.

The library internally checks for dependencies – and will report this to the app using the library. An example: The Jabra library is initialized and an error callback function is called with this text and a link: “You need to use this Extension and then reload this page”. Note that a future version could change the internal implementation and that removes/adds new requirements.

### Developer web site (release version)
A developer web site with developer tools and a softphone demo:

https://gnaudio.github.io/jabra-browser-integration
[Latest stable version download link: - Javascript API 1.2 file](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/JavaScriptLibrary/jabra.browser.integration-1.2.js)

### The API

[Application Programming Interface typescript]( docs/API.md)
[Application Programming Interface documentation]( docs/API.md)

### Downloads
#### WebExtension
[![Banner](/docs/ChromeWebStoreBadge.png)](https://chrome.google.com/webstore/detail/jabra-browser-integration/okpeabepajdgiepelmhkfhkjlhhmofma)
#### Jabra Chrome Host
[Chrome Host](https://gnaudio.github.io/jabra-browser-integration/download)

# Native Chromehost downloads
| Operating systems | Chrome host native download |
| ----------------------------- | --------------------------------------- |
| Windows (Windows 7 or newer) | [JabraChromeHost0.5.msi](https://github.com/gnaudio/jabra-browser-integration/blob/master/downloads/JabraChromeHost0.5.msi?raw=true) |
| macOS (El Capitan/Sierra) | [JabraChromeHost0.5.dmg](https://github.com/gnaudio/jabra-browser-integration/blob/master/downloads/JabraChromeHost0.5.dmg?raw=true) |

## Development tools
* [Library test](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportRelease/development/index.html) - testpage to try out the library
* [Playback with autoselection](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportRelease/playback/index.html) - testpage showing autoselection of jabra device with simple audio playback example
* [WebRTC softphone demo](https://raw.githubusercontent.com/gnaudio/jabra-browser-integration/master/src/DeveloperSupportRelease/webrtc/index.html) - supports mute/unmute/end-call from a Jabra device + jabra device autoselection

### Example use

Expand All @@ -62,13 +69,9 @@ How to add headset functionality to Amazon Connect: [Amazon Connect Guide](docs/

Documentation about [deployment](docs/Deployment.md)

# Logging
Latest versions of the extension, chromehost and api has logging support that can be used
to diagnose errors.
## Version information.

Logging for javascript components can be seen in the browser developer console for the application and for the background page of the extension (a link is provided under chrome
extensions when developer mode is selected). The log level (how much is being logged) can be controlled by right-clicking on the extension and selecting options.
For information about individual releases see [changelog](docs/CHANGELOG.md). For information about upcomming changes see also our [beta information page](BETA.md).

Logging for all native components (chromehost and platform sdk library) are written to text files. Destination is specified by environment variable LIBJABRA_RESOURCE_PATH or by default to %APPDATA%\JabraSDK on Windows and ~/Library/Application Support/JabraSDK on Mac OS. Log level is specified by the environment variable LIBJABRA_TRACE_LEVEL with possible values "debug", "error", "warning".


5 changes: 4 additions & 1 deletion docs/API.md
@@ -1,4 +1,7 @@
### The API
### The API (v 1.2 and earlier only)

NB: The API documented here wll be changed in upcomming v2.0 release. See [here](BETA.md) for details.

The JavaScript library must be initialized using this function:
```javascript
jabra.init(onSuccess, onFailure, onNotify)
Expand Down
2 changes: 1 addition & 1 deletion docs/Deployment.md
Expand Up @@ -4,7 +4,7 @@

It is possible to mass deploy the required client side software, in order to remove any client side.

1. Push the Windows installer file `JabraChromeHost0.5.msi` to the clients using your compagny IT deployment tools, i.e. Microsoft System Center Configuration Manager, IBM Tivoli or Symantec Altiris
1. Push the Windows installer file for the native chromehost (`JabraChromeHost*.msi`) to the clients using your compagny IT deployment tools, i.e. Microsoft System Center Configuration Manager, IBM Tivoli or Symantec Altiris

2. Push a Registry key to the clients. This could be done by using Group Policy or Microsoft System Center Configuration Manager.

Expand Down
2 changes: 1 addition & 1 deletion docs/JabraAmazonConnectGuide.md
Expand Up @@ -10,7 +10,7 @@ Prerequisites:
### Layered architecture
![Banner](/docs/AmazonLayers.png)

### Initialization
### Initialization (API v1.2)
Both the Amazon Connect Streams and the Jabra Browser integration libraries must be initialized:

```javascript
Expand Down
File renamed without changes
File renamed without changes.
43 changes: 0 additions & 43 deletions src/DeveloperSupportBeta/download/index.html

This file was deleted.

0 comments on commit bf716a0

Please sign in to comment.