Сергей Маликов
04.08.2020
2938

Решение проблем с отображением записей в сторонних сервисах

При воспроизведении записей разговоров в сторонних сервисах (например CRM системах) возможно возникновение проблем. Записи могут запрашиваться по http (https) или подгружаться с файлового сервера (samba). Ошибки при подтягивании и воспроизведения записей разговоров с сервера Asterisk в другие сервисы могут быть вызваны из-за: Несоответствия запрашиваемого адреса и/или протокола адресу/протоколу по которому записи доступны Недостатка прав на […]

Отображение записей в сторонних сервисах

При воспроизведении записей разговоров в сторонних сервисах (например CRM системах) возможно возникновение проблем. Записи могут запрашиваться по http (https) или подгружаться с файлового сервера (samba). Ошибки при подтягивании и воспроизведения записей разговоров с сервера Asterisk в другие сервисы могут быть вызваны из-за:

  • Несоответствия запрашиваемого адреса и/или протокола адресу/протоколу по которому записи доступны
  • Недостатка прав на чтение у соответствующих файлов на сервере
  • Несоответствия запрашиваемого формата записей имеющемуся на сервере
  • Истекшим сроком полученного сертификата (если записи запрашиваются по https)
  • Восприятия браузером сертификата как недоверенного (если записи запрашиваются по https, при использовании самоподписанного сертификата)
  • Несоответствия отслеживаемого каким-либо сервисом приложения, обеспечивающего запись, и используемого для записи разговоров на сервере в текущий момент (MixMonitor, Monitor)
  • Недоступности того ресурса, куда ранее записи были перенесены
  • Отсутствия записей вследствие соответствующего значения ранее установленного параметра, обеспечивающего запись разговора, при прохождении по данному маршруту

И, также, отсутствия записей в связи с истекшим сроком их хранения, после которого они, например, были удалены скриптом, запускаемого планировщиком.

Несоответствие запрашиваемого адреса/протокола

Создаем в /var/www/html/ символьную ссылку на директорию с записями (по умолчанию напр. /var/spool/asterisk/monitor)

ln -s /var/spool/asterisk/monitor /var/www/html/

При получении записей по http в конфигурационном файле /etc/httpd/conf/httpd.conf

необходимо добавить директивы:

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html/monitor
<Directory /var/www/html/monitor>
Options +Indexes +FollowSymLinks -SymLinksIfOwnerMatch
AllowOverride All
        Order allow,deny
                Allow from all
</Directory>
</VirtualHost>

При получении записей https  — директиву Directory добавляем в конфигурационный файл /etc/httpd/conf.d/ssl.conf.

Для применения изменений необходимо перезапустить Apache

service httpd restart

При получении записей с файлового сервера (samba) необходимо настроить samba сервер – подробнее в статье «Samba и удалённый доступ к файлам (Centos 6.5)».

Недостатка прав на чтение у записей и директорий

Для подтягивания записей разговоров у файлов должны быть установлены права на чтение. Для изменений прав и владельца существуют команды chmod и chown, для просмотра –   ls -l .

chmod +r /путь/к/файлу   установить права на чтение

chown asterisk:asterisk /путь/к/файлу     сменить владельца файла на пользователя asterisk

tree /var/spool/asterisk/monitor/   просмотр содержимого в виде дерева

ls -l /var/spool/asterisk/monitor/2020/07/09 /   просмотр содержимого и установленных прав

Просмотр содержимого, просмотр/изменение прав

Во FreePBX также установить владельца всех файлов и директорий, необходимых для корректной работы, командами

аmportal chown   (в старых версиях FreePBX)

В новых версиях

fwconsole chown

Установка владельца директорий во FreePBX

Несоответствие запрашиваемого формата записей имеющемуся на сервере

Разговоры записываются обычно в формате wav и, далее, в период наименьшей нагрузки (ночью) конвертируются в mp3. При этом часть записей хранится в формате wav, часть записей – в формате mp3 из-за чего могут возникнуть проблемы с подтягиванием записей разговоров в различные сервисы.

Записи разговоров можно также конвертировать в mp3 сразу — подробнее см. в статье «Скрипт конвертации записей в mp3 на лету».

Для переадресации записей в нужный формат при их получении по http(htts) необходимо добавить в конфигурационный файл Apache(там где определена директива с хранящимися записями — <Directory /var/www/html/monitor>) следующие директивы:

RewriteEngine On
#Если нет записи в wav редирект на mp3
#Если запрос оканчивается на .wav
RewriteCond %{REQUEST_FILENAME} \.wav$ [NC]
#если не файл
RewriteCond %{REQUEST_FILENAME} !-f
#если не директория
RewriteCond %{REQUEST_FILENAME} !-d
#Редирект на .mp3
RewriteRule ^(.*)\.wav$ $1.mp3 [R=301,L]

#Если нет записи в wav редирект на mp3:
#Если запрос оканчивается на .mp3
RewriteCond %{REQUEST_FILENAME} \.mp3$ [NC]
#если не файл
RewriteCond %{REQUEST_FILENAME} !-f
#если не директория
RewriteCond %{REQUEST_FILENAME} !-d
#Редирект на .wav
RewriteRule ^(.*)\.mp3$ $1.wav [R=301,L]

Также, убедитесь, что в конфигурационном файле /etc/httpd/conf/httpd.conf присутствует директива, обеспечивающая загрузку модуля — mod_rewrite.so

Добавление загрузки модуля mod_rewrite

Для применения изменений необходимо перезапустить Apache

service httpd restart

После этого, если каким-либо сервисом по http(https) была запрошена существующая запись, но не в том формате, произойдет переадресация на существующую запись.

