Это старая версия документа!
в версии компонента 1.0.15.5 присутствуют два важных свойства:
// Обработчик операции сервиса Функция 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='"WORK Nikolay Beketov" <263>' //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 знаяения КонецФункции // ВернутьСоставнойТип()
На этом конфигурирование web сервиса завершено.
Предполагается, что имеется настроенный web сервер.
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/TestComponenta" ib="Srvr="fastwin7";Ref="TestComponenta";"> <ws> <point name="MIKO_Alam" alias="1C_MIKO_Asterisk.1cws"/> </ws>
</point>
Теперь описание сервиса доступно по ссылке: http://...ip_server.../TestComponenta/ws/1C_MIKO_Asterisk.1cws?wsdl