15 posts / 0 new
Last post
harlank1
Using WebHID Directly without using any desktop apps or local web services
Does Polycom/Plantronics have any information or guidance on using WebHID directly to access and control their headsets in a web-based softphone scenario? I haven't been able to find any documentation on this.

bcaldwell
If a softphone has implemented support for WebHID, Poly headsets should "just work" when connected using a Chromium-based browser like Chrome or Edge. Can you provide more details about what you would like to do so we can better understand your proposed deployment? Which headset models are you most interested in controlling? Are you deploying in a Chromium browser? On a Windows, macOS, or Chrome OS device?

harlank1
We're essentially building the softphone. Our target is primarily Chromium browsers on Windows and Electron on Windows. In the future we hope to support MacOS as well but currently it's not our target. Do you know of any example projects of programming WebHID for Poly Headsets?

harlank1
As far as what headsets we'd like to control, the simplest answer is probably "all of them" but to be more specific, we'll be targeting models frequently used in corporate environments by receptionists and call center agents. We can gather a more specific list if that becomes necessary.

bcaldwell
As above, Poly headsets (and USB devices broadly) should "just work" with WebHID. You should not need to do anything special to support Poly headsets, as WebHID messaging is built into the browser layer. If your softphone supports WebHID, then call control for Poly headsets should function as designed when your web app is active in a Chromium browser. Yes, there are example projects, but they are not yet public. We expect at least one project to become public in June, but the timing is subject to change.

bcaldwell
Poly USB headsets for UC and Contact Center, Blackwire, and EncorePro, have been tested with WebHID. You should not have any problems, but please do alert us if you observe anomalies.

harlank1
Just to clarify, getting audio from headsets is not the challenge we have. Responding to button presses for answer, hangup, mute, unmute, volume up/down are the things we want to be able to do. We haven't seen any useful WebHID examples of this and google returns very limited results.

bcaldwell
That is understood. WebHID developer support really should come from Google. I'll inquire with our contacts to see what they can offer you.

harlank1
OK, I'll try to clarify a bit here. We're trying to integrate with all the major headset manufacturers starting with the most important so Polycom and Jabra are our focus right now. We've been reviewing documentation for Jabra. #1 Jabra has a Javascript library that handles all the WebHID interactions for the developer. Does Polycom have anything like this? #2 Handling Jabra headset events can be fairly complicated. For example, when the user presses the Answer Button, the application needs to send back an acknowledgment. Jabra has all this documented on their website, the whole flow, various codes used, requirements, etc. We haven't seen anything like this on the Poly/Plantronics site. Can you point me to relevant documentation? #3 From your point of view, is WebHID just a simple wrapper that allows USB HID events to flow to the browser? So is all USB developer information applicable to WebHID as well? As far as using WebHID to connect to devices, get permissions, setup listeners etc., we have found good information for this on the web. What we haven't found is the more specific details on interpreting button presses, sending acknowledgements and commands to Poly headsets, which headsets support which WebHID features, etc.

harlank1
EPOS / Sennheiser also has a Javascript WebHID library: "The Web SDK is a JavaScript file that can be used in modern browsers and enables call control through a set of public functions. This SDK supports EPOS devices via either WebSocket or Web HID. Release date: January 11, 2022"

