Серверный HTTP интерфейс

Материал из Oktell
Версия от 11:46, 17 сентября 2012; Peter (обсуждение | вклад)

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

Наверх


Серверная служба осуществляет прослушивание порта 4055 (может быть изменен в конфигурационном файле) и способна исполнять некоторые поступающие на него по протоколу HTTP запросы. Серверная служба осуществляет прослушивание всех сетевых интерфейсов.

Запросы могут поступать с использованием как метода GET, так и POST.

При необходимости может быть задействована проверка пароля при получении запроса. Для этого в конфигурационном файле серверной службы необходимо указать непустое значение параметру QueryWebServerPassword. Все поступающие запросы при этом должны содержать среди параметров password=abc, в противном случае сервер будет отвечать «403 Forbidden».


Команды серверного веб-интерфейса

execsvcscript. Осуществляет запуск произвольного служебного сценария на сервере (код запуска 27). Запуск служебного сценария может осуществляться синхронно и асинхронно. В синхронном режиме возвращаемое сценарием значение (присвоенное служебной переменной Возвращаемое значение 1) передается в качестве ответа на запрос.

Параметры:

  • name - название служебного сценария, подлежащего запуску, существующего и размещенного на сервере в каталоге общих сценариев.
  • startparam1, startparam2, startparam3, startparam4, startparam5 - значения стартовых параметров, передаваемых в сценарий и доступных в качестве соответствующих функций.
  • async - режим запуска служебного сценария. 0 - синхронно с ожиданием завершения и возвратом значения, 1 - асинхронно.
  • timeout - в случае запуска в синхронном режиме устанавливает максимально допустимое время ожидания завершения сценария в секундах. При превышении обрывает ожидание и возвращает ответ на веб-запрос без результата работы сценария.

http://192.168.0.1:4055/execsvcscript?name=SvcScript1&startparam1=123&startparam2=234&async=0&timeout=10

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

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

 <oktellxmlmapper version="80710">

   <data name="result" count="1">

     <property_set name="execsvcscript">

       <property_simple key="started" value="1" name="success" />

       <property_simple key="startresult" value="0" name="success" />

       <property_simple key="returnvalue" name="abcdef" />

     </property_set>

   </data>

 </oktellxmlmapper>


execsvcscriptplain. Аналогично методу execsvcscript осуществляет запуск произвольного служебного сценария на сервере (код запуска 27) с такими же параметрами. Отличие состоит в том, что ответ сценария, сохраненный в переменную «Выходное значение» без искажений размещается в контенте ответа на запрос, в то время как базовый метод обрамляет ответ в XML формат.


tst_getintnumberreadyusers. Для указанного внутреннего стандартного номера возвращает количество свободных и занятых пользователей, а также список свободных пользователей, указанных в виде прямых внутренних стандартных номеров, по которым их можно вызвать.

Параметры:

  • number - номер, состояние объектов которого необходимо определить.

http://192.168.0.1:4055/tst_getintnumberreadyusers?number=120

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

 
<?xml version="1.0" encoding="utf-8"?>

  <group name="120" ready="2" busy="3">

    <element name="223"/>

    <element name="227"/>

  </group>


tst_getuserstate. Возвращает XML-структуру, содержащую текущее состояние указанного в запросе пользователя.

Параметры:

  • number - номер, состояние объектов которого необходимо определить.

http://localhost:4055/tst_getuserstate?iduser=DA803F01-EA77-40FA-BC9D-E2EFB36FD5A8

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

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

 <oktellxmlmapper version="80710">

   <data name="userstate" count="1">

     <property_set name="user" id="da803f01-ea77-40fa-bc9d-e2efb36fd5a8">

       <property_simple key="id" value="da803f01-ea77-40fa-bc9d-e2efb36fd5a8" />

       <property_simple key="state" value="1" name="usReady" />

     </property_set>

   </data>

 </oktellxmlmapper>


getlicensefulltext. Возвращает полный текст информации о лицензии на текущем установленном на сервере языке, аналогичный отображаемому в разделе Администрирование. Общие настройки. Информация о лицензии.

http://192.168.0.1:4055/getlicensefulltext


getlicensefullxml. Возвращает xml-структуру лицензионного сертификата.

http://192.168.0.1:4055/getlicensefullxml


getlicenseinfo. Возвращает значение указанного параметра лицензионного сертификата.

Параметры:

  • detail - требуемый параметр.
regserial - 7-значный номер регистрации,
confirmdate - дата следующего подтверждения сертификата в формате dd.MM.yyyy,
updatelimitdate - конечная дата поддерживаемых версий согласно лицензии на обновления в формате dd.MM.yyyy.

http://192.168.0.1:4055/getlicensefullxml?detail=regserial


