sangoma-headset
v0.2.1
Published
Interact with Sangoma branded headsets
Downloads
14
Readme
Sangoma Headset Connector
Basic connector that manages connection to Sangoma Headsets and listens for events such as button presses, placing or removing from cradle, etc.
Usage
const headset = require('sangoma-headset')
// Connect to the device
// Disconnection logic is handled within the headset object
headset.connect()
Call flow methods
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.
Events
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
CLI
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
Installation
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.
Electron projects using node-hid
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)
Electron projects that use electron-builder
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"
Additional information for electron-builder on MacOS
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