Вы не авторизованы

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

RSS
Функция Слушать звонок
 
Добрый день.
1С:Предприятие 8.3 (8.3.5.1517)
Панель телефонии 1.2.23.6
Asterisk 11.20 на Centos7

Функция Слушать звонок иногда отрабатывает некорректно,  у некоторых звонков не находит файл, хотя файл есть.
На Centos по умолчанию база данных mysql - mariadb.
В её консоли повторяю запрос, который выполняется в скрипте 1C_Playback.php:
Код
SEL ECT recordingfile FR OM `cdrdbpt`.`PT1C_cdr` WHERE `linkedid` LIKE '1453177085%' LIMIT 1;
ответ:

Код
+--------------------------+
| recordingfile            |
+--------------------------+
|                          |
+--------------------------+ 
ответ, если убрать LIMIT 1:
Код
+--------------------------+
| recordingfile            |
+--------------------------+
|                          |
| 1453177085.52764.wav.mp3 |
+--------------------------+
первая строка пустая.

Как скорректировать запрос в скрипте чтобы убрать пустую строку?
 
Попробуйте использовать оператор "GROUP BY", пример:
Код
SELECT MAX(recordingfile) FROM `cdrdbpt`.`PT1C_cdr` WHERE `linkedid` LIKE '1453177085%' GROUP BY recordingfile;
 
неа, проверил на другом звонке
Код
MariaDB [(none)]> SEL ECT recordingfile FR OM `cdrdbpt`.`PT1C_cdr` WHERE `linkedid` LIKE '1453178497%' GROUP BY `recordingfile`;
 +--------------------------+
| recordingfile            |
+--------------------------+
|                          |
| 1453178497.53040.wav.mp3 |
| 1453178497.53042.wav.mp3 |
+--------------------------+
Изменено: Юрий Дудин - 19.01.2016 15:25:47
 
Цитата
Портнов Алексей написал:
SELECT MAX(recordingfile)
Почитайте документацию по запросам MySQL.
Добавьте условие:
Код
WHERE linkedid LIKE '1453177085%' AND recording file  <> ''
 
Решил посмотреть, что выдается по запросу
Код
SEL ECT * FR OM `cdrdbpt`.`PT1C_cdr` WHERE `linkedid` LIKE '1453178497%';
выдает три строки и первой стоит звонок с disposition NO ANSWER и в recordingfile пусто. Остальные две строки ANSWERED и recordingfile заполнен. Поэтому в ответе первая пустая строка. Правильно ли будет добавить условие group by disposition?
проверил, в этом случае отвеченный звонок в первой строке.
Изменено: Юрий Дудин - 19.01.2016 16:25:12
 
Правильный вариант работы - настроить запись разговора в один файл и для каждой CDR записи заполнить поле "recordingfile".
 
Более сложный вариант - повторить реализацию FreePBX плагина. Пример скриптов во вложении.
В FreePBX и Askozia мы реализовали возврат нескольких имен файлов записи разговора.

Для "чистого" asterisk пока такой пример не реализован.  
 
А возможно, чтобы функция GetVarChannnel($agi, "uniqueid1c") возвращала полностью uniqueid?
Сейчас там только первая часть до точки.
Например полный uniqueid 1453264334.59217, а uniqueid1c содержит только 1453264334. Точность поиска в mysql повысится.
 
Это значение передается из 1С (обработка панели телефонии), нужна доработка. найдите в 1С, в модуле объекта строчку 10000777 - найдете процедуру, вызывающую соответствующий exten.  
 
Будем посмотреть.
А пока добавил условие в запрос GROUP BY (recordingfile ='')
Читают тему (гостей: 1)