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

Материал из 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>


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