Индикация паузы агента очереди

В "Сценарии и кейсы" описано, как реализовать паузу для агента очереди.  Надо для нажатия *46 создать диалплан с кодом -

1,Answer()
n,Set(PeerNumber=${CHANNEL(endpoint)})
n,Set(MemberStatus=${DB(QueueMemberOnPause/${PeerNumber}})
n,Set(AppName=${IF($[ "${MemberStatus}" != "1" ]?PauseQueueMember:UnpauseQueueMember)})
n,Set(NewMemberStatus=${IF($[ "${MemberStatus}" == "1" ]?0:1)})
n,Exec(${AppName}(,Local/${PeerNumber}@internal/n))
n,Set(DB(QueueMemberOnPause/${PeerNumber})=${NewMemberStatus})
n,Playback(beep)
n,Hangup()

Хорошо, но все нажатия *46 как для включения, так и отключения паузы проходят для агента очереди одинаково. И вполне вероятно, если его что-то отвлекает, он может не сообразить, нажал он уже *46 или нет. Делать ли повторное нажатие и состояние испортить? Нужна броская индикация состояния. Предлагаю в конце делать beep одинарный, если в результате пауза включена, и двойной, если выключена.

Прошу внести соответствующую доработку в код. Сам я пока затрудняюсь корректно это сделать. Спасибо!

А можно ли так устроить, чтобы коллеги агента могли видеть его состояние пауза/нет по лампочке его кнопки на своем телефоне?

Может быть тогда проще вовсе разложить на два "Приложения":

Первое (пауза, один beep)

1,Answer()
n,Set(PeerNumber=${CHANNEL(endpoint)})
n,PauseQueueMember(,Local/${PeerNumber}@internal/n)
n,Set(DB(QueueMemberOnPause/${PeerNumber})=1)
n,Playback(beep)
n,Hangup()

Второе (снять паузу и два beep)

1,Answer()
n,Set(PeerNumber=${CHANNEL(endpoint)})
n,UnpauseQueueMember(,Local/${PeerNumber}@internal/n)
n,Set(DB(QueueMemberOnPause/${PeerNumber})=0)
n,Playback(beep)

n,Playback(beep)
n,Hangup()