Хм. Надо попробовать, спасибо за информацию. В общем, заборол я данную ошибку, хоть скрипт и далек от совершенства, но он проигрывает нужный файлик. Ниже делюсь "сырым" произведением :)
Алексей Портнов пишет: Проверьте эту строку: exten => 0000777,n,Set(recordingfile=${SHELL( mysql -sse SEL ECT recordingfile FR OM cdr WHERE uniqueid Like ${ QUOTE(${uniqueid1c}%)} LIMIT 1 -u${user} -p${password} ${dbname} )}) какие то пробелы в запросе
Алексей, здравствуйте! Спасибо за ответ! Пробелов в оригинальном коде нет, видимо на форуме так отобразилось. Вообще скрипт интересно себя ведет : Доходит до выполнения этой строки exten => 0000777,n(FindInFileSystem),Set(namedorashiren=$[${LEN(${recordingfile})}-4] вываливает список всех файлов, которые он находит в конкретном пути, далее прерывается с выводом и выдает ошибку Can`t find trailing parenthesis for function 'LEN(/var/spool/asterisk/monitor..
Ну и потом не может проиграть файл по причине того, что он его тупо не может найти.
Здравствуйте! Долго бился сам, но безрезультатно. Надеюсь разработчики помогут. Проблема в следующем : Есть сервер Asterisk ( без GUI и прочего), есть модуль, который пишет разговоры и раскидывает их по папкам /год-месяц-день/час/имя_файла.wav Есть скрипт, выложенный на сайте МИКО, который я немного подправил с целью корректного поиска файла. В БД было создано доп поле, в которое пишется конкретный путь для конкретного звонка. Ниже сам переделанный скрипт :
Скрытый текст
[mikoajamdll] exten => 0000999,1,NoCDR() exten => 0000999,n,Answer() exten => 0000999,n,Wait(60) exten => 0000999,n,Hangup() exten => 0000777,1,NoCDR() exten => 0000777,n,Answer() exten => 0000777,n,Set(dbname=${AST_CONFIG(cdr_mysql.conf,global,dbname)}) exten => 0000777,n,Set(user=${AST_CONFIG(cdr_mysql.conf,global,user)}) exten => 0000777,n,Set(password=${AST_CONFIG(cdr_mysql.conf,global,password)}) exten => 0000777,n,Set(recpath=${SHELL( mysql -sse 'SEL ECT recordingpath FR OM cdr WHERE uniqueid Like ${QUOTE( ${uniqueid1c}%)} LIMIT 1' -u${user} -p${password} ${dbname} )}) exten => 0000777,n,Set(ASTSPOOLDIR=/var/spool/asterisk/monitor) exten => 0000777,n,Set(monitor_path=${ASTSPOOLDIR}/${recpath}/) exten => 0000777,n,Set(recordingfile=${SHELL( mysql -sse 'SEL ECT recordingfile FR OM cdr WHERE uniqueid Like ${ QUOTE(${uniqueid1c}%)} LIMIT 1' -u${user} -p${password} ${dbname} )}) exten => 0000777,n,Gotoif($[${LEN(${recordingfile})} > 4]?FindInFileSystem:FindInUserfield) exten => 0000777,n(FindInUserfield),Set(recordingfile=${SHELL( mysql -sse 'SELECT userfield FR OM cdr WHERE uni queid Like ${QUOTE(${uniqueid1c}%)} LIMIT 1' -u${user} -p${password} ${dbname} )}) ;exten => 0000777,n(FindInUserfield),Set(recordingpath=${SHELL( mysql -sse 'SELECT userfield FR OM cdr WH ERE un iqueid Like ${QUOTE(${uniqueid1c}%)} LIM IT 1' -u${user} -p${password} ${dbname} )}) exten => 0000777,n,ExecIf($[${LEN(${recordingfile})} < 4]?Hangup()) exten => 0000777,n(FindInFileSystem),Set(namedorashiren=$[${LEN(${recordingfile})}-4] ;) exten => 0000777,n,Set(recfile=${SHELL(find ${monitor_path} -name *${recordingfile:0:${namedorashiren}}*|head -n 1)}) exten => 0000777,n,ExecIf($[${LEN(${recfile})} > 4]?UserEvent(CallRecord,Channel: ${chan},FileName: ${recfile} )) exten => 0000777,n,Hangup()
Собственно загвоздка возникает на этапе выполнения Set(recfile). На этом этапе не находится имя файла, ну и выводятся соответствующие ошибки. Может кто сможет подсказать в чем проблема? Заранее спасибо!