Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


doc:1cajam:serverwindows

Это старая версия документа!


Запуск на сервере 1С Предприятия (windows)

Тестовый стенд

  • Windows XP
  • 1С:Предприятие 8.2 (8.2.15.289)
  • Тип базы: серверная
  • Web сервер Apache 2.2
  • Версия компонента: 1.0.15.5

в версии компонента 1.0.15.5 присутствуют два важных свойства:

  • РежимSOAPОповещений - тип Булево - при влючении отправляет все события на вебсервис по адресу указанному в следующем параметре.
  • АдресSOAPсервера - тип - Строка - адрес опубликованного веб сервиса для приема внешних событий компоненты.

Цели

  1. Запустить копонент на сервере 1С Предприятия
  2. Сконфигурировать web - сервис, который мог бы обрабатывать данные cdr записей, передаваемых копонентом

Запуск копонента на сервере

Подготовка конфигурации

  1. Создаем информационную базу с пустой конфигурацией
  2. Добавляем в конфигурацию обработку SDK_test_tools_v1_0_15_*

Описание нового XDTO пакета

  • Элемент ненумерованного спискаДобавляем новый XDTO пакет (в дереве метаданных «Общие» – «XDTO пакеты», Щелчок правой кнопкой мыши – Добавить)
    • Элемент ненумерованного списка Укажем имя пакета XDTO_MIKO
    • Элемент ненумерованного списка URI пространство имен http://1C_MIKO_Asterisk.ru

  • Элемент ненумерованного спискаДобавим новый тип объекта для пакета, отредактируем его свойства как на картинке:

  • Добавим новый web - Сервис (в дереве метаданных «Общие» – «web - Сервис», Щелчок правой кнопкой мыши – Добавить)
    • На вкладке «Основные» Имя зададим MIKO_Alam
    • На вкладке «Операции» добавим новую операцию:

  • Для операции необходимо добавить три параметра:

  • Сформируем обработчик для операции web сервиса:
 
        // Обработчик операции сервиса
	Функция EventListner(Источник, Событие, Данные)
		// полученные данные необходимо декодировать:
		Данные = URLDecode(Данные);
		// запишем в журнал регистрации
                ЗаписьЖурналаРегистрации("EventListner" + Данные);
 
		// пример разбора записи
		onCDR(Данные);
		// возвращаем xml структуру:
		Возврат ВернутьРезультатXDTO(Истина, 0);
 
	КонецФункции
 
	// Преобразование переданной строки из URLencoded версии
	// (необходимо декодировать данные)
	Функция URLDecode(стр)
		Хекс=Новый Массив;	
		Хекс.Добавить("0");
		Хекс.Добавить("1");       
		Хекс.Добавить("2");       
		Хекс.Добавить("3");
		Хекс.Добавить("4");
		Хекс.Добавить("5");
		Хекс.Добавить("6");
		Хекс.Добавить("7");
		Хекс.Добавить("8");
		Хекс.Добавить("9");
		Хекс.Добавить("A");
		Хекс.Добавить("B");
		Хекс.Добавить("C");
		Хекс.Добавить("D");
		Хекс.Добавить("E");
		Хекс.Добавить("F");
		рез="";
 
		ДлиннаСтроки = СтрДлина(стр);
		Для сч=1 по ДлиннаСтроки Цикл
			чар=Сред(стр,сч,1);
			Если чар = "%" И сч+2<=ДлиннаСтроки Тогда
				Сим1 = Сред(стр,сч+1,1);	
				Сим2 = Сред(стр,сч+2,1);
 
				Ном1 = Хекс.Найти(Сим1);
				Ном2 = Хекс.Найти(Сим2);
				Если Ном1 = Неопределено
					 ИЛИ Ном2 = Неопределено Тогда
					 рез = рез + чар;
					// тогда найденная комбинация не является спецсиволом
					Продолжить;
				КонецЕсли; 
 
				кс = 16 * Ном1 + Ном2;
				КорректныйСимвол = Символ(кс);
 
				рез = рез + КорректныйСимвол;
				// сдвинем счетчик на два символа
				сч = сч + 2;
			иначе
				рез = рез + чар;
			КонецЕсли; 
		КонецЦикла;
 
		Возврат рез;
 
	КонецФункции // ()
 
	// пример разбора зипаси CDR
	Процедура onCDR(Знач XMLУзел)
		//ПРИМЕР ОТВЕТА
		//<generic 
		//event='Cdr' 
		//privilege='cdr,all' 
		//sequencenumber='53045' 
		//file='cdr_manager.c' 
		//line='189' 
		//func='manager_log' 
		//accountcode='' 
		//source='263' 
		//destination='263' 
		//destinationcontext='from-internal' 
		//callerid='&quot;WORK Nikolay Beketov&quot; &lt;263&gt;' 
		//channel='SIP/263-0000013b' 
		//destinationchannel='SIP/263-0000013c' 
		//lastapplication='Dial' 
		//lastdata='SIP/263,,tr' 
		//starttime='2011-11-25 16:51:41' 
		//answertime='' 
		//endtime='2011-11-25 16:51:43' 
		//duration='2' 
		//billableseconds='0' 
		//disposition='NO ANSWER' 
		//amaflags='DOCUMENTATION' 
		//uniqueid='1322225501.545' 
		//userfield=''
		// />
		XMLУзел=ПолучитьЧтениеXML(XMLУзел);     
		Если XMLУзел=Неопределено Тогда
			Возврат;
		КонецЕсли; 
 
		privilege 	= XMLУзел.ПолучитьАтрибут("privilege");
		accountcode	= XMLУзел.ПолучитьАтрибут("accountcode");
		source		= XMLУзел.ПолучитьАтрибут("source");
		destination	= XMLУзел.ПолучитьАтрибут("destination");
 
	КонецПроцедуры
 
 
	// возвращаем значение в виде XDTO пакета
	Функция ВернутьРезультатXDTO(bool_result, error_code)
		СоставнойТип = ФабрикаXDTO.Тип("http://1C_MIKO_Asterisk.ru", "Compound");
		СоставнойXDTO = ФабрикаXDTO.Создать(СоставнойТип);
 
		СоставнойXDTO.error_code = error_code;
		СоставнойXDTO.bool_result = bool_result;   
 
		Возврат СоставнойXDTO;  // возврат XDTO знаяения
	КонецФункции // ВернутьСоставнойТип()
  • На вкладке «Прочее» сервиса необходимо указать пространство имен, ранее созданный XDTO пакет, имя файла публикации:

На этом конфигурирование web сервиса завершено.

Публикация web - сервиса

Предполагается, что имеется настроенный web сервер.

  • Главное меню «Администрирование» - «Публикация на web сервере»

  • Задаем имя публикации, тип сервера, что публикуем
  • Задаем имя сервиса, а также его адрес
  • После публикации сервиса в каталоге публикации будет сформирован файл default.vrd со следующим содержимым:
<?xml version=«1.0» encoding=«UTF-8»?> <point xmlns=«http://v8.1c.ru/8.2/virtual-resource-system»
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	base="/TestComponenta"
	ib="Srvr=&quot;fastwin7&quot;;Ref=&quot;TestComponenta&quot;;">
<ws>
	<point name="MIKO_Alam"
			alias="1C_MIKO_Asterisk.1cws"/>
</ws>

</point>

Теперь описание сервиса доступно по ссылке: http://...ip_server.../TestComponenta/ws/1C_MIKO_Asterisk.1cws?wsdl

doc/1cajam/serverwindows.1330508538.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)