Работа с логикой АТС

Материал из Oktell
Перейти к: навигация, поиск

Наверх

Методы для работы с логикой АТС: набор номера, автодозвон, переключение

  • string CallNumber ( string number ). Запускает сервис автодозвона (при положенной трубке) или набора номера на текущей сессии (при поднятой трубке), в случае если все состояния допускают. Сервис автодозвона предполагает, что сначала производится вызов абонента, и только после его ответа - обратный вызов пользователя и последующая коммутация.

Параметр в виде простой строки с номером. Вызов производится в следующем режиме: При наборе номер ищется сначала среди внутреннего номерного плана, в случае если обнаружен - набирается во внутренний номерной план, если нет - согласно прав доступа текущего пользователя к внешним линиям - вовне. Возвращает XML-строку с описанием ответа сервиса запускавшего набор номера или NULL, если до вызова логика прослойки зарезала команду. Общие примеры параметра и возвращающего значения чуть ниже в этом разделе.


  • string CallNumberEx ( string xml ). Запускает сервис автодозвона (при положенной трубке) или набора номера на текущей сессии (при поднятой трубке), в случае если все состояния допускают. Сервис автодозвона предполагает, что сначала производится вызов абонента, и только после его ответа - обратный вызов пользователя и последующая коммутация. Однако может быть установлен и иной порядок путем указания значения back ключу sequence параметра.

Параметр в виде расширенного XML запроса. В теле запроса помимо номера (key="number") может быть установлено направление (key="direction", варианты: value="0" или name="city", value="1" или name="pbx", value="2" или name="undefined"). В случае пропуска номера или задания неопределенного направления вызов производится в следующем режиме: При наборе номер ищется сначала среди внутреннего номерного плана, в случае если обнаружен - набирается во внутренний номерной план, если нет - согласно прав доступа текущего пользователя к внешним линиям - вовне. Возвращает XML-строку с описанием ответа сервиса осущствлявшего обработку команды или NULL, если до вызова логика прослойки зарезала команду. Общие примеры параметра и возвращающего значения чуть ниже в этом разделе.


  • string SwitchNumber ( string number ). Осуществляет переключение (Flash и набор номера) при активной коммутации или набор номера при отсутствии коммутации (например из интерфейса внутреннего номерного плана). В последнем случае набор номера осуществляется в обратной последовательности: сначала вызывается сам абонент, а после этого уже происходит набор номера абонента.

Параметр в виде простой строки с номером. При наборе номер ищется сначала среди внутреннего номерного плана, в случае если обнаружен - набирается во внутренний номерной план, если нет - согласно прав доступа текущего пользователя к внешним линиям - вовне. Возвращает XML-строку с описанием ответа сервиса осущствлявшего обработку команды или NULL,если до вызова логика прослойки зарезала команду. Общие примеры параметра и возвращающего значения чуть ниже в этом разделе.


  • string SwitchNumberEx ( string xml ). Осуществляет переключение (Flash и набор номера) при активной коммутации или набор номера при отсутствии коммутации (например из интерфейса внутреннего номерного плана). В последнем случае набор номера осуществляется в обратной последовательности: сначала вызывается сам абонент, а после этого уже происходит набор номера абонента. Однако может быть установлен и иной порядок путем указания значения direct ключу sequence параметра.

Параметр в виде расширенного XML запроса. В теле запроса помимо номера (key="number") может быть установлено направление (key="direction", варианты: value="0" или name="city", value="1" или name="pbx", value="2" или name="undefined"). В случае пропуска номера или задания неопределенного направления вызов производится в следующем режиме: При наборе номер ищется сначала среди внутреннего номерного плана, в случае если обнаружен - набирается во внутренний номерной план, если нет - согласно прав доступа текущего пользователя к внешним линиям - вовне. Возвращает XML-строку с описанием ответа сервиса осущствлявшего обработку команды или NULL, если до вызова логика прослойки зарезала команду.


Пример xml ответа сервера:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="code" value="0" name="cntStartedSuccessfully" />
  </property_set>

</oktellcommapper>


Пример xml запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="callnumber">
    <property_simple key="number" value="425" />
    <property_simple key="direction" name="pbx" />
    <property_simple key="sequence" name="direct" /> 
  </property_set>

</oktellcommapper>


Типы возвращаемых кодов при старте вызовов через автодозвон:

public enum EACMAnswer
{
cntStartedSuccessfully  = 0, //Звонок успешно взят в реализацию 
cntUserNotReady = 1,        //У осуществляющего вызов пользователя не найдены линии, готовые линии, или состояние кривое 
cntBusy = 2,        //При звонке на внутренний номер - признак занятости. В очереди и сам повисеть может (в дальнейшем реализуем как раз  ожидание в очереди...) 
cntExtLineNotFound = 3,        //Не найдены готовые внешние линии (если будем на это замес делать.. возможно просто будет стоять и ждать.. ) 
cntError = 4,        //Прочие ошибки, исключения. 
cntControlNotReady = 5,        //Режим не доделан. 
cntNumberNotFound = 6        //Внутренний номер не найден (по факту, если сервак сам будет определять направление звонка, это вообще не будет задействовано) 
}


Типы направлений вызовов, передаваемых в параметре direction:

public enum EOutcomingDirection
{
city = 0,        //Вызов на внешнее направление (в город или в АТС за внешними линиями) 
pbx = 1,        //Вызов на внутреннее направление (внутренний номерной план сервера) 
undefined  = 2,        //Автоматическое определение. При наличии внутреннего номера - набор во внутреннее направление, при отсутствии внутреннего номера - во внешнее 
}


  • bool DeclineCall ( ). Посылает на сервер АТС отказ от входящего вызова. Возвращается TRUE, если отказ принят системой. Сервер обрабатывает этот случай аналогично пропуску вызова по таймауту.


  • void AutoCallAbort ( ). Осуществляет остановку запущенного процесса автодозвона для авторизованного пользователя. В случае, если процесса автодозвона не обнаружено, или он перешел в фазу обработки в АТС (например, абонент снял трубку, и осуществляется обратный вызов пользователя), ничего не происходит.

ВНИМАНИЕ! В системе для одного пользователя может существовать только один процесс автодозвона. Любой последующий вызов без завершения предыдущего будет обрывать активную сессию и начинать ее с новыми параметрами заново.


Методы для работы с логикой АТС: факсимильные сообщения

  • bool FaxStartReceive ( string xml ). Запускает сеанс получения факсимильного сообщения на оппозитном канале коммутации. Команда может быть осуществлена только в момент коммутации при наличии у оппозитного канала возможности работы с факсимильными сообщениями. Для определения параметров и факта коммутации используется событие CommutationStarted канала OnCommunicate. В качестве параметра передается строка с XML форматированием, содержащим путь к файлу для сохранения после получения. В XML свойстве property_cdata ожидается значение ключа «filepath» и значении CDATA - пути к файлу. В случае, если файл существует, он будет перезаписан. Если факсимильное сообщение содержит несколько страниц, то каждая будет сохранена в указанном каталоге с добавлением в конец имени файла атрибута «_page» (то есть fn_page1.bmp, fn_page2.bmp и т.д.). Возвращает TRUE, если команда передана на сервер и FALSE, если текущие свойства и состояние канала не подходят.

Пример параметра:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="startfaxreceive">
    <property_cdata key="filepath"><![CDATA[C:\Принятые факсы\Договор_аренды.bmp]]></property_cdata>
  </property_set>

</oktellcommapper>


  • bool FaxStartTransmit ( string xml ). Запускает сеанс отправки факсимильного сообщения на оппозитном канале коммутации. Команда может быть осуществлена только в момент коммутации при наличии у оппозитного канала возможности работы с факсимильными сообщениями. Для определения параметров и факта коммутации используется событие CommutationStarted канала OnCommunicate. В качестве параметра передается строка с XML форматированием, содержащим пути к файлам, требующим отправки в контексте запускаемого сеанса. Возвращает TRUE, если команда передана на сервер и FALSE, если текущие свойства и состояние канала не подходят.
<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="faxtransmit">
    <property_cdata key="filepath" value="0"><![CDATA[C:\Принятые факсы\Договор_аренды_стр1.bmp]]></property_cdata>
    <property_cdata key="filepath" value="1"><![CDATA[C:\Принятые факсы\Договор_аренды_стр2.bmp]]></property_cdata>
    <property_cdata key="filepath" value="2"><![CDATA[C:\Принятые факсы\Договор_аренды_стр3.bmp]]></property_cdata>
  </property_set>

</oktellcommapper>


  • bool FaxStop (). Прерывает текущий сеанс факсимильного взаимодействия на оппозитном канале и возвращает канал в закоммутированное состояние с оппозитным каналом. Возвращает TRUE, если команда передана на сервер и FALSE, если текущие свойства и состояние канала не подходят.


События АТС по линии пользователя