kennyb
Is there any update on this? It's been almost a year. I cannot find any webhid guidance from poly/plantronics. I've also gone through the webHID spec, and can send/receive reports and decode the usages and dataviews. The bit I do not yet understand, is how to narrow down the reports to inform me exactly which button has been pressed For example below, here are the reports associated with the call button single press and mute button. But they contain many reports, for example the mute button contains usages for hook switch, phone mute and flash. The call button for this headset only emits "vendor specific" usages which AFAIK are not listed anywhere. (page/type refer to the HID usage tables for USB. usageType is just my mapping to defined types). Edit: the saved version here losed all readability formatting. Call Button 8,115,79,154,172,154,206,226,77,167,167,0,168,100,137,195,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 handleInputReport: reportId:20, value:8 *** item for id 20. Page:FFA0. Type:00B1. usageType: *** item for id 20. Page:FFA0. Type:00B2. usageType: *** item for id 20. Page:FFA0. Type:00B5. usageType: *** item for id 20. Page:FFA0. Type:00B7. usageType: *** item for id 20. Page:FFA0. Type:00B3. usageType: *** item for id 20. Page:. Type:. usageType: 0,115,79,154,172,154,206,226,77,167,167,0,168,100,137,195,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 handleInputReport: reportId:20, value:0 *** item for id 20. Page:FFA0. Type:00B1. usageType: *** item for id 20. Page:FFA0. Type:00B2. usageType: *** item for id 20. Page:FFA0. Type:00B5. usageType: *** item for id 20. Page:FFA0. Type:00B7. usageType: *** item for id 20. Page:FFA0. Type:00B3. usageType: *** item for id 20. Page:. Type:. usageType: Mute/unmute 4,115,79,154,172,154,206,226,77,167,167,0,168,100,137,195,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 handleInputReport: reportId:20, value:4 *** item for id 20. Page:FFA0. Type:00B1. usageType: *** item for id 20. Page:FFA0. Type:00B2. usageType: *** item for id 20. Page:FFA0. Type:00B5. usageType: *** item for id 20. Page:FFA0. Type:00B7. usageType: *** item for id 20. Page:FFA0. Type:00B3. usageType: *** item for id 20. Page:. Type:. usageType: 0,115,79,154,172,154,206,226,77,167,167,0,168,100,137,195,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 handleInputReport: reportId:20, value:0 *** item for id 20. Page:FFA0. Type:00B1. usageType: *** item for id 20. Page:FFA0. Type:00B2. usageType: *** item for id 20. Page:FFA0. Type:00B5. usageType: *** item for id 20. Page:FFA0. Type:00B7. usageType: *** item for id 20. Page:FFA0. Type:00B3. usageType: *** item for id 20. Page:. Type:. usageType: 1 handleInputReport: reportId:8, value:1 *** item for id 8. Page:000B. Type:002F. usageType:Phone Mute *** item for id 8. Page:000B. Type:0020. usageType:Hook Switch *** item for id 8. Page:000B. Type:0021. usageType:Flash *** item for id 8. Page:. Type:. usageType: 0 handleInputReport: reportId:8, value:0 *** item for id 8. Page:000B. Type:002F. usageType:Phone Mute *** item for id 8. Page:000B. Type:0020. usageType:Hook Switch *** item for id 8. Page:000B. Type:0021. usageType:Flash *** item for id 8. Page:. Type:. usageType: 0,115,79,154,172,154,206,226,77,167,167,0,168,100,137,195,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 handleInputReport: reportId:31, value:0 *** item for id 31. Page:FFA0. Type:009C. usageType: *** item for id 31. Page:. Type:. usageType: 1,115,79,154,172,154,206,226,77,167,167,0,168,100,137,195,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 handleInputReport: reportId:31, value:1 *** item for id 31. Page:FFA0. Type:009C. usageType: *** item for id 31. Page:. Type:. usageType:

AWhite
Hi, We will reach out to you with some specific guidance. In general terms WebHID is just an API on top of standard HID, meaning that on connecting to a device you can enumerate the device meta data (HID usage pages/usages) to discover the supported input, output and feature HID usage reports (and which report id corresponds to which HID usage), then you are able to send and receive those reports. For supporting a softphone integration with Telephony 0xB/LED 0x8/Consumer 0xC HID usage pages https://www.usb.org/sites/default/files/hut1_4.pdf The full set of reports you would need for basic call control is: Output reports on LED usage page 0x8: 0x09 LED Mute 0x17 LED Hook 0x18 LED Ring 0x20 LED Hold And input reports on Telephony usage page 0xB: 0x20 Tel Hook 0x21 Tel Flash 0x2f Tel Mute Some of those other reports you received were on usage page 0xFFA0, which along with 0xFFA2 are the Poly "vendor" usage pages, those messages are used to communicate with the Poly software, but are not needed for a softphone Telephony integration.

kennyb
Thank you. That's informative. I'm looking forward to the extra guidance you can send

matteo0402
Hey. I'm having the same issue as the other. No documentation from your guy's site, whatsoever on how to implement Plantronics/Poly headsets using WebHID. We can fetch an answer call event, but that's it. We've been having a hard time trying to send data to the headset and receiving any other type of events... This has been an issue for way to long!

kennyb
How do I distinguish between a single and double press of the call button? I see different behavior with different devices by Plantronics (so I'm assuming some headsets don't support rejecting a call). Are the values on a report standardised? IE, 0 for onhook, 2 for offhook. Thanks!

Add new comment