Yes, this is an open issue. I already discussed this in another thread (https://developer.jabra.com/forums/posts/list/99.page
My workaround is: Per device I maintain two flags:
- IsOffHook reflects the current hook state as defined by my Softphone. I call SetHookState only when the hook state changes. I don't call SetHookState twice for the same hook state.
- ReportedOffHookSate reflects the hook state as received from the Jabra API (bool value from TranslatedButtonInputEventArgs for ButtonId.OffHook). I handle the hook event from the headset only when the recceived hook button state is different from the last reported hook button state.