Страница 2 из 4
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 15:43
				 ded
				filename не отправляется в CDR, потому что CDR имеет точный формат ячеек в каждой записи, а не "отправляю что хочу". Для последнего есть пустое поле - userfield, вот туда и можете отправлять имя файла. Чтобы увидеть какие поля в Asterisk CDR - подключитесь к базе 
mysql> use asteriskcdrdb;
mysql> show columns in cdr;
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 16:29
				 fecyt
				А вы попробуйте сделать таким образом. Просто запишите в поле filename значение существующего файла.
Даст база записать? Если даст, появится он в вебке?
/var/www/html/inc/functions.php                                                                                                                                                                                   5613/15858              35%
        # Получение имени файла и пути
        if ( $mycalldate_ymd < $mydate && Config::get('system.storage_format') === 1 ) {
                $rec['filename'] = "$mycalldate_y/$mycalldate_ym/$mycalldate_ymd/$recorded_file";
        } else if ( $mycalldate_ymd < $mydate && Config::get('system.storage_format') === 2 ) {
                $rec['filename'] = "$mycalldate_y/$mycalldate_m/$mycalldate_d/$recorded_file";
        } else if ( Config::get('system.storage_format') === 3 ) {
                $rec['filename'] = "$mycalldate_y/$mycalldate_ym/$mycalldate_ymd/$recorded_file";
        } else if ( Config::get('system.storage_format') === 4 ) {
                $rec['filename'] = "$mycalldate_y/$mycalldate_m/$mycalldate_d/$recorded_file";
        } else {
                $rec['filename'] = $recorded_file;
        }
        $rec['path'] = Config::get('system.monitor_dir').'/'.$rec['filename'];
Значит вот сама функция. Вот и думайте, попадают Ваши файлы под данный формат или нет.
Сразу скажу, system.storage_format определяется в config.php.
И еще у меня например выглядит следующим образом запись в БД
cdr_pkey    | 48
calldate    | 2017-09-25 14:38:03+03
clid        | "102" <102>
src         | 102
dst         | 200
dcontext    | test2
channel     | SIP/102-00000000
dstchannel  |
lastapp     | Playback
lastdata    | tt-monkeys
duration    | 2
billsec     | 2
disposition | ANSWERED
amaflags    | 3
accountcode |
uniqueid    | 1506350283.0
userfield   |
В настройках я беру имя файла из uniqueid. Поэтому привязался к нему. Сам я не юзал поле filename.
 
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 16:48
				 Elektronik
				ded писал(а):filename не отправляется в CDR, потому что CDR имеет точный формат ячеек в каждой записи, а не "отправляю что хочу". Для последнего есть пустое поле - userfield, вот туда и можете отправлять имя файла. Чтобы увидеть какие поля в Asterisk CDR - подключитесь к базе 
