Если вы используете Askozia нашей последней редакции, 2.1.6v4, то там есть такая возможность.
Добавлен скрипт по адресу http://HOST:56080/1c/cdr.php?limit=XXX&offset=YYY для передачи пакетами истории звонков в 1С, где ХХХ - количество пакетов (должно быть меньше 500), а YYY смещение выборки
А в 1С запускаем регламентное задание с следующим кодом и инетрвалом 5 минут.
Код
Процедура ЗагрузитьПоследнииЗаписиИсторииЗвонковСАстериск() Экспорт
ВремФайл=ПолучитьИмяВременногоФайла("txt");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| МИКО_ИсторияЗвонков.AcctId КАК AcctId
|ИЗ
| РегистрСведений.МИКО_ИсторияЗвонков КАК МИКО_ИсторияЗвонков
|ГДЕ
| МИКО_ИсторияЗвонков.AcctId > 0
|
|УПОРЯДОЧИТЬ ПО
| AcctId УБЫВ";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
ПоследнийПолученныйПакет = Выборка.AcctId;
Иначе
ПоследнийПолученныйПакет = 1;
КонецЕсли;
АдресСервера="/1c/cdr.php?limit=50&offset="+Формат(ПоследнийПолученныйПакет,"ЧГ=");
Попытка
HTTP = Новый HTTPСоединение("192.168.0.100",56080,,,);
HTTP.Получить(АдресСервера,ВремФайл);
ТекстИстории = Новый ТекстовыйДокумент;
ТекстИстории.Прочитать(ВремФайл);
СтрокаРегистраИсторииЗвонков = Неопределено;
Для к=0 по ТекстИстории.КоличествоСтрок() Цикл
СтрокаДляРазбора=СокрЛП(ТекстИстории.ПолучитьСтроку(к));
ПозицияРазделителя = Найти(СтрокаДляРазбора,"=");
ДлинаСтроки = СтрДлина(СтрокаДляРазбора);
Если ПозицияРазделителя<>0 Тогда
Параметр=СокрЛП(Лев(СтрокаДляРазбора,ПозицияРазделителя-1));
Значение=СокрЛП(Прав(СтрокаДляРазбора,ДлинаСтроки-ПозицияРазделителя-1));
Если Параметр="AcctId" Тогда
Если СтрокаРегистраИсторииЗвонков<>Неопределено Тогда
СтрокаРегистраИсторииЗвонков.Записать();
КонецЕсли;
СтрокаРегистраИсторииЗвонков=РегистрыСведений.МИКО_ИсторияЗвонков.СоздатьМенеджерЗаписи()
ИначеЕсли Параметр="calldate" ИЛИ Параметр="end" Тогда
Значение=СтрЗаменить(СтрЗаменить(СтрЗаменить(Значение,"-",""),":","")," ","");
КонецЕсли;
СтрокаРегистраИсторииЗвонков[Параметр]=Значение;
КонецЕсли;
КонецЦикла;
Исключение
ЗаписьЖурналаРегистрации("МИКО.ЗагрузкаИсторииЗвонков", УровеньЖурналаРегистрации.Ошибка, , , ИнформацияОбОшибке());
КонецПопытки;
КонецПроцедуры // ЗагрузитьПоследнииЗаписиИсторииЗвонковСАстериск()
Правильно ли я понял, что так сделано потому, что к sqlite, способом аналогичным описанному в вики подключится нельзя? Нет ли с точки зрения безопасности "дыры" в этом скрипте и не стоит ли хотя бы добавить авторизацию в него?
По поводу того дыра это или нет, можно по разному думать. Например, если не выставлять Askozia без прикрытия firewall в интернет, то проблемы с используемым портом внутри сети быть не должно.
Сначала надо понять какой угрозы мы боимся :)
Полученные данные мы используем для двух новых фич которые еще не доступны пользователям.
1. Отображение истории звонков в карточке контрагента с возможностью прослушать, скачать. 2. Использование модуля аналитической отчетности на Системе Компоновки Данных.
Хочется подключаться по SIP из вне и при этом иметь доступ и к истории но при этом не хочется, что бы любой зная ip и какая АТС стоит мог получить доступ к истории, да можно поставить VPN-сервер и подключатся через него(наверно так и сделаю), но почему не сделать простую авторизацию в этом и других скриптах?
Если хочется подключаться к SIP из вне, то лучше всего использовать VPN. Все другие способы несут достаточно большие риски. Все мои попытки выставления Asterisk в сеть, всегда заканчивались тем, что через некоторое время начинаются атаки с подбором паролей из пакистана, ирана, китая...
VPN есть во всех ноутах, смартфонах, потому настроить и работать через него не проблема.
С другой стороны, для работы SIP клиента, нужны порты UDP 5060-5069 для команд и UDP 10000-20000 для передачи голоса. Порт 56080 и 80 не нужно публиковать в INET. А если ты хочешь и 1С использовать удаленно то возникает столько проблем, что проще VPN.
Askozia - закрытый продукт и сделать там что-то дополнительное не так просто. Можно перенести скрипты в папку доступную под админским паролем, но тогда внтури 1С он будет светиться, и любой сотрудник сможет его достать, это тоже не гуд.
Правильнее всего идти от задачи. Если понятно какую задачу собираемся решать, можно в итоге понять что и где надо защищать и от кого.
Вообще по правам доступа в панели не раскрыта тема, т.к. она очень индивидуальна, хотя конечно и важная.
Внутри сети, если компания небольшая, историю звонков можно сильно не закрывать, хотя если это несложно я бы закрыл :)
Цитата
Николай Бекетов пишет: Askozia - закрытый продукт и сделать там что-то дополнительное не так просто. Можно перенести скрипты в папку доступную под админским паролем, но тогда внтури 1С он будет светиться, и любой сотрудник сможет его достать, это тоже не гуд.
Если есть желание попробовать добавить свои скрипты, как это можно сделать, через WinSCP у меня не получилось?
1. У меня VPN сделан на базе "Microsoft Forefront Threat Management Gateway", а чуть ранее я вполне использовал прородителя Askozia - проект monowall. Там похожий интерфейс и неплохо работает с микро-потреблением ресурсов.
2.
Если есть желание попробовать добавить свои скрипты....
Нужно еще приложение putty, чтобы попасть в шел Askozia.
Разрешаем запись в раздел с скриптами www:
Код
mount -o remount,rw /offload
Запрещаем запись в раздел с скриптами www:
Код
mount -o remount,ro /offload
Соответственно разрешаем, городим огород, копируем меняем удаляем, и потом запрещаем запись. После того как запись разрешиили из pytty можно пользоваться winscp для редактирования файлов.
Николай Бекетов пишет: Если вы используете Askozia нашей последней редакции, 2.1.6v4, то там есть такая возможность.
Добавлен скрипт по адресу http://HOST:56080/1c/cdr.php?limit=XXX&offset=YYY для передачи пакетами истории звонков в 1С, где ХХХ - количество пакетов (должно быть меньше 500), а YYY смещение выборки
Подскажите Не понял что значит " Добавлен скрипт по адресу http://HOST:56080/1c/cdr.php?limit=XXX&offset=YYY для передачи пакетами..." и что с ним сделать. Также не могу понять какой тип данных имеют пареметры из Регистров Сведений МИКО_ИсторияЗвонков а именно Измерения acctld- тип ??? и остальные Ресурсы. Регламентное добавил все отрабатывает
Это HTTP запрос. Точнее его шаблон. Его следует использовать для получения записей CDR с АТС.
Цитата
DaNcEr пишет: какой тип данных имеют пареметры из Регистров Сведений МИКО_ИсторияЗвонков
Выбор типа зависит от решаемой задачи. acctld - скорее всего верно выбрать числовой тип. Ресурсы - следует выбрать тип либо строка, либо дата. Опять же - все зависит от задачи.
Алексей Простите за тупизм Куда именно его засунуть я про http запрос или вот он в коде " АдресСервера="/1c/cdr.php?limit=50&offset="+Формат(ПоследнийПолученныйПакет,"ЧГ="); "
Начните с изучения того, что такое HTTP. Без понимания базовых принципов Вы не сможете реализовать данную доработку. После этого используйте стандартные объекты 1С для работы с HTTP соединением.
Пошаговой инструкции нет и не ожидается. Скорее всего выпустим как дополнительный платный модуль по работе с отчетами. Модуль естественно будет идти вместе с пакетом документации.
АдресСервера="/1c/cdr.php?limit=50&offset="+Формат(ПоследнийПолученныйПакет,"ЧГ=");
HTTPСоединение("HOST",56080,,,); // вместо HOST укажите адрес сервера АТС
Так и сделано, но при открытии регистра МИКО_ИсторияЗвонков выскакивает сообщение "Синтаксическая Ошибка" с текстом "Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: Ошибка генерации макета по причине: Ошибка при получении информации о поле "end" по причине: Ошибка в выражении "end" по причине: Синтаксическая ошибка" Может я не туда ломлюсь вообще ? вообщем я тупца ))))