События канала OnCommunicate (здесь) инициированные АТС для интерфейсного блока работы с телефоном и управления каналом:

  • CommutationStarted (231). Событие АТС о начале коммутации на канале устройства, связанного в карте с текущим рабочим местом. Среди параметров передается набор значений для отображения, флаг возможности использования встроенного факса для отправки факсимильных сообщений по оппозитному каналу. В случае звонка по задаче передаются имя и идентификатор задачи, а также лимит установленного в настройках задачи времени на обработку вызова (в секундах) и текущее время с начала обработки задачи (в секундах, для корректировки счетчика времени).

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="231" name="commutationstarted">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
    <property_simple key="idconnection" value="12345678-1234-1234-1234-abcdef123456" />
    <property_simple key="canfax" value="1" />
    <property_simple key="opponentdescription" value="Иванов Сергей" />
    <property_simple key="opponentname" value="Иванов Сергей" />
    <property_simple key="opponentnumber" value="" />
    <property_simple key="opponentlineid" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" />
    <property_simple key="opponentlinenumber" value="" />
  </event>


  • CommutationStopped (232). Событие АТС о разрыве коммутации на канале устройства, связанного в карте с текущим рабочим местом.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="232" name="commutationstopped">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
    <property_simple key="idconnection" value="12345678-1234-1234-1234-abcdef123456" />
  </event>


  • FaxStopped (233). Событие АТС о начале факс-сеанса на оппозитном канале. Может быть использовано для отображения в интерфейсе управления каналом команды остановки и возврата к коммутации с абонентом.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="233" name="faxstarted">
    <property_simple key="description" value="4952217859" />
    <property_simple key="issending" value="0" />
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </event>


  • FaxStopped (234). Событие АТС о завершении факс-сеанса на оппозитном канале.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="234" name="faxstopped">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </event>


  • FaxFilesReceived (235). Событие АТС о завершении приема файлов по факс-сеансу на оппозитном канале. Содержит признак успешности или неудачи, а также весь перечень путей к файлам, куда сохранены принятые значения, или текст сообщения об ошибке.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="235" name="faxfilesreceived">
    <property_simple key="success" value="1" />
    <property_simple key="errortext" value="" />
    <property_cdata key="requestedpath"><![CDATA[C:\Принятые факсы\Договор_аренды.bmp]]></property_cdata>
    <property_cdata key="filepath" value="0"><![CDATA[C:\Принятые факсы\Договор_аренды_page1.bmp]]></property_cdata>
    <property_cdata key="filepath" value="1"><![CDATA[C:\Принятые факсы\Договор_аренды_page2.bmp]]></property_cdata>
  </event>

</oktellcommapper>


  • RingStarted (236). Событие АТС о начале входящего вызова на линию пользователя. Может быть использовано для опроса и отображения очереди и/или контента оппозитного канала. А также для смены контента в режиме его отображения в случае, когда происходит смена ведущего канала вызывающей стороны.

Поле isconf определяет, инициирован ли текущий вызов менеджером конференций. Если да, то поле idconf содержит идентификатор конференции, в которую осуществляется приглашение; в противном случае поле отсутствует. Параметры конференции можно узнать по идентификатору путем использования методов раздела «Конференц-связь», название доступно также в поле callername параметра. Поля callerlineid, callerlinenum, calleruserid, callerdirection, callerid, callername. указывают на соответствующие описательные параметры вызывающего абонента, соответственно идентификатор линии, номер линии, идентификатор вызывающего пользователя, направление вызова, номер вызывающего абонента или номер комнаты конференции, имя вызывающего абонента или название конференции. Первые три из перечисленных полей не присутствуют в параметре, если осуществляется вызов из конференции.

Примеры:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="236" name="ringstarted">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
    <property_simple key="isconf" value="1" />
    <property_simple key="idconf" value="12345678-1234-1234-1234-abcdef123456" />
    <property_simple key="callerdirection" value="conference" />
    <property_simple key="callerid" value="#144" />
    <property_simple key="callername" value="Совещание технического отдела" />
  </event>

</oktellcommapper>


<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="236" name="ringstarted">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
    <property_simple key="isconf" value="0" />
       <property_simple key="callerlineid" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
    <property_simple key="callerlinenum" value="17016" />
    <property_simple key="calleruserid" value="09f78612-9408-4f69-b0e4-1357a37a3026" />
       <property_simple key="callerdirection" value="oktell_pbx" />
    <property_simple key="callerid" value="31" />
    <property_simple key="callername" value="Зиннуров Альберт" />
  </event>

</oktellcommapper>


  • RingFinished (237). Событие АТС о прерывании входящего вызова на линию пользователя. Возникает только в том случае, когда вызываемый пользователь не снял трубку, а вызывающий абонент прервал вызов. В случае, если в очереди находятся несколько абонентов при прерывании вызова первого абонента данное событие не производится, однако производится повторное событие RingStarted с новым идентификатором цепочки.

Может быть использовано для скрытия полей/форм отображения контента и информации об абоненте.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="237" name="ringfinished">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </event>

</oktellcommapper>


  • ACMStarted (238). Событие АТС об активации автодозвона на канале пользователя.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="238" name="acmstarted">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </event>

</oktellcommapper>


  • ACMFinished (239). Событие АТС о деактивации автодозвона на канале пользователя.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="239" name="acmfinished">
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </event>

</oktellcommapper>


  • FlashHoldAction (240). Событие АТС о смене состояния флеш-буфера канала пользователя. Генерируется сервером в клиентское приложение пользователя-владельца канала, когда производятся любые операции с флеш-буфером: поставлен на удержание другой канал, вызван из удержания и восстановлен в коммутации, переведен из удержания на другой объект, коммутацию, очередь, сценарий, отбит из буфера, или самостоятельно перешел в режим отбоя.

Возможные варианты действий (событий о смене состояния):

Put           = 1, //Размещен во флеш-буфере на удержание
Return        = 2, //Возвращен в коммутацию с каналом
Abort         = 3, //Удален из буфера по отбою канала-владельца
Lost          = 4, //Удален из буфера по собственной инициативе
Switch        = 5  //Переведен на другой объект в коммутацию или ожидание

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="240" name="flashholdaction">
    <property_simple key="action" value="1" name="put" />
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </event>

</oktellcommapper>


  • ChainStateChange (241). Событие АТС о смене состояния регистрации линии пользователя в цепочке коммутаций. Связывание с цепочкой (type = 1) и отвязка от цепочки (type = 2).

Отвязка в ситуации, когда вызывающий абонент прекратил дозвон, а анализатор очереди не обнаруживает элементов, возникает совместно с RingFinished. В общем случае генерируется чаще. Однако стоит иметь в виду, что в некоторых случаях канал может быть возвращен в обработку той же цепочки. В случае, если событие указывает о выходе из цепочки, дополнительное свойство «ishandled» будет указывать, произошло это по причине снятия трубки другим каналом группового номера (значение «1», «handled»), или нет (значение «0», «lost»).

Пример 1:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="241" name="chainstatechange">
    <property_simple key="idline" value="123dbaf4-12ab-34cd-56ef-ab12cdef5678" />
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
    <property_simple key="type" value="1" name="enter" />
  </event>

</oktellcommapper>


Пример 2:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="241" name="chainstatechange">
    <property_simple key="idline" value="123dbaf4-12ab-34cd-56ef-ab12cdef5678" />
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
    <property_simple key="type" value="0" name="exit" />
    <property_simple key="ishandled" value="0" name="lost" />
  </event>

</oktellcommapper>


  • LineStateChange (242). Событие АТС о смене состояния линии пользователя. Практически все смены состояния (за исключением кризисных явлений вроде потери связи с сервером оборудования) пробрасываются через это событие.

Возможные состояния линии описаны в разделе « Работа со статусом пользователя. Допустимые состояния линии».

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="242" name="linestatechange">
    <property_simple key="idline" value="123dbaf4-12ab-34cd-56ef-ab12cdef5678" />
    <property_simple key="lstate" value="1" name="lsReady" />
  </event>

</oktellcommapper>


  • CallDetected (243). Событие АТС об обнаружении факта звонка с подчиненным пользовательским каналом. При получении этого события гарантируется наличие непустого контента цепочки коммутаций (метод Chain_GetContent).

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <event id="243" name="calldetected">
    <property_simple key="idchain" value="ea80cc82-2bb4-df1d-6683-e71663bcf742" />
  </event>

</oktellcommapper>


