К списку статей

Решение проблем с записью звонков

Работающая запись звонков выглядит так

  1. Если включена опция выгружать записи звонков на портал, то к делу (звонку) прикрепляется файла в mp3 формате. Image
  2. Если включена опция оставлять записи на сервере, то при открытии дела (звонка), в описании после слов “Длительность звонка” появляется плеер и ссылка “Скачать запись”. Image При клике на плеер проигрывает запись, при нажатии “Скачать запись” - сохраняется файл.

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

1. Включена ли запись в Астериск?

Проверьте включена ли запись разговоров для всех используемых контекстов в Астериск. Для FreePBX она включается одной настройкой. В других случаях можно воспользоваться несколькими командами.

2. Работает ли ссылка в браузере?

Копируем ссылку для скачивания записи и выполняем ее в браузере. Ссылка вида: http://ip:8077/get_conversation_recording?id=1542785260.1998&from=89222222222&to=101

Если получили запись, значит со ссылкой все хорошо, и запись не проигрывается из проблем с плеером в браузере на странице Битрикса. Рекомендуем попробовать проиграть в нескольких разных браузерах. Если ответ Not found - тестируем ссылку в консоли на сервере.

Если включен первый вариант, когда записи загружаются на Битрикс, то проверьте, установлен ли lame на сервер, который преобразует wav файлы Астерискка в mp3 файлы необходиые для Битрикса. Подробнее...

3. Работает ли ссылка на сервере?

Выполняем команду wget ‘ссылка’ в консоли сервера, где стоит модуль. Если запись получена - запрос корректный, в базе запись находится, значит проблема в сети - запрос из Битрикса не может достучаться до сервера. Например, закрыт порт 8077 на роутере… Если запись не получена, то двигаемся дальше.

4. Проверяем путь до записи на сервере Астериск

Стандартно записи хранятся в директории /var/spool/asterisk/monitor/2018/… Эта директория должна быть прописана в конфиге, Раздел Asterisk, Путь до файлов с записями разговоров "recordings_dir": /var/spool/asterisk/monitor/

А также корректно ли выбран параметр Файлы с записями хранятся в поддиректориях согласно дате разговора "recordings_dir_subdirs_by_date": true Если эти настройки корректны, то проверяем что в логе и базе данных. В Админке это выглядит так Image

5. Проверяем запрос и ответ в логе модуля

Если путь до файла указан верно, то смотрим в лог модуля /var/log/bx24asrerisk.log

При клике на ссылку “Скачать запись” в логе отмечается запрос в cdr для поиска пути до записи по параметрам звонка. Пример:

select `cdr`.`recordingfile`, `cdr`.`calldate` from `cdr` where `cdr`.`uniqueid` = '1540542254.2969' and (`cdr`.`src` like '%3512777720' or `cdr`.`dst` like '%3512777720' or `cdr`.`src` like '%912' or `cdr`.`dst` like '%912' or `cdr`.`src` in (112233, 123456) or `cdr`.`dst` in (112233, 123456)) and `cdr`.`recordingfile` <> '' and `cdr`.`recordingfile` is not null limit 1

И ответ базы данных данных на этот запрос: Result of record file path customization: [/var/spool/asterisk/monitor/…………..]

При невозможности выполнить запрос, будет указано “Could not find record by sql-query”. Если запрос корректный, но его содержание пустое, то в ответ будет Empty set.

6. Проверяем, что в CDR

Нужно взять эту команду и выполнить в консоли mysql либо в веб-версии админки модуля на странице логов (раздел MySQL).

Image

Далее постепенно убирать параметры в запросе, до того, пока не найдем, на каком аргументе ошибка.

Самый короткий запрос:

select * from `cdr` where `cdr`.`uniqueid` = '1540542254.2969' 

Должен вернуть строку в CDR по этому звонку.

Проверяем:

  1. Существует ли столбец “recordingfile”, куда пишется название файла записи? Если он называется по другому, то можно просто изменить его в админке Настройка / База данных / Имена столбцов. Если его нет, то нужно создать и настроить, чтобы в него писалось название файла записи.
  2. В этом столбце есть названия записей? Если названий нет, то либо запись разговоров не включена, либо при разговоре не заполняется данное поле. Это может исправить администратор телефонии.
  3. В поле ‘cnum’ есть номер звонящего? Если оно пустое, то вместо него можно использовать dst. Указать это в админке в разделе Настройка / База данных / Имена столбцов" Image