mysql> use asteriskcdrdb;
mysql> show columns in cdr;
Добрый день!
mysql> show columns in cdr;
+-------------+--------------+------+-----+---------------------+----------------+
| Field       | Type         | Null | Key | Default             | Extra          |
+-------------+--------------+------+-----+---------------------+----------------+
| id          | int(10)      | NO   | PRI | NULL                | auto_increment |
| calldate    | datetime     | NO   | MUL | 0000-00-00 00:00:00 |                |
| clid        | varchar(80)  | NO   | MUL |                     |                |
| src         | varchar(80)  | NO   | MUL |                     |                |
| dst         | varchar(80)  | NO   | MUL |                     |                |
| realdst     | varchar(80)  | NO   |     |                     |                |
| dcontext    | varchar(80)  | NO   | MUL |                     |                |
| channel     | varchar(80)  | NO   |     |                     |                |
| dstchannel  | varchar(80)  | NO   |     |                     |                |
| lastapp     | varchar(80)  | NO   |     |                     |                |
| lastdata    | varchar(80)  | NO   |     |                     |                |
| duration    | int(11)      | NO   |     | 0                   |                |
| billsec     | int(11)      | NO   |     | 0                   |                |
| disposition | varchar(45)  | NO   |     |                     |                |
| amaflags    | int(11)      | NO   |     | 0                   |                |
| remoteip    | varchar(60)  | NO   |     |                     |                |
| accountcode | varchar(20)  | NO   | MUL |                     |                |
| peeraccount | varchar(20)  | NO   |     |                     |                |
| uniqueid    | varchar(32)  | NO   | MUL |                     |                |
| userfield   | varchar(255) | NO   |     |                     |                |
| did         | varchar(50)  | NO   | MUL |                     |                |
| linkedid    | varchar(32)  | NO   |     |                     |                |
| sequence    | int(11)      | NO   |     | 0                   |                |
| filename    | varchar(255) | YES  |     | none                |                |
+-------------+--------------+------+-----+---------------------+----------------+
В базе есть filename, в Asterisk CDR Viewer Mod везде настроено именно с этим полем взаимодействовать.
Можно конечно везде переписать на другое поле...
Я нашел решение, вроде начало писаться но что то тут не так, надо разобраться еще. 
решение:
используйте cdr_adaptive_odbc
модуль cdr_odbc НЕ пишет кастомные поля CDR
в cdr_adaptive_odbc.conf добавил
[first]
connection=asteriskcdrdb
table=cdr
alias filename=>filename
и имя файла стало заноситься в таблицу, но коряво, дублируется строка, надо разобраться теперь почему.
+---------------------------------------------------+
| filename                                          |
+---------------------------------------------------+
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| none                                              |
| 1508850639.0-2017-10-24-16_10-4957755888-6388.mp3 |
| none                                              |
| 1508850702.2-2017-10-24-16_11-4957755888-6388.mp3 |
| none                                              |
| 1508851657.5-2017-10-24-16_27-4957755888-6388.mp3 |
| none                                              |
| 1508851945.8-2017-10-24-16_32-9151276136-6388.mp3 |
| none                                              |
+---------------------------------------------------+
25 rows in set (0,00 sec)
Ниже картинка того, что получается (скрин чтоб наглядней).
Получается дублируется то, что взято из adaptive CDR и еще строкой пишется как обычно пишется. Где что я опять не так сделал...
а в статистике файлы все так же не видит и странно, в статистике не задваиваются результаты.
 
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 16:50
				 fecyt
				exten => s,n,Set(CDR(filename)=${fname}.mp3);
Вероятно проблема в этом. Попробуйте убрать mp3, т.е. оставить (CDR(filename)=${fname}). Отобразятся записи?
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 16:52
				 Elektronik
				уже все отображается, но с кастыликом, из которого вылезла новая проблема. хотя я читал, что в columns достаточно добавить поле, чтоб оно заиграло в CDR. короче ковыряю дальше, на выходе что надо так и не получается.
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 16:56
				 fecyt
				Отображаются в смысле везде и в вебке? С вариантом в CDR(filename)=${fname} работает?
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 17:01
				 fecyt
				Да вот проверил, если запись в БД будет filename.wav, файла в вебке не будет отображаться. А у  Вас следовательно filename.mp3
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 17:17
				 Elektronik
				exten => s,n(mp3),Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
