Работа со статусом пользователя

Материал из Oktell
Версия от 12:59, 14 декабря 2016; Oktell Support (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Наверх Работа с номерным планом<<< Работа со статусом пользователя >>>Работа с правилами переадресации

Методы для работы по смене и определению текущего статуса авторизованного пользователя

  • string GetCurrentUserFullInfo ( ). Возвращает xml-структуру с описанием текущего авторизованного пользователя, включающую расширенное ролевое описание права доступа к модулям. При расширении прав впоследствии формат значения может видоизменяться количественно и качественно.


Формат возвращаемого xml (на примере):

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="userinfo">
   <property_simple key="id" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8" />
   <property_simple key="type" value="1" name="utUser" />
   <property_cdata key="name"><![CDATA[Петр]]></property_cdata>
   <property_simple key="isoperator" value="1" />
   <property_simple key="group" value="c4e3b424-3048-4cce-a2e4-033c532a7d99" name="Программисты" />
   <property_cdata key="login"><![CDATA[Peter]]></property_cdata>
   <property_cdata key="password"><![CDATA[123]]></property_cdata>
   <property_cdata key="role" value="41fbf675-8f73-488e-83ca-c108b915f51d"><![CDATA[Администратор]]></property_cdata>
   <property_simple key="callerid" value="" />
   <property_cdata key="info"><![CDATA[]]></property_cdata>
   <property_collection name="properties" count="1">
     <property_set name="role" id="41fbf675-8f73-488e-83ca-c108b915f51d">
       <property_cdata key="extwp" value="1"><![CDATA[Расширенное рабочее место]]></property_cdata>
       <property_cdata key="candeleterecords" value="1"><![CDATA[Возможность удалять записи статистики]]></property_cdata>
       <property_cdata key="showspecialscripts" value="1"><![CDATA[Показывать cистемные сценарии]]></property_cdata>
       <property_cdata key="caneditreports" value="1"><![CDATA[Возможность редактировать индикаторы call-центра]]></property_cdata>
       <property_cdata key="caneditindicators" value="1"><![CDATA[Возможность редактировать отчеты статистики сall-центра]]></property_cdata>
       <property_cdata key="viewsvctasks" value="1"><![CDATA[Доступ к служебным задачам]]></property_cdata>
       <property_cdata key="canuseacm" value="1"><![CDATA[Доступ к сервису автодозвона]]></property_cdata>
       <property_cdata key="canusemessagingout" value="1"><![CDATA[Возможность отправки сообщений]]></property_cdata>
       <property_cdata key="canusefax" value="1"><![CDATA[Доступ к офис-факсу]]></property_cdata>
       <property_cdata key="showphoneindialogcards" value="1"><![CDATA[Отображать телефон в диалоговых формах]]></property_cdata>
       <property_cdata key="viewoffice" value="1"><![CDATA[Офис]]></property_cdata>
       <property_cdata key="viewofficepersonels" value="1"><![CDATA[Сотрудники]]></property_cdata>
       <property_cdata key="viewofficestatistics" value="1"><![CDATA[Статистика]]></property_cdata>
       <property_cdata key="viewofficemycalls" value="1"><![CDATA[Мои звонки]]></property_cdata>
       <property_cdata key="viewofficeclients" value="1"><![CDATA[Клиенты]]></property_cdata>
       <property_cdata key="viewofficecabinet" value="1"><![CDATA[Кабинет]]></property_cdata>
       <property_cdata key="viewofficeredirect" value="1"><![CDATA[Переадресация]]></property_cdata>
       <property_cdata key="viewcallcenter" value="1"><![CDATA[Call-центр]]></property_cdata>
       <property_cdata key="viewcallcenteroperators" value="1"><![CDATA[Операторы]]></property_cdata>
       <property_cdata key="viewcallcenterprojects" value="1"><![CDATA[Проекты]]></property_cdata>
       <property_cdata key="viewcallcenterlists" value="1"><![CDATA[Таблицы абонентов]]></property_cdata>
       <property_cdata key="viewcallcenterscripts" value="1"><![CDATA[Сценарии]]></property_cdata>
       <property_cdata key="viewcallcentertasks" value="1"><![CDATA[Задачи]]></property_cdata>
       <property_cdata key="viewcallcentercontrolevents" value="1"><![CDATA[Контрольные события]]></property_cdata>
       <property_cdata key="viewcallcenterresources" value="1"><![CDATA[Ресурсы]]></property_cdata>
       <property_cdata key="viewcallcenterindicators" value="1"><![CDATA[Индикаторы]]></property_cdata>
       <property_cdata key="viewcallcenterstat" value="1"><![CDATA[Статистика call-центра]]></property_cdata>
       <property_cdata key="viewcallcenterreports" value="1"><![CDATA[Отчеты]]></property_cdata>
       <property_cdata key="viewcallcenterworkplace" value="1"><![CDATA[Мое рабочее место]]></property_cdata>
       <property_cdata key="viewadmin" value="1"><![CDATA[Администрирование]]></property_cdata>
       <property_cdata key="viewadminusers" value="1"><![CDATA[Пользователи]]></property_cdata>
       <property_cdata key="viewadminofficemap" value="1"><![CDATA[Карта сети]]></property_cdata>
       <property_cdata key="viewadminlines" value="1"><![CDATA[Линии]]></property_cdata>
       <property_cdata key="viewadminrights" value="1"><![CDATA[Права]]></property_cdata>
       <property_cdata key="viewadmininnernumbers" value="1"><![CDATA[Внутренние номера]]></property_cdata>
       <property_cdata key="viewadminclientforms" value="1"><![CDATA[Управление клиентами]]></property_cdata>
       <property_cdata key="viewadminsettings" value="1"><![CDATA[Общие настройки]]></property_cdata>
       <property_cdata key="viewadminscripts" value="1"><![CDATA[Сценарии]]></property_cdata>
       <property_cdata key="viewadminmonitoring" value="1"><![CDATA[Мониторинг]]></property_cdata>
       <property_cdata key="viewadminmobilemasks" value="1"><![CDATA[Мобильные маски]]></property_cdata>
       <property_cdata key="viewadminmobilestatistics" value="1"><![CDATA[Мобильная статистика]]></property_cdata>
       <property_cdata key="viewofficeclientscustomfilter" value="1"><![CDATA[Произвольные фильтры]]></property_cdata>
       <property_cdata key="viewofficeclientsadd" value="1"><![CDATA[Добавление клиентов]]></property_cdata>
       <property_cdata key="viewofficeclientsdelete" value="1"><![CDATA[Удаление клиентов]]></property_cdata>
       <property_cdata key="viewofficeclientsedit" value="1"><![CDATA[Редактирование клиентов]]></property_cdata>
     </property_set>
   </property_collection>
 </data>
 </oktellcommapper>


  • string GetUserState ( ). Возвращает текущее состояние и статус переадресации текущего авторизованного пользователя.

Формат возвращаемого xml (на примере):

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="userstate">
   <property_set name="currentstateinfo">
     <property_simple key="state" value="1" name="usReady" />
     <property_simple key="redirect" value="0" />     
   </property_set>
 </data>
 </oktellcommapper>


  • void SetUserState ( string xml ). Передает серверу команду на смену состояния и/или статуса переадресации текущего авторизованного пользователя. Не любое состояние может быть установлено. Смена состояния осуществляется сервером только в случае успешного контроля корректности.

Формат передаваемого параметра xml (на примере):

Пример 1

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="userstate">
   <property_set name="currentstateinfo">
     <property_simple key="state" value="2" />
        <property_cdata key="description"><![CDATA[Ушел на обед]]></property_cdata>
     <property_simple key="redirect" value="0" />     
   </property_set>
 </data>
 </oktellcommapper>

Пример 2

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="userstate">
   <property_set name="currentstateinfo">
     <property_simple key="state" value="1" />
     <property_simple key="redirect" value="1" />     
   </property_set>
 </data>
 </oktellcommapper>


  • string GetLineState ( ). Возвращает текущее состояние линии пользователя. В случае ее отсутствия возвращает код состояния "отключена", в случае нескольких линий возвращает состояние первой из них.

Формат возвращаемого xml (на примере):

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="linestate">
   <property_set name="currentlinestateinfo">
     <property_simple key="state" value="4" name="lsReady" />
   </property_set>
 </data>
 </oktellcommapper>


Допустимые состояния пользователя

Пользователь (оператор, супервизор или любой другой) в каждый момент времени в процессе работы имеет одно из следующих состояний:

public enum EUserState
{
usDisconnected = 0,         //Не авторизован. Для всех, когда нет связи с сервером логики 
usReady = 1,         //Готов, на месте. Для всех, когда готовность 
usLunch = 2,         //Перерыв в call-центре. Для операторов, когда готовность 
usOff = 3,         //Нет на месте. Для всех, когда не была снята трубка в момент вызова и 
                   //установлен режим перевода пользователей в OFF в настройках системы. 
usFullbusy = 5,         //Занят. Для всех, когда осуществляется работа в задаче или в разговоре 
usReserved = 6,         //Зарезервирован. Для всех, когда свободный пользователь зарезервирован 
                        //транзакцией для осуществления намеченных действий и не может быть разделен 
                        //с другими транзакциями 
usWOphone = 7         //Без телефона. Для всех, когда линия пользователя находится в одном из нерабочих
                      // состояний или отсутствует вовсе 
}        


Допустимые состояния линии

Каждый канал в процессе работы изменяет свое состояние и находится в одном из нижеперечисленных состояний. Несмотря на флаговые коды, каждое состояние может быть только в единственном виде.

public enum ELineState
{
lsDisconnected = 0x00000001,        //Отсутствует/не подключена.
lsOff = 0x00000002,        //Выключена. 
lsReady = 0x00000004,        //Готовность. 
lsHookUp = 0x00000008,        //Снятая трубка. 
lsIncomingCall = 0x00000010,        //Входящий вызов. 
lsCommutated = 0x00000020,        //Коммутация. 
lsWait = 0x00000040,        //Ожидание. 
lsFlash = 0x00000080,        //Флеш. 
lsWaitDown = 0x00000100,        //Ожидание обратного вызова. 
lsListenBusy = 0x00000200,        //Сигнал отбоя. 
lsUndefined = 0x00000400,        //Неопределенное состояние. 
lsReserved = 0x00000800,        //Зарезервирована. 
lsReservedByTask = 0x00001000        //Зарезервирована задачей. 
}


Методы для определения присутствия в call-центре

Режим call-центра предоставляет доступ пользователей к работе с проектами. Это касается как визуальных интерфейсов, так и участия в обработке звонков по задачам. Режим колл-центра лицензируется, лицензии являются конкурентными. Одновременно в режиме может находиться не более установленного ключом числа пользователей (операторов и/или супервизоров). При попытке входа очередного пользователя и отсутствии свободных лицензий сервер во входе отказывает. При выходе пользователя, находящегося в call-центре, (остановке клиентского приложения) его присутствие в режиме остается. Таким образом при следующей загрузке он автоматически попадает в call-центр. Однако, если в момент отсутствия (неавторизованности) пользователя, находящегося по умолчанию в call-центре, будет осуществлен вход любого другого пользователя, запросившего лицензию, в условиях нехватки отсутствующий пользователь будет принудительно выведен из режима call-центра, и его лицензия будет использована.

  • bool CallCenter_IsInside ( ). Возвращает признак присутствия текущего авторизованного пользователя в режиме call-центра системы. TRUE - пользователь в call-центре, FALSE - вне.
  • bool CallCenter_Enter ( ). Осуществляет попытку входа в режим call-центра системы. В случае успеха возвращает TRUE, в случае отказа по отсутствию лицензий или сбоя возвращает FALSE.
  • void CallCenter_Exit ( ). Осуществляет выход текущего пользователя из режима call-центра.


Методы для взаимодействия с менеджером задач

  • bool CallCenter_SetBusyInExternalTask ( ). Осуществляет резервирование пользователя в виртуальной для Oktell внешней задаче CRM. Фактически блокирует анализатор очереди и перевод пользователя в состояние ГОТОВ после разрыва связи.

Может быть использована например для того, чтобы при осуществлении внешней пост-вызывной обработки в карточке интегрирующего приложения до момента ее закрытия (вызова обратного метода) пользователь не резервировался системой под другие задачи, а также не производился обратный вызов его канала для соединения с абонентами в очереди.

Вызов метода может производиться в любое время. Рекомендуется осуществлять резервирование в момент начала работы с внешним блоком (карточкой, формой), но после коммутации. Не запрещается также использовать режим резервирования и в отсутствие коммутации, однако следует иметь в виду, что пользователь не сможет воспользоваться телефонным аппаратом, так как для работы в АТС ему необходимо иметь возможность быть зарезервированным на работу в ней; резервирование же в задаче блокирует сервис АТС. Отмена режима виртуального резервирования производится с помощью вызова метода CallCenter_SetFreeInExternalTask, выходом из Call-центра или выгрузкой модуля. Возвращает TRUE, если резервирование произведено, и FALSE, если пользователь уже был в резервировании задачей (внешней или внутренней к Oktell).


  • bool CallCenter_SetFreeInExternalTask ( ). Осуществляет вывод пользователя из резервирования в виртуальной для Oktell внешней задаче CRM. Вместе с этим осуществляет анализ очереди и обратный дозвон на канал пользователя в случае, если в очереди кто-либо ожидает соединения. В противном случае переводит пользователя в состояние ГОТОВ и разрешает всем службам резервировать его под свои нужды. Возвращает TRUE, если резервирование отменено, и FALSE, если пользователь не был зарезервирован или был зарезервирован во внутреннюю задачу Oktell.


  • bool CallCenter_CheckBusyInExternalTask ( ). Проверяет, является ли текущий пользователь зарезервированным в виртуальную для Oktell внешнюю задачу CRM (метод CallCenter_SetBusyInExternalTask). Возвращает TRUE, если зарезервирован, FALSE, если не зарезервирован или задача не является внешней виртуальной CRM-задачей.


  • string TM_SetTaskActive ( string ). Позволяет активировать/деактивировать задачи call-центра.

Формат передаваемого параметра xml (на примере):

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="settaskactive">
   <property_set name="params">
     <property_simple key="tasktype" value="call" /> <!-- варианты: call/text -->
        <property_simple key="idtask" value="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
     <property_simple key="active" value="1" /> <!-- значения: 1-активировать, 2-деактивировать -->
   </property_set>
 </data>
 </oktellcommapper>


Возвращает NULL или XML-структуру с результатом выполнения операции. В случае, если операция по каким-то причинам была аннулирована сервером, в содержании ответа будет присутствовать описательная строка errormessage.

Пример возвращаемого значения xml (на примере):

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="settaskactiveresult">
   <property_set name="settaskactiveresult">
     <property_simple key="success" value="0" /> <!-- варианты: 0/1 -->
        <property_cdata key="errormessage"><![CDATA[Задачу монопольно редактирует Сидоров Иван]]></property_cdata>
   </property_set>
 </data>
 </oktellcommapper>


При работе операторов на рабочих станциях в интегрированном приложении интерфейс call-центра практически недоступен. Сам Oktell непосредственно не отображает диалоговые окна и окна запросов. При работе операторов в задачах наравне с пользователями клиентского приложения Oktell, все запросы сервер считает отвеченными по умолчанию. Так, задачи с прогрессивным набором осуществляют просто подключение телефонных аппаратов в разговор, задачи с ручным выбором не принимают в обслуживающий персонал операторов за интегрированными рабочими местами. Задачи же с резервированием и уведомлением работают по умолчанию, однако имеют интерфейс взаимодействия с интегрированным приложением. Команды на отображение информации с целью уведомления или запроса на дозвон осуществляются с помощью сервисных интерфейсных событий TMInterfaceReserve = 122 и TMInterfaceConfirm = 121. При отмене/обрыве задания отправляется событие TMInterfaceClose = 123, рассматриваемое как скрытие информации и запросов.

  • void TM_SetConfirmUsage ( bool ). При участии пользователя в задаче с установленным режимом «с запросом у оператора» происходит генерация события на отображение запроса. Все время, пока оператор не произведет ответ, он находится в зарезервированном состоянии, при котором не может ни совершать вызовы, ни принимать их. Для отправки ответа служит нижеописанный метод TM_SetConfirmResult, однако если интегрирующий модуль не занимается обслуживанием событий менеджера задач, есть риск (при размещении пользователя в качестве оператора в соответствующей задаче в Oktell), что оператор будет вечно находиться в зарезервированном состоянии. Поэтому по умолчанию принято, что ответ, разрешающий дозвон, генерирует само ядро клиентского приложения. При необходимости участия интегрирующего приложения или пользователя, работающего в нем в принятии решения, необходимо вызвать данный метод с передачей значения TRUE в качестве параметра. После этого ядро перестанет терминировать события и организует туннель. Ожидается, что после этого интегрирующее приложение не оставит без внимания ни одно событие с типом TMInterfaceConfirm = 121 без внимания и без соответствующего ему ответа путем вызова метода TM_SetConfirmResult.


  • bool TM_SetConfirmResult ( string ). Отправляет на сервер ответ на предварительно полученный от него запрос о необходимости совершения звонка по задаче (с установленным режимом запроса у оператора). Актуально только при обработке сервисного события TMInterfaceConfirm = 121, которое было предварительно получено.

Аналогично клиентскому приложению Oktell у оператора есть 3 возможности: подтвердить вызов, пропустить вызов, исключить абонента из списка. В случае, если все корректно, и сервер ожидал ответа, возвращается TRUE, иначе FALSE.

Структура передаваемого значения на примере:

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data name="confirmresult">
   <property_set name="confirmresult">
     <property_simple key="result" value="0" /> <span style="color:darkviolet"><!-- варианты: 0/1/2 или ok/skip/delete --></span>
   </property_set>
 </data>
 </oktellcommapper>


  • TMInterfaceConfirm (121). Событие сервера, запрашивающее подтверждение на звонок указанному абоненту в ходе обслуживания голосовой задачи с установленным режимом «с запросом у оператора». В качестве содержимого передаются идентификатор код и название задачи, идентификатор проекта, идентификатор таблицы абонентов, идентификатор абонента в таблице, выбранный для набора номер абонента, а также текст в base64 формате, состоящий из информационных полей таблицы абонентов по данному конкретному абоненту.

При установленном режиме формирования ответов во внешнем приложении (метод TM_SetConfirmUsage(true)) в ответ на данное событие необходимо отправить ответ с использованием метода TM_SetConfirmResult. В противном случае пользователь будет находиться в зарезервированном состоянии без возможности принять/совершить вызов неограниченное время.

Пример:

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data>
   <event id="121" name="tminterfaceconfirm">
     <property_simple key="idtask" value="0f398eb4-5d78-446c-84f4-6892ab72751b" />
     <property_simple key="idproject" value="ab37c6e6-e983-458a-8621-5e0921ade3d1" />
     <property_cdata key="taskname"><![CDATA[Прозвон клиентов]]></property_cdata>
     <property_simple key="taskcode" value="" />
     <property_simple key="idlist" value="9ac6f54c-d042-4e89-b9a3-5ad2e20c3410" />
     <property_simple key="idinlist" value="67" />
     <property_simple key="number" value="120151112" />
     <property_cdata key="textb64"><![CDATA[0JLRiyDQt9Cw0YDQtdC30LXRgNCy0LjRgNC+0LLQsNC90Ysg0L3QsCDQstGL0L/QvtC70L3QtdC90LjQtSDQt9Cw0LTQsNGH0LgKCtCY0L3RhNC+0YDQvNCw0YbQuNGPOgoK0JfQsNC00LDRh9CwIMKr0JLQuNGA0YLRg9Cw0LvRjNC90LDRjyDQvNCw0YjQuNC90LDCuwoKCtCX0LLQvtC90L7QuiDQvdCwINC90L7QvNC10YA6IDEyMDE1MTExMgoK0J/RgNC+0LTQvtC70LbQuNGC0Ywg0LTQvtC30LLQvtC9INC/0L4g0YPQutCw0LfQsNC90L3Ri9C8INC/0LDRgNCw0LzQtdGC0YDQsNC8PyojKg==]]></property_cdata>
   </event>
 </data>
 </oktellcommapper>

  • TMInterfaceReserve (122). Событие сервера, информирующее оператора об осуществляющемся в реальном времени наборе номера абонента в ходе обслуживания голосовой задачи с установленным режимом «с уведомлением оператора», а также «с запросом у оператора» после получения подтверждающего набор ответа на событие TMInterfaceReserve = 121. В качестве содержимого передаются идентификатор код и название задачи, идентификатор проекта, идентификатор таблицы абонентов, идентификатор абонента в таблице, выбранный для набора номер абонента, а также текст в base64 формате, состоящий из информационных полей таблицы абонентов по данному конкретному абоненту.

Формат параметра аналогичен событию TMInterfaceConfirm = 121 (с разницей в идентификаторе и названии события):

<event id="122" name="tminterfacereserve">


  • TMInterfaceClose (123). Событие сервера, уведомляющее клиентское приложение о необходимости свернуть отображение информации по событиям TMInterfaceConfirm = 121 и TMInterfaceReserve = 122. Может происходить как в связи с отменой звонка, с неудачным ответом линии абонента, так и в связи с переходом к разговору.

Формат параметра на примере:

<?xml version="1.0" encoding="utf-16"?>
 <oktellcommapper version="80710">
 <data>
   <event id="123" name="tminterfaceclose">
     <property_simple key="idtask" value="0f398eb4-5d78-446c-84f4-6892ab72751b" />
   </event>
 </data>
 </oktellcommapper>


Наверх Работа с номерным планом<<< Работа со статусом пользователя >>>Работа с правилами переадресации