Basic connector that manages connection to Sangoma Headsets and listens for events such as button presses, placing or removing from cradle, etc.
const headset = require('sangoma-headset')
// Connect to the device
// Disconnection logic is handled within the headset object
headset.connect()
inboundCall
: Signal an inbound call and start ringing.onCall
: Signal that a call has started (either inbound or outbound).finishCall
: Signal that the on call state has finished.
These methods will only work during a call
mute
: Signal the headset to turn on mute indicator.unmute
: Signal the headset to turn off mute indicator.
The headset
object is an EventEmitter
that can emit the following events:
placed-on-cradle
: Headset is placed on cradleremoved-from-cradle
: Headset is removed from cradlehook-off
: Hook button is pressed to take a call. It requires the call to have been signaled by calling theinboundCall
method on the headset object.hook-on
: Hook button is pressed to finish a call. It requires the call to have been signaled by calling theinboundCall
oronCall
method on the headset object.volume-up
volume-down
mute-toggle
: mute button is pressedunmute
This project includes a CLI that you can use for testing and debugging different commands, in order to use it you need to run the cli
command.
npm install -g yarn
yarn install
yarn cli
This project makes use of node-hid
in order to connect and communicate with the device. All requirements from node-hid
apply here, specially when using it within Electron.
In your electron project, add electron-rebuild
to your devDependencies
.
Then in your package.json scripts
add:
"postinstall": "electron-rebuild --force"
This will cause npm
to rebuild node-hid
for the version of Node that is in Electron.
If you get an error similar to The module "HID.node" was compiled against a different version of Node.js
then electron-rebuild
hasn't been run and Electron is trying to use node-hid
compiled for Node.js and not for Electron.
If using node-hid
with webpack
or similar bundler, you may need to exclude
node-hid
and other libraries with native code. In webpack, you say which
externals
you have in your webpack-config.js
:
externals: {
"node-hid": 'commonjs node-hid'
}
Examples of node-hid
in Electron:
- electron-hid-toy - a simple example of using
node-hid
, that will hopefully always track the latest Electron release - electron-hid-test - even simpler example of using
node-hid
- Blink1Control2 - a complete application, using webpack (e.g. see its webpack-config.js)
If you are using electron-builder
there is no need for electron-rebuild
as it is already included, sort of. Instead of electron-rebuild
you can use:
"postinstall": "electron-builder install-app-deps"
install-app-deps
can also take different parameters, useful for when you're building for a different OS (e.g. building for Windows from Linux or Mac), you could use something like this:
"rebuild-windows": "electron-builder install-app-deps --platform=win32 --arch=x64"
When building for MacOS using hardenedRuntime: true
it is important to set the appropriate entitlements, in this case node-hid
will require:
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
You can find a complete list of entitlements here