Переадресация на корректный формат, имеющийся на атс

Истекшим сроком полученного сертификата

В случае получения записей по HTTPS, после истечения срока действия (обычно – несколько лет), например, браузер Google Chrome, будет выдавать предупреждение NET::ERR_CERT_DATE_INVALID и не откроет страницу с записью. Сгенерировать новый сертификат можно командой:

openssl req -new -x509 -days 1825 -sha256 -newkey rsa:1024 \
-nodes -keyform PEM -keyout private_key1.pem -outform PEM \
-out new_cert.pem -subj '/O=Organization/CN=pbx.organization.ru'

days — срок действия сертификата (1825 — 5лет)

O — название организации

CN — домен

Посмотреть информацию о сертификате можно выгрузив его, например, утилитой WinSCP, далее в Windows при двойном клике на сертификат откроется окно с информацией о нем:

Просмотр информации о сертификате

Восприятие браузером сертификата как недоверенного

При использовании самоподписанных сертификатов браузеры могут их воспринимать как недоверенные.

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

В браузере Google Chrome для добавления сертификата в доверенные необходимо перейти

Меню->Настройки->Конфиденциальность и безопасность->Безопасность->Настроить сертификаты

Google Chrome — поиск по настройкам

Можно также использовать поиск по настройкам т.к. в различных версиях браузера местоположение может различаться.

Доверенные сертификаты

Далее нажать «Импорт», в открывшемся окне выбрать сертификат и поместить его в хранилище.

Добавление сертификата в доверенные

Несоответствие отслеживаемого каким-либо сервисом приложения, обеспечивающего запись, и используемого в текущий момент

Для записи разговоров может использоваться приложение MixMonitor либо Monitor. Если какой-либо скрипт, например, коннектор «Простые звонки» отслеживает запуск приложения MixMonitor, а для записи разговоров на сервере используется другое приложение, то необходимо изменить использующееся для записи звонков приложение.  В Астериск – изменить используемое приложение в конфигурационных файлах. Во FreePBX можно скопировать соответствующий участок диалплана и переписать его в extensions_override_freepbx.conf, заменив используемое приложени, либо добавить соответствующий переключатель на вкладку Advanced Settings(Расширенные настройки) см. подробнее в статье “Упрощение перевода записей в режим стерео в FreePBX”.

Недоступность того ресурса, куда ранее записи были перенесены

В случае, если записи ранее были перенесены на какой-либо другой ресурс, который сейчас недоступен, они также не будут подтягиваться и отображаться в сторонних сервисах. Если записи разговоров были вынесены, например, на отдельный ресурс (диск, drbd ресурс, raid массив), необходимо, помимо всего прочего, проверить доступен ли он и примонтирован ли на данном сервере, например, командой

lsblk

Отсутствие записей вследствие соответствующего значения ранее установленного параметра, обеспечивающего запись разговора

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

Существует несколько возможных значений опций записи разговоров:

Force(записывать, принудительно)

Yes(да)

Don’t Care(в зависимости от установленных значений записи в других модулях разговор будет записан или не записан, т.е. это значение не изменяет каких-либо значений)

No(нет)

Never(никогда).

Force, Never могут перезаписывать значения, установленные в других модулях.

Yes, Don’t Care, No – могут быть перезаписаны другими опциями.

Для гарантированного включения записи разговоров при прохождении вызова, например, по маршруту входящий маршрут->очередь->добавочный номер или добавочный номер->исходящий маршрут опция записи разговора должна быть установлена в Force (запись принудительно), например у добавочного (в веб-интерфейсе FreePBX находится Applications(Приложения)->Extensions(Добавочные) вкладка Advanced(Дополнительно), раздел Recording options(Запись разговоров) ).

Расширения параметров записи

Про изменение значения параметров по умолчанию, обеспечивающих запись разговоров см. подробнее в статье «Доработка FreePBX. Включение записей разговоров по умолчанию на внутренних номерах».

Отсутствие записей в связи с истекшим сроком их хранения

Вследствие ограниченного объема хранилищ, записи разговоров периодически удаляются, поэтому, если истек их срок хранения, записи на сервере не будет. Например, записи старше 60 дней в crontab могут удаляться заданием вида (с учетом следования по символьным ссылкам):

0 * * * *  /usr/bin/find -L /var/spool/asterisk/monitor/ -mtime +60 -exec rm -rf {} \;

Для, того, чтобы записи хранились достаточно продолжительное время их можно вынести на сторонний ресурс, имеющий значительно больший объем. Сконвертированные в mp3 записи будут примерно занимать:

1Мб  ~ 0,08 час (~5мин.)

1Гб ~85 час

500Гб ~8738 час

1Тб ~87381 час

Про перенос записей разговоров на Google диск или на Yandex диск см. статьи:

«Запись разговоров Asterisk на google drive по расписанию» и «Копирование записей разговоров и конфигурационных файлов на Яндекс диск».

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

Далее, скопировать имеющиеся записи

cp /var/spool/asterisk/monitor/* /mnt/monitor

Удалить папку, где они ранее хранились, вместе с содержимым

rm -rf /var/spool/asterisk/monitor/

Создать вместо нее символическую ссылку на примонтированную директорию

ln -s /mnt/monitor /var/spool/asterisk/monitor

Изменить права, владельца, группу

chown asterisk:asterisk /mnt/monitor
chmod 755 /mnt/monitor
chown asterisk:asterisk /var/spool/asterisk/monitor
chmod 755 /var/spool/asterisk/monitor

После этого, проверить

ls -l /mnt/ 
ls -l /var/spool/asterisk/
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

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

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.