Методы для работы с логикой АТС: очередь ожидания

  • string Queue_GetCurrentItems ( string xml ). Возвращает мета-описание всех абонентов, находящихся в очереди текущего авторизованного пользователя. Элементы располагаются по убыванию комбинированного приоритета обработки (учитываются выставленный приоритет, направление вызова, а также текущее время ожидания в очереди). При авторизации пользователя с логином «testqueue» в возвращаемом XML-документе даже при фактическом отсутствии очереди постоянно находятся несколько тестовых элементов.

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

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="queueitem">
    <property_simple key="dateformat" value="dd.MM.yyyy HH:mm:ss" />
    <property_simple key="managedlineid" value="5ae8377b-d7f9-4a39-bb87-e25475aed097" />
    <property_simple key="objecttype" value="0" name="qotQueueLogic" />
    <property_cdata key="username"><![CDATA[Денис]]></property_cdata>
    <property_simple key="lenqueue" value="273000" />
    <property_simple key="srcelementid" value="1302eadd-7600-411e-9ffb-abf445ad8be6" />
    <property_simple key="queuesource" value="0" name="qsLineLogic" />
    <property_cdata key="department"><![CDATA[Руководство]]></property_cdata>
    <property_simple key="calledid" value="14" />
    <property_simple key="callerid" value="21" />
    <property_simple key="idobject" value="12345678-1234-1234-1234-12345678123a" />
    <property_simple key="userid" value="53c0f2d6-9216-4cc3-804f-678c89f12750" />
    <property_simple key="managedlinenum" value="1525" />
    <property_simple key="startqueuetime" value="21.08.2008 10:44:00" />
    <property_simple key="queuepriority" value="10" />
    <property_simple key="idchain" value="abcdef12-abcd-abcd-1234-1234567890ab" />
  </property_set>
  <property_set name="queueitem">
    <property_simple key="dateformat" value="dd.MM.yyyy HH:mm:ss" />
    <property_simple key="tasklistid" value="-1" />
    <property_simple key="idobject" value="12345678-1234-1234-1234-12345678123b" />
    <property_simple key="taskisoutput" value="0" />
    <property_simple key="managedlinenum" value="1001" />
    <property_simple key="userid" value="00000000-0000-0000-0000-000000000000" />
    <property_cdata key="taskname"><![CDATA[Прием входящих]]></property_cdata>
    <property_simple key="calledid" value="5109940" />
    <property_simple key="srcelementid" value="924849c3-851e-4f7c-9513-b63b35417396" />
    <property_simple key="username" value="" />
    <property_simple key="startqueuetime" value="21.08.2008 10:44:00" />
    <property_simple key="objecttype" value="0" name="qotQueueLogic" />
    <property_simple key="lenqueue" value="243000" />
    <property_simple key="callerid" value="89050213951" />
    <property_simple key="queuepriority" value="10" />
    <property_simple key="managedlineid" value="79c950f7-8ae5-48de-8264-520aa331960b" />
    <property_simple key="department" value="" />
    <property_simple key="taskid" value="f58b19a4-527a-4d7a-a3cd-bc1d85e1f45d" />
    <property_simple key="queuesource" value="4" name="qsIncomingTask" />
    <property_simple key="idchain" value="12345678-ab12-ab12-ef34-abcabc123123" />
  </property_set>

</oktellcommapper>


Типы направлений, по которым производится звонок на внутренней линии (поле objecttype):

public enum EQueueObjectType 
{
qotQueueLogic = 0,        //Стандартный вызов из менеджера очередей внутренней АТС. 
qotTaskLogic = 1,        //Вызов оператора из обработчика звонка задачи при наличии активного абонента, находящего на линии. 
qotAutoCallLogic = 2,        //Обратный вызов пользователя из модуля автодозвона. 
qotBackFlash = 3        //Обратный вызов пользователя из АТС для соединения с абонентом на удержании во FLASH-буфере. 
}


Типы объектов, производящих дозвон до внутренних номеров (поле queuesource), то есть источники, использующие менеджер очередей АТС (направление qotQueueLogic):

public enum EQueueSource 
{
qsLineLogic = 0,        //Другие линии, стандартная работа АТС. 
qsIVR = 1,        //Сценарий IVR. 
qsInnerTaskLogic = 2,        //Внутренние задачи (не используется) 
qsAutoCallManager = 3,        //Автодозвон. 
qsIncomingTask = 4        //Входящие задачи. 
}


Типы возможных направлений вызова (поле direction в свойствах звонка и задач):

public enum ECallDirection
{
cdAbsent = 0,        //Не заданное направление. 
cdIncoming = 1,        //Входящий вызов. 
cdOutcoming = 2        //Исходящий вызов. 
}


Типы возможных коммутаций (поле type в свойствах коммутаций):

public enum ECommType
{
None = 0,        //Не заданный тип. 
Abonent = 1,        //Коммутация с абонентом 
IVR = 2        //Коммутация с IVR 
}


Методы для работы с логикой АТС: контент оппозитного канала

Каждая внешняя линия производит заполнение контента осуществляемого через нее звонка. В контент размещаются как постоянные на всем протяжении активности параметры абонента и канала, так и изменяющиеся параметры, описывающие ход звонка - сценарии, коммутации, задачи с указанием времени начала и завершения.

Контент линии очищается при завершении активной фазы работы канала и создается заново в начале нового вызова.

Среди параметров присутствует пользовательский текстовый параметр CUSTOMINFO. Через него может быть осуществлен обмен информацией между пользователями каналов, с которыми производится коммутация или просто некоторое взаимодействие внешнего абонента на протяжении периода активности.


При работе с контентом из клиентского интерфейса, работа осуществляется не с линией пользователя, а с оппозитным каналом. Оппозитным каналом называется противоположная линия к линии текущего рабочего места пользователя по типу текущего ее состояния. Оппозитными являются внешние линии с принадлежностью к одному из перечисленных направлений:

  1. линия, находящаяся в коммутации с линией пользователя;
  2. линия, находящаяся во флеш-буфере линии пользователя;
  3. линия, осуществляющая входящий вызов на линию пользователя;
  4. линия, находящаяся во флеш-буфере линии, осуществляющей вызов линии пользователя.

При определении направления оппозитности допускается указание целочисленного индекса направления из приведенного выше списка, а также значение «0», указывающее на автоматическое определение оппозитного канала в порядке приоритетов от меньшего к большему.

  • bool Content_SetOppositeCustom ( int destination, string custom ). Устанавливает значение пользовательского поля CUSTOMINFO контента оппозитного канала. Параметр destination указывает направление оппозитного канала, параметр custom определяет новое значение поля CUSTOMINFO. В случае успешного задания возвращается TRUE. В случае любого неуспешного исхода (отсутствия канала по указанному направлению, необнаружения внешней линии, несоответствии прав доступа, исключительных ситуациях) возвращается FALSE.


  • string Content_GetOppositeCustom ( int destination ). Возвращает значение пользовательского поля CUSTOMINFO контента оппозитного канала. Параметр destination указывает направление оппозитного канала. Возвращает строку со значением поля в простом виде.


  • string Content_GetOppositeFull ( int destination ). Возвращает полный контент оппозитного канала в XML-формате. Параметр destination указывает направление оппозитного канала. Возвращает строку с XML-содержимым контента в простом виде.


Пример содержимого контента:


<?xml version="1.0" encoding="utf-16"?>
<content Version="80903">
<call commcount="2" taskcount="1">
  <property_simple key="datetimeformat" value="dd.MM.yyyy HH:mm:ss" />
  <property_simple key="direction" value="1" name="cdIncoming" />
  <property_simple key="lineid" value="4741e765-f89d-47b2-89f7-0dcd619a8385" />
  <property_simple key="linenumber" value="12001" />
  <property_simple key="callerid" value="Номер не определен" />
  <property_simple key="calledid" value="5109805" />
  <property_simple key="idchain" value="70e29721-165a-4793-97c2-15a4d014d3f1" />
  <property_cdata key="custominfo"><![CDATA[]]></property_cdata>
  <property_simple key="timestart" value="04.09.2008 17:14:30" />
  <property_simple key="timestop" value="04.09.2008 17:14:44" />
  <property_simple key="totalsec" value="13" />
  <activity>
    <commutation index="0">
      <property_simple key="idconnection" value="43ac1678-75bb-4e41-8408-e5c01b60e303" />
      <property_simple key="type" value="2" name="IVR" />
      <property_simple key="timestart" value="04.09.2008 17:14:31" />
      <property_simple key="timestop" value="04.09.2008 17:14:33" />
      <property_simple key="totalsec" value="1" />
      <property_simple key="ivrscriptname" value="Телефонные системы. Вход." />
    </commutation>
    <task index="0">
      <property_simple key="effortid" value="23949836-b72c-4e4b-8be5-eef806a9cbb6" />
      <property_simple key="direction" value="1" name="cdIncoming" />
      <property_simple key="taskid" value="ad76a31a-e661-42a4-a8d5-8365623916cb" />
      <property_simple key="taskname" value="Входящий в телефонные системы" />
      <property_simple key="taskcode" value="" />
      <property_simple key="projectid" value="ab37c6e6-e983-458a-8621-5e0921ade3d1" />
      <property_simple key="tag" value="0" />
      <property_simple key="timeonline" value="04.09.2008 17:14:32" />
      <property_simple key="joinedtableid" value="-1" />
      <property_simple key="timestart" value="04.09.2008 17:14:32" />
      <commutation index="1">
        <property_simple key="idconnection" value="fc8cd4ff-b8b0-48b6-aeb1-662090bfd7d6" />
        <property_simple key="type" value="1" name="Abonent" />
        <property_simple key="timestart" value="04.09.2008 17:14:33" />
        <property_simple key="timestop" value="04.09.2008 17:14:41" />
        <property_simple key="totalsec" value="8" />
        <abonents count="1">
          <abonent index="1">
            <property_simple key="lineid" value="254aa1fc-4e18-4ad3-99ea-eb52417dd5a2" />
            <property_simple key="linenumber" value="16016" />
            <property_simple key="callerid" value="" />
            <property_simple key="userid" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8" />
            <property_simple key="username" value="Нигметзянов Шамиль" />
          </abonent>
        </abonents>
      </commutation>
    </task>
  </activity>
</call>
</content>


Методы для работы с логикой АТС: контент цепочки коммутаций

В системе разделяются понятия коммутации и звонка.

Коммутация - единичное соединение двух любых каналов в общий дуплексный голосовой обмен. У каждой коммутации есть уникальный идентификатор (Guid). В ходе работы системы АТС при переводе звонка, при помещении на удержание и последующем восстановлении в коммутацию, несмотря на то, что закоммутированные объекты и остаются теми же самыми, образованная повторная коммутация представляет собой иной объект с отличающимся набором свойств. В частности имеет другой идентификатор, другое время, другие файлы записи диалога. Коммутация в некотором смысле наиболее примитивный объект.


