— последний день акции - 20% на продукты МИКО и Askozia
Вы не авторизованы

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

Страницы: 1 2 След.
RSS
Получение истори напрямую из БД
 
Здесь описан способ чтения CDR напрямую
http://wiki.miko.ru/doc:panel1ccrm:asterisk_config:callhistory#istochnik_istorii_zvonkov_baza_dannyx_mysql

попробовали переменить это для Askozia, сходу разобраться не получилось, может есть какая-то информация как это сделать для Askozia.
 
Если вы используете 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, способом аналогичным описанному в вики подключится нельзя?
Нет ли с точки зрения безопасности "дыры" в этом скрипте и не стоит ли хотя бы добавить авторизацию в него?
 
Да, к sqlite нельзя нормально из 1С подключиться.

По поводу того дыра это или нет, можно по разному думать. Например, если не выставлять 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С он будет светиться, и любой сотрудник сможет его достать, это тоже не гуд.

Правильнее всего идти от задачи. Если понятно какую задачу собираемся решать, можно в итоге понять что и где надо защищать и от кого.


Вообще по правам доступа в панели не раскрыта тема, т.к. она очень индивидуальна, хотя конечно и важная.
 
Частично убедили VPN буду ставить, кстати поделитесь что у вас используется? Я вот склоняюсь к вот этому  http://www.tp-link.com/kz/products/details/?model=TL-ER6120

Внутри сети, если компания небольшая, историю звонков можно сильно не закрывать, хотя если это несложно я бы закрыл :)

Цитата
Николай Бекетов пишет:
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 для редактирования файлов.


p.s. Если сделаете что-то полезное, дайте нам :)
 
Цитата
Николай Бекетов пишет:
Если вы используете 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- тип ??? и  остальные Ресурсы.  Регламентное добавил все отрабатывает    
 
Цитата
DaNcEr пишет:
http://HOST:56080/1c/cdr.php?limit=XXX&offset=YYY
Это HTTP запрос. Точнее его шаблон. Его следует использовать для получения записей CDR с АТС.
Цитата
DaNcEr пишет:
какой тип данных имеют пареметры из Регистров Сведений МИКО_ИсторияЗвонков
Выбор типа зависит от решаемой задачи.
acctld - скорее всего верно выбрать числовой тип.
Ресурсы - следует выбрать тип либо строка, либо дата. Опять же - все зависит от задачи.
 
Алексей Простите за тупизм Куда  именно его засунуть я про http запрос
или вот он в коде " АдресСервера="/1c/cdr.php?limit=50&offset="+Формат(ПоследнийПолученныйПакет,"ЧГ="); "
Изменено: Марунич Сергей - 27.05.2013 08:55:55
 
Начните с изучения того, что такое HTTP. Без понимания базовых принципов Вы не сможете реализовать данную доработку.
После этого используйте стандартные объекты 1С для работы с HTTP соединением.

Пошаговой инструкции нет и не ожидается.
Скорее всего выпустим как дополнительный платный модуль по работе с отчетами. Модуль естественно будет идти вместе с пакетом документации.
 
Теперь понял что имеете в виду:
Код
АдресСервера="/1c/cdr.php?limit=50&offset="+Формат(ПоследнийПолученныйПакет,"ЧГ="); 
HTTPСоединение("HOST",56080,,,); // вместо HOST укажите адрес сервера АТС
 
Так и сделано,  но  при открытии регистра МИКО_ИсторияЗвонков выскакивает сообщение "Синтаксическая Ошибка"  с текстом "Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Ошибка генерации макета
по причине:
Ошибка при получении информации о поле "end"
по причине:
Ошибка в выражении "end"
по причине:
Синтаксическая ошибка"
Может я не туда ломлюсь вообще ?  вообщем я тупца ))))

P.S Регламентное отрабатывает
Изменено: Марунич Сергей - 28.05.2013 00:44:07
 
Не похожи эти сообщения на открытие формы регистра сведений.
Судя по всему это СКД отчета формирует эти сообщения об ошибке.
Страницы: 1 2 След.
Читают тему