Доброго дня, о великие гуру астериска ! С прошедшими праздниками и с возвращением !
Поделитесь пожалста, кому не жалко, скриптиком, вытаскивающим записи разговоров из /var/spool/asterisk/monitor куда нибудь на сервер(например по sftp, али просто по шаре) и расфасовывающим их по разным папкам (например по дате и по номеру А). Премного благодарен !
срабатывает по факту окончания записи
требует apt-get install incron
# cat /etc/incron.d/rec
/var/spool/asterisk/monitor IN_CLOSE_WRITE /etc/init.d/recdir $@ $# $%
#cat /etc/init.d/recdir
#!/bin/sh
#
# обработка событий incron
mdir=$1
ddir=$mdir # kyda perenosit
log="/var/log/recdir.log"
datadir=`date +%Y_%m_%d`
echo "$datadir -- $1 $2 $3" >> $log
if [ $3 = "IN_CLOSE_WRITE" ];
then
pd=`pwd`
cd $mdir
if [ ! -d $ddir/$datadir ];
then
echo "created dir" >> $log
mkdir -p $ddir/$datadir
chmod o+r $ddir/$datadir
fi
echo "moved " >> $log
mv $2 $ddir/$datadir/
chmod o+r $ddir/$datadir/$2
cd $pd
fi
на PHP. не так элегантно, но на bash вышеуказанный скрипт у меня не заработал...
<?php
$to="/usr/local/www/apache22/data/voices/records/";
$from="/var/spool/asterisk/monitor/";
function SearchMaska($dir, $maska){
if (is_dir($dir)) {
foreach(array_diff(scandir($dir), array('.', '..')) as $file) {
if($myfile = stristr($file, $maska, true))
$arr[]=$myfile.".mp3";
}
}
if (isset($arr)) return $arr;
}
$arr=SearchMaska($from, '.mp3');
if (isset($arr))
{
foreach ($arr as $file) {
if (!is_dir($to.date('Y', filemtime($from.$file)))) mkdir($to.date('Y', filemtime($from.$file)));
if (!is_dir($to.date('Y/m', filemtime($from.$file)))) mkdir ("$to".date('Y/m', filemtime($from.$file)));
if (!is_dir($to.date('Y/m/d', filemtime($from.$file)))) mkdir ("$to".date('Y/m/d', filemtime($from.$file)));
rename($from.$file, $to.date('Y/m/d/', filemtime($from.$file)).$file);
}
}
?>
офигительно. ну ты хоть кешировщик какой загрузи. кстати желаю удачи как наберется 1000+ файликов в директории.
meral ( 2013-03-20 17:25:59 +0400 )редактироватьскрипт раз в час выполняется, можешь свой вариант предложить. у меня примерно по 1000 файлов в день и получается - никаких проблем, * собран на атоме.
BlackSnow ( 2013-03-20 17:33:03 +0400 )редактироватьну если ваших клиентов раз в час устраивает - нет вопросов. вообще обычно такие скрипты пишуться на основе скрипта вызываемого mixmonitor по окночанию записи. примеров в сети - полно. но писать такое на php - это жесть.
meral ( 2013-03-20 18:20:46 +0400 )редактироватья сам и есть клиент =) можно и его вызывать после окончания записи =) на php - потому, что на другом писать не умею =(
BlackSnow ( 2013-03-27 15:11:35 +0400 )редактироватьFreePBX 2.10 сама расфасовывает файлы по папкам
Simple mode. Перемещает файлы в другую примотированную директорию , расфасовывая по папкам от времени создания файла записи.
#!/bin/bash
DIR_TO=/mnt/nfs
AST_RECS=/var/spool/asterisk/monitor
for i in $AST_RECS/*.wav;do
if [ -f $i ];then
sub_dir=$(date -d @`stat --printf='%X' $i` +"%Y-%m-%d")
if [ ! -d $DIR_TO/$sub_dir ];then mkdir $DIR_TO/$sub_dir;fi
mv $AST_RECS/$i $DIR_TO/$sub_dir/$i
fi
done;
exit;
несколько строк - 2 минуты. Базовый уровень.
я имею в виду строчку с sub_dir. условия то все в одном шеле.
meral ( 2013-01-09 15:52:37 +0400 )редактироватьМогу еще на Питоне готовый показать , так там вообще в несколько потоков перемещения файлов с последующим параллельным конвертированием) . Но автору думаю многовато будет)
zzuz ( 2013-01-09 15:56:18 +0400 )редактироватьа с sub_dir да , придумалось для того случая когда , файл конвертируется несколько секунд в промежутке времени 23:59:59 - 00:00:01 . Тогда БД его найти не сможет , так как время конвертирования и время создания файла разные , точнее даты разные.
zzuz ( 2013-01-09 15:59:56 +0400 )редактироватьа я проще сделал: отдельный скрипт ночью раскладывает по каталогам все файлы, а при просмотре отчетов запускается другой простой скрипт-индексатор, который просматривает еще не индексированные каталоги и добавляет это все в БД. Потом вытаскиваем это в каком надо виде и все.
switch ( 2013-01-09 16:49:35 +0400 )редактироватьну у каждого свои идеи. я во всех системах в cdr прописываю файл куда пишется в самом диалплане. а дальше в один поток перекодирую и заменяю имя если переносится в другой каталог. в некоторых системах перекодирование выполняется на внешних ec2 ami типа spot.
meral ( 2013-01-09 17:22:07 +0400 )редактироватьв старой системе не перекодирую, а вот в новой есть желание сделать mp3 с разделением на правый и левый каналы.
switch ( 2013-01-09 17:36:02 +0400 )редактироватьЗадан: 2013-01-09 14:54:27 +0400
Просмотрен: 2,689 раз
Обновлен: Mar 20 '13
отваливаются модемы в asterisk [закрыт]
звонки с 1С и запись разговоров
Прослушивание записей разговоров через web интерфейс
mixmonitor, проблема с записью разговоров.
Asterisk 1.8, Queue, Время записи разговоров.
Проблема с записью разговоров, поступивших из очереди
Как быстро добавить много транков в Trixbox
Натолкните на мысль, реализовать запись вводимых цифр при звонке.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
А самому на bash'е написать сложно?
zzuz ( 2013-01-09 15:08:13 +0400 )редактировать