Сегодня подключил и потестировал паузу. Есть ряд вопросов.
1. Самое главное - пауза включается, но потом не отключается! С beep и лампочкой на кнопке всё в порядке срабытывает, но по факту возвращение сотрудника к работе в очереди не происходит, его телефон не звонит! Если его вывести из состава очереди и опять ввести, то телефон в очереди восстанавливается и звонит. В чем тут может быть загвоздка? К опубликованному коду диалплана изменения для beep и лампочки носят косметический характер и вставлены в самый конец. Вот используемый у меня код -
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,ExecIf($[ "${MemberStatus}" != "1" ]?Playback(silence/1))
n,ExecIf($[ "${MemberStatus}" != "1" ]?Playback(beep))
n,ExecIf($[ "${MemberStatus}" == "1" ]?Set(DEVICE_STATE(Custom:${PeerNumber})=BUSY))
n,ExecIf($[ "${MemberStatus}" != "1" ]?Set(DEVICE_STATE(Custom:${PeerNumber})=NOT_INUSE))
n,Playback(silence/1)
n,Hangup()
2. Что индикация на кнопке стала как для DND, для меня некритично. У нас DND не используют. Но тем не менее, возможно ли поиграться и с другими состояниями, чтобы индикация стала другой? Можно узнать полный список возможных значений DEVICE_STATE?
3. Индикация на кнопке интересна не только коллегам, но и самому сотруднику, чтобы наглядно видеть свое текущее состояние в очереди. Но для этого ему надо завести кнопку самого себя. Можно, но как я уже писал, кнопок у нас не так много, чтобы ими разбрасываться. В порядке бреда - а как бы сделать индикацию на самой кнопке вкл/откл паузы, т.е. где запрограмирован код *46?
4. Сигнал beep сливается с сигналами отбоя, можно не разобрать. А двойной beep тоже не очень разделяется. Думаю, стоит вставить silence как перед отбоем, так и между beep. Я вставил silence/1 - это самый короткий промежуток? Я бы между beep поставил вдвое короче.
5. Наверное, в последней строке лучше MemberStatus сравнивать не на == "0", а на != "1" как это делается в начале исходного текста?
6. Если сотрудник числится в 2 или более очередях, то код *46 управляет паузой сразу во всех. Но для некоторых сотрудников было бы удобно управлять паузой по очередям врозь. Как бы ввести дифференциацию, скажем, кодом *46<очередь>?