Звонок - понятие общее, даже несколько виртуализированное. В разных ситуациях звонком могут называться несколько отличающиеся сущности. Так например, с одной стороны звонок - это момент поступления вызова на внешнюю линию от абонента или факт осуществления вызова от одного пользователя другому. С другой стороны звонком может называться весь процесс обслуживания одного абонента: от поступления вызова, до отбоя его линии, включая все переключения, переводы звонка.

Наконец, наиболее общее понятие звонка в системе Oktell представлено понятием цепочки коммутаций. Она характеризуется уникальным идентификатором (Guid). Несколько коммутаций могут быть объединены в одну цепочку по признаку некоторой зависимости. Необходимость ввода такого более общего понятия обусловленена тем, что вызов абонента может повлечь целую серию коммутаций, удержаний, переводов, которые могут продолжаться даже после того, как сам абонент-инициатор из обработки вышел.

В качестве примера цепочки коммутаций можно привести наиболее простой возможный случай: секретарь соединяет директора со специалистом. Для этого секретарь первым снимает трубку, переводя АТС в активный режим (формирование цепочки), звонит специалисту и коммутируется с ним, после этого переводит его на удержание и звонит директору, дожидается его ответа и кладет трубку, соединяя директора и специалиста. Секретарь как инициатор звонка не участвует в основном блоке разговора, однако звонок можно считать все еще обрабатывающимся.

Цепочка коммутаций завершается, когда все задействованные в ней каналы переходят в неактивный режим.

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

Цепочка характерна тем, что на протяжении ее существования принципиально не существует одновременных коммутаций. Все время делится на периоды закоммутированности двух каналов (или IVR)


В этой связи система предоставляет возможность оперировать контентом цепочки коммутаций. Контент представляет собой XML структуру, имеющую в своем составе информацию о всех коммутациях и вызовах. Контент цепочки постоянно пополняется по мере развития пути звонка.

Опрос структуры может производиться из клиентского модуля, связанного в карте сети с телефонным каналом. Контент цепочки непуст в момент коммутации и в момент осуществления вызова с канала пользователя, а также в момент поступления вызова на канал пользователя. Последним элементом в дереве структуры в этом случае будет объект, описывающий абонента, осуществляющего вызов. Это может быть использовано наряду с методами получения информации об очереди для предоставления во всплывающем окне информации об абоненте.

В шапке контента имеется поле CUSTOM, предоставляемое для изменения из клиентского интерфейса пользователем, осуществляющим работу с каналом, участвующим в цепочке.


  • bool Chain_SetContentCustom ( string custom ). Устанавливает значение пользовательского поля CUSTOM контента цепочки коммутаций. Параметр custom определяет новое строковое значение поля CUSTOM. В случае успешного задания возвращается TRUE. В случае любого неуспешного исхода (неактивности канала пользователя, отсутствия цепочки, несоответствии прав доступа, исключительных ситуациях) возвращается FALSE.
  • string Chain_GetContentCustom ( ). Возвращает значение пользовательского поля CUSTOM контента цепочки коммутаций. Возвращает строку со значением поля в простом виде. В случае невозможности обратиться к контенту цепочки (неактивность канала пользователя, отсутствие цепочки, исключительные ситуации) возвращается NULL.
  • string Chain_GetContent ( ). Возвращает в XML-формате полный контент цепочки коммутаций, в которой участвует канал пользователя. Возвращает строку с XML-содержимым контента в простом виде. Каждая коммутация добавляет раздел commutationinfo, каждый вызов (за исключением прямого вызова сценариев IVR) добавляет раздел queueinfo. По мере развития цепочки все новые и новые вызовы размещаются в дереве элемента trace. Для получения и отображения в клиентском интерфейсе информации о вызывающем абоненте необходимо из дерева достать последнюю ветвь queueinfo.

Параметр calldirection формируется для каждого канала, запрашивающего контент, в зависимости от направления текущего вызова в цепочке.

Пример 1 простейшего содержимого контента (опрос в момент поступления/осуществления вызова):

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_simple key="datetimeformat" value="dd.MM.yyyy HH:mm:ss" />
  <property_simple key="chainid" value="09fbde19-08ac-4e42-9476-11db421c3b0f" />
  <property_simple key="createtime" value="16.10.2008 17:57:01" />
  <property_simple key="calldirection" value="1" name="cdIncoming" />
  <property_cdata key="custom" />
  <property_collection count="1">
    <property_set id="trace">
      <property_collection count="1">
        <property_set name="queueinfo">
          <property_simple key="pbxdirection" value="0" name="internal" />
          <property_simple key="managedlineid" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" />
          <property_simple key="objecttype" value="0" name="qotQueueLogic" />
          <property_simple key="username" value="z01" />
          <property_simple key="srcelementid" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" />
          <property_simple key="queuesource" value="0" name="qsLineLogic" />
          <property_simple key="department" value="" />
          <property_simple key="calledid" value="" />
          <property_simple key="callerid" value="12" />
          <property_simple key="idobject" value="f42c8dd4-6e6b-4033-9349-5d51971fb251" />
          <property_simple key="userid" value="67e62e9a-a400-4f26-a1ac-b535e17a44f7" />
          <property_simple key="managedlinenum" value="15001" />
          <property_simple key="startqueuetime" value="16.10.2008 17:57:02" />
          <property_simple key="queuepriority" value="10" />
        </property_set>
      </property_collection>
    </property_set>
  </property_collection>

</oktellcommapper>


Пример 2 простейшего содержимого контента (опрос в момент первой коммутации в цепочке):

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_simple key="datetimeformat" value="dd.MM.yyyy HH:mm:ss" />
  <property_simple key="chainid" value="09fbde19-08ac-4e42-9476-11db421c3b0f" />
  <property_simple key="createtime" value="16.10.2008 17:57:01" />
  <property_cdata key="custom"><![CDATA[Содержимое контента]]></property_cdata>
  <property_simple key="calldirection" value="1" name="cdIncoming" />
  <property_collection count="1">
    <property_set id="trace">
      <property_collection count="2">
        <property_set name="queueinfo">
          <property_simple key="pbxdirection" value="0" name="internal" />
          <property_simple key="managedlineid" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" />
          <property_simple key="objecttype" value="0" name="qotQueueLogic" />
          <property_simple key="username" value="z01" />
          <property_simple key="srcelementid" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" />
          <property_simple key="queuesource" value="0" name="qsLineLogic" />
          <property_simple key="department" value="" />
          <property_simple key="calledid" value="" />
          <property_simple key="callerid" value="12" />
          <property_simple key="idobject" value="f42c8dd4-6e6b-4033-9349-5d51971fb251" />
          <property_simple key="userid" value="67e62e9a-a400-4f26-a1ac-b535e17a44f7" />
          <property_simple key="managedlinenum" value="15001" />
          <property_simple key="startqueuetime" value="16.10.2008 17:57:02" />
          <property_simple key="queuepriority" value="10" />
        </property_set>
        <property_set name="commutationinfo" id="e1a5efef-3a37-4f46-8646-207175cfa4df">
          <property_simple key="id" value="e1a5efef-3a37-4f46-8646-207175cfa4df" />
          <property_simple key="timestart" value="16.10.2008 17:57:02" />
          <property_simple key="timeanswer" value="16.10.2008 17:57:08" />
          <property_simple key="connectiontype" value="3" />
          <property_simple key="isrecorded" value="1" />
          <property_simple key="alineid" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" />
          <property_simple key="alinenum" value="15001" />
          <property_simple key="anumberdialed" value="14" />
          <property_simple key="aoutnumber" value="" />
          <property_simple key="auserid" value="67e62e9a-a400-4f26-a1ac-b535e17a44f7" />
          <property_simple key="astr" value="z01" />
          <property_simple key="blineid" value="254aa1fc-4e18-4ad3-99ea-eb52417dd5a2" />
          <property_simple key="blinenum" value="16016" />
          <property_simple key="bnumberdialed" value="" />
          <property_simple key="boutnumber" value="14" />
          <property_simple key="buserid" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8" />
          <property_cdata key="bstr"><![CDATA[Петр]]></property_cdata>
        </property_set>
      </property_collection>
    </property_set>
  </property_collection>

</oktellcommapper>


Методы и события для работы с логикой АТС: конференц-связь

Подробно о режиме конференц-связи и решаемых этой функцией задачах в разделе «Клиентское приложение. Телефон. Конференц-связь» руководства к ПК «Oktell».

Все методы требуют обработки случая NULL-возвращаемого значения.

Возможные состояния участника конференции

public enum EConferenceState
{
Idle                                = 0        //Заявленный участник конференции, подлежащий вызову.
OnlineTalking                = 11        //Активный, микрофон включен
OnlineListener                = 12        //Активный, микрофон выключен
Offline                        = 13        //Активный, но не в коммутации (выключен управляющим)
Calling                        = 21        //Вызываемый в реальном времени
WaitingInQueue                = 22        //Вызываемый, вызов размещен в очереди его телефонной линии
Flashed                        = 23        //Держит конференцию во FLASH-буфере
Exited                        = 24        //Вышел (уже не участник)
EntranceRequest                = 25        //Вошел с ожиданием подтверждения входа (в закрытую конференцию)
MisInviteBusy                = 31        //Вызов номера неудачен - занято
MisInviteNotRespond        = 32        //Вызов номера неудачен - нет ответа
MisInviteTimeout                = 33        //Вызов номера неудачен - таймаут установленный
MisInviteStop                = 34        //Вызов номера неудачен - стоп (объект не подходит, переадресации и т.д.)
MisInviteAbort                = 35        //Вызов номера неудачен - обрыв вызова управляющим
MisInviteRefuse                = 36        //Вызов неудачен. Отказ от участия в конференции
}

