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

Материал из Oktell
Версия от 06:38, 26 марта 2014; Oktell Support (обсуждение | вклад)

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

Наверх

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

  • 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>