IP PBX Oktell
Задача:
В случае, когда пользователь участвует в групповом номере и приходит много звонков, нет возможности совершить исходящий звонок, так как сразу после завершения текущего разговора приходит следующий звонок. Для решения такой задачи нужно вывести пользователя из группового номера.
Решение:
1) Попросить администратора убрать пользователя из группового номер
Не самый лучший вариант.
2) Воспользоваться возможностью web интерфейсом Oktell'a.
Для этого перейдем в раздел Администрирование\ Внешние модули\Разделы меню
Нажимаем "Добавить" и в качестве "Адреса страницы веб-сервиса" укажем следующий адрес:
http://192.168.0.20:4055/execsvcscriptplain?name=phone_buttons&startparam1=[user_guid]&async=0&timeout=10
,где
phone_buttons - название служебного сценария.
[user_guid] - id оператора, открывшего создаваемый пункт меню
Создаем служебный сценарий "phone_buttons".
На старт данного сценария передается [user_guid]. Сохраняем его в переменную текстовую Userid.
Далее в компоненте "Присвоение" служебной переменной "(сл) Возвращаемое значение 1(строка)" присваиваем выражение:
'<html>
<body topmargin="300">
<H1 align="center" height="500">
<a target="Ready" href="http://192.168.0.20:4055/execsvcscriptplain?name=Управление
групповым номером 8888&startparam1='+[Userid]+'&startparam2=0&async=0&timeout=10">
Выйти из группового номера 8888</a>
</H1>
<p align="center" height="500">
======================================================================================
</p>
<H1 align="center" height="500">
<a target="Busy" href="http://192.168.0.20:4055/execsvcscriptplain?name=Управление
групповым номером 8888&startparam1='+[Userid]+'&startparam2=1&async=0&timeout=10">
Войти в групповой номер 8888</a>
</H1>
<iframe hidden name="Ready" frameborder="0" height="0" >
</iframe>
<iframe hidden name="Busy" frameborder="0" height="0">
</iframe>
</body>
</html>'
,где по ссылкам будет запускаться служебный сценарий "Управление групповым номером 8888" и в качестве параметра будет передаваться "1" или "0", в зависимости выбранной ссылки.
В после перезапуска клиентского приложения, в разделе "Внешние модули", появиться созданный пункт меню "Управление номером"
Теперь рассмотрим сценарий "Управление групповым номером 8888", в котором происходит добавление или удаления пользователя из группового номера
Если переданный параметр был "1", то прежде чем добавлять пользователя в групповой номер, проверяем нет ли уже его там. Если нет, то добавляем пользователя в групповой номер с помощью SQL запроса:
declare @id uniqueidentifier
select @id=ExtraId from A_NumberPlanAction npa
inner join A_NumberPlan np on np.Id=npa.NumID and np.Prefix='8888'
insert into A_RuleRecords(ID, InnerAddressType, StartTime, FinishTime, RuleId, ReactId, Account)
values(NewId(), @objtype, 0, 90, @id, @idobject, '')
Если переданный параметр был "0", то удаляем пользователя из группового номера с помощью SQL запроса:
declare @id uniqueidentifier
select @id=ExtraId from A_NumberPlanAction npa
inner join A_NumberPlan np on np.Id=npa.NumID and np.Prefix='8888'
delete from A_RuleRecords
where InnerAddressType=@objtype and ReactId=@idobject and RuleId=@id
И что бы сбросить с него очередь, меняем его статус на "Отсутствует" с помощью запроса:
'http://192.168.0.20:4055/wp_setuserstate?user='+[Userid]+'&userstateid=3'
а потом на "На месте" с помощью запроса:
'http://192.168.0.20:4055/wp_setuserstate?user='+[Userid]+'&userstateid=1'
В конце сценария перезапускаем сервер состояния с помощью компонента "Статус объекта", для того чтобы все изменения вступили в силу.
Вот и все! Вопросы в комментарии.