download. Позволяет скачать файл с сервера.

  • download/rec/ABC, download/fax/ABC - предоставляет файлы записей разговоров и файлы полученных факсимильных сообщений. Правильная ссылка предоставляется через web-socket подключение.
  • download/byscript - предоставляет доступ к произвольному файлу, путь к которому определяется служебным сценарием, запускаемым этим запросом. Все параметры для execsvcscript. Считается что сценарий вернет путь к файлу, который и будет возвращен.

http://192.168.0.1:4055/download/byscript?name=SvcScript1&startparam1=123&startparam2=234&async=0&timeout=10


downloadrecordbylink. Позволяет скачать файл записи разговора с сервера, код которого упакован и передан через web-socket подключение.

Параметры:

  • recordlink - требуемый параметр.

http://192.168.0.1:4055/downloadrecordbylink?recordlink=ABCDEFGH


upload. Позволяет закачать файл на сервер. Веб-сервер понимает Content-Type multipart/form-data и application/octet-stream. В запросе должны также присутствовать поля Content-Transfer-Encoding , Content-Disposition. В одном запросе с помощью MIME могут быть переданы несколько файлов. Размещение их осуществляется в каталоге \OktellWorkDirectory\Temp\UploadData. Для формирования неслучайных имен, исходные имена должны быть указаны в качестве параметра суб-заголовка Content-Disposition.

Для примера запроса можно обратиться к сценарию закачки файла на сервер Oktell (Файл:Uploadfile.oscr), присутствующему также в шаблонных сценариях дистрибутива версии начиная с 25.03.2012.

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

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

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

 <uploadfilesresult count="3">

   <file name="1.jpg" saved="1" size="13277" path="C:\Oktell\Temp\UploadData\1.jpg"/>

   <file name="note.txt" saved="1" size="938" path="C:\Oktell\Temp\UploadData\note.txt"/>

   <file name="noteerror.txt" saved="0"/>

 </uploadfilesresult>


Несколько следующих команд предоставляют доступ к функционалу управления звонками, аналогичному доступным для клиентских приложений. Все эти запросы выполняются от имени указанной линии (параметр line), указанного пользователя (параметр user) или указанного рабочего места (параметр wp). Достаточно указания только одного из вышеприведенных параметров. В качестве значения может использоваться guid-идентификатор, название, имя пользователя, логин, номер линии и т.д. По указанному значению однозначно определяется внутренняя линия, от имени которой и исполняется команда.


wp_getchaincontent. Возвращает текущий контент цепочки, в которой участвует линия. Результат представляет собой JSON-структуру.

http://192.168.0.1:4055/wp_getchaincontent?user=DA803F01-EA77-40FA-BC9D-E2EFB36FD5A8

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

{
	"createtime": "2011-07-27 14:41:28",
	"trace": [
		{
			"userlogin": "Dima",
			"isuser": true,
			"queuepriority": 10,
			"managedlineid": "e76c86ea-a28a-4519-b4ff-8879a92c62b7",
			"contentelementtype": "call",
			"srclinenumber": "17002",
			"userid": "2a594b51-bb89-4da6-a69f-f48761baf0d9",
			"calledid": "183",
			"istask": false,
			"pbxdirection": "internal",
			"queuesourcestr": "qsLineLogic",
			"srclineid": "e76c86ea-a28a-4519-b4ff-8879a92c62b7",
			"objecttypestr": "qotQueueLogic",
			"managedlinenumber": "17002",
			"objecttype": 0,
			"callerid": "#999",
			"queuesource": 1,
			"department": "Программисты",
			"startqueuetime": "2011-07-27 14:41:29",
			"objectid": "63d38304-3bff-4e8e-8c42-8f2f11b57c73",
			"username": "Дмитрий Евгеньевич",
			"srcelementid": "e76c86ea-a28a-4519-b4ff-8879a92c62b7"
		},
		{
			"contentelementtype": "commutation",
			"connectiontype": 3,
			"btext": "Виктор Викторыч",
			"aisuser": true,
			"atext": "Дмитрий Евгеньевич",
			"connectiontypestr": "ctInnerInner",
			"buserid": "7cf84c23-2736-4fc8-9bf7-bfbb4778fb01",
			"ausername": "Дмитрий Евгеньевич",
			"aoutnumber": "#999",
			"blineid": "070aafb0-f47c-4df5-a01f-7bb08ceee269",
			"auserlogin": "Dima",
			"bisuser": true,
			"buserlogin": "VIKTIRICH",
			"auserid": "2a594b51-bb89-4da6-a69f-f48761baf0d9",
			"busername": "Виктор Викторыч",
			"timeanswer": "2011-07-27 14:41:31",
			"isrecorded": true,
			"commutationid": "8fc371f2-ae36-4744-ae7f-bee8c79385a8",
			"bnumberdialed": "",
			"timestart": "2011-07-27 14:41:29",
			"boutnumber": "183",
			"anumberdialed": "183",
			"alinenumber": "17002",
			"blinenumber": "17001",
			"alineid": "e76c86ea-a28a-4519-b4ff-8879a92c62b7"
		}
	],
	"customfield": "",
	"chainid": "c7b333a5-93b3-4277-8c60-9844d63a4732"
}