Вся работа с режимом конференц-связи состоит в вызове методов для получения информации и проведения действий в конференциях и обработке событий для отслеживания изменений в состояниях конференций и их участников.


  • string Conf_GetConferenceList ( ). Возвращает XML-строку со списком конференций и их базовых свойств. Параметры возвращаемого значения соответствуют описанным ниже параметрам функции Conf_CreateConference.

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

<?xml version="1.0" encoding="utf-16"?>
<oktellxmlmapper version="80710"> 

<property_set name="conference">
  <property_simple key="id" value="09f78612-9408-4f69-b0e4-1357a37a3026" />
  <property_simple key="room" value="334" />
  <property_cdata key="name" value=""><![CDATA[Беседка]]></property_cdata>
  <property_simple key="description" value="" name="" />
  <property_simple key="accessmode" value="11" name="Free" />
  <property_simple key="isselector" value="0" />
  <property_cdata key="creator" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Александрович]]></property_cdata>
  <property_cdata key="director" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Александрович]]></property_cdata>
  <property_cdata key="timestart"><![CDATA[02.09.2009 14:28:54]]></property_cdata>
  <property_simple key="canvieweachother" value="1" />
  <property_simple key="everyonecaninvite" value="0" />
  <property_simple key="recordrights" value="2" name="Competitors" />
</property_set>

</oktellxmlmapper> 


  • string Conf_GetConferenceCompetitors ( string xml ). Возвращает XML-строку со списком участников указанной конференции. В параметре передается XML-структура с идентификатором конференции (idconf). Свойства возвращаемого значения соответствуют описанным ниже свойствам метода Conf_GetConference.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="conference">
    <property_simple key="idconf" value="b89a414a-c955-4a14-8c35-90b09fe9a8d6" />
  </property_set>

</oktellcommapper>


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

<?xml version="1.0" encoding="utf-16"?>
<oktellxmlmapper version="80710"> 

<property_set name="conference">      
  <property_simple key="id" value="b89a414a-c955-4a14-8c35-90b09fe9a8d6" />
  <property_collection name="competitors" count="2">
   <property_set name="competitor">
    <property_simple key="id" value="ce5c877c-7c46-42a0-8430-11085b4e50d0" />
    <property_cdata key="user" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Засадович]]></property_cdata>
    <property_simple key="line" value="9fb5ed96-a2ae-4f7e-b658-2e61a6174f6f" name="16016" />
    <property_simple key="number" value="" />
    <property_simple key="intnumber" value="" />
    <property_simple key="extnumber" value="" />
    <property_simple key="state" value="11" name="OnlineTalking" />
    <property_simple key="wanttalk" value="0" />
   </property_set>
   <property_set name="competitor">
    <property_simple key="id" value="6394a950-855e-4311-b075-790768307350" />
    <property_cdata key="user" value="67e62e9a-a400-4f26-a1ac-b535e17a44f7"><![CDATA[Артур Пирожкович]]></property_cdata>
    <property_simple key="line" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" name="15001" />
    <property_simple key="number" value="" />
    <property_simple key="intnumber" value="" />
    <property_simple key="extnumber" value="" />
    <property_simple key="state" value="11" name="OnlineTalking" />
    <property_simple key="wanttalk" value="0" />
   </property_set>
  </property_collection>
</property_set>

</oktellxmlmapper>


  • string Conf_GetFullCompetitorList ( ). Возвращает XML-строку с полным списком пользователей системы (объектов, доступных для приглашения в конференцию) и их состояний. Введено для реализации интерфейса управления приглашениями создателем или управляющим конференции. Может использоваться совместно с событием UserStateChanged (268) для отслеживания изменения состояний. В этом случае сначала необходимо осуществить подписку на направление 3 (метод Conf_HandleEvent), затем текущим методом получить начальные данные: перечень объектов и их состояния.

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

<?xml version="1.0" encoding="utf-16"?>
<oktellxmlmapper version="80710"> 

<property_set name="user">
  <property_cdata key="id"><![CDATA[17e640e1-1d55-4e45-a193-0469cbcd2dce]]></property_cdata>
  <property_cdata key="name" value=""><![CDATA[Максим Дмитриевич]]></property_cdata>
  <property_cdata key="groupid"><![CDATA[c4e3b424-3048-4cce-a2e4-033c532a7d99]]></property_cdata>
  <property_cdata key="groupname" value=""><![CDATA[Программисты]]></property_cdata>
  <property_simple key="userstate" value="0" name="usDisconnected" />
  <property_simple key="islunch" value="0" />
  <property_simple key="isredirect" value="0" />
  <property_simple key="inconference" value="0" />
  <property_cdata key="conferenceid"><![CDATA[00000000-0000-0000-0000-000000000000]]></property_cdata>
  <property_simple key="state" value="0" name="Idle" />
</property_set>
...............
<property_set name="user">
  .....
</property_set>

</oktellxmlmapper>


  • bool Conf_CheckReserveNumber ( int roomid ). Проверяет, доступен (свободен) ли числовой код конференции (по-другому номер комнаты). Возвращает TRUE, если свободен, и FALSE, если занят.
  • int Conf_GetEmptyRoomNumber ( ). Возвращает случайный свободный числовой номер для организации конференции. Номер выдается в виде трехзначного числа. В случае, если на момент создания конференции номер будет уже занят, методом создания будет возвращен соответствущий результат.
  • string Conf_CreateConference ( string xml ). Осуществляет создание конференции с заданными параметрами и начинает вызов всех указанных участников (рассылает приглашения и вызывает телефонную линию). В качестве параметра передается структура, содержащая все параметры конференции, а также список участников, указанных в виде идентификаторов пользователей, линий или номеров. Возвращает XML-строку с одним из результатов: success, error, alreadyexists. Часть свойств можно переназначить впоследствии методом Conf_SetupConference, однако некоторые свойства могут быть заданы только при создании, например «Осуществлять запись звука». Метод доступен для выполнения только пользователям, имеющим соответствующую привилегию.


Свойства передаваемого параметра:

  • Раздел conference:
    • id - Guid-идентификатор конференции.
    • room - числовой номер комнаты
    • accessmode - режим доступа к конференции. 11 - свободный, 12 - по разрешению управляющего, 13 - закрытый.
    • isselector - тип конференции. 0 - простая конференция, 1 - селекторное совещание.
    • everyonecaninvite - право всех участников приглашать в конференцию сторонних абонентов. 0 - только управляющий может приглашать, 1 - все участники.
    • canvieweachother - режим просмотра участников конференции. 0 - всех участников видит только управляющий, а сами участники не видят друг друга, 1 - участники видят друг друга.
    • record - записывать звук в файл для последующего прослушивания из статистических модулей.
    • recordrights - право на доступ к записи разговора. 1 - только управляющий, 2 - все участники конференции, 3 - только указанные пользователи (в этом случае в XML-структуре должен присутствовать набор recordusers).
    • director - идентификатор пользователя, управляющего конференцией (не обязательно сам создатель).
    • name - название конференции.
    • description - описание конференции.
  • Раздел competitors:
Содержит коллекцию наборов, каждый из которых содержит информацию об одном приглашаемом участнике. Участник может быть указан идентификатором пользователя (iduser), идентификатором линии (idline), внутренним номером в системе (intnumber) или внешним номером (extnumber). Впоследствии методом Conf_Invite могут быть приглашены и иные участники. Прочие абоненты могут быть приглашены также путем FLASH-переключений и совместных входов методом Conf_Phone_InviteNow.


  • Раздел recordusers:
Содержит коллекцию наборов, каждый из которых указывает идентификатор пользователя (iduser), которому разрешен доступ к записи конференции для прослушивания. Используется только в случае, если тип доступа к записи разговора установлен в значение («3» - доступ имеют указанные пользователи). Может быть опущен.


Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellxmlmapper version="80710"> 
    

<property_set name="conference">     
  <property_cdata key="id"><![CDATA[0bf2ddb3-adcb-4e88-ab64-6803056c6def]]></property_cdata>      
  <property_simple key="room" value="155" />      
  <property_simple key="accessmode" value="12" />      
  <property_simple key="isselector" value="1" />      
  <property_simple key="everyonecaninvite" value="1" />      
  <property_simple key="canvieweachother" value="1" />      
  <property_simple key="recordrights" value="3" />      
  <property_cdata key="director"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>      
  <property_cdata key="name"><![CDATA[Совещание отдела техподдержки]]></property_cdata>    
  <property_cdata key="description"><![CDATA[]]></property_cdata>    
</property_set>    
 
<property_set name="competitors">      
  <property_collection name="list" count="3">       
   <property_set name="competitor">          
    <property_cdata key="iduser"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>        
   </property_set>     
   <property_set name="competitor">          
    <property_cdata key="iduser"><![CDATA[48038abc-3a2f-4625-a775-4bff61ffa32a]]></property_cdata>        
   </property_set>          
   <property_set name="competitor">          
    <property_cdata key="iduser"><![CDATA[67e62e9a-a400-4f26-a1ac-b535e17a44f7]]></property_cdata>        
   </property_set>
  </property_collection>    