exten => s,n,Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${fname}.mp3" && rm -f "${DIR_RECORDS}${fname}.wav" && chmod o+r "${DIR_RECORDS}${fname}.mp3");
exten => s,n,Set(CDR(filename)=${fname}.mp3);
> s,n,Set(CDR(filename)=${fname}.mp3);
если убрать mp3, в таблицу будет записывать без mp3? просто имя файла, а без mp3 он не должен его искать, а тем более при выводе в веб-интерфейсе проигрывать. я на пару постов выше написал, как решил проблему и что из этого получилось. в таблицу теперь попадает имя файла, но это получается как параллельная запись, а при core reload я увидел, что он создает для adaptive CDR новые поля
-- Found adaptive CDR table cdr@asteriskcdrdb.
       > Found id column with type 4 with len 10, octetlen 10, and numlen (0,10)
       > Found calldate column with type 93 with len 19, octetlen 19, and numlen                                                                                                                                                              (0,10)
       > Found clid column with type -9 with len 80, octetlen 240, and numlen (0                                                                                                                                                             ,0)
       > Found src column with type -9 with len 80, octetlen 240, and numlen (0,                                                                                                                                                             0)
       > Found dst column with type -9 with len 80, octetlen 240, and numlen (0,                                                                                                                                                             0)
       > Found realdst column with type -9 with len 80, octetlen 240, and numlen                                                                                                                                                              (0,0)
       > Found dcontext column with type -9 with len 80, octetlen 240, and numle                                                                                                                                                             n (0,0)
       > Found channel column with type -9 with len 80, octetlen 240, and numlen                                                                                                                                                              (0,0)
       > Found dstchannel column with type -9 with len 80, octetlen 240, and num                                                                                                                                                             len (0,0)
       > Found lastapp column with type -9 with len 80, octetlen 240, and numlen                                                                                                                                                              (0,0)
       > Found lastdata column with type -9 with len 80, octetlen 240, and numle                                                                                                                                                             n (0,0)
       > Found duration column with type 4 with len 10, octetlen 10, and numlen                                                                                                                                                              (0,10)
       > Found billsec column with type 4 with len 10, octetlen 10, and numlen (                                                                                                                                                             0,10)
       > Found disposition column with type -9 with len 45, octetlen 135, and nu                                                                                                                                                             mlen (0,0)
       > Found amaflags column with type 4 with len 10, octetlen 10, and numlen                                                                                                                                                              (0,10)
       > Found remoteip column with type -9 with len 60, octetlen 180, and numle                                                                                                                                                             n (0,0)
       > Found accountcode column with type -9 with len 20, octetlen 60, and num                                                                                                                                                             len (0,0)
       > Found peeraccount column with type -9 with len 20, octetlen 60, and num                                                                                                                                                             len (0,0)
       > Found uniqueid column with type -9 with len 32, octetlen 96, and numlen                                                                                                                                                              (0,0)
       > Found userfield column with type -9 with len 255, octetlen 765, and num                                                                                                                                                             len (0,0)
       > Found did column with type -9 with len 50, octetlen 150, and numlen (0,                                                                                                                                                             0)
       > Found linkedid column with type -9 with len 32, octetlen 96, and numlen                                                                                                                                                              (0,0)
       > Found sequence column with type 4 with len 10, octetlen 10, and numlen                                                                                                                                                              (0,10)
    -- Found alias filename for column filename in cdr@asteriskcdrdb
       > Found filename column with type -9 with len 255, octetlen 765, and numlen (0,0)
 
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 17:20
				 fecyt
				В смысле не должен искать? Почему у меня тогда работает? А не думаете, что ставя .mp3 вы говорите искать файл ${filename}.mp3.mp3 в итоге? Типа имя файла.mp3+расширение
			 
			
					
				Re: Asterisk CDR Viewer Mod, в mysql не попадает filename
				Добавлено: 24 окт 2017, 17:31
				 Elektronik
				в диалплане у нас этап создания файла? указанные строки макроса присваивают имя файлу и имя в таблице. они индеентичны, если посмотреть на скрин таблицы. посмотрел последний созданный файл 1508843143.25-2017-10-24-14_05-9151276136-6388.mp3, имя файла в поле filename 1508851945.8-2017-10-24-16_32-9151276136-6388.mp3, как видим, тут все ок. если у файла не будет расширения, он и проигрываться не будет, а будет только возможность скачать файл без расширения. суть то не в том.
посмотрите внимательно, из чего формируется имя файла:
exten => s,n(mp3),Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
exten => s,n,Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${fname}.mp3" && rm -f "${DIR_RECORDS}${fname}.wav" && chmod o+r "${DIR_RECORDS}${fname}.mp3");
exten => s,n,Set(CDR(filename)=${fname}.mp3);
задать fname=UNIQUEID+STRFTIME(${EPOCH},,время и дата)+звонящий+принимающий вызов.
там нет расширений, по дефолту пишется wav, потом lame перекодирует его в mp3 и записывает с именем fname.mp3 и в таблицу и на диск. никаких задвоений расширения тут нет и быть не должно. сами же сказали, что убрали у себя wav и все сломалось...
в то же время если у файла будет двойное расширение, он нормально будет проигрываться 
