1 post / 0 new
d.sandul@mighty...
Different models have different behaviour (RU)
Добрый день! У нас есть необходимость поддержать ответ на звонок нажатием кнопки Talk. При наличии входящего вызова нажатие на Talk должно снимать трубку, а при наличии установленного соединения с абонентом нажатие на Talk должно давать отбой.  Но мы столкнулись с разным поведением гарнитур Savi W430A-M  и CS520 при нажатии. CS520: а) При отстуствии связи при нажатии Talk всегда прилетает пара событий OnCallStateChanged cse_args.callState == CALL_STATE_DEVICE_CHANGE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_UNKNOWN cse_args.callState == CALL_STATE_HOOK_IDLE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_IDLE_TALKPRESS б) При входящем звонке при нажатии Talk прилетает аналогичная пара. в) Когда связь установлена, поведение меняется.   - Нажатие на Talk выключает звук, никаких событий не прилетает.   - Второе нажатие на Talk снова включает звук, и снова генерится пара событий cse_args.callState == CALL_STATE_DEVICE_CHANGE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_UNKNOWN cse_args.callState == CALL_STATE_HOOK_IDLE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_IDLE_TALKPRESS Savi W430A-M явно меняет состояние на "вкл-выкл" и шлёт разные события. Вне зависимости от наличия связи: а) Если гарнитура выключена, при нажатии Talk   - гарнитура включается   - прилетает пара cse_args.callState == CALL_STATE_DEVICE_CHANGE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_UNKNOWN cse_args.callState == CALL_STATE_HOOK_IDLE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_IDLE_TALKPRESS б) Если гарнитура включена, опять же несмотря на наличие или отстутствие связи при нажатии Talk   - гарнитура выключается   - прилетает одиночное событие cse_args.callState == CALL_STATE_DEVICE_CHANGE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_UNKNOWN Таким образом, 1. CS520 ведёт себя одинаково вне зависимости от начального состояния, но по-разному в зависимости от наличия связи. И тут есть проблема, хотя и не очень неприятная: для отбоя связи при активном звонке оператору придётся дважды нажать на кнопку Talk (поскольку первое нажатие не генерирует никаких событий) 2. W430A-M ведёт себя по-разному в зависимости от начального состояния, но независимо от налияи связи. То есть меняет состояние как триггер. И это более неприятное положение - потому что возможны разные сценарии   а) Гарнитура выключена.  Приходит входящий вызов. Нажатие на кнопку Talk её включает и позволяет принять звонок. Ок, всё хорошо.   б) Гарнитура включена. Приходит входящий вызов. Нажатие на кнопку Talk её вЫключает, но позволяет принять звонок. Можно, конечно, проигнорировать событие cse_args.callState == CALL_STATE_DEVICE_CHANGE && cse_args.deviceEventkind == DEVICE_EVENT_KIND_UNKNOWN - но тогда для принятия звонка придётся нажимать кнопку дважды  в) Гарнитура выключена. Установлен звонок с абонентом (соединились без участия кнопки Talk). Оператор обнаруживает, что не слышит собеседника. Если сейчас нажать Talk - то это будет означать отбой связи, хотя оператор только хотел включить звук. Вот это самое неприятное последствие. В связи с чем вопросы. 1. Это не баг конкретного экземпляра гарнитуры? 2. Можно ли обеспечить путём каких-то настроек одинаковое поведение гарнитур? 3. Можно ли узнать текущее состояние гарнитуры W430A-M - включена она или выключена? 4. Можно ли управлять состоянием гарнитур? Например, поймав нажатие на Talk, мы точно знаем, что хотим её выключить, а не просто сменить состояние. Или наоборот, включить. С уважением, Д.Сандул