</property_set>       
 
<property_set name="recordusers">      
  <property_collection count="2">
   <property_set name="user">          
    <property_cdata key="iduser"><![CDATA[5776c54c-c60d-4e48-b64c-9fa11a89f558]]></property_cdata>        
   </property_set>
   <property_set name="user">          
    <property_cdata key="iduser"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>        
   </property_set>    
  </property_collection>
</property_set>
 

</oktellxmlmapper> 


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • string Conf_SetupConference ( string xml ). Осуществляет изменение параметров существующей конференции. Изменению подлежат не все исходные параметры конференции, а только название (name), описание (description), режим доступа (accessmode), тип (isselector), управляющий (director), права пользователей на управление и последующий доступ к записи. Возвращает XML-строку с одним из результатов: success, error, notfound, accessdenied. Метод доступен для выполнения только управляющему указанной конференции или создателю в его отсутствие.

Подробнее о параметрах в описании метода Conf_CreateConference.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellxmlmapper version="80710"> 
    
<property_set name="conference">      
  <property_cdata key="id"><![CDATA[607f1660-47b1-496f-9907-b47072d66bc7]]></property_cdata>      
  <property_simple key="accessmode" value="11" />      
  <property_simple key="isselector" value="1" />      
  <property_simple key="everyonecaninvite" value="0" />      
  <property_simple key="canvieweachother" value="1" />      
  <property_simple key="recordrights" value="2" />      
  <property_cdata key="director"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>      
  <property_cdata key="name"><![CDATA[Совещание отдела техподдержки]]></property_cdata>    
  <property_cdata key="description"><![CDATA[]]></property_cdata>    
</property_set> 

</oktellxmlmapper>

Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • string Conf_GetConference ( string xml ). Возвращает XML-структуру с настройками указанной конференции и перечень всех участников и их свойств. В случае неудачи возвращает XML-строку с результатом notfound. В передаваемом параметре указывается идентификатор интересующей конференции (idconf). Возвращаемое значение соответствует передаваемому параметру функции Conf_CreateConference, однако раздел competitors расширен и представляет более полную информацию о каждом участнике:
    • idcompetitor - идентификатор участника конференции. Присваивается на этапе подключения нового участника к конференции и сохраняется на протяжении всей сессии конференции за этим участником. Вне зависимости от того, является участник пользователем, или просто каналом, вызывался как внешний или внутренний номер, его идентификатор участника всегда существует. Взаимодействие с менеджером конференций другими управляющими методами должно происходить преимущественно с указанием этого кода участника.
    • idchain - идентификатор цепочки коммутаций. Цепочка коммутаций у каждого абонента, участвующего в конференции, уникальна. Следует иметь в виду, что при переключении на конференцию вместе с оппонентом из коммутации (метод Conf_Phone_InviteNow) у оппонента будет создаваться новый идентификатор цепочки коммутаций во избежание дубликата.
    • iduser - идентификатор пользователя.
    • idline - идентификатор линии, по которой подключен участник.
    • number - номер, по которому вызывался участник. Дублирует непустую информацию из полей intnumber и extnumber. Считается, что номер является неким визуальным идентификатором участника только в случае, если участник был приглашен по номеру (автодозвоном, или через АТС).
    • intnumber - внутренний номер, по которому вызывался участник.
    • extnumber - внешний номер, по которому вызывался участник.
    • state - текущее состояние участника конференции из приведенного выше перечисления EConferenceState.
    • wanttalk - состояние флага «Хочу сказать!».

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="conference">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
  </property_set>

</oktellcommapper>


Структура возвращаемого значения при успешном вызове на примере:

<?xml version="1.0" encoding="utf-16"?>
<oktellxmlmapper version="80710"> 
    
 
<property_set name="conference">      
  <property_cdata key="id"><![CDATA[c2be4b81-008d-4c8d-bb0e-c636ac93e027]]></property_cdata>      
  <property_simple key="room" value="724" />      
  <property_simple key="name" value="" name="" />      
  <property_simple key="description" value="" name="" />      
  <property_simple key="accessmode" value="11" name="Free" />      
  <property_simple key="isselector" value="1" />      
  <property_simple key="record" value="1" />      
  <property_cdata key="creator"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>      
  <property_cdata key="director"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>      
  <property_cdata key="timestart"><![CDATA[20090902 16:50:46]]></property_cdata>      
  <property_simple key="canvieweachother" value="1" />      
  <property_simple key="everyonecaninvite" value="0" />      
  <property_simple key="recordrights" value="2" name="Competitors" />    
</property_set>    
 
<property_set name="competitors">      
  <property_collection name="list" count="2">        
   <property_set name="competitor">          
    <property_cdata key="idcompetitor"><![CDATA[a3242bbf-718c-426c-837c-887ced525cc2]]></property_cdata>          
    <property_cdata key="idchain"><![CDATA[2929a51e-d915-4568-93c7-f2661317d74b]]></property_cdata>          
    <property_cdata key="iduser"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>          
    <property_cdata key="idline"><![CDATA[9fb5ed96-a2ae-4f7e-b658-2e61a6174f6f]]></property_cdata>          
    <property_simple key="number" value="" />          
    <property_simple key="intnumber" value="" />          
    <property_simple key="extnumber" value="" />          
    <property_simple key="state" value="11" name="OnlineTalking" />          
    <property_simple key="wanttalk" value="0" />        
   </property_set>
   <property_set name="competitor">          
    <property_cdata key="idcompetitor"><![CDATA[5820c285-f602-4bbe-98a4-1f0a9ef633b0]]></property_cdata>          
    <property_cdata key="idchain"><![CDATA[00000000-0000-0000-0000-000000000000]]></property_cdata>          
    <property_cdata key="iduser"><![CDATA[67e62e9a-a400-4f26-a1ac-b535e17a44f7]]></property_cdata>          
    <property_cdata key="idline"><![CDATA[cf8330f4-a0bf-4779-9539-ab8ea6c49df7]]></property_cdata>          
    <property_simple key="number" value="" />          
    <property_simple key="intnumber" value="" />          
    <property_simple key="extnumber" value="" />          
    <property_simple key="state" value="12" name="OnlineListener" />          
    <property_simple key="wanttalk" value="0" />        
   </property_set>      
  </property_collection>    
</property_set>    
 
<property_set name="recordusers" /> 
 

</oktellxmlmapper>


  • string Conf_StopConference ( string xml ). Завершает указанную конференцию, выводя из нее всех активных участников. Если управляющему, выходя, не требуется завершать конференцию, необходимо вызвать метод собственного отлучения Conf_ExitRequest. В параметре передается XML-структура с идентификатором конференции. Возвращает XML-строку с одним из результатов: success, error, notfound, accessdenied. Метод доступен для выполнения только управляющему указанной конференции или создателю в его отсутствие.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="conference">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
  </property_set>

</oktellcommapper>


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper> 


  • string Conf_SetVoiceParams ( string xml ). Осуществляет включение/выключение микрофона указанному участнику селекторного совещания. В случае, если конференция не является селекторным совещанием, метод не выполняется. Возвращает XML-строку с одним из результатов: success, error, notfoundcomp, notselector, notfoundcomp, accessdenied. В параметре передается идентификатор конференции (idconf), идентификатор участника (idcompetitor) и признак включенности микрофона (cantalk).

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

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="setvoiceparams">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
    <property_simple key="idcompetitor" value="51299a93-a47e-b5bf-3b0e-425a33c7a302" />
    <property_simple key="cantalk" value="1" />
    <property_simple key="canlisten" value="1" />
  </property_set>

</oktellcommapper>


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • void Conf_SetWantTalk ( string xml ). Осуществляет выставление/снятие у текущего участника конференции флага «Хочу сказать», если его микрофон отключен управляющим конференции. После успешного завершения метода все участники конференции, подписанные на событийное направление 2 (подробнее в описании метода Conf_HandleEvent), получат соответствующее событие ConferenceCompetitorStateChanged (263). В качестве параметра передается XML-структура с идентификатором конференции (idconf), и признаком снятие/установка (wanttalk).

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="setwanttalk">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
    <property_simple key="wanttalk" value="1" />
  </property_set>

</oktellcommapper>


  • string Conf_ExitRequest ( string xml ). Осуществляет выход или запрос на выход из конференции. Выход из конференции по инициативе самого участника может быть осуществлен также разрывом связи (опусканием трубки). После выхода из конференции все участники, подписанные на событийное направление 2 (подробнее в описании метода Conf_HandleEvent) получат соответствующее событие ConferenceCompositionChanged (262), а также событие ConferenceCompetitorStateChanged (263). В параметре передается XML-структура с идентификатором конференции (idconf). Возвращает XML-строку с одним из результатов: success, error, notfoundcomp, notselector, notfoundcomp, accessdenied. Метод может быть вызван любым участником конференции, в том числе управляющим.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="conference">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
  </property_set>