wp_getabonentinfo. Возвращает информацию о противоположном абоненте в коммутации, в которой участвует линия. Результат представляет собой JSON-структуру

http://192.168.0.1:4055/wp_getchaincontent?user=ivan

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

{
	"abonentinfo": {
		"cansendfiles": false,
		"isconference": false,
		"callerlineid": "070aafb0-f47c-4df5-a01f-7bb08ceee269",
		"callercomment": "",
		"isuser": true,
		"callername": "Виктор Викторыч",
		"canswitchtoconf": false,
		"callerusername": "Виктор Викторыч",
		"commutationid": "21164dde-0c43-46cf-b00f-77bd51cbe284",
		"calleruserlogin": "VIKTIRICH",
		"callerdescription": "",
		"callerlinenum": "17001",
		"isivr": false,
		"callerid": "183",
		"callersimple": "Виктор Викторыч",
		"calleruserid": "7cf84c23-2736-4fc8-9bf7-bfbb4778fb01",
		"canfax": true,
		"canvideo": false,
		"chainid": "b8b552d1-7cb9-4469-a45d-451f27516af1",
		"isextline": false
	},
	"currentlinestatestr": "lsCommutated",
	"currentlinestate": 32
}


wp_autocallstart. Запускает автодозвон или разовый звонок на указанный номер.

Дополнительные параметры:

  • number - обязательный параметр.
  • direction - необязательный параметр. По умолчанию используется автоопределение (если указанный номер найден среди внутренних номеров, осуществляется звонок вовнутрь, в противном случае осуществляется звонок наружу.
pbx - звонок внутрь,
city - звонок вовне
  • sequence - необязательный параметр. По умолчанию стандартный прямой вызов (direct)
direct - сначала вызывается абонент, после ответа производится обратный вызов линии.
back - сначала осуществляется вызов самой линии, а затем вызов от ее имени указанного номера.

http://192.168.0.1:4055/wp_autocallstart?line=16038&number=538&direction=pbx


wp_switchcall. Производит flash-переключение текущего звонка на указанный номер. Если линия неактивна, то запускает автодозвон. Все параметры аналогичны wp_autocallstart.


wp_autocallstop. Останавливает активную сессию автодозвона.

http://192.168.0.1:4055/wp_autocallstop?line=16038


wp_flash. Генерирует flash от имени линии.

http://192.168.0.1:4055/wp_flash?user=ivan


wp_declinecall. Отклоняет входящий вызов.

http://192.168.0.1:4055/wp_declinecall?wp=OPERATOR1


wp_setuserstate. Изменяет текущее состояние пользователя и/или перемещает его из одного режима в другой. В любом случае, если пользователь определен, возвращается ответ 200 OK без дополнительных параметров. Оповещение о смене режимов и состояний протекает в обычном режиме путем событийного оповещения клиентского рабочего места.

Дополнительные параметры:

  • userstateid - определяет новое состояние пользователя. Не все переходы между состояниями возможны, так например, невозможно сделать пользователя свободным, если он занят разговором по телефону, невозможно ввести пользователя в перерыв, если он не находится в режиме call-центра и т.д. Также невозможен перевод пользователя в служебные состояния (отключен, без телефона, зарезервирован и т.д.). Значение параметра указывается в виде числа из набора:
1 - свободен,
2 - перерыв,
3 - нет на месте,
5 - занят в разговоре или в обработчике задачи.
  • onredirect - 0 или 1, определяет активность режима переадресации. Доступно только при выключенном режиме call-центра. Может выставляться как отдельно, так и одновременно с определением других режимов состояния.
  • oncallcenter - 0 или 1, определяет активность режима call-центра. Производит дополнительно смену состояний, если текущее состояние противоречит выбранному режиму (вывод из перерыва при выходе, вывод из переадресации при входе в call-центр).
  • onlunch - 0 или 1, определяет активность режима перерыва. Доступно только при включенном режиме call-центра. Может выставляться как отдельно, так и одновременно с определением других режимов состояния. При активном режиме перерыва пользователь переводится в состояние перерыва вместо готовности всякий раз, как только освобождается. Вместе с переводом в режим перерыва возможно указание причины и кода причины перерыва (параметры lunchreasonid и lunchreasonmsg) - для регламентированных причин, содержащихся в БД указывается только код, для индивидуальных причин указывается только текст.
  • lunchreasonid - числовой код регламентной причины перерыва (определены в разделе общих настроек).
  • lunchreasonmsg - описание индивидуальной причины перерыва.

http://192.168.0.1:4055/wp_setuserstate?user=ivanov&userstateid=5

http://192.168.0.1:4055/wp_setuserstate?user=ivanov&onlunch=1&lunchreasonid=1001