</oktellcommapper>


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • string Conf_ExitToUser ( string xml ). Осуществляет вывод из конференции указанного ее участника, отправляя ему отбой. Все остальные участники конференции, подписанные на событийное направление 2 (подробнее в описании метода Conf_HandleEvent) получат соответствующее событие ConferenceCompositionChanged (262), а также событие ConferenceCompetitorStateChanged (263). В параметре передается XML-структура с идентификатором конференции (idconf) и идентификатором участника (idcompuser), который может быть также непустым идентификатором пользователя или непустым идентификатором линии. Возвращает XML-строку с одним из результатов: success, error, notfound, accessdenied. Метод может быть вызван только управляющим конференцией или создателем в его отсутствие.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="exittouser">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
    <property_simple key="idcompuser" value="51299a93-a47e-b5bf-3b0e-425a33c7a302" />
  </property_set>

</oktellcommapper>

Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • string Conf_EntranceRequest ( string xml ). Осуществляет вход в конференцию, если она открыта. Телефонная линия пользователя получает в свою очередь вызов из конференции. Для закрытых конференций вход невозможеню. Если доступ к конференции осуществляется с разрешения управляющего, то метод осуществляет запрос на вход. Участники конференции, подписанные на событийное направление 2 (подробнее в описании метода Conf_HandleEvent) получат соответствующие события ConferenceCompositionChanged (262) и ConferenceCompetitorStateChanged (263), а управляющий и создатель получают дополнительно событие ConferenceEntranceRequest (264). После этого управляющий или создатель в его отсутствие могут разрешить или запретить вход в конференцию для участника. В параметре передается XML-структура с идентификатором конференции (idconf). Возвращает XML-строку с одним из результатов: error, notfound, accessdenied, alreadydone, entered, alreadyrequested, requested. Вызывается любым пользователем системы, которому по привилегиям доступен модуль конференций.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="conference">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
  </property_set>

</oktellcommapper>


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="requested" />
  </property_set>

</oktellcommapper>


  • string Conf_PermitEntranceFor ( string xml ). Разрешает/запрещает вход пользователю, запросившему вход в конференцию, доступ к которой осуществляется с разрешения управляющего. В параметре передается XML-структура с идентификатором конференции (idconf), идентификатором участника (idcompetitor) и признаком разрешения/запрета входа (permit). Возвращает XML-строку с одним из результатов: success, error, notfound, accessdenied, alreadydone. Метод доступен для выполнения только управляющим конференцией или создателем в его отсутствие.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="permitresponse">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
    <property_simple key="idcompetitor" value="51299a93-a47e-b5bf-3b0e-425a33c7a302" />
    <property_simple key="permit" value="1" />
  </property_set>

</oktellcommapper>


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • string Conf_Invite ( string xml ). Осуществляет приглашение в конференцию указанных объектов (пользователей, линий, номеров). Их телефонные каналы получают в свои очереди вызовы из конференции. В случае, если вызывается внешний номер, начинается его набор в соответствии с настройкой вызова быстрых номеров. Для организации маршрутов в Oktell необходимо настроить использование служебного сценария набора номера для набора быстрых и внешних номеров. В параметре передается XML-структура со списком приглашаемых участников. Для каждого из них указываются либо код пользователя (iduser), либо код линии (idline), либо внутренний номер в системе (intnumber), либо внешний номер (extnumber). Возвращает XML-строку с одним из результатов: success, error, notfound, accessdenied. Если в настройках конференции в разделе прав стоит разрешение всем участникам приглашать других абонентов, то метод доступен для выполнения всеми участниками конференции. В противном случае метод может быть вызван только управляющим конференцией или создателем в его отсутствие.

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="conference">
    <property_simple key="id" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
  </property_set>
  <property_set name="competitors">
    <property_collection count="3">
      <property_set name="competitor">
        <property_simple key="iduser" value="09f78612-9408-4f69-b0e4-1357a37a3026" />
      <property_simple key="idline" value="09f78612-9408-4f69-b0e4-1357a37a3026" />         
      <property_simple key="intnumber" value="09f78612-9408-4f69-b0e4-1357a37a3026" />
      <property_simple key="extnumber" value="5109940" />
        <property_simple key="cantalk" value="1" />
      </property_set>
      <property_set name="competitor">
        <property_simple key="iduser" value="51299a93-a47e-b5bf-3b0e-425a33c7a302" />
        <property_simple key="cantalk" value="0" />
      </property_set>
      <property_set name="competitor">
        <property_simple key="extnumber" value="5109940" />
        <property_simple key="cantalk" value="1" />
      </property_set>
    </property_collection>
  </property_set>

</oktellcommapper>


Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="result">
    <property_simple key="result" value="success" />
  </property_set>

</oktellcommapper>


  • void Conf_HandleEvent ( string xml ). Осуществляет подписку/отписку на событийные направления. Подписывать направление следует при необходимости получать события соответствующего направления. После устранения такой необходимости событийное направление следует отключить повторным вызовом метода с параметром «отписать» во избежание загрузки системы ресурсоемким порожняком.

Серверный менеджер управления конференциями генерирует несколько событий для обработки клиентскими приложениями. В соответствии с решаемыми задачами события объединены в группы (подробнее ниже в этом разделе «события, инициированные менеджером конференций»). Часть событий генерируются для управляющего конференцией, находящемся в режиме создания/настройки, часть для участников конференций, часть для всех, остальные редки. Поэтому с целью исключить массовую загрузку системы (серверного процессора, клиентских компьютеров, сети) рассылкой сообщений и их обработкой реализован механизм подписки на интересующие направления. Так, например, в свободном состоянии или в коммутациях, не связанных с конференциями, пользователю не интересны никакие события (возможно достаточно получать только события об изменении состава конференций для отображения). При загрузке модуля управления конференциями осуществляется подписка на события направления 1 (изменения списка и свойств конференций). При входе в конференцию участнику может оказаться необходимым получать дополнительно события об изменении состава участников этой конференции и их состояний (событийной направление 2). Создателю и управляющему при активации режима приглашения других участников может понадобиться обработка изменения состояния всех пользователей/объектов системы - самое ресурсоемкое событие. После устранения потребности в обработке событий соответствующего направления, крайне желательно отписать клиентское приложение от рассылки.

В параметре передается код направления (eventtype) и признак «подписать»/«отписать» (handle). Для направления «2» необходимо также передать идентификатор конференции (idconf).

Пример запроса:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="handle">
    <property_simple key="idconf" value="cf2dd474-e2ab-3cad-561f-ab12cdef5678" />
    <property_simple key="eventtype" value="2" />
    <property_simple key="handle" value="1" />
  </property_set>

</oktellcommapper>


  • string Conf_Phone_CheckCanInviteNow ( ). Определяет, является ли текущая коммутация конференцией (cansendconfinvite), и дополнительно, разрешено ли в данной коммутации совместное переключение в конференцию, находящуюся во FLASH-буфере пользователя (canswitchtogather). Метод имеет смысл вызывать однократно после получения события CommutationStarted (231). Возвращается XML-структура с двумя описанными параметрами.

Пример возвращаемого значения:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

  <property_set name="info">
    <property_simple key="canswitchtogather" value="0" />
    <property_simple key="cansendconfinvite" value="1" />
  </property_set>

</oktellcommapper>


  • void Conf_Phone_InviteNow ( ). Осуществляет переключение в конференцию совместно с оппозитным абонентом. Работает в случае, если в момент коммутации во FLASH-буфере линии пользователя находится активная конференция. После вызова оба абонента попадают в конференцию.

ВНИМАНИЕ! Вызов метода приводит к несовсем корректному результату, если пользовательское рабочее место оснащено IP-телефоном, и переход во FLASH осуществлялся с использованием кнопки HOLD с последующим вызовом оппонента по 2-му транку.


  • void Conf_Phone_SwitchToConf ( ). Осуществляет преобразование текущей коммутации в конференцию со случайным номером. Соответственно, после операции конференция содержит двух абонентов. Пользователь, инициировавший преобразование становится создателем конференции и может изменять ее свойства.


События канала OnCommunicate (здесь) инициированные менеджером конференций для интерфейсных блоков управления конференциями и телефона:

ConferenceListChanged                        = 261 //Событийное направление 1
ConferenceCompositionChanged                = 262 //Событийное направление 2
ConferenceCompetitorStateChanged        = 263 //Событийное направление 2
ConferenceEntranceRequest                = 264 //Без подписки
ConferenceEntranceDenied                = 265 //Без подписки
ConferenceEntrancePermitted                = 266 //Без подписки
ConferenceNotifyInvite                        = 267 //Без подписки
ConferenceUserStateChanged                = 268 //Событийное направление 3


  • ConferenceListChanged (261). Событие менеджера конференций об изменении состава конференций или изменении базового свойства одной из активных конференций. Применимо для изменения перечня конференций в интерфейсном модуле клиентского приложения. Генерируется только по подписке на направление «1» (подробнее в описании метода Conf_HandleEvent). В качестве параметра передает структуру с содержанием информации о всех конференциях и значениях их базовых свойств.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="261" name="conferencelistchanged">
  <property_simple key="eventtype" value="1" name="ConfListChanged" />
  <property_collection name="conferencelist" count="1">
   <property_set name="conference">
    <property_simple key="id" value="09f78612-9408-4f69-b0e4-1357a37a3026" />
    <property_simple key="room" value="334" />
    <property_cdata key="name" value=""><![CDATA[Беседка]]></property_cdata>
    <property_simple key="description" value="" name="" />
    <property_simple key="accessmode" value="11" name="Free" />
    <property_simple key="isselector" value="0" />
    <property_cdata key="creator" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Александрович]]></property_cdata>
    <property_cdata key="director" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Александрович]]></property_cdata>
    <property_cdata key="timestart"><![CDATA[02.09.2009 14:28:54]]></property_cdata>
    <property_simple key="canvieweachother" value="1" />
    <property_simple key="everyonecaninvite" value="0" />
    <property_simple key="recordrights" value="2" name="Competitors" />
   </property_set>
  </property_collection>
</event>

</oktellcommapper>


  • ConferenceCompositionChanged (262). Событие менеджера конференций об изменении состава участников активной конференции. Применимо для изменения перечня участников конкретной конференции в интерфейсном модуле клиентского приложения. Генерируется только по подписке на направление «2» (подробнее в описании метода Conf_HandleEvent). В качестве параметра передает структуру с содержанием информации о конференции и всех текущих ее участниках.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="262" name="conferencecompositionchanged">
  <property_simple key="eventtype" value="2" name="ConfCompositionChanged" />
  <property_collection name="competitorlist" count="1">
   <property_set name="conference">         
    <property_simple key="id" value="b89a414a-c955-4a14-8c35-90b09fe9a8d6" />   
     <property_collection name="competitors" count="2">
     <property_set name="competitor">
      <property_simple key="id" value="ce5c877c-7c46-42a0-8430-11085b4e50d0" />
      <property_cdata key="user" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Засадович]]></property_cdata>
      <property_simple key="line" value="9fb5ed96-a2ae-4f7e-b658-2e61a6174f6f" name="16016" />
      <property_simple key="number" value="" />
      <property_simple key="intnumber" value="" />
      <property_simple key="extnumber" value="" />
      <property_simple key="state" value="11" name="OnlineTalking" />
      <property_simple key="wanttalk" value="0" />
     </property_set>
     <property_set name="competitor">
      <property_simple key="id" value="6394a950-855e-4311-b075-790768307350" />
      <property_cdata key="user" value="67e62e9a-a400-4f26-a1ac-b535e17a44f7"><![CDATA[Артур Пирожкович]]></property_cdata>
      <property_simple key="line" value="cf8330f4-a0bf-4779-9539-ab8ea6c49df7" name="15001" />
      <property_simple key="number" value="" />
      <property_simple key="intnumber" value="" />
      <property_simple key="extnumber" value="" />
      <property_simple key="state" value="11" name="OnlineTalking" />
      <property_simple key="wanttalk" value="0" />
     </property_set>
    </property_collection>
   </property_set>
  </property_collection>
</event>

</oktellxmlmapper>


  • ConferenceCompetitorStateChanged (263). Событие менеджера конференций о смене состояния одним участником конференции. Применимо для корректировки состояний в перечне участников конкретной конференции в интерфейсном модуле клиентского приложения. Генерируется только по подписке на направление «2» (подробнее в описании метода Conf_HandleEvent). В качестве параметра передает структуру с содержанием полной информации о состоянии участника.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="263" name="conferencecompetitorstatechanged">
  <property_simple key="eventtype" value="3" name="ConfCompetitorStateChanged" />
  <property_collection name="competitorstate" count="1">
   <property_set name="conference">
    <property_simple key="id" value="f9bc8a0a-934d-4ae6-9493-a981525c18fa" />
    <property_collection name="competitors" count="1">
     <property_set name="competitor">
      <property_cdata key="idcompetitor"><![CDATA[8b35764e-1778-42cb-9c90-3d6744df6618]]></property_cdata>
      <property_cdata key="idchain"><![CDATA[00000000-0000-0000-0000-000000000000]]></property_cdata>
      <property_cdata key="user" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8"><![CDATA[Петр Александрович]]></property_cdata>
      <property_simple key="line" value="9fb5ed96-a2ae-4f7e-b658-2e61a6174f6f" name="16016" />
      <property_simple key="number" value="" />
      <property_simple key="intnumber" value="" />
      <property_simple key="extnumber" value="" />
      <property_simple key="state" value="23" name="Flashed" />
      <property_simple key="wanttalk" value="0" />
      <property_simple key="userstate" value="5" name="usFullbusy" />
      <property_simple key="linestate" value="128" name="lsFlash" />
     </property_set>
    </property_collection>
   </property_set>
  </property_collection>
</event>

</oktellxmlmapper>


  • ConferenceEntranceRequest (264). Событие менеджера конференций, возникающее в клиентском приложении управляющего и/или создателя, сгенерированное при запросе входа в конференцию нового участника. Актуально только для конференций с доступом по разрешению управляющего. Возникает безусловно и не требует предварительной подписки на направления методом Conf_HandleEvent.

В параметре передается идентифицирующая информация об участнике - пользователе или линии, в зависимости от того, откуда осуществляется вход. В любом случае присутствует указание идентификатора объекта (id) и его название (name), а также принадлежность к отделу (groupid, groupname).

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="264" name="conferenceentrancerequest">
  <property_simple key="eventtype" value="4" name="EntranceRequest" />
  <property_collection name="entrancerequest" count="1">
   <property_set name="user">
    <property_simple key="id" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8" />
    <property_cdata key="name" ><![CDATA[Артур Пирожкович]]></property_cdata>
    <property_simple key="groupid" value="9fb5ed96-a2ae-4f7e-b658-2e61a6174f6f" />
    <property_cdata key="groupname" ><![CDATA[Техподдержка]]></property_cdata>
    <property_simple key="userstate" value="1" name="usReady" />
   </property_set>
  </property_collection>
</event>

</oktellxmlmapper>


  • ConferenceEntranceDenied (265). Событие менеджера конференций, возникающее в клиентском прилолжении пользователя, который запросил вход в конференцию с доступом по разрешению управляющего. Указывает на запрет входа, выставленный управляющим в ответ на запрос. Возникает безусловно и не требует предварительной подписки на направления методом Conf_HandleEvent.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="265" name="conferenceentrancedenied" />

</oktellxmlmapper>


  • ConferenceEntrancePermitted (266). Событие менеджера конференций, возникающее в клиентском приложении пользователя, который запросил вход в конференцию с доступом по разрешению управляющего. Указывает на разрешение входа, выставленное управляющим в ответ на запрос. При этом система автоматически осуществляет одновременный вызов телефонного канала пользователя (или размещает вызов в его очереди). Возникает безусловно и не требует предварительной подписки на направления методом Conf_HandleEvent.

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="266" name="conferenceentrancepermitted" />

</oktellxmlmapper>


  • ConferenceNotifyInvite (267). Событие менеджера конференций о проведении вызова текущего участника в конференцию. Ожидается, что при получении этого события клиентский модуль осуществит подписку на направление 2 и будет получать события об изменении состава участников конференции и их состояний. Отмена, прекращение вызова, смена состояний и другие события генерируются в направлении 2 (подробнее в описании метода Conf_HandleEvent). Текущий метод возникает безусловно и не требует предварительной подписки на направления. Свойство idconference указывает идентификатор конференции, в которую происходит приглашение. В некоторых случаях возможно определение пользователя, который инициировал приглашение в конференцию. В этом случае будут заполнены свойства inviteruserid (идентификатор пользователя) и inviterusernumber (внутренний номер пользователя).

Пример:

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

<event id="267" name="conferencenotifyinvite">
  <property_simple key="eventtype" value="8" name="NotifyInvite" />
  <property_simple key="idconference" value="9fb5ed96-a2ae-4f7e-b658-2e61a6174f6f" />
  <property_simple key="inviteruserid" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8" />
  <property_simple key="inviterusernumber" value="14" />
</event>

</oktellxmlmapper>


  • ConferenceUserStateChanged (268). Событие менеджера конференций об изменении состояния любого пользователя или другого объекта системы, рассматриваемого в качестве возможного участника конференции. Поступают все изменения состояний на сервере, а также смена состояния в конференциях при сохранении состояния «FullBusy» самого пользователя. Генерируется для любого пользователя, подписанного на направление 3 (подробнее в описании метода Conf_HandleEvent). Рекомендуется использовать осмотрительно и только в крайних случаях - при создании конференции в режиме приглашения участников, а также при модификации конференций - после чего отписывать направление. Это будет гарантировать умеренную загрузку системы. Использовать необходимо совместно с методом Conf_GetFullCompetitorList: осуществить подписку, затем вызвать метод для получения начальных состояний всех объектов.

Пример 1 (смена состояния пользователя в системе):

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

   <event id="268" name="conferenceuserstatechanged">
     <property_simple key="eventtype" value="5" name="StateChanged" />
     <property_collection name="possiblecompetitorstate" count="1">
       <property_set name="user">
         <property_cdata key="id"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>
         <property_simple key="userstate" value="5" name="usFullbusy" />
       </property_set>
     </property_collection>
   </event>

</oktellcommapper>


Пример 2 (смена состояния участника конференции):

<?xml version="1.0" encoding="utf-16"?>
<oktellcommapper version="80710">

   <event id="268" name="conferenceuserstatechanged">
     <property_simple key="eventtype" value="5" name="StateChanged" />
     <property_collection name="possiblecompetitorstate" count="1">
       <property_set name="user">
         <property_cdata key="id"><![CDATA[da803f01-ea77-40fa-bc9d-e2efb36fd5a8]]></property_cdata>
         <property_simple key="inconference" value="1" />
         <property_cdata key="conferenceid"><![CDATA[dfc2a6c2-c03b-42ec-8ceb-37524ece34e9]]></property_cdata>
         <property_simple key="state" value="11" name="OnlineTalking" />
       </property_set>
     </property_collection>
   </event>

</oktellcommapper>